x
142
{ parameter (or (pair %addTrustedIssuer (address %caller_alias) (pair (key %issuer_sppk) (set %topics nat))) (or (pair %removeTrustedIssuer (address %caller_alias) (key %issuer_sppk)) (or (pair %setOwner (address %caller_alias) (address %new_owner)) (or (pair %updateIssuerClaimTopics (address %caller_alias) (pair (key %issuer_sppk) (set %new_topics nat))) (address %setAdmin))))) ; storage (pair (big_map %issuers key (set nat)) (pair (address %admin) (address %owner))) ; code { UNPAIR ; IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 4 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; CAR ; DUP 2 ; GET 3 ; MEM ; IF { PUSH string "ISSUER_ALREADY_TRUSTED" ; FAILWITH } {} ; SWAP ; DUP ; CAR ; DUP 3 ; GET 4 ; SOME ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 1 } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 4 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; CAR ; DUP 2 ; CDR ; MEM ; IF {} { PUSH string "ISSUER_NOT_TRUSTED" ; FAILWITH } ; SWAP ; DUP ; CAR ; NONE (set nat) ; DIG 3 ; CDR ; UPDATE ; UPDATE 1 } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 4 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 4 } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 4 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; CAR ; DUP 2 ; GET 3 ; MEM ; IF {} { PUSH string "ISSUER_NOT_TRUSTED" ; FAILWITH } ; SWAP ; DUP ; CAR ; DUP 3 ; GET 4 ; SOME ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 1 } { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; UPDATE 3 } } } } ; NIL operation ; PAIR } ; view "isTrustedIssuer" key bool { UNPAIR ; SWAP ; CAR ; SWAP ; MEM } ; view "isTrustedIssuerForTopic" (pair key nat) bool { UNPAIR ; UNPAIR ; DIG 2 ; CAR ; SWAP ; GET ; IF_NONE { DROP ; PUSH bool False } { SWAP ; MEM } } ; view "getTopicsForIssuer" key (set nat) { UNPAIR ; SWAP ; CAR ; SWAP ; GET ; IF_NONE { PUSH string "ISSUER_NOT_TRUSTED" ; FAILWITH } {} } }