Beth ddylem ni adeiladu blockchain?

Mae holl hanes dynolryw yn broses barhaus o gael gwared ar gadwyni a chreu rhai newydd, cryfach fyth. (Awdur dienw)

Wrth ddadansoddi nifer o brosiectau blockchain (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin, ac ati), deallaf, o safbwynt technegol, eu bod i gyd wedi'u hadeiladu ar yr un egwyddorion. Mae blockchains yn atgoffa rhywun o dai, sydd, er gwaethaf yr holl amrywiaeth o ddyluniadau, addurniadau a dibenion, â sylfaen, waliau, to, ffenestri, drysau sydd wedi'u cysylltu â'i gilydd mewn rhai ffyrdd. Ac os ydych chi'n deall egwyddorion sylfaenol dylunio adeiladau ac yn gwybod priodweddau'r deunyddiau a ddefnyddir, yna gallwch chi bennu pwrpas arfaethedig tŷ penodol. Ar hyn o bryd, mae sefyllfa wedi codi gyda blockchain y mae pawb wedi clywed amdani, ond ychydig o bobl sy'n deall pensaernïaeth ac egwyddorion gweithredu. Felly, mae camddealltwriaeth ynghylch pam a sut mae'n gwneud synnwyr i ddefnyddio technolegau blockchain.

Yn yr erthygl hon byddwn yn dadansoddi'r priodweddau a'r egwyddorion sy'n gyffredin i bob cadwyn bloc. Nesaf, gadewch i ni edrych ar y problemau y gellir eu datrys gan ddefnyddio'r blockchain ac i atgyfnerthu'r deunydd, gadewch i ni adeiladu blockchain bach ond go iawn ar ein safle rhithwir!

Felly, gadewch i ni gofio pa broblemau a ddatrysodd blockchain i ddechrau.

Rwy’n siŵr y bydd llawer yn dweud am gronfa ddata ddosranedig, ddatganoledig, gyhoeddus a digyfnewid. Ond pam roedd hyn i gyd yn angenrheidiol?

Mae'n well gen i ddechrau astudio unrhyw dechnoleg trwy ddarllen y safonau, gan fod yr holl erthyglau a llyfrau ar y pwnc dan sylw yn seiliedig arnynt. Ond ar hyn o bryd nid oes unrhyw safonau blockchain; dim ond wedi'i greu y mae ISO pwyllgorau ar gyfer eu datblygiad. Ar hyn o bryd, mae gan bob prosiect blockchain cyhoeddus ei ddogfen papur Gwyn ei hun, sydd yn ei hanfod yn fanyleb dechnegol. Y prosiect blockchain cyntaf sy'n hysbys yn gyhoeddus yw'r rhwydwaith Bitcoin. Ewch i wefan swyddogol y rhwydwaith a edrych sut y dechreuodd y cyfan.

Her Blockchain

Felly, y dasg y mae blockchain wedi'i datrys yn y rhwydwaith arloeswr Bitcoin yw cyflawni trosglwyddiad dibynadwy o berchnogaeth asedau digidol (asedau) mewn amgylchedd nad yw'n ymddiried ynddo heb gyfryngwyr. Er enghraifft, yn y rhwydwaith Bitcoin, ased digidol yw darnau arian digidol bitcoin. Ac mae holl atebion technegol Bitcoin a blockchains eraill yn dibynnu ar ddatrys y broblem hon.

Problemau y mae blockchain yn eu datrys

Tybiwch fod sefydliad ariannol penodol yn dweud ei fod wedi adeiladu rhwydwaith ledled y byd gyda chymorth y mae'n bosibl trosglwyddo arian i unrhyw berson. A wnewch chi ei chredu? Os mai Visa neu MasterCard yw'r sefydliad hwn, mae'n debyg y byddwch chi'n ei gredu, ond os, yn gymharol siarad, AnonymousWorldMoney, mae'n debyg na fyddwch chi'n gwneud hynny. Pam? Ond oherwydd ein bod yn gwybod yn iawn sut mae systemau gwasgaredig yn cael eu gwneud gan gwmnïau preifat, at ba ddibenion, ac at beth y gall hyn arwain. Gadewch i ni edrych yn agosach ar broblemau systemau o'r fath a sut y gellir eu datrys gan ddefnyddio technolegau blockchain.

Gadewch i ni ddweud bod gweinyddwyr â chronfeydd data yn yr AnonymousWorldMoney amodol, ac mae'n dda os oes nifer ohonyn nhw mewn gwahanol ganolfannau data. Pan fydd yr anfonwr yn trosglwyddo arian, mae trafodiad yn cael ei gofrestru, sy'n cael ei ailadrodd i bob gweinydd, ac mae'r arian yn cyrraedd y derbynnydd.

