Wat solle mir e Blockchain bauen?

Déi ganz Geschicht vun der Mënschheet ass e kontinuéierleche Prozess fir Ketten lass ze ginn an nei ze kreéieren, nach méi staark. (Anonym Auteur)

Analyséiere vill Blockchain Projeten (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin, etc.), Ech verstinn datt aus technescher Siicht all op déiselwecht Prinzipien gebaut sinn. Blockchains erënneren un Haiser, déi, trotz all der Varietéit vun Designen, Dekor an Zwecker, e Fundament, Maueren, Daach, Fënsteren, Dieren hunn, déi op bestëmmte Weeër matenee verbonne sinn. A wann Dir d'Basisprinzipien vum Baudesign versteet an d'Eegeschafte vun de benotzte Materialien kennt, da kënnt Dir den Zweck vun engem bestëmmten Haus bestëmmen. De Moment ass eng Situatioun mat Blockchain entstanen, datt jiddereen doriwwer héieren huet, awer wéineg Leit verstinn d'Architektur an d'Prinzipien vun der Operatioun. Dofir gëtt et e Mëssverständnis firwat a wéi et Sënn mécht Blockchain Technologien ze benotzen.

An dësem Artikel analyséiere mir d'Eegeschafte a Prinzipien gemeinsam fir all Blockchains. Als nächst kucke mer d'Problemer déi mat der Blockchain geléist kënne ginn a fir d'Material ze verstäerken, loosst eis eng kleng awer real Blockchain op eiser virtueller Säit bauen!

Also, loosst eis erënneren wéi eng Probleemer Blockchain am Ufank geléist huet.

Ech si sécher datt vill iwwer eng verdeelt, dezentraliséiert, ëffentlech an onverännerbar Datebank soen. Awer firwat war dat alles néideg?

Ech léiwer ufänken all Technologie ze studéieren andeems Dir d'Standarden liest, well all Artikelen a Bicher iwwer dat Thema dat studéiert gëtt baséiert op hinnen. Awer et gi momentan keng Blockchain Standards; ISO huet nëmmen erstallt Comitéen fir hir Entwécklung. De Moment huet all ëffentlech Blockchain Projet säin eegent Wäissbuch Dokument, wat am Fong eng technesch Spezifizéierung ass. Den éischten ëffentlech bekannte Blockchain Projet ass de Bitcoin Netzwierk. Gitt op déi offiziell Websäit vum Netz an kuckt wou et alles ugefaang huet.

Blockchain Challenge

Also, d'Aufgab, déi Blockchain am Bitcoin Pionéiernetz geléist huet, ass e vertrauenswürdege Transfer vum Besëtz vun digitale Verméigen (Verméigen) an engem net-vertrauenswürdege Ëmfeld ouni Intermédiairen auszeféieren. Zum Beispill, am Bitcoin Netz ass en digitale Verméigen bitcoin digital Mënzen. An all technesch Léisunge vu Bitcoin an aner Blockchaine kommen erof fir dëse Problem ze léisen.

Probleemer déi Blockchain léist

Ugeholl datt eng gewësse Finanzorganisatioun seet datt et en Netzwierk ronderëm d'Welt gebaut huet mat der Hëllef vun deem et méiglech ass Suen un all Persoun ze transferéieren. Gleefs du hatt? Wann dës Organisatioun Visa oder MasterCard ass, wahrscheinlech wäert Dir et gleewen, mä wann, relativ gesinn, AnonymousWorldMoney, Dir wäert wahrscheinlech net. Firwat? Mee well mir wësse ganz gutt wéi verdeelt Systemer vu private Betriber gemaach ginn, fir wéi eng Zwecker, a wat dat ka féieren. Loosst eis d'Problemer vun esou Systemer méi no kucken a wéi se mat Blockchain Technologien geléist kënne ginn.

