--- id: timestamps-addresses title: Timestamps, Addresses --- ## Timestamps Timestamps in LIGO, or in Michelson in general are available in smart contracts, 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's up to the baker to set the current timestamp value. ```pascaligo group=a const today: timestamp = now; ``` ```cameligo group=a let today: timestamp = Current.time ``` ```reasonligo group=a let today: timestamp = Current.time; ``` > When running code with ligo CLI, the option `--predecessor-timestamp` allows you to control what `now` returns. ### Timestamp arithmetic In LIGO, timestamps can be added with `int`(s), this enables you to set e.g. time constraints for your smart contracts like this: #### In 24 hours ```pascaligo group=b 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; ``` ```cameligo group=b 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 ``` ```reasonligo group=b 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 ```pascaligo group=c const today: timestamp = now; const one_day: int = 86400; const in_24_hrs: timestamp = today - one_day; ``` ```cameligo group=c let today: timestamp = Current.time let one_day: int = 86400 let in_24_hrs: timestamp = today - one_day ``` ```reasonligo group=c let today: timestamp = Current.time; let one_day: int = 86400; let in_24_hrs: timestamp = today - one_day; ``` ### Comparing timestamps You can also compare timestamps using the same comparison operators as for numbers: ```pascaligo group=c const not_tommorow: bool = (now = in_24_hrs) ``` ```cameligo group=c let not_tomorrow: bool = (Current.time = in_24_hrs) ``` ```reasonligo group=c let not_tomorrow: bool = (Current.time == in_24_hrs); ``` ## Addresses `address` is a LIGO datatype used for Tezos addresses (tz1, tz2, tz3, KT1, ...). Here's how you can define an address: ```pascaligo group=d const my_account: address = ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address); ``` ```cameligo group=d let my_account: address = ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address) ``` ```reasonligo group=d let my_account: address = ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address); ``` ## Signatures `signature` is a LIGO datatype used for Tezos signature (edsig, spsig). Here's how you can define a signature: ```pascaligo group=e const my_signature: signature = ("edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7": signature); ``` ```cameligo group=e let my_signature: signature = ("edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7": signature) ``` ```reasonligo group=e let my_signature: signature = ("edsigthTzJ8X7MPmNeEwybRAvdxS1pupqcM5Mk4uCuyZAe7uEk68YpuGDeViW8wSXMrCi5CwoNgqs8V2w8ayB5dMJzrYCHhD8C7": signature); ``` ## keys `key` is a LIGO datatype used for Tezos public key. Here's how you can define a key: ```pascaligo group=f const my_key: key = ("edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav": key); ``` ```cameligo group=f let my_key: key = ("edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav": key) ``` ```reasonligo group=f let my_key: key = ("edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav": key); ```