Warum ist die Ausgabeadresse eine Liste in RPC/Konsole?

Vout enthält eine Liste von Adressen, die mir aufgefallen sind, immer mit size = 1, falls vorhanden. Das Folgende ist ein Beispiel von Bitcoin Testnet:

{
      "value": 0.91840581,
      "n": 2,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 1416b8f3a1c1c7e3e73a05046f002e66004accc3 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9141416b8f3a1c1c7e3e73a05046f002e66004accc388ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "mhMB2g88n42ghQ5p1VA7Mt9VgTp9QvpDXU"
        ]
      }
    }

Warum ist das Feld "Adressen" (Adresse) eine Liste? Gibt es Fälle, in denen dies mehr als eine Adresse annehmen kann? Wer kann das dann ausgeben?

Antworten (1)

Dies liegt an der historischen Verwirrung zwischen Adressen und Schlüsseln.

Das ursprüngliche Ziel dieses Felds war das Melden der öffentlichen Schlüssel, die an rohen Multisig-Ausgaben beteiligt sind. Auf diese öffentlichen Schlüssel wurde jedoch durch die ihnen entsprechende P2PKH-Adresse verwiesen.

Das ist verwirrend, weil offensichtlich jeder Ausgang nur einer einzigen Adresse entspricht. Die Funktion ist jetzt auch nutzlos, da P2SH eingeführt wurde, wo anstatt alle öffentlichen Schlüssel in die Ausgabe einzufügen, nur ein Hash des Skripts mit all diesen Schlüsseln gespeichert wird.

BEARBEITEN: Seit Bitcoin Core 23.0 existiert das Feld „Adressen“ nicht mehr, zusammen mit mehreren anderen Feldern (wie „reqSigs“), die nur für bloße Multisigs relevant (aber verwirrend) sind.

Also wird es jetzt nie benutzt? Es ist sicher, einfach die Elementnummer 0 zu nehmen?
Raw Multisig wird nicht verwendet; Es gibt keine Möglichkeit für gängige Wallet-Software, an sie zu senden. Für alles andere als rohes Multisig ist nur eine einzige Adresse vorhanden.