ETHEREUM – Kryptomena, ktorá prechádza tým nahorúcejším peklom

Ethereum je v súčasnosti (ešte stále) druhá najsilnejšia kryptomena po Bitcoine s celkovou kapitalizáciou (v čase písania článku) 900 mil USD (cca 800 MIL EUR). Je podobne ako Bitcoin založená na techológií blockchain a zároveň decentralizovaný virtuálny stroj pre beh tzv. “smart contracts” ( “chytrých kontraktov”, ďalej len kontraktov). Tieto kontrakty možno vnímať ako bloky programového kódu, ktoré sú vykonávané celou sieťou overiteľným a nezmanipulovatelným spôsobom. Raz vložené do siete potom uskutočňujú zadaný, turingovsky kompletný program do doby, pokiaľ im nedôjde Éter (jednotka kryptomeny). Éter môže byť ďalej doplňovaný zaslaním od užívateľov, alebo z iných kontraktov. Kontrakty teda môžu ďalej posielať správy či Ether ostatným užívateľom, alebo kontraktom. Autorom Etherea je len 22 ročný ruský programátor Vitalik Buterin, ktorý koncept prvýkrát opísal ku koncu roka 2013 spolu s Gavinom Woodom, ktorý koncept sformoval na začiatku roka 2014 v takzvanom Yellow Paper. Sieť je spustená pre užívateľov od 30. júla 2015 v režime Frontier (verejný beta test). Koncept Etherea spadá medzi next-generation kryptomeny, niekedy tiež nazývaný ako “Bitcoin 2.0”.

Ethereum už od svojho spustenia teší naozaj veľkému úspechu. V máji 2016 trhová kapitalizácia kryptomeny Ethereum presiahla 1 miliardu USD, čím ako relatívne nová digitálna mena spôsobila senzáciu. Ethereum sa začal stavať silným konkurentom najsilnejšej kryptomeny Bitcoin aj tým, že ponúka celý rad služieb, ktorých realizácia prostredníctvom blockchainu Bitcoinu nebola doposiaľ možná (predovšetkým chytré kontrakty). Hodnota 1 éteru rástla prakticky až do júna 2016, kde hodnota presiahla viac ako 20 USD / 1 Ether. V tomto čase sa však stalo niečo (ne)predvídateľné – hackermi bola napadnutá Decentralizovaná Autonómna Organizácia (DAO), ktorá bežala na blockchaine Etherea ako chytrý kontrakt, čo odštartovalo dlhý proces zásadných zmien v celej infraštruktúre Ethereum od zániku DAO až po rozdelenie siete Ethereum na dva samostatné blockchainy s názvom Ethereum a Ethereum Classic.

Decentralizovaná autonómna organizácia (DAO)

the_daoDecentralizovaného autonómna organizácia (ďalej len DAO) mala fungovať ako fond rizikového kapitálu v šifrovanom a decentralizovanom priestore. Pre lepšiu predstavu je organizácia obdoba investičnej akciovej spoločnosti, ktorej kapitálom nie sú FIAT peniaze, ale Éter a o možnostiach investovania kapitálu tejto spoločnosti rozhodujú v plnej miere len jej akcionár, ktorého hlasovacie právo je priamo úmerné hodnote investovaného kapitálu. Absencia centralizovaného orgánu spravujúci tento fond by mala mať za následok zníženie celkových nákladov na chod organizácie a teoreticky mala umožňovať väčšiu kontrolu od samotných investorov.

Na začiatku mája 2016 niekoľko členov komunity Ethereum oznámili zrod DAO, známy tiež známy ako Genesis DAO. Projekt bol navrhnutý ako chytrý kontrakt bežiaci na blockchaine siete Ethereum. Táto štruktúra vznikla z open source projektu, ktorý bol vyvynutý teamom Slock.it a nasadená bola pod názvom “The DAO” členmi komunity Ethereum. Projekt DAO začal tzv. “obdobím vzniku”, počas ktorého mohol každý jeden držiteľ Etherea posielať Ethereum na špeciálnu DAO peňaženku (The DAO Ethereum Wallet), čím ako protihodnotu získal za každé 1 ethereum 100 DAO tokenov. Počas tohto obdobia sa DAO tešilo nepredvídanému úspechu, pretože sa podarilo za krátky čas zhromaždiť cca 12,7 mil Éterov (v tom čase hodnota okolo 150 mil USD). V určitom okamihu, keď sa Éter na výmenných burzach obchodoval za cca 20 USD / 1 Ether, dosiahla DAO hodnotu v prepočte cez 250 miliónov USD.

