in_sync

Program izar_token_v0.aleo

Program ID
izar_token_v0.aleo
Owner signature
sign18s2wxyjgfw6fxpglh29hznuzre95wdls22t96ay5aehtdv442cpx595cx9rl9t70eqxz92zn9k9hp6kwdk7fs3u426rldwkxfsmywp86ga6zl947jlq8alq05erfde9a8ml5wldfnpranq9fe0wwnrfrpneyxsu92acwj2nzflc8gy5l820uyft7z9nu6uydssqunp5dkksq23l27e4
Times called
5602
Similar programs
Imports
-
Mappings
accounts (Account -> u128)
token_meta (field -> IzarTokenMeta)
contract_owner (boolean -> address)
initialed (boolean -> boolean)
Structs
Account
IzarTokenMeta
Records
IzarToken
Functions
-
Transitions
initial(address) -> () finalize(address)
transfer_ownership(address) -> () finalize(address, address)
regist_token(IzarTokenMeta) -> () finalize(IzarTokenMeta, address)
verify_token(field, u32, field) -> () finalize(field, u32, field)
mint_public(public address, public u128, public field) -> () finalize(Account, u128, address)
mint_private(address, u128, field) -> IzarToken finalize(address, field)
burn_public(public address, public u128, public field) -> () finalize(Account, u128, address)
burn_private(address, IzarToken, u128) -> IzarToken finalize(address, field)
transfer_public(public address, public u128, public field) -> () finalize(Account, Account, u128)
transfer_private(IzarToken, address, u128) -> (IzarToken, IzarToken)
transfer_private_to_public(IzarToken, public address, public u128) -> IzarToken finalize(Account, u128)
transfer_public_to_private(public address, public u128, public field) -> IzarToken finalize(Account, u128)
Program Source Code (Aleo Instruction) Upload Leo source

program izar_token_v0.aleo;

struct Account:
    holder as address;
    token_id as field;

struct IzarTokenMeta:
    from_chain_id as u32;
    from_asset_addr as field;

record IzarToken:
    owner as address.private;
    amount as u128.private;
    token_id as field.private;

mapping accounts:
    key as Account.public;
    value as u128.public;

mapping token_meta:
    key as field.public;
    value as IzarTokenMeta.public;

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

mapping initialed:
    key as boolean.public;
    value as boolean.public;

function initial:
    input r0 as address.private;
    async initial r0 into r1;
    output r1 as izar_token_v0.aleo/initial.future;
finalize initial:
    input r0 as address.public;
    get.or_use initialed[true] false into r1;
    not r1 into r2;
    assert.eq r2 true;
    set r0 into contract_owner[true];
    set true into initialed[true];

function transfer_ownership:
    input r0 as address.private;
    async transfer_ownership self.caller r0 into r1;
    output r1 as izar_token_v0.aleo/transfer_ownership.future;
finalize transfer_ownership:
    input r0 as address.public;
    input r1 as address.public;
    get.or_use initialed[true] false into r2;
    assert.eq r2 true;
    get contract_owner[true] into r3;
    assert.eq r3 r0;
    set r1 into contract_owner[true];

function regist_token:
    input r0 as IzarTokenMeta.private;
    async regist_token r0 self.caller into r1;
    output r1 as izar_token_v0.aleo/regist_token.future;
finalize regist_token:
    input r0 as IzarTokenMeta.public;
    input r1 as address.public;
    get.or_use initialed[true] false into r2;
    assert.eq r2 true;
    get contract_owner[true] into r3;
    assert.eq r3 r1;
    hash.bhp256 r0 into r4 as field;
    contains token_meta[r4] into r5;
    not r5 into r6;
    assert.eq r6 true;
    set r0 into token_meta[r4];

function verify_token:
    input r0 as field.private;
    input r1 as u32.private;
    input r2 as field.private;
    async verify_token r0 r1 r2 into r3;
    output r3 as izar_token_v0.aleo/verify_token.future;
finalize verify_token:
    input r0 as field.public;
    input r1 as u32.public;
    input r2 as field.public;
    get token_meta[r0] into r3;
    assert.eq r3.from_chain_id r1;
    assert.eq r3.from_asset_addr r2;

function mint_public:
    input r0 as address.public;
    input r1 as u128.public;
    input r2 as field.public;
    cast r0 r2 into r3 as Account;
    async mint_public r3 r1 self.caller into r4;
    output r4 as izar_token_v0.aleo/mint_public.future;
finalize mint_public:
    input r0 as Account.public;
    input r1 as u128.public;
    input r2 as address.public;
    get contract_owner[true] into r3;
    assert.eq r3 r2;
    contains token_meta[r0.token_id] into r4;
    assert.eq r4 true;
    get.or_use accounts[r0] 0u128 into r5;
    add r5 r1 into r6;
    set r6 into accounts[r0];

