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

Bitcoin Development - 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"                                                          ]                }                                                          :=)