How to Use Timelocks in Ligo | Video Tutorial
Check out a video explainer to learn how Tezos Timelocks work and how you can implement them using Ligo.
A Timelock is a cryptographic primitive that can be used as part of a ‘commit and reveal’ scheme to provide a guarantee that the information associated with the commit is eventually revealed. Lucky for us, Timelocks have been re-enabled on Tezos following the implementation of the Oxford 2 upgrade.
Watch this video to learn how to implement Timelocks using Ligo:
Slides transcript #
Using Timelock, you can temporarily conceal a smart contract’s payload until it is ready to be included in a block. The payload is then decrypted and the smart contract can operate as before. It’s a replacement of sorts for the commit-and-reveal scheme. The latter requires an interactive engagement of participants and can lead to a blocking state.
The Timelock implementation is interactive, allowing access to anyone with the key - blocking is also prevented here because after a set period, a third party can solve the puzzle.
Use case: The Shifumi (rock-paper-scissors) game #
The current game version employs the commit-and-reveal pattern. Two players make moves without revealing information to each other to prevent cheating.
The Android game is available to try already: Shifumi game
Ligo API #
Types #
//A timelocked chest.
type chest
//A key to open a timelocked chest.
type chest_key
Functions #
//Open a timelocked chest given its key and the time difficulty and return the secret payload
let open_chest: (key: chest_key, chest: chest, time: nat) => option<bytes>;
Ligo Test API #
//Function which given a payload and time difficulty, generates a chest and chest_key.
let create_chest: (payload: bytes, time: nat) => [chest, chest_key];
//Function to search for the key of the given chest and time difficulty.
let create_chest_key: (chest: chest, time: nat) => chest_key;
Coin flip game #
- An administrator initializes a chest containing Head or Tail;
- A player submits a guess. Ex: Head
- They have two choices:
- The administrator sends the key to open the chest;
- Someone tries to find the NAV;
- The game is resolved with the key and the result is updated.