Wat was de DAO Hack?

met Geen reacties


In de zomer van 2016 werd het blockchain-project The DAO van Ethereum gehackt. Deze zogenaamde ‘Decentrale Autonome Organisatie’ kan worden beschouwd als een autonoom investeringsfonds op de blockchain. Het doel van The DAO was om financiering voor projecten te organiseren, in een gedecentraliseerde autonome omgeving. Deze virtuele investeringsvorm werd door de Ethereum-community met zeer veel enthousiasme ontvangen en binnen korte tijd werd er een astronomisch bedrag ter waarde van 150 miljoen dollar opgehaald. De investeringen werden binnen The DAO geregistreerd met behulp van smart contracts, waardoor alle transacties onveranderlijk en permanent in de blockchain werden vastgelegd. De deceptie was dan ook groot toen bleek dat The DAO op 16 juni 2016 werd aangevallen, door een hacker die misbruik wist te maken van een bug in de smart-contract-code.

 

Smart contacts brachten de The DAO tot leven

Curator

Tokensale

Bestuurs-mechanisme

Splitsingsprocedure

Recursieve aanroep

De aanval

Drie opties

Weerstand tegen een ingreep

Open brief van de hacker

Robin Hood-groep

Soft fork wordt afgeblazen

Ethereum Classic

Discussie over regulering

 

Smart contacts brachten de The DAO tot leven

Op 30 april 2016 werd The DAO gelanceerd. Het project werd gecreëerd door blockchainontwikkelaar Slock.it en kan worden beschouwd als een virtueel investeringsfonds voor durfkapitaal, dat werd beheerd door de investeerders van het project. The DAO was gebouwd als een smart contract op de Ethereum-blockchain. De open source code werd ontwikkeld door verschillende leden van blockchainontwikkelaar Slock.it, waaronder Christoph Jentzsch. Het DAO-project had een zogenaamde ‘aanmaakperiode’ waarin iedereen ether naar een uniek wallet-adres kon sturen in ruil voor DAO-tokens. Ether (of ETH) is de cryptocurrency van Ethereum, waarmee binnen de blockchain transacties kunnen worden uitgevoerd. Het idee was om de fondsen van de investeerders – die ook wel ‘tokenhouders’ werden genoemd – samen te voegen. De tokenhouders konden contractant worden door voorstellen in te dienen, voor de financiering voor hun projecten. De financiering zou vervolgens plaatsvinden vanuit de DAO-fondsen. Iedereen kon zijn project pitchen aan de DAO-community en iedereen met DAO-tokens kon stemmen over de ingediende voorstellen. Als de gefinancierde projecten winst zouden maken, dan zouden de tokenhouders worden beloond.

 

Curator

De gerespecteerde leden van de Ethereum-community selecteerden een ‘curator’, die de identiteitsverificatie voor zijn rekening nam. Als het voorstel van de deelnemers de controle van de curator zou doorstaan, dan zou er door de investeerders worden gestemd. Wanneer een voorstel werd goedgekeurd door minimaal 20 procent van alle uitgegeven tokens, dan werd er door de The DAO automatisch een bepaalde hoeveelheid ETH, overgedragen naar het smart contract dat het voorstel vertegenwoordigde. Alle ETH die werd gegenereerd uit de voorstellen die door The DAO werden gefinancierd, zou als beloning aan de deelnemende investeerders worden teruggegeven.

 

Tokensale

Tijdens de eerste tokensale – in mei 2016 – was de enige vereiste dat beleggers hun ETH in The DAO investeerden. In ruil daarvoor kregen de investeerders DAO-tokens uitgereikt. Hierbij gold: 1 ETH voor 100 DAO-tokens. De tokens gaven stemrecht en konden worden gebruikt tijdens de selectie, van projecten die om financiering vroegen. De crowdfunding voor het DAO-project was een groot succes. The DAO haalde 12,7 miljoen ETH op, met een waarde van meer dan 150 miljoen Amerikaanse dollar. Daarmee werd het crowdfunding-project het grootste dat ooit werd georganiseerd.

Ethereum cryptocurrency, ether, ETH

Bestuurs-mechanisme

