The explorer is out of sync. The last synced block is 184 hours ago. Current block height: explorer: 2206528 / node: 2325991 / ref: 2325990

Program stablecoin_1713438024.aleo

Program ID
stablecoin_1713438024.aleo
Owner signature
sign1j2jnwcll4t890uc44ykyd4p0jx35dzmhl3xw5sxrr6sutm4wdvpmn8rtu82f7xgft4kcqqq4rh0n4m49u3xu6necrxzj2rhvku0mwqefmld7e4vm2kzgyjlge3ggyyey24760gftwv30faflcdgansp7q5dgy78gdshhk83hp46kg398hqt93w6xstu443fduz9xszj9le6sxujhyh8
Times called
10
Similar programs
0
Mappings
public_balance (address -> u64)
Structs
Action
Proposal
MintArgs
Records
Token
Functions
-
Transitions
split_token(Token, u64, u64) -> (Token, Token)
join_tokens(Token, Token) -> Token
mint_public(multisig_1713438024.aleo/Authorization, aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, u32, address, MintArgs) -> (aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, logs_1713438024.aleo/Mint) finalize(MintArgs)
mint_private(multisig_1713438024.aleo/Authorization, aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, u32, address, MintArgs) -> (aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, logs_1713438024.aleo/Mint, Token)
redeem_public(aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, u32, address, u64) -> (aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, logs_1713438024.aleo/Redeem) finalize(address, u64)
redeem_private(aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, u32, address, Token) -> (aml_1713438024.aleo/AML, kyc_1713438024.aleo/KYC, logs_1713438024.aleo/Redeem)
transfer_public(aml_1713438024.aleo/AML, address, public address, public u64) -> (aml_1713438024.aleo/AML, logs_1713438024.aleo/Transfer) finalize(address, address, u64)
transfer_private(aml_1713438024.aleo/AML, address, Token, address) -> (aml_1713438024.aleo/AML, logs_1713438024.aleo/Transfer, Token)
transfer_private_to_public(aml_1713438024.aleo/AML, address, Token, public address) -> (aml_1713438024.aleo/AML, logs_1713438024.aleo/Transfer) finalize(address, u64)
transfer_public_to_private(aml_1713438024.aleo/AML, address, address, public u64) -> (aml_1713438024.aleo/AML, logs_1713438024.aleo/Transfer, Token) finalize(address, u64)
Program Source Code (Aleo Instruction) Upload Leo source

import multisig_1713438024.aleo;
import kyc_1713438024.aleo;
import aml_1713438024.aleo;
import logs_1713438024.aleo;

program stablecoin_1713438024.aleo;

struct Action:
    program_address as address;
    action_id as u8;

struct Proposal:
    action as Action;
    argument_hash as field;
    nonce as u64;

record Token:
    owner as address.private;
    amount as u64.private;

struct MintArgs:
    to as address;
    amount as u64;
    iv as field;

mapping public_balance:
    key as address.public;
    value as u64.public;

function split_token:
    input r0 as Token.record;
    input r1 as u64.private;
    input r2 as u64.private;
    add r1 r2 into r3;
    assert.eq r0.amount r3;
    cast r0.owner r1 into r4 as Token.record;
    cast r0.owner r2 into r5 as Token.record;
    output r4 as Token.record;
    output r5 as Token.record;

function join_tokens:
    input r0 as Token.record;
    input r1 as Token.record;
    add r0.amount r1.amount into r2;
    cast r0.owner r2 into r3 as Token.record;
    output r3 as Token.record;

function mint_public:
    input r0 as multisig_1713438024.aleo/Authorization.record;
    input r1 as aml_1713438024.aleo/AML.record;
    input r2 as kyc_1713438024.aleo/KYC.record;
    input r3 as u32.private;
    input r4 as address.private;
    input r5 as MintArgs.private;
    hash.bhp256 r5 into r6 as field;
    call multisig_1713438024.aleo/verify r0 0u8 r6 into r7;
    assert.eq r5.to r1.account;
    assert.eq r5.to r2.account;
    call aml_1713438024.aleo/verify_aml r1 into r8 r9;
    call kyc_1713438024.aleo/verify_kyc r2 r3 into r10 r11;
    call logs_1713438024.aleo/log_mint r4 r5.to r5.amount false into r12 r13;
    async mint_public r7 r9 r11 r13 r5 into r14;
    output r8 as aml_1713438024.aleo/AML.record;
    output r10 as kyc_1713438024.aleo/KYC.record;
    output r12 as logs_1713438024.aleo/Mint.record;
    output r14 as stablecoin_1713438024.aleo/mint_public.future;
finalize mint_public:
    input r0 as multisig_1713438024.aleo/verify.future;
    input r1 as aml_1713438024.aleo/verify_aml.future;
    input r2 as kyc_1713438024.aleo/verify_kyc.future;
    input r3 as logs_1713438024.aleo/log_mint.future;
    input r4 as MintArgs.public;
    await r0;
    await r1;
    await r2;
    await r3;
    get.or_use public_balance[r4.to] 0u64 into r5;
    add r5 r4.amount into r6;
    set r6 into public_balance[r4.to];

