x
737
parameter (or (or (unit %claim) (nat %stake)) (nat %unstake));
storage (pair (pair %stake_currency (address %fa2_address) (nat %token_id))
(pair (pair %reward_currency (address %fa2_address) (nat %token_id))
(pair (nat %totalStaked)
(pair (nat %rps)
(pair (timestamp %lastUpdateTime)
(pair
(big_map %ledger address
(pair (nat %staked)
(pair (nat %reward)
(nat %last_rps))))
(nat %reward_per_sec)))))));
code { LAMBDA
(pair (pair address address) (pair nat (pair address nat)))
operation
{ UNPAIR ;
UNPAIR ;
DIG 2 ;
UNPAIR ;
NIL (pair nat nat) ;
SWAP ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
PAIR ;
CONS ;
SWAP ;
CAR ;
PAIR ;
DIG 2 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
MAP { SWAP ; DUP ; DUG 2 ; PAIR } ;
SWAP ;
DROP ;
SWAP ;
CAR ;
CONTRACT %transfer (list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount)))))) ;
IF_NONE { PUSH string "Invalid FA2 Address" ; FAILWITH } {} ;
PUSH mutez 0 ;
NIL (pair address (list (pair address (pair nat nat)))) ;
DIG 3 ;
DIG 4 ;
PAIR ;
CONS ;
TRANSFER_TOKENS } ;
LAMBDA
(pair bool string)
unit
{ UNPAIR ; NOT ; IF { FAILWITH } { DROP ; UNIT } } ;
LAMBDA
(pair address
(pair (pair address nat)
(pair (pair address nat)
(pair nat
(pair nat
(pair timestamp
(pair
(big_map address
(pair nat (pair nat nat)))
nat)))))))
(pair nat (pair nat nat))
{ UNPAIR ;
SWAP ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
SWAP ;
GET ;
IF_NONE { PUSH nat 0 ; PUSH nat 0 ; PAIR ; PUSH nat 0 ; PAIR } {} } ;
DIG 3 ;
UNPAIR ;
SELF_ADDRESS ;
PUSH nat 1000000 ;
DUP ;
DIG 4 ;
NOW ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
COMPARE ;
LT ;
IF
{ PUSH nat 0 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
COMPARE ;
GT ;
IF
{ DUP ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
NOW ;
SUB ;
ABS ;
DUG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
DIG 2 ;
MUL ;
MUL ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
SWAP ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CAR ;
ADD ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
NOW ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
CAR ;
PAIR ;
DUP ;
CDR ;
CDR ;
CDR ;
CDR ;
DIG 2 ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR }
{ SWAP ;
DROP ;
DUP ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
NOW ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR } }
{ SWAP ; DROP } ;
DIG 3 ;
IF_LEFT
{ IF_LEFT
{ DROP ;
SWAP ;
DUG 2 ;
PUSH string "Amount must be 0mutez" ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
PAIR ;
DIG 5 ;
SWAP ;
EXEC ;
DROP ;
DUP ;
SENDER ;
PAIR ;
DIG 4 ;
SWAP ;
EXEC ;
DUP ;
CDR ;
CDR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CDR ;
CAR ;
SUB ;
ABS ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
MUL ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
ADD ;
DIG 4 ;
DUP ;
DUG 5 ;
SWAP ;
DUP ;
DUG 2 ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CAR ;
DIG 6 ;
DIG 2 ;
DUP ;
DUG 3 ;
MUL ;
DIG 3 ;
SUB ;
ABS ;
PAIR ;
DIG 2 ;
CAR ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
SWAP ;
SOME ;
SENDER ;
UPDATE ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CAR ;
DIG 2 ;
PAIR ;
SENDER ;
DIG 4 ;
PAIR ;
PAIR ;
DIG 3 ;
SWAP ;
EXEC ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
DIG 2 ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
DUP ;
DUG 3 ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
CAR ;
PAIR ;
NIL operation ;
DIG 2 ;
CONS ;
PAIR }
{ DIG 2 ;
DROP ;
PUSH string "AMOUNT_TOO_LOW" ;
PUSH nat 0 ;
DIG 2 ;
DUP ;
DUG 3 ;
COMPARE ;
GT ;
PAIR ;
DIG 5 ;
DUP ;
DUG 6 ;
SWAP ;
EXEC ;
DROP ;
PUSH string "Amount must be 0mutez" ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
PAIR ;
DIG 5 ;
SWAP ;
EXEC ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
SENDER ;
PAIR ;
DIG 4 ;
SWAP ;
EXEC ;
DUP ;
CDR ;
CDR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CAR ;
SUB ;
ABS ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
MUL ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
ADD ;
DIG 2 ;
DUP ;
DUG 3 ;
DIG 2 ;
CAR ;
ADD ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
DIG 4 ;
DUP ;
DUG 5 ;
CDR ;
CDR ;
CDR ;
CAR ;
DIG 3 ;
PAIR ;
DIG 2 ;
PAIR ;
SOME ;
SENDER ;
UPDATE ;
SWAP ;
DUP ;
DUG 2 ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CAR ;
ADD ;
DIG 3 ;
DUP ;
DUG 4 ;
CAR ;
DIG 3 ;
PAIR ;
DIG 4 ;
SENDER ;
PAIR ;
PAIR ;
DIG 4 ;
SWAP ;
EXEC ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
DIG 3 ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
CAR ;
PAIR ;
DUP ;
CDR ;
CDR ;
CDR ;
DIG 3 ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
NIL operation ;
DIG 2 ;
CONS ;
PAIR } }
{ DIG 2 ;
DROP ;
PUSH string "AMOUNT_TOO_LOW" ;
PUSH nat 0 ;
DIG 2 ;
DUP ;
DUG 3 ;
COMPARE ;
GT ;
PAIR ;
DIG 5 ;
DUP ;
DUG 6 ;
SWAP ;
EXEC ;
DROP ;
PUSH string "Amount must be 0mutez" ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
PAIR ;
DIG 5 ;
SWAP ;
EXEC ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
SENDER ;
PAIR ;
DIG 4 ;
SWAP ;
EXEC ;
DUP ;
CDR ;
CDR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CAR ;
SUB ;
ABS ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
MUL ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
ADD ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
DIG 3 ;
DUP ;
DUG 4 ;
COMPARE ;
LE ;
IF
{ DIG 2 ; DUP ; DUG 3 ; DIG 2 ; CAR ; SUB ; ABS }
{ SWAP ; DROP ; PUSH string "BALANCE_TOO_LOW" ; FAILWITH } ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
DIG 4 ;
DUP ;
DUG 5 ;
CDR ;
CDR ;
CDR ;
CAR ;
DIG 3 ;
PAIR ;
DIG 2 ;
PAIR ;
SOME ;
SENDER ;
UPDATE ;
SWAP ;
DUP ;
DUG 2 ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CAR ;
SUB ;
ABS ;
DIG 3 ;
DUP ;
DUG 4 ;
CAR ;
DIG 3 ;
PAIR ;
SENDER ;
DIG 5 ;
PAIR ;
PAIR ;
DIG 4 ;
SWAP ;
EXEC ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
CDR ;
DIG 3 ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
DUP ;
DUG 4 ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
CAR ;
PAIR ;
DUP ;
CDR ;
CDR ;
CDR ;
DIG 3 ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
NIL operation ;
DIG 2 ;
CONS ;
PAIR } }