Beth ddylem ni adeiladu blockchain?

Mewn byd delfrydol, mae'r cynllun hwn yn gweithio'n wych, ond yn ein byd ni mae'r problemau canlynol yn codi:

  1. Y broblem o nodi cyfranogwyr ar y naill law a'r angen am anhysbysrwydd trafodion ar y llaw arall. Y rhai. mae angen i chi drosglwyddo arian i dderbynnydd penodol ac yn y fath fodd nad oes neb yn gwybod am y trafodiad hwn ac eithrio'r cyfranogwyr yn y trafodiad. Mae gan fanciau rifau cyfrif a chardiau banc sy'n gysylltiedig ag unigolyn neu endid cyfreithiol penodol, ac mae cyfrinachedd banc yn diogelu gwybodaeth trafodion. A phwy sy'n gwarantu nad yw'r amodol AnonymousWorldMoney yn defnyddio data personol a gwybodaeth trafodion at ei ddibenion ei hun?
  2. Sut i wneud yn siŵr bod y derbynnydd yn derbyn yr union swm a drosglwyddwyd iddo? Yn gymharol siarad, trosglwyddodd yr anfonwr $100, a derbyniodd y derbynnydd $10. Daw'r anfonwr i swyddfa AnonymousWorldMoney gyda'i dderbynneb, ac mae'r clerc yn dangos ei fersiwn, lle mae'n ysgrifenedig mai dim ond $10 a drosglwyddodd yr anfonwr.
  3. Problem amgylchedd di-ymddiried, er enghraifft, sgam a elwir yn wariant dwbl. Gall cyfranogwr diegwyddor wario ei falans sawl gwaith nes bod y taliad yn cael ei ailadrodd i bob gweinydd. Theorem CAP, wrth gwrs, ni chanslwyd neb, a sicrheir cytundeb yn y pen draw, ond ni fydd rhywun yn derbyn arian am wasanaethau neu nwyddau a ddarperir. Felly, os nad oes ymddiriedaeth lwyr yn y sefydliad talu neu gyfranogwyr mewn trafodion, yna mae angen adeiladu rhwydwaith yn seiliedig nid ar ymddiriedaeth, ond ar cryptograffeg.
  4. Mae gan Conditional AnonymousWorldMoney nifer gyfyngedig o weinyddion a all ddod yn anfwriadol neu oherwydd bwriad maleisus.
  5. Bydd AnonymousWorldMoney yn cymryd ei gomisiwn diriaethol ei hun.
  6. Posibilrwydd o reolaeth. Yn ystod gweithrediad Bitcoin, mae'n ymddangos bod pobl eisiau nid yn unig drosglwyddo darnau arian i'w gilydd, ond hefyd i wirio amodau amrywiol ar gyfer y trafodiad, senarios gwaith rhaglen, cyflawni gweithredoedd yn awtomatig yn dibynnu ar yr amodau, ac ati.

Sut mae blockchain yn datrys y problemau hyn

  1. Mae adnabod cyfranogwyr yn cael ei wneud gan ddefnyddio pâr o allweddi: preifat a chyhoeddus, ac mae'r algorithm llofnod digidol yn adnabod yr anfonwr a'r derbynnydd yn unigryw, gan adael eu hunaniaeth yn ddienw.
  2. Cesglir trafodion yn flociau, cyfrifir stwnsh y bloc a'i ysgrifennu yn y bloc nesaf. Mae'r dilyniant hwn o gofnodi hashes mewn blociau yn rhoi ei enw i'r dechnoleg blockchain, ac mae hefyd yn ei gwneud hi'n amhosibl newid / dileu blociau neu drafodion unigol o flociau yn ansylweddol. Felly, os yw trafodiad wedi'i gynnwys yn y blockchain, gallwch fod yn sicr y bydd ei ddata yn aros yr un fath.
  3. Mae twyll gwario dwbl yn cael ei atal trwy gyrraedd consensws rhwydwaith ar ba ddata i'w hystyried yn ddilys a pha rai i'w taflu. Yn y rhwydwaith Bitcoin, ceir consensws trwy brawf o waith (PoW).
  4. Mae dibynadwyedd y rhwydwaith yn cael ei gyflawni gan y ffaith bod y blockchain yn gyhoeddus, lle gall pob cyfranogwr redeg ei nod ei hun, derbyn copi cyflawn o'r blockchain ac, ar ben hynny, yn annibynnol yn dechrau gwirio trafodion ar gyfer cywirdeb. Dylid nodi bod cadwyni modern yn ei gwneud hi'n bosibl adeiladu nid yn unig cadwyni cyhoeddus (agored) ond hefyd cadwyni preifat (caeedig), yn ogystal â defnyddio cynlluniau cyfun.
  5. Ni fydd y blockchain yn cael gwared yn llwyr ar gomisiynau, oherwydd ... mae'n rhaid i chi dalu'r bobl sy'n cefnogi'r rhwydwaith, ond yn y blockchain mae'r angen am gomisiwn wedi'i brofi mor argyhoeddiadol fel nad oes unrhyw amheuaeth ynghylch ei angen.
  6. Mae gan blockchains modern y gallu i weithredu rhesymeg busnes, a elwir yn y blockchain yn Gontractau Clyfar. Mae rhesymeg contractau smart yn cael ei gweithredu mewn amrywiol ieithoedd lefel uchel.