Loosst eis soen datt am bedingten AnonymousWorldMoney Serveren mat Datenbanken sinn, an et ass gutt wann et e puer vun hinnen a verschiddenen Datenzentere sinn. Wann de Sender Sue transferéiert, gëtt eng Transaktioun registréiert, déi op all Server replizéiert gëtt, an d'Suen erreecht den Empfänger.

Wat solle mir e Blockchain bauen?

An enger idealer Welt funktionnéiert dëst Schema super, awer an eis entstinn déi folgend Probleemer:

  1. De Problem vun Identifikatioun Participanten op der enger Säit an de Besoin fir Anonymitéit vun Transaktiounen op der anerer. Déi. Dir musst Sue fir e spezifeschen Empfänger transferéieren an esou datt keen iwwer dës Transaktioun weess ausser d'Participanten an der Transaktioun. Banken hunn Kontonummeren a Bankkaarte verbonne mat enger spezifescher Persoun oder juristescher Entitéit, a Bankgeheimnis schützt Transaktiounsinformatioun. A wien garantéiert datt de bedingte AnonymousWorldMoney keng perséinlech Donnéeën an Transaktiounsinformatioune fir seng eegen Zwecker benotzt?
  2. Wéi sécherzestellen, datt den Destinataire genee de Betrag kritt, deen him transferéiert gouf? Relativ gesinn huet de Sender $100 iwwerginn, an den Empfänger krut $10. De Sender kënnt an den AnonymousWorldMoney Büro mat sengem Empfang, an de Beamten weist seng Versioun, wou et geschriwwen ass datt de Sender nëmmen $10 iwwerginn huet.
  3. De Problem vun engem net vertrauenswürdege Ëmfeld, zum Beispill, e Scam genannt Duebelausgaben. En skrupellosen Participant kann säi Gläichgewiicht e puer Mol verbréngen bis d'Bezuelung op all Server replizéiert gëtt. CAP-Theorem, natierlech, keen annuléiert, an Accord wäert schlussendlech erreecht ginn, mee een kritt keng Sue fir Servicer oder Wueren gëtt. Dofir, wann et kee komplette Vertrauen an d'Bezuelungsorganisatioun oder d'Participanten an Transaktiounen ass, ass et néideg en Netz ze bauen baséiert net op Vertrauen, mee op Kryptografie.
  4. Conditional AnonymousWorldMoney huet eng endlech Zuel vu Serveren, déi onbedéngt oder wéinst béiswëlleger Absicht net verfügbar kënne ginn.
  5. AnonymousWorldMoney wäert seng eege konkret Kommissioun huelen.
  6. Méiglechkeet vun Kontroll. Wärend der Operatioun vu Bitcoin huet sech erausgestallt datt d'Leit net nëmmen Mënzen unenee wëllen transferéieren, awer och verschidde Konditioune fir d'Transaktioun kontrolléieren, programméiere Aarbechtsszenarien, automatesch Aktiounen ausféieren ofhängeg vun de Konditiounen, etc.