DAO použíl zložitý chytrý kontrakt s mnohými funkciami, ktorý mal umožniť spoločnostiam predkladať návrhy na financovanie rôzných projektov. Po tom, čo by bol takýto návrh predložený jedným z kurátorov siete Ethereum, mohli držitelia DAO tokenov o tomto návrhu hlasovať. V prípade, že by takýto návrh dosiahol aspoň 20% kvórum, boli by uvoľnené požadované prostriedky do peňaženky (Ethereum Walletu) zadávateľa. Väčšina z kurátorov boli dôležitý členovia Ethereum komunity.

S cieľom umožniť investorom opustiť organizáciu v prípade, že návrh by bol podľa ich názoru návrh nekvalitný prípadne by mohol investora poškodiť, boli v chytrom kontrakte DAO vytvorené aj tzv. spätné dvierka, známe tiež ako funkcia delenia (split function). Táto funkcia by umožnila investorom zvrátiť tento proces a dostať späť svoj éter výmenou za získané DAO tokeny. Ak by sa takto investor rozhodol, obdržal by svoj étere na špeciálny účet (tzv. “child dao”), kde by bol éter uložený po dobu 28 dní a po uplnynutí tejto lehoty by s ním mohol dalej disponovať.

Začiatok DAO prebiehal hladko, začali sa predkladať návrhy na financovanie a hlasovanie prebiehalo bez väčších komplikácii. Postupne sa však začalo písať o rôzných možných trhlinách v bezpečnosti DAO kontraktu a boli vznesené otázky ohľadne bezpečnosti celého projektu DAO. Počas následujúcich týždňov začalo v komunite tlačiť na moratórium, ktoré však nebolo zrealizované a väčšina bezpečnostných záplat nebola uvedená dostatočne rýchlo, čo malo za následok útok…

Hacker zaútočil na DAO

daologoalt18. júna 2016 približne o štvrtej hodine ráno upozornilo niekoľko členov komunity Ethereum, že na DAO kontrakte sa začali diať nezvyčajné transakcie a celková hodnota účtu DAO v Éteroch začala rapídne klesať. Počas následujúcich niekoľko hodín bolo z DAO účtu odčerpaných viac ako 3,6 MIL Éterov (v tom čase v hodnote približne 70 mil USD / 62,5 mil EUR). Neznámý útočník našiel dieru vo funkcii delenia – hackerovi sa podarilo odčerpať niekoľkonásobne väčšie množstvo Éterov pri použití rovnakých DAO tokenov.

Toto bolo možné vďaka exploitu spätného volania (recursive call exploit). Princíp tohto exploitu spočíval v tom, že hacker mohol “prikázať” chytrému kontraktu DAO vrátenie adekvátneho zostatku v Etheroch niekoľkokrát za sebou bez toho, aby kontrakt interne aktualizoval svoj aktuálny zostatok – neodrátal zo svojho celkového zostatku Éter, ktorý práve poslal na jeho “child dao” peňaženku. Nastala panika a hodnota 1 éteru sa behom niekoľkých hodín od útoku prepadla približne 50%.

Dôležité je pochopiť fakt, že za túto chybu nemôže samotná sieť Ethereum, ale len kontrakt, ktorý sa na Ethereum sieti nachádzal (podobne ako za chybu v operačnom systéme počítača nemôže výrobca hardvéru). Kód napísaný pre DAO kontrakt mal hneď niekoľko kritických bezpečnostných dier, exploit spätného volania bola len jedna z nich. O chybách v DAO kontrakte sa mohol dozvedieť ktokoľvek, pretože celý kód kontraktu bol open-source a teda verejne dostupný. Hacker po určitej dobe odčerpávanie éteru z DAO kontraktu z neznámeho dôvodu prerušil aj napriek tomu, že v odčerpávaní mohol pokračovať. Komunita Ethereum a team vývojarov okamžite prevzali kontrolu nad vzniknutou situáciou a odprezentovali niekoľko spôsobov, ako sa s touto situáciou vysporiadať. Tu si treba si uvedomiť fakt, že samotná blockchain technologia neumožňuje “vrátiť sa v čase” a odčerpané prostriedky len tak vrátiť späť, zmeny zapísané v blockchaine sú nemenné. Z toho dôvodu vlastne neexistuje bezbolestné riešenie, ako ukradnuté prostriedky vrátiť späť bez toho, aby to vážnym spôsobom zasiahlo do fungovania samotnej siete ethereum.

Pokus o riešenie č. 1 – Soft Fork (alebo aj “dobrá správa pre všetkých”)

Aby sa zabránilo útočnikovy manipulovať s ukradnutým Éterom z jeho “child dao” účtu po uplynutí ochrannej lehoty 28 dní, bolo komunitou odhlasované riešenie “soft-fork”. Toto riešenie spočíva v permanentnom zablokovaní všetkých budúcich transakcií zo všetkých child-DAO účtov, avšak len pár hodín pred zavedením riešenia do praxe niekoľko členov ethereum komunity zistilo, že aplikovanie týchto zmien by mohlo spôsobiť pád (nedostupnosť) celej siete Ethereum (denial-of-service) – sieť Ethereum je plne imunna voči cenzúre transakcií.

