de bitcoin a ethereum: criptomonedas, contratos inteligentes y corporaciones descentralizadas...
TRANSCRIPT
De Bitcoin a Ethereum (versión abreviada)Criptomonedas, Contratos Inteligentes y Corporaciones Descentralizadas
Autónomas
Jens Hardings Perl <[email protected]>
4 de mayo de 2016
Licenciado bajo Creative Commons Attribution-ShareAlike 4.0.
2 / 80
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
2 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
3 / 80
Motivación de desarrolladores de Bitcoin
Contextocrisis hipotecas sub-prime gatilladael 2007
quiebra de Lehman Bros 15 deSeptiembre 2008
fallas en organismos centralesencargados de regulardescontento general que derivó enOccupy Wall Street (Septiembre2011)deseo de contar con una monedaindependiente de controlcentralizado
Objetivos técnicosBase de datos distribuida queregistra transacciones
Inspirada en sistemas P2P comoGnutella, TorNo requiere ente central confiable
Sistema autosustentable: incentivosa quienes sustentan la redEficiencia: transacción “confirmada”en ∼ 1 hora
t. de crédito: 60 a 180 díascheques: 1 a 2 semanas
3 / 80
Motivación de desarrolladores de Bitcoin
Contextocrisis hipotecas sub-prime gatilladael 2007
quiebra de Lehman Bros 15 deSeptiembre 2008
fallas en organismos centralesencargados de regulardescontento general que derivó enOccupy Wall Street (Septiembre2011)deseo de contar con una monedaindependiente de controlcentralizado
Objetivos técnicosBase de datos distribuida queregistra transacciones
Inspirada en sistemas P2P comoGnutella, TorNo requiere ente central confiable
Sistema autosustentable: incentivosa quienes sustentan la redEficiencia: transacción “confirmada”en ∼ 1 hora
t. de crédito: 60 a 180 díascheques: 1 a 2 semanas
4 / 80
Aparición de Bitcoin
1 de Noviembre de 2008: un desconocido Satoshi Nakamoto publica papercon idea en lista de correos de criptografía3 de enero de 2009: Se genera el primer bloque del Blockchain9 de enero de 2009: Nakamoto publica primera versión del software dereferenciaEstuvo activo hasta mediados de 2010, cuando entregó el control(repositorio, dominios, etc) a tercerosNo se sabe si Satoshi Nakamoto es su nombre real, o si es un grupo másque una persona
5 / 80
1era Transacción con Bitcoin en el “mundo real”La Pizza de los 10 Millones de Dólares
Una Pizza por 10.000 BTC el 22 de Mayo de 201010,000 BTC = 42 USD en la fechaMás de 4,000,000 USD en 201610,000 BTC = 11,472,500 USD al 4 de diciembre 2013
6 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
7 / 80
Funcionamiento del Bitcoin: Blockchain
Todas las transacciones se registran en un “libro” (contable) público,compartido y descentralizado: el blockchainUso de Elliptic Curve Digital Signature Algorithm (ECDSA) y SHA-256Identificación de una contraparte es la llave pública
dirección: hash de llave pública
Privacidad: llave pública no da indicios sobre la identidadPor cada bitcoin, se registra cada transacción desde su creación al estadoactualLos bitcoin se pueden subdividir en hasta 10−8 unidades
un 10−8 de bitcoin es un satoshiDe ser necesario, protocolo se puede modificar para aceptar divisiones máspequeñas
8 / 80
Bloques
Las transacciones se agrupan en bloques, nodos compitenArmar un bloque válido es computacionalmente caro
Proof of work (Hashcash)Promedio: un bloque cada 10 minutosDificultad se ajusta cada 2016 bloques (∼ 2 semanas)
Incentivo a generar bloquesCada bloque entrega bitcoins a quien lo genera (transacción 1 del bloque)
Incentivo a incorporar todas las transaccionesGenerador del bloque se queda con los transaction fees de cada transacción
Un bloque depende de todos los anteriores: blockchainBlockchain más largo es el válido (se descartan cadenas más cortas)
No se intenta buscar ni castigar participantes deshonestos
9 / 80
Bloques
Bloque 1
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 1
Bloque 2
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 2
Bloque 3
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 3
Bloque 4
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 4
Bloque válido siTodas las transacciones son válidasProof-of-work válido
9 / 80
Bloques
Bloque 1
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 1
Bloque 2
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 2
Bloque 3
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 3
Bloque 4
Header
Hash( Headerbloque anterior )
Hash Txs
Transaccionesbloque 4
Bloque válido siTodas las transacciones son válidasProof-of-work válido
10 / 80
Minado: proceso de encontrar nuevos bloques
Proof of work resuelve 2 problemas1 forma simple y efectiva de consensuar el estado del blockchain2 mecanismo de entrada al proceso de consenso
peso relativo de cada participante es su poder computacional
Algoritmo
Construyo el bloque1era transacción me paga los bitcoins por generar el bloqueMi bloque es diferente al de cualquier otro minero
Nonce = 0Valido si sha256(bloque) < targetIncremento nonce y reintento
11 / 80
Validación de un bloque
1 Bloque anterior existe y es válidoDefinición recursiva hasta “genesis block”Si está en el blockchain, es válido
2 Timestamp del bloque debe ser superior al del bloque previo y menos de 2horas en el futuro
3 Proof of work es válido4 Si S0 es el estado del bloque anterior y TX son las n transacciones del
bloque:∀i ∈ {0 · · · n − 1}Si+1 = Apply(Si ,TXi)
Si hay error, bloque no es válidoEl orden de las transacciones es relevante
5 Sn es el nuevo estadoEl estado no está codificado explícitamente
12 / 80
Generación de Bitcoins
Inicio: 50 BTC por bloqueSe divide en 2 cada 210,000bloques (4 años)
Al año 2024: 19,6 MM BTCNunca se superarán los 21MM deBTC
0 210 420 630 840 1050 1260 1470 1680
2009 2013 2017 2021 2025 2029 2033 2037
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
0
5
10
15
20
Bitcoin Inflation vs. Time
Inflation Rate Monetary Base
Blocks (thousands)
Infl
atio
n R
ate
(an
nu
aliz
ed
)
Year
Bit
coin
s (m
illi
on
s)
13 / 80
Blockchain: Seguridad
Caso 1: 2 nodos encuentran el siguiente bloque
Razones: Problemas de red, solución prácticamente simultánea, mala feReceptores eligen primero que llega
Partición de la red con 2 cadenas del mismo largoUn nodo encuentra siguiente bloque
Demás eliminan la otra cadena (más corta)
Caso 2: Doble gastoEl segundo gasto que llega es desechado por el nodoSi ∼ 50% de los nodos toma un gasto, el resto el otro
Cadena de bloque difiereUno nodo encuentra primero el segundo bloque, se descarta cadena más cortaPuede quedar una sola transacción de las dos
13 / 80
Blockchain: Seguridad
Caso 1: 2 nodos encuentran el siguiente bloque
Razones: Problemas de red, solución prácticamente simultánea, mala feReceptores eligen primero que llega
Partición de la red con 2 cadenas del mismo largoUn nodo encuentra siguiente bloque
Demás eliminan la otra cadena (más corta)
Caso 2: Doble gastoEl segundo gasto que llega es desechado por el nodoSi ∼ 50% de los nodos toma un gasto, el resto el otro
Cadena de bloque difiereUno nodo encuentra primero el segundo bloque, se descarta cadena más cortaPuede quedar una sola transacción de las dos
14 / 80
Blockchain: Transacciones
Building block fundamental para el BlockchainForma de traspasar valor de una dirección a otraEn una transacción se traspasa todo el valor que entró por otra transacción
Se puede usar la misma dirección para el vueltoSe recomienda una dirección diferente para cada transacción
Para usar el valor en una dirección se referencia la transacciónno la direcciónno la billetera (wallet)la transacción anterior puede especificar cómo se puede gastar el valor en lasiguiente
especie de contrato
15 / 80
Blockchain: Transacciones encadenadas
Transferencia de propiedad de una dirección a otraconsiderando uso sin restricción por parte del dueño
Firma dedueño 0
Hash
Llave públicade dueño 1
Llave privadade dueño 1
Transacción 1
Firma dedueño 1
Hash
Llave públicade dueño 2
Llave privadade dueño 2
Transacción 2
Firma dedueño 2
Hash
Llave públicade dueño 3
Llave privadade dueño 3
Transacción 3
Verifica
Firma
Verifica
Firma
15 / 80
Blockchain: Transacciones encadenadas
Transferencia de propiedad de una dirección a otraconsiderando uso sin restricción por parte del dueño
Firma dedueño 0
Hash
Llave públicade dueño 1
Llave privadade dueño 1
Transacción 1
Firma dedueño 1
Hash
Llave públicade dueño 2
Llave privadade dueño 2
Transacción 2
Firma dedueño 2
Hash
Llave públicade dueño 3
Llave privadade dueño 3
Transacción 3
Verifica
Firma
Verifica
Firma
15 / 80
Blockchain: Transacciones encadenadas
Transferencia de propiedad de una dirección a otraconsiderando uso sin restricción por parte del dueño
Firma dedueño 0
Hash
Llave públicade dueño 1
Llave privadade dueño 1
Transacción 1
Firma dedueño 1
Hash
Llave públicade dueño 2
Llave privadade dueño 2
Transacción 2
Firma dedueño 2
Hash
Llave públicade dueño 3
Llave privadade dueño 3
Transacción 3
Verifica
Firma
Verifica
Firma
16 / 80
Transacciones: detalles
Múltiples inputs, valores se sumanMúltiples outputs (normalmente 2: pago y vuelto)
InputReferencia el output en otratransacción (ID tx, posición)scriptSig: cumplimiento de exigenciapara canjear
establecido en transacciónreferenciada
OutputValorscriptPubKey: cómo se puedecanjear el valor
solamente hash(script)script lo da canjeador
Valor no asignado es “transactionfee”
Cada output se usa como input en 1 única transacción
16 / 80
Transacciones: detalles
Múltiples inputs, valores se sumanMúltiples outputs (normalmente 2: pago y vuelto)
InputReferencia el output en otratransacción (ID tx, posición)scriptSig: cumplimiento de exigenciapara canjear
establecido en transacciónreferenciada
OutputValorscriptPubKey: cómo se puedecanjear el valor
solamente hash(script)script lo da canjeador
Valor no asignado es “transactionfee”
Cada output se usa como input en 1 única transacción
17 / 80
Tipos de transacción (según scriptPubKey)
Pay-to-PubkeyHash (P2PH)al usar como input, se debe presentar:
llave pública (dirección es solamente el hash)firma de la transacción
20 bytes (el hash)
Pay-to-Script-Hash (P2SH)al usar como input, se ejecuta el script
script lo provee canjeadorhash debe calzar con scriptPubKey de outputal finalizar debe quedar un solo valor en el stackvalor debe ser true ( 6= 0)
18 / 80
Scripts en Bitcoin
Lenguaje basado en Forth para especificar cómo se pueden canjear losbitcoins enviados en una transacciónFuncionalidad reducida
No tiene loopsEjemplo de usos:
Firmas simultáneas con distintas llaves privadasn firmas de m alternativas (n < m)Sin firmas (ej: password)
19 / 80
Escalabilidad: Merkle Trees
Simplified Payment Verification: no requiero todas las transacciones paraverificar 1 dentro de un bloqueEjemplo con transacciones A, B, C, D, E:merkle root = h(h(h(h(A)+h(B)) + h(h(C)+h(D))) + h(h(h(E)+h(E)) + h(h(E)+h(E))))
A B C D E
a = h(A) b = h(B) c = h(C) d = h(D) e = h(E)
ab = h(a+b) cd = h(c+d) ee = h(e+e)
abcd=h(ab+cd) eeee=h(ee+ee)
abcdeeee = h(abcd+eeee)
20 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
21 / 80
Privacidad
Se recomienda usar una llave nueva para cada transacciónUso de múltiples inputs en una transacción indica que esas direcciones sondel mismo dueñoSecuencia de transacciones indica flujo de pagos
Mixing services
también llamados “launderingservices”servicio que recibe bitcoins y losredistribuyerequiere confianza ciega en quienentrega el servicio
CoinJoin: sin tercero confiablecomponer n transaccionesindependientes en 1 solapartes acuerdan outputs y montos,incluyendo vueltoscada contraparte firma su parte dela transaccióntransacción es válida sólo si todosfirmaron
22 / 80
Ejemplo de Mixing Service: Bitcoinfog
Se accede mediante TorRecibe pago a dirección generada aleatoriamente
Se cobra una comisión aleatoria entre 1 % y 3 %
Maneja un pool principal con bitcoins para pagoal bajar los fondos del pool principal, va transfiriendo desde las direccionesaleatorias iniciales
Al realizar un retiro, se define aleatoriamente:el número de tx (dependiendo tb. del monto)el valor relativo entre las txla separación de tiempo entre tx (dentro de un rango total especificado)
23 / 80
Billeteras
Colección de llaves privadasActuales y futurasse evita necesidad de respaldar después de cada uso
(posiblemente) cache de transacciones y/o saldo totalPuede cifrar las llaves privadas
Si se pierde llave de cifrado, se pierde el contenidoVersiones en web, software, hardware
ejemplo de hardware wallet
24 / 80
eWallets
llamadas browser-based wallet o wallet serviceBilleteras accesibles vía webProveedor maneja todas las llaves privadasSímil a un banco: confiamos en que dinero depositado se manejará segúnnuestras instrucciones
Pero sin el respaldo legal
25 / 80
Billeteras en papel
Documento que contiene toda la información paragenerar llaves privadas
Semilla para generadores deterministas de llaveLlaves en papel (solamente 1 par)
Regalos o propinasTokens físicos: para acceder a la llave privada, sedestruye el tokenAlmacenamiento offline
También se usa para referirse a una única llavealmacenada en papel como medio óptico
26 / 80
(Hierarchic) Deterministic Wallets
Se genera una secuencia determinista de paresSecuencia pseudo-aleatoria
Propiedades deseadas:
Master Public KeyPermite generar todas las llavespúblicasNo permite obtener las llavesprivadas correspondientesSi se compromete, solamentepermite ver saldo total, no usarlo
Jerárquico (HD Wallets)Master Public/Private Key permitegenerar llaves que a su vez sonMaster Public/Private Keys (dejerarquía inferior)Conociendo la llave de jerarquíasuperior puedo calcular todas lasinferioresAl revés no funciona
27 / 80
Minado de Bitcoins
Inicio: hardware casero (2010)Computador de escritorio en tiemposociosos (hasta 100 Mhash/s)
Uso de GPUs (2011)Menor consumo de energía, mayorvelocidad. (hasta 800 Mhash/s, 2.500con 6 GPUs)
Foto: Stefan Ledwina
28 / 80
Minado de Bitcoins (2)
Múltiples tarjetas (2012)
Foto: “Einer von denen” (Flickr)
FPGA Mining (2013)
Field-programmable gate array (2 a 10Ghash/s)
Foto: Xiangfu (Wikimedia Commons)
29 / 80
Minado de Bitcoins (3)
ASIC vía USB (2013)Application-specific integrated circuit
Foto: Mirko Tobias Schäfer
ASIC (2014)Application-specific integrated circuit(1100 - 1500 Ghash/s)
Foto: Wikimedia Commons
30 / 80
Minado de Bitcoins (4)
ASICs masivos: ya no son juguetes
Foto: Bitcoin rig al norte de Suecia (Julio 2014), por Datavetaren
31 / 80
Mining Pools
Hoy en día casi nadie mina soloPools de minado
Conjunto de personas trabajando en paraleloAl encontrar un bloque se divide proporcional al esfuerzoPrimer bloque minado en conjunto: Septiembre 2010
Recompensa con menor varianza
32 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
33 / 80
Principales problemas que enfrenta Bitcoin
VolatilidadRobo, EstafasMercados negrosLavado de dineroMalwareProblemas de implementaciónProblemas de Gobernanza
34 / 80
“51 % Attack”
ObjetivosReescribir el pasadoDominar la red
Requiere generar:el bloque que se quieremodificartodos los bloquesposteriorestodos los bloquesgenerados en el intertanto
Requiere al menos el 50%+ 1 de todo elpoder computacional dedicado a la redNo se pueden generar transaccionesnuevas, solamente eliminar transaccionespropiasSe generaría desconfianza en lacriptomoneda, afectando los recursospropiosEse poder computacional se puede usarpara minar bitcoins honestamente
34 / 80
“51 % Attack”
ObjetivosReescribir el pasadoDominar la red
Requiere generar:el bloque que se quieremodificartodos los bloquesposteriorestodos los bloquesgenerados en el intertanto
Requiere al menos el 50%+ 1 de todo elpoder computacional dedicado a la redNo se pueden generar transaccionesnuevas, solamente eliminar transaccionespropiasSe generaría desconfianza en lacriptomoneda, afectando los recursospropiosEse poder computacional se puede usarpara minar bitcoins honestamente
35 / 80
Otros ataques
Robo de BilleteraBilletera guarda datos no cifrados
Transaction ID MalleabilityProblema de implementación al no chequear formato de llave públicaAl reformatear la misma llave, genera un ID de transacción distintaEmisor original no encuentra tx en Blockchain y reenvía
posiblemente con otro input
36 / 80
Combined output overflow IProblema de implementación + “monocultivo”
ProblemaAl sumar los valores de dos outputs se generaba un overflow y con esofallaba el chequeoEl bloque 74638, (15 de Agosto de 2015), aprovechó la vulnerabilidadGeneró 184.467.440.736,58 nuevos Bitcoin
37 / 80
Combined output overflow IIProblema de implementación + “monocultivo”
SoluciónSe pidió no seguir generando bloques mientras se soluciona el problemaSe corrigió el código dentro de un par de horas
No se generaron más bloques con ese errorSe tuvo que corregir el blockchain, que contenía bloques inválidos
Normalmente bloques ya chequeados no se re-chequean
Se alcanzaron a generar 54 bloques sobre el erróneoBlockchain generado por nodos “corregidos” se hizo más largo
38 / 80
Micro Payments exploit
ProblemaNodo de referencia exige transaction fee para
Transacciones > 1000 bytesOutputs con menos de 0,01 BitcoinPrioridad es suficientemente alta
Pagos realizados por menos de 0,01 Bitcoin quedan para siempre sinconfirmarPagos que incluyen esos pagos no confirmados tambiénNo es un bug en sí, más bien una molestia
SoluciónSe actualiza cliente para que no envíe transacciones con inputs no confirmados.
39 / 80
Blockchain hard fork
13 de marzo 2013: cambio de versión genera comportamiento incompatibleVersión 0.7 no soporta bloques de más de 500kB
por uso de una librería con esa limitación
Un nodo con versión 0.8 generó un bloque de 974kBLos nodos 0.7 no aceptaban ninguna cadena con ese bloqueSe generaron 2 cadenas cada vez más largasSe debió detener la generación de nuevos bloquesVersión 0.8.1 respetó ese límite, hasta el 15 de mayo de 2013
Tiempo para que se actualicen los nodos
40 / 80
Bitcoin TimejackingTimestamping en Bitcoin
Nodos deben mantener producción de bloques en 1 cada app. 10 minutosRequieren tener un acuerdo sobre el momento en que se genera cada bloqueForma en que un nodo define su “network time”:
mediana de los tiempos publicados por peers, si se encuentra en ±70 minutosrespecto al system timetiempo de sistema si no
Un nodo rechaza bloques si el timestamp del bloque:es 2 horas en el futuro respecto al “network time”está en el pasado respecto a media de últimos 11 bloques
41 / 80
Bitcoin Timejacking
Ataqueatacante agregan suficientes “peers” para que
adelanten el reloj de los peers del objetivoatrase el reloj del objetivodiferencia: app. 140 minutos
atacante genera bloque válido 190 minutos al futuro del “network time”nodos adelantados en 70 minutos lo aceptannodo objetivo lo rechaza (está a 260 minutos adelantados para él)
atacante ha desconectado al nodo objetivo del restonodo objetivo va a aceptar transacciones duplicadas
42 / 80
Bitcoin Timejacking
SolucionesUsar solamente “system time” para validar recepción de bloquesAceptar solamente transacciones confirmadas
Introduce demora en validar el pago
Ajustar rangos de aceptabilidadUsar solamente peers confiables
43 / 80
Selfish Mining
ProblemaCuando un minero encuentra un bloque, lo publica
Si no lo publica de inmediato, puede ganar tiempo minando el siguienteDebe difundir su bloque más rápido de lo que se difunde otro cuando otrominero acierta
Atacantes obtienen una recompensa mayor que la justaAl comenzar antes que cualquiera, amplifican su poder computacional real
Al existir un pool con selfish mining, hay incentivos a unirse a élSe pierde la esencia distribuida del blockchain
44 / 80
Selfish Mining
Requerimientos al atacanteDebe poder minar un bloque antes que cualquiera
con 13 del poder computacional (en lugar del 50 % esperado)
Tener buena conectividad aumenta su probabilidad de imponer sus bloques ala red
si llega perimro al 50 % de los mineros honestos, requiere solo 25 % del podercomputacional
Remedio propuestoPropagar todas las cadenas de mismo largo que compitanMinar sobre alguna elegida al azarDisminuye la probabilidad que un atacante imponga su cadena sobre lasdemás
45 / 80
Volatilidad
Volumen total de moneda es pequeñoCada transacción/noticia grande tiene impacto fuerte
Valor total del valor existente es bajoCapitalización de BTC: e3,950,267,412USD (M1): e1,952,504,690,000 (494x BTC)EUR (M1): e5,493,000,000,000 (1390x BTC)BOB (M1): e5,286,504,000 (1,34x BTC)Fuentes: http://coinmarketcap.com/, Banco Central Europeo
Moneda no tiene un valor inherenteMoneda está en pocas manos
47 individuos tienen casi un 30 % de los bitcoins927 individuos tienen el 50 % de los bitcoinsFuente: Business Insider
46 / 80
Valor histórico de Bitcoin [USD]
↑ Fuente: http://bitcoincharts.com/
↓ Fuente: Google Trends
46 / 80
Valor histórico de Bitcoin [USD]
↑ Fuente: http://bitcoincharts.com/ ↓ Fuente: Google Trends
47 / 80
Google Trends
G 2012-04 Hacker currency Bitcoin crashes
F 2013-08 Srsly? Bitcoin, selfie added to Oxford dictionary
E 2013-12 Bitcoin crashes on China measures
D 2014-02 Bitcoin exchange Mt. Gox goes offline
C 2014-06 Co-owner of bitcoin-linked sites settles SEC case
B 2014-09 2 Bitcoin operators plead guilty in Silk Road case
A 2015-01 Coinbase opens first US Bitcoin exchange
48 / 80
Lavado de dinero
desde 2010, Financial Action Task Force (FATF) incorpora Monedas Virtualesen sus análisis
49 / 80
Mt. Gox: Magic The Gathering Online eXchange
Comenzó en 2006 para canjear naipes del juego MTGO como acciones,funcionó durante 3 mesesRe-uso del nombre para crear casa de cambio de Bitcoin (70 % de tx bitcoinen 2013)Junio 2011: un atacante logró bajar el precio de USD 17,50 a USD 0,01 congrandes transacciones consigo mismo usando credenciales robadas a unauditor de MtGox, generando pérdidas por USD 8.750.000 a clientesOctubre 2011: se generan transacciones enviando 2.609 BTC a direccionesinválidasFebrero 2013: se “pierden” transacciones canceladas por receptor ydevueltas a Mt.Gox, se recuperan 3 meses despuésMayo 2013: EEUU embarga USD 2,9MM por no registrarse como negocio detransferencia de dinero
50 / 80
Mt. Gox: la debacle
Junio 2013: se suspenden retiros en USDFebrero 2014: se suspenden todas las actividades, sitio web desapareceRazones de los problemas de liquidez: desorden y mala gestión
CEO alega que fueron robos y estafas a lo largo de añosEmpleados revelaron que ni siquiera existía separación entre billetera personaldel CEO y los fondos de la empresa
51 / 80
Silk Road Marketplace
Mercado en la DarkNet, lanzado en Febrero2011Conocido por sus ventas de drogas dediverso tipo
También armas, asesinatos por encargo,etc.
Administrada por Ross Ulbricht (SanFrancisco)Transaba exclusivamente con BitcoinFue cerrado en Octubre 2013Reapareció al par de semanas pero sevolvió a clausurar
52 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
53 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
54 / 80
Ethereum: Motivación
2 formas de extender Bitcoin, cada una con limitaciones
Usando Bitcoin BlockchainLimitaciones del scripting (loops)No hay posibilidad de transferencias exactasde montos a determinar en el futuroNo hay estados (solo gastado o no gastado),necesario para implementar contratoscomplejosNo hay acceso a datos del Blockchain comotimestamp o hash de bloque previoImposibilidad de usar SPV en extensiones(Ej: Colored Coins)
Blockchain paraleloCada implementación ununiverso paralelo
Moneda que solamentesirve para un finValorizaciones yvolatilidades diversasEsfuerzos de bootstrapping,desarrollo y minado
55 / 80
Ethereum: Motivación (2)
Smart PropertyPropiedad cuya pertenencia es controlada por el blockchainEj: conservador de bienes raíces digital
Smart Contractscontratos que se auto-aplicanidea original: Nick Szabo (1997)
Decentralized autonomous organizationsMetacoin
Uso de Bitcoin como base para otros protocolosSímil a lo que es TCP/IP para InternetDiversos protocolos se implementan “sobre” el mismo blockchain
56 / 80
¿Qué es Ethereum?
Logo: Marc van der Chijs
Una plataforma de consenso descentralizado“The ultimate abstract foundational layer”Un computador virtual descentralizado
Moneda propia o “crypto-fuel” (Ether)Usado para pagar transaction feesBase para generar otras monedas sobre el EthereumBlockchain
57 / 80
Ethereum: conceptos
Separación de árbol de estado y lista de transaccionesLenguaje de programación Turing-completo integrado
Ethereum ScriptCuentas (direcciones), en 2 sabores
externally owned accounts: controladas por llaves privadascontract accounts (Contratos): controladas por su código de contrato
TransaccionesPaquete de datos firmados que contienen un mensaje
MensajesObjeto virtual (no serializado) usado en el contexto de ejecución
58 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
59 / 80
Cuentas (Accounts)
Agentes autónomos que “viven” en el blockchainTiene una dirección Ethereum de 20 bytes, con:
Un nonce usado para que cada transacción pueda ser procesada una sola vezEl balance de ether de la cuentaEl código de contrato, si existeEl almacenamiento de la cuenta
Cuentas de dueño externoNo tienen código de contratoSe usan enviando mensajesfirmados por el dueño
ContratosSe ejecuta el código cuando llegaun mensajePueden leer/escribir sualmacenamiento, enviar mensajes ycrear nuevos contratos
60 / 80
Transacciones
para enviar un mensaje de una cuenta de dueño externoContiene los siguientes datos:
Destino del mensajeFirma identificando el emisorMonto de ether a transferirCampo opcional de datosValor STARTGASValor GASPRICE
Protección ante DoS:
STARTGASNúmero máximo de pasoscomputacionales a ejecutar en latransacción (incluyendo sub-ejecucionesde mensajes)
cálculo (CPU), ancho de banda yalmacenaje
GASPRICEFee que el emisor está dispuesto apagar por cada paso computacional
61 / 80
Mensajes
Objetos virtuales (solo existen en el contexto de ejecución de EthereumGenerado por un contrato mediante la instrucción CALLContienen:
Emisor del mensaje (implícito)Receptor del mensajeMonto de ether transferido con el mensajeCampo de datos (opcional)Valor STARTGAS
62 / 80
Ethereum Script
Bajo nivel: bytecode en EVM (Ethereum Virtual Machine)Alto nivel: Serpent (basado en Python), otros.Lenguaje basado en un stack (pila)Stack no persistenteMemoria autoexpandible
no persistenteAlmacenamiento persistente
estado del contrato
63 / 80
Procesamiento de transacciones
1 Validar que transacción está bien formada (número de valores, firma, noncees igual al nonce de la cuenta del emisor
2 Calcular transaction fee como STARTGAS * GASPRICE, sustraer ese montodel balance del emisor, incrementar el nonce del emisor. Error si no haysuficiente saldo.
3 Inicializar GAS = STARTGAS, restar costo por byte en la transacción4 Transferir el valor especificado en tx desde el emisor al receptor
Si cuenta destino no existe, crearlaSi destino es contrato, ejecutar su código
5 Si ejecución falla (fondos insuficientes; se acabó el GAS), se revierten loscambios salvo transaction fee
6 Devolución de GAS no gastado y pago de fees al minero
64 / 80
Sub-transacciones
Un contrato envía un mensaje a otro contratoEspecifica STARTGAS para sub-transacciónSi falla por falta de GAS, se aborta sub-transacción y se retoma actual
65 / 80
Validación de un bloque
1 Revisar existencia y validez de bloque referenciado como previo2 Revisar timestamp sea mayor que el del previo y menos de 15 minutos en el
futuro3 Revisar validez de número de bloque, dificultad, transaction root, uncle root y
GASLIMITGASLIMIT es el tope de GAS para calcular todas las transacciones
4 Revisar validez del proof of work5 S0 es el estado del bloque previo6 TX es el listado de las n transacciones en el bloque. ∀i ∈ [0 . . . n − 1],
Si+1 = APPLY(Si ,TXi). Si hay error o se consume más que el GASLIMIT delbloque, retornar error.
7 Sfinal = Sn, pero agregando la recompensa al minero.8 Revisar que el Merkle tree root del bloque calza con el de Sfinal.
66 / 80
Almacenamiento del Estado
En teoría, se almacena el estado en cada bloque(key, value)
Estructura de datos: Merkle Patricia TrieBasado en Patricia Trie / Radix Trie (“Trie”, de reTRIEval)Alfabeto hexadecimal (cada nodo tiene hasta 16 hijos), llave es binariaCada nodo del árbol se referencia mediante su hashEstructura determinista: solo 1 forma de representar un estado, genera siempreel mismo hash
Se mantiene una BD (hash, nodo)Si un (sub-)árbol no cambia, ya está almacenado en la BDEn cada bloque solamente se incluyen los nodos cambiados(Sub-)árboles ya no referenciados pueden eliminarse
67 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
68 / 80
Aplicaciones: 3 tipos
Aplicaciones financierasmonedas (sub-currencies), derivados financieros, contratos de cobertura (futuros;hedging contracts), libretas de ahorro, testamentos, contratos de trabajo.
Aplicaciones semi-financierasSe transa dinero pero hay una fuerte componente extramonetaria. Ej:
Recompensas auto-ejecutables para resolver problemas computacionales
Aplicaciones no financierasSmart Property, Votación electrónica, Gobierno Corporativo Descentralizado, etc.
69 / 80
Smart Property
Ethereum + IoT = Smart PropertyEj: arriendo por horas
Se ingresa llave pública de beneficiario, tiempo, etc.Dispositivo que controla acceso se actualizaAutenticación mediante firma con llave privada
69 / 80
Smart Property
Ethereum + IoT = Smart PropertyEj: arriendo por horas
Se ingresa llave pública de beneficiario, tiempo, etc.Dispositivo que controla acceso se actualizaAutenticación mediante firma con llave privada
70 / 80
Sistemas de Token
Muy fáciles de implementar en EthereumPosibilidad de por ejemplo pagar transaction fees en la misma sub-moneda
Permiten crear sub-monedas o mapear a activos (estilo Colored Coins)Código para sistema de token (salvo distribución inicial y casos de borde)
def send(to, value):if self.storage[msg.sender] >= value:self.storage[msg.sender] =
self.storage[msg.sender] - valueself.storage[to] = self.storage[to] + value
71 / 80
DAOs: Aplicaciones Autónomas Distribuidas
Organizaciones cuyas reglas y acciones están determinadas por código en elBlockchain
Código que es público y auditable (en bytecode)
Manejan sus propios recursos y reaccionan frente a eventos externosNo dependen de ninguna entidad centralNo pueden ser intervenidas por vías judiciales, políticas ni militaresGobierno Corporativo para actualizar su código (“estatutos”) en ciertascondiciones
72 / 80
¿Skynet?
73 / 80
Code is Law
Lessig, 2000: “Code and other Laws ofCyberspace”Code is Law
Código en derecho (wet code)Código en informática (dry code)
74 / 80
Wet vs. dry code
Derecho SoftwareLógica basada en mentes subjetivas, lógica booleana,
analogías bitsSeguridad desacato / prisión replicación +
criptografíaPredictabilidad flexible rígido
Madurez alta evolución / larvario / pocasmuchos casos experiencias
Area silos independencia dejurisdiccionales instituciones políticas
y financieras,sin fronteras
Costos demandas: altísimo muy bajo
Fuente: Nick Szabo, Devcon1 (Londres, Noviembre 2015)
75 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
76 / 80
Comunicación con el mundo externo
En ejecución hay acceso a datos del BlockchainNecesitamos incorporar datos del “mundo real”
Oráculos o Data FeedsContratos que son actualizados con datos
Resultados de eventos deportivosInformación climáticaValores de acciones o monedas
Posibilidad de des-centralizarOráculos m de n (con m < n)Sistemas de reputación y/o recompensas (Ej: ShellingCoin)
77 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
78 / 80
Proyectos sobre Ethereum
Decentralized predictionmarket built on Ethereum
http://augur.net/
Predict the future– crowdsourced.
http://groupgnosis.com/
Blockchain Go-vernance Dapp
http://boardroom.to/
Autonomous organiza-tions on the blockchain
http://colony.io/
Build Your 1st EthereumApp In 20 Minutes Using
Standard Web Tools.http://www.blockapps.net/
Next generation key-less access protocolfor smart propertyhttp://airlock.me/
Social business foundedto open up the world ofhow things are made
https://www.provenance.org/
“If you can lock it,we will let you rent,
sell or share it.”http://slock.it/
the first SmartAsset company
built on Ethereumhttps://dgx.io/
A non-profit, decentrali-zed crowdfunding plat-form built on Ethereum
http://weifund.io/
Autonomous bank& market maker
http://makerdao.com/
Smart contract de-ployment tools
http://etherparty.io/
Financial derivativestrading and settlementhttp://www.hitfin.com/ Solidity Online Compiler
http://chriseth.github.io/browser-solidity/
Solidity RealtimeDev Environment
http://meteor-dapp-cosmo.meteor.com/
79 / 80
Contenidos
1 BitcoinFuncionamiento BlockchainUsoProblemas y Ataques
2 EthereumIntroducciónComponentes y funcionamiento
3 Aplicaciones Distribuidas (dApps DAOs)Acceso al “mundo real”Casos concretos
De Bitcoin a Ethereum (versión abreviada)Criptomonedas, Contratos Inteligentes y Corporaciones Descentralizadas
Autónomas
Jens Hardings Perl <[email protected]>
4 de mayo de 2016
Licenciado bajo Creative Commons Attribution-ShareAlike 4.0.