x
837
{ parameter (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)))))
(pair %bulk_mint (nat %token_id) (map %operations address nat)))
(or
(pair %burn (address %owner)
(pair (nat %token_id) (nat %token_amount)))
(or (lambda %execute unit (list operation))
(pair %mint (address %owner)
(pair (nat %token_id) (nat %token_amount))))))
(or
(or
(pair %remove_administrator (address %administrator_to_remove)
(nat %token_id))
(pair %set_administrator (address %administrator_to_set)
(nat %token_id)))
(or
(pair %set_token_metadata (nat %token_id)
(map %token_info string bytes))
(or
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount))))))
(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))))))))) ;
storage (pair (big_map %administrators (pair (address %owner) (nat %token_id)) unit)
(pair (big_map %ledger (pair (address %owner) (nat %token_id)) nat)
(pair
(big_map %operators
(pair (address %owner)
(pair (address %operator) (nat %token_id)))
unit)
(pair
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info string bytes)))
(big_map %total_supply nat nat))))) ;
code { LAMBDA
(pair (pair address (pair nat nat))
(pair (big_map (pair address nat) unit)
(pair (big_map (pair address nat) nat)
(pair (big_map (pair address (pair address nat)) unit)
(pair (big_map nat (pair nat (map string bytes)))
(big_map nat nat))))))
(pair unit
(pair (big_map (pair address nat) unit)
(pair (big_map (pair address nat) nat)
(pair (big_map (pair address (pair address nat)) unit)
(pair (big_map nat (pair nat (map string bytes)))
(big_map nat nat))))))
{ UNPAIR ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "[token.mint]: No tez accepted" ; FAILWITH } ;
DUP ;
GET 3 ;
DUP 2 ;
CAR ;
DIG 2 ;
GET 4 ;
DUP ;
INT ;
GT ;
IF
{}
{ PUSH string "[token.mint]: Invalid amount requested." ; FAILWITH } ;
DUP 4 ;
GET 8 ;
DUP 4 ;
MEM ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP 3 ;
DIG 2 ;
PAIR ;
DUP 4 ;
GET 3 ;
DUP 2 ;
MEM ;
IF
{}
{ DIG 3 ; DUP ; GET 3 ; PUSH (option nat) (Some 0) ; DUP 4 ; UPDATE ; UPDATE 3 ; DUG 3 } ;
DIG 3 ;
DUP ;
GET 3 ;
DUP ;
DIG 3 ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 334 ; FAILWITH } {} ;
DUP 5 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 3 ;
DUP ;
GET 8 ;
DUP ;
DIG 4 ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 335 ; FAILWITH } {} ;
DIG 4 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 8 ;
UNIT ;
PAIR } ;
SWAP ;
LAMBDA
(pair nat
(pair (list operation)
(pair (big_map (pair address nat) unit)
(pair (big_map (pair address nat) nat)
(pair
(big_map (pair address (pair address nat)) unit)
(pair (big_map nat (pair nat (map string bytes)))
(big_map nat nat)))))))
(pair unit
(pair (list operation)
(pair (big_map (pair address nat) unit)
(pair (big_map (pair address nat) nat)
(pair
(big_map (pair address (pair address nat)) unit)
(pair (big_map nat (pair nat (map string bytes)))
(big_map nat nat)))))))
{ UNPAIR 3 ;
SENDER ;
PAIR ;
DUP 3 ;
CAR ;
SWAP ;
MEM ;
IF {} { PUSH string "[token.verify_is_admin]: Unauthorized" ; FAILWITH } ;
UNIT ;
PAIR 3 } ;
SWAP ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "No tez accepted" ; FAILWITH } ;
DUP ;
NIL (pair (pair address nat) nat) ;
DUP 2 ;
CAR ;
ITER { DUP 5 ;
GET 7 ;
DUP 2 ;
CDR ;
MEM ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
PUSH nat 0 ;
DUP 6 ;
GET 3 ;
DUP 3 ;
MEM ;
IF
{ DROP ;
DUP 5 ;
GET 3 ;
DUP 2 ;
GET ;
IF_NONE { PUSH int 251 ; FAILWITH } {} }
{} ;
DIG 2 ;
SWAP ;
DIG 2 ;
PAIR ;
CONS } ;
DIG 2 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
NIL operation ;
DIG 2 ;
CDR ;
PUSH mutez 0 ;
DIG 3 ;
TRANSFER_TOKENS ;
CONS }
{ DUP ;
DUP ;
CAR ;
DUP 2 ;
CDR ;
NIL operation ;
DUP 7 ;
DUP 4 ;
SWAP ;
DIG 7 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
DIG 7 ;
DIG 7 ;
DIG 3 ;
DUG 7 ;
DUG 7 ;
DUG 7 ;
DUP 2 ;
ITER { DUP 9 ;
DUP 2 ;
CDR ;
DUP 6 ;
DIG 3 ;
CAR ;
PAIR 3 ;
SWAP ;
DIG 7 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
DIG 7 ;
DIG 7 ;
DIG 2 ;
DUG 7 ;
DUG 7 ;
DUG 7 } ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP } }
{ IF_LEFT
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "[token.burn]: No tez accepted" ; FAILWITH } ;
DUP ;
DUP ;
GET 3 ;
DUP 2 ;
CAR ;
DUP 3 ;
GET 4 ;
NIL operation ;
DUP 8 ;
DUP 5 ;
SWAP ;
DIG 8 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
DIG 8 ;
DIG 8 ;
DIG 3 ;
DUG 8 ;
DUG 8 ;
DUG 8 ;
DUP 7 ;
GET 8 ;
DUP 5 ;
MEM ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP 4 ;
DUP 4 ;
PAIR ;
DUP 8 ;
GET 3 ;
DUP 2 ;
MEM ;
IF
{}
{ PUSH string "[token.burn]: Sender not found." ; FAILWITH } ;
DUP 8 ;
GET 3 ;
DUP 2 ;
GET ;
IF_NONE { PUSH int 398 ; FAILWITH } {} ;
DUP 4 ;
SWAP ;
COMPARE ;
GE ;
IF
{}
{ PUSH string "[token.burn]: Invalid amount requested." ;
FAILWITH } ;
DUP 8 ;
DUP ;
GET 3 ;
DUP 5 ;
DIG 10 ;
GET 3 ;
DUP 5 ;
GET ;
IF_NONE { PUSH int 403 ; FAILWITH } {} ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 402 ; FAILWITH } {} ;
SOME ;
DUP 4 ;
UPDATE ;
UPDATE 3 ;
DUG 7 ;
DUP 8 ;
DUP ;
GET 8 ;
DUP 5 ;
DIG 10 ;
GET 8 ;
DUP 9 ;
GET ;
IF_NONE { PUSH int 406 ; FAILWITH } {} ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 405 ; FAILWITH } {} ;
SOME ;
DUP 8 ;
UPDATE ;
UPDATE 8 ;
DUG 7 ;
PUSH nat 0 ;
DUP 9 ;
GET 3 ;
DUP 3 ;
GET ;
IF_NONE { PUSH int 409 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 2 ;
DUP ;
GET 3 ;
NONE nat ;
DIG 3 ;
UPDATE ;
UPDATE 3 ;
SWAP }
{ DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP } }
{ IF_LEFT
{ DUP ;
NIL operation ;
DUP 5 ;
PUSH nat 0 ;
SWAP ;
DIG 5 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
DIG 5 ;
DIG 5 ;
DIG 3 ;
DIG 5 ;
DIG 5 ;
DIG 5 ;
DUP 2 ;
UNIT ;
EXEC ;
NIL operation ;
SWAP ;
ITER { CONS } ;
DUP ;
ITER { DIG 2 ; SWAP ; CONS ; SWAP } ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP }
{ DUP ;
GET 3 ;
NIL operation ;
DIG 4 ;
DIG 2 ;
SWAP ;
DIG 4 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
DIG 3 ;
DIG 2 ;
DIG 3 ;
DIG 3 ;
DIG 3 ;
DIG 2 ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
SWAP } } } }
{ IF_LEFT
{ IF_LEFT
{ DIG 3 ;
DROP ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "[token.remove_administrator]: No tez accepted" ;
FAILWITH } ;
NIL operation ;
DIG 3 ;
DUP 3 ;
CDR ;
SWAP ;
DIG 4 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
SWAP ;
DUG 2 ;
SWAP ;
DUP 3 ;
CAR ;
DUP 2 ;
MEM ;
IF
{}
{ PUSH string "[token.remove_administrator]: The administrator does not exists" ;
FAILWITH } ;
DIG 2 ;
DUP ;
CAR ;
NONE unit ;
DIG 3 ;
UPDATE ;
UPDATE 1 ;
SWAP }
{ DIG 3 ;
DROP ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "[token.set_administrator]: No tez accepted" ;
FAILWITH } ;
NIL operation ;
DIG 3 ;
DUP 3 ;
CDR ;
SWAP ;
DIG 4 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
SWAP ;
DUG 2 ;
SWAP ;
DIG 2 ;
DUP ;
CAR ;
PUSH (option unit) (Some Unit) ;
DIG 3 ;
UPDATE ;
UPDATE 1 ;
SWAP } }
{ IF_LEFT
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "No tez accepted" ; FAILWITH } ;
NIL operation ;
DUP 4 ;
PUSH nat 0 ;
SWAP ;
DIG 4 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
DIG 4 ;
DIG 4 ;
DIG 3 ;
DIG 4 ;
DIG 4 ;
DUP 2 ;
DUP ;
CAR ;
DUP ;
SENDER ;
PAIR ;
DUP 6 ;
GET 7 ;
DUP 3 ;
MEM ;
IF
{ DROP 3 ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP }
{ DIG 4 ;
DROP ;
DIG 5 ;
DROP ;
DIG 5 ;
DROP ;
DIG 4 ;
DUP ;
GET 7 ;
DIG 4 ;
SOME ;
DUP 5 ;
UPDATE ;
UPDATE 7 ;
DUP ;
CAR ;
PUSH (option unit) (Some Unit) ;
DIG 3 ;
UPDATE ;
UPDATE 1 ;
DUP ;
GET 8 ;
PUSH (option nat) (Some 0) ;
DIG 3 ;
UPDATE ;
UPDATE 8 ;
SWAP } }
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
IF_LEFT
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "No tez accepted" ; FAILWITH } ;
DUP ;
DUP ;
ITER { DUP ;
CDR ;
ITER { DUP 2 ;
CAR ;
DUP 2 ;
CAR ;
DUP 3 ;
GET 3 ;
DUP ;
DUP 4 ;
PAIR ;
DUP 9 ;
GET 3 ;
DUP 2 ;
MEM ;
IF
{}
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH } ;
DUP 5 ;
GET 4 ;
DUP 10 ;
GET 3 ;
DUP 3 ;
GET ;
IF_NONE { PUSH int 163 ; FAILWITH } {} ;
COMPARE ;
GE ;
IF
{}
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH } ;
DUP 2 ;
SENDER ;
DUP 6 ;
PAIR 3 ;
DUP 7 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ DROP ; PUSH bool True }
{ DUP 10 ; GET 5 ; SWAP ; MEM } ;
IF
{}
{ PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
PUSH nat 0 ;
DUP 6 ;
GET 4 ;
COMPARE ;
GT ;
IF
{ DUP 9 ;
DUP ;
GET 3 ;
LAMBDA
int
nat
{ PUSH int 0 ;
ISNAT ;
IF_NONE { PUSH int 46 ; FAILWITH } {} ;
DUP 2 ;
GT ;
IF
{ DROP ;
ISNAT ;
IF_NONE
{ PUSH int 49 ; FAILWITH }
{} }
{ SWAP ; DROP } } ;
DUP 8 ;
GET 4 ;
DIG 12 ;
GET 3 ;
DUP 6 ;
GET ;
IF_NONE { PUSH int 177 ; FAILWITH } {} ;
SUB ;
EXEC ;
SOME ;
DUP 4 ;
UPDATE ;
UPDATE 3 ;
DUG 8 ;
DUP 2 ;
DUP 4 ;
PAIR ;
DUP 10 ;
GET 3 ;
DUP 2 ;
MEM ;
IF
{}
{ DIG 9 ;
DUP ;
GET 3 ;
PUSH (option nat) (Some 0) ;
DUP 4 ;
UPDATE ;
UPDATE 3 ;
DUG 9 } ;
DIG 9 ;
DUP ;
GET 3 ;
DUP ;
DIG 3 ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 187 ; FAILWITH } {} ;
DUP 9 ;
GET 4 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 3 ;
DUG 8 ;
PUSH nat 0 ;
DUP 10 ;
GET 3 ;
DUP 3 ;
GET ;
IF_NONE { PUSH int 189 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF
{ SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 4 ;
DUP ;
GET 3 ;
NONE nat ;
DIG 3 ;
UPDATE ;
UPDATE 3 ;
DUG 3 }
{ DROP 5 } }
{ DROP 5 } } ;
DROP } ;
DROP 2 }
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "No tez accepted" ; FAILWITH } ;
DUP ;
DUP ;
ITER { IF_LEFT
{ SENDER ;
DUP 2 ;
CAR ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
DUP ;
GET 4 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR 3 ;
DIG 3 ;
DUP ;
GET 5 ;
PUSH (option unit) (Some Unit) ;
DIG 3 ;
UPDATE ;
UPDATE 5 ;
DUG 2 }
{ SENDER ;
DUP 2 ;
CAR ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
DUP ;
GET 4 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR 3 ;
DIG 3 ;
DUP ;
GET 5 ;
NONE unit ;
DIG 3 ;
UPDATE ;
UPDATE 5 ;
DUG 2 } } ;
DROP 2 } ;
NIL operation } } } ;
NIL operation ;
SWAP ;
ITER { CONS } ;
PAIR } ;
view "get_balance" (pair (address %owner) (nat %token_id)) nat
{ UNPAIR ;
DUP ;
PUSH nat 0 ;
DUP 4 ;
GET 3 ;
DUP 3 ;
MEM ;
IF
{ DROP ; SWAP ; DROP ; SWAP ; GET 3 ; SWAP ; GET ; IF_NONE { PUSH int 265 ; FAILWITH } {} }
{ SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } } ;
view "get_total_supply" nat nat
{ UNPAIR ;
PUSH nat 0 ;
DUP 3 ;
GET 8 ;
DUP 3 ;
MEM ;
IF
{ DROP ; SWAP ; GET 8 ; SWAP ; GET ; IF_NONE { PUSH int 274 ; FAILWITH } {} }
{ SWAP ; DROP ; SWAP ; DROP } } }