Cree una billetera multifirma a partir de claves xpub en el núcleo de bitcoin

Puedo crear billetera electrum multifirma con 2 claves xpub.

¿Cómo puedo crear un núcleo de bitcoin para hacer eso?

Uso estándar; Agregar una dirección multisig de 2 direcciones

bitcoin-cli addmultisigaddress 2 "[\"16sSauSf5pF2UkUwvKGq4qjNRzBZYqgEL5\",\"171sgjn4YtPu27adkKGrdDwzRTxnRkBfKV\"]"

¿Hay manera de hacer como;

bitcoin-cli addmultisigaddress 2 "[\"tpubDAenfwNu5GyCJWv8oqRAckdKMSUoZjgVF5p8WvQwHQeXjDhAHmGrPa4a4y2Fn7HF2nfCLefJanHV3ny1UY25MRVogizB2zRUdAo7Tr9XAjm\",\"tprv8erNzbjXdtYpKbKF4HeZpBCQj2W64MS2SAJCcWxgqLueSZ9KLTPZGoDTu8NugecLLqeS2RYan2f6qcexUTjp3m2HGxmpAiP48BaUz7XHxzQ\"]"

Respuestas (1)

Esto será mayormente posible en el próximo lanzamiento de Bitcoin Core 0.18.

Primero, debe comprender que la secuencia de tales direcciones multisig emparejadas (con claves públicas generadas a partir de 2 xpubs al mismo tiempo) se puede describir en el nuevo lenguaje descriptor.

La sintaxis es sh(multi(2,XPUB/*,XPUB/*)). Indica shla incrustación de P2SH, multise refiere a multisig, 2significa que se requieren 2 firmas y los dos argumentos XPUB son de donde se extraen las claves públicas.

Como los descriptores están destinados a ser seguros para la comunicación humana, en algunos casos necesitan una suma de verificación. Esta suma de verificación se puede calcular usando el getdescriptorinfocomando RPC, que agregará un #CHECKSUMsufijo.

Una vez que tenga el descriptor, puede hacer varias cosas con él. Uno es determinar las direcciones correspondientes usando deriveaddresses.

bitcoin-cli deriveaddresses "DESC" [0,1000]

Le dará las primeras 1001 direcciones (usando claves con índices del 0 al 1000) para su descriptor.

También puede importarlos a una billetera, todos a la vez usando el importmultiRPC flexible, que en 0.18 se amplía para admitir descriptores.

bitcoin-cli importmulti [{"desc" : "DESC", "range" : [0, 1000], "watchonly" : true, "timestamp" : "now"}]

Importará las primeras 1000 direcciones, junto con toda la información necesaria para reconocer los pagos a ellas y firmar para gastarlas (excluyendo las claves privadas, por supuesto).

  • El watchonlyindica que sabe que faltan claves privadas, pero desea importarlas como se observa de todos modos.
  • El timestampindica la primera vez que se pueden haber utilizado estas teclas. "now"significa que sabe que las claves aún no se han utilizado (o no le importa su historial); alternativamente, puede dar una marca de tiempo como el número de segundos desde la época de UNIX para especificar una hora de nacimiento.

Tenga en cuenta que esto no buscará automáticamente más de las primeras 1000 direcciones a medida que se consuman; necesitará un nuevo comando de importación para eso (por ahora).

Finalmente lo puse a prueba y es muy útil. ¿Alguna idea al importar un xprv de esta manera permitirá la importación de claves privadas? Sería muy bueno tener un nodo fuera de línea en el que pueda importar xprv para que sea el firmante final de mis transacciones de música HD.