Welches Einlösungsskript wird in der Bitcoin-Core-Wallet verwendet, wenn die Adresse generiert wird?

Ich versuche, die Adresse 38DGj87axzmQiZeAd1w1y5FEmuu5a7pfBain meiner Bitcoin-Core-Wallet mit Code zu generieren.

Zuerst speichere ich den privaten Schlüssel aus der Adresse, dann berechne ich die Adresse aus dem privaten Schlüssel. Da die Adresse das Startformular ist m, das vom P2SH- Bitcoin- Adresstyp ist . Und die P2SH-Adresse ist wie folgt aufgebaut

base58-encode: [one-byte version][20-byte hash][4-byte checksum]

Hier weiß ich nicht, was das Skript verwendet hat, um das [20-byte hash]in der Bitcoin-Core-Wallet zu berechnen?

Antworten (2)

Sie können den getaddressinfoRPC-Befehl in der neuesten Version von Bitcoin Core verwenden, um das Hex-codierte Skript für diese Adresse zu erhalten. Beachten Sie jedoch, dass ich annehme, da Sie einen privaten Schlüssel erhalten konnten, dass es sich um eine P2SH-verpackte Segwit-Adresse handelt, was bedeutet, dass das Skript nur ein OP_0Opcode ist, gefolgt vom Hash160 des öffentlichen Schlüssels, der diesem privaten Schlüssel entspricht.

Ich verwende Bitcoin Core 0.16.0 die neueste Version. Aber wenn ich benutze getaddressinfo, bekomme ich "Methode nicht gefunden"
Oh, Entschuldigung, ich dachte, es hätte es in 0.16 geschafft, es sieht so aus, als wäre es immer noch nur auf dem Master-Dev-Zweig. In diesem Fall müssen Sie das Skript möglicherweise selbst erstellen, indem Sie den von mir erwähnten OP_0 + hash160-Ansatz verwenden. Weitere Informationen finden Sie hier: bitcoincore.org/en/segwit_wallet_dev/…
Verwenden Sie validateaddressstattdessen (die Teile validateaddress, die Adressinformationen enthalten, werden in einen neuen getaddressinfoBefehl für die nächste Hauptversion, 0.17, verschoben).
@AndrewChow gibt validateaddress das Skript aus? Ich war mir nicht sicher, ob dies der Fall war oder ob es sich um eine neue Funktion handelte
@MeshCollider Das tut es. Der RPC wurde im Master einfach in zwei Teile geteilt, aber es wurden keine neuen Funktionen hinzugefügt.

(Für zusätzliche Details):

Es ist ein P2SH-P2WPKH(Pay-to-Witness-Public-Key-Hash, verpackt in einem Pay-to-Script-Hash). So erstellen Sie diese Adresse für das Hauptnetz:

  1. Zeuge erstellen PKH:

PKH = OP_0 0x14 RIPEMD160(SHA256(compressed public key))
0x14ist die Anzahl der Bytes

  1. Erstellen P2SH:

BASE58CHECK(0x05 PKH)
0x05ist das Mainnet- P2SHPräfix