Der nSequence-Opcode ist ein System, das Zeitsperren in Bitcoin ermöglicht. Es hilft uns, bestimmte Bedingungen in Transaktionen zu programmieren, die zuerst erfüllt sein müssen, damit diese Transaktion endgültig im Netzwerk akzeptiert werden kann. Eine enorme Programmierleistung, die uns Bitcoin für eine Vielzahl von Anwendungsfällen bietet.
Unicht von der Zeitschlösser oder TimeLock genauer gesagt Bitcoin es nSequenz. Dies ist ein Relative Zeitsperre, die auf Transaktionsebene funktioniert und das ermöglicht die Verwendung von Eingabesequenznummern, um eine Zeitsperre zu programmieren Bitcoin-Transaktionen.
Mit nSequence kann ein Eintrag den frühesten Zeitpunkt angeben, zu dem er einem Block hinzugefügt werden kann.. Das heißt, sie verhindern die Bestätigung einer Transaktion, bis ein bestimmtes Alter in den Transaktionsausgaben abgelaufen ist. Dieses Alter kann in bestätigten Blöcken oder in verstrichener Zeit gemessen werden.
Ebenso nSequence ermöglicht die Erstellung und Planung mehrerer Zeitbedingungen für dieselbe Bitcoin-Transaktion Bitcoin-Skript. Obwohl sie unterschiedlich sind, hängen sie miteinander zusammen und müssen daher vollständig erfüllt sein, damit die Transaktion validiert und in einen Block der Transaktion aufgenommen werden kann Blockchain. Wenn nicht alle festgelegten Bedingungen erfüllt sind, kann die Transaktion einfach nicht validiert werden. Daher wird diese Transaktion vom Netzwerk abgelehnt.
Wie funktioniert nSequence?
Die nSequenz Sie nutzen nur 18 Bit der 32 verfügbaren Bits im Sequenzfeld jeder Transaktion. Dadurch bleiben die verbleibenden 14 Bits für zukünftige Implementierungen reserviert. Also die nSequence ist eine der leichtesten Zeitsperren oder TimeLocks, die es im Bitcoin-Netzwerk gibt.
Ebenso werden von den 18 Bit, die sie verwenden, 16 Bit zur Konfiguration der Sperrzeiten verwendet. Dadurch sind diese Zeitschlösser auf insgesamt 65.535 verfügbare Blockeinheiten begrenzt. Oder eine Zeit von 18 Stunden, was 64.800 Sekunden entspricht.
Obwohl nSequence ursprünglich implementiert wurde, um die Änderung von Transaktionen innerhalb der zu ermöglichen Bitcoin-Mempool. Und sie erlaubten den Ersatz einer Transaktion, bevor sie abgeschlossen oder bestätigt wurde. Das heißt, Sie werden derzeit als relative Sperrzeit verwendet. Dadurch wird verhindert, dass eine Transaktion extrahiert wird, bis die festgelegten Bedingungen erfüllt sind. Diese Bedingungen können ein definiertes Zeitintervall oder eine Blockhöhe sein. Dies gilt auch dann, wenn Ihre digitalen Signaturen vollständig gültig sind.
In diesem Fall, wenn der Wert von nSequence ist größer als 0xEFFFFFFFEs besteht kein Konsens über die Sequenznummer, sodass die Transaktion unter allen möglichen Umständen in jeden Block aufgenommen werden kann. Während, wenn der Wert von nSequence ist kleiner oder gleich 0xEFFFFFFF, dann bedeutet das, dass es eine Sperrzeit gibt. Dabei bestimmt Bit Nummer 22 der Sequenz, ob die Blockierung auf einem Zeitintervall oder auf der Blockhöhe basiert.
Hat dieses Bit den Wert „1“, dann basiert die Sperrzeit auf einem Zeitintervall; Wenn sein Wert hingegen nicht festgelegt ist, wird er als „0“ betrachtet und bezieht sich auf eine Zahl oder Blockhöhe.
Inbetriebnahme der nSequence: Aktivierung von BIP 68
El BIP 68 das den Namen trägt „Relative Blockierungszeit unter Verwendung konsenserzwungener Sequenznummern“. Dies führte zu einem neuen Konzept und einer neuen Definition für Sequenznummern für Bitcoin-Transaktionen mit einer Version größer oder gleich „2“. Dadurch können diese Sequenznummern für neue Anwendungsfälle wiederverwendet werden. Sowie für zukünftige Implementierungen, ohne die Funktionalität zu beeinträchtigen.
Ebenso im BIP 68 Es ist definiert, dass das Zeitintervall gemessen wird, beginnend mit dem Median der vergangenen Zeit (MTP) des Blocks vor der Ausgabe und endend mit dem Median der vergangenen Zeit (MTP) des vorherigen Blocks. Die mittlere vergangene Zeit (MTP) ist in der definiert BIP 113, der den MTP als Endpunkt für Blockzeitberechnungen angibt.
Interpretieren einer nSequence
Die Interpretation der Sperrzeit erfolgt durch Zählen der Bits ab dem 16. Bit in der nSequence.
Wenn die Sperrzeit hingegen auf einem Zeitintervall basiert, dann wird die Sperrung als minimale Begrenzung der Sperrzeit auf das Alter des Eintrags entwickelt. Basiert die Blockzeit hingegen auf Blöcken, wird dies als Mindestbeschränkung der Blockhöhe auf das Alter des Eintrags interpretiert.
Im ersten Fall kann eine nSequence basierend auf der Zeit „n“ in jeden der Blöcke eingefügt werden, die 512*n Sekunden nach dem Extraktionsdatum der ausgegebenen Ausgabe oder dem MTP des vorherigen Blocks, der sie extrahiert hat, erzeugt werden. Für zeitbasierte Zeitsperren wurde eine Skala von 512 Sekunden gewählt, da alle 10 Minuten Bitcoin-Blöcke erzeugt werden, was 600 Sekunden entspricht. Dadurch kann in beiden Fällen die gleiche Zeitspanne mit der Anzahl der verfügbaren Bits codiert werden. Entweder bei der Verwendung von blockbasierten Zeitsperren oder bei der Verwendung von zeitintervallbasierten Zeitsperren.
Im zweiten Fall, in dem die Blockierungszeit auf Blöcken basiert, gibt die nSequence einen Eintrag an, der nach „n“ Blöcken nach dem Extraktionsdatum der verbrauchten Ausgabe oder einem beliebigen Block danach eingefügt werden kann.
Wie viel weißt du, Kryptonaut?
Kann nSequence Sicherheitsprobleme verursachen, indem es die Änderung von Transaktionen im Mempool zulässt?FALSCH!
Die nSequence stellt kein Risiko für Bitcoin dar, da sie die Änderung von Transaktionen innerhalb des Mempools ermöglicht. Dies liegt daran, dass diese Transaktionen tatsächlich durch neue ersetzt werden, mit einem neuen Satz von Bedingungen, wenn sie programmiert sind.
nSequence-Implementierungen
CHECKSEQUENCEVERIFY Zeitsperre
Die relative Zeitsperre von nSequence kann im Code implementiert werden OP_CHECKSEQUENCEVERIFY. Mit diesem Code können Sie die Ausgabe für einen bestimmten Ausgang einer Transaktion blockieren. Dies solange, bis bestimmte Bedingungen erfüllt sind. Zum Beispiel das Erreichen bestimmter Blöcke oder eines definierten Zeitintervalls ab der Extraktion der Transaktion, die die besagte Ausgabe enthält.
Wenn ein Benutzer in diesem Fall UTXOs in einem Transaktionseintrag verwendet und ausgibt, muss der Wert von nSequence in diesem Eintrag größer oder gleich dem in CHECKSEQUENCEVERIFY festgelegten Parameter sein. Außerdem muss das Format des nSequence-Werts mit dem CHECKSEQUENCEVERIFY-Wert übereinstimmen. Das heißt, wenn CHECKSEQUENCEVERIFY in Blöcken angegeben wird, muss der Wert von nSequence auch blockbasiert sein.
Farbige Münzen
Die farbige Münzen Dabei handelt es sich um eine Identifikationsmethode, die es ermöglicht, bestimmte reale Vermögenswerte auf der Bitcoin-Blockchain darzustellen und zu erkennen. Um Manipulationen und Verfälschungen dieser Vermögenswerte zu vermeiden, nutzen sie zu ihrem Schutz und ihrer Sicherung die Eigenschaften und Merkmale der Blockchain-Technologie.
Obwohl es mit der Geburt von derzeit stark an Popularität verloren hat Ethereum und ERC-20-TokenDiese Arten von Transaktionen, die in der Bitcoin-Blockchain erstellt werden, sind so gekennzeichnet, dass sie von den übrigen Transaktionen, die innerhalb der Bitcoin-Blockchain stattfinden, unterschieden werden können. Dafür wird im nSequence-Feld des ersten Eintrags der Transaktion ein Tag-Wert verwendet. Und obwohl nSequence in Transaktionen immer vorhanden ist, wird es in diesem Fall nicht als Sperre, sondern als Kennung verwendet, wobei 6 seiner Bits zur Bildung und Codierung des Tag-Werts verwendet werden.
Bezahlsender von Decker-Wattenhofer
Die Zahlungskanäle Duplexe werden erstmals in den Arbeiten von Christian Decker und Roger Wattenhofer beschrieben. Diese Art von Zahlungskanal erfordert die Verwendung von nSequence. Wie der Name schon sagt, besteht ein Duplex-Zahlungskanal aus zwei unidirektionalen Zahlungskanälen, einem in beide Richtungen.
Diese Kanäle verwenden eine Struktur namens „Invalidierungsbaum“ für Off-Chain-Transaktionen. Eine Eigenschaft zwischen der Finanzierungstransaktion und den Abschlusstransaktionen des Zahlungskanals. Invalidierungsbaumtransaktionen verwenden ebenfalls eine relative Sperrzeit; Die erste Version der Transaktion hat eine große relative Blockierungszeit. Und die nächste Version der Transaktion (die die erste ungültig macht) verwendet eine etwas kürzere relative Sperrzeit und so weiter. Es gibt auch eine „Start“-Transaktion, die den Timeout für die relative Sperrzeit startet.
Der Transaktionsablauf ist wie folgt:
Finanzierung -> Startseite -> Invalidierungsbaum -> Zahlungskanal.
Dadurch ist es möglich, sichere Zahlungskanäle mit einer Funktionsweise zu schaffen, die der des Lightning Network ähnelt, allerdings technisch komplexer in der Funktionsweise ist.