¿Cómo puedo crear una transacción de firma múltiple 2 de 3?

¿Alguien puede ayudarme con una lista paso a paso de cómo crear una transacción de firma múltiple 2 de 3?

Vale la pena mencionar que esta otra pregunta bitcoin.stackexchange.com/questions/3557/… no parece ser un duplicado porque se relaciona con la aplicación de cliente de Bitcoin.
¿Quiere decir crear la transacción sin procesar, o simplemente quiere decir que le gustaría enviar dicha transacción? Si es lo primero, busque OP_CHECKMULTISIG y BIP-11; si es lo último, es posible que desee utilizar una billetera en línea como blockchain.info, que creo que maneja esto.
Ha pasado un año desde que se preguntó esto. ¿Lo que da? Ver también bitcointalk.org/index.php?topic=195168.0
Para crear una transacción multisig, la API más sencilla que conozco: dev.blockcypher.com/#multisig

Respuestas (4)

En realidad, ya se admiten tanto la recepción como el gasto de fondos desde una dirección multifirma.

Puede encontrar el código para hacerlo, además de comentarios, por Gavin:

DosDeTres.sh

Parece que existe alguna implementación parcial. Citando a Gavin :

Generar una dirección multisig:

  1. Reúna (o genere) 3 direcciones de bitcoin, en cualquier máquina que participará, usando los comandos RPC getnewaddress o getaccountaddress (o copie y pegue desde la GUI).

  2. Obtenga sus claves públicas usando el validateaddresscomando RPC 3 veces.

  3. Luego cree una dirección multisig 2 de 3 usando addmultisigaddress; p.ej

    bitcoind addmultisigaddress 2 '["044322868cb17d64dcc22185ae2d4493111d73244c3668f8ac79ecc79c0ba8d30a6756d0fa20157 709af3281cc721c7f53321a8cabda29b77900b7e4fe0174b114","..second pubkey..","..third pubkey.."]'

addmultisigaddressdevuelve la dirección multifirma. Tenga un poco de cuidado, las claves públicas son hexadecimales sin procesar y no contienen sumas de verificación como las direcciones de bitcoin. A continuación, puede enviar fondos a esa transacción 2 de 3 utilizando los comandos normales de RPC sendtoaddress/sendmany, o la GUI (o cualquier cosa que se haya actualizado para reconocer direcciones multisig).

Gastar desde una dirección multisig:

Esto aún no está implementado (mecanismo de llamadas RPC). Podría reunir todas las direcciones en una billetera y luego podría gastar los fondos.

Actualización de marzo de 2014

Multisig sigue siendo difícil. Creo que la biblioteca SX es una herramienta fácil (de personas como Vitalik Buterin y Amir Taaki) para trabajar con multisig, pero no lo he probado yo mismo.

Multisig ya no es difícil. Vea mi nueva respuesta a continuación

Una dirección multisig m-of-n se crea de la siguiente manera:

  1. Reúna todas nlas claves públicas. por
    ejemplo 3-of-3
    03730a151f545f5dcdb1c6d99fb1251f5c70f216f39ba2681bcf10db16bd582e67 ,03a9bb9d28dfcd2e58ca7b3fa39f4051a6496fc7928f993f1758aeff7c0fee0f0303a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd
  2. Cree el script multisig,
    OP_m <bytes-in-Pubkey1> <pubKey1> ... OP_n OP_CHECKMULTISIG
    p. 532103730a151f545f5dcdb1c6d99fb1251f5c70f216f39ba2681bcf10db16bd582e672103a9bb9d28dfcd2e58ca7b3fa39f4051a6496fc7928f993f1758aeff7c0fee0f032103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd53ae
  3. Hash el script, HASH160(<script>)
    por ejemplo
    8b58c2f47cd3000e42c82138f7678dc978bc109a
  4. Agregar 0x05para P2SHla dirección en la red principal: 05<scriptHash>
    por ejemplo
    058b58c2f47cd3000e42c82138f7678dc978bc109a
  5. Aplicar Base58Check: BASE58CHECK(05<scriptHash>)
    por ejemplo
    3EPpBU7fXq1PfG6JkLnJNUUmEGcSr9rdmh

Puede enviar bitcoins a esta dirección, pero para gastar desde allí, debe proporcionar el scriptSig: 0 <sigM> ... <script>donde <sigM>se firma desde cada una de las mclaves privadas.

Consulte Bitcoin Wiki - Script para códigos de operación, Bitcoin Wiki - Prefijos de dirección y Bitcoin Wiki - TransacciónP2SH para el formato de script multisig .

La forma más fácil de crear una transacción de firma múltiple 2 de 3 es con Coinb.in.

  1. Si es necesario, cree 3 pares de claves utilizando el comando desplegable "Nueva dirección".

  2. Use la "Nueva dirección multisig" junto con las 3 claves públicas para crear una dirección 2 de 3.

  3. Financie la dirección con bitcoin.

  4. Cree una nueva transacción pegando el "script de canje" del paso 3, definiendo las direcciones de recepción y los montos. (Todas las entradas no gastadas que no estén asignadas a una dirección de recepción se utilizarán como tarifas de transacción. Si se desea un cambio, inclúyalo en una nueva dirección de salida haciendo clic en "+").

  5. Firme la transacción con una de las claves privadas, luego firme esa transacción con otra de las claves privadas.

  6. Difundir la transacción a la red.

Hice un video que documenta estos pasos aquí: youtube.com/watch?v=oUSVmLegj8k