Bitcoin. In Crypto we Trust

Preview:

Citation preview

1

In crypto we trust

Santiago Márquez SolísUPM - 2017

BITCOIN

Master en Sistemas Empotrados y Distribuidos

2

SMARQUEZSOLIS@GMAIL.COM

@SMARQUEZSOLIS

WWW.SANTIAGOMARQUEZSOLIS.COMWWW.BITCOINFORDEVELOPERS.COM

3

4

ANTES DE EMPEZAR, TOCA HACER LA PREGUNTA…

5

DE BITCOIN SE DICEN MUCHAS COSAS…

6

La prensa publica algo casi todos los meses ….

DA QUÉ PENSAR ¿NO?

7

8

9

Sin contar lo que se dice “por ahí”

UMMM ¿QUIÉN OPINA SABE DE LO

QUE HABLA?

10

Bitcoin es una exhibición de fuerza tecnológica. El mayor invento después de Internet.

Bill Gates

¿Eso no es una estafa?

Comercial de un banco

No entiendo lo de los bitcoins, aunque tampoco entiendo a las mujeres y estoy casado.

Trader de Bitcoin

Bitcoin es malo.

Paul Krugman (profesor economía de Princeton)

11

El valor del Bitcoin es cercano a cero.

Xavier Sala-i-Martín (profesor economía de Harvard)

Bitcoin es un activo [digital] que se está monetizando.

Juan Ramón Rallo (Economista)

Bitcoin es un esquema Ponzi. El Dinero de la Deep Web.

Nouriel Roubini (presidente de RGE Monitor)

Bitcoin es un experimento. No pongáis todos vuestros ahorros ahí.

Jeff Garzik (core developer del protocolo)

12

INTENTEMOS ACLARAR LAS COSAS

13

DATOS IMPORTANTES PARA SITUARNOS

14

DOS “VISIONES”

BITCOIN

NUEVO MODELO ECONOMICO

BLOCKCHAIN

BLOCKCHAIN

DISTRIBUTED LAYER TECHNOLOGY o DLT

(Public / Private)

¿MARTILLO DE ORO?

"When the wise man points at the Bitcoin, the idiot looks at the Blockchain" – (Quasi-)Confucius.

15

Inversión Empresas Internet vs Inversión Empresas Bitcoin

16

Evolución del Precio de Bitcoin

1 BTC aprox unos 820 dólares (17/01/2017)

Capitalización Total Actual: 13.214.808.150 dólares (16 millones de BTCs) (más o menos) (17/01/2017)

17

¿Quién acepta Bitcoin?www.coinmap.org

18

EN ESPAÑA…

• Bitcoin está reconocido como medio de pago y es equiparable a otra divisa (consulta vinculante V1029-15 de Hacienda) no se cobra IVA

• Todas las empresas que cobran en Bitcoin están obligadas a tener un libro contable con las direcciones y transacciones que realizan

• Si eres minero tienes que registrarte como autónomo y pagar la cuota mensual (Consulta V3625-16)

19

¿BITCOIN ES DINERO?

20

¿QUÉ ES EL DINERO?• Activos que son valiosos por su escasez

• Sirven para intercambiarlos por bienes y servicios

• Los bienes escasos se empezaron a usar como dinero: Oro

• Se crea la Moneda Fiducidaria: Oro respalda un título de cambio

• Nadie viene a reclamar ese oro con su título, ¿Emitimos títulos sin respaldo a cambio de oro?

• 1971, Nixon dice que se acabó reclamar el oro y convierte la Moneda Fiducidaria en Moneda FIAT, basada en la deuda.

• Se obliga a la población a utilizar una moneda, con autoridad central.

El dinero pasa a ser IMAGINARIO, sin respaldo físico.

“Si el dinero es bueno y la gente lo acepta voluntariamente, ¿qué necesidad hay de leyes de curso forzoso? Si el dinero no es bueno, ¿cómo se puede en una democracia obligar al pueblo a utilizarlo?” Larry Parks

21

PRINCIPIOS DE LAS MONEDASORO EURO BITCOIN

ESCASEZ

PORTABILIDAD

FUNGIBILIDAD

VERIFICACION

DIVISIBILIDAD

PRIVACIDAD

ACEPTACION

22

PROBLEMAS ECONÓMICOS

• Al ser un sistema basado en la deuda, puede crecer indefinidamente.

• Empobrecimiento del Ahorro

• Un modelo de crecimiento ilimitado en un contexto de recursos limitados no es sostenible

• Al menos no solo con los recursos del planeta Tierra

• Nanotecnología??

• Conquista Espacial??

23

¿QUÉ ES BITCOIN?

24

¿QUÉ ES BITCOIN? (1)

• Es una moneda electrónica.

• No tiene autoridad central (sistema descentralizado)

• Se transfiere de persona a persona de forma irreversible.

• Está limitada, no se pueden crear más de 21M de BTC.

• Se puede dividir en 100.000.000 millones de unidades (mBTC o uBTC)

