I am writing this Michelson engine as I am learning Rust :) As it is a work in process, it is subject to constant breaking changes. Wait until the stable version to use.
Available instructions (implemented and tested):
- ABS
- ADD
- ADDRESS
- AND
- AMOUNT
- BALANCE
- CAR
- CDR
- CHAIN_ID
- COMPARE
- CONCAT
- CONS
- DIG
- DROP
- DUG
- DUP
- EDIV
- EMPTY_BIG_MAP
- EMPTY_MAP
- EMPTY_SET
- EQ
- FAILWITH
- GE
- GET
- GT
- IF
- IF_LEFT
- INT
- ISNAT
- KECCAK
- LE
- LEFT
- LEVEL
- LT
- MAP
- MEM
- MUL
- NEG
- NEQ
- NEVER
- NIL
- NONE
- NOW
- NOT
- OR
- PAIR
- PUSH
- RIGHT
- SELF_ADDRESS
- SENDER
- SIZE
- SLICE
- SOME
- SOURCE
- SUB
- SWAP
- TICKET
- UNIT
- UPDATE
- UNPAIR
- XOR
To be done next:
- DIP
- IF_CONS
- IF_NONE
- IFCMP*
- ITER
- IMPLICIT_ACCOUNT
- SELF
To be done:
- APPLY
- BLAKE2B
- CAST
- CHECK_SIGNATURE
- CONTRACT
- CREATE_CONTRACT
- EXEC
- HASH_KEY
- JOIN_TICKETS
- LAMBDA
- LOOP
- LSL
- LSR
- OPEN_CHEST
- PACK
- PAIRING_CHECK
- READ_TICKET
- RENAME
- SAPLING_EMPTY_STATE
- SAPLING_VERIFY_UPDATE
- SET_DELEGATE
- SHA3
- SHA256
- SHA512
- SPLIT_TICKET
- SUB_MUTEZ
- TOTAL_VOTING_POWER
- TRANSFER_TOKENS
- UNPACK
- VOTING_POWER
(60 instructions / 96)
cargo test utils_test_micheline_to_json -- --nocapture
cargo watch -x 'test utils_test_micheline_to_json -- --nocapture'