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

Program dev_truecoin_token_v008.aleo

Program ID
dev_truecoin_token_v008.aleo
Owner signature
sign1m63rkm24u7wxsquf7ezdjkth66czvgycwej66aunmuk7favfhuqzh3pfkguy63hx0gydx5zlalh9qmawwvjggmuu33zhl95gqhlhupzcrlhg2a4wrvs2c7ueftcx44yf7f508jg9vx0ds03ys2wkhs70qrkkkv9kavt83kpj7mjkmzgnxxkmju28an98m76cjlna06w25cxqx5lgsql
Times called
155
Similar programs
0
Imports
-
Mappings
public_balance (address -> u64)
aml_blocklist (address -> boolean)
aml_version (boolean -> u32)
Structs
UpdateAMLBlocklist
Records
Token
KYC
AML
Functions
-
Transitions
authorize_mint(address, u64) -> () finalize(address, u64)
issue_kyc(address, u32) -> KYC
redeem_public(KYC, u32, u64) -> KYC finalize(address, u64, u32)
redeem_private(KYC, u32, u64, Token) -> (KYC, Token)
transfer_public(public address, public u64) -> () finalize(address, address, u64)
transfer_private(Token, address, u64) -> (Token, Token)
transfer_private_to_public(Token, public address, public u64) -> Token finalize(address, u64)
transfer_public_to_private(address, public u64) -> Token finalize(address, u64)
join(Token, Token) -> Token
update_aml_blocklist(UpdateAMLBlocklist) -> () finalize(UpdateAMLBlocklist)
issue_aml(u32) -> AML finalize(address)
verify_aml(AML) -> AML finalize(u32)
verify_kyc(KYC, u32) -> KYC finalize(u32)
Program Source Code (Aleo Instruction) Upload Leo source

program dev_truecoin_token_v008.aleo;

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

record KYC:
    owner as address.private;
    expiry_block_height as u32.private;

record AML:
    owner as address.private;
    version as u32.private;

struct UpdateAMLBlocklist:
    account as address;
    blocked as boolean;

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

mapping aml_blocklist:
    key as address.public;
    value as boolean.public;

mapping aml_version:
    key as boolean.public;
    value as u32.public;

function authorize_mint:
    input r0 as address.private;
    input r1 as u64.private;
    async authorize_mint r0 r1 into r2;
    output r2 as dev_truecoin_token_v008.aleo/authorize_mint.future;
finalize authorize_mint:
    input r0 as address.public;
    input r1 as u64.public;
    get.or_use public_balance[r0] 0u64 into r2;
    add r2 r1 into r3;
    set r3 into public_balance[r0];

function issue_kyc:
    input r0 as address.private;
    input r1 as u32.private;
    cast r0 r1 into r2 as KYC.record;
    output r2 as KYC.record;

function redeem_public:
    input r0 as KYC.record;
    input r1 as u32.private;
    input r2 as u64.private;
    lte r1 r0.expiry_block_height into r3;
    assert.eq r3 true;
    cast r0.owner r0.expiry_block_height into r4 as KYC.record;
    async redeem_public r0.owner r2 r1 into r5;
    output r4 as KYC.record;
    output r5 as dev_truecoin_token_v008.aleo/redeem_public.future;
finalize redeem_public:
    input r0 as address.public;
    input r1 as u64.public;
    input r2 as u32.public;
    lt block.height r2 into r3;
    assert.eq r3 true;
    get.or_use public_balance[r0] 0u64 into r4;
    sub r4 r1 into r5;
    set r5 into public_balance[r0];

function redeem_private:
    input r0 as KYC.record;
    input r1 as u32.private;
    input r2 as u64.private;
    input r3 as Token.record;
    lte r1 r0.expiry_block_height into r4;
    assert.eq r4 true;
    cast r0.owner r0.expiry_block_height into r5 as KYC.record;
    sub r3.amount r2 into r6;
    cast r3.owner r6 into r7 as Token.record;
    output r5 as KYC.record;
    output r7 as Token.record;

function transfer_public:
    input r0 as address.public;
    input r1 as u64.public;
    async transfer_public self.caller r0 r1 into r2;
    output r2 as dev_truecoin_token_v008.aleo/transfer_public.future;
finalize transfer_public:
    input r0 as address.public;
    input r1 as address.public;
    input r2 as u64.public;
    get.or_use public_balance[r0] 0u64 into r3;
    sub r3 r2 into r4;
    set r4 into public_balance[r0];
    get.or_use public_balance[r1] 0u64 into r5;
    add r5 r2 into r6;
    set r6 into public_balance[r1];

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