Wéi Blockchain dës Probleemer léist

  1. D'Identifikatioun vun de Participanten gëtt duerch e Paar Schlësselen duerchgefouert: privat an ëffentlech, an den digitale Ënnerschrëft Algorithmus identifizéiert de Sender an den Empfänger eenzegaarteg, léisst hir Identitéiten anonym.
  2. Transaktioune ginn a Blocken gesammelt, den Hash vum Block gëtt berechent an an den nächste Block geschriwwe. Dës Sequenz vun Opnamen Hashen a Blocken gëtt der Blockchain Technologie säin Numm, an et mécht et och onméiglech fir onmerkbar ze änneren / ze läschen Blocken oder eenzel Transaktioune vu Blocken. Also, wann eng Transaktioun am Blockchain abegraff ass, kënnt Dir sécher sinn datt seng Donnéeën onverännert bleiwen.
  3. Bedruch mat duebel Ausgaben gëtt verhënnert andeems en Netzkonsens erreecht gëtt iwwer wéi eng Donnéeën als gëlteg ugesi ginn a wéi eng ze entwerfen. Am Bitcoin Netz gëtt de Konsens duerch Beweis vun der Aarbecht (PoW) erreecht.
  4. D'Zouverlässegkeet vum Netz gëtt erreecht duerch d'Tatsaach datt de Blockchain ëffentlech ass, wou all Participant säin eegene Node kann lafen, eng komplett Kopie vum Blockchain kréien an och onofhängeg ufänken Transaktiounen op Korrektheet ze kontrolléieren. Et sollt bemierkt datt modern Blockchainen et méiglech maachen net nëmmen ëffentlech (oppen), awer och privat (zougemaach) Blockchainen ze bauen, wéi och d'Benotzung vu kombinéierte Schemaen.
  5. De Blockchain wäert d'Kommissiounen net komplett lass ginn, well ... Dir musst d'Leit bezuelen, déi d'Netzwierk ënnerstëtzen, awer am Blockchain ass de Besoin fir eng Kommissioun sou iwwerzeegend bewisen datt et keen Zweiwel iwwer seng Noutwennegkeet ass.
  6. Modern Blockchains hunn d'Fäegkeet fir Geschäftslogik ëmzesetzen, déi am Blockchain Smart Contracts genannt gëtt. D'Logik vu Smart Kontrakter gëtt a verschiddenen héije Sproochen ëmgesat.

Als nächst wäerte mir dës Léisunge méi detailléiert betruechten.

Blockchain Architektur

Blockchain Komponenten

All Participant kann hiren eegene Node mat enger voller Kopie vum Blockchain (voll Node) starten. Voll Noden, déi Transaktiounen op der Blockchain ophuelen kënnen, ginn genannt Konsens Noden (Zeien) oder Miner (Miner). Voll Wirbelen, déi nëmmen d'Korrektheet vun Transaktiounen iwwerpréiwen, ginn genannt Audit Noden (Audit). Liicht Clienten (Liicht Clienten) späicheren net voll Exemplare vun der Blockchain, awer interagéiere mam Netz mat vollen Noden.
Déi meescht Benotzer benotze liicht Clienten oder Web Portemonnaien fir Transaktiounen ze maachen. All Node si matenee verbonnen. Mat dësem Set vun Elementer gëtt d'Netzarchitektur méi stabil:

Wat solle mir e Blockchain bauen?

Transaktioun Liewenszyklus

Loosst eis den Transaktiounsliewenszyklus kucken a Stéck fir Stéck opbriechen:

Wat solle mir e Blockchain bauen?

Blockchain Technologien

Loosst eis méi detailléiert iwwer technesch Léisungen an hir Verbindunge matenee wunnen.

Identifikatioun

All Blockchain Transaktioun muss digital ënnerschriwwe ginn. Dofir, fir eng Transaktioun ofzeschléissen, muss all Participant e Schlësselpaar hunn: privat / ëffentlech. Heiansdo gëtt e Paar Schlësselen Portemonnaie genannt, well d'Schlëssele sinn eenzegaarteg mat der eenzegaarteger digitaler Adress vum Participant a Gläichgewiicht assoziéiert. A Wierklechkeet, Schlësselen an Adressen si just Saiten vun Zuelen a verschiddenen Zuelensystemer. Beispiller vu Schlësselen a Portemonnaie Adressen:

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

Fir eng digital Ënnerschrëft a Blockchainen ze kreéieren, gëtt en Algorithmus baséiert op elliptesch Kéiren benotzt: Elliptic Curve Digital Signature Algorithm (ECDSA). Fir datt et funktionnéiert, gëtt de private Schlëssel (256-Bit Zuel) normalerweis zoufälleg geholl. D'Zuel vun de Schlësseloptiounen ass 2 fir d'Kraaft vun 256, also kënne mir iwwer déi praktesch Onméiglechkeet schwätzen fir d'Wäerter vu private Schlësselen ze passen.

