Semantik der Sequenznummer

Beim Lesen der folgenden BIPs: 68 , 112 , 125 habe ich ein paar Fragen zur Sematik von Sequenznummern bekommen. Soweit ich verstanden habe, haben Sequenznummern in Transaktionen der Version 1 die folgende Bedeutung:

  • Wenn eine Eingabe eine Sequenz kleiner als 0xfffffffehat, signalisiert die gesamte Transaktion die Ersetzbarkeit

Andererseits gilt bei Transaktionen der Version >=2 die obige Regel plus:

  • Wenn bei einer Sequenznummer das Deaktivierungs-Flag ( 1 << 31) auf gesetzt ist 1, hat die Sequenz keine zusätzliche Bedeutung (kann aber dennoch verwendet werden, um die Ersetzbarkeit zu signalisieren, richtig?)
  • Wenn das Disable-Flag nicht gesetzt ist, wird die Sequenznummer als relative Sperrzeit mit dem in BIP68 angegebenen Format interpretiert. Dies bedeutet, dass die Transaktion nicht in einen Block aufgenommen wird, bis die ausgegebene Ausgabe das angegebene Alter erreicht.

Alles in allem kann man also, wenn man die Ersetzbarkeit in einer Version >= 2-Transaktion signalisieren möchte, einfach eine Sequenznummer verwenden, die kleiner als 0xfffffffeist, aber ein aktives Deaktivierungs-Flag hat (d. h. größer als 0x80000000), andererseits wie soll man die Sequenznummer einstellen, wenn man sowohl Ersetzbarkeit signalisieren als auch relativ timelocked ausgeben will? Wäre es in Ordnung, eine Sequenznummer gemäß BIP68 zu verwenden und die Bits zu erhöhen, die in diesem Format keine Bedeutung haben, um die Transaktion zu ersetzen? (dh alle Bits außer 1 << 31, 1 << 22und ändern 0xffff)

Antworten (1)

Wenn Sie eine Transaktion der Version 2 mit nicht gesetztem Disable-Flag erstellen, ist der gesamte nSequence-Wert per Definition kleiner als 0xFFFFFFFE (weil er höchstens 0x7FFFFFFF sein wird).

Dies impliziert, dass eine Transaktion mit einer aktiven relativen Sperrzeit gemäß BIP125 immer ersetzbar sein wird.

Dies ist Absicht. Nicht ersetzbare Transaktionen versuchen, von den bestehenden Netzwerkrichtlinienregeln Gebrauch zu machen, um die erste übertragene Version einer Transaktion zu bevorzugen. Eine Transaktion, die erst zu einem späteren Zeitpunkt gültig wird, kann davon keinen Gebrauch machen, da sie erst dann gesendet werden kann, wenn sie gültig wird.

Ich sehe nicht ein, warum die Zeitverzögerung bedeutet, dass die Nichtersetzbarkeit nicht nützlich sein kann. Ich kann mir keine Verwendung vorstellen, aber jemand möchte aus irgendeinem Grund nicht, dass seine Transaktion ersetzt wird, selbst wenn er eine Ausgabe mit relativer Sperrzeit ausgibt.