x
213
{ parameter (or (or (or (bytes %setMetadataUri) (address %setArchetype)) (or (address %setAdminCandidate) (unit %acceptAdminCandidate))) (pair %updateBalance (address %pkh) (pair (nat %aid) (or %incr (nat %Incr) (nat %Decr))))) ; storage (pair (address %admin) (pair (option %archetype address) (pair (big_map %ownerData (pair address nat) nat) (pair (option %adminCandidate address) (big_map %metadata string bytes))))) ; code { UNPAIR ; DIP { UNPAIR 5 } ; IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DIG 5 ; DUP 2 ; SOME ; PUSH string "" ; UPDATE ; DUG 5 ; DROP ; PAIR 5 ; NIL operation ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DUP ; SOME ; DIP { DIG 2 ; DROP } ; DUG 2 ; DROP ; PAIR 5 ; NIL operation ; PAIR } } { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DUP ; SOME ; DIP { DIG 4 ; DROP } ; DUG 4 ; DROP ; PAIR 5 ; NIL operation ; PAIR } { DROP ; DUP 4 ; IF_NONE { PUSH string "ADMIN_CANDIDATE_NOT_SET" ; FAILWITH } { DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "CALLER_NOT_ADMIN_CANDIDATE" ; FAILWITH } {} ; DUP ; DIP { DIG 1 ; DROP } ; DUG 1 ; NONE address ; DIP { DIG 4 ; DROP } ; DUG 4 ; DROP } ; PAIR 5 ; NIL operation ; PAIR } } } { UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP 5 ; IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DUP 2 ; DUP 4 ; PAIR ; DUP 2 ; IF_LEFT { DUP 8 ; DUP 3 ; MEM ; IF { DUP 8 ; DUP 3 ; GET ; IF_NONE { PUSH string "ownerData" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH } {} ; DUP 9 ; DUP 3 ; DUP 3 ; ADD ; SOME ; DUP 5 ; UPDATE ; DIP { DIG 8 ; DROP } ; DUG 8 ; DROP } { DUP 8 ; DUP 3 ; MEM ; IF { PUSH string "ownerData" ; PUSH string "KeyExists" ; PAIR ; FAILWITH } { DUP 8 ; DUP 2 ; PUSH nat 0 ; ADD ; SOME ; DUP 4 ; UPDATE ; DIP { DIG 7 ; DROP } ; DUG 7 } } ; DROP } { DUP 8 ; DUP 3 ; MEM ; IF { DUP 8 ; DUP 3 ; GET ; IF_NONE { PUSH string "ownerData" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH } {} ; DUP 9 ; PUSH int 0 ; DUP 4 ; INT ; DUP 4 ; SUB ; COMPARE ; GE ; IF { DUP 3 ; INT ; DUP 3 ; SUB ; ABS } { PUSH string "NatAssign" ; FAILWITH } ; SOME ; DUP 5 ; UPDATE ; DIP { DIG 8 ; DROP } ; DUG 8 ; DROP } { DUP 8 ; DUP 3 ; MEM ; IF { PUSH string "ownerData" ; PUSH string "KeyExists" ; PAIR ; FAILWITH } { DUP 8 ; PUSH int 0 ; DUP 3 ; INT ; PUSH nat 0 ; SUB ; COMPARE ; GE ; IF { DUP 2 ; INT ; PUSH nat 0 ; SUB ; ABS } { PUSH string "NatAssign" ; FAILWITH } ; SOME ; DUP 4 ; UPDATE ; DIP { DIG 7 ; DROP } ; DUG 7 } } ; DROP } ; DROP 4 ; PAIR 5 ; NIL operation ; PAIR } } ; view "getBalance" (pair address nat) nat { UNPAIR ; DIP { CDR ; CDR ; UNPAIR ; SWAP ; DROP } ; UNPAIR ; UNIT ; DUP 3 ; DUP 3 ; PAIR ; DUP 5 ; DUP 2 ; MEM ; IF { DUP 5 ; DUP 2 ; GET ; IF_NONE { PUSH string "ownerData" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH } {} } { PUSH nat 0 } ; DIP { DIG 1 ; DROP } ; DUG 1 ; DROP ; DIP { DROP 3 } } }