Als nächst gëtt den ëffentleche Schlëssel vum private kritt andeems säi Wäert mat de Koordinate vun engem Punkt op der elliptescher Curve multiplizéiert gëtt, wat zu de Koordinate vun engem neie Punkt op der selwechter Curve resultéiert. Dës Aktioun garantéiert datt Dir e Schlësselpaar kritt gëeegent fir digital Transaktiounen z'ënnerschreiwen. Schlussendlech ass d'Portemonnaie Adress eenzegaarteg aus dem ëffentleche Schlëssel ofgeleet.

Et gi vill Artikele mat Detailer iwwer d'Kryptographie déi a Blockchain benotzt gëtt, zum Beispill: Bitcoin an enger Nossschuel - Kryptographie

De private Schlëssel muss strikt vertraulech sinn a sécher gehale ginn. Den ëffentleche Schlëssel ass jidderee bekannt. Wann de private Schlëssel verluer ass, kann den Zougang zum Verméigen (Mënzen) net restauréiert ginn an d'Sue ginn fir ëmmer verluer. Dofir ass d'Aufgab fir privat Schlësselen sécher ze späicheren extrem relevant, well Dëst ass keng Bank wou Dir ëmmer mat Ärem Pass kënnt kommen an Äre Kont restauréieren. Et gëtt eng ganz Industrie fir d'Produktioun vu sougenannte kale Krypto Portemonnaie, ähnlech wéi Flash Drive:

Wat solle mir e Blockchain bauen?

oder Dir kënnt méi zouverlässeg Methoden benotzen, zum Beispill, de Wäert vum private Schlëssel op Tokens stempelen:

Wat solle mir e Blockchain bauen?

Transaktiounen

Méi Detailer iwwert d'Transaktioun Struktur kann am Artikel fonnt ginn Bitcoin an enger Nossschuel - Transaktioun. Et ass wichteg fir eis ze verstoen datt all Transaktioun op d'mannst déi folgend Donnéeën huet:

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

Als nächst gëtt d'Transaktioun mat engem private Schlëssel ënnerschriwwen a geschéckt (kuckt Detailer iwwer d'Operatioun vum Protokoll Bitcoin an enger Nossschuel-Protokoll) un all Noden an der Blockchain déi Transaktioune fir Gültegkeet kontrolléieren. Den Transaktiounsverifizéierungsalgorithmus ass net trivial an enthält zwee Dosen Schrëtt.

Transaktiounsblocken

Nodeems Dir d'Gëltegkeet vun den Transaktiounen iwwerpréift hutt, bilden d'Noden Blöcke vun hinnen. Zousätzlech zu Transaktiounen ginn den Hash vum fréiere Block an eng Zuel (Nonce counter) an de Block geschriwwe, an den Hash vum aktuelle Block gëtt mam SHA-256 Algorithmus berechent. Den Hash muss Komplexitéitsbedéngungen etabléiert hunn. Zum Beispill, am Bitcoin Netz, gëtt d'Schwieregkeet vum Hash automatesch all 2 Wochen ofhängeg vun der Kraaft vum Netz geännert, sou datt e Block ongeféier eemol all 10 Minutten generéiert gëtt. D'Komplexitéit gëtt vun der folgender Konditioun festgeluegt: den Hash fonnt muss manner sinn wéi eng virbestëmmten Zuel. Wann dës Bedingung net erfëllt ass, gëtt 1 an d'Nonce bäigefüügt, an d'Aarbecht fir den Hash ze berechnen gëtt widderholl. Fir en Hash ze wielen, gëtt d'Nonce Feld benotzt, well Dëst sinn déi eenzeg Daten am Block, déi geännert kënne ginn; de Rescht muss onverännert bleiwen. E gültege Hash muss eng gewëssen Unzuel vu féierende Nullen hunn, sou wéi ee vun de realen Hashen:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Erfollegräich en Hash ze fannen ass Beweis vun der Aarbecht gemaach (Proof-of-Work, PoW) fir d'Bitcoin oder Ethereum Netzwierker. De Prozess fir Hashes ze fannen gëtt Biergbau genannt, ähnlech wéi Goldofbau. Den Numm definéiert ganz genee d'Essenz vum Prozess, well et gëtt eng einfach Sich no Optiounen, a wann een e passenden Hash fënnt, dann ass dat wierklech Gléck. Et ass wéi wann Dir e richtege Goldklump an Tonnen Offallrock fannt. D'Blockbelounung ass elo 12.5 BTC a wann Dir se mat der aktueller Bitcoin Taux vun $3900 multiplizéiert, kritt Dir méi wéi e Kilogramm purem Gold. Et gëtt eppes fir ze kämpfen!