• Cada subunidad recibe el nombre de Satoshi

• 1 BTC = 100.000.000 de Satoshis

25

¿QUÉ ES BITCOIN? (2)

• Bitcoin funciona como una red P2P (BitTorrent/eMule)

• Procesa Transacciones 24x7x365

• Cualquiera puede ser un nodo en la Red

• Una transacción es un pago entre dos entes (casi anónimo)

• Las transacciones se agrupan en Bloques

• Los Bloques forman una larga cadena o Blockchain

• Los bloques los crean los Mineros

26

¿QUÉ ES BITCOIN? (Y 3)• VENTAJAS:

• Hacer un pago con Bitcoin es como enviar un correo electrónico.

• Las comisiones son mínimas.

• La transferencia tarda 5-10 min vs p.ej. transferencia SEPA (sólo en la UE) es de 1-3 días laborables (escalabilidad)

• Es casi anónimo

• Reserva de Valor

• Bancarización Mundial

• Micropagos: donaciones, propinas

27

PROBLEMAS

28

PROBLEMAS QUE AFRONTA BITCOIN

• La moneda es un instrumento de control de los gobiernos. Impuestos. Control de capitales y aumento de patrimonio. Actividades ilegales.

• Desafía a gente muy poderosa. Cuánto más gente utiliza Bitcoin, menos vale el trabajo de un banquero.

• Actualmente es muy volátil.

• Cuesta de entender para el gran público.

• Cuesta creer que el Bitcoin sea moneda. Es moneda virtual.

• Eventualmente podría sufrir ataques (DoS), fallos por bugs de programación en el protocolo, etc.

• Problema de Escalabilidad

29

ESCALABILIDAD (1)• Probablemente es el problema más importante a futuro de Bitcoin

• Se debe al tamaño original de 1 Mb por bloque

• En 1 bloque caben aproximadamente entre 2048 a 6200 transacciones (la media es 0,5kb x transacción aprox.) y es capaz de procesar en torno a las 300.000 transacciones diarias (VISA procesa 150 millones al día)

• O lo que es lo mismo en el mejor de los casos 7 transacciones/sg

• Si la transacción no cabe en este bloque, tiene que esperar hasta que se resuelvan otro

• Puede estar:

• Indefinidamente esperando o

• Tener que aumentar la tarifa de transacción

30

ESCALABILIDAD (2)• La cadena de bloques se almacena completa en disco (90Gb)

• Para soportar 2000 tps (VISA) se necesitaría un bloque de 600 Mg

• No es un problema de proceso de CPU

• Es un problema de propagación por la red cada 10 minutos

• Es un problema de espacio

• Si toda la población del planeta usara Bitcoin 6.5 TB al día y 2.32 Petabytes al año

• ¿Soluciones?:

• ¿Aumentar el tamaño del bloque? (BIP102 / Jeff Garzik)

• ¿Aumentar la velocidad de minado? (Sergio Lerner)

ES UN PROBLEMA PARA HABLAR LARGO Y TENDIDO

31

ESCALABILIDAD (Y 3)• Soluciones

• Lightning Network (Lightning Labs)

• Bloques dinámicos

• Invertible Bloom Lookup Table (IBLTS) / Weak blocks

• Cadenas Laterales

• Testigos Segregados

• Alternativas:

• Bitcoin Core (0.13.2)

• Bitcoin XT (0.11.0F)

• Bitcoin Classic (1.2.0)

• Bitcoin Unlimited (0.12.1)

32

LA RED BITCOIN

33

LA RED BITCOIN (1)• La Red Bitcoin es un supercomputador que a finales de 2013 era 210 veces más

potente que los 500 mayores supercomputadores juntos (comparando FLOPS vs hashes/s). En abril de 2014, la potencia computacional de la red era de más de 50 petahashes/s o 50.000 billones de hashes/s.

Potencia computacional de la Red Bitcoin.

34

LA RED BITCOIN (2)

Más de 5000 nodos soportan la Red Bitcoin

35

LA RED BITCOIN (3)• Hay diferentes tipos de nodos:

• Broadcast Only Node

• Solo emiten transacciones (dispositivos móviles y carteras simples)

• Son los que menos capacidad de cómputo tienen

• Puerta de entrada a la Red Bitcoin de la mayor parte de los usuarios domésticos

• Relay Node

• Retransmiten y propagan transacciones

• Verifican el formato de la transacción

• firmas correctas y que el dinero que se está transfiriendo está en la cuenta de origen, validándolo contra la versión más actualizada de la cadena de bloques.

• deberemos abrir el puerto 8333

36

LA RED BITCOIN (4)• Hay diferentes tipos de nodos:

• Mining Node

• A parte de las funciones Relay Node realizan el proceso de mineria

• Actualmente equipos ASIC (Application Specific Integrated Ciurcuit)

• Funcionan agrupándose en pools de minería para aumentar su poder de computación

37

LA RED BITCOIN (5)

Circuitos ASIC (Application Specific Integrated Ciurcuit), diseñados específicamente para resolver los problemas criptográficos del protocolo Bitcoin. Y “minero” Terraminer.

