x
116
{ parameter (or (or (or (address %addInWhitelist) (string %anchor)) (or (unit %approveAdmin) (address %changeAdmin))) (or (or (address %removeFromWhitelist) (set %setWhitelist address)) (bool %useWhitelist))) ; storage (pair (address %admin) (big_map %hash_map string (pair timestamp address)) (bool %use_whitelist) (set %whitelist address) (string %name) (big_map %metadata string bytes) (option %requested_admin address)) ; code { LAMBDA (pair address (big_map string (pair timestamp address)) bool (set address) string (big_map string bytes) (option address)) unit { CAR ; SENDER ; COMPARE ; EQ ; IF { UNIT } { PUSH string "ONLY_ADMIN" ; FAILWITH } } ; SWAP ; UNPAIR ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "EXPECTS_0_TEZ" ; FAILWITH } ; IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; DUP 2 ; DIG 2 ; GET 7 ; DIG 2 ; PUSH bool True ; SWAP ; UPDATE ; UPDATE 7 ; NIL operation ; PAIR } { DIG 2 ; DROP ; DUP 2 ; GET 7 ; SENDER ; MEM ; DUP 3 ; GET 5 ; NOT ; OR ; IF {} { PUSH string "NOT_AUTHORIZED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; GET ; IF_NONE { DUP 2 ; GET 3 ; SENDER ; NOW ; PAIR ; DIG 2 ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 3 ; NIL operation ; PAIR } { DROP 3 ; PUSH string "Record hash already written" ; FAILWITH } } } { IF_LEFT { DIG 2 ; DROP 2 ; DUP ; GET 12 ; IF_NONE { PUSH string "NO_CHANGE_ADMIN_REQUEST" ; FAILWITH } {} ; DUP ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "SENDER_NOT_REQUESTED_ADMIN" ; FAILWITH } ; UPDATE 1 ; NONE address ; UPDATE 12 } { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; SOME ; UPDATE 12 } ; NIL operation ; PAIR } } { IF_LEFT { IF_LEFT { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; DUP 2 ; DIG 2 ; GET 7 ; DIG 2 ; PUSH bool False ; SWAP ; UPDATE ; UPDATE 7 } { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; UPDATE 7 } } { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; UPDATE 5 } ; NIL operation ; PAIR } } ; view "get_hash_info" string (pair timestamp address) { UNPAIR ; SWAP ; GET 3 ; SWAP ; GET ; IF_NONE { PUSH string "Record hash has not been written" ; FAILWITH } {} } }