Nodeems Dir en Hash erfollegräich fonnt hutt, ginn de Block an de fonnt Hash selwer an de Blockchain als nächste Block geschriwwe. Méi Detailer iwwer d'Struktur vun de Blocken fannt Dir am Artikel Bitcoin an enger Nossschuel - Blockchain, an hei drënner ass e vereinfacht Diagramm:

Wat solle mir e Blockchain bauen?

De Blockchain fänkt mat engem Block un deen nach net den Hash vum fréiere Block huet. Et gëtt nëmmen een esou Block am Blockchain an huet säin eegenen Numm Genesis Block. Déi reschtlech Blöcke hunn déiselwecht Struktur an ënnerscheede sech nëmmen an der Unzuel vun Transaktiounen. Real Transaktiounen a Blocken, déi aktuell a Bitcoin oder Ethereum erstallt ginn, kënne gekuckt ginn Block Explorer.

D'Gréisst vun de Blocken am Bitcoin ass limitéiert op 1MB a mat engem Minimum vun Informatioun an enger Transaktioun vu ronn 200 Bytes, kann déi maximal Unzuel vun Transaktiounen an engem Block ongeféier 6000 sinn. Vun hei, iwwregens, follegt d'Performance vu Bitcoin, déi jidderee laacht: e Block gëtt ongeféier eemol all 10 Minutten generéiert * 60 Sekonnen = 600 Sekonnen, wat eng formell Leeschtung vun ongeféier 10 TPS gëtt. Och wann et tatsächlech net Produktivitéit ass, awer e bewosst implementéierten Algorithmus vun der Aarbecht. Am Ethereum, fir Konkurrenz, hunn se einfach d'Blockgeneratiounszäit 15 Sekonnen gemaach. an d'Produktivitéit formell eropgaang. Dofir, a Blockchainen déi PoW als Konsens benotzen, mécht et kee Sënn fir d'Leeschtung iwwerhaapt ze vergläichen, well et hänkt direkt vun der Komplexitéit vun der Cache-Berechnung of, déi zu all Wäert zougewisen ka ginn.

Gabel

Wat geschitt wann, zum Beispill, e puer Noden Hashes fonnt hunn, déi d'Komplexitéitsbedéngungen entspriechen, awer ënnerschiddlech am Wäert sinn (an anere Wierder, si koumen zu verschiddene Konsens) an hunn Blocken op d'Blockchain geschriwwen? Loosst eis kucken wéi Blockchain géint dës Situatioun schützt. An dësem Fall geschitt eng sougenannte Gabel, an de Blockchain huet zwou Versioune vun der Kette:

Wat solle mir e Blockchain bauen?

Wat geschitt dann? Als nächst fänkt en Deel vum Netz un de Block N + 2 vun enger Kette ze schaffen, an en Deel vun engem aneren:

Wat solle mir e Blockchain bauen?