38

LA RED BITCOIN (6)

• Bitcoin tiene tres redes de operación:

• Elegimos cambiando “bicoin.conf”

• MainNet

• La red principal

• Puerto 8333

• Puerto RPC 8332

• Cabecera de bloque 0xF9BEB4D9

• La dificultad se incrementa en función de la potencia de la red

39

LA RED BITCOIN (7)• Bitcoin tiene tres redes de operación:

• TestNet (testnet = 1)

• Se utiliza para testing de Bitcoin o pruebas de integración

• Ha habido tres generaciones (TestNet1, TestNet2, TestNet3)

• TestNet3 Es la versión actual (Bitcoin 0.7)

• 21 de Diciembre 2015 Testigos Segregados

• http://tpfaucet.appspot.com/

• Puerto 18333 / Puerto RPC 18332 / Las direcciones empiezan por m o 2

• Diferente Bloque Génesis

• Diferente cabecera de bloque 0x0B110907 (0xF9BEB4D9)

• La dificultad funciona de un modo diferente

• Por defecto es 1 (cada 20 minutos si no se encuentra un bloque)

40

LA RED BITCOIN (Y 8)• Bitcoin tiene tres redes de operación:

• RegNet(-regtest)

• Se utiliza para desarrollo (Bitcoin 0.9 en 2014)

• No necesita interactuar con otros pares

• No es necesario una gran potencia para usarla

• Tenemos control total para generar monedas en segundos

• Tiene su propio bloque genesis

• A partir del bloque 101 quedan confirmadas

• Solo los primeros 150 bloques pagan 50 BTCs

41

SATOSHI NAKAMOTO

42

¿QUIÉN HA CREADO BITCOIN? (1)• El artículo original y el software se creó bajo el pseudónimo

de un tal Satoshi Nakamoto en 2008• Bitcoin. A Peer-to-Peer Electronic Cash System

43

¿QUIÉN HA CREADO BITCOIN? (1)• El artículo original y el software se creó bajo el pseudónimo

de un tal Satoshi Nakamoto en 2008• Bitcoin. A Peer-to-Peer Electronic Cash System• La Red Bitcoin se puso en marcha el día 3 de Enero de

2009, creando los primeros Bitcoin

• La tecnología que hay detrás de Bitcoin, la Blockchain o Cadena de Bloques, utiliza conceptos criptográficos y matemáticos que tienen más de 30 años.

44

¿QUIÉN HA CREADO BITCOIN? (1)• El artículo original y el software se creó bajo el pseudónimo

de un tal Satoshi Nakamoto en 2008• Bitcoin. A Peer-to-Peer Electronic Cash System• La Red Bitcoin se puso en marcha el día 3 de Enero de

2009, creando los primeros Bitcoin

• La tecnología que hay detrás de Bitcoin, la Blockchain o Cadena de Bloques, utiliza conceptos criptográficos y matemáticos que tienen más de 30 años.

• Motivación:• The Times, 03 / Ene / 2009 Al borde del segundo plan de rescate para los

bancos

45

¿QUIÉN HA CREADO BITCOIN? (2)• ¿Quién es Satoshi Nakamoto? (1)

• Nadie lo sabe exactamente

• El último mensaje de Satoshi Nakamoto se publicó a finales de 2010 (www.bitcoin.org) y cedió el liderazgo a Gavin Andresen

• Según la revista Newsweek es un ingeniero japonés llamado Satoshi Dorian Nakamoto

¡QUE NO SOY YO! ¡DEJARME

EN PAZ!

46

¿QUIÉN HA CREADO BITCOIN? (3)• ¿Quién es Satoshi Nakamoto? (3)

• Según Wired el caradura de Craig Wright

• Según los lingüistas el criptógrafo Nick Szabo

• La realidad es que: solo Satoshi Nakamoto puede descubrir a Satoshi Nakamoto

POR SUPUESTO

QUE SOY YO!

47

