X'għandna nibnu blockchain?

L-istorja kollha tal-umanità hija proċess kontinwu ta 'jeħles mill-ktajjen u l-ħolqien ta' oħrajn ġodda, saħansitra aktar b'saħħithom. (Awtur anonimu)

L-analiżi ta 'bosta proġetti blockchain (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin, eċċ.), Nifhem li mil-lat tekniku, huma kollha mibnija fuq l-istess prinċipji. Blockchains huma reminixxenti ta 'djar, li, minkejja l-varjetà kollha ta' disinni, dekorazzjoni u skopijiet, għandhom pedament, ħitan, saqaf, twieqi, bibien li huma konnessi ma 'xulxin b'ċerti modi. U jekk tifhem il-prinċipji bażiċi tad-disinn tal-bini u taf il-proprjetajiet tal-materjali użati, allura tista 'tiddetermina l-iskop maħsub ta' dar partikolari. Bħalissa, qamet sitwazzjoni ma 'blockchain li kulħadd sema' dwarha, iżda ftit nies jifhmu l-arkitettura u l-prinċipji tal-operat. Għalhekk, hemm nuqqas ta 'ftehim dwar għaliex u kif jagħmel sens li tuża teknoloġiji blockchain.

F'dan l-artikolu se nanalizzaw il-proprjetajiet u l-prinċipji komuni għall-blockchains kollha. Sussegwentement, ejja nħarsu lejn il-problemi li jistgħu jiġu solvuti bl-użu tal-blockchain u biex insaħħu l-materjal, ejja nibnu blockchain żgħir iżda reali fuq is-sit virtwali tagħna!

Allura, ejja niftakru liema problemi blockchain inizjalment solvuti.

Jiena ċert li ħafna jgħidu dwar database distribwita, deċentralizzata, pubblika u immutabbli. Imma għaliex kien meħtieġ dan kollu?

Nippreferi nibda nistudja kwalunkwe teknoloġija billi naqra l-istandards, peress li l-artikoli u l-kotba kollha dwar is-suġġett taħt studju huma bbażati fuqhom. Iżda bħalissa m'hemm l-ebda standards ta 'blockchain; ISO ħoloq biss kumitati għall-iżvilupp tagħhom. Bħalissa, kull proġett pubbliku ta 'blockchain għandu d-dokument White Paper tiegħu, li essenzjalment huwa speċifikazzjoni teknika. L-ewwel proġett blockchain magħruf pubblikament huwa n-netwerk Bitcoin. Mur fil-websajt uffiċjali tan-netwerk u ħarsa fejn kollox beda.

Isfida Blockchain

Allura, il-kompitu li blockchain solvuti fin-netwerk tal-pijunieri Bitcoin huwa li jwettaq trasferiment fdat ta 'sjieda ta' assi diġitali (assi) f'ambjent mhux fdat mingħajr intermedjarji. Pereżempju, fin-netwerk Bitcoin, assi diġitali huma muniti diġitali bitcoin. U s-soluzzjonijiet tekniċi kollha ta 'Bitcoin u blockchains oħra jinżlu biex isolvu din il-problema.

Problemi li blockchain issolvi

Ejja ngħidu li ċerta organizzazzjoni finanzjarja tgħid li bniet netwerk madwar id-dinja li bl-għajnuna tiegħu huwa possibbli li tittrasferixxi flus lil kwalunkwe persuna. Se temmenha? Jekk din l-organizzazzjoni hija Visa jew MasterCard, x'aktarx li inti temmenha, imma jekk, relattivament, AnonymousWorldMoney, inti probabilment mhux se. Għaliex? Imma għax nafu tajjeb ħafna kif is-sistemi distribwiti jsiru minn kumpaniji privati, għal liema skopijiet, u dan għal xiex jista’ jwassal. Ejja nagħtu ħarsa aktar mill-qrib lejn il-problemi ta 'sistemi bħal dawn u kif jistgħu jiġu solvuti bl-użu ta' teknoloġiji blockchain.

