אויב מיר קוקן אין די טרענדס פון די פריערדיקע ביסל יאָרן, מיר האָבן געהערט וועגן בלאַקכייוואַן אַלע די צייַט, אָבער נישט פיל וועגן די ספּעסיפיקס.
מיר אַלע וויסן אַז קריפּטאָקוררענסי אַזאַ ווי ביטקאָין, עטהערעום, דאָגעקאָין, מאַטיק און אנדערע פאַרלאָזנ זיך בלאָקטשיין טעכנאָלאָגיע. בלאָקקטשאַין געפירט די באַטייַטיק געשעענישן וואָס רעוואַלושאַנייזד פילע ינדאַסטריז אין 2021 און פּאַוועד דעם וועג פֿאַר נייַע דערגרייכונגען.
בלאָקטשיין איז אַ מיטל פון סטאָרינג דאַטן אין אַ וועג וואָס איז שווער אָדער אוממעגלעך צו רעדאַגירן, כאַק אָדער שווינדל. עס איז אַ דיגיטאַל לעדזשער פון טראַנזאַקשאַנז וואָס זענען דופּליקייטיד און פאַרשפּרייטן איבער די גאנצע נעץ פון קאָמפּיוטער סיסטעמען פון די בלאָקטשיין.
עס איז די ערד-ברייקינג דאַטאַבייס טעכנאָלאָגיע וואָס מאַכט פּראַקטאַקלי אַלע קריפּטאָקוררענסי. בלאָקקטשאַין מאכט עס ינקרעדאַבלי שווער צו כאַק אָדער אָפּנאַרן די סיסטעם דורך פארשפרייטן יידעניקאַל קאפיעס פון אַ דאַטאַבייס אַריבער אַ גאַנץ נעץ.
בשעת ביטקאָין איז איצט די מערסט באַוווסט נוצן פֿאַר בלאַקכייוואַן, די טעכנאָלאָגיע קענען דינען אַ זייער ברייט פאַרשיידנקייַט פון אַפּלאַקיישאַנז.
קריפּטאָקוררענסי און בלאַקשאַינס האָבן שוין ינקריסינגלי פאָלקס אין די לעצטע יאָרן, און דער גאַנג איז געריכט צו פאָרזעצן.
מיר מאַכן אַ פּשוט בלאָקטשיין מיט דזשאַוואַסקריפּט אין דעם טוטאָריאַל. עס וועט געבן איר אַ יקערדיק פארשטאנד פון ווי אַ בלאַקכייוואַן אַרבעט.
זאל ס רופן עס מעלאָדיקאָין און באַקומען רעכט אין דעם קאַמף!
קריייטינג אַ בלאָק
צו אָנהייבן, מיר מאַכן אַ נייַע דזשאַוואַסקריפּט טעקע אין וואָס מיר שטעלן אַלע אונדזער קאָד.
זאל ס רופן עס main.js און אָנהייבן מיט אַ באַשרייַבונג פון ווי אַ בלאָקטשיין און בלאַקס זאָל קוקן.
שאַפֿן אַ בלאַק קלאַס און געבן עס אַ פֿונקציע אָבדזשעקט () { [געבוירן קאָד] } צו אָנהייבן מיט.
איר מוזן געבן אַ דאַטע און די האַש פון די פריערדיקע בלאָק ווען איר שאַפֿן אַ נייַ בלאָק:
דאָ זענען די דעפֿיניציע פֿאַר יעדער פאַרמאָג:
- די צייט סטאַמפּ ינדיקייץ ווען די בלאָק איז געמאכט. איר קענען נוצן וועלכער פֿאָרמאַט איר קלייַבן (אין דעם פאַל, אַ יוניקס טימעסטאַמפּ).
- קיין פאָרעם פון דאַטן וואָס איר ווילט צו פאַרבינדן צו דעם בלאָק קענען זיין אַרייַנגערעכנט אין די דאַטן פּאַראַמעטער. אויב איר ווילט צו שאַפֿן אַ קריפּטאָקוררענסי, איר קענען האַלטן טראַנסאַקטיאָן דאַטן אַזאַ ווי די אָפּשיקער / ופנעמער און די סומע פון געלט אריבערגעפארן דאָ.
- די פריערדיקע האַש איז אַ שטריקל וואָס האלט די האַש פון די פריערדיקע בלאָק. דאָס איז וואָס וועט דזשענערייט די קייט פון בלאַקס, וואָס וועט זיין קריטיש אין פּראַוויידינג די אָרנטלעכקייַט פון אונדזער בלאָקטשיין שפּעטער.
שאפן האַשעס
יעדער בלאָק פֿאַרבינדונג צו די פריערדיקע בלאָק (אַזוי די פֿריִערדיקע האַש פאַרמאָג). אַז איז, יעדער בלאָק ריקווייערז אַ האַש. א האַש איז ענלעך צו אַ פינגערפּרינט. עס איז יינציק פֿאַר יעדער בלאָק.
די האַש פון אַ בלאָק קענען זיין קאַמפּיוטאַד דורך פאָרן אַלע זייַן אינהאַלט דורך אַ האַש פֿונקציע.
אַזוי, לאָמיר אָנהייבן מיט ימפּלאַמענינג אַ פֿונקציע וואָס קאַמפּיוץ די האַש פון דעם קראַנט בלאָק.
אַזוי, אונטער די בלאַק קלאַס, מיר דעפינירן די calculateHash פונקציע:
אָבער, די SHA256 האַש איז נישט געשטיצט דורך דזשאַוואַסקריפּט און מוזן זיין באקומען פון אַ פונדרויסנדיק ביבליאָטעק.
Crypto-js איז אַ פאַנטאַסטיש פּעקל וואָס כולל זיכער ימפּלאַמאַנץ פון עטלעכע האַש אַלגערידאַמז.
דערנאָך מיר קענען אַרייַנפיר עס אין אונדזער main.js קאָד.
איצט אַז מיר האָבן אונדזער calculateHash () פֿונקציע, לאָזן אונדז נוצן עס אין אונדזער בלאָק פונקציע:
נאָך דיסקרייבינג ווי אַ בלאָק קוקט ווי, מיר קענען דעפינירן ווי אַ בלאָקטשיין זאָל קוקן ווי. אַזוי לאָמיר מאַכן אַ נייַע קלאַס.
אין דעם סצענאַר, די בלאָקטשיין איז אַ זייער פּשוט כייפעץ וואָס האט אַ פאַרמאָג קייט. דאָס איז אַ מענגע האלטן אַלע די בלאַקס אויף די קייט.
איידער מיר קענען לייגן בלאַקס, מיר מוזן ערשטער מאַכן וואָס איז באקאנט ווי אַ "גענעסיס בלאָק." דאָס איז דער ערשטער בלאָק אין דער קייט, און עס איז יינציק אין אַז עס קען נישט פונט צו אַ פריערדיקן בלאָק (עס איז דער ערשטער!).
אַזוי, צו בויען דעם גענעסיס בלאָק, איך וועט לייגן אַ פונקציע צו אונדזער קלאַס מיטן נאָמען createGenesisBlock (). צוריק אין די פֿונקציע אָבדזשעקט () { [געבוירן קאָד] } פון אונדזער בלאָקטשיין קלאַס.
מיר קענען איצט אַרייַננעמען די גענעסיס בלאָק ווען מיר בויען אַ נייַ בלאָקטשיין בייַשפּיל:
בלאָקטשיין מעטהאָדס
איצט, לאָזן אונדז לייגן מעטהאָדס צו אונדזער בלאָקטשיין קלאַס וואָס וועט לאָזן אונדז צו טאָן טינגז ווי צו לייגן נייַ בלאַקס און ברענגען די לעצטע בלאָק.
די getLatestBlock פונקציע איז די מערסט יקערדיק. עס פשוט קערט די לעצט מיטגליד פון דער קייט מענגע:
די addBlock טעכניק איז אַ ביסל מער ינוואַלווד.
איידער מיר קענען לייגן אַ נייַע בלאָק צו אונדזער קייט, מיר מוזן ערשטער אַפּראָופּרייטלי שטעלן די פריערדיקע האַש פעלד פון דעם בלאָק.
עס מוזן זיין שטעלן צו די האַש פון די מערסט לעצטנס צוגעלייגט בלאָק צו אונדזער קייט. מיר אויך דאַרפֿן צו רעכענען די האַש פון די נייַ בלאָק:
טעסטינג
לאָמיר זען ווי אונדזער MelodyCoin איז ארויס.
שאַפֿן אַ בלאַקכיין בייַשפּיל צו טאָן דאָס. לאָמיר לייגן אַ פּאָר מער בלאַקס:
מיר האָבן דאָרט געמאכט צוויי נייַע בלאַקס. לאָמיר נעמען אַ קוק ווי אונדזער בלאָקטשיין קוקט ווי דערווייַל.
מעלאָדיקאָין וועט זיין סטרינגיפיעד און פאָרמאַטטעד מיט פיר ספּייסאַז:
באַשטעטיקן די אָרנטלעכקייַט פון די Blockchain
בלאָקטשאַינס זענען פאַנטאַסטיש ווייַל אַמאָל אַ בלאָק איז צוגעגעבן, עס קענען ניט זיין מאַדאַפייד אָן ינוואַלאַדייטינג די רעשט פון די קייט.
אָבער, עס איז קיין אופֿן פֿאַר מיר צו קאָנטראָלירן די אָרנטלעכקייַט פון אונדזער בלאָקטשיין מיט דעם ימפּלאַמענטיישאַן.
לאָמיר באַקענען אַן isChainValid פונקציע צו אונדזער בלאָקטשיין. אויב די קייט איז לאַדזשיטאַמאַט, עס וועט צוריקקומען אמת; אַנדערש, עס וועט צוריקקומען פאַלש:
טעסטינג אָרנטלעכקייַט
מיר קענען איצט פּרובירן די אָרנטלעכקייַט פון אונדזער בלאָקטשיין. אויב מיר ויספירן עס איצט, עס וועט באַשטעטיקן אַז אונדזער קייט איז עכט.
לאָמיר איצט פּרובירן צו טאַמפּער מיט אונדזער בלאָקטשיין. לאָמיר טוישן בלאָק 2 און איבערשרייבן די אינהאַלט (לאָמיר רעכן מיר טראַנספערד 100 קאָינס אַנשטאָט פון פיר).
ווען מיר ויספירן דעם, מיר קענען זען אַז די ווייכווארג אנערקענט אונדזער מי צו טאַמפּער מיט די קייט.
אָבער, איר קענען גלויבן אַז עס איז אן אנדער אופֿן פֿאַר מיר צו אַרייַנמישנ זיך מיט דעם. איך אָלטערד די אינהאַלט אין די בלאָק אָבער נישט ריקאַלקיאַלייטיד די האַש. אַזוי איר קענען פּרובירן צו זיין קלוג און ריקאַלקיאַלייט די האַש פון דער זעלביקער בלאָק.
אַז ס אַלע עס איז געווען צו אונדזער קליינטשיק בלאַקכיין סעטאַפּ! עס ינייבאַלז אונדז צו לייגן נייַ בלאַקס און דעטעקט טאַמפּערינג מיט דאַטן אין די קייט.
עס זענען צוויי ישוז מיט אונדזער קליין בלאָקטשיין וואָס מיר מוזן אַדרעס:
- מאָדערן קאָמפּיוטערס זענען גאָר שנעל און קענען לייגן טויזנטער פון בלאַקס צו אונדזער קייט אין סעקונדעס. מיר דאָך טאָן ניט וועלן ווער עס יז ספּאַם אונדזער בלאָקטשיין.
- אונדזער בלאָקטשיין איז נאָך שפּירעוודיק צו טאַמפּערינג. איר קענען דערהייַנטיקן די אינהאַלט פון אַ בלאָק און פשוט ריקאַלקיאַלייט די האַשעס (און פריערדיק האַשעס) פֿאַר אַלע די פאלגענדע בלאַקס. אפילו אויב איר באַלאַגאַן מיט אים, איר וועט סוף אַרויף מיט אַ לאַדזשיטאַמאַט קייט.
צו אַדרעס די קאַנסערנז, בלאַקשאַינס נוצן אַ טעכניק באקאנט ווי "דערווייַז פון אַרבעט." איר מוזן באַווייַזן אַז איר געוויינט אַ באַטייטיק סומע פון קאַמפּיוטיישאַנאַל רעסורסן צו שאַפֿן אַ בלאָק מיט דעם צוגאַנג. דאס איז אויך גערופן מינינג.
דערווייַז-פון-אַרבעט ריקווייערז אַז אַ בלאָק ס האַש אָנהייבן מיט אַ ספּעציפיש סומע פון זעראָס. אָבער ווי קענען איר וויסן צי דיין האַש פיץ דעם הערשן?
דער אינהאַלט פון אַ בלאָק באַשטימען זייַן האַש. אַזוי מיר שטענדיק באַקומען די זעלבע האַש, אויב מיר טאָן ניט מאָדיפיצירן די אינהאַלט.
יעדער בלאָק זאָל האָבן אַ נאַנס ווערט צוגעגעבן צו עס ווי אַ לייזונג. דאָס איז בייסיקלי עטלעכע טראַפ - דאַטן וואָס מיר קענען דערהייַנטיקן ביז די האַש פון אונדזער בלאָק הייבט מיט גענוג זעראָס. ווייַל איר קענען נישט טוישן די רעזולטאַט פון אַ האַש פֿונקציע, איר מוזן פּרובירן אַ פּלאַץ פון פאַרשידענע קאַמבאַניישאַנז און האָפֿן פֿאַר דער בעסטער.
באַקענען מיינינג צו די בלאָקטשיין
לאָמיר אָנהייבן מיט אַ נאַנס אין אונדזער בלאַק קלאַס. די נאַנסע איז די איין ווערט אין אונדזער בלאָק וואָס מיר קענען מאָדיפיצירן צו פּראַל די האַש פון די בלאָק.
מיר קענען נישט טוישן די צייט שטעמפּל אָדער די דאַטן.
ווייַטער, לאָזן ס שרייַבן אַ mineBlock () פֿונקציע וואָס וועט טאָן די פאַקטיש מיינינג פון אַ בלאָק. די פונקציע וועט זיין געשיקט די נויטיק שוועריקייט ווי אַ פּאַראַמעטער און וועט פאָרזעצן צו ויספירן ביז די האַש פון אונדזער בלאָק הייבט מיט גענוג זעראָס.
איך נאָר געמאכט אַ יקערדיק בשעת שלייף וואָס וואָלט לויפן ביז אונדזער האַש הייבט מיט גענוג זעראָס. מיר נוצן די שוועריקייט צו באַשליסן ווי פילע זעראָס זענען דארף. מיט אַ שוועריקייט פון 5, אונדזער כאַש מוזן אָנהייבן מיט 5 זעראָס.
ווען אונדזער האַש כּולל נישט גענוג זעראָס, מיר הייבן די נאַנס מיט איין און ריקאַלקיאַלייטיד די האַש. און אויב מיר געפֿינען אַ האַש וואָס קאָראַספּאַנדז צו די שוועריקייט, מיר קלאָץ עס צו די קאַנסאָול.
עס איז נאָך איין זאַך מיר דאַרפֿן צו טאָן. מיר טאָן ניט טאַקע נעמען אין חשבון די נאַנסע בייַטעוודיק אין אונדזער calculateHash אופֿן, אַזוי דאָ עס איז:
בלאָקטשיין קלאַס
לאָמיר שטעלן דעם נייַע צוגאַנג צו די פּראָבע אין אונדזער בלאָקטשיין קלאַס און זען ווי עס גייט.
צו אָנהייבן, איך וועט דעפינירן די שוועריקייט פון אונדזער בלאָקטשיין אין די פֿונקציע אָבדזשעקט (). מיר דעפינירן עס דאָ זינט מיר קענען נוצן עס ערגעץ שפּעטער.
די addBlock פונקציע מוזן זיין מאַדאַפייד אַזוי אַז עס מיינז די בלאָק איידער איר לייגן עס אין אונדזער קייט.
ניצן די בלאָקטשיין
איצט, לאָזן אונדז נוצן אונדזער נייַע בלאָקטשיין מיט דער דערווייַז-פון-אַרבעט אַלגערידאַם. דאָ, לייגן אַ פּאָר console.log סטייטמאַנץ.
ווען מיר ויספירן דעם קאָד, מיר קענען אָבסערווירן אַז דער מיינינג פּראָצעס איז ניט מער דער הויפּט גיך.
עס נעמט עטלעכע מאָל פֿאַר די אַלגערידאַם צו דזשענערייט בלאַקס מיט האַשעס וואָס אָנהייבן מיט דריי זעראָס (ווי קאַנפיגיערד דורך שוועריקייט).
דאָס איז געווען דער סוף פון אונדזער יקערדיק בלאָקטשיין סעטאַפּ.
מיר קענען רעגולירן ווי געשווינד נייַ בלאַקס זענען מוסיף צו אונדזער בלאַקכייוואַן דאַנק צו דער דערווייַז-פון-אַרבעט מעקאַניזאַם.
דאָס איז די מערסט וויכטיק זיכערהייט שטריך אויף בלאָקטשאַינס. און איצט אַז איר פֿאַרשטיין ווי עס אַרבעט, אָנהייבן צו שאַפֿן דיין אייגענע!
לאָזן אַ ענטפֿערן