Nesaf, byddwn yn ystyried yr atebion hyn yn fwy manwl.

Pensaernïaeth Blockchain

Cydrannau Blockchain

Gall pob cyfranogwr lansio ei nod ei hun gyda chopi llawn o'r blockchain (nodyn llawn). Gelwir nodau llawn sy'n gallu cofnodi trafodion ar y blockchain nodau consensws (tyst) neu glowyr (glöwr). Gelwir nodau llawn sydd ond yn gwirio cywirdeb trafodion nodau archwilio (archwiliad). Cleientiaid ysgafn (cleientiaid ysgafn) nid ydynt yn storio copïau llawn o'r blockchain, ond yn rhyngweithio â'r rhwydwaith gan ddefnyddio nodau llawn.
Mae'r rhan fwyaf o ddefnyddwyr yn defnyddio cleientiaid ysgafn neu waledi gwe i wneud trafodion. Mae'r holl nodau wedi'u cysylltu â'i gilydd. Gyda'r set hon o elfennau, mae pensaernïaeth y rhwydwaith yn dod yn fwy sefydlog:

Beth ddylem ni adeiladu blockchain?

Cylch bywyd trafodion

Gadewch i ni edrych ar gylch bywyd y trafodion a'i dorri i lawr fesul darn:

Beth ddylem ni adeiladu blockchain?

Technolegau Blockchain

Gadewch inni edrych yn fanylach ar atebion technegol a'u cysylltiadau â'i gilydd.

Adnabod

Rhaid i bob trafodiad blockchain gael ei lofnodi'n ddigidol. Felly, i gwblhau trafodiad, rhaid i bob cyfranogwr gael pâr allweddol: preifat / cyhoeddus. Weithiau gelwir pâr o allweddi yn waled, oherwydd mae'r allweddi wedi'u cysylltu'n unigryw â chyfeiriad digidol unigryw a chydbwysedd y cyfranogwr. Mewn gwirionedd, dim ond llinynnau o rifau mewn systemau rhif gwahanol yw allweddi a chyfeiriadau. Enghreifftiau o allweddi a chyfeiriadau waled:

Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f
Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba
Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V

I greu llofnod digidol mewn cadwyni bloc, defnyddir algorithm sy'n seiliedig ar gromliniau eliptig: Algorithm Llofnod Digidol Cromlin Elliptic (ECDSA). Er mwyn iddo weithio, mae'r allwedd breifat (rhif 256-bit) fel arfer yn cael ei gymryd ar hap. Mae nifer yr opsiynau allweddol yn 2 i bŵer 256, felly gallwn siarad am yr amhosibl ymarferol o gydweddu gwerthoedd allweddi preifat.

Nesaf, ceir yr allwedd gyhoeddus o'r un preifat trwy luosi ei werth â chyfesurynnau pwynt sydd wedi'i leoli ar y gromlin eliptig, gan arwain at gyfesurynnau pwynt newydd ar yr un gromlin. Mae'r weithred hon yn sicrhau eich bod yn cael pâr allweddol sy'n addas ar gyfer llofnodi trafodion yn ddigidol. Yn olaf, mae cyfeiriad y waled yn deillio'n unigryw o'r allwedd gyhoeddus.

Mae yna lawer o erthyglau gyda manylion am y cryptograffeg a ddefnyddir yn blockchain, er enghraifft: Bitcoin yn gryno - Cryptograffeg