Ejja ngħidu li fil-kondizzjonali AnonymousWorldMoney hemm servers b'databases, u huwa tajjeb jekk ikun hemm bosta minnhom f'ċentri tad-dejta differenti. Meta l-mittent jittrasferixxi flus, tiġi rreġistrata tranżazzjoni, li tiġi replikata għas-servers kollha, u l-flus jaslu lir-riċevitur.

X'għandna nibnu blockchain?

F'dinja ideali, din l-iskema taħdem tajjeb, iżda f'tagħna jinqalgħu l-problemi li ġejjin:

  1. Il-problema tal-identifikazzjoni tal-parteċipanti min-naħa waħda u l-ħtieġa għall-anonimità tat-tranżazzjonijiet min-naħa l-oħra. Dawk. għandek bżonn tittrasferixxi flus lil riċevitur speċifiku u b'tali mod li ħadd ma jkun jaf dwar din it-tranżazzjoni ħlief il-parteċipanti fit-tranżazzjoni. Il-banek għandhom numri tal-kontijiet u kards bankarji marbuta ma’ individwu jew entità legali speċifika, u s-segretezza bankarja tipproteġi l-informazzjoni dwar it-tranżazzjonijiet. U min jiggarantixxi li l-AnonymousWorldMoney kundizzjonali ma jużax data personali u informazzjoni dwar it-tranżazzjonijiet għall-iskopijiet tiegħu stess?
  2. Kif tiżgura li r-riċevitur irċieva eżattament l-ammont li ġie trasferit lilu? Relattivament, il-mittent ittrasferixxa $100, u r-riċevitur irċieva $10. Il-mittent jiġi fl-uffiċċju AnonymousWorldMoney bl-irċevuta tiegħu, u l-iskrivan juri l-verżjoni tiegħu, fejn hemm miktub li l-mittent ittrasferixxa biss $10.
  3. Il-problema ta 'ambjent mhux fdat, per eżempju, scam imsejħa double-spending. Parteċipant bla skrupli jista' jonfoq il-bilanċ tiegħu diversi drabi sakemm il-ħlas jiġi replikat għas-servers kollha. Teorema tal-PAK, ovvjament, ħadd ma kkanċellat, u l-ftehim fl-aħħar mill-aħħar jintlaħaq, iżda xi ħadd mhux se jirċievi flus għal servizzi jew oġġetti pprovduti. Għalhekk, jekk ma jkunx hemm fiduċja sħiħa fl-organizzazzjoni tal-ħlas jew parteċipanti fit-tranżazzjonijiet, allura huwa meħtieġ li jinbena netwerk ibbażat mhux fuq il-fiduċja, iżda fuq il-kriptografija.
  4. Kundizzjonali AnonymousWorldMoney għandu numru finit ta' servers li jistgħu ma jkunux disponibbli b'mod mhux intenzjonat jew minħabba intenzjoni malizzjuża.
  5. AnonymousWorldMoney se tieħu l-kummissjoni tanġibbli tagħha stess.
  6. Possibbiltà ta 'kontroll. Matul it-tħaddim ta 'Bitcoin, irriżulta li n-nies iridu mhux biss jittrasferixxu muniti lil xulxin, iżda wkoll biex jiċċekkjaw diversi kundizzjonijiet għat-tranżazzjoni, xenarji ta' xogħol tal-programm, awtomatikament iwettqu azzjonijiet skont il-kundizzjonijiet, eċċ.

