Desarrollo con Bitcoin
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Desarrollo con Bitcoin

  • 701 views
Uploaded on

Seminario de Introducción al desarrollo con Bitcoin, celebrado el 26 de junio 2013. Impartido por Alberto Gomez Toribio y organizado por Paradigma Tecnologico y Javahispano. ...

Seminario de Introducción al desarrollo con Bitcoin, celebrado el 26 de junio 2013. Impartido por Alberto Gomez Toribio y organizado por Paradigma Tecnologico y Javahispano.
Madrid, Universidad CEU San Pablo.

Información sobre el seminario:
http://www.paradigmatecnologico.com/eventos/introduccion-al-desarrollo-con-bitcoin/

Vídeo de la presentación:
https://www.youtube.com/watch?v=Gj4mRe-YcA0

¿Quieres saber más?
www.paradigmatecnologico.com

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
701
On Slideshare
624
From Embeds
77
Number of Embeds
1

Actions

Shares
Downloads
10
Comments
0
Likes
1

Embeds 77

http://www.economiaactiva.es 77

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 emitentitulos 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 emitentí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 emitentí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 yconvierte 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 emitentí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 yconvierte 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 unsistema descentralizado.#bitcoindevspain¿Qué es el Bitcoin ?
  • 11. - Es una moneda electrónica.- No tiene autoridad central (Banco Central), se basa en unsistema 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 unsistema descentralizado.- Tiene las mismas propiedades que una moneda física.- El dinero se transfiere de persona a persona de formairreversible.#bitcoindevspain¿Qué es el Bitcoin ?
  • 13. - Es una moneda electrónica.- No tiene autoridad central (Banco Central), se basa en unsistema descentralizado.- Tiene las mismas propiedades que una moneda física.- El dinero se transfiere de persona a persona de formairreversible.- 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 unsistema descentralizado.- Tiene las mismas propiedades que una moneda física.- El dinero se transfiere de persona a persona de formairreversible.- 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 unsistema descentralizado.- Tiene las mismas propiedades que una moneda física.- El dinero se transfiere de persona a persona de formairreversible.- 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óninfinita.#bitcoindevspain¿Qué es el Bitcoin ?
  • 16. #bitcoindevspainPrincipios de las monedasORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACION
  • 17. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 18. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 19. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 20. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 21. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 22. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 23. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 24. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 25. #bitcoindevspainORO EURO BITCOINESCASEZPORTABILIDADFUNGIBILIDADVERIFICACIONDIVISIBILIDADPRIVACIDADACEPTACIONPrincipios de las monedas
  • 26. - Sirven para firmar transacciones y operar con el dinero.#bitcoindevspainBitcoin Addresses
  • 27. - Sirven para firmar transacciones y operar con el dinero.- Criptografía de Curva Elíptica: Sin aceleración de hardware.#bitcoindevspainBitcoin 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.#bitcoindevspainBitcoin 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.#bitcoindevspainBitcoin 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 claveprivada en formato QR.#bitcoindevspainBitcoin Addresses
  • 31. - Son movimientos de dinero firmados digitalmente.#bitcoindevspainTransacciones
  • 32. - Son movimientos de dinero firmados digitalmente.- Habitualmente el minero genera y firma la transacción,pero las transacciones pueden ser firmadas offline.#bitcoindevspainTransacciones
  • 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, cuandoel 51% de los mineros la replica, se confía en que seinsertará en la blockchain.#bitcoindevspainTransacciones
  • 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, cuandoel 51% de los mineros la replica, se confía en que seinsertará en la blockchain.- ¿Y si alguien controla el 51% de la red?#bitcoindevspainTransacciones
  • 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, cuandoel 51% de los mineros la replica, se confía en que seinsertará en la blockchain.- ¿Y si alguien controla el 51% de la red?#bitcoindevspainTransacciones
  • 36. #bitcoindevspainTransaccionesPrev Output Amount From Type ScriptSig6d020afb… 44,22 1BD5b401… Address A3a6748d…Index Amount To Type ScriptPubKey0 44,219998 1NC83Jv… Address Bfa5263e1f…1 0,000012 1JUKuRz… Address 6a0d4ed87…OutputsInputs
  • 37. - Existe la necesidad de codificar mensajes en lastransacciones.#bitcoindevspainMessaging
  • 38. - Existe la necesidad de codificar mensajes en lastransacciones.- Los mensajes quedan almacenados permanentemente.#bitcoindevspainMessaging
  • 39. - Existe la necesidad de codificar mensajes en lastransacciones.- Los mensajes quedan almacenados permanentemente.- Algunos comienzan añadiendo un OutputScript adicionaldonde codifican un mensaje UTF-8 serializado en Base64.#bitcoindevspainMessaging
  • 40. - Existe la necesidad de codificar mensajes en lastransacciones.- Los mensajes quedan almacenados permanentemente.- Algunos comienzan añadiendo un OutputScript adicionaldonde codifican un mensaje UTF-8 serializado en Base64.- Blockchain.info toma la iniciativa y desarrolla su propiosistema de messaging.#bitcoindevspainMessaging
  • 41. - Existe la necesidad de codificar mensajes en lastransacciones.- Los mensajes quedan almacenados permanentemente.- Algunos comienzan añadiendo un OutputScript adicionaldonde codifican un mensaje UTF-8 serializado en Base64.- Blockchain.info toma la iniciativa y desarrolla su propiosistema 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)#bitcoindevspainMessaging
  • 42. - La BlockChain es una lista de todas las transaccioneshechas en Bitcoin, particionadas en bloques y almacenadade forma distribuida.#bitcoindevspainBlockchain
  • 43. - La BlockChain es una lista de todas las transaccioneshechas en Bitcoin, particionadas en bloques y almacenadade forma distribuida.- Cuando un bloque es generado, las transacciones que aúnno han sido insertadas en ninguno y que están siendoreplicadas temporalmente por los mineros, se validan.#bitcoindevspainBlockchain
  • 44. - La BlockChain es una lista de todas las transaccioneshechas en Bitcoin, particionadas en bloques y almacenadade forma distribuida.- Cuando un bloque es generado, las transacciones que aúnno han sido insertadas en ninguno y que están siendoreplicadas temporalmente por los mineros, se validan.- Puede haber varias cadenas, pero los mineros escuchan lamas larga y descartan el resto.#bitcoindevspainBlockchain
  • 45. - La BlockChain es una lista de todas las transaccioneshechas en Bitcoin, particionadas en bloques y almacenadade forma distribuida.- Cuando un bloque es generado, las transacciones que aúnno han sido insertadas en ninguno y que están siendoreplicadas temporalmente por los mineros, se validan.- Puede haber varias cadenas, pero los mineros escuchan lamas 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 actualdesde cero es altamente improbable.#bitcoindevspainBlockchain
  • 46. - “Minar” es generar colisiones en funciones Hash SHA256.#bitcoindevspainMinería
  • 47. - “Minar” es generar colisiones en funciones Hash SHA256.- La minería consiste en generar el siguiente bloque de lacadena 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.#bitcoindevspainMinería
  • 48. - “Minar” es generar colisiones en funciones Hash SHA256.- La minería consiste en generar el siguiente bloque de lacadena 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.#bitcoindevspainMinería
  • 49. - “Minar” es generar colisiones en funciones Hash SHA256.- La minería consiste en generar el siguiente bloque de lacadena 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 complejoprospera (el que tiene mas ceros al principio).#bitcoindevspainMinería
  • 50. - “Minar” es generar colisiones en funciones Hash SHA256.- La minería consiste en generar el siguiente bloque de lacadena 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 complejoprospera (el que tiene mas ceros al principio).- Si se generan bloques idénticos:- La La cadena más compleja prospera.#bitcoindevspainMinería
  • 51. #bitcoindevspainMinería
  • 52. - El cliente minero de Bitcoin dispone de un API RPC-JSON- Podemos usar un cliente propio o utilizar un API deterceros como la de Blockchain.info.- Configuración necesaria en el fichero bitcoin.conf:server=1rpcuser=usernamerpcpassword=passwordrpcport=8332- En MacOS el fichero no existe, y debe crearse en:/Users/$USER/Library/Application Support/Bitcoin#bitcoindevspainBitcoin 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 publickey, amount, comment><hex string> signrawtransaction <{…json tx data…}><transaction id> sendrawtransaction <hex string><hex string> createrawtransaction <hex string>#bitcoindevspainBitcoin 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#bitcoindevspainBitcoin RPC API
  • 55. - Obtenemos la transacción en RAW$ curl --data-binary {"jsonrpc": "1.0", "id":"getrawtransaction","method": "getrawtransaction", "params": [”TRANSACTION_ID"] } -Hcontent-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"] } -Hcontent-type: text/plain; http://bitcoin:password@127.0.0.1:8332#bitcoindevspainBitcoin RPC API
  • 56. BONUS! HANDS ON LAB!Juego de Piedra-Papel-Tijera-Lagarto-Spock que exigeun pago en BTC si pierdes y envía dinero en BTC siganas :)#bitcoindevspainCodigo: https://github.com/gotoalberto/bitcoin-rock
  • 57. - La cadena de bloques ocupa aproximadamente 40GB quese almacena de forma distribuida.#bitcoindevspainAlgunos datos…
  • 58. - La cadena de bloques ocupa aproximadamente 40GB quese almacena de forma distribuida.- Bitcoin mueve más de 24K € por minuto en transaccionesa día de hoy (con una cotización a 1BTC/90€).#bitcoindevspainAlgunos datos…
  • 59. - La cadena de bloques ocupa aproximadamente 40GB quese almacena de forma distribuida.- Bitcoin mueve más de 24K € por minuto en transaccionesa 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)#bitcoindevspainAlgunos datos…
  • 60. - La cadena de bloques ocupa aproximadamente 40GB quese almacena de forma distribuida.- Bitcoin mueve más de 24K € por minuto en transaccionesa 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 35transacciones por minuto.#bitcoindevspainAlgunos datos…
  • 61. - La cadena de bloques ocupa aproximadamente 40GB quese almacena de forma distribuida.- Bitcoin mueve más de 24K € por minuto en transaccionesa 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 35transacciones por minuto.- Un minero gana de media 2500€ por genererar un bloquey 30€ en comisiones (con una cotización de a 1BTC/90€)#bitcoindevspainAlgunos datos…Fuente: Blockchain.info
  • 62. {"jsonrpc” : "1.0","id” : "rpc","method” : "terminate", "params”: [”this_conference”]}:=)