in_sync

Program wusdc_holding_v0003.aleo

Program ID
wusdc_holding_v0003.aleo
Owner signature
sign105vk3863nfyre76vdsrj7ag8luf83xs8ps9y5chrq9xvd28ga5q96z0l9gq2a9futs4npl9y05hfelrecl7zlrjtfsfrx6fap0p9vqkyks9tpddnzqg3nu8r5m089k9g7hymq0vq6thtu9t98xra4846q4p445rzalqgc0j29g2pfq0emk9566u8l92m2e32at24hlyfqr83zhse6ju
Times called
0
Similar programs
0
Mappings
holdings (address -> u128)
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)
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 heightTimestampTransition IDFunction callState




Not implemented