5.0 KiB
id | title |
---|---|
timestamps-addresses | Timestamps, Addresses |
Timestamps
LIGO features timestamps, as Michelson does, while bakers baking the block (including the transaction in a block) are responsible for providing the given current timestamp for the contract.
Current Time
You can obtain the current time using the built-in syntax specific expression, please be aware that it is up to the baker to set the current timestamp value.
const today : timestamp = now
let today : timestamp = Current.time
let today : timestamp = Current.time;
When running code with ligo CLI, the option
--predecessor-timestamp
allows you to control whatnow
returns.
Timestamp Arithmetic
In LIGO, timestamps can be added to integers, allowing you to set time constraints on your smart contracts. Consider the following scenarios.
In 24 hours
const today : timestamp = now
const one_day : int = 86400
const in_24_hrs : timestamp = today + one_day
const some_date : timestamp = ("2000-01-01T10:10:10Z" : timestamp)
const one_day_later : timestamp = some_date + one_day
let today : timestamp = Current.time
let one_day : int = 86400
let in_24_hrs : timestamp = today + one_day
let some_date : timestamp = ("2000-01-01t10:10:10Z" : timestamp)
let one_day_later : timestamp = some_date + one_day
let today : timestamp = Current.time;
let one_day : int = 86400;
let in_24_hrs : timestamp = today + one_day;
let some_date : timestamp = ("2000-01-01t10:10:10Z" : timestamp);
let one_day_later : timestamp = some_date + one_day;
24 hours Ago
const today : timestamp = now
const one_day : int = 86400
const in_24_hrs : timestamp = today - one_day
let today : timestamp = Current.time
let one_day : int = 86400
let in_24_hrs : timestamp = today - one_day
let today : timestamp = Current.time;
let one_day : int = 86400;
let in_24_hrs : timestamp = today - one_day;
Comparing Timestamps
You can compare timestamps using the same comparison operators applying to numbers.
const not_tommorow : bool = (now = in_24_hrs)
let not_tomorrow : bool = (Current.time = in_24_hrs)
let not_tomorrow : bool = (Current.time == in_24_hrs);
Addresses
The type address
in LIGO denotes Tezos addresses (tz1, tz2, tz3,
KT1, ...). Currently, addresses are created by casting a string to the
type address
. Beware of failures if the address is invalid. Consider
the following examples.
const my_account : address =
("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" : address)
let my_account : address =
("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" : address)
let my_account : address =
("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" : address);
Signatures
The signature
type in LIGO datatype is used for Tezos signatures
(edsig, spsig). Signatures are created by casting a string. Beware of
failure if the signature is invalid.
Here is how you can define a signature:
const my_sig : signature =
("edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" :
signature)
let my_sig : signature =
("edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" :
signature)
let my_sig : signature =
("edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7" :
signature);
Keys
The key
type in LIGO is used for Tezos public keys. Do not confuse
them with map keys. Keys are made by casting strings. Beware of
failure if the key is invalid.
Here is how you can define a key.
const my_key : key =
("edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" : key)
let my_key : key =
("edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" : key)
let my_key : key =
("edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav" : key);