Cuando se habla de carteras HD (¿BIP-32?), escucho hablar de Multi Sig y Key Derivation / Chains. ¿Es posible mezclar estos dos conceptos?
Por ejemplo, quiero almacenar la mayoría de mis monedas con una billetera multisig 2 de 3, pero me gustaría almacenar un pequeño subconjunto de monedas en una clave secundaria derivada de la billetera 2 de 3, de modo que si la clave secundaria estuviera comprometida, Podría usar la billetera principal 2 de 3 para gastar esos fondos.
¿Es esto posible o estoy hablando un galimatías?
Sí, se llama HDM (Hierarchical-Deterministic-Multisig).
No hay un estándar per se, y el principal proponente (que yo sepa) es/ha sido Vitalik Buterin, de la revista Ethereum/Bitcoin Magazine.
Hay un código en la biblioteca Python pybitcointools que permite implementar esto en un nivel bajo. Las funciones se llaman:
bip32_hdm_script
ybip32_hdm_addr
El formato es: bip32_hdm_script([xprv1, xprv2, xprv3...], (0, 1..))
, donde los xprvs son una lista, y los números enteros que los preceden representan la derivación de la ruta ( NOTA: los números enteros deben ser una tupla ). Entonces, 0,1
significa k/0/1
. Usar 1+2**31
para 1H
. Esta función devuelve el script de redención multi-sig , por lo que lo canalizará bip32_hdm_addr
(que simplemente devuelve las direcciones p2sh)
Por supuesto, también utilizará el script para firmar transacciones. Hay una bifurcación útil de pybitcointools disponible con funcionalidad adicional y actualizaciones periódicas, que podría ser más útil en este esfuerzo (frente a la biblioteca fuente actualizada esporádicamente).
Una pregunta similar, la aclaración de los scripts multisig deterministas jerárquicos BIP32 , también la hice y respondí recientemente .
natanael
zanegray
natanael