x
751
1357
{ parameter (or
(or
(or
(or
(or
(pair %balance_of
(list %requests (pair (address %owner) (nat %token_id)))
(contract %callback (list (pair
(pair %request (address %owner)
(nat %token_id))
(nat %balance)))))
(address %declare_ownership))
(or (unit %claim_ownership) (unit %pause)))
(or
(or (unit %unpause)
(pair %set_metadata (string %k) (option %d bytes)))
(or (pair %set_token_metadata (nat %tid) (map %tdata string bytes))
(address %set_permits))))
(or
(or
(or
(list %update_operators (or
(pair %add_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))
(pair %remove_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))))
(list %update_operators_for_all (or (address %add_for_all)
(address %remove_for_all))))
(or
(list %do_transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount))))))
(list %transfer_gasless (pair
(list %transfer_params (pair
(address %from_)
(list %txs (pair
(address %to_)
(pair
(nat %token_id)
(nat %amount))))))
(key %user_pk)
(signature %user_sig)))))
(or
(or
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount))))))
(pair %mint (address %tow)
(pair (map %tmd string bytes)
(list %roy (pair (address %part_account)
(nat %part_value))))))
(or
(pair %update_token_royalty (nat %utr_tid)
(list %utr_roy_list (pair
(address %part_account)
(nat %part_value))))
(nat %burn)))))
(pair %permit_transfer
(list %txs (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount))))))
(option %permit (pair key signature)))) ;
storage (pair (address %owner) (address %permits)
(pair %defRoyalty (address %part_account) (nat %part_value))
(option %owner_candidate address)
(bool %paused)
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info string bytes)))
(nat %idCounter)
(nat %totalSupply)
(nat %totalSupplyActive)
(big_map %ledger nat address)
(big_map %royalties nat
(list (pair (address %part_account) (nat %part_value))))
(big_map %operator (pair address nat address) unit)
(big_map %operator_for_all (pair address address) unit)
(big_map %metadata string bytes)) ;
code { LAMBDA
bool
bool
{ PUSH unit Unit ;
DUP 2 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
PUSH bool True ;
SWAP ;
DROP 1 ;
SWAP ;
DROP 1 } ;
LAMBDA
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount))))))
(option address)
{ PUSH unit Unit ;
DUP 2 ;
IF_CONS
{ DUP ;
GET 1 ;
DUP 3 ;
ITER { DUP ;
GET 1 ;
DUP 3 ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } {} ;
DROP 1 } ;
DUP ;
SOME ;
DIP 1 { DIG 3 ; DROP 1 } ;
DUG 3 ;
DROP 3 }
{ NONE address ; SWAP ; DROP 1 } ;
SWAP ;
DROP 1 } ;
LAMBDA
(pair (big_map (pair address address) unit)
(big_map (pair address nat address) unit)
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount)))))))
bool
{ UNPAIR 3 ;
PUSH unit Unit ;
PUSH bool True ;
DUP 5 ;
ITER { DUP ;
GET 1 ;
DUP 2 ;
GET 2 ;
DUP ;
ITER { DUP 5 ;
IF
{ DUP 3 ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DUP 8 ;
DUP 4 ;
DUP 3 ;
GET 2 ;
GET 1 ;
PAIR ;
SENDER ;
PAIR ;
MEM ;
IF
{ PUSH bool True }
{ DUP 7 ;
DUP 4 ;
SENDER ;
PAIR ;
MEM ;
IF { PUSH bool True } { PUSH bool False } } }
{ PUSH bool True } ;
IF { PUSH bool True } { PUSH bool False } }
{ PUSH bool False } ;
DIP 1 { DIG 4 ; DROP 1 } ;
DUG 4 ;
DROP 1 } ;
DROP 3 } ;
DUP ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
DROP 1 ;
DUG 3 ;
DROP 3 } ;
LAMBDA
(pair address
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount)))))))
bool
{ UNPAIR ;
PUSH unit Unit ;
PUSH bool True ;
DUP 4 ;
ITER { DUP 2 ;
IF
{ DUP ;
GET 1 ;
DUP 5 ;
COMPARE ;
EQ ;
IF { PUSH bool True } { PUSH bool False } }
{ PUSH bool False } ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
DROP 1 } ;
DUP ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
DROP 1 ;
DUG 2 ;
DROP 2 } ;
LAMBDA
(pair (big_map nat address) (pair (address %owner) (nat %token_id)))
nat
{ UNPAIR ;
PUSH unit Unit ;
DUP 2 ;
DUP 4 ;
GET 2 ;
GET ;
IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ;
DUP 4 ;
GET 1 ;
DUP 2 ;
COMPARE ;
EQ ;
IF { PUSH nat 1 } { PUSH nat 0 } ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
DROP 1 ;
DUG 2 ;
DROP 2 } ;
NIL operation ;
DIG 6 ;
UNPAIR ;
DIP 1 { UNPAIR 14 } ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ UNPAIR ;
NIL operation ;
NIL operation ;
DUP 19 ;
ITER { CONS } ;
DUP 4 ;
AMOUNT ;
DUP 5 ;
MAP { DUP 23 ; DUP 2 ; DUP 19 ; PAIR ; EXEC ; DUP 2 ; PAIR ; SWAP ; DROP 1 } ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
DROP 2 ;
PAIR 14 ;
SWAP ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP ;
SOME ;
DIP 1 { DIG 4 ; DROP 1 } ;
DUG 4 ;
DROP 1 ;
PAIR 14 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ DROP 1 ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 4 ;
IF_NONE
{ PUSH bool False }
{ SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP 1 } ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
SENDER ;
SWAP ;
DROP 1 ;
NONE address ;
DIP 1 { DIG 3 ; DROP 1 } ;
DUG 3 ;
PAIR 14 ;
SWAP ;
PAIR }
{ DROP 1 ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 20 ;
DUP 6 ;
EXEC ;
NOT ;
IF
{ PUSH string "pausable_r1" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
PUSH bool True ;
DIP 1 { DIG 4 ; DROP 1 } ;
DUG 4 ;
PAIR 14 ;
SWAP ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ DROP 1 ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 5 ;
NOT ;
IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
PUSH bool False ;
DIP 1 { DIG 4 ; DROP 1 } ;
DUG 4 ;
PAIR 14 ;
SWAP ;
PAIR }
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 22 ;
DUP 8 ;
EXEC ;
NOT ;
IF
{ PUSH string "md_r1" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP 16 ;
DUP 2 ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 ;
DROP 2 ;
PAIR 14 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 22 ;
DUP 8 ;
EXEC ;
NOT ;
IF
{ PUSH string "tmd_r1" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP 8 ;
DUP 2 ;
DUP 4 ;
PAIR ;
SOME ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 7 ; DROP 1 } ;
DUG 7 ;
NIL operation ;
NIL operation ;
DUP 19 ;
ITER { CONS } ;
DUP 3 ;
SOME ;
DUP 5 ;
PAIR ;
EMIT %token_metadata_update (pair (nat %tmu_token_id)
(option %tmu_new_metadata (map
string
bytes))) ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
DROP 2 ;
PAIR 14 ;
SWAP ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 21 ;
DUP 7 ;
EXEC ;
NOT ;
IF
{ PUSH string "p_r1" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
DIP 1 { DIG 2 ; DROP 1 } ;
DUG 2 ;
DROP 1 ;
PAIR 14 ;
SWAP ;
PAIR } } } }
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 21 ;
DUP 7 ;
EXEC ;
NOT ;
IF
{ PUSH string "fa2_r1" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
ITER { DUP ;
IF_LEFT
{ SENDER ;
DUP 2 ;
GET 1 ;
GET 0 ;
COMPARE ;
EQ ;
NOT ;
IF
{ PUSH string "FA2_NOT_OWNER" ; FAILWITH }
{} ;
DUP 15 ;
PUSH unit Unit ;
SOME ;
DUP 3 ;
GET 1 ;
GET 0 ;
DUP 4 ;
GET 2 ;
GET 2 ;
PAIR ;
DUP 4 ;
GET 2 ;
GET 1 ;
PAIR ;
UPDATE ;
DIP 1 { DIG 14 ; DROP 1 } ;
DUG 14 ;
NIL operation ;
NIL operation ;
DUP 20 ;
ITER { CONS } ;
PUSH bool True ;
DUP 4 ;
GET 2 ;
GET 2 ;
PAIR ;
DUP 4 ;
GET 2 ;
GET 1 ;
PAIR ;
DUP 4 ;
GET 1 ;
GET 0 ;
PAIR ;
EMIT %operator_update (pair (address %ou_owner)
(address %ou_operator)
(nat %ou_token_id)
(bool %ou_is_operator)) ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 17 ; DROP 1 } ;
DUG 17 ;
DROP 1 }
{ SENDER ;
DUP 2 ;
GET 1 ;
GET 0 ;
COMPARE ;
EQ ;
NOT ;
IF
{ PUSH string "FA2_NOT_OWNER" ; FAILWITH }
{} ;
DUP 15 ;
NONE unit ;
DUP 3 ;
GET 1 ;
GET 0 ;
DUP 4 ;
GET 2 ;
GET 2 ;
PAIR ;
DUP 4 ;
GET 2 ;
GET 1 ;
PAIR ;
UPDATE ;
DIP 1 { DIG 14 ; DROP 1 } ;
DUG 14 ;
NIL operation ;
NIL operation ;
DUP 20 ;
ITER { CONS } ;
PUSH bool False ;
DUP 4 ;
GET 2 ;
GET 2 ;
PAIR ;
DUP 4 ;
GET 2 ;
GET 1 ;
PAIR ;
DUP 4 ;
GET 1 ;
GET 0 ;
PAIR ;
EMIT %operator_update (pair (address %ou_owner)
(address %ou_operator)
(nat %ou_token_id)
(bool %ou_is_operator)) ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 17 ; DROP 1 } ;
DUG 17 ;
DROP 1 } ;
DROP 1 } ;
DROP 1 ;
PAIR 14 ;
SWAP ;
PAIR }
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 21 ;
DUP 7 ;
EXEC ;
NOT ;
IF
{ PUSH string "fa2_r2" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
ITER { DUP ;
IF_LEFT
{ DUP 16 ;
PUSH unit Unit ;
SOME ;
SENDER ;
DUP 4 ;
PAIR ;
UPDATE ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 ;
DROP 1 }
{ DUP 16 ;
NONE unit ;
SENDER ;
DUP 4 ;
PAIR ;
UPDATE ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 ;
DROP 1 } ;
DROP 1 } ;
DROP 1 ;
PAIR 14 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ SELF_ADDRESS ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP ;
ITER { DUP ;
GET 1 ;
DUP 2 ;
GET 2 ;
DUP ;
ITER { DUP ;
GET 2 ;
GET 1 ;
DUP 16 ;
DUP 2 ;
GET ;
IF_NONE
{ NONE address }
{ DUP ; SOME ; SWAP ; DROP 1 } ;
IF_NONE
{ PUSH string "FA2_TOKEN_UNDEFINED" ;
FAILWITH }
{} ;
PUSH nat 0 ;
DUP 4 ;
GET 2 ;
GET 2 ;
COMPARE ;
GT ;
IF
{ DUP 5 ;
DUP 2 ;
COMPARE ;
EQ ;
IF
{ PUSH nat 1 ;
DUP 4 ;
GET 2 ;
GET 2 ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ PUSH bool False } }
{ PUSH bool False } ;
NOT ;
IF
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH }
{} ;
DUP 17 ;
DUP 4 ;
GET 1 ;
GET 0 ;
SOME ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
NIL operation ;
NIL operation ;
DUP 24 ;
ITER { CONS } ;
DUP 5 ;
GET 2 ;
GET 2 ;
DUP 5 ;
PAIR ;
DUP 6 ;
GET 1 ;
GET 0 ;
PAIR ;
DUP 8 ;
PAIR ;
EMIT %transfer_event (pair
(address %te_from)
(address %te_to)
(nat %te_token_id)
(nat %te_amount)) ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 21 ; DROP 1 } ;
DUG 21 }
{} ;
DROP 3 } ;
DROP 3 } ;
DROP 1 ;
PAIR 14 ;
SWAP ;
PAIR }
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 21 ;
DUP 7 ;
EXEC ;
NOT ;
IF
{ PUSH string "fa2_r3" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
ITER { DUP ;
GET 1 ;
DUP 2 ;
GET 3 ;
DUP 3 ;
GET 4 ;
DUP 2 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
DUP 23 ;
DUP 5 ;
DUP 3 ;
PAIR ;
EXEC ;
NOT ;
IF { PUSH string "SIGNER_NOT_FROM" ; FAILWITH } {} ;
NIL operation ;
NIL operation ;
DUP 23 ;
ITER { CONS } ;
DUP 10 ;
CONTRACT %check (pair key signature bytes) ;
IF_NONE
{ PUSH string "check" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 8 ;
PACK ;
BLAKE2B ;
DUP 7 ;
PAIR ;
DUP 8 ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 20 ; DROP 1 } ;
DUG 20 ;
NIL operation ;
NIL operation ;
DUP 23 ;
ITER { CONS } ;
SELF_ADDRESS ;
CONTRACT %do_transfer (list (pair address
(list (pair address
(pair
nat
nat))))) ;
IF_NONE
{ PUSH string "do_transfer" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 8 ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 20 ; DROP 1 } ;
DUG 20 ;
DROP 5 } ;
DROP 1 ;
PAIR 14 ;
SWAP ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 21 ;
DUP 7 ;
EXEC ;
NOT ;
IF
{ PUSH string "fa2_r4" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP 19 ;
DUP 2 ;
DUP 15 ;
PAIR ;
DUP 16 ;
PAIR ;
EXEC ;
NOT ;
IF
{ DUP 20 ;
DUP 2 ;
EXEC ;
IF_NONE
{}
{ NIL operation ;
NIL operation ;
DUP 19 ;
ITER { CONS } ;
DUP 6 ;
CONTRACT %consume (pair address bytes string) ;
IF_NONE
{ PUSH string "consume" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
PUSH string "FA2_NOT_OPERATOR" ;
DUP 7 ;
PACK ;
BLAKE2B ;
PAIR ;
DUP 6 ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
DROP 1 } }
{} ;
NIL operation ;
NIL operation ;
DUP 18 ;
ITER { CONS } ;
SELF_ADDRESS ;
CONTRACT %do_transfer (list (pair address
(list (pair address
(pair nat nat))))) ;
IF_NONE
{ PUSH string "do_transfer" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 5 ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 ;
DROP 1 ;
PAIR 14 ;
SWAP ;
PAIR }
{ UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DUP 4 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 23 ;
DUP 9 ;
EXEC ;
NOT ;
IF
{ PUSH string "fa2_r5" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP 10 ;
DUP 14 ;
DUP 2 ;
MEM ;
IF
{ PUSH string "ledger" ;
PUSH string "KEY_EXISTS" ;
PAIR ;
FAILWITH }
{ DUP 14 ;
DUP 5 ;
SOME ;
DUP 3 ;
UPDATE ;
DIP 1 { DIG 13 ; DROP 1 } ;
DUG 13 } ;
DUP 10 ;
DUP 4 ;
DUP 3 ;
PAIR ;
SOME ;
DUP 3 ;
UPDATE ;
DIP 1 { DIG 9 ; DROP 1 } ;
DUG 9 ;
DUP 2 ;
PUSH nat 0 ;
DUP 4 ;
SIZE ;
COMPARE ;
GT ;
IF
{ DUP 16 ;
DUP 4 ;
SOME ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 }
{ DUP 16 ;
NIL (pair (address %part_account) (nat %part_value)) ;
DUP 10 ;
CONS ;
SOME ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 ;
NIL (pair (address %part_account) (nat %part_value)) ;
DUP 9 ;
CONS ;
SWAP ;
DROP 1 } ;
PUSH nat 1 ;
DUP 13 ;
ADD ;
DIP 1 { DIG 11 ; DROP 1 } ;
DUG 11 ;
PUSH nat 1 ;
DUP 14 ;
ADD ;
DIP 1 { DIG 12 ; DROP 1 } ;
DUG 12 ;
PUSH nat 1 ;
DUP 15 ;
ADD ;
DIP 1 { DIG 13 ; DROP 1 } ;
DUG 13 ;
NIL operation ;
NIL operation ;
DUP 22 ;
ITER { CONS } ;
DUP 3 ;
DUP 7 ;
PAIR ;
DUP 8 ;
PAIR ;
PUSH nat 1 ;
PAIR ;
DUP 5 ;
PAIR ;
EMIT %nftc_mint_event (pair (nat %me_token_id)
(nat %me_amount)
(address %me_owner)
(map %me_tmd string bytes)
(list %me_roy (pair
(address %part_account)
(nat %part_value)))) ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 19 ; DROP 1 } ;
DUG 19 ;
DROP 5 ;
PAIR 14 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 13 ;
DUP 3 ;
MEM ;
NOT ;
IF { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ;
DUP 22 ;
DUP 8 ;
EXEC ;
NOT ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP ;
ITER { DUP ;
GET 2 ;
PUSH nat 10000 ;
COMPARE ;
LT ;
IF
{ PUSH nat 0 ;
DUP 2 ;
GET 2 ;
COMPARE ;
LT ;
IF { PUSH bool True } { PUSH bool False } }
{ PUSH bool False } ;
IF
{ PUSH string "INVALID_ROYALTY_BPS" ; FAILWITH }
{} ;
DROP 1 } ;
DUP 13 ;
DUP 2 ;
SOME ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 12 ; DROP 1 } ;
DUG 12 ;
NIL operation ;
NIL operation ;
DUP 19 ;
ITER { CONS } ;
DUP 3 ;
DUP 5 ;
PAIR ;
EMIT %token_royalty_update (pair (nat %tru_token_id)
(list %tru_value (pair
(address %part_account)
(nat %part_value)))) ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
DROP 2 ;
PAIR 14 ;
SWAP ;
PAIR }
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 11 ;
DUP 2 ;
GET ;
IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP 1 } ;
IF_NONE
{ PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH }
{} ;
DUP 22 ;
DUP 8 ;
EXEC ;
NOT ;
IF
{ PUSH string "fa2_r6" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
SENDER ;
DUP 2 ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "FA2_NOT_OWNER" ; FAILWITH } {} ;
DUP 12 ;
NONE address ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 11 ; DROP 1 } ;
DUG 11 ;
DUP 8 ;
NONE (pair nat (map string bytes)) ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 7 ; DROP 1 } ;
DUG 7 ;
DUP 13 ;
NONE (list (pair address nat)) ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 12 ; DROP 1 } ;
DUG 12 ;
PUSH int 0 ;
PUSH int 1 ;
DUP 13 ;
SUB ;
COMPARE ;
GE ;
IF
{ PUSH int 1 ; DUP 12 ; SUB ; ABS }
{ PUSH string "NAT_NEG_ASSIGN" ; FAILWITH } ;
DIP 1 { DIG 10 ; DROP 1 } ;
DUG 10 ;
NIL operation ;
NIL operation ;
DUP 19 ;
ITER { CONS } ;
DUP 3 ;
PUSH nat 1 ;
PAIR ;
DUP 5 ;
PAIR ;
EMIT %burn_event (pair (nat %b_token_id) (nat %b_quantity)
(address %b_owner)) ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
DROP 2 ;
PAIR 14 ;
SWAP ;
PAIR } } } } }
{ UNPAIR ;
SWAP ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ;
DUP 22 ;
DUP 8 ;
EXEC ;
NOT ;
IF
{ PUSH string "fa2_r9" ; PUSH string "INVALID_CONDITION" ; PAIR ; FAILWITH }
{} ;
DUP ;
IF_NONE
{ DUP 20 ;
DUP 3 ;
DUP 16 ;
PAIR ;
DUP 17 ;
PAIR ;
EXEC ;
NOT ;
IF
{ DUP 21 ;
DUP 3 ;
EXEC ;
IF_NONE
{}
{ NIL operation ;
NIL operation ;
DUP 20 ;
ITER { CONS } ;
DUP 7 ;
CONTRACT %consume (pair address bytes string) ;
IF_NONE
{ PUSH string "consume" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
PUSH string "FA2_NOT_OPERATOR" ;
DUP 8 ;
PACK ;
BLAKE2B ;
PAIR ;
DUP 6 ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 17 ; DROP 1 } ;
DUG 17 ;
DROP 1 } }
{} ;
NIL operation ;
NIL operation ;
DUP 19 ;
ITER { CONS } ;
SELF_ADDRESS ;
CONTRACT %do_transfer (list (pair address
(list (pair address (pair nat nat))))) ;
IF_NONE
{ PUSH string "do_transfer" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 6 ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 }
{ DUP ;
GET 1 ;
DUP 2 ;
GET 2 ;
DUP 2 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
DUP 23 ;
DUP 7 ;
DUP 3 ;
PAIR ;
EXEC ;
NOT ;
IF { PUSH string "SIGNER_NOT_FROM" ; FAILWITH } {} ;
NIL operation ;
NIL operation ;
DUP 23 ;
ITER { CONS } ;
DUP 10 ;
CONTRACT %check (pair key signature bytes) ;
IF_NONE
{ PUSH string "check" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 10 ;
PACK ;
BLAKE2B ;
DUP 7 ;
PAIR ;
DUP 8 ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 20 ; DROP 1 } ;
DUG 20 ;
NIL operation ;
NIL operation ;
DUP 23 ;
ITER { CONS } ;
SELF_ADDRESS ;
CONTRACT %do_transfer (list (pair address
(list (pair address (pair nat nat))))) ;
IF_NONE
{ PUSH string "do_transfer" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 10 ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 20 ; DROP 1 } ;
DUG 20 ;
DROP 4 } ;
DROP 2 ;
PAIR 14 ;
SWAP ;
PAIR } ;
DIP 1 { DROP 5 } } ;
view "get_royalties" nat (list (pair (address %part_account) (nat %part_value)))
{ UNPAIR ;
DIP 1
{ CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP 1 } ;
UNIT ;
DUP 3 ;
DUP 3 ;
GET ;
IF_NONE { NIL (pair (address %part_account) (nat %part_value)) } {} ;
SWAP ;
DROP 1 ;
DIP 1 { DROP 2 } } ;
view "getOwner" nat address
{ UNPAIR ;
DIP 1
{ CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP 1 } ;
UNIT ;
DUP 3 ;
DUP 3 ;
GET ;
IF_NONE
{ PUSH string "ledger" ; PUSH string "ASSET_NOT_FOUND" ; PAIR ; FAILWITH }
{} ;
SWAP ;
DROP 1 ;
DIP 1 { DROP 2 } } ;
view "is_operator" (pair address address nat) bool
{ UNPAIR ;
DIP 1
{ CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DROP 1 } ;
UNPAIR 3 ;
UNIT ;
DUP 6 ;
DUP 3 ;
DUP 6 ;
PAIR ;
DUP 5 ;
PAIR ;
MEM ;
IF
{ PUSH bool True }
{ DUP 5 ; DUP 3 ; DUP 5 ; PAIR ; MEM ; IF { PUSH bool True } { PUSH bool False } } ;
SWAP ;
DROP 1 ;
DIP 1 { DROP 5 } } }