Het bestuurs-mechanisme dat door The DAO werd toepast, was vergelijkbaar met het bestuur van beursgenoteerde naamloze vennootschappen. In principe was het mogelijk dat de minderheid zou worden onderdrukt door de meerderheid. Daarom wilden de ontwikkelaars van The DAO een bescherming voor de minderheid invoeren. Het idee was om de minderheid in staat te stellen om hun geld terug te krijgen, wanneer een voorstel – waar ze geen deel van wilden uitmaken – werd goedgekeurd, ondanks hun bezwaren. De ontwikkelaars hadden deze oplossing geïmplementeerd, als een mogelijkheid van The DAO om te splitsen. Door een speciaal voorstel in te dienen kon de minderheid – samen met andere tokenhouders die voor dit tweede speciale voorstel hadden gestemd – hun ETH meenemen naar een nieuwe DAO. Deze nieuwe onderliggende DAO (een zogenaamde ‘child-DAO’) was in principe onderworpen aan dezelfde beperkingen als de DAO, waarvan het was afgesplitst.

 

Splitsingsprocedure

De splitsingsprocedure kon op elk moment door elke tokenhouder worden gestart, met betrekking tot hun eigen ETH. Eenmaal gestart was er echter een schema dat ‘hard’ gecodeerd moest worden in de DAO-code, volgens welke een gesplitst voorstel ten minste 7 dagen ‘debattijd’ moest hebben. Na deze 7 dagen kon de split-functie worden aangeroepen en kon de ETH van de initiatiefnemer worden verplaatst naar een nieuwe child-DAO. In dat geval was er een periode van 28 dagen, waarin geen voorstel kon worden ingediend om de fondsen verder door te sluizen. Deze wachttijd werd ingevoerd voor het geval dat bepaalde projecten niet doorgingen. En zelfs daarna – wanneer de deelnemers ETH vanuit de child-DAO naar een door hunzelf beheerde eigen rekening wilden sturen – dan moesten ze een voorstel indienen en vervolgens 14 dagen wachten. Deze 14 dagen was in principe de normale ‘debatperiode’ voor voorstellen. Wanneer werd besloten om een DAO te splitsen, dan hadden deelnemers minimaal 48 dagen nodig, voordat ze de ETH naar een door hunzelf beheerde eigen rekening konden doorsturen.

 

Recursieve aanroep

Nadat de splitfunctie was aangeroepen, was de code zo geschreven dat eerst de ETH werd opgehaald en het saldo pas later werd bijgewerkt. Bovendien werd niet gecontroleerd of er een zogenaamde ‘recursieve aanroep’ was, een term die wordt gebruikt om een functie aan te duiden die zichzelf aanroept. De aanvaller die de DAO hack zou uitvoeren, slaagde erin om ‘recursief’ de split-functie aan te roepen en zijn (of haar) ETH meerdere keren op te halen, voordat de code het ETH-saldo zou controleren. De codeurs van The DAO hadden geen rekening gehouden met de mogelijkheid van zo’n recursieve oproep en het feit dat het smart contract eerst de ether-fondsen zou versturen en pas daarna het token-saldo zou bijwerken. Deze kwetsbaarheid kwam dus niet voort uit The DAO zelf, maar was afkomstig van een applicatie die op de Ethereum-blockchain was gebouwd. De code die voor het DAO-project was geschreven had meerdere kwetsbaarheden en deze recursieve aanroep was daar een van.

Hacker

De aanval

Op 16 juni 2016 zag de aanvaller kans om ongeveer 3,6 miljoen ETH (toen ongeveer 70 miljoen Amerikaanse dollar) uit The DAO weg te halen, door misbruik te maken van de kwetsbaarheid in de procedure. Deze kwetsbaarheid staat bekend als een zogenaamde ‘recursive call-exploit’. De hacker had The DAO volledig kunnen leegpompen, maar om de een of andere reden, stopte hij of zij daar toch mee. De abnormale overdracht van de ETH werd al vrij snel door de Ethereum-community opgemerkt. Er ontstond paniek en binnen de community werd hevig gedebatteerd, over wat er precies moest gebeuren om het probleem op te lossen. Door de wachtperiode van 28 dagen kon de hacker de ETH niet verder doorsluizen. De wachtperiode gaf de community dus wat tijd om zich te beraden op de te nemen maatregelen. Na het verstrijken van deze wachtperiode zou de aanvaller een voorstel kunnen indienen, om de ETH definitief weg te sluizen.

 

Na de DAO Hack waren er drie opties

 

Optie 1: Helemaal niets doen