function mint_private:
    input r0 as address.private;
    input r1 as u128.private;
    input r2 as field.private;
    cast r0 r1 r2 into r3 as IzarToken.record;
    async mint_private self.caller r2 into r4;
    output r3 as IzarToken.record;
    output r4 as izar_token_v0.aleo/mint_private.future;
finalize mint_private:
    input r0 as address.public;
    input r1 as field.public;
    get contract_owner[true] into r2;
    assert.eq r2 r0;
    contains token_meta[r1] into r3;
    assert.eq r3 true;

function burn_public:
    input r0 as address.public;
    input r1 as u128.public;
    input r2 as field.public;
    cast r0 r2 into r3 as Account;
    async burn_public r3 r1 self.caller into r4;
    output r4 as izar_token_v0.aleo/burn_public.future;
finalize burn_public:
    input r0 as Account.public;
    input r1 as u128.public;
    input r2 as address.public;
    get contract_owner[true] into r3;
    assert.eq r3 r2;
    contains token_meta[r0.token_id] into r4;
    assert.eq r4 true;
    get.or_use accounts[r0] 0u128 into r5;
    sub r5 r1 into r6;
    set r6 into accounts[r0];

function burn_private:
    input r0 as address.private;
    input r1 as IzarToken.record;
    input r2 as u128.private;
    sub r1.amount r2 into r3;
    cast r1.owner r3 r1.token_id into r4 as IzarToken.record;
    async burn_private self.caller r1.token_id into r5;
    output r4 as IzarToken.record;
    output r5 as izar_token_v0.aleo/burn_private.future;
finalize burn_private:
    input r0 as address.public;
    input r1 as field.public;
    get contract_owner[true] into r2;
    assert.eq r2 r0;
    contains token_meta[r1] into r3;
    assert.eq r3 true;

function transfer_public:
    input r0 as address.public;
    input r1 as u128.public;
    input r2 as field.public;
    cast self.caller r2 into r3 as Account;
    cast r0 r2 into r4 as Account;
    async transfer_public r3 r4 r1 into r5;
    output r5 as izar_token_v0.aleo/transfer_public.future;
finalize transfer_public:
    input r0 as Account.public;
    input r1 as Account.public;
    input r2 as u128.public;
    contains token_meta[r1.token_id] into r3;
    assert.eq r3 true;
    get.or_use accounts[r0] 0u128 into r4;
    sub r4 r2 into r5;
    set r5 into accounts[r0];
    get.or_use accounts[r1] 0u128 into r6;
    add r6 r2 into r7;
    set r7 into accounts[r1];

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

function transfer_private_to_public:
    input r0 as IzarToken.record;
    input r1 as address.public;
    input r2 as u128.public;
    sub r0.amount r2 into r3;
    cast r0.owner r3 r0.token_id into r4 as IzarToken.record;
    cast r1 r0.token_id into r5 as Account;
    async transfer_private_to_public r5 r2 into r6;
    output r4 as IzarToken.record;
    output r6 as izar_token_v0.aleo/transfer_private_to_public.future;
finalize transfer_private_to_public:
    input r0 as Account.public;
    input r1 as u128.public;
    get.or_use accounts[r0] 0u128 into r2;
    add r2 r1 into r3;
    set r3 into accounts[r0];

function transfer_public_to_private:
    input r0 as address.public;
    input r1 as u128.public;
    input r2 as field.public;
    cast r0 r1 r2 into r3 as IzarToken.record;
    cast self.caller r2 into r4 as Account;
    async transfer_public_to_private r4 r1 into r5;
    output r3 as IzarToken.record;
    output r5 as izar_token_v0.aleo/transfer_public_to_private.future;
finalize transfer_public_to_private:
    input r0 as Account.public;
    input r1 as u128.public;
    contains token_meta[r0.token_id] into r2;
    assert.eq r2 true;
    get.or_use accounts[r0] 0u128 into r3;
    sub r3 r1 into r4;
    set r4 into accounts[r0];

