x
112
parameter (or (or (string %register) (address %setAdministrator)) (or (mutez %setBondAmount) (unit %unregister)));storage (pair (pair (address %administratorAddress) (mutez %bondAmount)) (pair (big_map %metadata string bytes) (big_map %registry address (pair (string %endpointUrl) (mutez %bondAmount)))));code { UNPAIR ; IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CDR ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "BAD_BOND_AMOUNT" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 4 ; SENDER ; MEM ; IF { PUSH string "BAD_PARAM" ; FAILWITH } {} ; SWAP ; DUP ; GET 4 ; AMOUNT ; DIG 3 ; PAIR ; SOME ; SENDER ; UPDATE ; UPDATE 4 } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "BAD_SENDER" ; FAILWITH } ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "AMOUNT_NOT_ALLOWED" ; FAILWITH } ; SWAP ; UNPAIR ; CDR ; DIG 2 ; PAIR ; PAIR } ; NIL operation } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "BAD_SENDER" ; FAILWITH } ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "AMOUNT_NOT_ALLOWED" ; FAILWITH } ; SWAP ; UNPAIR ; CAR ; DIG 2 ; SWAP ; PAIR ; PAIR ; NIL operation } { DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "AMOUNT_NOT_ALLOWED" ; FAILWITH } ; DUP ; GET 4 ; SENDER ; MEM ; IF {} { PUSH string "BAD_PARAM" ; FAILWITH } ; NIL operation ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 140 ; FAILWITH } {} ; DUP 3 ; GET 4 ; SENDER ; GET ; IF_NONE { PUSH int 140 ; FAILWITH } {} ; CDR ; UNIT ; TRANSFER_TOKENS ; CONS ; SWAP ; DUP ; GET 4 ; NONE (pair string mutez) ; SENDER ; UPDATE ; UPDATE 4 ; SWAP } } ; PAIR }