Rhaid i'r allwedd breifat fod yn gwbl gyfrinachol a'i chadw'n ddiogel. Mae'r allwedd gyhoeddus yn hysbys i bawb. Os collir yr allwedd breifat, ni ellir adfer mynediad i'r ased (darnau arian) a bydd yr arian yn cael ei golli am byth. Felly, mae'r dasg o storio allweddi preifat yn ddiogel yn hynod berthnasol, oherwydd Nid yw hwn yn fanc lle gallwch chi bob amser ddod gyda'ch pasbort ac adfer eich cyfrif. Mae yna ddiwydiant cyfan ar gyfer cynhyrchu waledi cripto oer fel y'u gelwir, sy'n debyg i yriannau fflach:

Beth ddylem ni adeiladu blockchain?

neu gallwch ddefnyddio dulliau mwy dibynadwy, er enghraifft, stampio gwerth yr allwedd breifat ar docynnau:

Beth ddylem ni adeiladu blockchain?

Trafodiad

Mae mwy o fanylion am y strwythur trafodion i'w gweld yn yr erthygl Bitcoin yn gryno - Trafodyn. Mae’n bwysig inni ddeall bod gan bob trafodiad y data canlynol o leiaf:

From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - цифровой адрес отправителя
To: 0x367adb7894334678b90аfe7882a5b06f7fbc783a - цифровой адрес получателя
Value: 0.0001 - сумма транзакции
Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef - хэш транзакции

Nesaf, mae'r trafodiad yn cael ei lofnodi gydag allwedd breifat a'i anfon allan (gweler y manylion ar weithrediad y protocol Bitcoin yn gryno-Protocol) i bob nod yn y blockchain sy'n gwirio trafodion am ddilysrwydd. Nid yw'r algorithm dilysu trafodion yn ddibwys ac mae'n cynnwys dau ddwsin o gamau.

Blociau trafodion

Ar ôl gwirio dilysrwydd trafodion, mae nodau'n ffurfio blociau oddi wrthynt. Yn ogystal â thrafodion, mae hash y bloc blaenorol a rhif (cownter Nonce) yn cael eu hysgrifennu i mewn i'r bloc, ac mae hash y bloc cyfredol yn cael ei gyfrifo gan ddefnyddio'r algorithm SHA-256. Rhaid i'r hash fod wedi sefydlu amodau cymhlethdod. Er enghraifft, yn y rhwydwaith Bitcoin, mae anhawster yr hash yn cael ei newid yn awtomatig bob 2 wythnos yn dibynnu ar bŵer y rhwydwaith fel bod bloc yn cael ei gynhyrchu tua unwaith bob 10 munud. Mae'r cymhlethdod yn cael ei bennu gan yr amod canlynol: rhaid i'r hash a ddarganfyddir fod yn llai na nifer a bennwyd ymlaen llaw. Os na fodlonir yr amod hwn, yna ychwanegir 1 at y Nonce, ac ailadroddir y gwaith o gyfrifo'r hash. I ddewis hash, defnyddir y maes Nonce, oherwydd Dyma'r unig ddata yn y bloc y gellir ei newid; rhaid i'r gweddill aros heb ei newid. Rhaid i hash dilys fod â nifer penodol o sero blaenllaw, fel un o'r hashesau go iawn:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Mae dod o hyd i hash yn llwyddiannus yn brawf o'r gwaith a wnaed (Prawf o Waith, PoW) ar gyfer y rhwydweithiau Bitcoin neu Ethereum. Gelwir y broses o ddod o hyd i hashes yn fwyngloddio, yn debyg i gloddio am aur. Mae'r enw yn diffinio hanfod y broses yn eithaf cywir, oherwydd mae yna chwiliad syml o opsiynau, ac os bydd rhywun yn dod o hyd i hash addas, yna lwc yw hyn mewn gwirionedd. Mae fel dod o hyd i nugget aur go iawn mewn tunnell o graig wastraff. Y wobr bloc bellach yw 12.5 BTC ac os ydych chi'n ei luosi â'r gyfradd Bitcoin gyfredol o $ 3900, byddwch chi'n cael mwy na cilogram o aur pur. Mae rhywbeth i frwydro drosto!

Ar ôl dod o hyd i hash yn llwyddiannus, mae'r bloc a'r stwnsh a ddarganfuwyd yn cael eu hysgrifennu i'r blockchain fel y bloc nesaf. Mae mwy o fanylion am strwythur blociau i'w gweld yn yr erthygl Bitcoin yn gryno-Blockchain, ac isod mae diagram symlach:

Beth ddylem ni adeiladu blockchain?

