x
114
parameter (or
(pair %set_data (key_hash %delegate)
(pair
(option %data (pair
(pair
(pair (bytes %bakerName)
(bool %openForDelegation))
(bytes %bakerOffchainRegistryUrl))
(pair
(pair (nat %split)
(list %bakerPaysFromAccounts address))
(pair
(pair
(pair (nat %minDelegation)
(bool %subtractPayoutsLessThanMin))
(pair (int %payoutDelay)
(pair (nat %payoutFrequency)
(int %minPayout))))
(pair
(pair
(bool %bakerChargesTransactionFee)
(nat %paymentConfigMask))
(pair (nat %overDelegationThreshold)
(bool %subtractRewardsFromUninvitedDelegation)))))))
(option %reporterAccount address)))
(or (pair %set_fees (mutez %signup_fee) (mutez %update_fee))
(contract %withdraw unit)));
storage (pair
(big_map key_hash
(pair
(pair
(option %data (pair
(pair
(pair (bytes %bakerName)
(bool %openForDelegation))
(bytes %bakerOffchainRegistryUrl))
(pair
(pair (nat %split)
(list %bakerPaysFromAccounts address))
(pair
(pair
(pair (nat %minDelegation)
(bool %subtractPayoutsLessThanMin))
(pair (int %payoutDelay)
(pair (nat %payoutFrequency)
(int %minPayout))))
(pair
(pair (bool %bakerChargesTransactionFee)
(nat %paymentConfigMask))
(pair (nat %overDelegationThreshold)
(bool %subtractRewardsFromUninvitedDelegation)))))))
(option %reporterAccount address))
(timestamp %last_update)))
(pair (address %owner) (pair (mutez %signup_fee) (mutez %update_fee))));
code { { { DUP ; CAR ; DIP { CDR } } } ;
IF_LEFT
{ DUP ;
CDR ;
CAR ;
{ IF_NONE
{}
{ CAR ;
DUP ;
CAR ;
CAR ;
SIZE ;
PUSH nat 61 ;
{ { COMPARE ; GT } ; IF {} { { UNIT ; FAILWITH } } } ;
CDR ;
SIZE ;
PUSH nat 81 ;
{ { COMPARE ; GT } ; IF {} { { UNIT ; FAILWITH } } } } } ;
{ { DUP ; CAR ; DIP { CDR } } } ;
{ DIP 2 { DUP } ; DIG 3 } ;
CAR ;
{ DIP { DUP } ; SWAP } ;
GET @from_storage ;
IF_NONE
{ DUP ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
SENDER ;
{ { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } ;
{ DIP 2 { DUP } ; DIG 3 } ;
{ CDR ; CDR ; CAR %signup_fee } ;
AMOUNT ;
{ { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } }
{ { CAR ; CDR %reporterAccount } ;
IF_NONE { PUSH bool False } { SENDER ; COMPARE ; EQ } ;
DIP { DUP ; IMPLICIT_ACCOUNT ; ADDRESS ; SENDER ; COMPARE ; EQ } ;
OR ;
{ IF {} { { UNIT ; FAILWITH } } } ;
{ DIP 2 { DUP } ; DIG 3 } ;
{ CDR ; CDR ; CDR %update_fee } ;
AMOUNT ;
{ { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } } ;
DIP { NOW ; SWAP ; PAIR ; SOME ; DIP { { { DUP ; CAR ; DIP { CDR } } } } } ;
UPDATE ;
PAIR ;
NIL operation ;
PAIR }
{ { DIP { DUP } ; SWAP } ;
{ CDR ; CAR %owner } ;
SENDER ;
{ { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } ;
AMOUNT ;
PUSH mutez 0 ;
{ { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } ;
IF_LEFT
{ SWAP ;
{ DUP ; DIP { CDR @%% ; { CAR @%% ; PAIR %@ % } } ; CAR @%% ; PAIR %@ %@ } ;
NIL operation ;
PAIR }
{ BALANCE ; UNIT ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS ; PAIR } } }