x
327
parameter (or
(or
(or (pair %approve (address %spender) (nat %value))
(pair %getAllowance
(pair %request (address %owner) (address %spender))
(contract %callback nat)))
(or (pair %getBalance (address %owner) (contract %callback nat))
(pair %getTotalSupply (unit %request) (contract %callback nat))))
(or (pair %mintOrBurn (int %quantity) (address %target))
(pair %transfer (address %from) (pair (address %to) (nat %value)))));
storage (pair (big_map %tokens address nat)
(pair (big_map %allowances (pair (address %owner) (address %spender)) nat)
(pair (address %admin) (nat %total_supply))));
code { DUP ;
CDR ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
NEQ ;
IF { PUSH string "DontSendTez" ; FAILWITH } {} ;
SWAP ;
CAR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
PAIR ;
PUSH nat 0 ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
COMPARE ;
GT ;
PUSH nat 0 ;
DIG 3 ;
DUP ;
DUG 4 ;
DIG 3 ;
DUP ;
DUG 4 ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
COMPARE ;
GT ;
AND ;
IF { PUSH string "UnsafeAllowanceChange" ; FAILWITH } {} ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
DIG 2 ;
DIG 3 ;
CDR ;
PUSH nat 0 ;
SWAP ;
DUP ;
DUG 2 ;
COMPARE ;
EQ ;
IF { DROP ; NONE nat } { SOME } ;
DIG 3 ;
UPDATE ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
NIL operation ;
PAIR }
{ SWAP ;
DUP ;
DIG 2 ;
NIL operation ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
PUSH mutez 0 ;
DIG 4 ;
CDR ;
CAR ;
DIG 4 ;
CAR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
TRANSFER_TOKENS ;
CONS ;
PAIR } }
{ IF_LEFT
{ SWAP ;
DUP ;
DIG 2 ;
NIL operation ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
PUSH mutez 0 ;
DIG 4 ;
CAR ;
DIG 4 ;
CAR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
TRANSFER_TOKENS ;
CONS ;
PAIR }
{ SWAP ;
DUP ;
DIG 2 ;
NIL operation ;
SWAP ;
CDR ;
PUSH mutez 0 ;
DIG 3 ;
CDR ;
CDR ;
CDR ;
TRANSFER_TOKENS ;
CONS ;
PAIR } } }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH string "OnlyAdmin" ; FAILWITH } {} ;
DUP ;
CAR ;
DIG 2 ;
DUP ;
DUG 3 ;
CAR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
ADD ;
ISNAT ;
IF_NONE
{ PUSH string "Cannot burn more than the target's balance." ; FAILWITH }
{} ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
ADD ;
ABS ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
DIG 4 ;
CAR ;
PUSH nat 0 ;
DIG 4 ;
DUP ;
DUG 5 ;
COMPARE ;
EQ ;
IF { DIG 3 ; DROP ; NONE nat } { DIG 3 ; SOME } ;
DIG 4 ;
CDR ;
UPDATE ;
PAIR ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
NIL operation ;
PAIR }
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
DIG 2 ;
DUP ;
DUG 3 ;
CAR ;
DIG 2 ;
DUP ;
DUG 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ SWAP }
{ SENDER ;
DIG 3 ;
DUP ;
DUG 4 ;
CAR ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
DIG 3 ;
DUP ;
DUG 4 ;
DIG 2 ;
DUP ;
DUG 3 ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
SUB ;
ISNAT ;
IF_NONE { PUSH string "NotEnoughAllowance" ; FAILWITH } {} ;
DIG 3 ;
PUSH nat 0 ;
DIG 2 ;
DUP ;
DUG 3 ;
COMPARE ;
EQ ;
IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ;
DIG 2 ;
UPDATE } ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
DIG 2 ;
DUP ;
DUG 3 ;
DIG 4 ;
DUP ;
DUG 5 ;
CAR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
SUB ;
ISNAT ;
IF_NONE { PUSH string "NotEnoughBalance" ; FAILWITH } {} ;
DIG 2 ;
PUSH nat 0 ;
DIG 2 ;
DUP ;
DUG 3 ;
COMPARE ;
EQ ;
IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ;
DIG 3 ;
DUP ;
DUG 4 ;
CAR ;
UPDATE ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
DIG 4 ;
DUP ;
DUG 5 ;
CDR ;
CAR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
ADD ;
SWAP ;
PUSH nat 0 ;
DIG 2 ;
DUP ;
DUG 3 ;
COMPARE ;
EQ ;
IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ;
DIG 3 ;
CDR ;
CAR ;
UPDATE ;
DIG 2 ;
CDR ;
SWAP ;
PAIR ;
DUP ;
CDR ;
CDR ;
DIG 2 ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
NIL operation ;
PAIR } } }