Mae'r blockchain yn dechrau gyda bloc nad oes ganddo stwnsh y bloc blaenorol eto. Dim ond un bloc o'r fath sydd yn y blockchain ac mae ganddo ei enw ei hun bloc Genesis. Mae gan y blociau sy'n weddill yr un strwythur a dim ond yn nifer y trafodion y maent yn wahanol. Gellir gweld trafodion a blociau go iawn sy'n cael eu creu ar hyn o bryd yn Bitcoin neu Ethereum yn Bloc Archwiliwr.

Mae maint y blociau yn Bitcoin wedi'i gyfyngu i 1MB a chydag isafswm o wybodaeth mewn trafodiad o tua 200 bytes, gall uchafswm y trafodion mewn bloc fod tua 6000. O'r fan hon, gyda llaw, mae'n dilyn perfformiad Bitcoin, y mae pawb yn chwerthin arno: mae bloc yn cael ei gynhyrchu tua unwaith bob 10 munud * 60 eiliad = 600 eiliad, sy'n rhoi perfformiad ffurfiol o tua 10 TPS. Er mewn gwirionedd, nid cynhyrchiant yw hwn, ond algorithm gwaith a weithredir yn fwriadol. Yn Ethereum, ar gyfer cystadleuaeth, maent yn syml yn gwneud yr amser cenhedlaeth bloc 15 eiliad. a chynhyrchiant gynyddodd yn ffurfiol. Felly, mewn cadwyni bloc sy'n defnyddio PoW fel consensws, nid yw'n gwneud unrhyw synnwyr i gymharu perfformiad o gwbl, oherwydd mae'n dibynnu'n uniongyrchol ar gymhlethdod y cyfrifiad cache, y gellir ei neilltuo i unrhyw werth.

Ffyrc

Beth sy'n digwydd os, er enghraifft, nifer o nodau dod o hyd i hashes sy'n bodloni'r amodau cymhlethdod, ond yn wahanol o ran gwerth (mewn geiriau eraill, daethant i gonsensws gwahanol) ac ysgrifennodd blociau i'r blockchain? Gawn ni weld sut mae blockchain yn amddiffyn rhag y sefyllfa hon. Yn yr achos hwn, mae fforch fel y'i gelwir yn digwydd, ac mae gan y blockchain ddwy fersiwn o'r gadwyn:

Beth ddylem ni adeiladu blockchain?

Beth sy'n digwydd nesaf? Nesaf, mae rhan o'r rhwydwaith yn dechrau gweithio ar floc N+2 o un gadwyn, a rhan o'r llall:

Beth ddylem ni adeiladu blockchain?

Bydd un o'r blociau hyn yn cael ei ddarganfod yn gynharach a'i anfon at y blockchain, ac yna, yn ôl y rheolau, bydd yn rhaid i'r blockchain newid i gadwyn hirach a chanslo'r holl drafodion o'r bloc amgen:

Beth ddylem ni adeiladu blockchain?

Ar yr un pryd, gall sefyllfa godi pan oedd trafodiad cyfranogwr yn un o'r blociau fforch yn unig, a gafodd ei ganslo. Felly, er mwyn sicrhau bod y trafodiad a ddymunir yn cael ei gofnodi yn y blockchain, mae argymhelliad cyffredinol - cyn ymddiried yn y trafodiad, dylech aros nes bod yr ychydig flociau nesaf yn cael eu hychwanegu at y blockchain. Mae argymhellion ar gyfer faint o flociau i aros am wahanol blockchains yn amrywio. Er enghraifft, ar gyfer y rhwydwaith Bitcoin yr isafswm yw 2 floc, yr uchafswm yw 6.

Bydd yr un llun gyda ffyrch bloc yn cael ei arsylwi yn ystod yr ymosodiad 51% fel y'i gelwir - dyma pan fydd grŵp o lowyr yn ceisio tyfu cadwyn bloc amgen, gan geisio canslo'r gadwyn gyda'u trafodion twyllodrus. Er ar hyn o bryd, yn lle twyll, mae'n fwy proffidiol gwario'ch pŵer ar fwyngloddio gonest.

Consensws

