Estoy aprendiendo a manejar multisig. Primero creé una dirección multisig 2-3 con todas las claves de mi billetera de prueba (bitcoind en el servidor) y envié dinero a la nueva dirección multisig desde otra billetera. La transacción se muestra en la billetera de prueba y puedo usar la salida no gastada.
Luego creé una dirección 2-2 con una clave de la billetera de prueba y una clave de otra billetera, y envié dinero a la nueva dirección desde otra billetera. La transacción se muestra en blockchain.info:
https://blockchain.info/tx/910298ae8133cc142009539298b6e2127b2c49960facd3b21470e130d07a1701
pero no aparece en la billetera de prueba, y la nueva dirección multisig tiene saldo cero.
Leyendo estas preguntas y respuestas anteriores:
¿Multisig no funciona a menos que todas las claves se hayan generado desde la billetera actual?
Veo que en julio de 2014 Bitcoin Core solo mostraba transacciones a direcciones multisig con todas las claves en su billetera.
Preguntas:
1) ¿Sigue siendo así?
2) Si es así, ¿puedo seguir usando la salida no gastada y cómo?
[{"address/pubkey of Bitcoincore address", "pubkey of other wallet key"}]
debe devolver la dirección P2SH ( 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnRA ) y también agregar 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnRA a los UTXO3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnRA
agregará la dirección P2SH a la billetera como WatchOnlySupongo que no está ejecutando un nodo completo, usando la txindex=1
bandera, por lo que el addmultisigaddress
comando es lo que necesitará para canjear 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnRA en Bitcoincore. FYI, createmultisig tiene los mismos parámetros que addmultisigaddress ( referencia RPC ) pero solo devuelve el script de canje; es decir, no está agregando la dirección P2SH a los UTXO.
Como ya se mencionó, para todos los comandos multisig necesitará la clave pública completa (versión hexadecimal, comenzando con 0x04 o 0x02/03 para comprimido). La única razón por la que puede sustituir la dirección Base58Check en Bitcoincore como clave pública es porque el software recupera la clave pública de la billetera y la sustituye en consecuencia.
Una forma alternativa de hacerlo es usar dumpprivkey / valideaddress para obtener las claves de Bitcoincore requeridas y luego importar la clave privada al otro software de billetera y firmar/canjear con eso.
EDITAR: probé la importación de claves públicas que no son de wallet.dat para una dirección P2SH multisig y agregué con éxito el Tx a los UTXO devueltos porlistunspent
, con la única diferencia de que los datos de retorno de JSON tendránspendable: false
. Lo hice de la siguiente manera:
addmultisigaddress 2 '["pubkey1", "pubkey2"]'
importaddress 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnRA "TESTING" true
createrawtransaction
/ signrawtransaction
/ sendrawtransaction
(pero estoy seguro de que puedes hacerlo usando la GUIlistunspent 0
devolverá una matriz JSON (incluidas 0
las confirmaciones) con un objeto que se muestra redeemScript
pero con spendable:
falsocreaterawtransaction
las claves privadas pasadas como parámetros para gastar esto, obviamente
Julio Prisco
mago de ozzie
mago de ozzie
txindex=1
. Cuando use importaraddress, volverá a escanear de forma predeterminada, sin embargo, primero deberá asegurarse de haber creado el script de canje con addmultisigaddress . Nuevamente, tendré que confirmar esto, ya que puede ser que sin ambas claves privadas en la billetera, no "verá" los UTXO que financian el P2SH para la clave pública externa utilizada.mago de ozzie