462 lines
9.6 KiB
Markdown
462 lines
9.6 KiB
Markdown
---
|
|
id: toplevel
|
|
title: Top-Level
|
|
description: Available functions at the top level
|
|
hide_table_of_contents: true
|
|
---
|
|
|
|
import Syntax from '@theme/Syntax';
|
|
import SyntaxTitle from '@theme/SyntaxTitle';
|
|
|
|
These types and functions are available without any needed prefix.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type address
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type address
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type address
|
|
</SyntaxTitle>
|
|
|
|
An untyped address which can refer to a smart contract or account.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type big_map ('key, 'value)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type ('key, 'value) big_map
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type big_map ('key, 'value)
|
|
</SyntaxTitle>
|
|
|
|
<Syntax syntax="pascaligo">
|
|
|
|
The type of a big map from values of type `key` to
|
|
values of type `value` is `big_map (key, value)`.
|
|
|
|
```pascaligo group=big_map
|
|
type move is int * int
|
|
type register is big_map (address, move)
|
|
```
|
|
|
|
</Syntax>
|
|
<Syntax syntax="cameligo">
|
|
|
|
The type of a big map from values of type `key` to values
|
|
of type `value` is `(key, value) big_map`.
|
|
|
|
```cameligo group=big_map
|
|
type move = int * int
|
|
type register = (address, move) big_map
|
|
```
|
|
|
|
</Syntax>
|
|
<Syntax syntax="reasonligo">
|
|
|
|
The type of a big map from values of type `key` to
|
|
values of type `value` is `big_map(key, value)`.
|
|
|
|
```reasonligo group=big_map
|
|
type move = (int, int);
|
|
type register = big_map(address, move);
|
|
```
|
|
|
|
</Syntax>
|
|
|
|
Be aware that a `big_map` cannot appear inside another `big_map`.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type bool
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type bool
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type bool
|
|
</SyntaxTitle>
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type bytes
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type bytes
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type bytes
|
|
</SyntaxTitle>
|
|
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type contract('parameter)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type 'parameter contract
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type contract('parameter)
|
|
</SyntaxTitle>
|
|
|
|
A typed contract.
|
|
|
|
Use `unit` as `parameter` to indicate an implicit account.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type chain_id
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type chain_id
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type chain_id
|
|
</SyntaxTitle>
|
|
|
|
The identifier of a chain, used to indicate test or main chains.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type int
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type int
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type int
|
|
</SyntaxTitle>
|
|
|
|
An integer.
|
|
|
|
The only size limit to integers is gas.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type key
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type key
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type key
|
|
</SyntaxTitle>
|
|
|
|
A public cryptographic key.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type key_hash
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type key_hash
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type key_hash
|
|
</SyntaxTitle>
|
|
|
|
The hash of a public cryptographic key.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type list ('t)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type 't list
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type list('t)
|
|
</SyntaxTitle>
|
|
|
|
A sequence of elements of the same type.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type map ('key, 'value)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type ('key, 'value) map
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type map ('key, 'value)
|
|
</SyntaxTitle>
|
|
|
|
<Syntax syntax="pascaligo">
|
|
|
|
The type of a map from values of type `key` to
|
|
values of type `value` is `map (key, value)`.
|
|
|
|
```pascaligo group=maps
|
|
type move is int * int
|
|
type register is map (address, move)
|
|
```
|
|
|
|
</Syntax>
|
|
<Syntax syntax="cameligo">
|
|
|
|
The type of a map from values of type `key` to values
|
|
of type `value` is `(key, value) map`.
|
|
|
|
```cameligo group=maps
|
|
type move = int * int
|
|
type register = (address, move) map
|
|
```
|
|
|
|
</Syntax>
|
|
<Syntax syntax="reasonligo">
|
|
|
|
The type of a map from values of type `key` to
|
|
values of type `value` is `map (key, value)`.
|
|
|
|
```reasonligo group=maps
|
|
type move = (int, int);
|
|
type register = map (address, move);
|
|
```
|
|
|
|
</Syntax>
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type nat
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type nat
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type nat
|
|
</SyntaxTitle>
|
|
|
|
A natural number.
|
|
|
|
The only size limit to natural numbers is gas.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type operation
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type operation
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type operation
|
|
</SyntaxTitle>
|
|
|
|
An operation emitted by the contract
|
|
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type set ('value)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type 'value set
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type set('value)
|
|
</SyntaxTitle>
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type signature
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type signature
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type signature
|
|
</SyntaxTitle>
|
|
|
|
A cryptographic signature.
|
|
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type string
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type string
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type string
|
|
</SyntaxTitle>
|
|
|
|
A sequence of characters.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type tez
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type tez
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type tez
|
|
</SyntaxTitle>
|
|
|
|
A specific type for tokens.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type timestamp
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type timestamp
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type timestamp
|
|
</SyntaxTitle>
|
|
|
|
A date in the real world.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
type unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
type unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
type unit
|
|
</SyntaxTitle>
|
|
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function is_nat: int -> option(nat)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val is_nat: int -> nat option
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let is_nat: int => option(nat)
|
|
</SyntaxTitle>
|
|
|
|
Convert an `int` to a `nat` if possible.
|
|
|
|
Note that `Michelson.is_nat` is deprecated. Please use `is_nat` instead.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function abs: int -> nat
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val abs: int -> nat
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let abs: int => nat
|
|
</SyntaxTitle>
|
|
|
|
Cast an `int` to `nat`.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function int: nat -> int
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val int: nat -> int
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let int: nat => int
|
|
</SyntaxTitle>
|
|
|
|
Cast an `nat` to `int`.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
const unit: unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val unit: unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let (): unit
|
|
</SyntaxTitle>
|
|
|
|
A helper to create a unit.
|
|
|
|
<a name="failwith"></a>
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function failwith : 'a -> unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val failwith : 'a -> unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let failwith: 'a => unit
|
|
</SyntaxTitle>
|
|
|
|
Cause the contract to fail with an error message or integer. Other types are
|
|
not supported at the moment.
|
|
|
|
Using this currently requires in general a type annotation on the
|
|
`failwith` call.
|
|
|
|
<Syntax syntax="pascaligo">
|
|
|
|
```pascaligo
|
|
function main (const p : int; const s : unit) : list (operation) * unit is
|
|
block {
|
|
if p > 10 then failwith ("Failure.") else skip
|
|
}
|
|
with ((nil : list (operation)), s)
|
|
```
|
|
|
|
</Syntax>
|
|
<Syntax syntax="cameligo">
|
|
|
|
```cameligo
|
|
let main (p,s : int * unit) = if p > 10 then failwith "Failure."
|
|
```
|
|
|
|
</Syntax>
|
|
<Syntax syntax="reasonligo">
|
|
|
|
```reasonligo
|
|
let main = ((p,s) : (int, unit)) =>
|
|
if (p > 10) { failwith ("Failure."); };
|
|
```
|
|
|
|
</Syntax>
|
|
<Syntax syntax="cameligo">
|
|
`Current.failwith` is deprecated. Use `Tezos.failwith` or `failwith` instead.
|
|
</Syntax>
|
|
<Syntax syntax="reasonligo">
|
|
`Current.failwith` is deprecated. Use `Tezos.failwith` or `failwith` instead.
|
|
</Syntax>
|
|
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function assert : bool -> unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val assert : bool -> unit
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let assert: bool => unit
|
|
</SyntaxTitle>
|
|
|
|
Check if a certain condition has been met. If not the contract will fail.
|
|
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function ediv : int -> int -> option (int * nat)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function ediv : mutez -> nat -> option (mutez * mutez)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function ediv : mutez -> mutez -> option (nat * mutez)
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="pascaligo">
|
|
function ediv : nat -> nat -> option (nat * nat)
|
|
</SyntaxTitle>
|
|
|
|
<SyntaxTitle syntax="cameligo">
|
|
val ediv : int -> int -> (int * nat) option
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val ediv : mutez -> nat -> (mutez * mutez) option
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val ediv : mutez -> mutez -> (nat * mutez) option
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="cameligo">
|
|
val ediv : nat -> nat -> (nat * nat) option
|
|
</SyntaxTitle>
|
|
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let ediv: (int, int) => option((int, nat))
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let ediv: (mutez, nat) => option((mutez, mutez))
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let ediv: (mutez, mutez) => option((nat, mutez))
|
|
</SyntaxTitle>
|
|
<SyntaxTitle syntax="reasonligo">
|
|
let ediv: (nat, nat) => option((nat, nat))
|
|
</SyntaxTitle>
|
|
|
|
Compiles to Michelson `EDIV`, one operation to get both the quotient and remainder of a division. `ediv x y` returns None if `y` is zero, otherwise returns `Some (quotient, remainder)` such that `x = (quotient * y) + remainder` and `0 <= remainder < abs(y)`.
|