Ger em li meylên çend salên berê mêze bikin, me her dem li ser blokchein bihîstiye, lê di derheqê taybetmendiyan de ne pir.
Em hemî dizanin ku diravên krîpto yên wekî Bitcoin, Ethereum, Dogecoin, Matic û yên din xwe dispêrin teknolojiya blokê. Blockchain pêşengiya bûyerên girîng kir ku di sala 2021-an de gelek pîşesaziyê şoreş kir û rê li ber destkeftiyên nû vekir.
Blockchain navgînek hilanîna daneyan e bi rengekî ku guheztin, hackkirin an xapandin zor an ne gengaz e. Ew pirtûkek dîjîtal a danûstendinan e ku têne dubare kirin û li seranserê tevna tevna pergalên komputerê ya blokê belav dibin.
Ew teknolojiya databasê ya bingehîn e ku bi pratîkî hemî pereyên krîptoyê hêz dike. Blockchain bi belavkirina kopiyên yekane yên databasê li seranserê tevnek tevnvîsê, hakkirin an xapandina pergalê pir dijwar dike.
Digel ku Bitcoin naha ji bo blokcheynê karanîna herî berbiçav e, teknolojî dikare cûrbecûr serlêdanan bike.
Cryptocurrencies û blokcheyn di van salên dawî de her ku diçe populer bûne, û tê payîn ku ev meyl berdewam bike.
Em ê di vê tutoriyê de bi JavaScript re blokek hêsan çêbikin. Ew ê ji we re têgihîştinek bingehîn peyda bike ka blokek çawa dixebite.
Ka em jê re bibêjin MelodyCoin û rast têkevin çalakiyê!
Afirandina Block
Ji bo destpêkê, em ê pelek JavaScript-a nû ya ku em ê hemî koda xwe tê de bi cih bikin, biafirînin.
Ka em jê re bibêjin main.js û bi danasîna ku zincîra blokê û blokan divê çawa xuya bikin dest pê bikin.
Çînek Blockê biafirînin û ji bo destpêkê fonksiyonek Object() { [koda xwemalî] } bidin.
Dema ku bloka nû diafirîne, divê hûn tarîxek, û hashê bloka berê bidin:
Li vir pênase ji bo her milkê hene:
- Demjimêr destnîşan dike ku kengî blok hate çêkirin. Hûn dikarin çi formata ku hûn hilbijêrin bikar bînin (di vê rewşê de, mohra demjimêrek UNIX).
- Her forma daneya ku hûn dixwazin bi vê blokê ve girêdin dikarin di pîvana daneyê de cih bigirin. Heke hûn dixwazin pereyê krîptoyê biafirînin, hûn dikarin daneyên danûstendinê yên wekî şander / wergir û mîqdara dravê ku li vir hatî barkirin biparêzin.
- PreviousHash rêzikek e ku hash bloka pêşîn digire. Ya ku dê zincîra blokan çêbike ev e, ku dê di peydakirina yekrêziya zincîra meya paşîn de krîtîk be.
Çêkirina Hashes
Her blok bi bloka pêşîn ve girêdide (bi vî rengî taybetmendiya Hash ya berê). Ango, her blokek haş hewce dike. Haş dişibe şopa tiliyê. Ew ji bo her blokek cuda ye.
Bi derbaskirina hemî naverokên wê di nav fonksiyonek hash-ê de, haşa blokê dikare were hesibandin.
Ji ber vê yekê, em bi pêkanîna fonksiyonek ku hash bloka heyî hesab dike dest pê bikin.
Ji ber vê yekê, di binê çîna Block de, em fonksiyona hesabkirinaHash diyar dikin:
Lêbelê, hash SHA256 ji hêla JavaScript ve nayê piştgirî kirin û divê ji pirtûkxaneyek derveyî were wergirtin.
Crypto-js pakêtek fantastîk e ku pêkanînên ewledar ên çend algorîtmayên hash vedihewîne.
Wê hingê em dikarin wê têxin nav koda xweya main.js.
Naha ku me fonksiyona xweya hesabkirinaHash() heye, em wê di fonksiyona xweya Blockê de bikar bînin:
Piştî danasîna Blockek çawa xuya dike, em dikarin diyar bikin ku Blockchain divê çawa xuya bike. Ji ber vê yekê em çînek nû ava bikin.
Di vê senaryoyê de, zincîra blokê tiştek pir hêsan e ku xwedan zincîreyek taybetmendiyê ye. Ev rêzek e ku hemî blokên li ser zincîrê digire.
Berî ku em karibin blokan lê zêde bikin, divê em pêşî tiştê ku wekî "bloka genesis" tê zanîn biafirînin. Ev bloka yekem di zincîrê de ye, û ew yekta ye ku ew nikare bloka pêşîn nîşan bide (ew yekem e!).
Ji ber vê yekê, ji bo avakirina bloka genesisê, ez ê fonksiyonek bi navê createGenesisBlock (). Vegere fonksiyona Object() { [koda xwemalî] } ya çîna meya Blockchain.
Dema ku em mînakek Blockchain-a nû ava bikin, naha em dikarin bloka genesisê têxin nav xwe:
Rêbazên Blockchain
Naha, werin em rêbazan li pola xweya Blockchain-ê zêde bikin ku dê bihêle ku em tiştên wekî blokên nû lê zêde bikin û bloka herî dawî bistînin.
Fonksiyona getLatestBlock ya herî bingehîn e. Ew bi tenê endamê paşîn a rêzika zincîrê vedigerîne:
Teknolojiya addBlock hinekî bêtir tevlihev e.
Berî ku em bikarin blokek nû li zincîra xwe zêde bikin, divê pêşî em qada berêHash a wê blokê bi guncan saz bikin.
Pêdivî ye ku ew li ser haşa bloka herî dawî ya ku li zincîra me hatî zêdekirin were danîn. Di heman demê de pêdivî ye ku em heşê bloka nû jî hesab bikin:
testkirina
Ka em bibînin ka MelodyCoin çawa derketiye.
Ji bo pêkanîna vê yekê mînakek blokek biafirînin. Ka em çend blokên din lê zêde bikin:
Me li wir du blokên nû çêkirin. Werin em mêze bikin ka bloka me ya niha çawa xuya dike.
MelodyCoin dê bi çar cihan were xêzkirin û formatkirin:
Yekitiya Blockchain-ê verast bikin
Blockchains fantastîk in ji ber ku gava ku blokek were zêdekirin, bêyî betalkirina zincîra mayî nayê guhertin.
Lêbelê, rêbazek ku ez bi vê pêkanînê re yekbûna bloka me kontrol bikim tune.
Ka em fonksiyonek isChainValid bi zincîra xweya blokê re bidin nasîn. Ger zincîre rewa be, ew ê rast vegere; Wekî din, ew ê derewîn vegere:
Testkirina Tenduristiyê
Naha em dikarin yekrêziya blokek xwe biceribînin. Ger em niha wê îdam bikin, ew ê piştrast bike ku zincîra me rast e.
Werin em naha hewl bidin ku zincîra xweya blokê têk bibin. Werin em bloka 2 biguherînin û naveroka wê binivîsin (ka em texmîn bikin ku me li şûna çaran 100 coin veguhezandine).
Dema ku em vê yekê pêk tînin, em dikarin bibînin ku nermalavê hewildana me ya têkbirina zincîrê nas dike.
Lêbelê, hûn dikarin bawer bikin ku rêbazek din heye ku ez bi vê yekê re mijûl bikim. Min naverokên di blokê de guhert lê haş ji nû ve hesab nekir. Ji ber vê yekê hûn dikarin biceribînin ku hûn jîr bin û hashê heman blokê ji nû ve hesab bikin.
Ya ku di sazkirina zincîra bloka meya piçûk de hebû ev e! Ew dihêle ku em blokên nû lê zêde bikin û têkbirina daneyan di nav zincîrê de tespît bikin.
Di bloka meya piçûk de du pirsgirêk hene ku divê em çareser bikin:
- Komputerên nûjen zehf bilez in û dikarin di çirkeyan de bi hezaran blokan li zincîra me zêde bikin. Em eşkere naxwazin ku kesek bloka me spam bike.
- Blockchain me hîn jî ji destavêtinê re xeternak e. Hûn dikarin naveroka blokê nûve bikin û dûv re bi tenê ji bo hemî blokên jêrîn hashes (û haşeyên pêşîn) ji nû ve bijmêrin. Tewra ku hûn bi wê re tevlihev bibin, hûn ê bi zincîrek rewa biqedin.
Ji bo çareserkirina van fikaran, blokek teknîkek ku wekî "delîlên xebatê" tê zanîn bikar tînin. Pêdivî ye ku hûn destnîşan bikin ku we hejmareke girîng a çavkaniyên hesabker bikar aniye da ku hûn bi karanîna vê nêzîkbûnê blokê çêbikin. Ev jî tê gotin zemî.
Ji bo îsbatkirina kar hewce dike ku haşa blokê bi hejmarek taybetî ya sifiran dest pê bike. Lê hûn çawa dikarin zanibin ka haşa we li gorî vê qaîdeyê ye?
Naveroka blokê haşa wê diyar dike. Ji ber vê yekê em her gav heman hash digirin, bi şertê ku em naverokê neguherînin.
Divê her blokek wekî çareseriyek nirxek nenas li wê were zêdekirin. Ev di bingeh de hin daneyên rasthatî ne ku em dikarin nûve bikin heya ku haşa bloka me bi zeroyên têr dest pê bike. Ji ber ku hûn nekarin hilbera fonksiyonek hash biguhezînin, pêdivî ye ku hûn gelek berhevokên cihêreng ceribandin û hêviya çêtirîn bikin.
Madenê bi The Blockchain re bidin nasîn
Werin em bi tevlêkirina nonce di pola xweya Block de dest pê bikin. Nonce nirxa yekane ya di hundurê bloka me de ye ku em dikarin biguhezînin da ku bandorê li haşa blokê bike.
Em nekarin nîşana demê an daneyê biguherînin.
Dûv re, em fonksiyonek mineBlock() binivîsin ku dê kanankirina rastîn a blokê bike. Dê ev fonksiyon wekî pîvanek dijwariya hewce were şandin û heya ku haşa bloka me bi têra sifiran dest pê bike dê bidomîne.
Min tenê xelekek dema bingehîn çêkir ku dê heya ku haşa me bi zeroyên têr dest pê bike bimeşe. Em zehmetiyê bikar tînin da ku diyar bikin ka çend sifir hewce ne. Bi dijwariya 5-an, divê haşa me bi 5 sifiran dest pê bike.
Dema ku haşa me têra sifiran neke, em nonceyê yek bi yek bilind dikin û haş ji nû ve dihejmêrin. Û heke em hashek ku bi dijwariyê re têkildar bibînin, em wê têkevin konsolê.
Tiştek din heye ku em bikin. Em di rêbaza xweya hesabkirinaHash de bi rastî guhêrbara nonce li ber çavan nagirin, ji ber vê yekê ew li vir e:
Dersa Blockchain
Ka em vê nêzîkatiya nû di pola xweya blokê de ceribandinê bikin û bibînin ka ew çawa diçe.
Ji bo destpêkê, ez ê di fonksiyona Object() de dijwariya bloka xwe diyar bikim. Em li vir pênase dikin ji ber ku em dikarin paşê li cîhek bikar bînin.
Dûv re fonksiyona addBlock divê bi vî rengî were guheztin ku ew blokê berî ku wê li zincîra me zêde bike hilîne.
Blockchain bikar bînin
Naha, em zincîra xweya bloka nû bi kar bînin ku bi algorîtmaya delîl-karê re bikar bînin. Li vir, çend daxuyaniyên console.log zêde bikin.
Dema ku em vê kodê bicîh dikin, em dikarin bibînin ku pêvajoya madenê nema bi taybetî bilez e.
Hin dem digire ku algorîtma blokên bi haşeyên ku bi sê sifiran dest pê dikin (wekî ku ji hêla dijwariyê ve hatî mîheng kirin) çêbike.
Ji ber vê yekê ew dawiya sazkirina bloka meya bingehîn bû.
Bi saya mekanîzmaya delîl-karê, em dikarin birêkûpêk bikin ka çiqas zû blokên nû li bloka me têne zêdekirin.
Ew taybetmendiya ewlehiyê ya herî girîng a li ser zincîreyan e. Û naha ku hûn fêm dikin ka ew çawa dixebite, dest bi afirandina xweya xwe bikin!
Leave a Reply