I gofnodi bloc ar y blockchain, rhaid i'r rhwydwaith gyrraedd consensws. Gadewch i ni gofio'r dasg o sicrhau consensws mewn rhwydweithiau cyfathrebu cyfrifiadurol. Mae'r broblem yn cael ei llunio fel tasg y cadfridogion Bysantaidd BFT (Goddefgarwch bai Bysantaidd). Gan hepgor y disgrifiad darluniadwy o broblemau'r fyddin Fysantaidd, gellir llunio'r broblem fel a ganlyn: sut y gall nodau rhwydwaith ddod i ganlyniad cyffredin os gall rhai nodau rhwydwaith eu hystumio'n fwriadol. Mae algorithmau presennol ar gyfer datrys problem BFT yn dangos y gall y rhwydwaith weithredu'n gywir os oes llai nag 1/3 o dwyllwyr. Pam nad yw consensws BFT wedi'i gymhwyso i'r rhwydwaith Bitcoin? Pam roedd angen defnyddio carcharorion rhyfel? Mae yna sawl rheswm:

  • Mae BFT yn gweithio'n dda gyda set fach sefydlog o nodau, ond mewn blockchain cyhoeddus mae nifer y nodau'n anrhagweladwy ac, ar ben hynny, gellir troi nodau ymlaen ac i ffwrdd ar hap.
  • Mae angen ysgogi pobl i lansio nodau blockchain. I wneud hyn, rhaid i bobl gael eu gwobrwyo. Yn BFT nid oes dim byd ffurfiol i dderbyn gwobr amdano, ond mae'r hyn y mae'r wobr ar ei gyfer mewn PoW yn glir i bawb ar lefel reddfol: ar gyfer y trydan a ddefnyddir gan y prosesydd yn y broses o ddod o hyd i'r stwnsh bloc.

Yn ogystal â PoW, mae sawl consensws arall a ddefnyddir mewn cadwyni bloc modern, er enghraifft:

  • PoS (Proof-of-Stake) - ar y blockchain Hyperledger
  • DPoS (Prawf-o-Stake Dirprwyedig) - ar y blockchain BitShares
  • Addasiadau BFT: SBFT (BFT Syml) a PBFT (BFT Ymarferol), er enghraifft mewn blockchain Exonwm

Gadewch i ni aros ychydig ar y consensws PoS, oherwydd ... PoS a'i amrywiaethau sydd fwyaf cyffredin mewn cadwyni bloc preifat. Pam yn breifat? Ar y naill law, mae nodweddion PoS yn well o'u cymharu â PoW, oherwydd Er mwyn sicrhau consensws, mae angen llai o adnoddau cyfrifiadurol, sy'n golygu bod cyflymder ysgrifennu data i'r blockchain yn cynyddu. Ond ar y llaw arall, mae gan PoS fwy o gyfleoedd ar gyfer twyll, felly i niwtraleiddio hyn, rhaid i bawb sy'n cymryd rhan yn y blockchain fod yn hysbys.

Mae consensws PoS yn seiliedig ar ddewis nod a all ysgrifennu bloc gyda thrafodion i'r blockchain yn dibynnu ar faint o arian yn y cyfrif, neu yn hytrach, nid yn y cyfrif, ond yn y cyfochrog, h.y. Po fwyaf o arian sydd gennych fel cyfochrog, y mwyaf tebygol y bydd y rhwydwaith yn dewis eich nod i ysgrifennu bloc. Ni fydd y blaendal yn cael ei ddychwelyd os yw'r bloc yn annilys. Mae hyn yn darparu amddiffyniad rhag twyll. Mae'r amrywiadau canlynol o PoS:

  • Mae'r consensws SRhP Dirprwyedig (DPoS) yn rhannu cyfranogwyr yn “bleidleiswyr” a “dilyswyr”. Mae deiliaid darnau arian (cyfranogwyr pleidleisio) yn dirprwyo eu pŵer i wirio a chofnodi trafodion ar y blockchain i gyfranogwyr eraill. Felly, mae dilyswyr yn gwneud yr holl waith cyfrifiannol ac yn derbyn gwobr amdano, ac mae presenoldeb cyfranogwyr pleidleisio yn gwarantu gonestrwydd dilyswyr, oherwydd gellir eu newid unrhyw bryd.
  • Mae consensws LPoS (Prawf ar Les) yn caniatáu ichi brydlesu'ch arian i nodau eraill fel bod ganddynt well siawns o ddilysu blociau. Hynny. Gallwch dderbyn comisiwn ar gyfer trafodion heb gymryd rhan yn y gwiriad trafodion gwirioneddol a mwyngloddio bloc.

Mae yna nifer o gonsensws eraill nad ydynt yn cael eu defnyddio'n eang eto, byddaf yn eu rhestru yma er gwybodaeth, a gellir dod o hyd i drosolwg o'r algorithmau consensws eu hunain, er enghraifft, yn yr erthygl: Algorithmau Consensws yn Blockchain.

  • PoET (Prawf o Amser a Aeth heibio)
  • PoC (Prawf o Gynhwysedd)
  • PoB (Prawf-o-Llosgi)
  • PoWeight (prawf o bwysau)
  • PoA (Prawf o Weithgaredd) – PoW + PoS
  • PoI (Prawf o Bwysigrwydd)