Block heightTimestampTransition IDFunction callState
692,6692024-06-23 19:09:36au10hy9yzu24jgpwmfxsjhmsfeaxf2ketyp9xptp6723pl56mzqtspsv8d2g9verify_tokenAccepted
692,6692024-06-23 19:09:36au1vv4468rc4euakkhym0c8my6z8tnllkm0tqau8k5fxw7m77hpxsfqlnwfemburn_publicAccepted
692,6692024-06-23 19:09:36au14pu889x6zw9wpqy03803ja9cyw62ah362cdpehmf599un24vavpqfaxsv3mint_publicAccepted
692,6692024-06-23 19:09:36au1fqf2t6yxjdytq9pp6lq5ne34t6w0st2wyapx0nlzgxphjhpe3szq9874chverify_tokenAccepted
692,6692024-06-23 19:09:36au1lmdq5vw2faw0r8nftxjfnwd8sgtta9duayjhy65d6njnzvjr7ygqhezdpqburn_publicAccepted
692,6692024-06-23 19:09:36au1xs4md6jhrsf6kq5lyuyf7vgxs46uvq4ls873kedt5t2c6n2xkq9qg3llkymint_publicAccepted
692,6672024-06-23 19:09:26au1gg4rm3ek9r5hlrzthpqty25z6hqazhetk0fg6w55gvlc09kfpsrsd3ccnqverify_tokenAccepted
692,6672024-06-23 19:09:26au1mlcpc99vr3h7vj2kse3ys0qt88rlp4hmdk2lve2w40akphzzg5gq7px0asburn_publicAccepted
692,6672024-06-23 19:09:26au1nhmj2np7k4k5phslt0c9ag6pg99fm4795ugtheaxet0k0tk6f5xsuvnrllmint_publicAccepted
692,6662024-06-23 19:09:21au1edwc5tmky9yx56etmxfkkpf4knply476xyev8snldmzfnkstwqyqxg7hc6verify_tokenAccepted
692,6662024-06-23 19:09:21au1gjstjan6f8mxnr8kxjpmuprmqemyqcdea3kfvz32zzcjz8fcvqyqn5efkfburn_publicAccepted
692,6662024-06-23 19:09:21au1k4ehqa8smhl7j4ju74t208h6wlrszs6xumc9cv2ukmhqvsd2jqgscv0eexmint_publicAccepted
692,6642024-06-23 19:09:14au1rfadrwm5fp07hd0mewtwrwv7j5rf9wqujuqefahfsrmk792ljsgqzg5jthverify_tokenAccepted
692,6642024-06-23 19:09:14au15e90fv2kry4v0mu0u564x8glv5ett8t98re30mw63hv3jfks4ygqfr0pveburn_publicAccepted
692,6642024-06-23 19:09:14au120t6kzmpr6hgzkw9vf35n3l5hfcdnu7xmcw7qxu2c6y4yz3e25qsmsu6cjmint_publicAccepted
688,6822024-06-23 15:41:20au1gceykr3ta3q4dup7vzppmlgvkqxwrt5nnkxeyfkfyxp984jqzqrsh8kkj7verify_tokenRejected
688,6822024-06-23 15:41:20au1we87505e7hullx6nsl3vu3rxvr9kl28gxjqcrmac5jdmud6jrqpqyq30ptburn_publicRejected
688,6822024-06-23 15:41:20au19gxejv6qm24j8c68mfyyewa5acrhanlkayaysy76k0zy8hcaxgxqxhapwnmint_publicRejected
688,6742024-06-23 15:40:50au1fn40khf2pat732e0upvke2tepdfkxl7h4zqrmhl69q9zrdn3lcyqt5z458verify_tokenAccepted
688,6742024-06-23 15:40:50au19qh06a2h9slhf2lqk8j6h49093xsnhpnnkvcdxy0vdpnpyt3rursf59v3qburn_publicAccepted
688,6742024-06-23 15:40:50au1n3rrucmp6vwj0fmfunmd7y8l5jz2ueefs32t4a8hejst226aa58s2akq6nmint_publicAccepted
685,8332024-06-23 13:10:11au13h4mvlnf0ssqn4n83pca2kfnaygcjshhus30yx37ukxlyrm04gqsvn5f8vverify_tokenAccepted
685,8332024-06-23 13:10:11au13p2dnjs5vavvfpza0l62cg7e4qeevhywduk4s2c6y78ket5enqxq7gm82qburn_publicAccepted
685,8332024-06-23 13:10:11au1wts9mrzwl044cvvdpfmzax6e6e9wxykqrwj0vaufyn3wep7dwqgq9wvfcmmint_publicAccepted
682,1512024-06-23 09:52:36au1unctpd6dqffp0wfzxxds0m0th9gug98xqxxtvaul94ec9g003yqsvswwcsverify_tokenAccepted
682,1512024-06-23 09:52:36au1wax7ktm7vhsd669nhwwvcsevs2m38jfmgr35gffm6qf7wmz0nsqshnpmh0burn_publicAccepted
682,1512024-06-23 09:52:36au1lqslur50z5asfupq7gmk0z400rpapcy5hwzjynzh56smxd9e3g9sastpctmint_publicAccepted
682,1472024-06-23 09:52:24au18k2vzx60x8wpxktn4qcecrge6w59qfaektcn4m0tcph0srf77s9sasuk4dverify_tokenAccepted
682,1472024-06-23 09:52:24au1ydrgkyhf3t5ldaheal7w2t2s5cwmwyrqpvyzxpl8vunhcs06vcrql4sr3pburn_publicAccepted
682,1472024-06-23 09:52:24au1tp2hcxfrzm64nnfrz7ttqelgxcx3yr2lf9f7lfs7h8gff5r0xgrqvk3rmhmint_publicAccepted








Not implemented