x
304
{ parameter (or (pair %requestVerification (address %caller_alias) (pair (address %token_kt1) (pair (address %identity_kt1) (nat %country)))) (or (pair %approve (address %caller_alias) (pair (address %investor_alias) (address %token_kt1))) (or (pair %deny (address %caller_alias) (pair (address %investor_alias) (address %token_kt1))) (or (pair %addAgent (address %caller_alias) (address %agent_alias)) (or (pair %removeAgent (address %caller_alias) (address %agent_alias)) (or (pair %setOwner (address %caller_alias) (address %new_owner)) (or (address %setAdmin) (pair %setTokenRoute (address %caller_alias) (pair (address %token_kt1) (address %irs_kt1)))))))))) ; storage (pair (address %owner) (pair (address %admin) (pair (big_map %agents address unit) (pair (big_map %requests (pair address address) (pair (or %status (unit %pending) (or (unit %approved) (unit %denied))) (pair (address %identity_kt1) (nat %country)))) (big_map %token_routes address address))))) ; code { UNPAIR ; IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; DUP ; GET 3 ; DUP 2 ; CAR ; PAIR ; DUP 3 ; GET 7 ; DUP 2 ; GET ; IF_NONE {} { CAR ; IF_LEFT { DROP } { IF_LEFT { PUSH string "VR_ALREADY_APPROVED" ; FAILWITH } { DROP } } } ; DUP 2 ; GET 6 ; DIG 2 ; GET 5 ; UNIT ; LEFT (or unit unit) ; PAIR 3 ; DIG 2 ; DUP ; GET 7 ; DIG 2 ; SOME ; DIG 3 ; UPDATE ; UPDATE 7 ; NIL operation } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; DUP ; CAR ; DUP 3 ; CAR ; DUP 2 ; COMPARE ; EQ ; IF { DROP } { DUP 3 ; GET 5 ; SWAP ; MEM ; IF {} { PUSH string "VR_NOT_AGENT" ; FAILWITH } } ; DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; DUP 3 ; GET 7 ; DUP 2 ; GET ; IF_NONE { PUSH string "VR_NO_REQUEST" ; FAILWITH } {} ; UNIT ; LEFT unit ; RIGHT unit ; DUP 2 ; DIG 3 ; DIG 5 ; DUP ; GET 7 ; DIG 3 ; DIG 4 ; UPDATE 1 ; SOME ; DIG 3 ; UPDATE ; UPDATE 7 ; DUP ; GET 8 ; DUP 4 ; GET 4 ; GET ; IF_NONE { PUSH string "VR_NO_ROUTE" ; FAILWITH } {} ; CONTRACT %registerInvestor (pair (address %caller_alias) (pair (address %investor) (pair (address %identity_kt1) (nat %country)))) ; IF_NONE { PUSH string "VR_IRS_ENTRYPOINT_NOT_FOUND" ; FAILWITH } {} ; DUP 3 ; GET 4 ; DIG 3 ; GET 3 ; DIG 4 ; GET 3 ; SELF_ADDRESS ; PAIR 4 ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; DUP ; CAR ; DUP 3 ; CAR ; DUP 2 ; COMPARE ; EQ ; IF { DROP } { DUP 3 ; GET 5 ; SWAP ; MEM ; IF {} { PUSH string "VR_NOT_AGENT" ; FAILWITH } } ; DUP ; GET 4 ; SWAP ; GET 3 ; PAIR ; DUP 2 ; GET 7 ; DUP 2 ; GET ; IF_NONE { PUSH string "VR_NO_REQUEST" ; FAILWITH } {} ; UNIT ; RIGHT unit ; RIGHT unit ; SWAP ; DIG 2 ; DIG 3 ; DUP ; GET 7 ; DIG 3 ; DIG 4 ; UPDATE 1 ; SOME ; DIG 3 ; UPDATE ; UPDATE 7 } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; CAR ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_OWNER" ; FAILWITH } {} ; SWAP ; DUP ; GET 5 ; UNIT ; SOME ; DIG 3 ; CDR ; UPDATE ; UPDATE 5 } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; CAR ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 5 ; DUP 2 ; CDR ; MEM ; IF {} { PUSH string "VR_AGENT_NOT_FOUND" ; FAILWITH } ; SWAP ; DUP ; GET 5 ; NONE unit ; DIG 3 ; CDR ; UPDATE ; UPDATE 5 } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; CAR ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 1 } { IF_LEFT { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; UPDATE 3 } { DUP 2 ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ; DUP ; CAR ; DUP 2 ; GET 3 ; UNIT ; VIEW "owner" address ; IF_NONE { PUSH bool False } { DUP 2 ; COMPARE ; EQ } ; IF { DROP } { DUP 3 ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "VR_NOT_TOKEN_OWNER" ; FAILWITH } } ; SWAP ; DUP ; GET 8 ; DUP 3 ; GET 4 ; SOME ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 8 } } } } } ; NIL operation } } ; PAIR } ; view "getRequest" (pair address address) (option (pair (or %status (unit %pending) (or (unit %approved) (unit %denied))) (pair (address %identity_kt1) (nat %country)))) { UNPAIR ; SWAP ; GET 7 ; SWAP ; GET } ; view "isAgent" address bool { UNPAIR ; SWAP ; GET 5 ; SWAP ; MEM } ; view "getTokenRoute" address (option address) { UNPAIR ; SWAP ; GET 8 ; SWAP ; GET } }