SlideShare una empresa de Scribd logo
Por: Alberto Gómez Toribio @gotoalberto
- Son activos que son valiosos por su escasez
#bitcoindevspain
¿Qué es el dinero?
- Son activos que son valiosos por su escasez
- Sirven para intercambiarlos por bienes y servicios
#bitcoindevspain
¿Qué es el dinero?
- Son activos que son valiosos por su escasez
- Sirven para intercambiarlos por bienes y servicios
- El primero en utilizarse fue el Oro por su escasez
#bitcoindevspain
¿Qué es el dinero?
- Son activos que son valiosos por su escasez
- Sirven para intercambiarlos por bienes y servicios
- El primero en utilizarse fue el Oro por su escasez
- Se crea la moneda Fiducidaria: Los gobiernos emiten
titulos a cambio de oro.
#bitcoindevspain
¿Qué es el dinero?
- Son activos que son valiosos por su escasez
- Sirven para intercambiarlos por bienes y servicios
- El primero en utilizarse fue el Oro por su escasez
- Se crea la moneda Fiducidaria: Los gobiernos emiten
títulos a cambio de oro.
- Nadie viene a reclamar ese oro con su título:
¿Emitimos títulos sin respaldo a cambio de ese oro?
#bitcoindevspain
¿Qué es el dinero?
- Son activos que son valiosos por su escasez
- Sirven para intercambiarlos por bienes y servicios
- El primero en utilizarse fue el Oro por su escasez
- Se crea la moneda Fiducidaria: Los gobiernos emiten
títulos a cambio de oro.
- Nadie viene a reclamar ese oro con su título:
¿Emitimos títulos sin respaldo a cambio de ese oro?
- En 1971, Nixon dice que se acabó reclamar ese oro y
convierte la moneda Fiducidaria en moneda FIAT,
basada en la deuda.
#bitcoindevspain
¿Qué es el dinero?
- Son activos que son valiosos por su escasez
- Sirven para intercambiarlos por bienes y servicios
- El primero en utilizarse fue el Oro por su escasez
- Se crea la moneda Fiducidaria: Los gobiernos emiten
títulos a cambio de oro.
- Nadie viene a reclamar ese oro con su título:
¿Emitimos títulos sin respaldo a cambio de ese oro?
- En 1971, Nixon dice que se acabó reclamar ese oro y
convierte la moneda Fiducidaria en moneda FIAT,
basada en la deuda.
- Los bancos centrales controlan la divisa.
#bitcoindevspain
¿Qué es el dinero?
- Es una moneda electrónica.
#bitcoindevspain
¿Qué es el Bitcoin ?
- Es una moneda electrónica.
- No tiene autoridad central (Banco Central), se basa en un
sistema descentralizado.
#bitcoindevspain
¿Qué es el Bitcoin ?
- Es una moneda electrónica.
- No tiene autoridad central (Banco Central), se basa en un
sistema descentralizado.
- Tiene las mismas propiedades que una moneda física.
#bitcoindevspain
¿Qué es el Bitcoin ?
- Es una moneda electrónica.
- No tiene autoridad central (Banco Central), se basa en un
sistema descentralizado.
- Tiene las mismas propiedades que una moneda física.
- El dinero se transfiere de persona a persona de forma
irreversible.
#bitcoindevspain
¿Qué es el Bitcoin ?
- Es una moneda electrónica.
- No tiene autoridad central (Banco Central), se basa en un
sistema descentralizado.
- Tiene las mismas propiedades que una moneda física.
- El dinero se transfiere de persona a persona de forma
irreversible.
- Está limitada, no se pueden crear más de 21M de BTC
#bitcoindevspain
¿Qué es el Bitcoin ?
- Es una moneda electrónica.
- No tiene autoridad central (Banco Central), se basa en un
sistema descentralizado.
- Tiene las mismas propiedades que una moneda física.
- El dinero se transfiere de persona a persona de forma
irreversible.
- Está limitada, no se pueden crear más de 21M de BTC.
- Es divisible, habitualmente hablamos de mBTC o uBTC.
#bitcoindevspain
¿Qué es el Bitcoin ?
- Es una moneda electrónica.
- No tiene autoridad central (Banco Central), se basa en un
sistema descentralizado.
- Tiene las mismas propiedades que una moneda física.
- El dinero se transfiere de persona a persona de forma
irreversible.
- Está limitada, no se pueden crear más de 21M de BTC.
- Es divisible, habitualmente hablamos de mBTC o uBTC.
- Propone un modelo deflaccionario frente a la inflacción
infinita.
#bitcoindevspain
¿Qué es el Bitcoin ?
#bitcoindevspain
Principios de las monedas
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
#bitcoindevspain
ORO EURO BITCOIN
ESCASEZ
PORTABILIDAD
FUNGIBILIDAD
VERIFICACION
DIVISIBILIDAD
PRIVACIDAD
ACEPTACION
Principios de las monedas
- Sirven para firmar transacciones y operar con el dinero.
#bitcoindevspain
Bitcoin Addresses
- Sirven para firmar transacciones y operar con el dinero.
- Criptografía de Curva Elíptica: Sin aceleración de hardware.
#bitcoindevspain
Bitcoin Addresses
- Sirven para firmar transacciones y operar con el dinero.
- Criptografía de Curva Elíptica: Sin aceleración de hardware.
- Podemos generar la clave pública a partir de la privada.
#bitcoindevspain
Bitcoin Addresses
- Sirven para firmar transacciones y operar con el dinero.
- Criptografía de Curva Elíptica: Sin aceleración de hardware.
- Podemos generar la clave pública a partir de la privada.
- El minero las almacena en un fichero llamado wallet.
#bitcoindevspain
Bitcoin Addresses
- Sirven para firmar transacciones y operar con el dinero.
- Criptografía de Curva Elíptica: Sin aceleración de hardware.
- Podemos generar la clave pública a partir de la privada.
- El minero las almacena en un fichero llamado wallet.
- Para generar un cheque, nos basta con imprimir la clave
privada en formato QR.
#bitcoindevspain
Bitcoin Addresses
- Son movimientos de dinero firmados digitalmente.
#bitcoindevspain
Transacciones
- Son movimientos de dinero firmados digitalmente.
- Habitualmente el minero genera y firma la transacción,
pero las transacciones pueden ser firmadas offline.
#bitcoindevspain
Transacciones
- Son movimientos de dinero firmados digitalmente.
- Habitualmente el minero genera y firma la transacción,
pero las transacciones pueden ser firmadas offline.
- La transacción es enviada a un minero y replicada, cuando
el 51% de los mineros la replica, se confía en que se
insertará en la blockchain.
#bitcoindevspain
Transacciones
- Son movimientos de dinero firmados digitalmente.
- Habitualmente el minero genera y firma la transacción,
pero las transacciones pueden ser firmadas offline.
- La transacción es enviada a un minero y replicada, cuando
el 51% de los mineros la replica, se confía en que se
insertará en la blockchain.
- ¿Y si alguien controla el 51% de la red?
#bitcoindevspain
Transacciones
- Son movimientos de dinero firmados digitalmente.
- Habitualmente el minero genera y firma la transacción,
pero las transacciones pueden ser firmadas offline.
- La transacción es enviada a un minero y replicada, cuando
el 51% de los mineros la replica, se confía en que se
insertará en la blockchain.
- ¿Y si alguien controla el 51% de la red?
#bitcoindevspain
Transacciones
#bitcoindevspain
Transacciones
Prev Output Amount From Type ScriptSig
6d020afb… 44,22 1BD5b401… Address A3a6748d…
Index Amount To Type ScriptPubKey
0 44,219998 1NC83Jv… Address Bfa5263e1f…
1 0,000012 1JUKuRz… Address 6a0d4ed87…
Outputs
Inputs
- Existe la necesidad de codificar mensajes en las
transacciones.
#bitcoindevspain
Messaging
- Existe la necesidad de codificar mensajes en las
transacciones.
- Los mensajes quedan almacenados permanentemente.
#bitcoindevspain
Messaging
- Existe la necesidad de codificar mensajes en las
transacciones.
- Los mensajes quedan almacenados permanentemente.
- Algunos comienzan añadiendo un OutputScript adicional
donde codifican un mensaje UTF-8 serializado en Base64.
#bitcoindevspain
Messaging
- Existe la necesidad de codificar mensajes en las
transacciones.
- Los mensajes quedan almacenados permanentemente.
- Algunos comienzan añadiendo un OutputScript adicional
donde codifican un mensaje UTF-8 serializado en Base64.
- Blockchain.info toma la iniciativa y desarrolla su propio
sistema de messaging.
#bitcoindevspain
Messaging
- Existe la necesidad de codificar mensajes en las
transacciones.
- Los mensajes quedan almacenados permanentemente.
- Algunos comienzan añadiendo un OutputScript adicional
donde codifican un mensaje UTF-8 serializado en Base64.
- Blockchain.info toma la iniciativa y desarrolla su propio
sistema de messaging.
- En 2011 se libera la versión 1.0 del BTCmsg Protocol
- 2 primeros caracteres del output script indican si hay mensaje (02) o no(01)
- El mensaje se codifica en Hexadecimal
- Cada grupo de 4 chars hex representan 2 letras ASCII), valores entre 0xffff y 0x65535.
(Enseñar btcmsgTools)
#bitcoindevspain
Messaging
- La BlockChain es una lista de todas las transacciones
hechas en Bitcoin, particionadas en bloques y almacenada
de forma distribuida.
#bitcoindevspain
Blockchain
- La BlockChain es una lista de todas las transacciones
hechas en Bitcoin, particionadas en bloques y almacenada
de forma distribuida.
- Cuando un bloque es generado, las transacciones que aún
no han sido insertadas en ninguno y que están siendo
replicadas temporalmente por los mineros, se validan.
#bitcoindevspain
Blockchain
- La BlockChain es una lista de todas las transacciones
hechas en Bitcoin, particionadas en bloques y almacenada
de forma distribuida.
- Cuando un bloque es generado, las transacciones que aún
no han sido insertadas en ninguno y que están siendo
replicadas temporalmente por los mineros, se validan.
- Puede haber varias cadenas, pero los mineros escuchan la
mas larga y descartan el resto.
#bitcoindevspain
Blockchain
- La BlockChain es una lista de todas las transacciones
hechas en Bitcoin, particionadas en bloques y almacenada
de forma distribuida.
- Cuando un bloque es generado, las transacciones que aún
no han sido insertadas en ninguno y que están siendo
replicadas temporalmente por los mineros, se validan.
- Puede haber varias cadenas, pero los mineros escuchan la
mas larga y descartan el resto.
- Generar un bloque requiere mucha capacidad de cómputo,
tiempo y dinero, crear una cadena más larga que la actual
desde cero es altamente improbable.
#bitcoindevspain
Blockchain
- “Minar” es generar colisiones en funciones Hash SHA256.
#bitcoindevspain
Minería
- “Minar” es generar colisiones en funciones Hash SHA256.
- La minería consiste en generar el siguiente bloque de la
cadena de bloques, tal que:
- ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE)
- ID_NUEVO_BLOQUE debe ser un hash SHA2 válido.
- ID_NUEVO_BLOQUE debe comenzar por N ceros.
#bitcoindevspain
Minería
- “Minar” es generar colisiones en funciones Hash SHA256.
- La minería consiste en generar el siguiente bloque de la
cadena de bloques, tal que:
- ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE)
- ID_NUEVO_BLOQUE debe ser un hash SHA2 válido.
- ID_NUEVO_BLOQUE debe comenzar por N ceros.
- La minería genera dinero mediante:
- Cada nuevo bloque permite generar 25BTC que se queda el minero.
- El minero se queda con la comisión donada en cada transacción.
#bitcoindevspain
Minería
- “Minar” es generar colisiones en funciones Hash SHA256.
- La minería consiste en generar el siguiente bloque de la
cadena de bloques, tal que:
- ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE)
- ID_NUEVO_BLOQUE debe ser un hash SHA2 válido.
- ID_NUEVO_BLOQUE debe comenzar por N ceros.
- La minería genera dinero mediante:
- Cada nuevo bloque permite generar 25BTC que se queda el minero.
- El minero se queda con la comisión donada en cada transacción.
- Si se generan dos bloques a la vez, el más complejo
prospera (el que tiene mas ceros al principio).
#bitcoindevspain
Minería
- “Minar” es generar colisiones en funciones Hash SHA256.
- La minería consiste en generar el siguiente bloque de la
cadena de bloques, tal que:
- ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE)
- ID_NUEVO_BLOQUE debe ser un hash SHA2 válido.
- ID_NUEVO_BLOQUE debe comenzar por N ceros.
- La minería genera dinero mediante:
- Cada nuevo bloque permite generar 25BTC que se queda el minero.
- El minero se queda con la comisión donada en cada transacción.
- Si se generan dos bloques a la vez, el más complejo
prospera (el que tiene mas ceros al principio).
- Si se generan bloques idénticos:
- La La cadena más compleja prospera.
#bitcoindevspain
Minería
#bitcoindevspain
Minería
- El cliente minero de Bitcoin dispone de un API RPC-JSON
- Podemos usar un cliente propio o utilizar un API de
terceros como la de Blockchain.info.
- Configuración necesaria en el fichero bitcoin.conf:
server=1
rpcuser=username
rpcpassword=password
rpcport=8332
- En MacOS el fichero no existe, y debe crearse en:
/Users/$USER/Library/Application Support/Bitcoin
#bitcoindevspain
Bitcoin RPC API
- Las principales instrucciones son:
<readable json> decoderawtransaction <hex string>
<private key> dumpprivkey <accountName>
<accountName> getbalance <accountName, confirmations>
<public key> getnewaddress <accountName>
<hex string> getrawtransaction <transaction id>
<transaction id> sendfrom <from accountName, to public
key, amount, comment>
<hex string> signrawtransaction <{…json tx data…}>
<transaction id> sendrawtransaction <hex string>
<hex string> createrawtransaction <hex string>
#bitcoindevspain
Bitcoin RPC API
- Añadir clave privada existente:
$ curl --data-binary '{"jsonrpc": "1.0", "id":"rpc", "method":
"importprivkey", "params": ["PRIVATEKEY","alias"] }' -H 'content-
type: text/plain;' http://bitcoin:password@127.0.0.1:8332
- Consultar la clave publica de la cuenta que acabamos de añadir:
$ curl --data-binary '{"jsonrpc": "1.0", "id":"rpc", "method":
"getaddressesbyaccount", "params": ["ACCOUNT_NAME"] }' -H 'content-
type: text/plain;' http://bitcoin:password@127.0.0.1:8332
- Enviar dinero
$ curl --data-binary '{"jsonrpc": ".0", "id":"rpc", "method":
"sendfrom", "params": ["FROM_ACCOUNTNAME", "TO_PUBLIC_KEY",AMOUNT]
}' -H 'content-type: text/plain;'
http://bitcoin:password@127.0.0.1:8332
#bitcoindevspain
Bitcoin RPC API
- Obtenemos la transacción en RAW
$ curl --data-binary '{"jsonrpc": "1.0", "id":"getrawtransaction",
"method": "getrawtransaction", "params": [”TRANSACTION_ID"] }' -H
'content-type: text/plain;' http://bitcoin:password@127.0.0.1:8332
- Decodificamos la transacción en RAW:
$ curl --data-binary '{"jsonrpc": "1.0", "id":"rpc", "method":
"decoderawtransaction", "params": ["HEX_TRANSACTION"] }' -H
'content-type: text/plain;' http://bitcoin:password@127.0.0.1:8332
#bitcoindevspain
Bitcoin RPC API
BONUS! HANDS ON LAB!
Juego de Piedra-Papel-Tijera-Lagarto-Spock que exige
un pago en BTC si pierdes y envía dinero en BTC si
ganas :)
#bitcoindevspain
Codigo: https://github.com/gotoalberto/bitcoin-rock
- La cadena de bloques ocupa aproximadamente 40GB que
se almacena de forma distribuida.
#bitcoindevspain
Algunos datos…
- La cadena de bloques ocupa aproximadamente 40GB que
se almacena de forma distribuida.
- Bitcoin mueve más de 24K € por minuto en transacciones
a día de hoy (con una cotización a 1BTC/90€).
#bitcoindevspain
Algunos datos…
- La cadena de bloques ocupa aproximadamente 40GB que
se almacena de forma distribuida.
- Bitcoin mueve más de 24K € por minuto en transacciones
a día de hoy (con una cotización a 1BTC/90€).
- Bitcoin tiene de media 51K transacciones diarias. (Sí,
soporta muchas mas, ver Escalabilidad en Bitcoin Wiki)
#bitcoindevspain
Algunos datos…
- La cadena de bloques ocupa aproximadamente 40GB que
se almacena de forma distribuida.
- Bitcoin mueve más de 24K € por minuto en transacciones
a día de hoy (con una cotización a 1BTC/90€).
- Bitcoin tiene de media 51K transacciones diarias. (Sí,
soporta muchas mas, ver Escalabilidad en Bitcoin Wiki)
- La media es de 5.000 € por transaccion y 35
transacciones por minuto.
#bitcoindevspain
Algunos datos…
- La cadena de bloques ocupa aproximadamente 40GB que
se almacena de forma distribuida.
- Bitcoin mueve más de 24K € por minuto en transacciones
a día de hoy (con una cotización a 1BTC/90€).
- Bitcoin tiene de media 51K transacciones diarias. (Sí,
soporta muchas mas, ver Escalabilidad en Bitcoin Wiki)
- La media es de 5.000 € por transaccion y 35
transacciones por minuto.
- Un minero gana de media 2500€ por genererar un bloque
y 30€ en comisiones (con una cotización de a 1BTC/90€)
#bitcoindevspain
Algunos datos…
Fuente: Blockchain.info
{
"jsonrpc” : "1.0",
"id” : "rpc",
"method” : "terminate", "params”
: [
”this_conference”
]
}
:=)

