Types
A B
address
tz1
tz2
tz3
tz4
and KT1
for contracts) followed by a Base58 encoded hash and terminated by a 4-byte checksum.Examples
tz1Lc2qBKEWCBeDU8npG6zCeCqpmaegRi6Jg
tz2BFTyPeYRzxd5aiBchbXN3WCZhx7BqbMBq
tz3hFR7NZtjT2QtzgMQnWb4xMuD6yt2YzXUt
tz4HVR6aty9KwsQFHh81C1G7gBdhxT8kuytm
KT1VMCj69PwwKK7aRLRPnWoYh4X1xQqk2Vm2
Properties
Michelson
Related
aggregate<A>
Type of asset field to reference assets from another collection A
.
For example, field drives
references assets from the car
asset collection:
asset car {
vin : string;
nbdoors : nat = 0
}
asset driver {
id : address;
drives : aggregate<car>
}
Notes:
- two drivers may reference the same car
- adding in
drives
fails if car's vin is not present incar
collection.
Example
[ "1G1AF1F57A7192174" ]
Properties
Michelson
Related
asset_container<A>
Evaluates to the basic container type of collection of asset A
.
The following table presents examples of the correspondance betweed asset collection and container types:
asset whitelist {
user : address;
}
asset_container<whitelist>
is evaluated to:
set<address>
asset data {
owner : address;
amount : nat
}
asset_container<data>
is evaluated to:
map<address, nat>
asset data to big_map {
owner : address;
amount : nat
}
asset_container<data>
is evaluated to:
big_map<address, nat>
asset whitelist to big_map {
user : address;
}
asset_container<whitelist>
is evaluated to:
big_map<address, unit>
Parameter
A
(asset)
Any declared asset.
Example
Properties
Michelson
Related
asset_key<A>
Evaluates to the asset identifer type of collection A
.
The following table presents examples of key type evaluation:
asset whitelist {
user : address;
}
asset_key<whitelist>
is evaluated to:
address
asset data {
owner : address;
amount : nat
}
asset_key<data>
is evaluated to:
address
asset ledger identified by owner tokenid {
owner : address;
tokenid : nat;
amount : nat = 0;
}
asset_key<ledger>
is evaluated to:
record ledger_key {
owner : address;
tokenid : nat;
}
Parameter
A
(asset)
Any declared asset.
Example
Properties
Michelson
Related
asset_value<A>
Type of an asset value generated from asset declaration. An asset value is a record that provides all asset fields but the asset identifier field(s).
Consider for example the following asset declaration:
asset result {
id : string;
score : nat;
time : duration;
}
The asset value for result
is the record with score
and time
fields. Hence asset_value<result>
is equivalent to the following declaration:
record ledger_asset_value {
score : nat;
time : duration;
}
An asset record value is returned by the []
asset method (and get
). As for any record, fields are accessed normally with .
operator:
const v : asset_value<result> = result["#sub001"];
const s = v.score;
const t = v.time;
Parameter
A
(asset)
Any declared asset.
Example
Properties
Michelson
Related
asset_view<A>
Read-only view on asset collection returned by asset methods: sort
select
head
tail
Consider for example the following asset declaration:
asset vehicle {
vin: string;
nbdoors : nat = 0
}
The asset view of vehicles with 5 doors is created with method select
:
const sedan = vehicle.select(the.nbdoors = 5)
It is possible to iterate on an asset_view
with the for
instruction.
For example:
for v in sedan do
/* ... */
done
(See the Related section below for the asset_view
API)
Example
[]
Properties
Michelson
Related
big_map<K, V>
Map from K
-typed key to V
-typed value, that can deal with a high number of keys.
The issue with a standard map is that the cost of deserialisation becomes prohibitive as the number of keys increases. Indeed a map, as well as any storage element, is stored in a serialised format, and gets deserialised each time the contract storage is accessed.
A big map is not stored in the contract storage, but rather has its own dedicated storage; it is referenced from the contract storage by an integer value, hence the deserialisation cost of the contract storage is not impacted by the number of keys in the big map.
The constraint is that a big map is not iterable (because only a hash of the key is stored, not the key itself). It means that the for
instruction and the length
builtin are not available for big maps. See the iterable_big_map
type for an iterable big map.
Examples
[]
[ ("#1G1AF1F57A7192174", 5); ("#2F4AH1J77O7132095", 10) ]
Properties
Michelson
Related
bls12_381_fr
Examples
0x2fr
-42fr
Properties
Michelson
Related
bls12_381_g1
Example
0x063bd6e11e2fcaac1dd8cf68c6b1925a73c3c583e298ed37c41c3715115cf96358a42dbe85a0228cbfd8a6c8a8c54cd015b5ae2860d1cc47f84698d951f14d9448d03f04df2ca0ffe609a2067d6f1a892163a5e05e541279134cae52b1f23c6bg1
Properties
Michelson
Related
bls12_381_g2
Example
0x10c6d5cdca84fc3c7f33061add256f48e0ab03a697832b338901898b650419eb6f334b28153fb73ad2ecd1cd2ac67053161e9f46cfbdaf7b1132a4654a55162850249650f9b873ac3113fa8c02ef1cd1df481480a4457f351d28f4da89d19fa405c3d77f686dc9a24d2681c9184bf2b091f62e6b24df651a3da8bd7067e14e7908fb02f8955b84af5081614cb5bc49b416d9edf914fc608c441b3f2eb8b6043736ddb9d4e4d62334a23b5625c14ef3e1a7e99258386310221b22d83a5eac035cg2
Properties
Michelson
Related
bool
true
or false
for logical tests.Examples
true
false
Properties
Michelson
Related
bytes
Examples
0x00
0x050002
0x
Properties
Michelson
Related
chain_id
C D
Examples
"NetXdQprcVkpaWU"
chain_id
Properties
Michelson
Related
chest
open_chest
builtin.Example
0xc5ecdde89eb8c1e7aaeb85abb8f5e5cef3b4fa80c4aee2fccbf0a78ce0debaa5e9ddede3ddfbd9abdea28cc7dc99e6d3a9baf3cbae9adaaabc89cbc39e97e2c7a6cba99197d19ba09ddfd181afc997ffbcc5acb2d29ecbb698c2cacbdd83d1b4ced0bffe9cd78295b3fba4d9f9d5f4d4ec9ad3c7e1a8eeb9dba5cbd8a2dbf29af8e4a4c1e4b1edacf98fccefaef9fea4f0bacdd38ecbfe81c3f9839b9e9ab8fbf5f1eabac48a9f8ca7c588eefe94d1f18bd9bcee9aecde8dd285cf9098f4e1a7eec787f3a0e0ff9cd0ce8ec5a2a4e5ecb08fce899eb5baa397fabf90de9397cebc81bbdfb386e6b4da9fd8fdd19ed9f8d684c782b0aacfeebae4f6e7d1c5c1e6a093c68081cf83b991b4ecd7b38aee92deddcad79eb9abe0a0a0c6b5909dc58495f69445fff5ae9cefe8b8beb2fb86ccf5c9ad91989bdad8a3cfbedaffa2de8bf19dc6ac8cbc8a9584fa9f85f9ba958fc6bbc09ac8e7d5f0fdb98b86c1c7d59ad7c6dfc2d2cefaf5d9db909bf0e3acd3ccc792bc9bccbab4a4febda9b685dbc39ea2a4a7b69990d3abd8b9b3d7dbc581b984f3e08a98f7f7f0e697cc8dfd88edc8c3ca8dc3b2a9ccf6cdd6d0efcc848bc8ead5858bbabfcfc1c8ecea84fd9b96a5e4eabb8c918dafe6f78d83e8e1c2e5f8ee88a4ee8dcaeeafffebfcbbfda1e9eb86c582f2eedd9299cbc0a7fce083ced8c8ddb0e7eaacb696c1fccdadcdc8e3c6f7b9de84eece9bb7919094fef4fdf6efd8b1ba8bbecb9380add4f59ddbf9a19f95facc84e9d0a99bfa93f1fcc3a0fbde9b9ce0c7e8dec6e8d1dfa7dda6f490bb9580abfdbcc0e202e5ff731c3c17d080ee430edd30979a47aa653656e11e593800000015c2ca2a23b732a72932611618ad9ea324986377591e
Properties
Michelson
Related
chest_key
open_chest
builtin to decrypt a chest
value. It is generated off-chain with the timelock-utils together with the chest value.Example
0xa0aceddfb3c9fbe1b8c382c7d5a7dedbe2e5adf9edcfc3e9d084caa6aeb9818ff1e985cb9efe8fa089ceeaa0f5d0bcb583e2f29196f2d3908fffffdcda868faffcb78fb697e7eaf3e7dca9d4b5dda2c3e4f8adf8abf484ecae85f7d6e0f2d28cb69af1d7b19082e8d8d7ba96e7e1e0bb8ac9b9fcf0a9e5b7c1a499c4faf4c8a3a9c8e4d09aa780eac6cee1b78a97a3e983abf9a5f1e8d2a2a2b5e3bcb8c4effeb7a3a68a85a497cd91c9a2c096c3f596deb8d1aca3a5aff28effb8cfc9c7ced892e3a7c09deeb8c8ec9387a3b384b5c8bccaafc7a9a2c1cfd8c7becfd7d6828a9af8f4988fe4ead3b59ecfb8ff8cabf8be90d4c8bdbddfce9cd7c2bb81edc4b7ad80a59a978f8c9debe7aaf08cf0c588f3eaade6b9f4e4e6edf1ed9c9988e48d9ba0aa8f01d18bac92b886db9dd798b5f6fdc891a28da2c4c48da1918897a2b7c2dfa0b78ab8e291b68fb1a2bfa5e8b88e9cabb0b5b0feabcffc9cfeee888ac4afeed9dc8bf5a4eaa9ae89a3838cf6cfd4f8acff8fa7aef7a9889fbbc7d8f6dde4edf3e58096e580e299e5b082b9cf85f3fe8ac6c0998eb1bcbab9bfb8fba39faea7bce0f6fed9ea86dfdad58cf7cbc7fcc4ecf7e2e898d3b19582e38c8092b7e4a0cddc83eb8bc38d91fefed6be869496b8e4fc99d5fae5c6a2b2dcabe2a4ea85b68b87b182d7e8cac29fe0b9efd6d0eb999ffa98aaaf9bf09fe7c4b39d81db97e4e7bbaef0e3bfedd69d9089bc8d91b292afa6c8b389fc9fb7aaa8decab6d9b493a6eafaa5baffe8fb85f2d483ecd1f2d1e58f938df9d8d5e385fe96c5f58ae1e0b09bf2b3c2931f
Properties
Michelson
Related
contract<T>
It is returned by the
get_entrypoint
builtin, or by the conversion builtins address_to_contract
and key_hash_to_contract
Example
Properties
Michelson
Related
date
Examples
2019-01-01
2019-01-01T01:02:03
2019-01-01T01:02:03Z
2019-01-01T00:00:00+01:00
2019-01-01T00:00:00-05:30
Properties
Michelson
Related
duration
Examples
10s
5m
18h
3d
1w
5m10s
5d12h
3w8d4h34m18s
Properties
Michelson
Related
enum
E F
Union of several types: its value is one of the possible declared values; values can be parameterized.
Examples
enum color = | Red | Green | Blue
Red
Green
Blue
Properties
Michelson
Related
event
I J
int
Examples
0i
2i
123i
-1
100_000i
Properties
Michelson
Related
iterable_big_map<K, V>
An iterable big map has the scalability property of a big_map
and can be iterated.
Consider the following declaration:
variable m : iterable_big_map<nat, string> = []
It is then possible to iterate over m
:
for (k,v) in m do
/* k is the key */
/* v is the value associated to k */
done
An iterable big map is compiled in Michelson as a triplet:
- a big map for the keys
- a big map for the values
- a counter
The detailed mechanism is presented in this blog entry.
The order in which keys are iterated is not the natural order.
Examples
[]
[ ("#1G1AF1F57A7192174", 5); ("#2F4AH1J77O7132095", 10) ]
Properties
Michelson
Related
K L
key
Example
"edpkurLzuFFL1XyP3fed4u7MsgeywQoQmHM45Bz91PBzDvUjQ9bvdn"
Properties
Michelson
Related
key_hash
Example
"tz1Lc2qBKEWCBeDU8npG6zCeCqpmaegRi6Jg"
Properties
Michelson
Related
lambda<T, R>
T
that returns a value of type R
.Example
lambda<nat>((x : nat) -> 2 * x + 1)
Properties
Michelson
Related
list<T>
Chained list of elements.
Parameter
T
(any type)
type of the elements of the list
Examples
[]
[ 1 ]
[ "abc", "def" ]
Properties
Michelson
Related
M N
map<K, V>
K
is comparable).Parameters
K
(any comparable type)
type of the key
V
(any type)
type of the associated value
Example
[ (0, "a string"); (1, "another string") ]
Properties
Michelson
Related
nat
Examples
0
2
123
100_000
Properties
Michelson
Related
never
Empty type.
For example, it is used to prevent from using specific value in or
or option
literals:
variable res : or<never, nat> = right<never>(1)
Example
Properties
Michelson
Related
O P
operation
Example
Property
Michelson
Related
option<T>
some
value of type T
, or none
.Parameter
T
(any type)
type of the value when the option is some value
Examples
none
some("abcd")
Properties
Michelson
Related
or<T1, T2>
Union of two types: its value can either be of the one or the other type (left or right).
Parameters
T1
(any type)
left type
T2
(any type)
right type
Examples
const o : or<nat, string> = left<string>(2)
const o : or<nat, string> = left<nat, string>(2)
const o : or<nat, string> = right<nat>("#a56fG")
const o : or<nat, string> = right<nat, string>("#a56fG")
Properties
Michelson
Related
partition<A>
Type of asset field to reference assets from another collection A
, so that each asset from A
is referenced by exactly one asset from this collection.
For example, field drives
references assets from the car
asset collection:
asset car {
vin : string;
nbdoors : nat = 0
}
asset driver {
id : address;
drives : partition<car>
}
Notes:
- a
car
asset may only be added via thedrives
partition with for example:
driver[a].drives.add({ vin : "1G1AF1F57A7192174" })
- straightforwardly adding in
car
collection fails at compilation - two drivers cannot reference the same car
Example
Properties
Michelson
Related
Q R
rational
Examples
1.1
-1.1
1 / 3
-1 / 3
80%
4.2%
Properties
Michelson
Related
record
Example
{ red = 0xa4; green = 0x6a; blue = 0xc0 }
Property
Michelson
Related
S T
sapling_state(n)
Sapling state.
Parameter
n
(natural number)
Memo size
Example
Properties
Michelson
Related
sapling_transaction(n)
Sapling transaction.
Parameter
n
(natural number)
Memo size
Example
Properties
Michelson
Related
set<T>
Example
[ tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb; tz1aSkwEot3L2kmUvcoxzjMomb9mvBNuzFK6]
Properties
Michelson
Related
signature
Cryptographic signature.
Example
"edsigtvwtJaiM7phNNkZjazqKtthDxc3WswYNL961GKgz7VxvPJmWJ8WEkmEZd9oFM1RvwABYW3uYgwGRP7nuBns5WrqyfYsUaB"
Properties
Michelson
Related
string
Array of non-extended ASCII characters.
Examples
"This is a string"
"12345"
Properties
Michelson
Related
tez
1tz
is 1000000 mutez1mtz
is 1000 mutez1utz
is 1 mutez
tz
and mtz
it is possible to use floating point literals with a maximum of respectively 6 and 3 decimal places; hence 1.5324235tz
and 1.5324mtz
are not valid.Examples
1tz
1mtz
1utz
1.23tz
1.2mtz
Properties
Michelson
Related
ticket<T>
Contract-authenticated data.
Parameter
T
(any type)
type of the value held by the ticket
Example
Properties
Michelson
Related
tuple
Fixed list of anonymous values of different types.
Examples
("a string", 3)
(0x22, none)
Properties
Michelson
Related
U V
unit
Unit
value.Examples
Unit
()
Properties
Michelson
Related