x
133
parameter (or
(or (or (unit %acceptAdmin) (list %addHash bytes))
(or (bytes %checkHash) (option %proposeAdmin address)))
(or (list %removeHash bytes) (list %updateMetadata (pair string bytes))));
storage (pair (pair (address %admin) (big_map %hashes bytes unit))
(big_map %metadata string bytes)
(option %proposed_admin address));
code { PUSH nat 0 ;
SWAP ;
UNPAIR ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
GT ;
IF { PUSH nat 1 ; FAILWITH } {} ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ DIG 2 ;
DROP 2 ;
DUP ;
CDR ;
CDR ;
IF_NONE { PUSH nat 2 ; FAILWITH } {} ;
DUP ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH nat 3 ; FAILWITH } {} ;
DUP 2 ;
DIG 2 ;
CAR ;
DIG 2 ;
UPDATE 1 ;
UPDATE 1 ;
DUP ;
CDR ;
NONE address ;
UPDATE 2 ;
UPDATE 2 }
{ DUP 2 ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP } ;
DUP 2 ;
CAR ;
CDR ;
SWAP ;
ITER { SWAP ; UNIT ; SOME ; DIG 2 ; UPDATE } ;
DUP 2 ;
DIG 2 ;
CAR ;
DIG 2 ;
UPDATE 2 ;
UPDATE 1 } ;
NIL operation ;
PAIR }
{ IF_LEFT
{ DIG 2 ;
DROP ;
DUP 2 ;
CAR ;
CDR ;
DUP 2 ;
MEM ;
IF
{ PUSH string "Confirmed" ;
SWAP ;
PAIR ;
EMIT %hash_result (pair bytes string) ;
SWAP ;
NIL operation ;
DIG 2 ;
CONS ;
PAIR }
{ DROP 2 ; PUSH nat 4 ; FAILWITH } }
{ DUP 2 ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP } ;
DUP 2 ;
DIG 2 ;
CDR ;
DIG 2 ;
UPDATE 2 ;
UPDATE 2 ;
NIL operation ;
PAIR } } }
{ IF_LEFT
{ DUP 2 ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP } ;
DUP 2 ;
CAR ;
CDR ;
SWAP ;
ITER { NONE unit ; SWAP ; UPDATE } ;
DUP 2 ;
DIG 2 ;
CAR ;
DIG 2 ;
UPDATE 2 ;
UPDATE 1 }
{ DUP 2 ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP } ;
DUP 2 ;
CDR ;
CAR ;
SWAP ;
ITER { SWAP ; DUP 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } ;
DUP 2 ;
DIG 2 ;
CDR ;
DIG 2 ;
UPDATE 1 ;
UPDATE 2 } ;
NIL operation ;
PAIR } }