¿QUIÉN HA CREADO BITCOIN? (Y 4)• ¿Quién es Satoshi Nakamoto? (y 4)

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: GnuPG v1.4.7 (MingW32)mQGiBEkJ+qcRBADKDTcZlYDRtP1Q7/ShuzBJzUh9hoVVowogf2W07U6G9BqKW24rpiOxYmErjMFfvNtozNk+33cd/sq3gi05O1IMmZzg2rbF4ne5t3iplXnNuzNh+j+6VxxA16GPhBRprvnng8r9GYALLUpo9Xk17KE429YYKFgVvtTPtEGUlpO1EwCg7FmWdBbRp4mn5GfxQNT1hzp9WgkD/3pZ0cB5m4enzfylOHXmRfJKBMF02ZDnsY1GqeHv/LjkhCusTp2qz4thLycYOFKGmAddpVnMsE/TYZLgpsxjrJsrEPNSdoXk3IgEStowmXjTfr9xNOrB20Qk0ZOO1mipOWMgse4PmIu02X24OapWtyhdHsX3oBLcwDdke8aEgAh8A/sHlK7fL1Bi8rFzx6hb+2yIlD/fazMBVZUe0r2uo7ldqEz5+GeEiBFignd5HHhqjJw8rUJkfeZBoTKYlDKo7XDrTRxfyzNuZZPxBLTj+keY8WgYhQ5MWsSC2MX7FZHaJddYa0pzUmFZmQh0ydulVUQnLKzRSunsjGOnmxiWBZwb6bQjU2F0b3NoaSBOYWthbW90byA8c2F0b3NoaW5AZ214LmNvbT6IYAQTEQIAIAUCSQn6pwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEBjAnoZeyUihXGMAnjiWJ0fvmSgSM3o6Tu3qRME9GN7QAKCGrFw9SUD0e9/YDcqhX1aPMrYue7kCDQRJCfqnEAgA9OTCjLa6Sj7tdZcQxNufsDSCSB+yznIGzFGXXpJk7GgKmX3H9Zl4E6zJTQGXL2GAV4klkSfNtvgsSGJKqCnebuZVwutyq1vXRNVFPQFvLVVo2jJCBHWjb03fmXmavIUtRCHoc8xgVJMQLrwvS943GgsqSbdoKZWdTnfnEq+UaGo+Qfv66NpT3Yl0CXUiNBITZOJcJdjHDTBOXRqomX2WSguv+btYdhQGGQiaEx73XMftXNCxbOpqwsODQns7xTcl2ENru9BNIQMEI7L9FYBQUiKHm1k6RrBy1as8XElS2jEos7GAmlfF1wShFUX+NF1VOPdbN3ZdFoWqsUjKk+QbrwADBQgA9DiD4+uuRhwk2B1TmtrXnwwhcdkE7ZbLHjxBfCsLPAZiPh8cICfV3S418i4H1YCz2ItcnC8KAPoS6mipyS28AU1B7zJYPODBn8E7aPSPzHJfudMKMqiCHljVJrE23xsKTC0sIhhSKcr2G+6ARoG5lwuoqJqEyDrblVQQFpVxBNPHSTquO5PoLXQc7PKgC5SyQuZbEALEkItl2SL2yBRRGOlVJLnvZ6eaovkAlgsbGdlieOr0UwWuJCwzZuBDruMYAfyQBvYfXZun3Zm84rW7Jclp18mXITwGCVHg/P5n7QMbBfZQA25ymkuj636Nqh+c4zRnSINfyrDcID7AcqEb6IhJBBgRAgAJBQJJCfqnAhsMAAoJEBjAnoZeyUihPrcAniVWl5M44RuGctJe+IMNX4eVkC08AJ9v7cXsp5uDdQNo8q38RHwN4Gk8w== =3FTe

-----END PGP PUBLIC KEY BLOCK-----

48

QUIERO CONSEGUIR BITCOIN

49

COMO CONSIGO BITCOIN

• Me hago minero

• Los cambio por otra divisa Euros/Dólar/Yen…

• Brokers (Coinbase / Bitstamp / Kraken )

• Cajeros

• Me pagan por mi trabajo con él

• Coinality.com / Cryptogrind.com / Bitcoin-Vacancy.com• Consigo fracciones en Pay per View

• Faucets (Btcclicks / Bitsforclicks )

50

Cajero Lamassu. Pagando en fiat y escanenado un código QR se obtienen BTC.

Cajero RoboCoin. Primer cajero bidireccional del mundo

51

VEAMOS BITCOIN “POR DENTRO”

52

¿QUÉ NECESITO COMO USUARIO?

• Para usar Bitcoin solo necesito:

• Saber cómo funciona una billetera o monedero digital.

• Que es una dirección Bitcoin• Como asegurar nuestro dinero (probablemente el

paso más importante para evitar que nuestro dinero pueda verse comprometido)

• Y saber cómo enviar y recibir pagos.

53

BILLETERAS

54

DEMO BITCOIN CORE

55

SIGAMOS VIENDO BITCOIN “POR DENTRO”

56

¿QUÉ NECESITO PARA ENTENDERLO?

• Recordar:

• La teoría que hay detrás tiene más de 30 años

• Entender lo que hay por detrás necesitamos:

• Saber que son las funciones Hash

• Como funciona la criptografía de clave pública (firmas digitales)

• Para qué sirven las Curvas Elípticas

• Números aleatorios y nonces

• Transacciones

• Minería (Cadena de Bloques y Prueba de Trabajo)

57

FUNCIONES HASH (1)

• Algoritmo que toma como entrada unos datos de longitud cualquiera (el mensaje) y devuelve una cadena de bits de longitud fija (el hash).

• El propósito de un hash no es ocultar información sino garantizar la integridad

• Características

• Eficiencia en la computación. Rapidez de cálculo

• Resistencia a preimagen. Debe ser computacionalmente muy difícil generar el mensaje a partir del cual se ha derivado el resumen.