function mint_private:
    input r0 as multisig_1713438024.aleo/Authorization.record;
    input r1 as aml_1713438024.aleo/AML.record;
    input r2 as kyc_1713438024.aleo/KYC.record;
    input r3 as u32.private;
    input r4 as address.private;
    input r5 as MintArgs.private;
    hash.bhp256 r5 into r6 as field;
    call multisig_1713438024.aleo/verify r0 0u8 r6 into r7;
    assert.eq r5.to r1.account;
    assert.eq r5.to r2.account;
    call aml_1713438024.aleo/verify_aml r1 into r8 r9;
    call kyc_1713438024.aleo/verify_kyc r2 r3 into r10 r11;
    call logs_1713438024.aleo/log_mint r4 r5.to r5.amount true into r12 r13;
    cast r5.to r5.amount into r14 as Token.record;
    async mint_private r7 r9 r11 r13 into r15;
    output r8 as aml_1713438024.aleo/AML.record;
    output r10 as kyc_1713438024.aleo/KYC.record;
    output r12 as logs_1713438024.aleo/Mint.record;
    output r14 as Token.record;
    output r15 as stablecoin_1713438024.aleo/mint_private.future;
finalize mint_private:
    input r0 as multisig_1713438024.aleo/verify.future;
    input r1 as aml_1713438024.aleo/verify_aml.future;
    input r2 as kyc_1713438024.aleo/verify_kyc.future;
    input r3 as logs_1713438024.aleo/log_mint.future;
    await r0;
    await r1;
    await r2;
    await r3;

function redeem_public:
    input r0 as aml_1713438024.aleo/AML.record;
    input r1 as kyc_1713438024.aleo/KYC.record;
    input r2 as u32.private;
    input r3 as address.private;
    input r4 as u64.private;
    assert.eq self.signer r0.account;
    assert.eq self.signer r1.account;
    call aml_1713438024.aleo/verify_aml r0 into r5 r6;
    call kyc_1713438024.aleo/verify_kyc r1 r2 into r7 r8;
    call logs_1713438024.aleo/log_redeem r3 self.signer r4 false into r9 r10;
    async redeem_public r6 r8 r10 self.signer r4 into r11;
    output r5 as aml_1713438024.aleo/AML.record;
    output r7 as kyc_1713438024.aleo/KYC.record;
    output r9 as logs_1713438024.aleo/Redeem.record;
    output r11 as stablecoin_1713438024.aleo/redeem_public.future;
finalize redeem_public:
    input r0 as aml_1713438024.aleo/verify_aml.future;
    input r1 as kyc_1713438024.aleo/verify_kyc.future;
    input r2 as logs_1713438024.aleo/log_redeem.future;
    input r3 as address.public;
    input r4 as u64.public;
    await r0;
    await r1;
    await r2;
    get.or_use public_balance[r3] 0u64 into r5;
    sub r5 r4 into r6;
    set r6 into public_balance[r3];

function redeem_private:
    input r0 as aml_1713438024.aleo/AML.record;
    input r1 as kyc_1713438024.aleo/KYC.record;
    input r2 as u32.private;
    input r3 as address.private;
    input r4 as Token.record;
    assert.eq self.signer r0.account;
    assert.eq self.signer r1.account;
    call aml_1713438024.aleo/verify_aml r0 into r5 r6;
    call kyc_1713438024.aleo/verify_kyc r1 r2 into r7 r8;
    call logs_1713438024.aleo/log_redeem r3 self.signer r4.amount true into r9 r10;
    async redeem_private r6 r8 r10 into r11;
    output r5 as aml_1713438024.aleo/AML.record;
    output r7 as kyc_1713438024.aleo/KYC.record;
    output r9 as logs_1713438024.aleo/Redeem.record;
    output r11 as stablecoin_1713438024.aleo/redeem_private.future;
finalize redeem_private:
    input r0 as aml_1713438024.aleo/verify_aml.future;
    input r1 as kyc_1713438024.aleo/verify_kyc.future;
    input r2 as logs_1713438024.aleo/log_redeem.future;
    await r0;
    await r1;
    await r2;

function transfer_public:
    input r0 as aml_1713438024.aleo/AML.record;
    input r1 as address.private;
    input r2 as address.public;
    input r3 as u64.public;
    assert.eq self.signer r0.account;
    call aml_1713438024.aleo/verify_aml r0 into r4 r5;
    call logs_1713438024.aleo/log_transfer r1 self.signer r2 r3 false false into r6 r7;
    async transfer_public r5 r7 self.signer r2 r3 into r8;
    output r4 as aml_1713438024.aleo/AML.record;
    output r6 as logs_1713438024.aleo/Transfer.record;
    output r8 as stablecoin_1713438024.aleo/transfer_public.future;
