Warum wird die Transaktionsersetzung nicht unterstützt?

Der Wiki-Artikel über Verträge spricht über die besten Sachen, die Sie mit Verzögerungen und Ersatz machen können. (Sperrzeit bzw. Sequenznummern.) Laut Dokumentation wird das Ersetzen jedoch noch nicht unterstützt. Warum nicht?

(Wenn die Antwort "es ist noch nicht implementiert" lautet, warum wurde es noch nicht implementiert?)

Antworten (4)

Das ist nicht richtig. Das Feld nLockTime ist implementiert. Es wurde vor einiger Zeit bewusst abgeschaltet, um die Komplexität des Protokolls zu reduzieren. Der Grund war eine Reihe von protokollbasierten Angriffen, die die Integrität des Systems kompromittiert hatten.

Irgendwann wird die Funktion wieder aktiviert. Wahrscheinlich, nachdem jemand eine umfassende Testsuite und eine technische Analyse geschrieben hat, die zeigt, dass eine erneute Aktivierung kein Risiko darstellt.

Vermutlich meinen Sie mit "Das stimmt nicht" die Antwort von Thomas, aber das Stackexchange-Format macht den Kontext überhaupt nicht klar und unveränderlich.
Ist nLockTime wirklich deaktiviert? Könnte jemand eine Quelle angeben?

Auf dieser Vertragsseite können Sie fast alles tun, ohne dass eine Transaktion ersetzt werden muss. Die Sperrzeit funktioniert heute (Stand Dezember 2013), Transaktionen mit lock_time können nicht in die Blockchain gehen, bis die Zeit erreicht ist.

Die Transaktionsersetzung wird nicht unterstützt, da die Entwickler gesagt haben, dass die ganze Idee der nSequence-basierten Ersetzung problematisch ist und möglicherweise nie aktiviert wird, da dies anscheinend potenzielle Denial-of-Service-Probleme verursacht. Sie diskutieren hier darüber:

https://bitcointalk.org/index.php?topic=131443.0

Ich glaube jedoch nicht, dass eine Transaktionsersetzung wirklich erforderlich ist, da die Entwickler kürzlich Transaktionen mit lock_time und Version < UINT_MAX vorgenommen haben, die "nicht standardmäßig" sind. Dies bedeutet, dass Transaktionen, die lock_time verwenden, nicht im Peer-to-Peer-Netzwerk weitergeleitet werden, bis die lock_time erreicht ist. An diesem Punkt können Sie die Transaktion zur Weiterleitung verschieben und sie wird als Standard betrachtet und kann in die Blockchain aufgenommen werden .

Der Grund, warum ich denke, dass dies die meisten Anwendungsfälle abdeckt, liegt darin, dass ein Austausch nur erforderlich war, wenn die gesperrten Transaktionen weitergeleitet und in den Speicherpools gespeichert wurden. Wenn also eine Transaktion auftauchte, die nicht gesperrt war, würde sie nicht akzeptiert weil die Ersetzung nicht implementiert wurde und die gesperrte Transaktion bereits im Mempool war. Da die gesperrten Transaktionen jetzt nicht weitergeleitet und in den Mempools gespeichert werden, bis lock_time erreicht ist, halte ich das Ersetzen für weitaus weniger wichtig, sodass die Tatsache, dass es nicht so aussieht, als würde es bald implementiert werden, kein Problem darstellt.

es ist noch nicht implementiert.

Das Protokoll hat diese Funktionen definiert, damit sie in Zukunft implementiert werden können, aber derzeit wird an wichtigeren Funktionen gearbeitet.

Verzweigen Sie das Repo und erstellen Sie einen Patch, um Unterstützung hinzuzufügen: p

Hier ist eine Seite, die die nLockTime-Code-Implementierung zeigt, ob sie funktioniert oder nicht. Ich habe keine Ahnung. Einige sagen, dass sie implementiert ist, andere sagen, dass sie nicht implementiert ist

http://brainwallet.org/#tx