Kif blockchain issolvi dawn il-problemi

  1. L-identifikazzjoni tal-parteċipanti titwettaq bl-użu ta 'par ċwievet: privati ​​u pubbliċi, u l-algoritmu tal-firma diġitali jidentifika b'mod uniku lill-mittent u r-riċevitur, u jħalli l-identitajiet tagħhom anonimi.
  2. It-tranżazzjonijiet jinġabru fi blokki, il-hash tal-blokk jiġi kkalkulat u miktub fil-blokk li jmiss. Din is-sekwenza ta’ reġistrazzjoni ta’ hashes fi blokki tagħti isimha lit-teknoloġija blockchain, u tagħmilha wkoll impossibbli li jinbidel/tħassar b’mod mhux osservat blokki jew tranżazzjonijiet individwali minn blokki. Għalhekk, jekk tranżazzjoni hija inkluża fil-blockchain, tista 'tkun ċert li d-dejta tagħha tibqa' mhux mibdula.
  3. Il-frodi ta' nfiq doppju tiġi evitata billi jintlaħaq kunsens tan-netwerk dwar liema data għandha titqies bħala valida u liema għandha tintrema. Fin-netwerk Bitcoin, il-kunsens jinkiseb permezz ta 'prova ta' xogħol (PoW).
  4. L-affidabbiltà tan-netwerk tinkiseb mill-fatt li l-blockchain hija pubblika, fejn kull parteċipant jista 'jmexxi n-nodu tiegħu stess, jirċievi kopja sħiħa tal-blockchain u, barra minn hekk, jibda b'mod indipendenti jiċċekkja t-tranżazzjonijiet għall-korrettezza. Għandu jiġi nnutat li blockchains moderni jagħmluha possibbli li jinbnew mhux biss blockchains pubbliċi (miftuħa) iżda wkoll privati ​​(magħluq), kif ukoll l-użu ta 'skemi magħquda.
  5. Il-blockchain mhux se jeħles kompletament mill-kummissjonijiet, għax... trid tħallas lin-nies li jappoġġjaw in-netwerk, iżda fil-blockchain il-ħtieġa għal kummissjoni hija ppruvata b'mod tant konvinċenti li m'hemm l-ebda dubju dwar il-ħtieġa tagħha.
  6. Il-blockchains moderni għandhom il-kapaċità li jimplimentaw loġika tan-negozju, li fil-blockchain tissejjaħ Smart Contracts. Il-loġika tal-kuntratti intelliġenti hija implimentata f'diversi lingwi ta 'livell għoli.

Sussegwentement, aħna se nikkunsidraw dawn is-soluzzjonijiet f'aktar dettall.

Arkitettura blockchain

Komponenti Blockchain

Kull parteċipant jista 'jniedi n-nodu tiegħu stess b'kopja sħiħa tal-blockchain (node ​​sħiħ). Nodi sħaħ li jistgħu jirreġistraw transazzjonijiet fuq il-blockchain jissejħu nodi ta' kunsens (xhud) jew minaturi (minatur). Issejħu nodi sħaħ li jivverifikaw biss il-korrettezza tat-tranżazzjonijiet nodi tal-verifika (verifika). Klijenti ħfief (klijenti ħfief) ma jaħżnux kopji sħaħ tal-blockchain, iżda jinteraġixxu man-netwerk billi jużaw nodi sħaħ.
Ħafna utenti jużaw klijenti ħfief jew kartieri tal-web biex jagħmlu tranżazzjonijiet. In-nodi kollha huma konnessi ma 'xulxin. B'dan is-sett ta 'elementi, l-arkitettura tan-netwerk issir aktar stabbli:

X'għandna nibnu blockchain?

Ċiklu tal-ħajja tat-tranżazzjoni

Ejja nħarsu lejn iċ-ċiklu tal-ħajja tat-tranżazzjoni u nkissruh biċċa biċċa:

X'għandna nibnu blockchain?

Teknoloġiji Blockchain

Ejjew noqogħdu f'aktar dettall fuq soluzzjonijiet tekniċi u l-konnessjonijiet tagħhom ma 'xulxin.

Identifikazzjoni

Kull tranżazzjoni blockchain trid tkun iffirmata b'mod diġitali. Għalhekk, biex tlesti tranżazzjoni, kull parteċipant għandu jkollu par ta 'ċavetta: privat / pubbliku. Xi drabi par ċwievet jissejjaħ kartiera, għax iċ-ċwievet huma assoċjati unikament mal-indirizz diġitali uniku u l-bilanċ tal-parteċipant. Fir-realtà, ċwievet u indirizzi huma biss strings ta 'numri f'sistemi ta' numri differenti. Eżempji ta' ċwievet u indirizzi tal-kartiera:

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