function transfer_private_to_public:
    input r0 as Token.record;
    input r1 as address.public;
    input r2 as u64.public;
    sub r0.amount r2 into r3;
    cast r0.owner r3 into r4 as Token.record;
    async transfer_private_to_public r1 r2 into r5;
    output r4 as Token.record;
    output r5 as dev_truecoin_token_v008.aleo/transfer_private_to_public.future;
finalize transfer_private_to_public:
    input r0 as address.public;
    input r1 as u64.public;
    get.or_use public_balance[r0] 0u64 into r2;
    add r2 r1 into r3;
    set r3 into public_balance[r0];

function transfer_public_to_private:
    input r0 as address.private;
    input r1 as u64.public;
    cast r0 r1 into r2 as Token.record;
    async transfer_public_to_private self.caller r1 into r3;
    output r2 as Token.record;
    output r3 as dev_truecoin_token_v008.aleo/transfer_public_to_private.future;
finalize transfer_public_to_private:
    input r0 as address.public;
    input r1 as u64.public;
    get.or_use public_balance[r0] 0u64 into r2;
    sub r2 r1 into r3;
    set r3 into public_balance[r0];

function join:
    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 update_aml_blocklist:
    input r0 as UpdateAMLBlocklist.private;
    async update_aml_blocklist r0 into r1;
    output r1 as dev_truecoin_token_v008.aleo/update_aml_blocklist.future;
finalize update_aml_blocklist:
    input r0 as UpdateAMLBlocklist.public;
    set r0.blocked into aml_blocklist[r0.account];
    get.or_use aml_version[true] 0u32 into r1;
    add r1 1u32 into r2;
    set r2 into aml_version[true];

function issue_aml:
    input r0 as u32.private;
    cast self.caller r0 into r1 as AML.record;
    async issue_aml self.caller into r2;
    output r1 as AML.record;
    output r2 as dev_truecoin_token_v008.aleo/issue_aml.future;
finalize issue_aml:
    input r0 as address.public;
    get.or_use aml_blocklist[r0] false into r1;
    not r1 into r2;
    assert.eq r2 true;

function verify_aml:
    input r0 as AML.record;
    cast r0.owner r0.version into r1 as AML.record;
    async verify_aml r0.version into r2;
    output r1 as AML.record;
    output r2 as dev_truecoin_token_v008.aleo/verify_aml.future;
finalize verify_aml:
    input r0 as u32.public;
    get aml_version[true] into r1;
    assert.eq r0 r1;

function verify_kyc:
    input r0 as KYC.record;
    input r1 as u32.private;
    lte r1 r0.expiry_block_height into r2;
    assert.eq r2 true;
    cast r0.owner r0.expiry_block_height into r3 as KYC.record;
    async verify_kyc r1 into r4;
    output r3 as KYC.record;
    output r4 as dev_truecoin_token_v008.aleo/verify_kyc.future;
finalize verify_kyc:
    input r0 as u32.public;
    lt block.height r0 into r1;
    assert.eq r1 true;