Más contenido relacionado

Desarrollo con Bitcoin

  • 1. Por: Alberto Gómez Toribio @gotoalberto
  • 2. - Son activos que son valiosos por su escasez #bitcoindevspain ¿Qué es el dinero?
  • 3. - Son activos que son valiosos por su escasez - Sirven para intercambiarlos por bienes y servicios #bitcoindevspain ¿Qué es el dinero?
  • 4. - Son activos que son valiosos por su escasez - Sirven para intercambiarlos por bienes y servicios - El primero en utilizarse fue el Oro por su escasez #bitcoindevspain ¿Qué es el dinero?
  • 5. - Son activos que son valiosos por su escasez - Sirven para intercambiarlos por bienes y servicios - El primero en utilizarse fue el Oro por su escasez - Se crea la moneda Fiducidaria: Los gobiernos emiten titulos a cambio de oro. #bitcoindevspain ¿Qué es el dinero?
  • 6. - Son activos que son valiosos por su escasez - Sirven para intercambiarlos por bienes y servicios - El primero en utilizarse fue el Oro por su escasez - Se crea la moneda Fiducidaria: Los gobiernos emiten títulos a cambio de oro. - Nadie viene a reclamar ese oro con su título: ¿Emitimos títulos sin respaldo a cambio de ese oro? #bitcoindevspain ¿Qué es el dinero?
  • 7. - Son activos que son valiosos por su escasez - Sirven para intercambiarlos por bienes y servicios - El primero en utilizarse fue el Oro por su escasez - Se crea la moneda Fiducidaria: Los gobiernos emiten títulos a cambio de oro. - Nadie viene a reclamar ese oro con su título: ¿Emitimos títulos sin respaldo a cambio de ese oro? - En 1971, Nixon dice que se acabó reclamar ese oro y convierte la moneda Fiducidaria en moneda FIAT, basada en la deuda. #bitcoindevspain ¿Qué es el dinero?
  • 8. - Son activos que son valiosos por su escasez - Sirven para intercambiarlos por bienes y servicios - El primero en utilizarse fue el Oro por su escasez - Se crea la moneda Fiducidaria: Los gobiernos emiten títulos a cambio de oro. - Nadie viene a reclamar ese oro con su título: ¿Emitimos títulos sin respaldo a cambio de ese oro? - En 1971, Nixon dice que se acabó reclamar ese oro y convierte la moneda Fiducidaria en moneda FIAT, basada en la deuda. - Los bancos centrales controlan la divisa. #bitcoindevspain ¿Qué es el dinero?
  • 9. - Es una moneda electrónica. #bitcoindevspain ¿Qué es el Bitcoin ?
  • 10. - Es una moneda electrónica. - No tiene autoridad central (Banco Central), se basa en un sistema descentralizado. #bitcoindevspain ¿Qué es el Bitcoin ?
  • 11. - Es una moneda electrónica. - No tiene autoridad central (Banco Central), se basa en un sistema descentralizado. - Tiene las mismas propiedades que una moneda física. #bitcoindevspain ¿Qué es el Bitcoin ?
  • 12. - Es una moneda electrónica. - No tiene autoridad central (Banco Central), se basa en un sistema descentralizado. - Tiene las mismas propiedades que una moneda física. - El dinero se transfiere de persona a persona de forma irreversible. #bitcoindevspain ¿Qué es el Bitcoin ?
  • 13. - Es una moneda electrónica. - No tiene autoridad central (Banco Central), se basa en un sistema descentralizado. - Tiene las mismas propiedades que una moneda física. - El dinero se transfiere de persona a persona de forma irreversible. - Está limitada, no se pueden crear más de 21M de BTC #bitcoindevspain ¿Qué es el Bitcoin ?
  • 14. - Es una moneda electrónica. - No tiene autoridad central (Banco Central), se basa en un sistema descentralizado. - Tiene las mismas propiedades que una moneda física. - El dinero se transfiere de persona a persona de forma irreversible. - Está limitada, no se pueden crear más de 21M de BTC. - Es divisible, habitualmente hablamos de mBTC o uBTC. #bitcoindevspain ¿Qué es el Bitcoin ?
  • 15. - Es una moneda electrónica. - No tiene autoridad central (Banco Central), se basa en un sistema descentralizado. - Tiene las mismas propiedades que una moneda física. - El dinero se transfiere de persona a persona de forma irreversible. - Está limitada, no se pueden crear más de 21M de BTC. - Es divisible, habitualmente hablamos de mBTC o uBTC. - Propone un modelo deflaccionario frente a la inflacción infinita. #bitcoindevspain ¿Qué es el Bitcoin ?
  • 16. #bitcoindevspain Principios de las monedas ORO EURO BITCOIN ESCASEZ PORTABILIDAD FUNGIBILIDAD VERIFICACION DIVISIBILIDAD PRIVACIDAD ACEPTACION
  • 26. - Sirven para firmar transacciones y operar con el dinero. #bitcoindevspain Bitcoin Addresses
  • 27. - Sirven para firmar transacciones y operar con el dinero. - Criptografía de Curva Elíptica: Sin aceleración de hardware. #bitcoindevspain Bitcoin Addresses
  • 28. - Sirven para firmar transacciones y operar con el dinero. - Criptografía de Curva Elíptica: Sin aceleración de hardware. - Podemos generar la clave pública a partir de la privada. #bitcoindevspain Bitcoin Addresses
  • 29. - Sirven para firmar transacciones y operar con el dinero. - Criptografía de Curva Elíptica: Sin aceleración de hardware. - Podemos generar la clave pública a partir de la privada. - El minero las almacena en un fichero llamado wallet. #bitcoindevspain Bitcoin Addresses
  • 30. - Sirven para firmar transacciones y operar con el dinero. - Criptografía de Curva Elíptica: Sin aceleración de hardware. - Podemos generar la clave pública a partir de la privada. - El minero las almacena en un fichero llamado wallet. - Para generar un cheque, nos basta con imprimir la clave privada en formato QR. #bitcoindevspain Bitcoin Addresses
  • 31. - Son movimientos de dinero firmados digitalmente. #bitcoindevspain Transacciones
  • 32. - Son movimientos de dinero firmados digitalmente. - Habitualmente el minero genera y firma la transacción, pero las transacciones pueden ser firmadas offline. #bitcoindevspain Transacciones
  • 33. - Son movimientos de dinero firmados digitalmente. - Habitualmente el minero genera y firma la transacción, pero las transacciones pueden ser firmadas offline. - La transacción es enviada a un minero y replicada, cuando el 51% de los mineros la replica, se confía en que se insertará en la blockchain. #bitcoindevspain Transacciones
  • 34. - Son movimientos de dinero firmados digitalmente. - Habitualmente el minero genera y firma la transacción, pero las transacciones pueden ser firmadas offline. - La transacción es enviada a un minero y replicada, cuando el 51% de los mineros la replica, se confía en que se insertará en la blockchain. - ¿Y si alguien controla el 51% de la red? #bitcoindevspain Transacciones
  • 35. - Son movimientos de dinero firmados digitalmente. - Habitualmente el minero genera y firma la transacción, pero las transacciones pueden ser firmadas offline. - La transacción es enviada a un minero y replicada, cuando el 51% de los mineros la replica, se confía en que se insertará en la blockchain. - ¿Y si alguien controla el 51% de la red? #bitcoindevspain Transacciones
  • 36. #bitcoindevspain Transacciones Prev Output Amount From Type ScriptSig 6d020afb… 44,22 1BD5b401… Address A3a6748d… Index Amount To Type ScriptPubKey 0 44,219998 1NC83Jv… Address Bfa5263e1f… 1 0,000012 1JUKuRz… Address 6a0d4ed87… Outputs Inputs
  • 37. - Existe la necesidad de codificar mensajes en las transacciones. #bitcoindevspain Messaging
  • 38. - Existe la necesidad de codificar mensajes en las transacciones. - Los mensajes quedan almacenados permanentemente. #bitcoindevspain Messaging
  • 39. - Existe la necesidad de codificar mensajes en las transacciones. - Los mensajes quedan almacenados permanentemente. - Algunos comienzan añadiendo un OutputScript adicional donde codifican un mensaje UTF-8 serializado en Base64. #bitcoindevspain Messaging
  • 40. - Existe la necesidad de codificar mensajes en las transacciones. - Los mensajes quedan almacenados permanentemente. - Algunos comienzan añadiendo un OutputScript adicional donde codifican un mensaje UTF-8 serializado en Base64. - Blockchain.info toma la iniciativa y desarrolla su propio sistema de messaging. #bitcoindevspain Messaging
  • 41. - Existe la necesidad de codificar mensajes en las transacciones. - Los mensajes quedan almacenados permanentemente. - Algunos comienzan añadiendo un OutputScript adicional donde codifican un mensaje UTF-8 serializado en Base64. - Blockchain.info toma la iniciativa y desarrolla su propio sistema de messaging. - En 2011 se libera la versión 1.0 del BTCmsg Protocol - 2 primeros caracteres del output script indican si hay mensaje (02) o no(01) - El mensaje se codifica en Hexadecimal - Cada grupo de 4 chars hex representan 2 letras ASCII), valores entre 0xffff y 0x65535. (Enseñar btcmsgTools) #bitcoindevspain Messaging
  • 42. - La BlockChain es una lista de todas las transacciones hechas en Bitcoin, particionadas en bloques y almacenada de forma distribuida. #bitcoindevspain Blockchain
  • 43. - La BlockChain es una lista de todas las transacciones hechas en Bitcoin, particionadas en bloques y almacenada de forma distribuida. - Cuando un bloque es generado, las transacciones que aún no han sido insertadas en ninguno y que están siendo replicadas temporalmente por los mineros, se validan. #bitcoindevspain Blockchain
  • 44. - La BlockChain es una lista de todas las transacciones hechas en Bitcoin, particionadas en bloques y almacenada de forma distribuida. - Cuando un bloque es generado, las transacciones que aún no han sido insertadas en ninguno y que están siendo replicadas temporalmente por los mineros, se validan. - Puede haber varias cadenas, pero los mineros escuchan la mas larga y descartan el resto. #bitcoindevspain Blockchain
  • 45. - La BlockChain es una lista de todas las transacciones hechas en Bitcoin, particionadas en bloques y almacenada de forma distribuida. - Cuando un bloque es generado, las transacciones que aún no han sido insertadas en ninguno y que están siendo replicadas temporalmente por los mineros, se validan. - Puede haber varias cadenas, pero los mineros escuchan la mas larga y descartan el resto. - Generar un bloque requiere mucha capacidad de cómputo, tiempo y dinero, crear una cadena más larga que la actual desde cero es altamente improbable. #bitcoindevspain Blockchain
  • 46. - “Minar” es generar colisiones en funciones Hash SHA256. #bitcoindevspain Minería
  • 47. - “Minar” es generar colisiones en funciones Hash SHA256. - La minería consiste en generar el siguiente bloque de la cadena de bloques, tal que: - ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE) - ID_NUEVO_BLOQUE debe ser un hash SHA2 válido. - ID_NUEVO_BLOQUE debe comenzar por N ceros. #bitcoindevspain Minería
  • 48. - “Minar” es generar colisiones en funciones Hash SHA256. - La minería consiste en generar el siguiente bloque de la cadena de bloques, tal que: - ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE) - ID_NUEVO_BLOQUE debe ser un hash SHA2 válido. - ID_NUEVO_BLOQUE debe comenzar por N ceros. - La minería genera dinero mediante: - Cada nuevo bloque permite generar 25BTC que se queda el minero. - El minero se queda con la comisión donada en cada transacción. #bitcoindevspain Minería
  • 49. - “Minar” es generar colisiones en funciones Hash SHA256. - La minería consiste en generar el siguiente bloque de la cadena de bloques, tal que: - ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE) - ID_NUEVO_BLOQUE debe ser un hash SHA2 válido. - ID_NUEVO_BLOQUE debe comenzar por N ceros. - La minería genera dinero mediante: - Cada nuevo bloque permite generar 25BTC que se queda el minero. - El minero se queda con la comisión donada en cada transacción. - Si se generan dos bloques a la vez, el más complejo prospera (el que tiene mas ceros al principio). #bitcoindevspain Minería
  • 50. - “Minar” es generar colisiones en funciones Hash SHA256. - La minería consiste en generar el siguiente bloque de la cadena de bloques, tal que: - ID_BLOQUE_ANTERIOR = SHA2(ID_NUEVO_BLOQUE) - ID_NUEVO_BLOQUE debe ser un hash SHA2 válido. - ID_NUEVO_BLOQUE debe comenzar por N ceros. - La minería genera dinero mediante: - Cada nuevo bloque permite generar 25BTC que se queda el minero. - El minero se queda con la comisión donada en cada transacción. - Si se generan dos bloques a la vez, el más complejo prospera (el que tiene mas ceros al principio). - Si se generan bloques idénticos: - La La cadena más compleja prospera. #bitcoindevspain Minería
  • 52. - El cliente minero de Bitcoin dispone de un API RPC-JSON - Podemos usar un cliente propio o utilizar un API de terceros como la de Blockchain.info. - Configuración necesaria en el fichero bitcoin.conf: server=1 rpcuser=username rpcpassword=password rpcport=8332 - En MacOS el fichero no existe, y debe crearse en: /Users/$USER/Library/Application Support/Bitcoin #bitcoindevspain Bitcoin RPC API
  • 53. - Las principales instrucciones son: <readable json> decoderawtransaction <hex string> <private key> dumpprivkey <accountName> <accountName> getbalance <accountName, confirmations> <public key> getnewaddress <accountName> <hex string> getrawtransaction <transaction id> <transaction id> sendfrom <from accountName, to public key, amount, comment> <hex string> signrawtransaction <{…json tx data…}> <transaction id> sendrawtransaction <hex string> <hex string> createrawtransaction <hex string> #bitcoindevspain Bitcoin RPC API
  • 54. - Añadir clave privada existente: $ curl --data-binary '{"jsonrpc": "1.0", "id":"rpc", "method": "importprivkey", "params": ["PRIVATEKEY","alias"] }' -H 'content- type: text/plain;' http://bitcoin:password@127.0.0.1:8332 - Consultar la clave publica de la cuenta que acabamos de añadir: $ curl --data-binary '{"jsonrpc": "1.0", "id":"rpc", "method": "getaddressesbyaccount", "params": ["ACCOUNT_NAME"] }' -H 'content- type: text/plain;' http://bitcoin:password@127.0.0.1:8332 - Enviar dinero $ curl --data-binary '{"jsonrpc": ".0", "id":"rpc", "method": "sendfrom", "params": ["FROM_ACCOUNTNAME", "TO_PUBLIC_KEY",AMOUNT] }' -H 'content-type: text/plain;' http://bitcoin:password@127.0.0.1:8332 #bitcoindevspain Bitcoin RPC API
  • 55. - Obtenemos la transacción en RAW $ curl --data-binary '{"jsonrpc": "1.0", "id":"getrawtransaction", "method": "getrawtransaction", "params": [”TRANSACTION_ID"] }' -H 'content-type: text/plain;' http://bitcoin:password@127.0.0.1:8332 - Decodificamos la transacción en RAW: $ curl --data-binary '{"jsonrpc": "1.0", "id":"rpc", "method": "decoderawtransaction", "params": ["HEX_TRANSACTION"] }' -H 'content-type: text/plain;' http://bitcoin:password@127.0.0.1:8332 #bitcoindevspain Bitcoin RPC API
  • 56. BONUS! HANDS ON LAB! Juego de Piedra-Papel-Tijera-Lagarto-Spock que exige un pago en BTC si pierdes y envía dinero en BTC si ganas :) #bitcoindevspain Codigo: https://github.com/gotoalberto/bitcoin-rock
  • 57. - La cadena de bloques ocupa aproximadamente 40GB que se almacena de forma distribuida. #bitcoindevspain Algunos datos…
  • 58. - La cadena de bloques ocupa aproximadamente 40GB que se almacena de forma distribuida. - Bitcoin mueve más de 24K € por minuto en transacciones a día de hoy (con una cotización a 1BTC/90€). #bitcoindevspain Algunos datos…
  • 59. - La cadena de bloques ocupa aproximadamente 40GB que se almacena de forma distribuida. - Bitcoin mueve más de 24K € por minuto en transacciones a día de hoy (con una cotización a 1BTC/90€). - Bitcoin tiene de media 51K transacciones diarias. (Sí, soporta muchas mas, ver Escalabilidad en Bitcoin Wiki) #bitcoindevspain Algunos datos…
  • 60. - La cadena de bloques ocupa aproximadamente 40GB que se almacena de forma distribuida. - Bitcoin mueve más de 24K € por minuto en transacciones a día de hoy (con una cotización a 1BTC/90€). - Bitcoin tiene de media 51K transacciones diarias. (Sí, soporta muchas mas, ver Escalabilidad en Bitcoin Wiki) - La media es de 5.000 € por transaccion y 35 transacciones por minuto. #bitcoindevspain Algunos datos…
  • 61. - La cadena de bloques ocupa aproximadamente 40GB que se almacena de forma distribuida. - Bitcoin mueve más de 24K € por minuto en transacciones a día de hoy (con una cotización a 1BTC/90€). - Bitcoin tiene de media 51K transacciones diarias. (Sí, soporta muchas mas, ver Escalabilidad en Bitcoin Wiki) - La media es de 5.000 € por transaccion y 35 transacciones por minuto. - Un minero gana de media 2500€ por genererar un bloque y 30€ en comisiones (con una cotización de a 1BTC/90€) #bitcoindevspain Algunos datos… Fuente: Blockchain.info
  • 62. { "jsonrpc” : "1.0", "id” : "rpc", "method” : "terminate", "params” : [ ”this_conference” ] } :=)