Una Propuesta para imprimir bitcoin en billetes.(originalmente posteado en inglés aqui:
https://bitcointalk.org/index.php?topic=516273.msg5706034Tengo la siguiente idea para integrar bitcoins en billetes: tomas el folio del cualquier billete de cualquier país y creas una cartera multisig con el. Envias fondos a esta direccion, marcas el billete con la cantidad de bitcoins que contiene y (opcionalmente) mutilas el billete.
Los bitcoins depositados en la dirección multisig no se pueden gastar porque este multisig esta compuesto por varias llaves públicas de diversas personas y organizaciones que nada les importa y no se van a reunir para firmar la P2SH. Esto significa que quien tenga en su poder el billete puede estar seguro que es dueño de bitcoins unicos que no nadie puede gastar electronicamente.
Es importante que el billete a marcar sea muy dificil de falsificar y que tenga un folio único. Es por eso que los billetes expedidos por los gobiernos son perfectos para hacer esto. Claro, esta idea se puede aplicar a cualquier objeto que cumpla con estas dos caracteristicas (folio unico y dificil de falsificar) incluyendo la expedición de tus propios billetes o monedas con numeros de serie.
Sería bueno si pudieramos ponernos de acuerdo para especificar un estandar de llaves públicas para facilitar la verificación de los saldos en las direcciones multisig. De lo contrario la persona que este bitcoineando sus billetes tiene publicar el set de llaves públicas que utilizó para que el público que use sus billetes pueda verificarlos.
Cual es el propósito de esto? Permite que cualquiera pueda tener bitcoins sin tener que accesar una computadora o connexión de internet. Los billetes solo se tiene que verificar una vez por el poseedor del billete consultando el blockchain y ya. El blockchain no tiene que mantenerse actualizado ya que es virtualmente imposible "sacar" los bitcoins del billete con una futura transaccion.
Pasos para crear un multisig para un billete específico.1. Determina la nacionalidad y denominación del billete.
2. Agrega el numero de serie del billete (folio).
3. Crea un cartera cerebro (brain wallet) con estos datos usando un método estandard, separando con un espacio la nacionalidad, denominación y folio del billete.
4. Escoge 4 o mas llaves públicas de direcciones regulares muy conocidas.
5. Crea la dirección multisig combinando las llaves públicas empezando por el que se generó con la cartera cerebro del billete.
6. Envia los fondos a esta dirección. Sugiero usar la denominación del billete como guía: 0.0005 BTC for $5.00 USD, 0.001 BTC for $10 USD, etc
7. Escribe con tinta indeleble en el billete la nacionalidad y denominación a lado del folio de como se determino la dirección y la cantidad depositada de bitcoins.
Opcionalmente mutila el billete para que sea facil de distinguir de otro billeto no bitcoineado para evitar que se pierda por error. Sugiero doblarlo dos veces a la mitad y luego cortar con guillotina en el tercer doblez.
Ejemplo:1. US. 5 dollar bill.
2. US 5 IF84621533C
3. Genera el "Brain Wallet"
Imagen:
http://fantasticocomic.com/bc/bitcoinedbill-1.png4. Genera la direccion P2SH. Vamos a utilizar las siguientes llaves públicas que escogí arbitrariamente de transacciones que encontre en el blockchain:
Linux Mint Donations:
04abc9f887ac2273df9c8db1d68cf520fd343bb567e2da68d057ae5d5b0e93d6b413c56762c0db15b582aeaeb4455c814f67b582da117b177b776b353145452e5d
Free Talk Live:
041ab4dcddd2c7a7b9928ff278661040d242080b8adf85870f5af01a7a3c77fd74af031e365cc1d9b8d5dc102e87f6dd183f3884b23cd1dafc5ea9c86db9ba42e9
Bitcoinity:
048ac1b0a436bec71eeab01becd493be697f78a72131f15501720d1791ad90521647fe8f1d539d21569ff7f6c15c890731b6b3e247fa2f2255171c2f4342e72f8d
BitcoinTalk Forums:
04271bb147a592a7cbb0323ec42ff1d056f125c431383cc4480b4d2f511c06802beb475ade7c29eb2572a4fc73895a806c5c0d2efc84f2bead24399980f41e2889
Archive.org
043b640c644e5cda2f2e4be20bca4535882fd5053e7a72c18736d179049aaa27c33febcb12ae597f80c29b4ce9bff32ef5654351ac310b514b66064755d8e24af2
SatoshiDice 0.78%
04c78beee103e8392bc3aa13ee779b8084fa9fd3b54cbace8520fa427a19f5aebfe8aba1cca8a7c1ec3f858ba8fb050c2e603cf932782bc78ec4eac258c8db1e13
5. Le agregamos la llave publica generada por el passphrase del brain wallet de los USD 5 y folio.
045119754ff7cd6bcf1116a5b74c0af7a2d25fa9b631d735e1b232646b2f24ffa4004f870d97c01b8dbb27393473c3124af669aa505baf73da0a7682e216c06d81
Imagen:
http://fantasticocomic.com/bc/bitcoinedbill-2.png6. Enviamos fondos por 0.0005 BTC a la dirección Multisig ( 3FScohu2zS57323xt58LBc3if9r2juLCTw ) usando cualquier software de monedero. Se le agrega 0.00001 comisión de transacción.
7. Escribimos en el billete el monto enviado y lo mutilamos.
8. Se publica el redeem script para que otros lo puedan verificar:
5741045119754ff7cd6bcf1116a5b74c0af7a2d25fa9b631d735e1b232646b2f24ffa4004f870d97c01b8dbb27393473c3124af669aa505baf73da0a7682e216c06d814104abc9f887ac2273df9c8db1d68cf520fd343bb567e2da68d057ae5d5b0e93d6b413c56762c0db15b582aeaeb4455c814f67b582da117b177b776b353145452e5d41041ab4dcddd2c7a7b9928ff278661040d242080b8adf85870f5af01a7a3c77fd74af031e365cc1d9b8d5dc102e87f6dd183f3884b23cd1dafc5ea9c86db9ba42e941048ac1b0a436bec71eeab01becd493be697f78a72131f15501720d1791ad90521647fe8f1d539d21569ff7f6c15c890731b6b3e247fa2f2255171c2f4342e72f8d4104271bb147a592a7cbb0323ec42ff1d056f125c431383cc4480b4d2f511c06802beb475ade7c29eb2572a4fc73895a806c5c0d2efc84f2bead24399980f41e288941043b640c644e5cda2f2e4be20bca4535882fd5053e7a72c18736d179049aaa27c33febcb12ae597f80c29b4ce9bff32ef5654351ac310b514b66064755d8e24af24104c78beee103e8392bc3aa13ee779b8084fa9fd3b54cbace8520fa427a19f5aebfe8aba1cca8a7c1ec3f858ba8fb050c2e603cf932782bc78ec4eac258c8db1e1357ae
Repito, este paso podría ser evitado si podemos ponernos de acuerdo a un estandar de llaves públicas para usar universalmente en esto.
Tambien se puede imprimir el redeem script base64 encoded con un código QR en el reverso del billete. Utilize la herramienta localizado aqui:
http://brainwallet.org/#converter. Por conveniencia le agregue el código QR code de la direccion P2SH address y mas detalles. Utilize el generador de códigos QR de
http://bitcoinqrcode.org/Otro ejemplo con un billete Mexicano de 20 pesos:1. Genera el Brain wallet con los siguientes palabras clave: MEX 20 T6944908
Imagen:
http://fantasticocomic.com/bc/bitcoinedbill-3.png2. Genera la direccion P2SH, copia y pega la llave pública del brain wallet y agrega las otras 6 llaves públicas. Usaremos las mismas 6 del billete anterior.
Imagen:
http://fantasticocomic.com/bc/bitcoinedbill-4.png3. Envia .0002 BTC a la direccion P2SH address ( 3JgyBtcQ7Sp9R17jSRdhi9TCWqbz2vQUed ) Asegurate de agregar 0.0001 de comisión.
4. Escribe en el billete la cantidad de bitcoins depositados y como se derivaron las palabras clave:
5. Publica el redeem script para que otros lo puedan verificar:
5741049ccb1f411b983644512b9ba63f30a7e74f20d035571fb18b1c03f988e1342ef2742dad15ef44a984eeb04dcd0e16a9031f32f5eba278aa65bef3ec4e5e347bb54104abc9f887ac2273df9c8db1d68cf520fd343bb567e2da68d057ae5d5b0e93d6b413c56762c0db15b582aeaeb4455c814f67b582da117b177b776b353145452e5d41041ab4dcddd2c7a7b9928ff278661040d242080b8adf85870f5af01a7a3c77fd74af031e365cc1d9b8d5dc102e87f6dd183f3884b23cd1dafc5ea9c86db9ba42e941048ac1b0a436bec71eeab01becd493be697f78a72131f15501720d1791ad90521647fe8f1d539d21569ff7f6c15c890731b6b3e247fa2f2255171c2f4342e72f8d4104271bb147a592a7cbb0323ec42ff1d056f125c431383cc4480b4d2f511c06802beb475ade7c29eb2572a4fc73895a806c5c0d2efc84f2bead24399980f41e288941043b640c644e5cda2f2e4be20bca4535882fd5053e7a72c18736d179049aaa27c33febcb12ae597f80c29b4ce9bff32ef5654351ac310b514b66064755d8e24af24104c78beee103e8392bc3aa13ee779b8084fa9fd3b54cbace8520fa427a19f5aebfe8aba1cca8a7c1ec3f858ba8fb050c2e603cf932782bc78ec4eac258c8db1e1357ae
6. De otra forma, imprime el redeem script base64 encoded con info adicional en el billete.
Notese como escribir la info en la parte inferior a diferencia del billete de $5 USD. La razón de hacerlo así es para que el que sostiene el billete le sea mas facil verificar que es el mismo numero de serie utilizado al doblar el billete para ver la info pertinente de ambos lados.
Yo utilizé etiquetas ordinarias (2"x4") y los pegué a los billetes. Lo ideal seria haber imprimido directo en el billete pero desafortunadamene las imagenes de fondo causan demasiado ruido para que los códigos QR sean legibles. Lo importante a notar es que en teoria toda esa info se puede imprimir en el espacio de cualquier billete ordinario.
Como determinar si cierto billeto tiene una direccion multisig válida y tiene los supuestos bitcoins:1. Primero vas a
https://coinb.in/multisig/#verify y pegas el redeem script (decodifica base64 antes si fue escaneado desde un código QR). Deberá mostrar la dirección multisig
que comienza con 3 y la lista de llaves públicas que se requieren para cobrar los fondos de la transacción. Tambien verificar que todas las firmas son requeridas. Notese que si usaramos un estandard set de llaves públicas este redeem script se podria regenerar unicamente con el folio y no sería necesario imprimirlo en cada billete.
2. Una vez obtenido la dirección multisig checa en un explorador de blockchain (eg blockchain.info) y checa que si contiene los supuestos bitcoins.
PropósitosPienso que este sistema puede ser muy útil en paises donde se sufre severa inflación (Venezuela, Argentina, etc). Los ciudadanos pueden tomar sus propia moneda y comenzar a imprimirle los bitcoins para evitar que se devaluen aun mas, y utilazarlos en lugar de billetes no bitcoineados para las transacciones diarias. Podrian funcionar como propinas y pequeños obsequios en lugares donde ya se utiliza bitcoin en monedores digitales o en cualquier lado. Puede tambien ayudar a difundir la idea de bitcoin particularmente en paises subdesarollados.
Se podría desarollar una app movil que escanea el billete, determina el tipo de moneda y lee el folio. Desglozaria las llaves públicas utilizadas y el importe de bitcoins. El usuario podria mantener una base de datos de llaves publicas que confia y si una de esa llaves publicas estan encodificados en el billete puede tener la tranquilidad que su billete se mantendrá bitcoineado. bitcoins will not be withdrawn. La app intentaria guardar todo el blockchain para que pueda verificar billetes sin tener que estar conectado al internet.
Se podría tambien desarollar una página web usando javascript, donde el usuario ingresa la moneda, denominacion y numero de serie y este regresa la multisig con sus llaves públicas correspondientes y el importe de bitcoins contenidos ahí. Tambien esta misma página podría hacer la operación inversa: generar una direccion multisig, incluyendo códigos QR, sugeriendo un set de llaves públicas reconocidas de los cuales el puede escoger para que así enviar los bitcoins y sellar el billete.
Los invito a que bitcoineen sus propios billetes y posteen fotos aqui.