Ein Timelock, auch Locktime genannt, ist eine Funktion der Blockchain-Technologie, die die Verarbeitung von Kryptowährungstransaktionen steuert. Es gibt einen vorgegebenen Zeitplan an, der bestimmt, wann Transaktionen von Minern in die Blockchain aufgenommen werden können.
Miner spielen eine entscheidende Rolle im Blockchain-Ökosystem. Sie validieren und fügen Transaktionen zur Blockchain hinzu, indem sie sie in Blöcke gruppieren. Jeder Block enthält einen Verweis auf den vorherigen Block, wodurch eine Kette von Blöcken entsteht, daher der Begriff „Blockchain“. Bevor Miner jedoch Transaktionen in einen Block aufnehmen, müssen sie eine bestimmte Blockhöhe genehmigen.
Die Blockhöhe bezeichnet die Anzahl der Blöcke, die der Blockchain hinzugefügt wurden. Sie dient als Maß für den Fortschritt der Blockchain. Transaktionen gelten nur dann als genehmigt, wenn sie in den Merkle Tree aufgenommen werden, eine Datenstruktur, die zur effizienten Überprüfung von Transaktionsdaten innerhalb eines Blocks verwendet wird.
Satoshi Nakamoto, der mysteriöse Erfinder von Bitcoin, machte Timelocks zu einem obligatorischen Feature für alle Bitcoin-Transaktionen. Das bedeutet, dass jede Transaktion im Bitcoin-Netzwerk eine Timelock-Komponente enthält.
Der Standardwert von Timelock ist auf 0x00000000 (0) eingestellt. Dies bedeutet, dass Transaktionen standardmäßig keinen zeitlichen Beschränkungen unterliegen und sofort in die Blockchain aufgenommen werden können.
Der Hauptzweck von Timelocks besteht darin, eine Verzögerung bei der Überprüfung von Transaktionen einzuführen. Benutzer können damit eine bestimmte Zeit oder Blockhöhe angeben, die erreicht werden muss, bevor ihre Transaktion als gültig angesehen werden kann. Diese Verzögerung kann verschiedenen Zwecken dienen, z. B. um sicherzustellen, dass Gelder für einen bestimmten Zeitraum gesperrt sind, oder um komplexere Transaktionsabhängigkeiten zu ermöglichen.
Es gibt zwei Arten von Zeitsperren: absolute und zeitrelative.
Absolute Timelocks werden in Bezug auf eine bestimmte Zeit definiert. Bei Verwendung eines absoluten Timelocks gilt die Transaktion erst dann als gültig, wenn eine bestimmte Blockhöhe oder ein bestimmter Zeitstempel erreicht wurde. Dies bedeutet, dass Miner warten müssen, bis die angegebene Bedingung erfüllt ist, bevor sie die Transaktion in einen Block aufnehmen.
Zeitrelative Timelocks hingegen bestimmen die Zeitspanne, die vergehen muss, bevor eine Transaktion verifiziert werden kann. Anstatt sich auf Blockhöhe oder Zeitstempel zu verlassen, messen zeitrelative Timelocks die verstrichene Zeit seit der Erstellung der Transaktion. Beispielsweise kann eine Transaktion mit einem zeitrelativen Timelock von 24 Stunden von Minern erst bestätigt werden, wenn seit der Einleitung der Transaktion 24 Stunden vergangen sind.
Bei Bitcoin kann die Zeit auf zwei Arten gemessen werden: Blocknummer und Zeitstempel.
Wenn ein Timelock auf einer Blocknummer basiert, erhalten die Miner eine bestimmte Blocknummer, die als Bedingung für das Timelock dient. Dies bedeutet, dass die Transaktion erst dann in einen Block aufgenommen werden kann, wenn die Blockchain die angegebene Blockhöhe erreicht hat.
Alternativ können Timelocks auch auf Zeitstempeln basieren. In diesem Fall müssen die Miner warten, bis eine bestimmte Zeitspanne verstrichen ist, bevor sie die Transaktion bestätigen können. Zur Messung dieser Zeitspanne wird üblicherweise das Unix-Zeitformat verwendet, das die Zeit als Anzahl der Sekunden darstellt, die seit dem 1. Januar 1970 vergangen sind.
In Bitcoin stehen mehrere Methoden zur Implementierung von Timelocks zur Verfügung:
1. nLockTime: Dabei wird ein absolutes Timelock auf Transaktionsebene gesetzt. Damit kann der Absender eine Blockhöhe oder einen Zeitstempel angeben, ab dem die Transaktion als gültig angesehen werden kann.
2. nSequence: Dies ist ein relatives Zeitschloss, das auf Transaktionsebene funktioniert. Es ermöglicht dem Absender, die Anzahl der Blöcke anzugeben, die vergehen müssen, bevor die Transaktion bestätigt werden kann.
3. CheckLockTimeVerify (CLTV): Dabei wird auf Skriptebene ein absolutes Timelock gesetzt. Der Absender kann eine Blockhöhe oder einen Zeitstempel angeben, der erreicht werden muss, bevor der Transaktionsoutput ausgegeben werden kann.
4. CheckSequenceVerify (CSV): Dies ist ein relativer Timelock, der auf Skriptebene ausgeführt wird. Er ermöglicht dem Absender, die Anzahl der Blöcke anzugeben, die durchlaufen werden müssen, bevor die Transaktionsausgabe ausgegeben werden kann.
Diese Timelock-Mechanismen bieten Flexibilität und ermöglichen verschiedene Anwendungsfälle innerhalb des Blockchain-Ökosystems. Sie können verwendet werden, um zeitbasierte Smart Contracts zu erstellen, Multi-Signatur-Wallets mit Zeitbeschränkungen zu implementieren oder sogar vertrauenslose Treuhanddienste mit vorgegebenen Veröffentlichungsdaten einzurichten.
Insgesamt spielen Timelocks eine entscheidende Rolle in der Blockchain-Technologie, indem sie zeitbasierte Bedingungen für die Transaktionsüberprüfung einführen. Sie ermöglichen es Benutzern, anzugeben, wann ihre Transaktionen in die Blockchain aufgenommen werden können, und fügen dem Ökosystem so eine zusätzliche Sicherheitsebene und Flexibilität hinzu.