Modelau dibynadwy a defnyddio cadwyni bloc

Blockchain cyhoeddus

Cynaliadwyedd Cyhoeddus neu enw arall Blockchain heb ganiatâd Cyflawnir hyn trwy ganiatáu i unrhyw un gysylltu a gweld gwybodaeth neu hyd yn oed gysylltu eu nod eu hunain, ac mae ymddiriedaeth yn seiliedig ar gonsensws carcharorion rhyfel.

Blockchain preifat

Preifat neu Blockchain Caniatâd Preifat. Yn y cadwyni bloc hyn, dim ond grŵp penodol o gyfranogwyr (sefydliadau neu bobl) sydd â mynediad at wybodaeth. Mae cadwyni bloc o'r fath yn cael eu hadeiladu gan sefydliadau gyda'r nod o gynyddu budd neu effeithlonrwydd cyffredinol. Sicrheir eu dibynadwyedd gan nodau cyffredin y cyfranogwyr ac algorithmau consensws PoS a BFT.

Consortiwm Blockchain

Mae Consortiwm neu Blockchain a Ganiateir gan y Cyhoedd. Mae'r rhain yn blockchains y gall unrhyw un gysylltu â nhw i'w gweld, ond dim ond gyda chaniatâd cyfranogwyr eraill y gall cyfranogwr ychwanegu gwybodaeth neu gysylltu ei nod. Mae cadwyni bloc o'r fath yn cael eu hadeiladu gan sefydliadau er mwyn cynyddu ymddiriedaeth ar ran cwsmeriaid neu ddefnyddwyr cynhyrchion neu gymdeithas gyfan. Yma, cyflawnir dibynadwyedd hefyd gan bresenoldeb ymddiriedaeth rhwng cyfranogwyr a'r un algorithmau consensws PoS a BFT.

Contractau Smart

Mae Blockchains a weithredwyd ar ôl Bitcoin, i raddau neu'i gilydd, wedi ychwanegu'r gallu i weithredu contractau smart. Yn y bôn, mae contract smart yn drafodiad lle gosodir cod rhaglen i'w weithredu. Mae contractau smart ar rwydwaith Ethereum yn cael eu gweithredu yn yr EVM (Peiriant Rhithwir Ethereum). I ddechrau gweithredu contract smart, rhaid iddo gael ei lansio'n benodol gan drafodiad arall, neu rhaid bodloni'r rhag-amodau ar gyfer cyflawni. Bydd canlyniadau gweithredu'r contract smart hefyd yn cael eu cofnodi yn y blockchain. Mae derbyn data o'r tu allan i'r blockchain yn bosibl, ond yn gyfyngedig iawn.

Pa resymeg busnes y gellir ei gweithredu gan ddefnyddio contract smart? Mewn gwirionedd, nid oes llawer, er enghraifft, gwirio amodau defnyddio data o'r blockchain, newid perchnogion asedau digidol yn dibynnu ar yr amodau hyn, cofnodi data mewn storfa barhaol o fewn y blockchain. Mae'r rhesymeg yn cael ei weithredu mewn iaith lefel uchel arbennig Solidity.

Enghraifft glasurol o ymarferoldeb sy'n cael ei weithredu gan ddefnyddio contractau smart yw cyhoeddi tocynnau ar gyfer ICOs. Er enghraifft, gweithredais gontract smart i gyhoeddi 500 cymedrol AlexToken. Gan dolen yn Etherscan yn

cod ffynhonnell y contract smart yn yr iaith Solidity