Alles laten zoals het was. Het blockchainnetwerk blijft dan onveranderd, maar dat zou dan wel betekenen dat de investeerders hun ETH definitief kwijt waren.

 

Optie 2: Een soft fork uitvoeren

In dat geval zou de ETH in de child-DAO als het ware worden ‘bevroren’. De child-DAO met daarin de gestolen fondsen zou dan met behulp van de ‘miners’ worden vernietigd, door een regel aan de code toe te voegen. Die regel zou alle transacties – die opriepen tot het verminderen van de ETH in de child-DAO – ongeldig verklaren. Een soft fork zou verder geen invloed hebben op de geldigheid van de transacties, die plaatsvonden tot het moment van de fork.

 

Optie 3: Een hard fork uitvoeren

Het uitvoeren van een hard fork was de meest omstreden oplossing, omdat het ingrijpende consequenties zou hebben voor het blockchainnetwerk. De gevolgen van de aanval zouden worden teruggedraaid en de ETH zou worden teruggestort naar The DAO. Echter zou de blockchain door de hard fork in tweeën splitsen, waardoor er twee verschillende ketens zouden ontstaan.

Man met vork.

Weerstand tegen een ingreep

De Ethereum-community was tot op het bot verdeeld over wat er nu precies moest gebeuren. Community-leden die de eerste optie steunden – en dus zowel de soft fork als de hard fork afwezen – vonden dat er niet in de blockchain mocht worden ingegrepen. De code binnen The DAO was immers de wet en alles wat de code toestond, was automatisch legitiem. De gegevens op de blockchain moesten te allen tijden onveranderlijk en permanent zijn. Ingrijpen in het blockchainnetwerk zou het digitale ecosysteem op de lange termijn ernstig schaden. Desondanks was de meerderheid van de community-leden van mening dat niets doen geen optie was en dat er wel degelijk iets moest gebeuren. Ze konden de hacker immers niet zomaar met de ETH laten wegkomen. Maar ook de voorstanders van een ingreep in The DAO waren sterk verdeeld. Vooral de weerstand tegen een hard fork was groot, omdat het de onveranderlijkheid en integriteit van de blockchain, te veel zou aantasten. Daarnaast was het ook schadelijk voor het imago van Ethereum en blockchaintechnologie in het algemeen.

 

Open brief van de hacker

Ook de anoniem gebleven hacker mengde zich in de discussie. In een open brief aan de Ethereum-community meldde de aanvaller (of iemand die beweerde de aanvaller te zijn) dat hij (of zij) in principe niets verkeerd had gedaan. Naar eigen zeggen had hij of zij alleen maar gebruikgemaakt van de regels, die binnen de smart-contract-code waren geïmplementeerd. En dat betekende volgens hem of haar dat de uitgevoerde acties volledig legitiem waren. De code regelde namelijk alles met betrekking tot The DAO en wat de aanvaller deed volgens de code, was gewoon toegestaan. De aanvaller liet weten dat hij of zij juridische stappen zou ondernemen tegen iedereen die zou proberen om de ETH terug te storten naar The DAO. In de open brief – die een dag na de DAO Hack werd gepubliceerd – stond het volgende:

 

‘Aan The DAO en de Ethereum-community,

 

Ik heb de code van The DAO zorgvuldig onderzocht en besloot deel te nemen, nadat ik de functie had gevonden waarbij splitsen wordt beloond met extra ETH. Ik heb gebruikgemaakt van deze functie en heb met recht 3.641.694 ETH geclaimd en wil The DAO bedanken voor deze beloning. Ik heb begrepen dat de DAO-code deze functie bevat om decentralisatie te bevorderen en de oprichting van ‘child-DAO’s’ aan te moedigen.

 

Ik ben teleurgesteld door degenen die het gebruik van deze opzettelijke functie als ‘diefstal’ karakteriseren. Ik maak gebruik van deze expliciet gecodeerde functie volgens de smart-contract-voorwaarden en mijn advocatenkantoor heeft me geadviseerd dat mijn actie volledig in overeenstemming is met het Amerikaanse strafrecht en is dan ook geen onrechtmatige daad. Raadpleeg de voorwaarden van The DAO ter referentie.

 