Biex tinħoloq firma diġitali fi blockchains, jintuża algoritmu bbażat fuq kurvi ellittiċi: Elliptic Curve Digital Signature Algorithm (ECDSA). Biex taħdem, iċ-ċavetta privata (numru ta '256 bit) ġeneralment tittieħed b'mod każwali. In-numru ta 'għażliet ewlenin huwa 2 għall-qawwa ta' 256, għalhekk nistgħu nitkellmu dwar l-impossibbiltà prattika li tqabbel il-valuri taċ-ċwievet privati.

Sussegwentement, iċ-ċavetta pubblika tinkiseb minn dik privata billi timmultiplika l-valur tagħha bil-koordinati ta 'punt li jinsab fuq il-kurva ellittika, li jirriżulta fil-koordinati ta' punt ġdid fuq l-istess kurva. Din l-azzjoni tiżgura li tikseb par ta 'ċavetta adattat għall-iffirmar diġitali tat-tranżazzjonijiet. Fl-aħħarnett, l-indirizz tal-kartiera huwa derivat b'mod uniku miċ-ċavetta pubblika.

Hemm ħafna artikoli b'dettalji dwar il-kriptografija użata fil-blockchain, pereżempju: Bitcoin fil-qosor - Kriptografija

Iċ-ċavetta privata għandha tkun strettament kunfidenzjali u miżmuma sigura. Iċ-ċavetta pubblika hija magħrufa minn kulħadd. Jekk iċ-ċavetta privata tintilef, l-aċċess għall-assi (muniti) ma jistax jiġi rrestawrat u l-flus jintilfu għal dejjem. Għalhekk, il-kompitu li taħżen b'mod sigur ċwievet privati ​​huwa estremament rilevanti, għaliex Dan mhux bank fejn dejjem tista’ tiġi bil-passaport tiegħek u tirrestawra l-kont tiegħek. Hemm industrija sħiħa għall-produzzjoni tal-hekk imsejħa kartieri kripto kesħin, simili għal flash drives:

X'għandna nibnu blockchain?

jew tista 'tuża metodi aktar affidabbli, pereżempju, ittimbrar il-valur taċ-ċavetta privata fuq tokens:

X'għandna nibnu blockchain?

Tranżazzjonijiet

Aktar dettalji dwar l-istruttura tat-tranżazzjoni jistgħu jinstabu fl-artiklu Bitcoin fil-qosor - Transazzjoni. Huwa importanti għalina li nifhmu li kull tranżazzjoni għandha mill-inqas id-dejta li ġejja:

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

Sussegwentement, it-tranżazzjoni tiġi ffirmata b'ċavetta privata u tintbagħat (ara d-dettalji dwar l-operat tal-protokoll Bitcoin fil-qosor-Protokoll) għan-nodi kollha fil-blockchain li jiċċekkjaw it-tranżazzjonijiet għall-validità. L-algoritmu tal-verifika tat-tranżazzjoni mhuwiex trivjali u jinkludi żewġ tużżani passi.

Blokki tat-tranżazzjonijiet

Wara li tiċċekkja l-validità tat-tranżazzjonijiet, in-nodi jiffurmaw blokki minnhom. Minbarra t-tranżazzjonijiet, il-hash tal-blokk preċedenti u numru (Nonce counter) huma miktuba fil-blokk, u l-hash tal-blokk kurrenti huwa kkalkulat bl-użu tal-algoritmu SHA-256. Il-hash irid ikollu kundizzjonijiet ta' kumplessità stabbiliti. Pereżempju, fin-netwerk Bitcoin, id-diffikultà tal-hash tinbidel awtomatikament kull ġimgħatejn skont il-qawwa tan-netwerk sabiex blokka tiġi ġġenerata bejn wieħed u ieħor darba kull 2 minuti. Il-kumplessità hija ddeterminata mill-kundizzjoni li ġejja: il-hash misjub għandu jkun inqas minn numru predeterminat. Jekk din il-kundizzjoni ma tiġix sodisfatta, allura 10 jiġi miżjud man-Nonce, u x-xogħol tal-kalkolu tal-hash jiġi ripetut. Biex tagħżel hash, jintuża l-qasam Nonce, għaliex Din hija l-unika dejta fil-blokk li tista’ tinbidel; il-bqija trid tibqa’ mhux mibdula. Hash validu għandu jkollu ċertu numru ta 'żeri ewlenin, bħal wieħed mill-hashes reali:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Is-sejba b'suċċess ta 'hash hija prova tax-xogħol magħmul (Prova ta' Xogħol, PoW) għan-netwerks Bitcoin jew Ethereum. Il-proċess tas-sejba tal-hashes jissejjaħ minjieri, simili għall-minjieri tad-deheb. L-isem jiddefinixxi b'mod pjuttost preċiż l-essenza tal-proċess, għaliex hemm tfittxija sempliċi ta 'għażliet, u jekk xi ħadd isib hash adattat, allura dan huwa verament xortih. Qisu ssib nugget tad-deheb reali f’tunnellati ta’ skart ta’ blat. Il-premju tal-blokk issa huwa 12.5 BTC u jekk timmultiplikaha bir-rata Bitcoin attwali ta '$ 3900, ikollok aktar minn kilogramma ta' deheb pur. Hemm xi ħaġa għalxiex tiġġieled!

Wara li ssib b'suċċess hash, il-blokk u l-hash misjub innifsu jinkitbu fil-blockchain bħala l-blokk li jmiss. Aktar dettalji dwar l-istruttura tal-blokki jistgħu jinstabu fl-artiklu Bitcoin fil-qosor-Blockchain, u hawn taħt hemm dijagramma simplifikata:

X'għandna nibnu blockchain?

Il-blockchain jibda bi blokka li għad m'għandhiex il-hash tal-blokk preċedenti. Hemm blokka waħda biss bħal din fil-blockchain u għandha l-isem tagħha stess Genesis block. Il-blokki li jifdal għandhom l-istess struttura u jvarjaw biss fin-numru ta 'tranżazzjonijiet. Tranżazzjonijiet reali u blokki li qed jinħolqu bħalissa f'Bitcoin jew Ethereum jistgħu jitqiesu fihom Blokk Explorer.

Id-daqs tal-blokki f'Bitcoin huwa limitat għal 1MB u b'ammont minimu ta 'informazzjoni fi transazzjoni ta' madwar 200 bytes, in-numru massimu ta 'tranżazzjonijiet fi blokka jista' jkun ta 'madwar 6000. Minn hawn, bil-mod, isegwi l-prestazzjoni ta 'Bitcoin, li kulħadd jidħaq biha: blokka hija ġġenerata madwar darba kull 10 minuti * 60 sekondi = 600 sekondi, li tagħti prestazzjoni formali ta' madwar 10 TPS. Għalkemm fil-fatt, din mhix produttività, iżda algoritmu ta 'xogħol implimentat deliberatament. Fl-Ethereum, għall-kompetizzjoni, huma sempliċement għamlu l-ħin tal-ġenerazzjoni tal-blokk 15-il sekonda. u l-produttività telgħet formalment. Għalhekk, fi blockchains li jużaw PoW bħala kunsens, ma jagħmilx sens li titqabbel il-prestazzjoni għal kollox, għaliex jiddependi direttament fuq il-kumplessità tal-kalkolu tal-cache, li jista 'jiġi assenjat għal kwalunkwe valur.

Frieket

X'jiġri jekk, pereżempju, diversi nodi sabu hashes li jissodisfaw il-kundizzjonijiet ta 'kumplessità, iżda huma differenti fil-valur (fi kliem ieħor, waslu għal kunsensi differenti) u kitbu blokki għall-blockchain? Ejja naraw kif blockchain tipproteġi kontra din is-sitwazzjoni. F'dan il-każ, isseħħ l-hekk imsejħa furketta, u l-blockchain għandha żewġ verżjonijiet tal-katina:

X'għandna nibnu blockchain?

X'jiġri wara? Sussegwentement, parti min-netwerk tibda taħdem fuq blokk N+2 minn katina waħda, u parti minn oħra:

X'għandna nibnu blockchain?

Waħda minn dawn il-blokki tinstab qabel u tintbagħat lill-blockchain, u mbagħad, skont ir-regoli, il-blockchain se jkollha taqleb għal katina itwal u tikkanċella t-tranżazzjonijiet kollha mill-blokk alternattiv:

X'għandna nibnu blockchain?

Fl-istess ħin, tista 'tqum sitwazzjoni meta t-tranżazzjoni ta' parteċipant kienet biss f'wieħed mill-blokki tal-furketta, li ġiet ikkanċellata. Għalhekk, biex tkun ċert li t-tranżazzjoni mixtieqa tiġi rreġistrata fil-blockchain, hemm rakkomandazzjoni ġenerali - qabel ma tafda t-tranżazzjoni, għandek tistenna sakemm il-ftit blokki li jmiss jiġu miżjuda mal-blockchain. Rakkomandazzjonijiet għal kemm blokk li wieħed jistenna għal blockchains differenti jvarjaw. Pereżempju, għan-netwerk Bitcoin il-minimu huwa 2 blokki, il-massimu huwa 6.

L-istess stampa bi frieket tal-blokki se tiġi osservata matul l-hekk imsejjaħ attakk ta '51% - dan huwa meta grupp ta' minaturi jipprova jkabbar katina ta 'blokki alternattiva, li jfittxu li jikkanċellaw il-katina bit-tranżazzjonijiet frawdolenti tagħhom. Għalkemm fil-preżent, minflok frodi, huwa aktar profittabbli li tonfoq il-qawwa tiegħek fuq it-tħaffir onest.

Kunsens

Biex tirreġistra blokka fuq il-blockchain, in-netwerk irid jilħaq kunsens. Ejja niftakru l-kompitu li jinkiseb kunsens fin-netwerks tal-komunikazzjoni tal-kompjuter. Il-problema hija fformulata bħala l-kompitu tal-ġenerali Biżantini BFT (Tolleranza tal-ħsara Biżantina). Billi tħalli barra d-deskrizzjoni pittoreska tal-problemi tal-armata Biżantina, il-problema tista 'tiġi fformulata kif ġej: kif in-nodi tan-netwerk jistgħu jaslu għal riżultat komuni jekk xi nodi tan-netwerk jistgħu jfixkluhom deliberatament. Algoritmi eżistenti għas-soluzzjoni tal-problema tal-BFT juru li n-netwerk jista' jaħdem b'mod korrett jekk ikun hemm inqas minn 1/3 frodisti. Għaliex ma ġiex applikat il-kunsens BFT għan-netwerk Bitcoin? Għaliex kien meħtieġ li tuża PoW? Hemm diversi raġunijiet:

  • BFT jaħdem tajjeb ma 'sett żgħir fiss ta' nodi, iżda fi blockchain pubbliku in-numru ta 'nodi huwa imprevedibbli u, barra minn hekk, in-nodi jistgħu jinxtegħlu u jintfew b'mod każwali.
  • Huwa meħtieġ li n-nies jiġu mmotivati ​​biex iniedu nodi blockchain. Biex tagħmel dan, in-nies iridu jiġu ppremjati. F'BFT formalment m'hemm xejn li jirċievi premju għalih, iżda dak li hu l-premju għal PoW huwa ċar għal kulħadd fuq livell intuwittiv: għall-elettriku kkunsmat mill-proċessur fil-proċess li jsib il-blokk hash.

Minbarra PoW, hemm bosta kunsensi oħra li jintużaw fil-blockchains moderni, pereżempju:

  • PoS (Proof-of-Stake) - fuq il-blockchain Hyperledger
  • DPoS (Delegated Proof-of-Stake) - fuq il-blockchain BitShares
  • Modifiki tal-BFT: SBFT (BFT Simplifikat) u PBFT (BFT Prattiku), pereżempju fil-blockchain Exonum

Ejja noqogħdu ftit fuq il-kunsens PoS, għax... Huwa PoS u l-varjetajiet tiegħu li huma l-aktar mifruxa fil-blockchains privati. Għaliex fil-privat? Min-naħa waħda, il-karatteristiċi ta 'PoS huma aħjar meta mqabbla ma' PoW, għaliex Biex jinkiseb kunsens, huma meħtieġa inqas riżorsi tal-kompjuters, li jfisser li l-veloċità tal-kitba tad-dejta fil-blockchain tiżdied. Iżda min-naħa l-oħra, PoS għandu aktar opportunitajiet għal frodi, għalhekk biex jinnewtralizza dan, il-parteċipanti kollha fil-blockchain għandhom ikunu magħrufa.

Il-kunsens PoS huwa bbażat fuq l-għażla ta 'node li jista' jikteb blokka bi tranżazzjonijiet għall-blockchain skont l-ammont ta 'fondi fil-kont, jew aħjar, mhux fil-kont, iżda fil-kollateral, i.e. Iktar ma jkollok fondi bħala kollateral, iktar ikun probabbli li n-netwerk jagħżel in-nodu tiegħek biex jikteb blokka. Id-depożitu mhux se jiġi rritornat jekk il-blokk ma jkunx validu. Dan jipprovdi protezzjoni kontra l-frodi. Hemm il-varjazzjonijiet li ġejjin tal-PoS:

  • Il-kunsens tal-PoS Delegat (DPoS) jaqsam il-parteċipanti f'"votanti" u "validaturi". Id-detenturi tal-muniti (parteċipanti li jivvotaw) jiddelegaw is-setgħa tagħhom li jivverifikaw u jirreġistraw tranżazzjonijiet fuq il-blockchain lil parteċipanti oħra. Għalhekk, il-validaturi jagħmlu x-xogħol kollu tal-komputazzjoni u jirċievu premju għalih, u l-preżenza tal-parteċipanti tal-votazzjoni tiggarantixxi l-onestà tal-validaturi, minħabba li jistgħu jinbidlu fi kwalunkwe ħin.
  • Il-kunsens LPoS (Leased Proof-of-Stake) jippermettilek tikri l-fondi tiegħek lil nodi oħra sabiex ikollhom ċans aħjar li jivvalidaw il-blokki. Dik. Tista 'tirċievi kummissjoni għat-tranżazzjonijiet mingħajr ma tipparteċipa fil-verifika attwali tat-tranżazzjoni u l-minjieri tal-blokk.

Hemm għadd ta 'kunsensi oħra li għadhom mhumiex użati ħafna, jien ser nilnihom hawn biss għall-informazzjoni, u ħarsa ġenerali lejn l-algoritmi ta' kunsens infushom tista 'tinstab, pereżempju, fl-artikolu: Algoritmi ta' Kunsens fil-Blockchain.

  • PoET (Prova tal-Ħin Għadda)
  • PoC (Prova tal-Kapaċità)
  • PoB (Prova tal-Ħruq)
  • PoWeight (Prova tal-Piż)
  • PoA (Prova tal-Attività) – PoW + PoS
  • PoI (Prova ta' l-Importanti)

Mudelli ta' affidabilità u skjerament ta' blockchains

Blockchain pubbliku

Sostenibbiltà Pubblika jew isem ieħor Blockchain bla permess Dan jinkiseb billi kulħadd jippermetti li jgħaqqad u jara l-informazzjoni jew saħansitra jgħaqqad in-nodu tiegħu stess, u l-fiduċja hija mibnija fuq il-kunsens PoW.

Blockchain privat

Privat jew Blockchain Privat Permess. F'dawn il-blockchains, ċertu grupp ta' parteċipanti biss (organizzazzjonijiet jew nies) għandhom aċċess għall-informazzjoni. Blockchains bħal dawn huma mibnija minn organizzazzjonijiet bil-għan li jżidu l-benefiċċju jew l-effiċjenza ġenerali. L-affidabbiltà tagħhom hija żgurata mill-għanijiet komuni tal-parteċipanti u l-algoritmi ta 'kunsens PoS u BFT.

Konsorzju Blockchain

Hemm Konsorzju jew Blockchain Pubbliku Permess. Dawn huma blockchains li kulħadd jista' jgħaqqad magħhom biex jara, iżda parteċipant jista 'jżid informazzjoni jew jgħaqqad in-node tiegħu biss bil-permess ta' parteċipanti oħra. Blockchains bħal dawn jinbnew minn organizzazzjonijiet sabiex tiżdied il-fiduċja min-naħa tal-klijenti jew tal-konsumaturi tal-prodotti jew tas-soċjetà kollha kemm hi. Hawnhekk, l-affidabbiltà tinkiseb ukoll bil-preżenza ta 'fiduċja bejn il-parteċipanti u l-istess algoritmi ta' kunsens PoS u BFT.

Kuntratti Intelliġenti

Blockchains implimentati wara Bitcoin, sa grad jew ieħor, żiedu l-abbiltà li jeżegwixxu kuntratti intelliġenti. Essenzjalment, kuntratt intelliġenti huwa tranżazzjoni li fiha l-kodiċi tal-programm jitqiegħed għall-eżekuzzjoni. Kuntratti intelliġenti fuq in-netwerk Ethereum huma esegwiti fl-EVM (Ethereum Virtual Machine). Biex tibda tesegwixxi kuntratt intelliġenti, għandu jiġi mniedi b'mod espliċitu minn tranżazzjoni oħra, jew il-prekundizzjonijiet għall-eżekuzzjoni għandhom jiġu sodisfatti. Ir-riżultati tal-eżekuzzjoni tal-kuntratt intelliġenti se jiġu rreġistrati wkoll fil-blockchain. Ir-riċeviment tad-dejta minn barra l-blockchain huwa possibbli, iżda estremament limitat.

Liema loġika tan-negozju tista' tiġi implimentata bl-użu ta' kuntratt intelliġenti? Fil-fatt, m'hemmx ħafna, pereżempju, verifika tal-kundizzjonijiet bl-użu ta 'dejta mill-blockchain, tibdil tas-sidien ta' assi diġitali skont dawn il-kundizzjonijiet, reġistrazzjoni tad-dejta f'ħażna permanenti fi ħdan il-blockchain. Il-loġika hija implimentata f'lingwa speċjali ta 'livell għoli Solidità.

Eżempju klassiku ta 'funzjonalità li hija implimentata bl-użu ta' kuntratti intelliġenti huwa l-ħruġ ta 'tokens għall-ICOs. Pereżempju, implimentajt kuntratt intelliġenti biex noħroġ AlexToken modest ta '500. Permezz link f'Etherscan huwa

kodiċi tas-sors tal-kuntratt intelliġenti fil-lingwa 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;
}

u r-rappreżentazzjoni binarja kif jaraha n-netwerk

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

Aktar dettalji dwar kuntratti intelliġenti jistgħu jinstabu fl-artiklu: X'inhuma l-kuntratti intelliġenti fl-Ethereum.

Konklużjoni

Elenkajna t-teknoloġiji li fuqhom jinbnew blockchains moderni u kif huma konnessi ma 'xulxin. Issa ejja nifformulaw liema problemi jistgħu jiġu solvuti bl-użu ta 'blockchain, u liema soluzzjonijiet se jkunu, fl-aħjar, ineffettivi. Għalhekk, l-użu ta 'blockchain mhuwiex meħtieġ jekk:

  • It-tranżazzjonijiet jitwettqu f'ambjent ta' fiduċja;
  • Il-preżenza ta 'kummissjoni ta' intermedjarji ma taggravax il-ħajja tal-parteċipanti;
  • Il-parteċipanti m'għandhomx proprjetà li tista' tiġi rappreżentata bħala assi diġitali;
  • M'hemm l-ebda distribuzzjoni f'assi diġitali, i.e. il-valur huwa proprjetà jew ipprovdut minn parteċipant wieħed biss.

X'jagħmel il-futur għall-blockchain? Issa nistgħu biss nispekulaw dwar modi possibbli għall-iżvilupp tat-teknoloġiji blockchain:

  • Blockchain se ssir l-istess teknoloġija komuni tad-database bħal, pereżempju, SQL jew NoSQL biex issolvi l-firxa speċifika ta 'problemi tagħha;
  • Blockchain se jsir protokoll mifrux, bħal HTTP huwa għall-Internet;
  • Blockchain se ssir il-bażi għal sistema finanzjarja u politika ġdida fuq il-pjaneta!

Fil-parti li jmiss se nħarsu lejn liema blockchains jeżistu bħalissa u għaliex jintużaw f'industriji differenti.

Dan huwa biss il-bidu!

Sors: www.habr.com

Żid kumment