The explorer is out of sync. The last synced block is 499 hours ago. Current block height: explorer: 2206528 / node: 2525355 / ref: 2492275

Program aleopad_tokens_v0_1.aleo

Program ID
aleopad_tokens_v0_1.aleo
Owner signature
sign1gpsw7ck339jcal2xg5k79vurcnzjxg5m2weymd4nwhm23zvf8yp4sr37saw6es34s97pc2xytkswx2v5hs5dn4uyygj6nx7fr2ukjq7yxcf7aqrez3mj55d5gksktdjatp3sj4prnnnjq58j83uv3y7rq7rz0qel7jaw0wdhxj34tgnfh9252ky7z5q32y3lm5u6vkf053sqw4y2c5y
Times called
7
Similar programs
0
Mappings
balances (field -> u128)
allowance (field -> u128)
tokens (field -> TokenInfo)
token_launches (field -> boolean)
launches (field -> boolean)
launch_tokens (field -> field)
Structs
TokenInfo
BalanceKeyData
AllowanceKeyData
TokenLaunchKeyData
Records
PrivateToken
AleopadTokenAdministration
Functions
-
Transitions
create_token(public field, public field, public field, public u8, address) -> AleopadTokenAdministration finalize(field, field, field, u8, address)
create_token_with_launch(public field, public field, public field, public u8, public field, address) -> AleopadTokenAdministration finalize(field, field, field, field, u8, address)
transfer_public(public field, public address, public u128) -> () finalize(field, address, address, u128)
approve(public field, public address, public u128) -> () finalize(field, address, address, u128)
transfer_from(public field, public address, public address, public u128) -> () finalize(address, field, address, address, u128)
transfer_public_to_private(public field, address, public u128) -> PrivateToken finalize(field, address, u128)
transfer_private_to_public(PrivateToken, public address, public u128) -> PrivateToken finalize(field, address, u128)
transfer_private(PrivateToken, address, u128) -> (PrivateToken, PrivateToken)
join(PrivateToken, PrivateToken) -> PrivateToken
enable_launch(AleopadTokenAdministration, field) -> AleopadTokenAdministration finalize(field, field)
claim_private(field, aleopad_core_v0_1.aleo/LaunchTicket) -> PrivateToken finalize(field, field)
claim_public(field, field, u128) -> () finalize(field, field, address, u128)
Program Source Code (Aleo Instruction) Upload Leo source

import aleopad_core_v0_1.aleo;

program aleopad_tokens_v0_1.aleo;

record PrivateToken:
    owner as address.private;
    token as field.private;
    amount as u128.private;

record AleopadTokenAdministration:
    owner as address.private;
    token as field.private;

struct TokenInfo:
    name as field;
    symbol as field;
    decimals as u8;

struct BalanceKeyData:
    token as field;
    user as address;

struct AllowanceKeyData:
    token as field;
    payer as address;
    spender as address;

struct TokenLaunchKeyData:
    token as field;
    launch as field;

mapping balances:
    key as field.public;
    value as u128.public;

mapping allowance:
    key as field.public;
    value as u128.public;

mapping tokens:
    key as field.public;
    value as TokenInfo.public;

mapping token_launches:
    key as field.public;
    value as boolean.public;

mapping launches:
    key as field.public;
    value as boolean.public;

mapping launch_tokens:
    key as field.public;
    value as field.public;

function create_token:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as field.public;
    input r3 as u8.public;
    input r4 as address.private;
    gt r1 0field into r5;
    assert.eq r5 true;
    cast r4 r0 into r6 as AleopadTokenAdministration.record;
    async create_token r0 r1 r2 r3 self.caller into r7;
    output r6 as AleopadTokenAdministration.record;
    output r7 as aleopad_tokens_v0_1.aleo/create_token.future;
finalize create_token:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as field.public;
    input r3 as u8.public;
    input r4 as address.public;
    contains tokens[r0] into r5;
    not r5 into r6;
    assert.eq r6 true;
    cast r1 r2 r3 into r7 as TokenInfo;
    set r7 into tokens[r0];

function create_token_with_launch:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as field.public;
    input r3 as u8.public;
    input r4 as field.public;
    input r5 as address.private;
    gt r1 0field into r6;
    assert.eq r6 true;
    cast r5 r0 into r7 as AleopadTokenAdministration.record;
    async create_token_with_launch r0 r4 r1 r2 r3 self.caller into r8;
    output r7 as AleopadTokenAdministration.record;
    output r8 as aleopad_tokens_v0_1.aleo/create_token_with_launch.future;