De voorwaarden van The DAO Creatie zijn uiteengezet in de smart-contract-code die bestaat op de Ethereum-blockchain op 0xbb9bc244d798123fde783fcc1c72d3bb8c189413. Niets in deze uitleg van termen of in enig ander document of communicatie kan aanvullende verplichtingen of garanties wijzigen of toevoegen, die verder gaan dan die uiteengezet in de code van The DAO. Alle verklarende termen of beschrijvingen worden uitsluitend aangeboden voor educatieve doeleinden en vervangen of wijzigen niet de uitdrukkelijke voorwaarden van de code van The DAO, die op de blockchain uiteen zijn gezet; voor zover u van mening bent dat er een conflict of discrepantie bestaat tussen de beschrijvingen die hier worden aangeboden en de functionaliteit van de code van The DAO op 0xbb9bc244d798123fde783fcc1c72d3bb8c189413, de code van de DAO regelt en beschrijft alle voorwaarden van The DAO Creation.

 

Een soft of hard fork zou neerkomen op inbeslagname van mijn legitieme en rechtmatige ETH, legaal geclaimd via de voorwaarden van een smart contract. Zo’n fork zou alle vertrouwen in niet alleen Ethereum, maar ook op het gebied van smart contracts en blockchaintechnologie permanent en onherroepelijk ruïneren. Veel grote Ethereum-houders zullen hun ETH dumpen en ontwikkelaars, onderzoekers en bedrijven zullen Ethereum verlaten. Vergis je niet: elke fork, zacht of hard , zal Ethereum verder beschadigen en zijn reputatie en aantrekkingskracht vernietigen.

 

Ik behoud alle rechten voor om juridische stappen te ondernemen tegen medeplichtigen van onwettige diefstal, bevriezing of inbeslagname van mijn legitieme ETH, en werk actief samen met mijn advocatenkantoor. Die handlangers zullen binnenkort een opzeggingsbrief per post ontvangen. Ik hoop dat dit evenement een waardevolle leerervaring wordt voor de Ethereum-community en wens jullie veel succes.

 

Met vriendelijke groet, de ‘aanvaller’

 

Robin Hood-groep

Terwijl de discussies binnen de Ethereum-community volop aan de gang waren, werd geprobeerd om de ETH-tegoeden die in The DAO waren achtergebleven veilig te stellen. Een aantal legitieme hackers uit de community – de zogenaamde ‘Robin Hood-groep’ – maakte daarbij gebruik van dezelfde kwetsbaarheid, als de exploit die de aanvaller had gebruikt. De aanvaller slaagde er echter in om ongemerkt betrokken te raken, bij de white hackers van de Robin Hood-groep. Daardoor wist de aanvaller zich het recht toe te eigenen om nogmaals een split-aanval te organiseren, zodra de periode voor het maken van de split voorbij was. Door de reddingspoging van de Robin Hood-groep kon het grootste deel van de resterende ETH, worden veiliggesteld in een child-DAO

 

Soft fork wordt afgeblazen

Ondertussen ging het debat binnen de Ethereum-community over de best mogelijke oplossing verder. Op 22 juni 2016 werd er gestemd over het uitvoeren van een soft fork, een optie die door de meerderheid van de ‘miners’ werd ondersteund. Ook Vitalik Buterin – de medeoprichter van Ethereum – was voorstander van een soft fork. De uitvoering van de soft fork werd gepland op 30 juni 2016, maar werd uiteindelijk weer afgeblazen vanwege extra beveiligingsfouten die het zou opleveren. Vervolgens werd het soft fork-plan in de prullenbak gegooid. Nadat de soft fork van de baan was, werd de hard fork als serieuze optie overwogen. Voorstanders van de hard fork vonden de aanval – en het feit dat er zoveel ETH was gestolen – niet te verteren. Ze vonden dan ook dat de Ethereum-community – ondanks de controversiële ingreep in de blockchain – voor deze optie zou moeten kiezen.

 

Ethereum Classic

De gestolen ETH zou dan immers kunnen worden teruggestort naar The DAO en regelgevers konden buiten de deur worden gehouden. Er werd weer gestemd en de hard fork werd door de meerderheid van de community aanvaard. Op 20 juli 2016 werd de hard fork uitgevoerd bij blok 1.920.000. Vervolgens werd de gestolen ETH weer teruggestort naar de investeerders. Hoewel noodzakelijk, was de Ethereum-community zeer ontstemd over het feit, dat ze een dergelijke zware ingreep in het blockchain-ecosysteem hadden moeten plegen. De belofte dat The DAO en blockchaintechnologie in het algemeen berustte op onveranderlijkheid en permanentie, moest helaas worden gebroken. De Ethereum-blockchain was toch niet zo ‘absoluut’ als waar bijna iedereen van uitging. Door de hard fork splitste de Ethereum-blockchain in tweeën. De meeste community-leden stapten over op de nieuwe tak van de blockchain, die de naam Ethereum behield. Een ander deel van de community bleef de oude blockchain volgen. Deze oude blockchain-tak ging door onder de nieuwe naam: Ethereum Classic.

