Presentación dada en el San Simón Blockchain Forum (SSBF) hablando del concepto de DAO (Decentralized Autonomous Organization) y comentando el ataque a The DAO, así como el posterior fork de Ethereum.
4. Ethereum: Sistema de cuentas
"On the Blockchain, no one knows you're a fridge" - Richard Brown
• Principal diferencia frente a Bitcoin
• Dos tipos de cuentas
ContractsExternally Owned Accounts (EOA)
5. Organización Autónoma Descentralizada
Balance: X+Y Eth
• Sociedad gestionada por reglas establecidas en
contratos (Smart Contracts)
• Reglas establecidas previamente al acceso de los
usuarios.
• Puede gestionar dinero de los usuarios ( Según las
reglas previamente establecidas)
• Ejemplos: DigixDAO, MakerDAO, TheDAO… SSBF DAO
X+Y ETH
X ETH Y ETH
6. The DAO
• Usuario presentan una propuesta a la DAO
• La DAO vota la idea
• La DAO financia la idea
• Se reparten Beneficios/pérdodas
9. Crowdsale
• Durante 30 días, se vendieron
“DAO Tokens”
• Los tokens ponderan a la hora de
tomar decisiones.
• El dinero asociado a cada token
siempre mantiene su equivalente
en Ether.
16. Black Friday
“The DAO is currently sustaining a
sophisticated attack.”
“The attacker has moved the stolen ether
to a child DAO.”
The DAO Child DAO
17. El ataque: Recursive Split (I)
The DAO
Withdraw ()
Wallet Contract
Split (address del código atacante)
Hacker_Balance=0
Call_Split (Sender)
Address: 304a554a310C7e546dfe434669C62820b7D83490 Address: bb9bc244d798123fde783fcc1c72d3bb8c189413
N times
ETH Balance + = amount
Dark DAO
(Editado)
18. El ataque: Recursive Split (II)
// Burn DAO Tokens
Transfer(msg.sender, 0, balances[msg.sender]);
withdrawRewardFor(msg.sender);
totalSupply -= balances[msg.sender];
balances[msg.sender] = 0;
paidOut[msg.sender] = 0;
return true;
1: Movimiento de fondos
2: Actualización de balances
19. Recursive Split
• No es vulnerabilidad de Ethereum
• No es vulnerabilidad (directa) de Solidity
• Error (humano) de código (Reentrada)*
http://forum.ethereum.org/discussion/1317/reentrant-contracts
21. Robin Hood Attack
Original DAO “White Hat” DAO
7.2M ETH
Address: bb9bc244d798123fde783fcc1c72d3bb8c189413 Address: 0xb136707642a4ea12fb4bae820f03d2562ebff487
23. Solución: Softfork
• Los mineros (validadores de transacciones) actualizan su código.
• Acuerdan no validar las transacciones
• El Ether robado pasaría a ser inutilizable
24. • Cambio en el protocolo (toda solución es posible)
• Cambio en el protocolo. Protocolo = Consenso
Solución: Hardfork
• Devolver fondos, olvidar ejecución de contrato…
• Antecedentes: Bitcoin 2010
25. Solución: No hacer nada
• El usuario asume riesgos al adquirir sus fondos
• Principio de Inmutabilidad
• DAO != ETHEREUM
• El atacante adquiriría 3.6M ETH ($60M)
28. El Hardfork
• Modificación del contrato de “The DAO” por un contrato para retirar balance
• Ethereum / Ethereum Classic
• El Ether robado pasaría a ser inutilizable
29. Hoy
ETH ETC
• Mantiene el total de desarrolladores/aplicaciones
• Capitalización de mercado: $1,114,099,290
• Precio: $13.18
• Hashrate (GHz/s) : 4610 Gh/s
• Poco volume de desarrollo, sin apliaciones propias
• Capitalización de mercado: $103,390,038
• Precio: $1.22
• Hashrate (GHz/s): 652 Gh/s
30. Mañana: Workshop SSBF DAO
• DAO Simple (No es the The DAO!)
• Propuestas de movimientos de fondos
• Votación/ Ejecución
32. Links de interés (ataque técnico)
1. Child DAO:
https://etherchain.org/account/0x304a554a310c7e546dfe434669c62820b7d83490
2. Respuesta de Ethereum: https://blog.ethereum.org/2016/06/17/critical-update-re-dao-
vulnerability/
3. Ataque de Reentrada: http://forum.ethereum.org/discussion/1317/reentrant-contracts
4. Blog Seguridad Blockchain: http://hackingdistributed.com/2016/06/16/scanning-live-
ethereum-contracts-for-bugs/
5. Blog Personal de Peter Vessenes: http://vessenes.com/deconstructing-thedao-attack-a-
brief-code-tour/
6. Estado del la votación al Soft Fork: http://ethermine.org/stats/votes