Block heightTimestampTransition IDFunction callState
2,177,5732024-04-24 17:23:51au1cculty4rl2yqgg6k0kh9fzmrskn0jr28w8vyjknvjknk9sj4kqxqm6deustransfer_privateAccepted
2,159,3392024-04-23 11:57:20au1qdvtdmc9j247mqjs8txssanygu00rckr9umeutxpemkqeg298uyqe27ekfissue_kycAccepted
2,159,2832024-04-23 11:51:41au103ma6kawzzyz4awhzslffp4xyqhuna0rsaur7f825cmqumgy8grqxfl9pnissue_kycAccepted
2,159,0142024-04-23 11:25:58au1pwstrjetl7085vr8qmleuc0ys4ldw6xuxa9lkh9lvg0yaekuyc9suev5z4transfer_public_to_privateAccepted
2,159,0022024-04-23 11:24:51au1yfk5kmkrth7aq0w9zhgcypdultxggs0x7urtgtaj4z3n0zglcvzs0vs9hktransfer_private_to_publicAccepted
2,143,3132024-04-22 10:53:40au1my092ju94zmwwwv5y4fvwgvsqknahnqhc70jtg0644qztfdgyygqde4ywdtransfer_public_to_privateAccepted
2,141,5732024-04-22 08:11:11au15njr2e532g4y6cz5v7vmvqn8hexzgzqhl6fce83a46tps4vy4vysu2w8ueissue_amlAccepted
2,098,2502024-04-19 12:10:59au1hhdx042gg6kxp2w0apduwpr0hf34m48mwfksv5fr0p8rdpnmdc9qnaaasctransfer_public_to_privateAccepted
2,098,0992024-04-19 11:57:38au1pgrughq3l00p6ua0967l8wt3lhp4wsevss887tt0tedd78wuvq9sr9pwmctransfer_private_to_publicAccepted
2,096,5572024-04-19 09:45:19au16c77c7k78axdn2xd3d6sj2s0usm9pzge5hn52rpw0m4qyfhhauqq2qv7mhissue_amlAccepted
2,096,2372024-04-19 09:18:46au1xzu42hnc0pf2zhcztfxxtaq06kzn7zlqwqvgctg9rz7sxztk8cxs34jlxvissue_kycAccepted
2,081,7682024-04-18 10:54:34au1gu7kvvc0ecpnezaeqrq3un34t9fywug0a5aw0sezd62wr8cunsxq5yw7qutransfer_public_to_privateAccepted
2,064,5912024-04-17 08:25:31au1kffqa25suqwg7gpf3kf9xcw4md87z6xu3qgfgdw047asac46cspqph9x63issue_kycAccepted
2,050,2812024-04-16 10:10:33au136a4g4tektusv63728t50eqgh54zf89yd5cpzwt8grs99jfs5ursx7p502issue_kycAccepted
2,049,8142024-04-16 09:25:33au1ayase69spt8s4c4xkqwlj5uqdp5tz3qf28esg2lf0p7kr9chhvrqepf4v4issue_kycAccepted
2,049,3402024-04-16 08:41:41au1musgmj7deqleln5kekcflqtnheec7k5s0g45j700h85hwa8psugs4zensuissue_kycAccepted
2,049,2152024-04-16 08:29:58au1jpe0uzm78ey53hmyp2v8hdeatgdm7nddjlksxz69xvzx8xvlwcgqynnkk2issue_kycAccepted
2,048,7912024-04-16 07:49:34au1svhmexk0cs5kznyqtdzxnc6pkg9lgdlyg4932qmcp2rpwek59szs48n7cpissue_amlAccepted
2,035,8652024-04-15 11:18:04au1rt8zgv9fhvt2htz3fadrdqrqjk846cg2akm5rxukhfpu7xat5cgq6vptg0issue_kycAccepted
2,035,8292024-04-15 11:14:45au1y46zky57en09tyxlgkgxns66633rc3d244vaz8wyejtjruaa4ugq7764gnissue_amlAccepted
2,035,4482024-04-15 10:37:22au1cu2yt8msqwfnk9npakmtkrh25syw5x0uzu44tgfwxn5xyaw23ugqcq4d8cissue_amlAccepted
2,035,2612024-04-15 10:20:03au1s5a8kp5jnngff09l45df5uv3ua8r9tn0d2kjl7rkz2mr8qc00gfqra8n8sissue_amlAccepted
2,035,1242024-04-15 10:07:43au1uwq6k3f9qer3un9phhfxuzm4sjmu9a6swpd0nsluarj5mvhurgysv4fc3dredeem_privateAccepted
2,035,0342024-04-15 09:59:33au1ug0dsn6aywjugy76ysgm4glg8yr2cqkm3hc4zfp6jlm0zzvfvurqlmdwh8redeem_privateAccepted
2,034,9592024-04-15 09:52:23au1w5fp8la3250e0pgv8gcduj2xfdjd6kkhypt66rsrpcxtaq7zfczqd52xxnissue_kycAccepted
1,991,8572024-04-12 13:34:47au1tahag8cz3ql40x4agrf8uvzn67k0ck5qpu0ghhpm43awt5damygqgh3snfissue_amlAccepted
1,991,7252024-04-12 13:22:46au1jpqz93hwrlyw445vz4uj9kwn4y35jk0rvwvsnchp39ahxkwufqxs2fwpqsupdate_aml_blocklistAccepted
1,991,4972024-04-12 13:00:56au14y6vuvw2x0jg03pxdn2v8phczgjjy900pgu7cjrfc0t63mfanvrqan5um4issue_amlAccepted
1,991,4642024-04-12 12:57:28au17tacta4k7kd3aj6nag6ft0u7c7ytvkgt4pzvvtrnm30q536x3qqqzezlwgupdate_aml_blocklistAccepted
1,991,4232024-04-12 12:53:31au1m6mkleqdzavgzkxptkw9jq9uhqrply6uzlkq9xxh0vdvclpm6gyqulf9rhissue_amlAccepted






Not implemented