Ikiwa tunatazama mwenendo wa miaka michache iliyopita, tumesikia kuhusu blockchain wakati wote, lakini sio mengi kuhusu maalum.
Sote tunafahamu kuwa fedha fiche kama vile Bitcoin, Ethereum, Dogecoin, Matic na nyinginezo zinategemea teknolojia ya blockchain. Blockchain iliongoza matukio muhimu ambayo yalibadilisha tasnia nyingi mnamo 2021 na kuweka njia ya mafanikio mapya.
Blockchain ni njia ya kuhifadhi data kwa njia ambayo ni ngumu au haiwezekani kuhariri, kudukuliwa au kulaghai. Ni daftari la dijitali la miamala ambayo inarudiwa na kuenea katika mtandao mzima wa mifumo ya kompyuta ya blockchain.
Ni teknolojia ya msingi ya hifadhidata ambayo inasimamia karibu sarafu zote za siri. Blockchain inafanya kuwa vigumu sana kudukua au kudanganya mfumo kwa kueneza nakala zinazofanana za hifadhidata kwenye mtandao mzima.
Wakati Bitcoin sasa ndio matumizi maarufu zaidi kwa blockchain, teknolojia inaweza kutumika anuwai ya matumizi.
Cryptocurrencies na blockchains zimezidi kuwa maarufu katika miaka ya hivi karibuni, na hali hii inatarajiwa kuendelea.
Tutafanya blockchain rahisi na JavaScript katika somo hili. Itakupa ufahamu wa kimsingi wa jinsi blockchain inavyofanya kazi.
Wacha tuiite MelodyCoin na tuingie moja kwa moja kwenye hatua!
Kuunda Kizuizi
Kuanza, tutaunda faili mpya ya JavaScript ambamo tutaweka msimbo wetu wote.
Wacha tuite main.js na tuanze na maelezo ya jinsi blockchain na vizuizi vinapaswa kuonekana.
Unda darasa la Block na uipe kazi Object() { [native code] } kuanza.
Lazima utoe tarehe, na heshi ya kizuizi kilichotangulia wakati wa kuunda kizuizi kipya:
Hapa kuna ufafanuzi wa kila mali:
- Muhuri wa muda unaonyesha wakati kizuizi kilifanywa. Unaweza kutumia umbizo lolote utakalochagua (katika kesi hii, muhuri wa wakati wa UNIX).
- Aina yoyote ya data ambayo ungependa kuunganisha kwenye kizuizi hiki inaweza kujumuishwa kwenye kigezo cha data. Ikiwa ungependa kuunda cryptocurrency, unaweza kuhifadhi data ya muamala kama vile mtumaji/mpokezi na kiasi cha pesa kilichohamishwa hapa.
- Hash iliyotangulia ni mfuatano ambao unashikilia heshi ya kizuizi cha hapo awali. Hii ndiyo itazalisha mlolongo wa vitalu, ambayo itakuwa muhimu katika kutoa uadilifu wa blockchain yetu baadaye.
Kuunda Heshi
Kila block inaunganisha kwa block iliyotangulia (hivyo mali yaHash iliyopita). Hiyo ni, kila block inahitaji heshi. Hashi ni sawa na alama ya vidole. Ni tofauti kwa kila block.
Heshi ya block inaweza kukokotwa kwa kupitisha maudhui yake yote kupitia kipengele cha kukokotoa cha heshi.
Kwa hivyo, wacha tuanze kwa kutekeleza kazi inayojumuisha heshi ya kizuizi cha sasa.
Kwa hivyo, chini ya darasa la Block, tunafafanua kazi ya hesabuHash:
Hata hivyo, heshi ya SHA256 haitumiki na JavaScript na lazima ipatikane kutoka kwa maktaba ya nje.
Crypto-js ni kifurushi kizuri ambacho kinajumuisha utekelezaji salama wa algoriti kadhaa za hashi.
Kisha tunaweza kuiingiza kwenye msimbo wetu wa main.js.
Sasa kwa kuwa tunayo kazi yetu ya kuhesabuHash(), wacha tuitumie katika kazi ya Block yetu:
Baada ya kuelezea jinsi Block inavyoonekana, tunaweza kufafanua jinsi Blockchain inapaswa kuonekana. Kwa hivyo wacha tuunde darasa jipya.
Katika hali hii, blockchain ni kitu rahisi sana ambacho kina mnyororo wa mali. Hii ni safu inayoshikilia vizuizi vyote kwenye mnyororo.
Kabla ya kuongeza vizuizi, lazima kwanza tuunde kile kinachojulikana kama "kizuizi cha mwanzo." Hiki ndicho kizuizi cha kwanza kwenye mnyororo, na ni cha kipekee kwa kuwa hakiwezi kuelekeza kwenye kizuizi cha awali (ni cha kwanza!).
Kwa hivyo, ili kujenga kizuizi cha genesis, nitaongeza kazi kwa darasa letu inayoitwa createGenesisBlock (). Rudi kwenye kazi Object() { [native code] } ya darasa letu la Blockchain.
Sasa tunaweza kujumuisha kizuizi cha mwanzo wakati wowote tunapounda mfano mpya wa Blockchain:
Mbinu za Blockchain
Sasa, hebu tuongeze mbinu kwenye darasa letu la Blockchain ambazo zitaturuhusu kufanya mambo kama vile kuongeza vizuizi vipya na kuleta block ya hivi majuzi zaidi.
Kitendakazi cha getLatestBlock ndicho cha msingi zaidi. Inarudisha mshiriki wa mwisho wa safu ya mnyororo:
Mbinu ya addBlock inahusika zaidi.
Kabla ya kuongeza kizuizi kipya kwenye msururu wetu, lazima kwanza tuweke ipasavyo sehemu ya awali ya Hash ya kizuizi hicho.
Lazima iwekwe kwa heshi ya kizuizi kilichoongezwa hivi majuzi kwenye mnyororo wetu. Tunahitaji pia kukokotoa heshi ya kizuizi kipya:
Kupima
Wacha tuone jinsi MelodyCoin yetu imetoka.
Unda mfano wa blockchain kukamilisha hili. Wacha tuongeze vizuizi kadhaa zaidi:
Tumetengeneza vizuizi viwili vipya hapo. Wacha tuangalie jinsi blockchain yetu inavyoonekana kwa sasa.
MelodyCoin itaunganishwa na kuumbizwa na nafasi nne:
Thibitisha Uadilifu wa Blockchain
Minyororo ya kuzuia ni nzuri kwa sababu kizuizi kikishaongezwa, hakiwezi kurekebishwa bila kubatilisha salio la mnyororo.
Walakini, hakuna njia yangu ya kuangalia uadilifu wa blockchain yetu na utekelezaji huu.
Hebu tutambulishe kipengele cha isChainValid kwa blockchain yetu. Ikiwa mnyororo ni halali, utarudi kweli; vinginevyo, itarudi kuwa ya uwongo:
Kujaribu Uadilifu
Sasa tunaweza kujaribu uaminifu wa blockchain yetu. Ikiwa tutaitekeleza sasa, itathibitisha kwamba mlolongo wetu ni wa kweli.
Wacha sasa tujaribu kuchezea blockchain yetu. Wacha tubadilishe kizuizi cha 2 na tubadilishe yaliyomo (tuseme tulihamisha sarafu 100 badala ya nne).
Tunapotekeleza hili, tunaweza kuona kwamba programu inatambua jitihada zetu za kuharibu mnyororo.
Walakini, unaweza kuamini kuwa kuna njia nyingine kwangu ya kuingiliana na hii. Nilibadilisha yaliyomo kwenye kizuizi lakini sikuhesabu tena heshi. Kwa hivyo unaweza kujaribu kuwa mwerevu na kukokotoa tena heshi ya kizuizi hicho hicho.
Hiyo ndiyo tu kulikuwa na usanidi wetu mdogo wa blockchain! Inatuwezesha kuongeza vizuizi vipya na kugundua udukuzi wa data ndani ya mlolongo.
Kuna maswala mawili na blockchain yetu ndogo ambayo lazima tushughulikie:
- Kompyuta za kisasa zina haraka sana na zinaweza kuongeza maelfu ya vizuizi kwenye msururu wetu kwa sekunde. Kwa hakika hatutaki mtu yeyote atumie barua taka kwenye blockchain yetu.
- Blockchain yetu bado iko katika hatari ya kuchezewa. Unaweza kusasisha yaliyomo kwenye kizuizi na kisha uhesabu tena heshi (na heshi za hapo awali) kwa vizuizi vyote vifuatavyo. Hata ukiharibu utaishia na cheni halali.
Ili kushughulikia maswala haya, blockchains hutumia mbinu inayojulikana kama "ushahidi wa kazi." Lazima uonyeshe kuwa ulitumia kiasi kikubwa cha rasilimali za kukokotoa kuunda kizuizi kwa kutumia mbinu hii. Hii pia inaitwa madini.
Uthibitisho wa kazi unahitaji kwamba heshi ya block ianze na kiwango maalum cha sufuri. Lakini unawezaje kujua kama heshi yako inafaa sheria hii?
Yaliyomo kwenye kizuizi huamua heshi yake. Kwa hivyo sisi hupata heshi sawa kila wakati, mradi tu hatubadilishi yaliyomo.
Kila block inapaswa kuwa na dhamana isiyo ya kawaida iliyoongezwa kwake kama suluhisho. Kimsingi hii ni baadhi ya data nasibu ambayo tunaweza kusasisha hadi heshi ya kizuizi chetu ianze na sufuri za kutosha. Kwa sababu huwezi kubadilisha matokeo ya kazi ya heshi, inabidi ujaribu michanganyiko mingi tofauti na utumainie bora zaidi.
Tambulisha Uchimbaji madini kwa Blockchain
Wacha tuanze kwa kujumuisha nonce katika darasa letu la Block. Nonce ni thamani moja ndani ya block yetu ambayo tunaweza kurekebisha ili kuathiri heshi ya kizuizi.
Hatuwezi kubadilisha muhuri wa muda au data.
Ifuatayo, wacha tuandike kazi ya mineBlock() ambayo itafanya uchimbaji halisi wa kizuizi. Chaguo hili la kukokotoa litatumwa ugumu unaohitajika kama kigezo na itaendelea kutekeleza hadi heshi ya kizuizi chetu ianze na sufuri za kutosha.
Nimetengeneza kitanzi cha msingi ambacho kingeendelea hadi heshi yetu ianze na sufuri za kutosha. Tunatumia ugumu wa kuamua ni zero ngapi zinahitajika. Kwa ugumu wa 5, heshi yetu lazima ianze na sufuri 5.
Wakati heshi yetu haina sufuri za kutosha, tunainua nonce moja na kukokotoa upya heshi. Na ikiwa tunapata hashi ambayo inalingana na ugumu, tunaingia kwenye console.
Kuna jambo moja zaidi tunalohitaji kufanya. Hatuzingatii utofauti usio na maana katika njia yetu ya hesabuHash, kwa hivyo hii hapa:
Darasa la Blockchain
Wacha tujaribu mbinu hii mpya katika darasa letu la blockchain na tuone jinsi inavyoendelea.
Kuanza, nitafafanua ugumu wa blockchain yetu katika kazi Object(). Tunaifafanua hapa kwa kuwa tunaweza kuitumia mahali pengine baadaye.
Kitendaji cha addBlock lazima kirekebishwe ili kuchimba kizuizi kabla ya kuiongeza kwenye mnyororo wetu.
Tumia Blockchain
Sasa, hebu tuweke blockchain yetu mpya ya kutumia na kanuni ya uthibitisho wa kazi. Hapa, ongeza taarifa kadhaa za console.log.
Tunapotekeleza kanuni hii, tunaweza kuona kwamba mchakato wa uchimbaji madini si wa haraka sana.
Inachukua muda kwa algoriti kutoa vizuizi vyenye heshi ambavyo huanza na sufuri tatu (kama ilivyosanidiwa na ugumu).
Kwa hivyo huo ndio ulikuwa mwisho wa usanidi wetu wa msingi wa blockchain.
Tunaweza kudhibiti jinsi vitalu vipya vinavyoongezwa kwa haraka kwenye blockchain yetu kutokana na utaratibu wa uthibitisho wa kazi.
Ni kipengele muhimu zaidi cha usalama kwenye blockchains. Na sasa kwa kuwa umeelewa jinsi inavyofanya kazi, endelea kuunda yako mwenyewe!
Acha Reply