Compliance, regulering

Discussie over regulering

Het experiment met The DAO was de eerste grootschalige toepassing van Ethereum-smart-contracts. De DAO Hack ondermijnde niet alleen het vertrouwen dat veel mensen hadden in blockchaintechnologie, maar door de aanval kwam er ook een discussie op gang over de regulering van dergelijke digitale, geautomatiseerde, slimme contracten. De DAO Hack toonde aan dat een solide wetgeving aanzien van deze complexe gedecentraliseerde netwerken en toepassingen, zeer noodzakelijk is. Op 25 juli 2017 – een jaar na de DAO Hack – bracht de Amerikaanse Securities and Exchange Commission (SEC) een rapport uit over het debacle met The DAO. De SEC is onder meer verantwoordelijk voor de toezicht op de verschillende effectenbeurzen in de VS. Daarin deed de toezichthouder de volgende uitspraak:

 

Tokens die aangeboden en verkocht werden door een ‘virtuele’ organisatie die bekend stond als ‘The DAO’ waren effecten en zijn daarom onderworpen aan de federale effectenwetten. Het rapport bevestigt dat uitgevers van dergelijke op gedistribueerde grootboek- of blockchaintechnologie gebaseerde effecten, de aanbiedingen en verkopen altijd moeten registreren, tenzij er een geldige vrijstelling van toepassing is. Degenen die deelnemen aan niet-geregistreerde aanbiedingen kunnen ook aansprakelijk worden gesteld voor schendingen van de effectenwetten.’

 

Federale effectenwetten

Daarmee zei de SEC in feite dat het aanbod van The DAO was onderworpen aan dezelfde wet- en regelgeving als waar bedrijven en particulieren op de traditionele beurs aan moeten voldoen. De SEC oordeelde dat The DAO de Amerikaanse federale effectenwetten had geschonden, samen met alle investeerders in het project. De uitspraak van de SEC heeft ontwikkelaars van blockchaintechnologie aangemoedigd, om manieren te bedenken om de registratie en de federale wet- en regelgeving te omzeilen. Maar of dit nu wel zo’n goede ontwikkeling is?   

 

Wetgeving en coderegels

De aanval liet duidelijk zien wat de gevolgen kunnen zijn, wanneer er iets misgaat in een wereld die volledig gebaseerd is op computerprogramma’s. Ook liet de aanval zien dat het menselijk oordeel – het element dat door de smart contracts werd vervangen – niet altijd slecht hoeft te zijn. In dit geval was het menselijk ingrijpen in de blockchain – in ieder geval voor de investeerders – een zeer gewenste handeling. Onze dagelijkse transacties kunnen soms erg complex zijn en computerprogramma’s zijn – vanwege hun ‘deterministische’ aard – gewoonweg nog niet altijd in staat om ze allemaal precies na te bootsen. De komende jaren zullen er nog veel discussies gevoerd worden, over de legitimiteit van menselijk ingrijpen in de blockchain. Daarnaast zal ook het conflict tussen landelijke wetgeving en de coderegels binnen het blockchain-protocol, onderwerp zijn van debat.

 

Terug naar boven ↑

 

Bronnen:

Ethereum.org

 

Op de hoogte blijven van de ontwikkelingen op het gebied van blockchaintechnologie? Meld je dan nu aan voor de blogpost!

 

Meld je aan voor de blogpost!
Ik ga ermee akkoord dat mijn naam en e-mailadres worden gedeeld met Mailchimp.
Met de blogpost van Uitleg Blockchain blijf je automatisch op de hoogte van de nieuwste ontwikkelingen omtrent de blockchain technologie.
We hebben een hekel aan spam. Uw e-mailadres zal niet worden verkocht of gedeeld met anderen (afgezien van het marketing automation platform dat wij gebruiken voor onze e-maillijst).

Laat een reactie achter