Module Make.Timelock

Contains a value (the decryption of the ciphertext) that can be provably recovered in time sequential operation or with the rsa secret.

val chest_encoding : chest Data_encoding.t

Provably opens a chest in a short time.

val chest_key_encoding : chest_key Data_encoding.t
type opening_result = Mavryk_crypto.Timelock_legacy.opening_result =
  1. | Correct of Bytes.t
  2. | Bogus_cipher
  3. | Bogus_opening

Result of the opening of a chest. The opening can fail in two way which we distinguish to blame the right person. One can provide a false unlocked_value or unlocked_proof, in which case we return Bogus_opening and the provider of the chest key is at fault. Otherwise, one can lock the wrong key or put garbage in the ciphertext in which case we return Bogus_cipher and the provider of the chest is at fault. Otherwise we return Correct payload where payload was what had originally been put in the chest.

val open_chest : chest -> chest_key -> time:int -> opening_result

Takes a chest, chest key and time and tries to recover the underlying plaintext. See the documentation of opening_result.

val get_plaintext_size : chest -> int

Gives the size of the underlying plaintext in a chest in bytes. Used for gas accounting