• Resistencia a colisión. Debe ser computacionalmente muy difícil generar dos mensajes diferentes y que el hash de ellos sea el mismo.

58

FUNCIONES HASH (2)

• Bitcoin usa: SHA-256 y RIPEMD-160

• Bitcoin los usa para:

• Generar las direcciones Bitcoin

• En el proceso de minería (prueba de trabajo)

• Identificador de transacciones

• Por regla general Bitcoin siempre aplica dos veces el algoritmo de hash:

SHA-256 ( SHA-256 ( “perro” ) )

2efe5fccbc3639fe5fd4582926c84d2e456a58033096cc1d554701d3474f95e9

59

FUNCIONES HASH (3)

Las colisiones existen siempre, no importa la función Hash…

Si probamos 2130 entradas aleatorias, existe una probabilidad del 99,8% de que dos colisionaran

“Solo” es una cuestión de tiempo

60

FUNCIONES HASH (4)

“Solo” es una cuestión de tiempoSe ha comprobado que encontrar una colisión de SHA-256

Se necesitan una complejidad temporal de 2253.5

Con los ordenadores actuales se tardaría varios miles de años en encontrar la colisión

61

FUNCIONES HASH (5)• SHA-256 (Secure Hash Algorithm)

• Pertenece a la familia SHA-2

• Diseñado por la NSA

• Pero validado por el NIST (National Institute of Standards and Technology)

• Acepta entradas de 264

• Genera una salida es de 256 bits

• Para jugar:

• http://passwordsgenerator.net/sha256-hash-generator/

62

FUNCIONES HASH (Y 6)• RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest

• Creado en 1996 por una comunidad académica abierta:

• Hans Dobbertin, Antoon Bosselaers y Bart Preneel

• Genera una salida de 160 bits (tiene versiones 128, 256 y 320)

• Bitcoin lo utiliza cuando necesita crear salidas más cortas de 256 bits

• No hay una razón aparente por el cual se eligió la combinación SHA-256 + RIPEDM-160

• Se suele aceptar que fue porque es la combinación que genera los hashes más cortos que se pueden considerar seguros

63

CRIPTOGRAFÍA DE CLAVE PUBLICA (1)

• Criptografía Asimétrica / Criptografía de Dos Claves

• Se basa en el uso de dos claves para el envío de un mensaje:

• Ambas claves pertenecen a la misma persona

• Una clave es pública (todo el mundo la conoce)

• Otra clave es privada (solo la conoce el emisor del mensaje)

• Son complementarias

• Una de sus aplicaciones es la Firma Digital

• Bitcoin usa las firmas digitales para verificar quien está autorizado a transferir las monedas

Tres tipos de problemas matemático en el que basan su seguridad:

• El Problema de Factorización Entera: RSA y Rabin Williams (RW)

• El Problema del Logaritmo Discreto: Diffie Hellman (DH) y el sistema DSA

• El Problema del Logaritmo Discreto Elíptico: DSAE, NRE, MQV y por supuesto las curvas elípticas (CEE).

Lectura recomendada: http://www.uv.es/~ivorra/Libros/Elipticas.pdf

64

CRIPTOGRAFÍA DE CLAVE PUBLICA (2)

1. Ana redacta un mensaje2. Ana cifra el mensaje con la clave pública de David3. Ana envía el mensaje cifrado a David a través de Internet4. David recibe el mensaje cifrado y lo descifra con su clave privada5. David ya puede leer el mensaje original que le mandó Ana

65

CRIPTOGRAFÍA DE CLAVE PUBLICA (3)

1. David redacta un mensaje2. David firma digitalmente el mensaje con su clave privada3. David envía el mensaje firmado digitalmente a Ana a través de Internet4. Ana recibe el mensaje firmado digitalmente y comprueba su autenticidad usando la clave pública de David5. Ana ya puede leer el mensaje con total seguridad de que ha sido David el remitente

IntegridadSe puede detectar si el mensaje original fue modificado.

No repudioEl autor del mensaje no puede decir que no lo hizo.

AutenticidadEl emisor del mensaje queda acreditado, y su “firma electrónica” tendrá la misma validez que una firma autógrafa.

ConfidencialidadLa información contenida en el mensaje puede ser cifrada o codificada, para que sólo el receptor pueda descifrarla.

66

CRIPTOGRAFÍA DE CLAVE PUBLICA (Y 4)• El tamaño de las claves importa:

• A mayor tamaño de clave más resistente es a un criptoanálisis

• Más difícil es aleatoriamente generar dos claves iguales

• Bitcoin:

• Utiliza tamaños de clave de 256 bits

• Para generarlas utiliza Curvas Elípticas

67

CURVAS ELÍPTICAS (1)• Propuestas por Neal Koblitz y Victor Miller en 1985

• Se basan en las matemáticas de las curvas elípticas

• Es un sistema muy seguro de generación de claves:

• Pero es más eficiente, rápida y escalable

• Genera claves más pequeñas con el mismo nivel de seguridad

