Safe Haskell | None |
---|---|
Language | Haskell2010 |
Michelson instructions in untyped model.
Synopsis
- data InstrAbstract op
- = EXT (ExtInstrAbstract op)
- | DROPN Word
- | DROP
- | DUP VarAnn
- | SWAP
- | DIG Word
- | DUG Word
- | PUSH VarAnn Type (Value' op)
- | SOME TypeAnn VarAnn
- | NONE TypeAnn VarAnn Type
- | UNIT TypeAnn VarAnn
- | IF_NONE [op] [op]
- | PAIR TypeAnn VarAnn FieldAnn FieldAnn
- | CAR VarAnn FieldAnn
- | CDR VarAnn FieldAnn
- | LEFT TypeAnn VarAnn FieldAnn FieldAnn Type
- | RIGHT TypeAnn VarAnn FieldAnn FieldAnn Type
- | IF_LEFT [op] [op]
- | NIL TypeAnn VarAnn Type
- | CONS VarAnn
- | IF_CONS [op] [op]
- | SIZE VarAnn
- | EMPTY_SET TypeAnn VarAnn Comparable
- | EMPTY_MAP TypeAnn VarAnn Comparable Type
- | EMPTY_BIG_MAP TypeAnn VarAnn Comparable Type
- | MAP VarAnn [op]
- | ITER [op]
- | MEM VarAnn
- | GET VarAnn
- | UPDATE VarAnn
- | IF [op] [op]
- | LOOP [op]
- | LOOP_LEFT [op]
- | LAMBDA VarAnn Type Type [op]
- | EXEC VarAnn
- | APPLY VarAnn
- | DIP [op]
- | DIPN Word [op]
- | FAILWITH
- | CAST VarAnn Type
- | RENAME VarAnn
- | PACK VarAnn
- | UNPACK TypeAnn VarAnn Type
- | CONCAT VarAnn
- | SLICE VarAnn
- | ISNAT VarAnn
- | ADD VarAnn
- | SUB VarAnn
- | MUL VarAnn
- | EDIV VarAnn
- | ABS VarAnn
- | NEG VarAnn
- | LSL VarAnn
- | LSR VarAnn
- | OR VarAnn
- | AND VarAnn
- | XOR VarAnn
- | NOT VarAnn
- | COMPARE VarAnn
- | EQ VarAnn
- | NEQ VarAnn
- | LT VarAnn
- | GT VarAnn
- | LE VarAnn
- | GE VarAnn
- | INT VarAnn
- | SELF VarAnn FieldAnn
- | CONTRACT VarAnn FieldAnn Type
- | TRANSFER_TOKENS VarAnn
- | SET_DELEGATE VarAnn
- | CREATE_CONTRACT VarAnn VarAnn (Contract' op)
- | IMPLICIT_ACCOUNT VarAnn
- | NOW VarAnn
- | AMOUNT VarAnn
- | BALANCE VarAnn
- | CHECK_SIGNATURE VarAnn
- | SHA256 VarAnn
- | SHA512 VarAnn
- | BLAKE2B VarAnn
- | HASH_KEY VarAnn
- | STEPS_TO_QUOTA VarAnn
- | SOURCE VarAnn
- | SENDER VarAnn
- | ADDRESS VarAnn
- | CHAIN_ID VarAnn
- data ExpandedOp
- type ExpandedInstr = InstrAbstract ExpandedOp
- flattenExpandedOp :: ExpandedOp -> [ExpandedInstr]
- data OriginationOperation = OriginationOperation {}
- mkContractAddress :: OriginationOperation -> Address
Documentation
data InstrAbstract op Source #
Michelson instruction with abstract parameter op
. This
parameter is necessary, because at different stages of our pipeline
it will be different. Initially it can contain macros and
non-flattened instructions, but then it contains only vanilla
Michelson instructions.
Instances
data ExpandedOp Source #
Instances
type ExpandedInstr = InstrAbstract ExpandedOp Source #
flattenExpandedOp :: ExpandedOp -> [ExpandedInstr] Source #
Flatten all SeqEx
in ExpandedOp
. This function is mostly for
testing. It returns instructions with the same logic, but they are
not strictly equivalent, because they are serialized differently
(grouping instructions into sequences affects the way they are
PACK'ed).
Contract's address
data OriginationOperation Source #
Data necessary to originate a contract.
OriginationOperation | |
|
Instances
mkContractAddress :: OriginationOperation -> Address Source #
Compute address of a contract from its origination operation.
TODO [TM-62] It's certainly imprecise, real Tezos implementation doesn't use JSON, but we don't need precise format yet, so we just use some serialization format (JSON because we have necessary instances already).