Estoy desconcertado por la derivación de clave endurecida de una billetera BIP44 de solo reloj.
Permítanme primero explicar lo que estoy tratando de hacer.
ts para crear direcciones y scripts
Esto es lo que he hecho hasta ahora:
m/44'/0'/0'
para tener claves reforzadas porque la billetera Bcoin requiere claves reforzadas BIP44xpub
claves.El código es el siguiente:
const HSM_accountKey = "xpub_HSM...."
const IC_accountKey = "xpub_IC..."
const Paper_accountKey = "xpub_Paper..."
const result_wallet_HSM = await walletClient.createWallet('wallet_HSM', options_wallet);
const result_wallet_IC = await walletClient.createWallet('wallet_IC', options_wallet);
const result_wallet_Paper = await walletClient.createWallet('wallet_Paper', options_wallet);
const wallet_IC_account = await wallet_IC.getAccount('default');
const wallet_Paper_account = await wallet_Paper.getAccount('default');
const result_addkey1 = await wallet_HSM.addSharedKey('default', wallet_IC_account.accountKey);
const result_addkey2 = await wallet_HSM.addSharedKey('default', wallet_Paper_account.accountKey);
Ahora he creado una billetera multisig 2 de 3 solo para ver. Lo que quiero hacer ahora es crear direcciones. No quiero derivar más claves extendidas para niños. Solo necesito un nivel de derivación. Ahora quiero crear direcciones multisig para mis usuarios.
// Create addresses from each wallet
const wallet_HSM_address = await wallet_HSM.createAddress('default');
const wallet_IC_address = await wallet_IC.createAddress('default');
const wallet_Paper_address = await wallet_Paper.createAddress('default');
// Keyrings for script generation
const keyring_HSM = KeyRing.fromJSON(wallet_HSM_address);
const keyring_IC = KeyRing.fromJSON(wallet_IC_address);
const keyring_Paper = KeyRing.fromJSON(wallet_Paper_address);
//Get the pubkeys from each wallet
const pubKeys = [keyring_HSM.publicKey, keyring_HSM.publicKey, keyring_Paper.publicKey];
const multiSigScript = Script.fromMultisig(m, n, pubKeys);
const receivingAddress = multiSigScript.getAddress().toBase58(network);
Tengo la sensación de que estoy dando este paso de forma indirecta, pero entiendes lo que estoy tratando de hacer.
Para reiterar, lo que quiero hacer ahora es crear direcciones de recepción individuales para mis usuarios y los scripts P2SH correspondientes.
Ahora, esto es lo que necesito ayuda para entender .
receivingAddress
en el código de arriba) y funcionan. La billetera recibe monedas.xprv
a la billetera.m/44'/0'/0'
? ¿El que receivingAddress
estoy creando en el código anterior no está reforzado? Lo que significa que si alguien puede encontrar las claves privadas secundarias de un usuario y el xpub
, ¿podrá obtener todas las claves privadas de Chile?Mis disculpas por la larga pregunta. Estoy un poco confundido en cuanto a cómo las billeteras pueden crear claves públicas secundarias sin tener ninguna clave privada en la billetera.
Gracias.
No está derivando claves secundarias reforzadas. No puede derivar claves reforzadas de un xpub. El hecho de que el propio xpub esté protegido no significa que sus hijos lo estén.
andres chow
madu
andres chow
madu
createAddress()
? ¿No está generando una clave secundaria? Cada vez que lo llamocreateAddress()
, genera una nueva dirección secundaria con un índice determinado. ¿Qué estoy malinterpretando aquí?andres chow
createAddress()
está creando una nueva dirección. Si ese es el caso, no está derivando direcciones reforzadas, especialmente si solo le dio un xpub.