pragma solidity ^0.4.23;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
**/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
**/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
**/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
**/
function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
**/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
**/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
**/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
**/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title ERC20Basic interface
* @dev Basic ERC20 interface
**/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
**/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
**/
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
**/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
**/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
**/
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
**/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
**/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
**/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
**/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
**/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
/**
* @title Configurable
* @dev Configurable varriables of the contract
**/
contract Configurable {
uint256 public constant cap = 1000000000*10**18;
uint256 public constant basePrice = 100*10**18; // tokens per 1 ether
uint256 public tokensSold = 0;
uint256 public constant tokenReserve = 500000000*10**18;
uint256 public remainingTokens = 0;
}
/**
* @title CrowdsaleToken 
* @dev Contract to preform crowd sale with token
**/
contract CrowdsaleToken is StandardToken, Configurable, Ownable {
/**
* @dev enum of current crowd sale state
**/
enum Stages {
none,
icoStart, 
icoEnd
}
Stages currentStage;
/**
* @dev constructor of CrowdsaleToken
**/
constructor() public {
currentStage = Stages.none;
balances[owner] = balances[owner].add(tokenReserve);
totalSupply_ = totalSupply_.add(tokenReserve);
remainingTokens = cap;
emit Transfer(address(this), owner, tokenReserve);
}
/**
* @dev fallback function to send ether to for Crowd sale
**/
function () public payable {
require(currentStage == Stages.icoStart);
require(msg.value > 0);
require(remainingTokens > 0);
uint256 weiAmount = msg.value; // Calculate tokens to sell
uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
uint256 returnWei = 0;
if(tokensSold.add(tokens) > cap){
uint256 newTokens = cap.sub(tokensSold);
uint256 newWei = newTokens.div(basePrice).mul(1 ether);
returnWei = weiAmount.sub(newWei);
weiAmount = newWei;
tokens = newTokens;
}
tokensSold = tokensSold.add(tokens); // Increment raised amount
remainingTokens = cap.sub(tokensSold);
if(returnWei > 0){
msg.sender.transfer(returnWei);
emit Transfer(address(this), msg.sender, returnWei);
}
balances[msg.sender] = balances[msg.sender].add(tokens);
emit Transfer(address(this), msg.sender, tokens);
totalSupply_ = totalSupply_.add(tokens);
owner.transfer(weiAmount);// Send money to owner
}
/**
* @dev startIco starts the public ICO
**/
function startIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
currentStage = Stages.icoStart;
}
/**
* @dev endIco closes down the ICO 
**/
function endIco() internal {
currentStage = Stages.icoEnd;
// Transfer any remaining tokens
if(remainingTokens > 0)
balances[owner] = balances[owner].add(remainingTokens);
// transfer any remaining ETH balance in the contract to the owner
owner.transfer(address(this).balance); 
}
/**
* @dev finalizeIco closes down the ICO and sets needed varriables
**/
function finalizeIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
endIco();
}
}
/**
* @title LavevelToken 
* @dev Contract to create the Lavevel Token
**/
contract AlexToken is CrowdsaleToken {
string public constant name = "AlexToken";
string public constant symbol = "ALT";
uint32 public constant decimals = 18;
}

a'r gynrychiolaeth ddeuaidd fel y mae'r rhwydwaith yn ei weld

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

Mae mwy o fanylion am gontractau smart i'w gweld yn yr erthygl: Beth yw contractau smart yn Ethereum.

Casgliad

Rydym wedi rhestru'r technolegau y mae cadwyni bloc modern yn cael eu hadeiladu arnynt a sut maent wedi'u cysylltu â'i gilydd. Nawr, gadewch i ni ffurfio pa broblemau y gellir eu datrys gan ddefnyddio blockchain, a pha atebion fydd, ar y gorau, yn aneffeithiol. Felly, nid oes angen defnyddio blockchain os:

  • Cyflawnir trafodion mewn amgylchedd y gellir ymddiried ynddo;
  • Nid yw presenoldeb comisiwn o gyfryngwyr yn gwaethygu bywyd y cyfranogwyr;
  • Nid oes gan gyfranogwyr eiddo y gellir ei gynrychioli fel asedau digidol;
  • Nid oes unrhyw ddosbarthiad mewn asedau digidol, h.y. dim ond un cyfranogwr sy'n berchen ar y gwerth neu'n ei gyflenwi.

Beth sydd gan y dyfodol i blockchain? Nawr ni allwn ond dyfalu ar ffyrdd posibl ar gyfer datblygu technolegau blockchain:

  • Bydd Blockchain yn dod yn yr un dechnoleg cronfa ddata gyffredin ag, er enghraifft, SQL neu NoSQL ar gyfer datrys ei ystod benodol o broblemau;
  • Bydd Blockchain yn dod yn brotocol eang, fel HTTP ar gyfer y Rhyngrwyd;
  • Bydd Blockchain yn dod yn sail i system ariannol a gwleidyddol newydd ar y blaned!

Yn y rhan nesaf byddwn yn edrych ar ba blockchains sy'n bodoli ar hyn o bryd a pham eu bod yn cael eu defnyddio mewn diwydiannau gwahanol.

Dim ond y dechrau yw hwn!

Ffynhonnell: hab.com

Ychwanegu sylw