Program wusdc_holding_v0003.aleo
Program ID
wusdc_holding_v0003.aleo
Deployment transaction
Owner signature
sign105vk3863nfyre76vdsrj7ag8luf83xs8ps9y5chrq9xvd28ga5q96z0l9gq2a9futs4npl9y05hfelrecl7zlrjtfsfrx6fap0p9vqkyks9tpddnzqg3nu8r5m089k9g7hymq0vq6thtu9t98xra4846q4p445rzalqgc0j29g2pfq0emk9566u8l92m2e32at24hlyfqr83zhse6ju
Times called
0
Similar programs
0
Imports
Mappings
holdings (address -> u128)
owner_holding (boolean -> address)
owner_holding (boolean -> address)
Structs
-
Records
-
Functions
-
Transitions
initialize_holding(public address) -> () finalize(address)
transfer_ownership_holding(public address) -> () finalize(address, address)
hold_fund(public address, public u128) -> () finalize(address, address, u128)
release_fund(public address, public u128) -> () finalize(address, address, u128)
transfer_ownership_holding(public address) -> () finalize(address, address)
hold_fund(public address, public u128) -> () finalize(address, address, u128)
release_fund(public address, public u128) -> () finalize(address, address, u128)
Program Source Code (Aleo Instruction) Upload Leo source
import wusdc_token_v0003.aleo; program wusdc_holding_v0003.aleo; mapping holdings: key as address.public; value as u128.public; mapping owner_holding: key as boolean.public; value as address.public; function initialize_holding: input r0 as address.public; async initialize_holding r0 into r1; output r1 as wusdc_holding_v0003.aleo/initialize_holding.future; finalize initialize_holding: input r0 as address.public; contains owner_holding[true] into r1; not r1 into r2; assert.eq r2 true; set r0 into owner_holding[true]; function transfer_ownership_holding: input r0 as address.public; async transfer_ownership_holding self.caller r0 into r1; output r1 as wusdc_holding_v0003.aleo/transfer_ownership_holding.future; finalize transfer_ownership_holding: input r0 as address.public; input r1 as address.public; get owner_holding[true] into r2; assert.eq r0 r2; set r1 into owner_holding[true]; function hold_fund: input r0 as address.public; input r1 as u128.public; async hold_fund self.caller r0 r1 into r2; output r2 as wusdc_holding_v0003.aleo/hold_fund.future; finalize hold_fund: input r0 as address.public; input r1 as address.public; input r2 as u128.public; get owner_holding[true] into r3; assert.eq r0 r3; get.or_use holdings[r1] 0u128 into r4; add r4 r2 into r5; set r5 into holdings[r1]; function release_fund: input r0 as address.public; input r1 as u128.public; call wusdc_token_v0003.aleo/transfer_public r0 r1 into r2; async release_fund r2 self.caller r0 r1 into r3; output r3 as wusdc_holding_v0003.aleo/release_fund.future; finalize release_fund: input r0 as wusdc_token_v0003.aleo/transfer_public.future; input r1 as address.public; input r2 as address.public; input r3 as u128.public; await r0; get owner_holding[true] into r4; assert.eq r1 r4; get holdings[r2] into r5; sub r5 r3 into r6; set r6 into holdings[r2];
Block height | Timestamp | Transition ID | Function call | State |