finalize create_token_with_launch:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as field.public;
    input r3 as field.public;
    input r4 as u8.public;
    input r5 as address.public;
    contains tokens[r0] into r6;
    not r6 into r7;
    assert.eq r7 true;
    cast r2 r3 r4 into r8 as TokenInfo;
    set r8 into tokens[r0];
    contains launches[r1] into r9;
    not r9 into r10;
    assert.eq r10 true;
    cast r0 r1 into r11 as TokenLaunchKeyData;
    hash.bhp256 r11 into r12 as field;
    set true into token_launches[r12];
    set true into launches[r1];
    set r0 into launch_tokens[r1];

function transfer_public:
    input r0 as field.public;
    input r1 as address.public;
    input r2 as u128.public;
    async transfer_public r0 self.caller r1 r2 into r3;
    output r3 as aleopad_tokens_v0_1.aleo/transfer_public.future;
finalize transfer_public:
    input r0 as field.public;
    input r1 as address.public;
    input r2 as address.public;
    input r3 as u128.public;
    contains tokens[r0] into r4;
    assert.eq r4 true;
    cast r0 r1 into r5 as BalanceKeyData;
    hash.bhp256 r5 into r6 as field;
    get balances[r6] into r7;
    sub r7 r3 into r8;
    set r8 into balances[r6];
    cast r0 r2 into r9 as BalanceKeyData;
    hash.bhp256 r9 into r10 as field;
    get.or_use balances[r10] 0u128 into r11;
    add r11 r3 into r12;
    set r12 into balances[r10];

function approve:
    input r0 as field.public;
    input r1 as address.public;
    input r2 as u128.public;
    async approve r0 self.caller r1 r2 into r3;
    output r3 as aleopad_tokens_v0_1.aleo/approve.future;
finalize approve:
    input r0 as field.public;
    input r1 as address.public;
    input r2 as address.public;
    input r3 as u128.public;
    contains tokens[r0] into r4;
    assert.eq r4 true;
    cast r0 r1 r2 into r5 as AllowanceKeyData;
    hash.bhp256 r5 into r6 as field;
    set r3 into allowance[r6];

function transfer_from:
    input r0 as field.public;
    input r1 as address.public;
    input r2 as address.public;
    input r3 as u128.public;
    async transfer_from self.caller r0 r1 r2 r3 into r4;
    output r4 as aleopad_tokens_v0_1.aleo/transfer_from.future;
finalize transfer_from:
    input r0 as address.public;
    input r1 as field.public;
    input r2 as address.public;
    input r3 as address.public;
    input r4 as u128.public;
    contains tokens[r1] into r5;
    assert.eq r5 true;
    cast r1 r2 r0 into r6 as AllowanceKeyData;
    hash.bhp256 r6 into r7 as field;
    get allowance[r7] into r8;
    sub r8 r4 into r9;
    set r9 into allowance[r7];
    cast r1 r2 into r10 as BalanceKeyData;
    hash.bhp256 r10 into r11 as field;
    get balances[r11] into r12;
    sub r12 r4 into r13;
    set r13 into balances[r11];
    cast r1 r3 into r14 as BalanceKeyData;
    hash.bhp256 r14 into r15 as field;
    get.or_use balances[r15] 0u128 into r16;
    add r16 r4 into r17;
    set r17 into balances[r15];

function transfer_public_to_private:
    input r0 as field.public;
    input r1 as address.private;
    input r2 as u128.public;
    cast r1 r0 r2 into r3 as PrivateToken.record;
    hash.bhp256 r3 into r4 as field;
    async transfer_public_to_private r0 self.caller r2 into r5;
    output r3 as PrivateToken.record;
    output r5 as aleopad_tokens_v0_1.aleo/transfer_public_to_private.future;
finalize transfer_public_to_private:
    input r0 as field.public;
    input r1 as address.public;
    input r2 as u128.public;
    contains tokens[r0] into r3;
    assert.eq r3 true;
    cast r0 r1 into r4 as BalanceKeyData;
    hash.bhp256 r4 into r5 as field;
    get balances[r5] into r6;
    sub r6 r2 into r7;
    set r7 into balances[r5];

function transfer_private_to_public:
    input r0 as PrivateToken.record;
    input r1 as address.public;
    input r2 as u128.public;
    sub r0.amount r2 into r3;
    cast r0.owner r0.token r3 into r4 as PrivateToken.record;
    async transfer_private_to_public r0.token r1 r2 into r5;
    output r4 as PrivateToken.record;
    output r5 as aleopad_tokens_v0_1.aleo/transfer_private_to_public.future;
finalize transfer_private_to_public:
    input r0 as field.public;
    input r1 as address.public;
    input r2 as u128.public;
    contains tokens[r0] into r3;
    assert.eq r3 true;
    cast r0 r1 into r4 as BalanceKeyData;
    hash.bhp256 r4 into r5 as field;
    get.or_use balances[r5] 0u128 into r6;
    add r6 r2 into r7;
    set r7 into balances[r5];