Ee vun dëse Blocke gëtt fréier fonnt an an d'Blockchain geschéckt, an dann, no de Regelen, muss de Blockchain op eng méi laang Kette wiesselen an all Transaktioune vum alternativen Block annuléieren:

Wat solle mir e Blockchain bauen?

Zur selwechter Zäit kann eng Situatioun entstoen, wann d'Transaktioun vun engem Participant nëmmen an engem vun de Gabelblocken war, déi annuléiert gouf. Dofir, fir sécher ze sinn datt déi gewënscht Transaktioun an der Blockchain opgeholl gëtt, gëtt et eng allgemeng Empfehlung - ier Dir d'Transaktioun vertraut, sollt Dir waarden bis déi nächst puer Blocks an d'Blockchain bäigefüügt ginn. Empfehlungen fir wéi vill Blocks fir verschidde Blockchainen ze waarden variéieren. Zum Beispill, fir de Bitcoin Netz ass de Minimum 2 Blocks, de Maximum ass 6.

Datselwecht Bild mat Blockgabel gëtt während der sougenannter 51% Attack beobachtet - dëst ass wann e Grupp vu Miner probéiert eng alternativ Blockkette ze wuessen, déi d'Kette mat hire betrügereschen Transaktiounen ofbriechen. Obwuel am Moment, amplaz Bedruch, ass et méi rentabel Är Muecht op éierleche Biergbau ze verbréngen.

Konsens

Fir e Block op der Blockchain opzehuelen, muss de Reseau e Konsens erreechen. Loosst eis d'Aufgab erënneren fir Konsens an Computerkommunikatiounsnetzwierker z'erreechen. De Problem ass formuléiert als Aufgab vun de byzantinesche Genereel BFT (Byzantinesch Feelertoleranz). Ausgefall vun der pittoreske Beschreiwung vun de Problemer vun der byzantinescher Arméi, kann de Problem wéi follegt formuléiert ginn: wéi kann Reseau Wirbelen zu engem gemeinsame Resultat kommen, wann e puer Reseau Wirbelen se bewosst verzerren kann. Bestehend Algorithmen fir de BFT-Problem ze léisen weisen datt d'Netzwierk korrekt funktionéiere kann wann et manner wéi 1/3 vu Bedruch ass. Firwat ass de BFT Konsens net op de Bitcoin Netz applizéiert ginn? Firwat war et néideg PoW ze benotzen? Et gi verschidde Grënn:

  • BFT funktionnéiert gutt mat engem klenge fixe Set vu Wirbelen, awer an engem ëffentleche Blockchain ass d'Zuel vun den Wirbelen onberechenbar an zousätzlech kënnen d'Knäppercher zoufälleg ausschalten an ausschalten.
  • Et ass néideg d'Leit ze motivéieren fir Blockchain Noden ze lancéieren. Fir dëst ze maachen, mussen d'Leit belount ginn. Am BFT gëtt et formell näischt fir eng Belounung ze kréien, awer wat d'Belounung am PoW ass, ass fir jiddereen op engem intuitiven Niveau kloer: fir den Stroum, dee vum Prozessor verbraucht gëtt am Prozess fir de Blockhash ze fannen.

Zousätzlech zu PoW ginn et e puer aner Konsens, déi a modernen Blockchaine benotzt ginn, zum Beispill:

  • PoS (Proof-of-Stake) - op der Blockchain Hyperledger
  • DPoS (Delegéiert Proof-of-Stake) - op der Blockchain BitShares
  • Modifikatioune vu BFT: SBFT (Vereinfacht BFT) a PBFT (Praktesch BFT), zum Beispill am Blockchain Exonum

