x
297
parameter (or (or (or (address %declare_ownership) (unit %claim_ownership)) (or (unit %pause) (unit %unpause))) (or (or (address %add_oracle) (address %remove_oracle)) (or (pair %owner_withdraw (nat %dest_amount) (address %dest_addr)) (pair %withdraw (nat %dest_amount) (address %dest_addr)))));storage (pair (address %owner) (address %spoint_address) (option %owner_candidate address) (bool %paused) (big_map %oracles address unit));code { LAMBDA bool bool { PUSH unit Unit ; DUP 2 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; PUSH bool True ; SWAP ; DROP 1 ; SWAP ; DROP 1 } ; NIL operation ; DIG 2 ; UNPAIR ; DIP 1 { UNPAIR 5 } ; IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; DUP ; SOME ; DIP 1 { DIG 3 ; DROP 1 } ; DUG 3 ; DROP 1 ; PAIR 5 ; SWAP ; PAIR } { DROP 1 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; DUP 3 ; IF_NONE { PUSH bool False } { SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP 1 } ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; SENDER ; SWAP ; DROP 1 ; NONE address ; DIP 1 { DIG 2 ; DROP 1 } ; DUG 2 ; PAIR 5 ; SWAP ; PAIR } } { IF_LEFT { DROP 1 ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; DUP 7 ; DUP 5 ; EXEC ; NOT ; IF { PUSH string "pausable_r1" ; PUSH string "INVALID_CONDITION" ; PAIR ; FAILWITH } {} ; PUSH bool True ; DIP 1 { DIG 3 ; DROP 1 } ; DUG 3 ; PAIR 5 ; SWAP ; PAIR } { DROP 1 ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; DUP 4 ; NOT ; IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ; PUSH bool False ; DIP 1 { DIG 3 ; DROP 1 } ; DUG 3 ; PAIR 5 ; SWAP ; PAIR } } } { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; DUP 6 ; DUP 2 ; MEM ; IF { PUSH string "oracles" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH } { DUP 6 ; PUSH unit Unit ; SOME ; DUP 3 ; UPDATE ; DIP 1 { DIG 5 ; DROP 1 } ; DUG 5 } ; DROP 1 ; PAIR 5 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; DUP 6 ; NONE unit ; DUP 3 ; UPDATE ; DIP 1 { DIG 5 ; DROP 1 } ; DUG 5 ; DROP 1 ; PAIR 5 ; SWAP ; PAIR } } { IF_LEFT { UNPAIR ; SWAP ; DUP 3 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 10 ; ITER { CONS } ; DUP 6 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH string "transfer" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair (address %to) (pair (nat %token_id) (nat %amount))))) ; NIL (pair (address %to) (pair (nat %token_id) (nat %amount))) ; DUP 8 ; PUSH nat 0 ; PAIR ; DUP 8 ; PAIR ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 7 ; DROP 1 } ; DUG 7 ; DROP 2 ; PAIR 5 ; SWAP ; PAIR } { UNPAIR ; SWAP ; DUP 7 ; SENDER ; MEM ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { PUSH string "NO_TRANSFER" ; FAILWITH } {} ; DUP 9 ; DUP 7 ; EXEC ; NOT ; IF { PUSH string "w_r1" ; PUSH string "INVALID_CONDITION" ; PAIR ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 10 ; ITER { CONS } ; DUP 6 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH string "transfer" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair (address %to) (pair (nat %token_id) (nat %amount))))) ; NIL (pair (address %to) (pair (nat %token_id) (nat %amount))) ; DUP 8 ; PUSH nat 0 ; PAIR ; DUP 8 ; PAIR ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 7 ; DROP 1 } ; DUG 7 ; NIL operation ; NIL operation ; DUP 10 ; ITER { CONS } ; SENDER ; DUP 5 ; PAIR ; DUP 4 ; PAIR ; EMIT %Withdraw (pair (address %dest) (nat %amount) (address %oracleAddr)) ; CONS ; ITER { CONS } ; DIP 1 { DIG 7 ; DROP 1 } ; DUG 7 ; DROP 2 ; PAIR 5 ; SWAP ; PAIR } } } ; DIP 1 { DROP 1 } }