x
168
{ parameter (or (pair %addTrustedIssuer (address %caller_alias) (pair (key %issuer_sppk) (pair (set %topics nat) (address %claim_issuer)))) (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) (pair (set %new_topics nat) (address %claim_issuer)))) (address %setAdmin))))) ; storage (pair (big_map %issuers key (pair (set %topics nat) (address %claim_issuer))) (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 6 ; DUP 4 ; GET 5 ; PAIR ; 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 (pair (set nat) address) ; 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 6 ; DUP 4 ; GET 5 ; PAIR ; 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 } { CAR ; SWAP ; MEM } } ; view "getTopicsForIssuer" key (set nat) { UNPAIR ; SWAP ; CAR ; SWAP ; GET ; IF_NONE { PUSH string "ISSUER_NOT_TRUSTED" ; FAILWITH } { CAR } } ; view "getClaimIssuerForTopic" (pair key nat) (option address) { UNPAIR ; UNPAIR ; DIG 2 ; CAR ; SWAP ; GET ; IF_NONE { DROP ; NONE address } { DUP ; CAR ; DIG 2 ; MEM ; IF { CDR ; SOME } { DROP ; NONE address } } } ; view "getIssuerEntry" key (pair (set %topics nat) (address %claim_issuer)) { UNPAIR ; SWAP ; CAR ; SWAP ; GET ; IF_NONE { PUSH string "ISSUER_NOT_TRUSTED" ; FAILWITH } {} } }