Loosst eis e bëssen iwwer de PoS Konsens ophalen, well ... Et ass PoS a seng Varietéiten déi am meeschte verbreet sinn a private Blockchainen. Firwat am Privaten? Engersäits sinn d'Charakteristike vu PoS besser am Verglach zum PoW, well Fir Konsens z'erreechen, gi manner Rechenressourcen gebraucht, wat heescht datt d'Geschwindegkeet fir Daten op de Blockchain ze schreiwen eropgeet. Awer op der anerer Säit huet PoS méi Méiglechkeete fir Bedruch, also fir dëst ze neutraliséieren, mussen all Participanten an der Blockchain bekannt sinn.

PoS Konsens baséiert op der Auswiel vun engem Node, deen e Block mat Transaktiounen op d'Blockchain schreiwen kann ofhängeg vun der Betrag vun de Fongen am Kont, oder éischter, net am Kont, mee an der Niewefuerderung, d.h. Wat méi Fongen Dir als Garantie hutt, wat méi wahrscheinlech d'Netzwierk Ären Node wielt fir e Block ze schreiwen. Den Depot gëtt net zréckginn wann de Block ongëlteg ass. Dëst bitt Schutz géint Bedruch. Et ginn déi folgend Variatiounen vu PoS:

  • Den Delegéierte PoS (DPoS) Konsens deelt d'Participanten an "Wieler" a "Validateuren". Mënzhalter (Stëmm Participanten) delegéieren hir Kraaft fir Transaktiounen op der Blockchain z'iwwerpréiwen an un aner Participanten opzehuelen. Also, Validateure maachen all Rechenaarbecht a kréien eng Belounung dofir, an d'Präsenz vun de Wahlbedeelegten garantéiert d'Éierlechkeet vun de Valideuren, well si kënnen zu all Moment geännert ginn.
  • LPoS (Leased Proof-of-Stake) Konsens erlaabt Iech Är Fongen un aner Noden ze lounen, sou datt se eng besser Chance hunn fir Blocken ze validéieren. Dat. Dir kënnt eng Kommissioun fir Transaktiounen kréien ouni un der aktueller Transaktiounsverifizéierung matzemaachen an ze blockéieren.

Et ginn eng Rei vun anere Konsens, déi nach net wäit benotzt ginn, ech lëschte se just hei fir Informatioun, an en Iwwerbléck iwwer d'Konsens Algorithmen selwer fannt Dir zum Beispill am Artikel: Konsens Algorithmen am Blockchain.

  • PoET (Proof-of-Elapsed Time)
  • PoC (Proof-of-Capacity)
  • PoB (Proof-of-Burn)
  • PoWeight (Proof-of-Weight)
  • PoA (Proof-of-Aktivitéit) - PoW + PoS
  • PoI (Proof-of-Importans)

Zouverlässegkeet an Deployment Modeller vu Blockchains

Ëffentlech Blockchain

Nohaltegkeet ëffentlech oder en aneren Numm Erlaabnislos Blockchain Dëst gëtt erreecht andeems jidderengem erlaabt Informatioun ze verbannen an ze gesinn oder souguer hiren eegene Node ze verbannen, a Vertrauen ass op PoW Konsens gebaut.

Privat blockchain

private oder Privat Erlaabt Blockchain. An dëse Blockchainen hunn nëmmen eng gewësse Grupp vu Participanten (Organisatiounen oder Leit) Zougang zu Informatioun. Esou Blockchaine gi vun Organisatiounen gebaut mam Zil de Gesamtvirdeel oder Effizienz ze erhéijen. Hir Zouverlässegkeet ass gesuergt duerch déi gemeinsam Ziler vun de Participanten an de PoS a BFT Konsens Algorithmen.

Blockchain Consortium

Et gi sinn Konsortium oder Ëffentlech Erlaabt Blockchain. Dëst sinn Blockchainen déi jidderee ka verbannen fir ze kucken, awer e Participant kann Informatioun addéieren oder säin Node verbannen nëmme mat der Erlaabnis vun anere Participanten. Esou Blockchaine gi vun Organisatiounen gebaut fir d'Vertrauen vun de Clienten oder Konsumenten vu Produkter oder Gesellschaft als Ganzt ze erhéijen. Hei gëtt Zouverlässegkeet och erreecht duerch d'Präsenz vu Vertrauen tëscht Participanten an déiselwecht PoS a BFT Konsens Algorithmen.

