Wie bekomme ich die Absenderadresse mit bitcoinj (kein Duplikat)?

Ich verwende bitcoinj (Java-Implementierung). Ich habe hier viele Antworten gelesen, aber keine davon beantwortet meine Frage. Wie bekomme ich die Absenderadresse mit Bitcoinj?

Ich habe Transaktionsvariable tx. Ich kann seinen Hash bekommen, ich habe das auch verwendet: https://blockchain.info/tx/myTXhash und es hat mir die Transaktionen gezeigt. Das Problem ist nicht einmal, dass das Web mir den Absender anzeigt.

ABER: Wenn ich diese generierte .wallet-Datei verwende und sie mit Multibit (Bitcoin Wallet) öffne, kann ich dort unter Transaktionen sehen, von wem das Geld gesendet wurde. Das heißt, es gibt eine Möglichkeit, die Absenderadresse zu erhalten, aber WIE?

EDIT: Ich habe mich geirrt, Multibit weiß nicht, von wem das Geld stammt, ich war nur verwirrt, weil es mir zeigte, dass es an die richtige Adresse gesendet wurde (aber das wurde von mir in args eingerichtet).

Aber gibt es eine Möglichkeit, die Nachricht irgendwie vom Kunden zu erhalten, um zu wissen, ob er es ist, der das Geld gesendet hat?

Meinen Sie damit, die Bitcoin-Adresse zu bekommen, die das Geld gesendet hat, oder irgendwie einen Namen zu bekommen?
Ja, ich meine die Bitcoin-Adresse, die das Geld gesendet hat. Oder auf andere Weise, um zu überprüfen, ob das Geld von dieser Person stammt. Betrachten Sie es als eine Brieftasche, die ständig Geld erhält, aber ich muss überprüfen, ob es von denen kommt, die auf ein Internet zugreifen möchten.

Antworten (2)

Zur späteren Bezugnahme: In bitcoinJ (Java-Version) befinden sich die Eingabe-/Ausgabeadressen von Transaktionen in TransactionInput- und TransactionOutput-Objekten.

Zum Beispiel: für Transaktion tx:

List<TransactionInput> inputs = tx.getInputs();
List<TransactionOutput> outputs = tx.getOutputs();

for(TransactionOutput out : outputs){
    System.out.println(out.getAddressFromP2PKHScript(params));
    System.out.println(out.getAddressFromP2SH(params));
}

for(TransactionInput in : inputs){
    System.out.println(in.getFromAddress());
}

Beachten Sie, dass einige Transaktionen möglicherweise keine Eingabeadresse haben. Hier ist die Github-Beschreibung der Methode getFromAddress():

Praktische Methode, die die Absenderadresse dieser Eingabe zurückgibt, indem sie scriptSig analysiert. Das Konzept einer „Von-Adresse“ ist in Bitcoin nicht gut definiert und Sie sollten nicht davon ausgehen, dass Absender einer Transaktion tatsächlich Münzen an derselben Adresse erhalten können, die sie zum Signieren verwendet haben (z. B. gilt dies nicht für Shared Wallets).

Sie können die Adressen sehen, die Geld gesendet und empfangen haben, wenn Sie sich eine Transaktion bei den meisten Diensten ansehen. Zum Beispiel:

https://blockchain.info/tx/c6cb02e70442275ffb7b35cc8a9416323ff7e01b5378abc20ae7f5b6e7617884

Der große grüne Pfeil zeigt die Übertragung von einer Adresse (1B898F2tcWHX1LZWWfD21FRzqWrtXLocXN) zu den 2 anderen. Programmgesteuert könnten Sie eine API verwenden, die JSON mit entsprechenden Informationen zurückgibt:

https://api.blockcypher.com/v1/btc/main/txs/c6cb02e70442275ffb7b35cc8a9416323ff7e01b5378abc20ae7f5b6e7617884

Es ist jedoch nicht einfach, diese Informationen zu extrahieren, wenn man sich eine Rohtransaktion ansieht, da die Adressen in das Skript eingebettet sind.