Pokus o riešenie č. 2 – Hard Fork (alebo aj “rozdelenie Ethereum komunity”)

hard_forkNa stole s riešeniami sa ocitlo kontroverzné, ale zato “definitívne” riešenie s názvom hard-fork. Riešenie spočíva v jedinej  akcii – vrátiť veškerý ukradnutý éther na zvláštny kontrakt, ktorý bude obsahovať jedinú funkciu – výber, tz. majitelia DAO tokenov budú môcť každých 100 DAO tokenov vymeniť späť za 1 éter. Problém s hard-fork riešením je jeho technická realizácia, znamenalo by vznik novej siete Ethehereum s opravou DAO hacku s tým, že pôvodná sieť Ethereum by mohla fungovať ďalej, pokiaľ sa určitá skupina rozhodne aj naďalej udržiavať tútu “starú” sieť pri živote (viac v pripravovanom článku). Toto riešenie rozdelilo komunitu Ethereum na dva tábory – na podporovateľov riešenia hard-fork a na jej odporcov.

Odporcovia riešenia hard-fork argumentujú následovne:

  • kód je zákon – tento fakt obsahuje originál vyhlásenie o pravidlách DAO a za žiadných okolností by sa nemali meniť (tz. kód stojí nad zákonom),
  • veci, ktoré sa dejú na blockchaine, sú a musia ostať nemeniteľné a nemalo by sa do nich akokoľvek zasahovať bez ohľadu na akékoľvek príčiny a následky,
  • jedná sa o nebezpečný precedens. Cenzúra / úprava kontaktov je ako balancovanie na hrane noža – ak sa povolí jeden krát, je predpoklad jej opakovania aj do budúcna,
  • rozhodnutie o vrátení ukradnutých prostriedkov je krátkozraké a môžete znížiť hodnotu a dôveryhodnosť  celej siete Ethereum,
  • jedná sa o “bailout”

Na druhej strane stojí skupina podporovateľov riešenia hard-fork, ktorá argumentuje následovne:

  • pravidlo “kód je zákon” je z pohľadu dnešnej doby príliš drastické riešenie a posledným slovom by mala byť cesta sociálneho konsenzusu (hlasovania),
  • útočníkovy by nemalo byť dovolené profitovať z exploitu – je to eticky nesprávne a komunita by mala proti tomu zasiahnúť,
  • argument, že sa jedná o nebezpečný precedens, nie je platný, pretože komunita nie je zaviazaná minulými rozhodnutiami, ľudia môžu konať slobodne racionálne v každej situácii,
  • bolo by príliš veľké riziko ponechať v rukách útočníka tak veľké množstvo éteru, nakoľko by mohol s jeho manipuláciou na výmenných burzách drasticky znížiť hodnotu éteru,
  • nejedná sa o bailout, pretože sa neberú peniaze z komunity, jedná sa len o návrat investície jej investorom,
  • toto riešenie by malo zastaviť prebiehajúceho vojnu medzi white-hat a black-hat hackermi, ktorý by mohli demoralizovat komunitu aj do budúcnosti,
  • rozsah škôd spôsobených exploitom boli dostatočne veľké na to, aby sa prijali opatrenia tento proces zvrátiť,
  • riešenie hard-fork na vrátenie prostriedkov následkom útoku by mohlo udržať regulačné úradi a finančné zákony na úzde – náš “bordel”, my to opravíme

Pre dosiahnutie rýchleho konsenzusu (aj z dôvodu časovej tiesne) sa o tomto návrhu hlasovalo. Hlasovať mohli všetci držitelia éteru vykonaním malej transakcie na hlasovacie účty (pro a proti). Veľký väčšia držiteľov (až 89%) hlasovala za riešenie hard-fork, čím toto riešenie nadobudlo platnosť od vyťaženia bloku č. 1 920 000. Od tohto momentu datujeme vznik novej siete s názvom “Ethereum Classic”, ktorej sa budeme venovať v ďalších článkoch.

Mnoho užívateľov a (aj bývalých) nadšencov siete Ethereum si myslí, že Hard-Fork zásadne zmenil fungovanie celej siete Ethereum a následujúce týždne budú pre celú Ethereum komunitu naozaj kritické. Ak aj Vy patríte medzi nadšencov / odporcov siete Ethereum, čo si myslíte, akou cestou sa bude Ethereum uberať? Bolo riešenie Hard-Fork naozaj správne?

COMMENTS

WORDPRESS: 1
  • comment-avatar

    super vysvetlene..diki!