Extrahieren Sie die Ausgabeadresse aus dem Rohskript im Bitcoin-Protokoll

Ich arbeite am Bitcoin-Protokoll und möchte genau das Rohskript aus dem Ausgabeskript extrahieren, um die Adresse aus den TX-Nachrichten zu gewinnen.

Für gängige Skripte, wie Skripte, die mit 0x76 beginnen (bedeutet OP_DUP), können wir mit diesen Schritten auf die Adresse zugreifen:

  1. Nullen am Anfang des Rohskripts hinzufügen.
  2. Hash mit sha256.
  3. erneut mit sha256 gehasht.
  4. Nehmen Sie die ersten 4 Bytes dieses Ergebnisses und kleben Sie sie mit führenden Nullen an das Ende des Rohskripts
  5. dann mit base58 codieren.
  6. Fügen Sie am Ende "1" zum Anfang des letzten Ausgangs hinzu, um die Ausgangsadresse zu erhalten.

Diese Schritte sind für allgemeine Skripte geeignet, aber für Skripte wie dieses

410498361908359fec5adaa624428484e7d117f36f811c7c471f4f1c7dd8184c20b32f0e2590c8d70906ebd585da2ae14ea942e4088891139379b434a26173754750ac

was bedeutet:

PUSH(0x41) 0498361908359fec5adaa624428484e7d117f36f811c7c471f4f1c7dd8184c20b32f0e2590c8d70906ebd585da2ae14ea942e4088891139379b434a26173754750 ac

es hat nicht funktioniert und die generierte Ausgabe ist nicht gültig.

Sie müssen zuerst den Pubkey hashen160
Um die Antwort von Pieter zu verdeutlichen, konvertieren blockchain.info und andere Explorer sie normalerweise in eine p2pkh-Adresse. Dieses Skript selbst erzeugt keine Adresse

Antworten (1)

Es wird nicht funktionieren, weil es keine Adresse für dieses Skript gibt .

Adressen sind Vorlagen zum Erstellen von Ausgaben. Im Allgemeinen sollten Sie nicht den anderen Weg gehen, da Adressen als Ort fehlinterpretiert werden können, an den Coins gesendet werden, ohne dass der Empfänger danach fragt oder sich dessen bewusst ist.

Darüber hinaus gibt es nur wenige gängige Skripttypen (P2PKH, P2SH, P2WPKH, P2WSH), denen Adressen zugeordnet sind. Andere, wie Ihr Beispiel, nicht.

Sie sagen, es gibt keine Adresse für dieses Skript, aber warum, wenn ich diese Site verwende, um das obige Skript auszuführen: chainquery.com/bitcoin-api/decodescript , wird diese gültige Adresse erzeugt: 1MeeajrKNiF8WtD24S4DmVwEPQYJxeh7Ef
Das ist gängige Praxis, aber falsch. Das Skript ist ein Pay-to-Pubkey (P2PK)-Skript. Die Site zeigt die Adresse an, die dem Pay-to-Pubkey-Hash (P2PKH)-Skript für denselben Schlüssel entspricht. Sie sollten dies niemals tun; Der Empfänger erwartet möglicherweise keine Zahlung an etwas anderes als das P2PK-Skript.