• Se utiliza por Bitcoin para obtener las claves públicas (las direcciones Bitcoin) y firmar/verificar las transacciones

RSA CURVAS ELIPTICAS

TAMAÑO CLAVE 2048 256

120 120 120

68

CURVAS ELÍPTICAS (Y 2)• Supongamos el siguiente escenario:

• Otros sistemas suelen usar números primos muy grandes y realizar operaciones con ellos

• Las curvas elípticas en vez de números primos usan coordenadas en una curva elíptica, que en general se corresponden con esta ecuación:

y2 = x3 + ax + b

CLAVE PRIVADA 456 645 835 2345

ALGORITMO 4*5*6 6*4*5 8*3*5 2*3*4*5

CLAVE PUBLICA 120 120 120 120

Irreversibilidad

¿A quien pertenece 120?

Según los valores de a y b la forma de la curva es diferente

Bitcoin usa los valores a = 0 y b = 7

69

BITCOIN ADDRESSES (1)• Sirve para reclamar la posesión del dinero, el dinero se asocia a ella.

• Tienen una longitud de 34 caracteres y diferencias mayúsculas de minúsculas

• Comienzan por 1 o por 3 (multifirma)

• Está compuesta por un par de claves: Criptografía de clave pública.

• Se pueden generar por cualquier persona y sin conexión

• Esto es debido a que no hay constancia de su existencia hasta que recibe un pago

• Se basa en la criptografía de Curva Elíptica que acabamos de ver

• Llamamos Monedero a un fichero donde almacenamos varias direcciones.

• Pueden ser impresas en papel con códigos QR.

• El proceso de generación lleva 10 pasos

• Ejemplo: bitaddress.org

Se permite del 1 al 9, de la A a la Z y de la a a la z, y se omiten los caracteres siguientes: 0 (cero), O (o

mayúscula), I (i mayúscula) y l (L minúscula)

70

BITCOIN ADDRESSES (2)• Paso 1: Tener una clave privada del tipo ECDSA de 65 bytes (de estos 32 bytes se

corresponden a la coordenada X y otros 32 bytes corresponden a la coordenada Y)

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

• Paso 2: Generar la clave pública a partir de la anterior, obtendríamos una ristra de datos como los siguientes (Satoshi podría haber decidido usarla como la dirección Bitcoin, sin embargo por motivos obvios no lo hizo):

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

71

BITCOIN ADDRESSES (3)• Paso 3: Hacer un hash con SHA-256 sobre la clave pública anterior:

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

• Paso 4: Aplicamos un hash con RIPEMD-160 sobre el resultado anterior:

010966776006953D5567439E5E39F86A0D273BEE

• Paso 5: Añadir un byte adicional al hash de antes para obtener una versión RIPEMD-160 extendida. Este byte es el denominado byte de versión, y permite distinguir una dirección Bitcoin del de otras criptomonedas. Si estamos usando la red principal de Bitcoin será un 0x00 (formato hexadecimal):

00010966776006953D5567439E5E39F86A0D273BEE

72

BITCOIN ADDRESSES (4)• Paso 6: Toca hacer otro hash 256 sobre el RIPEMD-160 extendido:

445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094

• Paso 7: Y otro hash adicional SHA-256 sobre el anterior que nos va a servir para crear los dígitos de control de la dirección:

D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30

• Paso 8: Seleccionar los primeros 4 bytes del último hash, este será el identificativo checksum de la dirección pública:

D61967F6 (igual es más fácil ver los 4 bytes de esta forma D6-19-67-F6)

73

BITCOIN ADDRESSES (5)• Paso 9: Añadir los 4 bytes del checksum del punto anterior al hash

extendido RIPEMD-160 del punto 4, obteniendo una dirección Bitcoin de 25 bytes binaria:

00010966776006953D5567439E5E39F86A0D273BEED61967F6

• Paso 10: Convertir el resultado de la cadena anterior a una cadena con Base58 utilizando el codificado Base58Check (crea los 34 caracteres)

16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

74

BITCOIN ADDRESSES (6)• Todo esto afecta a los tipos de Billetera. Dos clases:

• No deterministas

• Cada clave privada se asocia a una clave publica

• Si pierdo la clave privada no puede restaurar la dirección

• Deterministas

• para generar las direcciones públicas la curvas elípticas tienen como entrada una semilla que usan en sus cálculos

• Si conozco la semilla puedo restaurar mi billetera si la pierdo

• Hay dos tipos:

• Billetera Determinista de Tipo 1

• Billetera Determinista Jerárquica de Tipo 2

75

BITCOIN ADDRESSES (Y 7)• Billetera Determinista de Tipo 1

• Es el modelo más simple

• Para generar la clave privada se parte de ejecutar la función SHA256 (cadena conocida + n), donde n es un código ASCII que comienza en 1 y se va incrementando según se van necesitando nuevas claves.

• Billetera Determinista Jerárquica de Tipo 2

• Se describe en la BIP 0032 (Gregory Maxwell)

