Kann jemand diesen Pseudocode erklären, um eine Rücksendeadresse zu finden?

Ich habe eine beliebte Antwort gelesen , die erklärt, wie man die Adresse der Person findet, die eine Transaktion gesendet hat, und der Pseudocode in dieser Antwort ergibt für mich nicht viel Sinn.

txid = <relevant transaction id>
addresses = []
raw_tx = decoderawtransaction(getrawtransaction(txid))
for(input in raw_tx['vin']) {
  input_raw_tx = decoderawtransaction(getrawtransaction(input['txid']))
  addresses.push(input_raw_tx['vout'][input['vout']]['scriptPubKey']['addresses'][0])
}

Hier ist der Teil, den ich verstanden habe. Eine erstellte Brieftasche txidkann viele Eingaben von verschiedenen Adressen verwenden, um diesen Geldbetrag zu senden. Aus diesem Grund iterieren wir input in raw_tx['vin']und erstellen eine Liste von Adressen addresses = [].

Hier ist ein Teil, der für mich unklar ist:

input_raw_tx['vout'][input['vout']]['scriptPubKey']['addresses'][0]

input_raw_tx['vout']gibt die Liste zurück. So input['vout']sollte der Index dieser Liste zurückgegeben werden. Aber es gibt auch eine Liste zurück. Kann jemand erklären, was los ist?

Auch diese Antwort wurde im alten Jahr 2013 geschrieben. Hat sich in diesen 4 Jahren etwas geändert und gibt es eine einfachere Möglichkeit, die Rücksendeadresse ab Anfang 2918 zu finden?

Antworten (1)

Wiederholen Sie nach mir: Bitcoin-Transaktionen haben keine Rücksendeadresse. Bitcoin-Transaktionen haben keine Absenderadresse.

Wie Sie sagen, kann eine Transaktion mehrere Eingaben haben. Jede Eingabe gibt eine Münze aus, die zuvor von einer bestimmten Adresse/Taste oder einem bestimmten Skript gesteuert wurde. Diese „Eingangsadressaten“ sind jedoch aus mehreren Gründen keine Absenderadressen:

  • Die verschiedenen Eingaben könnten verschiedenen Personen/Entitäten gehören, zum Beispiel wenn sie CoinJoin- oder simar-Protokolle verwenden. Sie wissen nicht, wer der Absender Ihrer Zahlung ist (der obige Pseudocode gibt einfach alle Absenderadressen zurück).
  • Möglicherweise gibt es nicht für jede Eingabe eine erkennbare Adresse (z. B. wenn sie über ein High-Level-Protokoll gesendet wurde), sondern nur ein beliebiges Skript (der obige Pseudocode schlägt in diesem Fall fehl).
  • Selbst wenn es eine eindeutige Adresse gibt, kann sie zu einem Dienst gehören, den der Absender verwendet hat - und das Zurücksenden von Coins würde den Dienst oder einen beliebigen Benutzer davon gutschreiben und nicht den Absender Ihrer Transaktion (der Pseudocode würde die Adresse des Dienstes angeben). dieser Fall).
  • Selbst wenn es eine Adresse gibt, die tatsächlich dem Absender gehört, erwartet er möglicherweise keine Zahlung an sie und hat möglicherweise die privaten Schlüssel dafür nicht aufbewahrt.

Wenn Sie etwas Geld zurückerstatten möchten, gibt es im Allgemeinen nur eine Lösung: Fragen Sie den Absender rechtzeitig nach einer Rückerstattungsadresse.