Os edrychwn ar dueddiadau'r ychydig flynyddoedd blaenorol, rydym wedi clywed am blockchain drwy'r amser, ond dim llawer am y manylion.
Rydym i gyd yn ymwybodol bod cryptocurrencies fel Bitcoin, Ethereum, Dogecoin, Matic, ac eraill yn dibynnu ar dechnoleg blockchain. Arweiniodd Blockchain y digwyddiadau arwyddocaol a chwyldroodd nifer o ddiwydiannau yn 2021 ac a baratôdd y ffordd ar gyfer cyflawniadau newydd.
Mae Blockchain yn fodd o storio data mewn ffordd sy'n anodd neu'n amhosibl ei olygu, ei hacio neu ei swindle. Mae'n gyfriflyfr digidol o drafodion sy'n cael eu dyblygu a'u lledaenu ar draws rhwydwaith cyfan y blockchain o systemau cyfrifiadurol.
Dyma'r dechnoleg cronfa ddata arloesol sy'n pweru bron pob arian cyfred digidol. Mae Blockchain yn ei gwneud hi'n anhygoel o anodd hacio neu dwyllo'r system trwy wasgaru copïau unfath o gronfa ddata ar draws rhwydwaith cyfan.
Er mai Bitcoin bellach yw'r defnydd mwyaf amlwg ar gyfer blockchain, gall y dechnoleg wasanaethu amrywiaeth eang iawn o gymwysiadau.
Mae arian cyfred cripto a blockchains wedi bod yn fwyfwy poblogaidd yn ystod y blynyddoedd diwethaf, a disgwylir i'r duedd hon barhau.
Byddwn yn gwneud blockchain syml gyda JavaScript yn y tiwtorial hwn. Bydd yn rhoi dealltwriaeth sylfaenol i chi o sut mae blockchain yn gweithio.
Gadewch i ni ei alw'n MelodyCoin a mynd yn iawn i mewn ar y weithred!
Creu Bloc
I ddechrau, byddwn yn creu ffeil JavaScript newydd lle byddwn yn gosod ein cod i gyd.
Gadewch i ni ei alw'n main.js a dechrau gyda disgrifiad o sut y dylai blockchain a blociau edrych.
Creu dosbarth bloc a rhoi ffwythiant Gwrthrych() { [cod brodorol] } iddo i ddechrau.
Rhaid i chi roi dyddiad, a stwnsh y bloc blaenorol wrth greu bloc newydd:
Dyma'r diffiniadau ar gyfer pob eiddo:
- Mae'r stamp amser yn nodi pryd y gwnaed y bloc. Gallwch ddefnyddio pa bynnag fformat a ddewiswch (yn yr achos hwn, stamp amser UNIX).
- Gellir cynnwys unrhyw fath o ddata yr hoffech ei gysylltu â'r bloc hwn yn y paramedr data. Os ydych chi'n dymuno creu arian cyfred digidol, gallwch chi gadw data trafodion fel yr anfonwr / derbynnydd a'r swm o arian a symudwyd yma.
- Mae'r previousHash yn llinyn sy'n dal hash y bloc blaenorol. Dyma beth fydd yn cynhyrchu'r gadwyn o flociau, a fydd yn hanfodol i ddarparu cyfanrwydd ein blockchain yn ddiweddarach.
Creu Hashes
Mae pob bloc yn cysylltu â'r bloc blaenorol (felly yr eiddo previousHash). Hynny yw, mae angen hash ar bob bloc. Mae hash yn debyg i olion bysedd. Mae'n wahanol ar gyfer pob bloc.
Gellir cyfrifo stwnsh bloc trwy basio ei holl gynnwys trwy ffwythiant stwnsh.
Felly, gadewch i ni ddechrau trwy weithredu swyddogaeth sy'n cyfrifo hash y bloc cyfredol.
Felly, o dan y dosbarth Bloc, rydyn ni'n diffinio'r swyddogaeth cyfrifoHash:
Fodd bynnag, nid yw'r hash SHA256 yn cael ei gefnogi gan JavaScript a rhaid ei gael o lyfrgell allanol.
Mae Crypto-js yn becyn gwych sy'n cynnwys gweithrediadau diogel o sawl algorithm hash.
Yna gallwn ei fewnforio i'n cod main.js.
Nawr bod gennym ein swyddogaeth calculationHash (), gadewch i ni ei ddefnyddio yn swyddogaeth ein Bloc:
Ar ôl disgrifio sut olwg sydd ar Floc, gallwn ddiffinio sut olwg ddylai fod ar Blockchain. Felly gadewch i ni greu dosbarth newydd.
Yn y senario hwn, mae'r blockchain yn wrthrych syml iawn sydd â chadwyn eiddo. Arae yw hon sy'n dal yr holl flociau ar y gadwyn.
Cyn y gallwn ychwanegu blociau, yn gyntaf rhaid i ni greu yr hyn a elwir yn “bloc genesis.” Dyma'r bloc cyntaf yn y gadwyn, ac mae'n unigryw gan na all bwyntio at floc blaenorol (dyma'r cyntaf!).
Felly, i adeiladu'r bloc genesis, byddaf yn ychwanegu swyddogaeth i'n dosbarth o'r enw createGenesisBlock (). Yn ôl yn swyddogaeth Gwrthrych() { [cod brodorol] } ein dosbarth Blockchain.
Gallwn nawr gynnwys y bloc genesis unrhyw bryd y byddwn yn adeiladu enghraifft Blockchain newydd:
Dulliau Blockchain
Nawr, gadewch i ni ychwanegu dulliau at ein dosbarth Blockchain a fydd yn caniatáu inni wneud pethau fel ychwanegu blociau newydd a nôl y bloc mwyaf diweddar.
Swyddogaeth getLatestBlock yw'r mwyaf sylfaenol. Yn syml, mae'n dychwelyd yr aelod olaf o'r gyfres gadwyn:
Mae'r dechneg addBlock ychydig yn fwy cysylltiedig.
Cyn y gallwn ychwanegu bloc newydd i'n cadwyn, yn gyntaf rhaid inni osod maes previousHash y bloc hwnnw'n briodol.
Rhaid ei osod i stwnsh y bloc a ychwanegwyd yn fwyaf diweddar i'n cadwyn. Mae angen i ni hefyd gyfrifo hash y bloc newydd:
Profi
Gadewch i ni weld sut mae ein MelodyCoin wedi dod allan.
Creu enghraifft blockchain i gyflawni hyn. Gadewch i ni ychwanegu cwpl arall o flociau:
Rydyn ni wedi gwneud dau floc newydd yno. Gadewch i ni gael cipolwg ar sut olwg sydd ar ein blockchain ar hyn o bryd.
Bydd MelodyCoin yn cael ei gyfyngu a'i fformatio gyda phedwar gofod:
Gwiriwch Uniondeb The Blockchain
Mae Blockchains yn wych oherwydd unwaith y bydd bloc wedi'i ychwanegu, ni ellir ei addasu heb annilysu gweddill y gadwyn.
Fodd bynnag, nid oes unrhyw ddull i mi wirio cywirdeb ein blockchain gyda'r gweithrediad hwn.
Gadewch i ni gyflwyno swyddogaeth isChainValid i'n blockchain. Os bydd y gadwyn yn gyfreithlon, bydd yn dychwelyd yn wir; fel arall, bydd yn dychwelyd ffug:
Profi Uniondeb
Gallwn nawr roi cywirdeb ein blockchain ar brawf. Os byddwn yn ei weithredu yn awr, bydd yn cadarnhau bod ein cadwyn yn ddilys.
Gadewch inni nawr geisio ymyrryd â'n blockchain. Gadewch i ni newid bloc 2 a throsysgrifo ei gynnwys (gadewch i ni dybio inni drosglwyddo 100 darn arian yn lle pedwar).
Pan fyddwn yn gweithredu hyn, gallwn weld bod y meddalwedd yn cydnabod ein hymdrech i ymyrryd â'r gadwyn.
Fodd bynnag, gallwch chi gredu bod yna ddull arall i mi ymyrryd â hyn. Newidiais y cynnwys yn y bloc ond ni wnes i ailgyfrifo'r stwnsh. Felly gallwch chi geisio bod yn glyfar ac ailgyfrifo stwnsh yr un bloc hwnnw.
Dyna'r cyfan oedd i'n setup blockchain bach! Mae'n ein galluogi i ychwanegu blociau newydd a chanfod ymyrryd â data o fewn y gadwyn.
Mae dau fater gyda'n blockchain bach y mae'n rhaid inni fynd i'r afael â nhw:
- Mae cyfrifiaduron modern yn hynod o gyflym a gallant ychwanegu miloedd o flociau at ein cadwyn mewn eiliadau. Yn amlwg nid ydym am i unrhyw un sbamio ein blockchain.
- Mae ein blockchain yn dal yn agored i ymyrraeth. Gallwch chi ddiweddaru cynnwys bloc ac yna ailgyfrifo'r hashes (a'r hashes blaenorol) ar gyfer yr holl flociau canlynol. Hyd yn oed os byddwch yn gwneud llanast ag ef, bydd gennych gadwyn gyfreithlon yn y pen draw.
Er mwyn mynd i'r afael â'r pryderon hyn, mae cadwyni bloc yn defnyddio techneg a elwir yn “prawf o waith.” Rhaid i chi ddangos eich bod wedi defnyddio swm sylweddol o adnoddau cyfrifiadurol i greu bloc gan ddefnyddio'r dull hwn. Gelwir hyn hefyd mwyngloddio.
Mae prawf-o-waith yn gofyn bod hash bloc yn dechrau gyda swm penodol o sero. Ond sut allwch chi wybod a yw'ch hash yn cyd-fynd â'r rheol hon?
Mae cynnwys bloc yn pennu ei hash. Felly rydym bob amser yn cael yr un hash, ar yr amod nad ydym yn addasu'r cynnwys.
Dylai pob bloc gael gwerth nonce wedi'i ychwanegu ato fel datrysiad. Yn ei hanfod, dyma rywfaint o ddata ar hap y gallwn ei ddiweddaru nes bod hash ein bloc yn dechrau gyda digon o sero. Gan na allwch chi newid allbwn swyddogaeth hash, mae'n rhaid i chi brofi llawer o gyfuniadau gwahanol a gobeithio am y gorau.
Cyflwyno Mwyngloddio i The Blockchain
Gadewch i ni ddechrau trwy gynnwys nonce yn ein dosbarth Bloc. Y nonce yw'r gwerth sengl yn ein bloc y gallwn ei addasu i effeithio ar stwnsh y bloc.
Ni allwn newid y stamp amser na'r data.
Nesaf, gadewch i ni ysgrifennu swyddogaeth mineBlock() a fydd yn gwneud y mwyngloddio bloc gwirioneddol. Anfonir yr anhawster angenrheidiol fel paramedr at y swyddogaeth hon a bydd yn parhau i weithredu nes bod hash ein bloc yn dechrau gyda digon o sero.
Fi jyst yn gwneud dolen tra sylfaenol a fyddai'n rhedeg nes ein hash yn dechrau gyda digon o sero. Rydym yn defnyddio'r anhawster i benderfynu faint o sero sydd eu hangen. Gydag anhawster o 5, rhaid i'n hash ddechrau gyda 5 sero.
Pan nad yw ein hash yn cynnwys digon o sero, rydyn ni'n codi'r nonce fesul un ac yn ail-gyfrifo'r stwnsh. Ac os byddwn yn dod o hyd i hash sy'n cyfateb i'r anhawster, rydyn ni'n ei logio i'r consol.
Mae un peth arall sydd angen i ni ei wneud. Nid ydym mewn gwirionedd yn cymryd y newidyn nonce i ystyriaeth yn ein dull cyfrifoHash, felly dyma fe:
Dosbarth Blockchain
Gadewch i ni roi'r dull newydd hwn ar brawf yn ein dosbarth blockchain a gweld sut mae'n mynd.
I ddechrau, byddaf yn diffinio anhawster ein blockchain yn y swyddogaeth Gwrthrych (). Rydyn ni'n ei ddiffinio yma oherwydd gallwn ei ddefnyddio yn rhywle yn nes ymlaen.
Yna rhaid addasu swyddogaeth addBlock fel ei fod yn cloddio'r bloc cyn ei ychwanegu at ein cadwyn.
Defnyddiwch The Blockchain
Nawr, gadewch i ni ddefnyddio ein blockchain newydd gyda'r algorithm prawf-o-waith. Yma, ychwanegu cwpl datganiadau consol.log.
Pan fyddwn yn gweithredu'r cod hwn, gallwn arsylwi nad yw'r broses gloddio bellach yn arbennig o gyflym.
Mae'n cymryd peth amser i'r algorithm gynhyrchu blociau gyda hashes sy'n dechrau gyda thri sero (fel y'i ffurfweddu gan anhawster).
Felly dyna oedd diwedd ein setup blockchain sylfaenol.
Gallwn reoleiddio pa mor gyflym y mae blociau newydd yn cael eu hychwanegu at ein blockchain diolch i'r mecanwaith prawf-o-waith.
Dyma'r nodwedd ddiogelwch fwyaf arwyddocaol ar blockchains. A nawr eich bod chi'n deall sut mae'n gweithio, daliwch ati i greu un eich hun!
Gadael ymateb