function transfer_private:
    input r0 as PrivateToken.record;
    input r1 as address.private;
    input r2 as u128.private;
    cast r1 r0.token r2 into r3 as PrivateToken.record;
    sub r0.amount r2 into r4;
    cast r0.owner r0.token r4 into r5 as PrivateToken.record;
    output r3 as PrivateToken.record;
    output r5 as PrivateToken.record;

function join:
    input r0 as PrivateToken.record;
    input r1 as PrivateToken.record;
    assert.eq r0.token r1.token;
    add r0.amount r1.amount into r2;
    cast r0.owner r0.token r2 into r3 as PrivateToken.record;
    output r3 as PrivateToken.record;

function enable_launch:
    input r0 as AleopadTokenAdministration.record;
    input r1 as field.private;
    async enable_launch r0.token r1 into r2;
    output r0 as AleopadTokenAdministration.record;
    output r2 as aleopad_tokens_v0_1.aleo/enable_launch.future;
finalize enable_launch:
    input r0 as field.public;
    input r1 as field.public;
    contains launches[r1] into r2;
    not r2 into r3;
    assert.eq r3 true;
    contains tokens[r0] into r4;
    assert.eq r4 true;
    cast r0 r1 into r5 as TokenLaunchKeyData;
    hash.bhp256 r5 into r6 as field;
    set true into token_launches[r6];
    set true into launches[r1];
    set r0 into launch_tokens[r1];

function claim_private:
    input r0 as field.private;
    input r1 as aleopad_core_v0_1.aleo/LaunchTicket.record;
    cast r1.owner r0 r1.amount into r2 as PrivateToken.record;
    call aleopad_core_v0_1.aleo/validate_private_claim r1 into r3;
    async claim_private r0 r1.launch_id r3 into r4;
    output r2 as PrivateToken.record;
    output r4 as aleopad_tokens_v0_1.aleo/claim_private.future;
finalize claim_private:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as aleopad_core_v0_1.aleo/validate_private_claim.future;
    await r2;
    cast r0 r1 into r3 as TokenLaunchKeyData;
    hash.bhp256 r3 into r4 as field;
    get token_launches[r4] into r5;
    assert.eq r5 true;

function claim_public:
    input r0 as field.private;
    input r1 as field.private;
    input r2 as u128.private;
    call aleopad_core_v0_1.aleo/validate_public_claim r1 r2 into r3;
    async claim_public r0 r1 self.caller r2 r3 into r4;
    output r4 as aleopad_tokens_v0_1.aleo/claim_public.future;
finalize claim_public:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as address.public;
    input r3 as u128.public;
    input r4 as aleopad_core_v0_1.aleo/validate_public_claim.future;
    await r4;
    cast r0 r1 into r5 as TokenLaunchKeyData;
    hash.bhp256 r5 into r6 as field;
    get token_launches[r6] into r7;
    assert.eq r7 true;
    cast r0 r2 into r8 as BalanceKeyData;
    hash.bhp256 r8 into r9 as field;
    get.or_use balances[r9] 0u128 into r10;
    add r10 r3 into r11;
    set r11 into balances[r9];

Block heightTimestampTransition IDFunction callState
205,5142023-11-03 09:20:59au16kfgqa5qjs6pt0ac3f0gx54v8u8pql4z47dyj0eup7h90hcjnqxs907d26create_token_with_launchAccepted
205,1512023-11-03 08:52:26au1k962nzqkxxv85xxdj4m9ngkzj2yr05mw9gxp5j6yf536p7tm0vrsfvknl6create_token_with_launchAccepted
205,0192023-11-03 08:41:45au1h63lpsfqhmd5yh5s2ma2txal70x556j779gu84sdc39ak4996gystmn0v2create_token_with_launchRejected
167,9122023-11-01 05:59:00au1ex5f9f7knlklj0ncxgtcqz4ww579uz59y7nl4gp30rhgnstjzc9sf6zkf4create_token_with_launchRejected
152,1842023-10-31 08:35:48au18fy7atp60eznu4578xlxs8m2n3ltcsarhp32cjhxnjrzwjs4tv9ql3tdkhcreate_token_with_launchAccepted
152,0222023-10-31 08:22:56au1a6mg3lvgfax7ary38eu5ge435muvs76mhg47h2ds7zs5al8r2cpsxnkr8xcreate_token_with_launchRejected
135,2032023-10-30 10:02:07au19dg4k3v9q0fts9zq4wtzdt0umdwknr7gftv0lksfne62ug4hscqsf9t8emcreate_token_with_launchAccepted












Not implemented