Ef við skoðum þróun undanfarinna ára höfum við heyrt um blockchain allan tímann, en ekki mikið um sérstöðuna.
Við erum öll meðvituð um að dulritunargjaldmiðlar eins og Bitcoin, Ethereum, Dogecoin, Matic og aðrir treysta á blockchain tækni. Blockchain leiddi mikilvæga atburði sem gjörbyltu fjölmörgum atvinnugreinum árið 2021 og ruddi brautina fyrir ný afrek.
Blockchain er leið til að geyma gögn á þann hátt sem erfitt eða ómögulegt er að breyta, hakka eða svindla. Það er stafræn bók yfir færslur sem eru afrituð og dreift um allt netkerfi tölvukerfa blockchain.
Það er byltingarkennda gagnagrunnstæknin sem knýr nánast alla dulritunargjaldmiðla. Blockchain gerir það ótrúlega erfitt að hakka eða svindla á kerfinu með því að dreifa eins afritum af gagnagrunni yfir heilt net.
Þó að Bitcoin sé nú mest áberandi notkun blockchain, getur tæknin þjónað mjög breitt úrval af forritum.
Dulritunargjaldmiðlar og blokkkeðjur hafa verið sífellt vinsælli undanfarin ár og búist er við að sú þróun haldi áfram.
Við munum búa til einfalda blockchain með JavaScript í þessari kennslu. Það mun veita þér grunnskilning á því hvernig blockchain virkar.
Köllum það MelodyCoin og tökum strax þátt í hasarnum!
Að búa til blokk
Til að byrja, búum við til nýja JavaScript skrá þar sem við setjum allan kóðann okkar.
Köllum það main.js og byrjum á lýsingu á því hvernig blockchain og blokkir ættu að líta út.
Búðu til Block class og gefðu honum fall Object() { [native code] } til að byrja með.
Þú verður að gefa upp dagsetningu og kjötkássa fyrri blokkar þegar þú býrð til nýja blokk:
Hér eru skilgreiningar fyrir hverja eign:
- Tímastimpillinn gefur til kynna hvenær blokkin var gerð. Þú getur notað hvaða snið sem þú velur (í þessu tilfelli, UNIX tímastimpil).
- Hvers konar gögn sem þú vilt tengja við þennan reit getur verið með í gagnabreytunni. Ef þú vilt búa til dulritunargjaldmiðil geturðu geymt viðskiptagögn eins og sendanda/móttakanda og peningaupphæðina sem flutt er hingað.
- The previousHash er strengur sem geymir kjötkássa fyrri blokkar. Þetta er það sem mun búa til blokkakeðjuna, sem mun skipta miklu máli við að veita heilleika blockchain okkar síðar.
Að búa til hass
Hver blokk tengist fyrri blokkinni (svona fyrriHash eignin). Það er, hver blokk krefst kjötkássa. Hash er svipað og fingrafar. Það er sérstakt fyrir hverja blokk.
Hægt er að reikna kjötkássa blokkar með því að senda allt innihald hennar í gegnum kjötkássafall.
Svo, við skulum byrja á því að útfæra aðgerð sem reiknar kjötkássa núverandi blokkar.
Svo, undir Block bekknum, skilgreinum við calculateHash fallið:
Hins vegar er SHA256 kjötkássa ekki studd af JavaScript og verður að fá það frá utanaðkomandi bókasafni.
Crypto-js er frábær pakki sem inniheldur öruggar útfærslur á nokkrum kjötkássa reikniritum.
Þá getum við flutt það inn í main.js kóðann okkar.
Nú þegar við höfum calculateHash() fallið okkar, skulum við nota það í Block's fallinu okkar:
Eftir að hafa lýst því hvernig blokk lítur út, getum við skilgreint hvernig Blockchain ætti að líta út. Svo við skulum búa til nýjan flokk.
Í þessari atburðarás er blockchain mjög einfaldur hlutur sem hefur eignakeðju. Þetta er fylki sem heldur öllum kubbunum á keðjunni.
Áður en við getum bætt við kubbum verðum við fyrst að búa til það sem er þekkt sem „ættarblokk“. Þetta er fyrsta blokkin í keðjunni og hún er einstök að því leyti að hann getur ekki bent á fyrri blokk (það er sá fyrsti!).
Svo, til að byggja upp upprunablokkinn, bæti ég falli við bekkinn okkar sem heitir createGenesisBlock (). Aftur í fallinu Object() { [native code] } í Blockchain bekknum okkar.
Við getum nú látið upprunablokkina fylgja með hvenær sem við byggjum nýtt Blockchain dæmi:
Blockchain aðferðir
Nú skulum við bæta aðferðum við Blockchain flokkinn okkar sem gerir okkur kleift að gera hluti eins og að bæta við nýjum kubbum og sækja nýjustu blokkina.
GetLatestBlock aðgerðin er sú einfaldasta. Það skilar einfaldlega síðasta meðlim keðjufylkisins:
AddBlock tæknin kemur aðeins meira við sögu.
Áður en við getum bætt nýrri blokk við keðjuna okkar, verðum við fyrst að stilla fyrriHash reit þeirrar blokkar á viðeigandi hátt.
Það verður að vera stillt á kjötkássa nýjustu blokkarinnar sem var bætt við keðjuna okkar. Við þurfum líka að reikna kjötkássa nýju blokkarinnar:
Próf
Við skulum sjá hvernig MelodyCoin okkar hefur komið út.
Búðu til blockchain dæmi til að ná þessu. Við skulum bæta við nokkrum kubbum í viðbót:
Við höfum búið til tvær nýjar blokkir þar. Við skulum kíkja á hvernig blockchain okkar lítur út eins og er.
MelodyCoin verður strengt og sniðið með fjórum bilum:
Staðfestu heiðarleika Blockchain
Blokkkeðjur eru frábærar vegna þess að þegar blokk hefur verið bætt við er ekki hægt að breyta henni án þess að ógilda afganginn af keðjunni.
Hins vegar er engin aðferð fyrir mig til að athuga heilleika blockchain okkar með þessari útfærslu.
Við skulum kynna isChainValid aðgerð fyrir blockchain okkar. Ef keðjan er lögmæt mun hún skila sér; annars mun það skila false:
Prófa heiðarleika
Við getum nú prófað heilleika blockchain okkar. Ef við framkvæmum það núna mun það staðfesta að keðjan okkar er ósvikin.
Við skulum nú reyna að fikta við blockchain okkar. Við skulum breyta reit 2 og skrifa yfir innihald hans (gerum ráð fyrir að við höfum flutt 100 mynt í stað fjögurra).
Þegar við framkvæmum þetta getum við séð að hugbúnaðurinn viðurkennir viðleitni okkar til að fikta við keðjuna.
Þú getur samt trúað því að það sé önnur aðferð fyrir mig til að blanda mér í þetta. Ég breytti innihaldinu í blokkinni en endurreiknaði ekki kjötkássa. Svo þú getur reynt að vera snjall og endurreiknað kjötkássa sömu blokkar.
Það er allt sem var í litlu blockchain uppsetningunni okkar! Það gerir okkur kleift að bæta við nýjum kubbum og greina að átt er við gögn innan keðjunnar.
Það eru tvö vandamál með litlu blockchain okkar sem við verðum að takast á við:
- Nútímatölvur eru mjög hraðar og geta bætt þúsundum kubbum við keðjuna okkar á nokkrum sekúndum. Við viljum augljóslega ekki að neinn splæsi blockchain okkar.
- Blockchain okkar er enn viðkvæmt fyrir áttum. Þú getur uppfært innihald kubbs og síðan einfaldlega endurreiknað kjötkássa (og fyrri kjötkássa) fyrir allar næstu blokkir. Jafnvel ef þú klúðrar því, endarðu með lögmæta keðju.
Til að takast á við þessar áhyggjur nota blockchains tækni sem kallast „sönnun á vinnu“. Þú verður að sýna fram á að þú hafir notað umtalsvert magn af reiknitilföngum til að búa til blokk með þessari nálgun. Þetta er líka kallað námuvinnslu.
Sönnun á vinnu krefst þess að kjötkássa blokkar byrji á ákveðnu magni af núllum. En hvernig geturðu vitað hvort kjötkássa þín passi við þessa reglu?
Innihald blokkar ákvarðar kjötkássa hennar. Þannig að við fáum alltaf sama hassið, að því tilskildu að við breytum ekki innihaldinu.
Hver kubbur ætti að bæta við sig ógildu sem lausn. Þetta eru í rauninni nokkur handahófskennd gögn sem við getum uppfært þar til kjötkássa blokkarinnar okkar byrjar á nógu mörgum núllum. Vegna þess að þú getur ekki breytt úttak kjötkássafalls þarftu að prófa margar mismunandi samsetningar og vona það besta.
Kynntu námuvinnslu fyrir Blockchain
Við skulum byrja á því að setja nonce í Block bekknum okkar. Nonce er eina gildið innan blokkarinnar okkar sem við getum breytt til að hafa áhrif á kjötkássa blokkarinnar.
Við getum ekki breytt tímastimplinum eða gögnunum.
Næst skulum við skrifa mineBlock() fall sem mun gera raunverulega námuvinnslu á blokk. Þessi aðgerð verður sendur nauðsynlega erfiðleika sem færibreytu og mun halda áfram að keyra þar til kjötkássa blokkarinnar okkar byrjar á nógu mörgum núllum.
Ég gerði bara grunn while lykkju sem myndi keyra þar til kjötkássa okkar byrjar á nógu mörgum núllum. Við notum erfiðleikana til að ákvarða hversu mörg núll þarf. Með erfiðleika upp á 5 verður kjötkássa okkar að byrja á 5 núllum.
Þegar kjötkássa okkar inniheldur ekki nógu mörg núll, hækkum við nonce um eitt og endurreikna kjötkássa. Og ef við finnum kjötkássa sem samsvarar erfiðleikunum, skráum við það á stjórnborðið.
Það er eitt í viðbót sem við þurfum að gera. Við tökum í raun ekki tillit til nonce breytunnar í calculateHash aðferðinni okkar, svo hér er hún:
Blockchain flokkur
Við skulum prófa þessa nýju nálgun í blockchain bekknum okkar og sjá hvernig það gengur.
Til að byrja, mun ég skilgreina erfiðleika blockchain okkar í fallinu Object(). Við skilgreinum það hér þar sem við getum notað það einhvers staðar síðar.
AddBlock aðgerðinni verður síðan að breyta þannig að hún grúfir blokkina áður en henni er bætt við keðjuna okkar.
Notaðu Blockchain
Nú skulum við nota nýja blockchain okkar með sönnunarvinnu reikniritinu. Hér skaltu bæta við nokkrum console.log yfirlýsingum.
Þegar við framkvæmum þennan kóða getum við séð að námuvinnsluferlið er ekki lengur sérstaklega hratt.
Það tekur nokkurn tíma fyrir reikniritið að búa til kubba með kjötkássa sem byrja á þremur núllum (eins og það er stillt af erfiðleikum).
Svo það var endirinn á grunnuppsetningu blockchain okkar.
Við getum stjórnað því hversu hratt nýjum kubbum er bætt við blockchain okkar þökk sé vinnusönnunarkerfinu.
Það er mikilvægasti öryggiseiginleikinn á blockchains. Og nú þegar þú skilur hvernig það virkar skaltu halda áfram að búa til þitt eigið!
Skildu eftir skilaboð