Si nou gade nan tandans yo nan kèk ane anvan yo, nou te tande pale sou blockchain tout tan tout tan an, men pa anpil sou spesifik yo.
Nou tout konnen ke kriptografik lajan tankou Bitcoin, Ethereum, Dogecoin, Matic, ak lòt moun konte sou teknoloji blockchain. Blockchain te dirije evènman enpòtan yo ki te revolisyone anpil endistri nan 2021 epi ki te pave wout la pou nouvo reyalizasyon.
Blockchain se yon mwayen pou estoke done nan yon fason ki difisil oswa enposib pou modifye, piratage, oswa magouy. Li se yon gwo liv dijital nan tranzaksyon ki kopi epi gaye atravè tout rezo sistèm òdinatè blockchain la.
Li se teknoloji baz done révolutionnaire ki pouvwa pratikman tout kriptografik lajan. Blockchain fè li ekstrèmman difisil pou pirate oswa tronpe sistèm nan lè yo gaye kopi ki idantik nan yon baz done atravè yon rezo tout antye.
Pandan ke Bitcoin se kounye a itilizasyon ki pi enpòtan pou blockchain, teknoloji a ka sèvi yon varyete trè laj de aplikasyon.
Cryptocurrencies ak blockchains yo te de pli zan pli popilè nan dènye ane yo, e tandans sa a espere kontinye.
Nou pral fè yon senp blockchain ak JavaScript nan leson patikilye sa a. Li pral ba ou yon konpreyansyon debaz sou fason yon blockchain travay.
Ann rele li MelodyCoin epi antre nan aksyon an!
Kreye yon blòk
Pou kòmanse, nou pral kreye yon nouvo fichye JavaScript kote nou pral mete tout kòd nou an.
Ann rele li main.js epi kòmanse ak yon deskripsyon sou fason yon blockchain ak blòk yo ta dwe gade.
Kreye yon klas blòk epi ba li yon fonksyon Object() { [natif kòd] } pou kòmanse.
Ou dwe bay yon dat, ak hash nan blòk anvan an lè w ap kreye yon nouvo blòk:
Men definisyon yo pou chak pwopriyete:
- Timestamp la endike lè blòk la te fèt. Ou ka itilize kèlkeswa fòma ou chwazi a (nan ka sa a, yon timestamp UNIX).
- Nenpòt fòm done ke ou vle konekte ak blòk sa a ka enkli nan paramèt done a. Si ou vle kreye yon kriptografik lajan, ou ka kenbe done tranzaksyon yo tankou moun k ap voye/reseptè a ak kantite lajan yo deplase isit la.
- previousHash la se yon fisèl ki kenbe hash blòk anvan an. Sa a se sa ki pral jenere chèn nan blòk, ki pral kritik nan bay entegrite nan blockchain nou an pita.
Kreye Hashes
Chak blòk gen lyen ak blòk anvan an (kidonk pwopriyete previousHash la). Sa vle di, chak blòk mande pou yon hash. Yon hash se menm jan ak yon anprent. Li diferan pou chak blòk.
Kash yon blòk ka kalkile lè w pase tout sa li nan yon fonksyon hash.
Se konsa, ann kòmanse pa aplike yon fonksyon ki kalkile hash nan blòk aktyèl la.
Se konsa, anba klas blòk la, nou defini fonksyon calculeHash:
Sepandan, hash SHA256 la pa sipòte pa JavaScript epi yo dwe jwenn nan yon bibliyotèk ekstèn.
Crypto-js se yon pake kokenn ki gen ladann aplikasyon an sekirite plizyè algoritm hash.
Lè sa a, nou ka enpòte li nan kòd main.js nou an.
Kounye a ke nou gen fonksyon calculateHash() nou an, se pou nou itilize li nan fonksyon Block nou an:
Apre nou fin dekri kisa yon Blòk sanble, nou ka defini kisa yon Blockchain ta dwe sanble. Se konsa, ann kreye yon nouvo klas.
Nan senaryo sa a, blockchain a se yon objè trè senp ki gen yon chèn pwopriyete. Sa a se yon etalaj ki kenbe tout blòk yo sou chèn lan.
Anvan nou ka ajoute blòk, nou dwe premye kreye sa yo konnen kòm yon "blòk jenèz." Sa a se premye blòk nan chèn lan, epi li inik nan ke li pa ka lonje dwèt sou yon blòk anvan (se premye a!).
Kidonk, pou konstwi blòk jenèz la, mwen pral ajoute yon fonksyon nan klas nou an ki rele createGenesisBlock (). Retounen nan fonksyon Object() { [natif kòd] } nan klas Blockchain nou an.
Kounye a nou ka enkli blòk jenèz la nenpòt lè nou bati yon nouvo egzanp Blockchain:
Metòd Blockchain
Koulye a, ann ajoute metòd nan klas Blockchain nou an ki pral pèmèt nou fè bagay tankou ajoute nouvo blòk ak chache blòk ki pi resan an.
Fonksyon getLatestBlock se pi fondamantal la. Li tou senpleman retounen manm final la nan etalaj la chèn:
Teknik addBlock la se yon ti kras plis enplike.
Anvan nou ka ajoute yon nouvo blòk nan chèn nou an, nou dwe premye byen mete jaden previousHash blòk sa a.
Li dwe mete sou hash nan blòk ki pi resamman te ajoute nan chèn nou an. Nou bezwen tou kalkile hash nan nouvo blòk la:
Tès
Ann wè kijan MelodyCoin nou an soti.
Kreye yon egzanp blockchain pou akonpli sa. Ann ajoute yon koup plis blòk:
Nou te fè de nouvo blòk la. Ann pran yon gade nan kisa blockchain nou an sanble kounye a.
MelodyCoin pral stringed ak fòma ak kat espas:
Verifye Entegrite Blockchain la
Blockchains yo kokenn paske yon fwa yo te ajoute yon blòk, li pa ka modifye san yo pa envalid rès chèn lan.
Sepandan, pa gen okenn metòd pou mwen tcheke entegrite blockchain nou an ak aplikasyon sa a.
Ann prezante yon fonksyon isChainValid nan blockchain nou an. Si chèn nan lejitim, li pral retounen vre; otreman, li pral retounen fo:
Tès Entegrite
Kounye a nou ka teste entegrite blockchain nou an. Si nou egzekite li kounye a, li pral konfime ke chèn nou an se otantik.
Koulye a, se pou nou eseye manyen blockchain nou an. Ann chanje blòk 2 epi ranplase sa ki ladan l (ann sipoze nou transfere 100 pyès monnen olye pou yo kat).
Lè nou egzekite sa a, nou ka wè ke lojisyèl an rekonèt efò nou pou manipilasyon chèn lan.
Sepandan, ou ka kwè ke gen yon lòt metòd pou mwen mele ak sa a. Mwen chanje sa ki nan blòk la men mwen pa t 'rekalkile hash la. Se konsa, ou ka eseye gen entelijan epi rekalkile hash la nan menm blòk sa a.
Se tout sa ki te genyen nan konfigirasyon ti blòk nou an! Li pèmèt nou ajoute nouvo blòk ak detekte falsifikasyon ak done nan chèn lan.
Gen de pwoblèm ak ti blòk nou an ke nou dwe adrese:
- Òdinatè modèn yo trè vit epi yo ka ajoute dè milye de blòk nan chèn nou an an segonn. Nou evidamman pa vle pèsonn spamming blockchain nou an.
- Blockchain nou an toujou vilnerab a falsifikasyon. Ou ka mete ajou sa ki nan yon blòk epi tou senpleman rekalkile hashes yo (ak hashes anvan yo) pou tout blòk sa yo. Menm si ou dezòd ak li, ou pral fini ak yon chèn lejitim.
Pou adrese enkyetid sa yo, blockchains itilize yon teknik ke yo rekonèt kòm "prèv travay." Ou dwe demontre ke ou te itilize yon kantite siyifikatif resous enfòmatik pou kreye yon blòk lè l sèvi avèk apwòch sa a. Yo rele sa tou min.
Prèv-of-travay mande pou hash yon blòk kòmanse ak yon kantite espesifik zewo. Men, ki jan ou ka konnen si hash ou an adapte règ sa a?
Sa ki nan yon blòk detèmine hash li yo. Se konsa, nou toujou jwenn menm hash la, depi nou pa modifye kontni an.
Chak blòk ta dwe gen yon nonce valè te ajoute pou li kòm yon solisyon. Sa a se esansyèlman kèk done o aza ke nou ka mete ajou jiskaske hash nan blòk nou an kòmanse ak zewo ase. Paske ou pa ka chanje pwodiksyon yon fonksyon hash, ou dwe teste yon anpil nan konbinezon diferan ak espere pou pi bon an.
Entwodwi Mining nan Blockchain la
Ann kòmanse mete yon nonce nan klas Block nou an. Nonce a se yon sèl valè nan blòk nou an ke nou ka modifye pou afekte hash blòk la.
Nou pa kapab chanje timestamp la oswa done yo.
Apre sa, ann ekri yon fonksyon mineBlock() ki pral fè min aktyèl la nan yon blòk. Fonksyon sa a pral voye difikilte ki nesesè yo kòm yon paramèt epi yo pral kontinye egzekite jiskaske hash nan blòk nou an kòmanse ak zewo ase.
Mwen jis te fè yon bouk pandan y ap debaz ki ta kouri jiskaske hash nou an kòmanse ak zewo ase. Nou itilize difikilte pou detèmine konbyen zewo ki nesesè. Avèk yon difikilte 5, hash nou an dwe kòmanse ak 5 zewo.
Lè hash nou an pa gen ase zewo, nou ogmante nonce a pa youn epi rekalkile hash la. Men, si nou jwenn yon hash ki koresponn ak difikilte pou la, nou konekte li nan konsole a.
Gen yon lòt bagay nou bezwen fè. Nou pa reyèlman pran nonce varyab la an kont nan metòd calculateHash nou an, kidonk isit la li ye:
Gwoup Blockchain
Ann mete nouvo apwòch sa a nan tès la nan klas blòk nou an epi wè ki jan li ale.
Pou kòmanse, mwen pral defini difikilte pou blockchain nou an nan fonksyon Object(). Nou defini li isit la paske nou ka itilize li yon kote pita.
Lè sa a, fonksyon addBlock dwe modifye konsa ke li min blòk la anvan ou ajoute li nan chèn nou an.
Sèvi ak Blockchain la
Koulye a, ann mete nouvo blockchain nou an pou itilize ak algorithm prèv travay la. Isit la, ajoute yon koup console.log deklarasyon.
Lè nou egzekite kòd sa a, nou ka obsève ke pwosesis min an pa patikilyèman rapid ankò.
Li pran kèk tan pou algorithm a jenere blòk ak hashes ki kòmanse ak twa zewo (jan konfigirasyon pa difikilte).
Se konsa, sa a se te fen konfigirasyon debaz blockchain nou an.
Nou ka kontwole konbyen rapid yo ajoute nouvo blòk nan blockchain nou an grasa mekanis prèv travay la.
Li se karakteristik sekirite ki pi enpòtan sou blockchains. Epi kounye a ke ou konprann ki jan li fonksyone, kontinye kreye pwòp ou a!
Kite yon Reply