Zum Inhalt springen
buybitcoinsmart

Glossar / Transaktionen und Gebühren

Locktime

Auch bekannt als nLockTime.

Was ist Locktime?
Locktime besteht aus den letzten vier Bytes einer Transaktion und legt die früheste Blockhöhe oder Uhrzeit fest, zu der das Netzwerk sie in einen Block aufnimmt.

Betrachten Sie Locktime wie einen im Protokoll ausgestellten vordatierten Scheck. Ein Feld, zwei Bedeutungen, entschieden durch einen Schwellenwert: jeder Wert unter 500.000.000 zählt Blöcke, und alles ab diesem Wert zählt Sekunden seit 1970. Die meisten Transaktionen, die Sie je senden, tragen ein Locktime, und es bewirkt nichts, außer Sie vor einem subtilen Miner-Trick zu schützen.

So funktioniert es

Locktime steht ganz am Ende der serialisierten Transaktion und wird geprüft, bevor irgendetwas anderes an der Ausgabe betrachtet wird.

Die Schwellenwertregel ist es, die ein Feld zwei Aufgaben erfüllen lässt. Ein Locktime von 900.000 bedeutet, dass die Transaktion nicht in einem Block unterhalb der Höhe 900.000 erscheinen kann. Ein Locktime von 1.800.000.000 ist ein Unix-Zeitstempel und bedeutet, dass die Transaktion erst erscheinen kann, wenn die mittlere Zeit der vorherigen elf Blöcke diesen Zeitpunkt überschreitet. Die Trennlinie, 500.000.000, entspricht dem 5. November 1985, was sicher vor der Existenz von Bitcoin liegt und sicher über jeder plausiblen Blockhöhe. Das Feld ist vier Bytes groß, der maximal darstellbare Zeitpunkt ist also der 7. Februar 2106.

Es gibt einen Schalter. Locktime wird nur durchgesetzt, wenn mindestens eine Eingabe eine Sequenznummer unter 0xffffffff hat. Setzen Sie jede Eingabe auf 0xffffffff, wird das Feld vollständig ignoriert, und so funktionierten Transaktionen jahrelang, bevor die Wallets einen Nutzen dafür fanden.

Dieser Nutzen ist der Schutz gegen Fee-Sniping. Wenn die Gebühren hoch sind, hat ein Miner, der ein Blockrennen verliert, einen Anreiz, den vorherigen Block erneut zu minen und seine Gebühren zu stehlen, statt vorwärts zu bauen. Wenn Wallets das Locktime jeder Transaktion auf die aktuelle Chain-Spitze setzen, werden diese Transaktionen in jedem früheren Block ungültig, was den Großteil der Beute und den Anreiz beseitigt. Bitcoin Core tut dies bei gewöhnlichen Ausgaben, und etwa in einem von zehn Fällen wählt es eine Höhe gleichmäßig aus den vorherigen 100 Blöcken, damit sich Transaktionen verschiedener Wallet-Software nicht voneinander abheben.

Wo Sie es sehen

Öffnen Sie eine beliebige aktuelle Transaktion in einem Block-Explorer, und das Locktime-Feld enthält meist eine Zahl nahe der Höhe, in der sie gemint wurde.

Das ist das Verhalten gegen Fee-Sniping, und es zu sehen ist ein schwacher Fingerabdruck der Software, die die Zahlung erstellt hat. Wallets, die das Feld auf null lassen, verraten ebenfalls etwas. Firmen für Chain-Analyse lesen dieses Feld gerade deshalb, weil so wenige Nutzer darüber nachdenken.

Die bewussten Verwendungen sind enger. Ein Locktime in der Zukunft erzeugt eine Transaktion, die jetzt signiert und übergeben, aber erst später verbreitet werden kann, was die Grundlage einfacher Erbschaftsmodelle und Rückerstattungswege ist. Force-Close-Transaktionen im Lightning-Netzwerk und Submarine Swaps verwenden Timelocks, damit eine verschwundene Gegenpartei Ihr Geld nicht für immer blockieren kann. Wer diese konstruiert, sollte die offensichtliche Schwäche beachten: eine gesperrte Transaktion ist nur so gut wie die Bitcoin dahinter, und wenn der Absender diese Eingaben zuerst anderweitig ausgibt, wird die vordatierte Transaktion wertlos.

Locktime vs. OP_CHECKLOCKTIMEVERIFY

Locktime beschränkt eine Transaktion; OP_CHECKLOCKTIMEVERIFY beschränkt einen Coin. Der Unterschied ist wichtig, weil nur eines von beiden jemanden außer der signierenden Person bindet.

Ein Locktime wird von dem gewählt, der die Transaktion erstellt, es schützt also niemanden: ein Absender kann einfach eine andere Transaktion ohne Locktime erstellen. OP_CHECKLOCKTIMEVERIFY, definiert in BIP65 und im Netzwerk aktiv seit Block 388.381 am 14. Dezember 2015, legt die Bedingung in das Skript der Ausgabe selbst. Jede künftige Transaktion, die diesen Coin ausgibt, muss selbst ein Locktime ab dem angegebenen Zeitpunkt tragen, und keine Signatur kann das umgehen. Das verwandelt einen Timelock von einer Absicht in eine Regel, und deshalb werden Vault-, Treuhand- und Erbschaftsmodelle mit dem Opcode statt mit dem Feld geschrieben.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum zeigt meine Transaktion ein Locktime nahe der aktuellen Blockhöhe?

Das ist der Schutz gegen Fee-Sniping, und er ist beabsichtigt. Das Locktime auf die Chain-Spitze zu setzen macht die Transaktion in jedem früheren Block ungültig, was den Anreiz eines Miners beseitigt, den vorherigen Block wegen seiner Gebühren erneut zu minen. Auf die Geschwindigkeit Ihrer Bestätigung hat es keine Auswirkung.

Kann ich mit Locktime eine Zahlung für ein künftiges Datum planen?

Sie können eine solche Transaktion erstellen, aber es ist kein verlässlicher Zeitplan. Nichts hindert Sie oder den Absender daran, dieselben Eingaben vorher in einer anderen Transaktion auszugeben, was die vordatierte ungültig macht. Vertragsmodelle verwenden stattdessen OP_CHECKLOCKTIMEVERIFY im Ausgabeskript.

Verwandte Begriffe

Mehr zum Thema Transaktionen und Gebühren

Diese Seite auf Englisch lesen