• La semilla es un valor aleatorio de 128 bits (o 12 palabras comunes en inglés para ayudarle a recordar.

• La semilla es usada después de realizar 100.000 pasadas sobre SHA256 a fin de mejorar la fortaleza y reducir los ataques contra palabras usadas por el usuario que puedan resultar fáciles de atacar.

76

DIRECCIONES DE VANIDAD• Es un caso particular de las direcciones Bitcoin

• Aumentan el riesgo de ser identificado

• Son direcciones que intentan que la secuencia de caracteres que forma la dirección tenga un formato más amigable y amable, como una forma de personalizarla

1LibroBitcoi8ALj6mfBsbifRoD4miY36v

1SantiagoFVj8ALj6mfBsbifRoD4miY36v

• Una vez generadas se pueden importar dentro de las billeteras

importprivkey

77

NÚMEROS ALEATORIOS Y NONCES

• nonces son números aleatorios “especiales” que, en principio, sólo se utilizan una vez (number used only once)

• Bitcoin los utiliza para la generación de los bloques en la prueba de trabajo

• Las curvas elípticas también los usan en sus operaciones internas

78

TRANSACCIONES (1)• Son registros firmados digitalmente que cambian el propietario de fondos

asignándolos a otra dirección

• Se componen de:

• entradas: registros que referencian los fondos (direcciones) de transacciones previas

• salidas: registros que determinan el nuevo propietario de los fondos transferidos (direccion)

• Las salidas actúan como entradas de otras transacciones

• Siempre se utiliza todo el dinero que hay en la entrada aunque la cantidad a pagar sea menor

• La diferencia se asocia a una salida en una dirección de vuelta (el equivalente a que nos den el cambio)

79

TRANSACCIONES (2)• Cada entrada (input) de una transacción es firmada digitalmente por el pagador,

lo que desbloquea los fondos contenidos en la dirección asociada a la clave privada utilizada para firmar

• Si la firma no es válida la transacción se invalida y se desecha

• Esto lo hace el primer nodo que la recibe

• Si Bitcoin(entrada) > Bitcoin (salida)

• se considera tasa de transacción

• quien incluya esa transacción en la cadena de bloques puede disponer de esa cantidad

• Transacciones con tasas mayores son procesadas más rápido

• Hay transacciones especiales que suponen la creación de nuevo Bitcoin que son generadas a través de la minería por lo que no tienen entradas

80

TRANSACCIONES (3)• Tipos de transacciones (1):

Normales

81

TRANSACCIONES (4)• Tipos de transacciones (2):

Transacciones de agregación de fondos

82

TRANSACCIONES (5)• Tipos de transacciones (y 3):

Transacciones de distribución de fondos

83

TRANSACCIONES (6)• 1 . El usuario firma la transacción y la envía a un minero.

84

TRANSACCIONES (7)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

85

TRANSACCIONES (8)• 1 . El usuario firma la transacción (se valida por un nodo) y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

86

TRANSACCIONES (9)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

• Pero… ¿Y si alguien controla el 51% de la red?

87

TRANSACCIONES (10)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

• Pero… ¿Y si alguien controla el 51% de la red?

• Existe algo llamado “Cadena de Bloques”. Funciona como un libro de cuentas de todas las transacciones hechas hasta ahora en BitCoin.

88

TRANSACCIONES (Y 11)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

• Pero… ¿Y si alguien controla el 51% de la red?

• Existe algo llamado “Cadena de Bloques”. Funciona como un libro de cuentas de todas las transacciones hechas hasta ahora en BitCoin.

• Cuando un minero descubre un nuevo bloque (similar a una nueva página de este libro de cuentas), graba en él las nuevas transacciones.

Sólo entonces podemos garantizar la transacción.

89

PERO NO TODO ES TAN FACIL

90

BTSL – BITCOIN TRANSACTION SCRYPT (1)

• El movimiento del dinero no es tan simple como cambiar un dato en una base de datos distribuida

• El movimiento de dinero se hace previa a la ejecución de un script que determina las reglas que debe seguir ese movimiento de dinero

• Ese script está programado en BTSL o Bitcoin Transaction Scrypt Language

• Opera con una estructura tipo LIFO

• Las operaciones se ejecutan de izquierda a derecha

• No es Turing Completo (no tiene bucles)

P3 P1

m=“P3 envia 3 monedas a P1”s=Sig(sk3,m)

If Ver(pk3,m,s) = OKandP3 tiene un balance de 3thenreturn accept

BTSL – BITCOIN TRANSACTION SCRYPT (2)

92

BTSL – BITCOIN TRANSACTION SCRYPT (Y 3)

93

CADENA DE BLOQUES (1)• Es un libro de cuentas con todos los movimientos de BTC.

• Su elemento constituyente es el Bloque

• Crear el siguiente bloque de la cadena requiere mucho tiempo y computación, los mineros trabajan buscando el siguiente bloque.

• Los mineros almacenan temporalmente las transacciones y las distribuyen entre ellos, cuando uno encuentra un nuevo bloque válido graba las transacciones en el nuevo bloque y quedan validadas.

• Puede haber varias cadenas, pero los mineros escuchan la mas larga y descartan las más cortas.

• Generar una cadena más larga que la que ya existe sería improbable en tiempo y esfuerzo (ataque del 51%)

94

CADENA DE BLOQUES (2)

• Un bloque es un registro que contiene transacciones que se encontraban pendientes

• Se generan aproximadamente cada 10 minutos

• En función del poder computacional se ajusta la dificultad de la red para que tienda a 10 minutos

• Al resolver un bloque el minero recibe la recompensa (12,5 BTCs). Esta recompensas recibe el nombre de coinbase

• Cada 4 años (210.000 bloques) se produce un halving que reduce la recompensa a la mitad (la recompensa tiende a 0 asintóticamente - año 2140)

• A medida que se añaden bloques, las transacciones son más seguras (esto se denomina confirmación)

95

CADENA DE BLOQUES (3)• Un bloque es una estructura de datos como la siguiente:

96

CADENA DE BLOQUES (4)• Cada minero compite con el resto para resolver un problema

criptográfico y añadir su bloque a la cadena de bloques.

• Es un problema tipo de prueba y error (fuerza bruta) que recibe el nombre de Prueba de Trabajo

• Consiste en calcular el valor de un Hash con un número de 0’s por delante usando los datos del bloque anterior

• Recalcula el valor del Nonce (usando los datos de la cabecera)

• La dificultad del problema se mide en hashes/s (número de combinaciones/s), y se regula automáticamente cada 2016 bloques (aprox. 2 semanas) con la potencia computacional de la red.

• Esto se hace para evitar un hackeo del double spending.

• Un atacante entraría en una carrera con el resto de nodos para romper la integridad de la cadena de bloques.

BLOQUE GENESIS

El 3 de enero de 2009, a las 18:15:05 horas, la Red Bitcoin se pone en marcha con el primer bloque: El Bloque Genesis (Altura 0)

Todos los nodos tienen su propia copia codificada que no puede ser alterada

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

97

CADENA DE BLOQUES (5)• Bloques Caducados y Bloques Huérfanos

• Todos los mineros compiten contra todos

• ¿Pueden dos mineros resolver el mismo bloque a la vez?

• Puede suceder

• Pero solo uno cobrará la recompensa

• ¿Quién la cobrará?

• Gana el que anexe su bloque a la cadena más larga

• EL bloque perdedor estará caducado

• Un bloque que no tiene padre se llama bloque huérfano

• Orphan block pool

98

CADENA DE BLOQUES (6)

Minero A Minero B

Bloque B1

Bloque B2

B1 y B2 son válidosB1 y B2 generados simultáneamenteB1 y B2 se propagan por la Red

Dos opciones

...

... Bloque B1

Bloque B3

Longitud: N+2

Bloque B2

Longitud: N+1B2 es válido pero no pertenece a la cadena más larga. Se desecha. Caducado

99

OTROS USOS PARA BITCOIN

100

OTROS USOS DE BITCOIN

• Al igual que con la aparición de Internet aparecieron conceptos nuevos como:

• web

• correo electrónico

• comercio online

• mensajería instantánea

• redes sociales

• Cloud Computing

• Etc…

• Estamos en una situación muy similar…

101

OTROS USOS DE BITCOIN• Coloured coins: registro de la propiedad en la red bitcoin. Consiste en asociar a una

unidad de cuenta en la red (1 Satoshi) no al valor monetario de esa unidad de cuenta, sino a un activo o a información. Permitiría comerciar con cualquier tipo de activo (acciones, inmuebles, oro, etc.) o gestionar información sensible (votos, etc). Por ejemplo, si dos empresas A y B firman un contrato legal donde se comprometen a confíar en esa red automatizada, podría llegar a tener validez jurídica.

• Smart contracts: es un contrato programable. Se programa un contrato con unas reglas, se sube el contrato a la red, y la transacción queda pendiente hasta que se verifiquen las reglas del contrato. Automatizaría muchos procesos en finanzas (derivados) y economía (contratos legales, crowdfunding, etc.).

• Smart property: la propiedad reconoce al dueño al estar en un registro de la propiedad en Internet (coloured coins). Mediante identificación biométrica, se podrían usar con smart contracts. Ejemplo: Yo te presto 3.5 BTC, y tú pones como aval tu coche. Si no me devuelves el dinero, el coche ya no te reconoce como dueño.

102

OTROS USOS DE BITCOIN• Internet de las cosas: sensores que ofrezcan datos a cambio de fracciones de

bitcoin o dispositivos con monederos integrados.

Ejemplo: frigorífico inteligente que nos permita hacer la compra a través de Internet con Bitcoin.

Ejemplo: una estación meteorológica, mantenida por un particular, que se autosostenga ofreciendo sus datos a cambio de fracciones de Bitcoin.

103

¿PREGUNTAS?

“BitCoin is the largest socio-economic experiment the world has never seen”

(Charlie Shrem, BitCoin Foundation)

Recommended