Skip to main content

Instruction support

Summary#

  • Target protocol is Granada.
  • Bitwise operation is not supported yet.
  • Types and those related instructions of never, ticket, bls12_381_g1, bls12_381_g2, bls12_381_fr, sapling_transaction, and sapling_state are not supported yet.

Detailed status#

o: supported instruction

InstructionTypingNote
oABSint : 'S -> nat : 'S
oADDint : int : 'S -> int : 'S
oint : nat : 'S -> int : 'S
onat : int : 'S -> int : 'S
onat : nat : 'S -> nat : 'S
otimestamp : int : 'S -> timestamp : 'S
oint : timestamp : 'S -> timestamp : 'S
omutez : mutez : 'S -> mutez : 'S
bls12_381_g1 : bls12_381_g1 : 'S -> bls12_381_g1 : 'S
bls12_381_g2 : bls12_381_g2 : 'S -> bls12_381_g2 : 'S
bls12_381_fr : bls12_381_fr : 'S -> bls12_381_fr : 'S
oADDRESScontract _ :: 'S -> address : 'S
oAMOUNT'S -> mutez : 'S
oANDbool : bool : 'S -> bool : 'S
nat : nat : 'S -> nat : 'S
int : nat : 'S -> nat : 'S
oAPPLY'a : lambda (pair 'a 'b) 'c : 'C -> lambda 'b 'c : 'C
oBALANCE'S -> mutez : 'S
oBLAKE2Bbytes : 'S -> bytes : 'S
oCARpair 'a _ : 'S -> 'a : 'S
oCAST 'b'a : 'S -> 'b : 'S
iff 'a = 'b
oCDRpair _ 'b : 'S -> 'b : 'S
oCHAIN_ID'S -> chain_id : 'S
oCHECK_SIGNATUREkey : signature : bytes : 'S -> bool : 'S
oCOMPAREunit : unit : 'S -> int : 'S
never : never : 'S -> int : 'S
obool : bool : 'S -> int : 'S
oint : int : 'S -> int : 'S
onat : nat : 'S -> int : 'S
ostring : string : 'S -> int : 'S
opair 'a 'b : pair 'a 'b : 'S -> int : 'S
ooption 'a : option 'a : 'S -> int : 'S
oor 'a 'b : or 'a 'b : 'S -> int : 'S
otimestamp : timestamp : 'S -> int : 'S
omutez : mutez : 'S -> int : 'S
ochain_id : chain_id : 'S -> int : 'S
obytes : bytes : 'S -> int : 'S
okey_hash : key_hash : 'S -> int : 'S
okey : key : 'S -> int : 'S
osignature : signature : 'S -> int : 'S
oaddress : address : 'S -> int : 'S
oCONCATstring : string : 'S -> string : 'S
ostring list : 'S -> string : 'S
obytes : bytes : 'S -> bytes : 'S
obytes list : 'S -> bytes : 'S
oCONS'a : list 'a : 'S -> list 'a : 'S
oCONTRACT 'paddress : 'S -> option (contract 'p) : 'S
â–³CREATE_CONTRACT
{ storage 'g ; parameter 'p ; code ... }
option key_hash : mutez : 'g : 'S -> operation : address : 'SSupported but not well worked because of tezos-client side's bug.
oDIG n'a{1} : ... : 'a{n} : 'b : 'A -> 'b : 'a{1} : ... : 'a{n} : 'A
oDIP code'b : 'A -> 'b : 'C
iff code :: [ 'A -> 'C ]
oDIP n code'a{1} : ... : 'a{n} : 'A -> 'a{1} : ... : 'a{n} : 'B
iff code :: [ 'A -> 'B ]
oDROP_ : 'A -> 'A
oDROP n'a{1} : ... : 'a{n} : 'A -> 'A
oDUG n'b : 'a{1} : ... : 'a{n} : 'A -> 'a{1} : ... : 'a{n} : 'b : 'A
oDUP'a : 'A -> 'a : 'a : 'A
oDUP n'a{1} : ... : 'a{n} : 'A -> 'a{n} : 'a{1} : ... : 'a{n} : 'A
oEDIVint : int : 'S -> option (pair int nat) : 'S
oint : nat : 'S -> option (pair int nat) : 'S
onat : int : 'S -> option (pair int nat) : 'S
onat : nat : 'S -> option (pair nat nat) : 'S
omutez : nat : 'S -> option (pair mutez mutez) : 'S
omutez : mutez : 'S -> option (pair nat mutez) : 'S
oEMPTY_BIG_MAP 'key 'val'S -> big_map 'key 'val : 'S
oEMPTY_MAP 'key 'val'S -> map 'key 'val : 'S
oEMPTY_SET 'elt'S -> set 'elt : 'S
oEQint : 'S -> bool : 'S
oEXEC'a : lambda 'a 'b : 'C -> 'b : 'C
oFAILWITH'a : _ -> _
oGEint : 'S -> bool : 'S
oGET'key : map 'key 'val : 'S -> option 'val : 'S
o'key : big_map 'key 'val : 'S -> option 'val : 'S
oGET 0'a : 'S -> 'a : 'S
oGET (2k)pair 'a{0} ... 'a{k-1} 'a{k} : 'S -> 'a{k} : 'S
oGET (2k+1)pair 'a{0} ... 'a{k} 'a{k+1} : 'S -> 'a{k} : 'S
oGET_AND_UPDATE'key : option 'val : map 'key 'val : 'S -> option 'val : map 'key 'val : 'S
o'key : option 'val : big_map 'key 'val : 'S -> option 'val : big_map 'key 'val : 'S
oGTint : 'S -> bool : 'S
oHASH_KEYkey : 'S -> key_hash : 'S
oIF bt bfbool : 'A -> 'B
iff bt :: [ 'A -> 'B ]
bf :: [ 'A -> 'B ]
oIF_CONS bt bflist 'a : 'A -> 'B
iff bt :: [ 'a : list 'a : 'A -> 'B]
bf :: [ 'A -> 'B]
oIF_LEFT bt bfor 'a 'b : 'A -> 'B
iff bt :: [ 'a : 'A -> 'B]
bf :: [ 'b : 'A -> 'B]
oIF_NONE bt bfoption 'a : 'A -> 'B
iff bt :: [ 'A -> 'B]
bf :: [ 'a : 'A -> 'B]
oIMPLICIT_ACCOUNTkey_hash : 'S -> contract unit : 'S
oINTnat : 'S -> int : 'S
bls12_381_fr : 'S -> int : 'S
oISNATint : 'S -> option nat : 'S
â–³ITER body(set 'elt) : 'A -> 'A
iff body :: [ 'elt : 'A -> 'A ]
The behavior each element is applied in ascending order is not assumed.
â–³(map 'key 'val) : 'A -> 'A
iff body :: [ (pair 'key 'val : 'A) -> 'A ]
The behavior each element is applied in ascending key order is not assumed.
o(list 'elt) : 'A -> 'A
iff body :: [ 'elt : 'A -> 'A ]
JOIN_TICKETS(pair (ticket 'a) (ticket 'a)) : 'S -> option (ticket 'a) : 'S
oKECCAKbytes : 'S -> bytes : 'S
oLAMBDA 'a 'b code'A -> (lambda 'a 'b) : 'A
iff code :: [ 'a -> 'b ]
oLEint : 'S -> bool : 'S
oLEFT 'b'a : 'S -> or 'a 'b : 'S
oLEVEL'S -> nat : 'S
oLOOP bodybool : 'A -> 'A
iff body :: [ 'A -> bool : 'A ]
oLOOP_LEFT body(or 'a 'b) : 'A -> 'b : 'A
iff body :: [ 'a : 'A -> (or 'a 'b) : 'A ]
LSLnat : nat : 'S -> nat : 'S
LSRnat : nat : 'S -> nat : 'S
oLTint : 'S -> bool : 'S
â–³MAP body(map 'key 'val) : 'A -> (map 'key 'b) : 'A
iff body :: [ (pair 'key 'val) : 'A -> 'b : 'A ]
The behavior each element is applied in ascending key order is not assumed.
o(list 'elt) : 'A -> (list 'b) : 'A
iff body :: [ 'elt : 'A -> 'b : 'A ]
oMEM'elt : set 'elt : 'S -> bool : 'S
o'key : map 'key 'val : 'S -> bool : 'S
o'key : big_map 'key 'val : 'S -> bool : 'S
oMULint : int : 'S -> int : 'S
oint : nat : 'S -> int : 'S
onat : int : 'S -> int : 'S
onat : nat : 'S -> nat : 'S
omutez : nat : 'S -> mutez : 'S
onat : mutez : 'S -> mutez : 'S
bls12_381_g1 : bls12_381_fr : 'S -> bls12_381_g1 : 'S
bls12_381_g2 : bls12_381_fr : 'S -> bls12_381_g2 : 'S
bls12_381_fr : bls12_381_fr : 'S -> bls12_381_fr : 'S
nat : bls12_381_fr : 'S -> bls12_381_fr : 'S
int : bls12_381_fr : 'S -> bls12_381_fr : 'S
bls12_381_fr : nat : 'S -> bls12_381_fr : 'S
bls12_381_fr : int : 'S -> bls12_381_fr : 'S
oNEGint : 'S -> int : 'S
onat : 'S -> int : 'S
bls12_381_g1 : 'S -> bls12_381_g1 : 'S
bls12_381_g2 : 'S -> bls12_381_g2 : 'S
bls12_381_fr : 'S -> bls12_381_fr : 'S
oNEQint : 'S -> bool : 'S
NEVERnever : 'A -> 'B
oNIL 'a'S -> list 'a : 'S
oNONE 'a'S -> option 'a : 'S
oNOTbool : 'S -> bool : 'S
nat : 'S -> int : 'S
int : 'S -> int : 'S
oNOW'S -> timestamp : 'S
oORbool : bool : 'S -> bool : 'S
nat : nat : 'S -> nat : 'S
oPACK'a : 'S -> bytes : 'S
oPAIR'a : 'b : 'S -> pair 'a 'b : 'S
oPAIR n'a{0} : ... : 'a{n-1} : 'A -> pair 'a{0} ... 'a{n-1} : 'A
PAIRING_CHECKlist (pair bls12_381_g1 bls12_381_g2) : 'S -> bool : 'S
â–³PUSH 'a x'A -> 'a : 'A
iff x :: 'a
PUSH for lambda is not supported.
READ_TICKETticket 'a : 'S -> pair address 'a nat : ticket 'a : 'S
oRENAME'S -> 'S
oRIGHT 'a'b : 'S -> or 'a 'b : 'S
SAPLING_EMPTY_STATE ms'S -> sapling_state ms: 'S
SAPLING_VERIFY_UPDATEsapling_transaction ms : sapling_state ms : 'S -> option (pair int (sapling_state ms)): 'S
oSELF'S -> contract 'p : 'S
oSELF_ADDRESS'S -> address : 'S
oSENDER'S -> address : 'S
oSET_DELEGATEoption key_hash : 'S -> operation : 'S
oSHA256bytes : 'S -> bytes : 'S
oSHA3bytes : 'S -> bytes : 'S
oSHA512bytes : 'S -> bytes : 'S
oSIZEstring : 'S -> nat : 'S
oset 'elt : 'S -> nat : 'S
omap 'key 'val : 'S -> nat : 'S
olist 'elt : 'S -> nat : 'S
obytes : 'S -> nat : 'S
oSLICEnat : nat : string : 'S -> option string : 'S
onat : nat : bytes : 'S -> option bytes : 'S
oSOME'a : 'S -> option 'a : 'S
oSOURCE'S -> address : 'S
SPLIT_TICKETticket 'a : (pair nat nat) : 'S -> option (pair (ticket 'a) (ticket 'a)) : 'S
oSUBint : int : 'S -> int : 'S
oint : nat : 'S -> int : 'S
onat : int : 'S -> int : 'S
onat : nat : 'S -> int : 'S
otimestamp : int : 'S -> timestamp : 'S
otimestamp : timestamp : 'S -> int : 'S
omutez : mutez : 'S -> mutez : 'S
oSWAP'a : 'b : 'A -> 'b : 'a : 'A
TICKET'a : nat : 'S -> ticket 'a : 'S
oTOTAL_VOTING_POWER'S -> nat : 'S
oTRANSFER_TOKENS'p : mutez : contract 'p : 'S -> operation : 'S
oUNIT'A -> unit : 'A
oUNPACK 'abytes : 'S -> option 'a : 'S
oUNPAIRpair 'a 'b : 'S -> 'a : 'b : 'S
oUNPAIR npair 'a{0} ... 'a{n-1} : S -> 'a{0} : ... : 'a{n-1} : S
oUPDATE'elt : bool : set 'elt : 'S -> set 'elt : 'S
o'key : option 'val : map 'key 'val : 'S -> map 'key 'val : 'S
o'key : option 'val : big_map 'key 'val : 'S -> big_map 'key 'val : 'S
oUPDATE 0'a : 'b : 'S -> 'a : 'S
oUPDATE (2k)'c : pair 'a{0} ... 'a{k-1} 'a{k} : 'S -> pair 'a{0} ... 'a{k-1} 'c : 'S
oUPDATE (2k+1)'c : pair 'a{0} ... 'a{k} 'a{k+1} : 'S -> pair 'a{0} ... 'a{k-1} 'c 'a{k+1} : 'S
oVOTING_POWERkey_hash : 'S -> nat : 'S
oXORbool : bool : 'S -> bool : 'S
nat : nat : 'S -> nat : 'S