Muss ich nach einer Rücksendeadresse fragen, um jemandem etwas zurückzuzahlen?

Ich möchte Code schreiben, der eine Transaktion akzeptiert und anschließend einen bestimmten Betrag an den Ursprung der Transaktion "zurückzahlt".

Angenommen, die Benutzer verwenden den Standardclient. Haben Transaktionen eine einzige Eingabe oder muss ich mit der Situation umgehen, in der eine Transaktion mehrere Eingaben hat?

Kann ich einfach eine dieser Eingaben auswählen und an diese Eingabe zurückzahlen? Ich möchte vermeiden, dass Benutzer aufgefordert werden müssen, eine Auszahlungs-Bitcoin-Adresse einzugeben – es ist so viel sauberer, einfach an dieselbe Adresse zurückzuzahlen, die sie verwendet haben.

Antworten (2)

Die Annahme, dass der Benutzer den Standardclient oder tatsächlich einen beliebigen Client verwendet, ist eine sehr starke Annahme. Wenn der Benutzer einen eWallet-Dienst wie Instawallet verwendet, wird der Benutzer das Geld aller Wahrscheinlichkeit nach nicht zurückerhalten, es wird vom Betreiber einbehalten und möglicherweise einem seiner anderen Kunden gutgeschrieben.

Selbst wenn die eingegebenen Adressen in irgendeiner Weise vom Benutzer kontrolliert werden, kann die Rückzahlung an eine von ihnen zu Verwirrung hinsichtlich der Zahlungsquelle führen - es sieht so aus, als ob die Zahlung für das war, womit die Adresse ursprünglich verknüpft war. Wenn es eine vom Benutzer kontrollierte Änderungsadresse gibt, wird diese eindeutig mit der Zahlung an Sie verknüpft, sodass die Informationen vorhanden sind, um sie zu identifizieren, auch wenn der Client sie möglicherweise nicht richtig anzeigt.

Hmm. Also muss ich den Benutzer bitten, eine Absenderadresse anzugeben? Das ist scheiße :(
Nun, das kommt darauf an. Sie könnten ein optionales Absenderadressenfeld erstellen und klarstellen, dass der Benutzer dieses Feld ausfüllen sollte, wenn er nicht den Standardclient verwendet (oder genau weiß, was er tut). Es wäre eine gute Idee für eWallet-Anbieter, Änderungsadressen mit dem ursprünglichen Client zu verknüpfen, und in einer idealen Zukunft, in der dies vernünftigerweise von eWallets erwartet werden kann, ist es sicher, an die Änderungsadresse zu senden. Auch eWallets könnten die Option bieten, eine Zahlung zu senden, indem sie zuerst über eine Adresse geleitet wird, die dem Kunden zugeordnet ist.

Da jeder Benutzer problemlos Bitcoins mit mehreren Adressen empfangen kann, können die von ihnen gesendeten Transaktionen mehrere Eingaben haben. Es gibt ein paar Fälle, die Sie berücksichtigen sollten:

  • Einzelne Eingabe, einzelne Ausgabe - einfacher Fall, senden Sie Münzen zurück an die Eingabe (es sei denn, ein Witzbold schürft Münzen auf Ihre Adresse, dann können Sie sie genauso gut behalten, anstatt sie an eine ungültige Adresse zu senden)
  • Beliebig viele Inputs, zwei Outputs - der zweite Output ist wahrscheinlich der Ort, an den der User seine restlichen Coins geschickt hat, man kann sie genauso gut dorthin schicken (obwohl man es den Usern vorher erklären sollte)
  • Mehrere Eingänge, einzelner Ausgang - Sie sollten den Benutzern wahrscheinlich zwei Funktionalitäten zur Verfügung stellen - entweder das Senden von Münzen an den ersten Eingang oder das Senden der gleichen Menge an Münzen, die von jedem Eingang erhalten wurden, an jeden von ihnen
  • Mehrere Eingänge, mehrere Ausgänge - sollte wahrscheinlich wie im vorherigen Fall funktionieren

Alles in allem sollten Sie Benutzern unterschiedliche Funktionalitäten zur Verfügung stellen, von denen wahrscheinlich jeder eine andere Adresse für seine Transaktionen verwendet, und sehen, welche häufiger verwendet werden.

Die meisten Benutzer wissen nichts über die Art der Transaktion, die sie generieren. Ich will ihr Leben nicht verkomplizieren. Werden die Ausgänge immer entweder 1 oder 2 sein? Wann erhalte ich eine Sendung mit mehr als 2 Ausgängen von einem legitimen Benutzer?
@ ripper234 Sie können die komplizierteren Optionen weniger zugänglich machen, indem Sie sie beispielsweise in "erweiterte Optionen" einfügen. Soweit ich weiß, sind die Ausgaben für den Standard-Client normalerweise 1 oder 2, aber jemand verwendet möglicherweise einen Nicht-Standard-Client, mit dem man Coins gleichzeitig an mehrere Adressen senden kann. Im Moment denke ich, dass diese nur in Börsen und Mining-Pools erscheinen, die wahrscheinlich nicht verwendet werden, um Ihnen Münzen zu schicken.
OK, also gehe ich davon aus, dass der TX 1-2 Ausgänge hat, und wähle einen der Eingänge willkürlich als meine Payback-Adresse aus.