Dao (Decentralized Autonomous Organization)
-
Upload
carlos-buendia -
Category
Business
-
view
252 -
download
0
Transcript of Dao (Decentralized Autonomous Organization)
DAOOrganizaciones
AutónomasDescentralizadas
Carlos BuendíaBlockchain Lead Engineer
Grant Thornton Blockchain Labs
Ethereum Spain Organizer
10-01-2016
@buendiadas
Contenido
1. Introducción a Ethereum y la DAO
2. Cronología del ataque.
3. Soluciones al problema
4. Solución final
Introducción a la DAO
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)
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 DAOX+Y ETH
X ETH Y ETH
The DAO
• Usuario presentan una propuesta a la DAO
• La DAO vota la idea
• La DAO financia la idea
• Se reparten Beneficios/pérdodas
Cronología
30 - ABRIL
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.
Crowdsale
Si , $150M en un contrato
12- JUNIO
Primeras noticias12- JUN
“Today we discovered a vulnerability in the ETH token wrapper”
MakerDAO slack
“No DAO funds at risk”
12- JUN
17- JUN
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
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)
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
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
20- JUN
Robin Hood Attack
Original DAO “White Hat” DAO
7.2M ETH
Address: bb9bc244d798123fde783fcc1c72d3bb8c189413 Address: 0xb136707642a4ea12fb4bae820f03d2562ebff487
¿Soluciones?
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
• 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
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)
20- JULIO
Solución final
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
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
Mañana: Workshop SSBF DAO
• DAO Simple (No es the The DAO!)
• Propuestas de movimientos de fondos
• Votación/ Ejecución
Links de interés 1. Ethereum Accounts (White Paper): https://github.com/ethereum/wiki/wiki/White-Paper2. Ethereum DAO: https://www.ethereum.org/dao3. The DAO: https://daohub.org/4. Maker DAO: https://makerdao.com/5. Digix DAO: https://www.dgx.io
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-contracts4. 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
DAO
Carlos BuendíaBlockchain Engineer at Grant Thornton
Ethereum Spain Organizer
@buendiadas