Wenn die Gebühr von der 'Ersatz' - Transaktion hoch genug war, einige Bergleute versucht sein könnten, ignorieren die erste Transaktion und gehen für die höhere Belohnung, die ich Schätze. So oder so, es ist am besten für Empfänger von Bitcoin-Zahlungen zu warten, bis eine Bestätigung, wenn die Zahlung der Betrag wesentlich ist. @StevenRoose Ja. Ich lese online nach Stunden, dass es möglich ist, zum abrufen der Münzen, aber ich bin unklar. Muss ich komplett installieren Bitcoin Core (150GB), dann versuchen Sie, die Transaktion abzubrechen, die Weise, so dass die BTC zurück zu meinem wallet-Guthaben oder wohin gehe ich von hier? Ich bin ratlos. @MeniRosenfeld, weil ich bin nicht ein Feigling, wie Satoshi Nakamoto @KinnardHockenhull: - Hashes sind die 256-bit-Ganzzahlen. Das Ziel ist max_target/Schwierigkeiten, so dass (2^256*Schwierigkeitsgrad/max_target) hashes benötigt im Durchschnitt finden Sie einen block. So die Schwierigkeit ist der Wert, der macht, dass die Durchschnittliche Zeit, die für das Netzwerk zu finden, die einem block entspricht der vorgesehenen Zeit.

Also ich bin in den Prozess der Umsetzung einer BTC-based payment Modul, in dem für jede Transaktion eine non-wallet-Konto einen Bruchteil der Betrag wird am Ende auf ein charity-Konto in eine externe Brieftasche nicht in diesem Modul geregelt.

Eine typische Runde für das wäre:

  • Das Modul erhält die Zahlung vom Benutzer
  • Er leitet die 90% (dieser Prozentsatz ist willkürliche) der Betrag, bis zu seinem endgültigen Ziel (z.B. Kaufmann)
  • Es muss jetzt vorwärts, die restlichen 10% an die Hilfsorganisation der Wahl des Benutzers

In einer unteren Ebene des Systems:

  • Erhält eine Transaktion TxFromUser aus der Nutzer mit einem Betrag in Höhe von X BTC
  • Wartet bis es 6 Bestätigungen
  • Erstellt eine neue raw-Transaktion, TxToMerchant für die Weiterleitung der Zahlung an den merchant
  • Erstellt eine rohe Transaktion TxToCharity für die Weiterleitung der Spende an die Hilfsorganisation

Geht ein wenig tiefer:

TxToMerchant:

  • Erstellen Sie neue raw-Transaktion
  • Neuen input: TxFromUser
  • Fügen Sie neue Ausgabe: Adresse: Händler-Adresse, Höhe: 0.9 * TxFromUser.Höhe
  • Fügen Sie neue Ausgabe: Adresse: Modul eigene wallet-Adresse, Menge: 0.1 * TxFromUser.Höhe
  • Berechnen Sie die Gebühr für diese Transaktion
  • Subtrahieren Sie die Gebühr ab der zweiten Ausgabe die Menge
  • Erstellen der Transaktion hex und Unterschreiben Sie es mit der rechten Taste
  • Senden Sie die Transaktion und seine id: TxToMerchant.Id

TxToCharity:

  • Warten Sie, bis die oben genannten Transaktion (TxToMerchant) zu bekommen, bestätigt
  • Erstellen Sie eine neue raw-Transaktion
  • Neuen input: TxToMerchant (das wird die Veränderung sein, die wir fragten ihn nach oben)
  • Fügen Sie neue Ausgabe: Adresse: Organisation Adresse, Menge: TxToMerchant.Menge = 0.1 * TxFromUser.Höhe
  • Berechnen Sie die Gebühr für diese Transaktion
  • Subtrahieren Sie die Gebühr aus der Transaktion der Ausgabe Betrag
  • Erstellen der Transaktion hex und Unterschreiben Sie es mit der rechten Taste
  • Senden Sie die Transaktion und seine id: TxToCharity.Id

Ich bin der Tatsache bewusst, dass ich eine Fusion der beiden Geschäfte (TxToMerchant und TxToCharity) in einer einzigen Transaktion, jedoch aus verschiedenen Gründen (fachliche Anforderung) lasst uns einfach sagen, dass dies derzeit nicht möglich.

Das Problem habe ich mit der oben genannten Implementierung ist dies: warten auf den TxToMerchant , um zu bestätigen, entsteht eine zeitliche Verzögerung, da ich nicht vorwärts, die Zahlung an die gemeinnützige Organisation TxToCharity bis TxToMerchant bestätigt wird (oder kann ich, ohne Angst, transaction malleability etc?).

Hinzu kommt, dass, wenn die Zeit kommt, fügen Sie die TxToCharity's input ich habe, um zu verfolgen, wie sich die änderung wurde wieder in TxToMerchant und erhalten dann das Recht unverbraucht Transaktion (wo listunspent.txid = TxToMerchant.Id), gibt es effizientere und weniger fehleranfällige Weg, dies zu tun?

Nehmen wir an, dass der Benutzer wünscht, teilen die Zahlung zwischen 2 Händler (oder einem Händler und einen Fracht-service, was mehr Sinn macht), also im obigen Beispiel wäre 1 weitere Transaktion wie TxToMerchant, nennen wir es TxToFreightService. Lassen Sie uns jetzt sagen, dass TxToMerchant geht Trog gut und bekommt bestätigt, aber TxToFreightService versagt und wird nie bestätigt, weil der input für die es war ein double-spend-unabhängig von der 6-Bestätigungen bekamen wir (für Eingang), bevor Sie ihn verarbeiten. TxToCharity hängt davon ab, TxToFreightService , weil die beantragte änderung in TxToFreightService dienen als input für TxToCharity. Wie gehe ich mit diesem Szenario programmgesteuert und ohne Korrekturen von hand jedes einzelne mal, wenn dies geschieht?