finalize transfer_public:
    input r0 as aml_1713438024.aleo/verify_aml.future;
    input r1 as logs_1713438024.aleo/log_transfer.future;
    input r2 as address.public;
    input r3 as address.public;
    input r4 as u64.public;
    await r0;
    await r1;
    get.or_use public_balance[r2] 0u64 into r5;
    sub r5 r4 into r6;
    set r6 into public_balance[r2];
    get.or_use public_balance[r3] 0u64 into r7;
    add r7 r4 into r8;
    set r8 into public_balance[r3];

function transfer_private:
    input r0 as aml_1713438024.aleo/AML.record;
    input r1 as address.private;
    input r2 as Token.record;
    input r3 as address.private;
    assert.eq self.signer r0.account;
    call aml_1713438024.aleo/verify_aml r0 into r4 r5;
    call logs_1713438024.aleo/log_transfer r1 self.signer r3 r2.amount true true into r6 r7;
    cast r3 r2.amount into r8 as Token.record;
    async transfer_private r5 r7 into r9;
    output r4 as aml_1713438024.aleo/AML.record;
    output r6 as logs_1713438024.aleo/Transfer.record;
    output r8 as Token.record;
    output r9 as stablecoin_1713438024.aleo/transfer_private.future;
finalize transfer_private:
    input r0 as aml_1713438024.aleo/verify_aml.future;
    input r1 as logs_1713438024.aleo/log_transfer.future;
    await r0;
    await r1;

function transfer_private_to_public:
    input r0 as aml_1713438024.aleo/AML.record;
    input r1 as address.private;
    input r2 as Token.record;
    input r3 as address.public;
    assert.eq self.signer r0.account;
    call aml_1713438024.aleo/verify_aml r0 into r4 r5;
    call logs_1713438024.aleo/log_transfer r1 self.signer r3 r2.amount true false into r6 r7;
    async transfer_private_to_public r5 r7 r3 r2.amount into r8;
    output r4 as aml_1713438024.aleo/AML.record;
    output r6 as logs_1713438024.aleo/Transfer.record;
    output r8 as stablecoin_1713438024.aleo/transfer_private_to_public.future;
finalize transfer_private_to_public:
    input r0 as aml_1713438024.aleo/verify_aml.future;
    input r1 as logs_1713438024.aleo/log_transfer.future;
    input r2 as address.public;
    input r3 as u64.public;
    await r0;
    await r1;
    get.or_use public_balance[r2] 0u64 into r4;
    add r4 r3 into r5;
    set r5 into public_balance[r2];

function transfer_public_to_private:
    input r0 as aml_1713438024.aleo/AML.record;
    input r1 as address.private;
    input r2 as address.private;
    input r3 as u64.public;
    assert.eq self.signer r0.account;
    call aml_1713438024.aleo/verify_aml r0 into r4 r5;
    call logs_1713438024.aleo/log_transfer r1 self.signer r2 r3 false true into r6 r7;
    cast r2 r3 into r8 as Token.record;
    async transfer_public_to_private r5 r7 self.signer r3 into r9;
    output r4 as aml_1713438024.aleo/AML.record;
    output r6 as logs_1713438024.aleo/Transfer.record;
    output r8 as Token.record;
    output r9 as stablecoin_1713438024.aleo/transfer_public_to_private.future;
finalize transfer_public_to_private:
    input r0 as aml_1713438024.aleo/verify_aml.future;
    input r1 as logs_1713438024.aleo/log_transfer.future;
    input r2 as address.public;
    input r3 as u64.public;
    await r0;
    await r1;
    get.or_use public_balance[r2] 0u64 into r4;
    sub r4 r3 into r5;
    set r5 into public_balance[r2];

Block heightTimestampTransition IDFunction callState
2,206,0602024-04-26 13:58:30au1ylfegj39m676qejx36nd4etwjlvzr947qkcalvuz2rqzec598ggs2gffuutransfer_public_to_privateAccepted
2,205,7902024-04-26 13:31:53au1axda7ukp8nlskerqh30ydqtyh7nx5dqavlrezszwvydn5h7hlcpqfya7zutransfer_public_to_privateAccepted
2,205,4162024-04-26 12:54:51au1fkuuln7x8tf4vyrn6uk4lh73846y5zvg9x8fcap5zw2u9g0et5zqc3xyp8transfer_public_to_privateAccepted
2,204,6302024-04-26 11:37:01au1umf9gncll8f7dzl98yp5r7wp36d64fegkrey0f7e38fm0uqpgyyqeq70unmint_publicAccepted
2,204,3642024-04-26 11:11:59au1zjmdumvvnkel2quq2jputxc4lff4y4srhczjyjcqj6k75vpllvgssvagc3mint_publicAccepted
2,190,7152024-04-25 13:39:01au1nwapkc0qpc39n23w9cgqqz8kkqzfmdvrgv7aw763wvpt7w6tduysmupk8zmint_publicRejected
2,190,2902024-04-25 12:56:55au1m0n2g9app9vy0679ke26htkhk5gqjmssez52tz9wpqcy35cevcrsag9h3ymint_publicAccepted
2,187,9582024-04-25 09:09:03au1as6uquepszx0lt22x0zu6rh8ka2lw7edrnc6pdujkj0lzm3ees8szf9dv6mint_publicRejected


Not implemented