x
493
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)))))
(list %mint (pair (address %address)
(pair (nat %amount)
(pair (bytes %metadata) (nat %token_id))))))
(or (address %set_administrator)
(pair %set_metadata (string %k) (bytes %v))))
(or
(or (bool %set_pause)
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount)))))))
(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_token_metadata (pair (bytes %metadata) (nat %token_id))))));
storage (pair (address %administrator)
(pair (nat %all_tokens)
(pair (big_map %ledger (pair address nat) nat)
(pair (big_map %metadata string bytes)
(pair
(big_map %operators
(pair (address %owner)
(pair (address %operator) (nat %token_id)))
unit)
(pair (bool %paused)
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info
string
bytes)))))))));
code { CAST (pair
(or
(or
(or
(pair (list (pair address nat))
(contract (list (pair (pair address nat) nat))))
(list (pair address (pair nat (pair bytes nat)))))
(or address (pair string bytes)))
(or (or bool (list (pair address (list (pair address (pair nat nat))))))
(or
(list (or (pair address (pair address nat))
(pair address (pair address nat))))
(list (pair bytes nat)))))
(pair address
(pair nat
(pair (big_map (pair address nat) nat)
(pair (big_map string bytes)
(pair
(big_map (pair address (pair address nat)) unit)
(pair bool
(big_map nat (pair nat (map string bytes)))))))))) ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
GET 11 ;
IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
DUP ;
CAR ;
MAP { DUP 3 ;
GET 12 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
MEM ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP 3 ;
GET 5 ;
SWAP ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
MEM ;
IF
{ DUP 3 ;
GET 5 ;
SWAP ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH int 429 ; FAILWITH } {} ;
SWAP ;
PAIR }
{ PUSH nat 0 ; SWAP ; PAIR } } ;
NIL operation ;
DIG 2 ;
CDR ;
PUSH mutez 0 ;
DIG 3 ;
TRANSFER_TOKENS ;
CONS }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
DUP ;
ITER { DUP 3 ;
GET 5 ;
SWAP ;
DUP ;
GET 6 ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
MEM ;
IF
{ DIG 2 ;
DUP ;
GET 5 ;
DUP ;
DIG 3 ;
DUP ;
GET 6 ;
SWAP ;
DUP ;
DUG 5 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 549 ; FAILWITH } {} ;
DUP 5 ;
GET 3 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 5 ;
DUG 2 }
{ DIG 2 ;
DUP ;
GET 5 ;
DUP 3 ;
GET 3 ;
SOME ;
DIG 3 ;
DUP ;
GET 6 ;
SWAP ;
DUP ;
DUG 5 ;
CAR ;
PAIR ;
UPDATE ;
UPDATE 5 ;
DUG 2 } ;
DUP 3 ;
GET 12 ;
SWAP ;
DUP ;
DUG 2 ;
GET 6 ;
MEM ;
IF { PUSH string "FA2_TOKEN_EXISTS" ; FAILWITH } {} ;
DIG 2 ;
DUP ;
GET 12 ;
EMPTY_MAP string bytes ;
DUP 4 ;
GET 5 ;
SOME ;
PUSH string "" ;
UPDATE ;
DUP 4 ;
GET 6 ;
PAIR ;
SOME ;
DUP 4 ;
GET 6 ;
UPDATE ;
UPDATE 12 ;
DUP ;
GET 3 ;
DIG 2 ;
GET 3 ;
ADD ;
UPDATE 3 ;
SWAP } ;
DROP ;
NIL operation } }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
UPDATE 1 }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
DUP ;
GET 7 ;
DUP 3 ;
CDR ;
SOME ;
DIG 3 ;
CAR ;
UPDATE ;
UPDATE 7 } ;
NIL operation } }
{ IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
UPDATE 11 }
{ SWAP ;
DUP ;
DUG 2 ;
GET 11 ;
IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
DUP ;
ITER { DUP ;
CDR ;
ITER { SENDER ;
DUP 3 ;
CAR ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 4 ;
GET 9 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
SENDER ;
DUP 5 ;
CAR ;
PAIR 3 ;
MEM } ;
IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
DUP 4 ;
GET 12 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
MEM ;
IF
{}
{ PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP ;
GET 4 ;
PUSH nat 0 ;
COMPARE ;
LT ;
IF
{ DUP ;
GET 4 ;
DUP 5 ;
GET 5 ;
DUP 3 ;
GET 3 ;
DUP 5 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH int 408 ; FAILWITH } {} ;
COMPARE ;
GE ;
IF
{}
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH } ;
DUP 4 ;
DUP ;
GET 5 ;
DUP ;
DUP 4 ;
GET 3 ;
DUP 6 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 411 ; FAILWITH } { DROP } ;
DUP 4 ;
GET 4 ;
DIG 7 ;
GET 5 ;
DUP 6 ;
GET 3 ;
DUP 8 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH int 412 ; FAILWITH } {} ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 411 ; FAILWITH } {} ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 5 ;
DUP ;
DUG 4 ;
GET 5 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
MEM ;
IF
{ DIG 3 ;
DUP ;
GET 5 ;
DUP ;
DIG 3 ;
DUP ;
GET 3 ;
SWAP ;
DUP ;
DUG 5 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 414 ; FAILWITH } {} ;
DIG 4 ;
GET 4 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 5 ;
DUG 2 }
{ DIG 3 ;
DUP ;
GET 5 ;
DUP 3 ;
GET 4 ;
SOME ;
DIG 3 ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR ;
UPDATE ;
UPDATE 5 ;
DUG 2 } }
{ DROP } } ;
DROP } ;
DROP } }
{ IF_LEFT
{ DUP ;
ITER { IF_LEFT
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 3 ; CAR ; SENDER ; COMPARE ; EQ } ;
IF
{}
{ PUSH string "FA2_NOT_ADMIN_OR_OPERATOR" ; FAILWITH } ;
DIG 2 ;
DUP ;
GET 9 ;
PUSH (option unit) (Some Unit) ;
DIG 3 ;
DUP ;
GET 4 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR 3 ;
UPDATE ;
UPDATE 9 ;
SWAP }
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 3 ; CAR ; SENDER ; COMPARE ; EQ } ;
IF
{}
{ PUSH string "FA2_NOT_ADMIN_OR_OPERATOR" ; FAILWITH } ;
DIG 2 ;
DUP ;
GET 9 ;
NONE unit ;
DIG 3 ;
DUP ;
GET 4 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR 3 ;
UPDATE ;
UPDATE 9 ;
SWAP } } ;
DROP }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
DUP ;
ITER { DIG 2 ;
DUP ;
GET 12 ;
DUP ;
DUP 4 ;
CDR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 533 ; FAILWITH } {} ;
EMPTY_MAP string bytes ;
DIG 5 ;
CAR ;
SOME ;
PUSH string "" ;
UPDATE ;
UPDATE 2 ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 12 ;
SWAP } ;
DROP } } ;
NIL operation } ;
PAIR }