Gebühr vom Transaktionsbetrag abziehen

Ich verwende den API-Aufruf sendtoaddress. Das Problem ist, dass ich einen Betrag angeben muss, der Gebühren enthält. Wenn ich zum Beispiel 1 BTC abhebe, brauche ich Bitcoin, um Gebühren von diesem Betrag abzuziehen und zum Beispiel 0,999 als Transaktionsbetrag und 0,001 als Gebühr zu senden (oder einen anderen Gebührenbetrag, der für diese Transaktion empfohlen wird).

Bitte helfen Sie und sagen Sie, ob es möglich ist, ein solches Ergebnis zu erzielen.

Antworten (3)

https://chainquery.com/bitcoin-api/sendtoaddress

Sie können den letzten (5.) Parameter verwenden:

  1. subtractfeefromamount (boolean, optional, default=false) Die Gebühr wird vom gesendeten Betrag abgezogen. Der Empfänger erhält weniger Bitcoins, als Sie im Betragsfeld eingeben.
bitcoindakzeptiert das jetzt auch

Wenn man bedenkt, dass jedes Programm (oder jeder Mensch), das Sie zum Aufrufen der API verwenden, in der Lage sein wird, eine einfache Addition oder Subtraktion durchzuführen, läuft dies darauf hinaus, die genaue zu verwendende Gebühr zu bestimmen. Die getinfo(Rückgabe der aktuellen Standardgebühr wie im Feld paytxfee) und settxfee(zum Ändern) API-Aufrufe sollten dies für Sie erledigen. Achten Sie auf Details – die Blockchain.info-API-Referenz warnt davor, dass die Änderungen, die Sie über vornehmen, settxfeenur für die nächsten 24 Stunden gültig sind. Ich habe nicht überprüft, ob diese Informationen aktuell sind und ob sie sich tatsächlich auf das Verhalten des Bitcoin-Kerns oder lediglich auf die „Bitcoind-kompatible“ API von blockchain.info beziehen.

Ich habe das herausgefunden, aber in einigen Fällen zwingt Bitcoin dazu, eine Gebühr hinzuzufügen, und wie ich weiß, kann der Betrag variieren ... Wie kann ich sicher sein, dass ich die richtige TX-Gebühr eingestellt habe?
Das können Sie sich nicht ausgedacht haben! Siehe meine Antwort.
@murich Du hast Recht, meine Antwort gilt nur in der (häufigen und möglicherweise typischen) Situation, in der du vermuten kannst, dass du die Verzugsgebühr zahlst. Der Bitcoin-Client kann Sie dazu bringen, mehr zu bezahlen, wenn er viele nicht ausgegebene Transaktionen kombinieren muss.

Transaktionsgebühren werden erhoben, wenn Sie eine Transaktion so konstruieren, dass impliziert wird, dass eine Gebühr gezahlt wird.

Zum Beispiel

  • Sie haben zwei nicht ausgegebene Transaktionsausgaben von 0,6 BTC und 0,4 BTC
  • Sie verwenden diese beiden Ausgänge als Eingänge (insgesamt 1 BTC) in Ihrer Transaktion, bei der Sie 1 Ausgangsadresse mit 0,99999 BTC bezahlen.
  • Die Gebühr von 0,00001 BTC ist impliziert. Es wird nicht an eine Adresse gesendet oder von der Software gesammelt.
  • Ihr Freund erhält 0,99999 BTC und wenn die Transaktion in einem Block enthalten ist, erhält der Miner 0,00001 BTC.

So funktioniert es im Grunde. Sie müssen berücksichtigen, was in die Transaktion hineingeht und was am anderen Ende herauskommt.

Sie beschreiben, wie es funktioniert, wenn der Aufrufer explizit eine Rohtransaktion konstruiert (z. B. via createrawtransaction). Aber unter Verwendung von sendtoaddress, wie im OP angegeben, bestimmt der Bitcoin-Client selbst, welche nicht ausgegebenen Transaktionen verwendet werden und wie hoch die entsprechende Gebühr ist, die enthalten sein soll.
@pyramiden stimmte zu. Ich nahm an, dass das OP versuchte herauszufinden, wie es gemacht werden kann, damit sie die Gebühr kontrollieren. In jedem Fall würde das Erstellen einer Rohtransaktion auch bedeuten, dass sie Mindestgebühren usw. berücksichtigen sollten ...