Ich bin verwirrt über die Ableitung des gehärteten Schlüssels aus einer BIP44-Wallet, die nur auf Uhren beschränkt ist.
Lassen Sie mich zunächst erklären, was ich versuche zu tun.
ts zum Erstellen von Adressen und Skripten
Das habe ich bisher gemacht:
m/44'/0'/0'
, um gehärtete Schlüssel zu haben, da Bcoin Wallet gehärtete BIP44-Schlüssel benötigtxpub
.Der Code ist wie folgt:
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);
Jetzt habe ich eine 2-von-3-Multisig-Wallet nur für die Uhr erstellt. Was ich jetzt tun möchte, ist, Adressen zu erstellen. Ich möchte keine weiteren untergeordneten erweiterten Schlüssel ableiten. Ich brauche nur eine Ableitungsebene. Jetzt möchte ich Multisig-Adressen für meine Benutzer erstellen.
// 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);
Ich habe das Gefühl, dass ich diesen Schritt auf Umwegen mache, aber Sie verstehen, was ich versuche.
Um es noch einmal zu sagen, was ich jetzt tun möchte, ist, individuelle Empfangsadressen für meine Benutzer und die entsprechenden P2SH-Skripte zu erstellen.
Nun, das ist es, was ich brauche, um es zu verstehen .
receivingAddress
Ich habe Testetnet-Münzen an diese Adressen ( im obigen Code) gesendet und sie funktionieren. Die Brieftasche nimmt Coins auf.xprv
in die Brieftasche gemacht.m/44'/0'/0'
? Ist das, receivingAddress
was ich im obigen Code erstelle, kein gehärteter? Das heißt, wenn jemand in der Lage ist, die untergeordneten privaten Schlüssel eines Benutzers und der zu finden xpub
, kann er alle chilenischen privaten Schlüssel ableiten?Ich entschuldige mich für die lange Frage. Ich bin etwas verwirrt darüber, wie die Brieftaschen öffentliche untergeordnete Schlüssel erstellen können, ohne einen privaten Schlüssel in der Brieftasche zu haben.
Danke schön.
Sie leiten keine gehärteten untergeordneten Schlüssel ab. Sie können keine gehärteten Schlüssel von einem xpub ableiten. Nur weil der xpub selbst gehärtet ist, heißt das nicht, dass seine Kinder es sind.
Andreas Chow
madu
Andreas Chow
madu
createAddress()
? Generiert es keinen untergeordneten Schlüssel? Jedes Mal, wenn ich es aufrufe,createAddress()
wird eine neue untergeordnete Adresse mit einem bestimmten Index generiert. Was verstehe ich hier falsch.Andreas Chow
createAddress()
eine neue Adresse erstellt wird. Wenn dies der Fall ist, werden keine gehärteten Adressen abgeleitet, insbesondere wenn Sie ihm nur einen xpub gegeben haben.