Smart Kontrakter

Blockchains, déi nom Bitcoin implementéiert goufen, hunn, an engem Grad oder aneren, d'Fäegkeet bäigefüügt fir intelligent Kontrakter auszeféieren. Wesentlech ass e Smart Kontrakt eng Transaktioun an där de Programmcode fir d'Ausféierung gesat gëtt. Smart Kontrakter am Ethereum Netz ginn an der EVM (Ethereum Virtual Machine) ausgefouert. Fir e Smart Kontrakt auszeféieren, muss et explizit vun enger anerer Transaktioun gestart ginn, oder d'Viraussetzunge fir d'Ausféierung musse erfëllt sinn. D'Resultater vun der Ausféierung vum Smart Kontrakt ginn och an der Blockchain opgeholl. Date vu baussen der Blockchain ze kréien ass méiglech, awer extrem limitéiert.

Wéi eng Geschäftslogik kann mat engem Smart Kontrakt ëmgesat ginn? Tatsächlech gëtt et net vill, zum Beispill d'Conditioune mat Daten aus der Blockchain ze kontrolléieren, d'Besëtzer vun digitale Verméigen ofhängeg vun dëse Bedéngungen z'änneren, Daten an enger permanenter Späichere bannent der Blockchain opzehuelen. D'Logik gëtt an enger spezieller High-Level Sprooch Solidity ëmgesat.

E klassescht Beispill vu Funktionalitéit déi mat Smart Kontrakter implementéiert gëtt ass d'Emissioun vun Tokens fir ICOs. Zum Beispill hunn ech e Smart Kontrakt ëmgesat fir e bescheidenen 500 AlexToken auszeginn. Vun Link an Etherscan läit

Quellcode vum Smart Kontrakt an der Solidity Sprooch

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;
}

an déi binär Representatioun wéi d'Netzwierk et gesäit

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

Méi Detailer iwwer Smart Kontrakter kënnen am Artikel fonnt ginn: Wat sinn Smart Kontrakter an Ethereum.

Konklusioun

Mir hunn d'Technologien opgelëscht, op deenen modern Blockchaine gebaut sinn a wéi se matenee verbonne sinn. Loosst eis elo formuléieren wéi eng Probleemer mat Blockchain geléist kënne ginn, a wéi eng wäerten am beschten net effikass sinn. Also, Blockchain ze benotzen ass net néideg wann:

  • Transaktioune ginn an engem zouverléissege Ëmfeld duerchgefouert;
  • D'Präsenz vun enger Kommissioun vun Intermédiairen verschlechtert d'Liewen vun de Participanten net;
  • D'Participanten hunn keng Immobilie déi als digital Verméigen vertruede ka ginn;
  • Et gëtt keng Verdeelung an digitale Verméigen, d.h. de Wäert ass am Besëtz oder vun nëmmen engem Participant geliwwert.

Wat hält d'Zukunft fir Blockchain? Elo kënne mir nëmmen iwwer méiglech Weeër fir d'Entwécklung vu Blockchain Technologien spekuléieren:

  • Blockchain wäert déi selwecht gemeinsam Datebank Technologie ginn wéi zum Beispill SQL oder NoSQL fir seng spezifesch Gamme vu Probleemer ze léisen;
  • Blockchain wäert e verbreete Protokoll ginn, wéi HTTP fir den Internet ass;
  • Blockchain wäert d'Basis fir en neie finanziellen a politesche System um Planéit ginn!

Am nächsten Deel wäerte mir kucken wat Blockchains momentan existéieren a firwat se a verschiddenen Industrien benotzt ginn.

Dëst ass just den Ufank!

Source: will.com

Setzt e Commentaire