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

Program izar_token.aleo

Program ID
izar_token.aleo
Owner signature
sign1gp6vt6keaxs35swmjqdhnmknhfsctjcsnaepwlvgavfl4pp995p7vaela0yp4dhnw6pgypsjtx8t2qn2hwkrxxk4cx0gwyyz66s8gqpalq8fmygkm7gcleapqprf70yvfe5w3c3tywwz4a6n6h80hfexppte9hmr2emlpm0fx5srhx87vjut8s6tj3ay7ecftqfskamp022s70ujk7g
Times called
73202
Similar programs
0
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.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.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.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.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.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.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.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.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.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.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.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.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
2,206,5272024-04-26 14:44:24au1xvwaul6w9v9rlq9720wgslp0s4zt66leu9pmehskqqv3chyayy8q09h9cwverify_tokenAccepted
2,206,5272024-04-26 14:44:24au14dxvv0hhgh87x0ugesx305c5tujrusulx2pmudh0nthj9953rupsctx0qwmint_publicAccepted
2,206,5172024-04-26 14:43:22au1m5dynuxp8a7hdyjzpgp55vulnjpdd0hk59pccc2lj3r67uz7hsrqwrvw69verify_tokenAccepted
2,206,5172024-04-26 14:43:22au1sdv0k5t7qzrqf57c7d7uum8mwr7dvq6dhekczpdy2decsra25sxqyymmqhmint_publicAccepted
2,206,5082024-04-26 14:42:22au1qpwzs0j5rms2zlx8cxufwwuq8qqvzanq86lkzgt6y25njyqlp59qjeetezverify_tokenAccepted
2,206,5082024-04-26 14:42:22au1q9lu3fl76qynfuv5s9wjq5efes6hzyw992atjzgenppa2rrxjgfq8caceamint_publicAccepted
2,206,4972024-04-26 14:41:23au18wyh328mnq0vvummvn3wejw63n8y2a03z3540pd4r3zdm4ta55gqepfg34verify_tokenAccepted
2,206,4972024-04-26 14:41:23au1wgxpxrnl6euplm5tdadkwq9g0qxelndl6h8rlgllx3q4sec3dgxsrjdn59mint_publicAccepted
2,206,4882024-04-26 14:40:25au1fy9chyrqlrhz93xpkxzlqlqjfh8spcwvd4qce5kjxfm3tsrlnqpq20hvr7verify_tokenAccepted
2,206,4882024-04-26 14:40:25au1fwyn6t7dmq36sgmahtq5f5dh635ulckx3msens35apslhjekzs9s3lu878mint_publicAccepted
2,206,4752024-04-26 14:39:21au1pr69p8ctkg64y9ycut95eyud4zw098adw6lxkugdvm4aua5cqugqyp6nwgverify_tokenAccepted
2,206,4752024-04-26 14:39:21au1zu3qakv2tlhr5hsht7jh3f7eldfcmhhkwqwnz3tnhujhyyhspyqsmqpuccmint_publicAccepted
2,206,4652024-04-26 14:38:21au1m3s55js47u4j45z4azkzn8cq2z6xmmnmsv5ypqr098p9w5rsjqzqer2uxfverify_tokenAccepted
2,206,4652024-04-26 14:38:21au1wzud4xcys07shve4vyxfzxhx3mcn5wh8axsn88ctdhl55gfnevpqswm9vemint_publicAccepted
2,206,4542024-04-26 14:37:20au1g5vavryr789w30qhn395ldnl6pk0npc7ank26k6uxmevj8eepv9qnxamcdverify_tokenAccepted
2,206,4542024-04-26 14:37:20au1n7q00jzke5wu0wh4p9aquw7vauumgfqry206mmgjgcuw9w0k3urqwj04u4mint_publicAccepted
2,206,4442024-04-26 14:36:27au14rl8tmwrqgtn6885xehlhepq5034fjmqswxmpq2x9nfq6amehs9sa5pquxverify_tokenAccepted
2,206,4442024-04-26 14:36:27au1f9slrataevk4dpj5sh38ep5ld9vvs8gkd7q7vnfh4c38kx9u65rskftyfhmint_publicAccepted
2,206,4342024-04-26 14:35:31au103ulqlctd5u4p396ua7zr9xr2xpvqdfdn2al8keuyppqkcna75rsfn6rqrverify_tokenAccepted
2,206,4342024-04-26 14:35:31au130lpn4zdsu549znyzmnpk2gsf7rf56z0cdx8dmgq0hdjlrcjxqfqacu8evmint_publicAccepted
2,206,4232024-04-26 14:34:33au1nkju63udn635q7fjza73ex3rj00vwtv6wcgk3xtrkvph6x4nyszqalz3h6verify_tokenAccepted
2,206,4232024-04-26 14:34:33au1vmvrcgg4yaedkqdnefyjnn5hl34ucqup8ah7nkwj9y763a5cng8qet03wamint_publicAccepted
2,206,4142024-04-26 14:33:35au1aqj3kmpa7qy3mskvg2855xnl7gug8spzyuer5y77ujux430gs5zqzrt5chverify_tokenAccepted
2,206,4142024-04-26 14:33:35au1ml8tpl3tpdxyss5jacaclx9jaujde06z6pvre5n8ahvn0wqg6c9qnqh7lemint_publicAccepted
2,206,4032024-04-26 14:32:36au1kch69qqlsh3cejm7239zd7rqshz52wjfpd6r98jzg0vdtpw22ypsg43s2cverify_tokenAccepted
2,206,4032024-04-26 14:32:36au1znq2v6s43wjtre8w60usarspya7ekgx79sqf8nm0y8hfa5sfgu8syv3d5dmint_publicAccepted
2,206,3942024-04-26 14:31:36au1z5m2uv5gay63k6jmesflnketkvv3wx2at37a269t2n5wknxnzq8qm2shdgverify_tokenAccepted
2,206,3942024-04-26 14:31:36au1y0e37zydzwfxd0zcf9ed8urp4apqttfmk8jnzwczlvdmqf3thgzq9h7y50mint_publicAccepted
2,206,3842024-04-26 14:30:35au1cyuvvwrhdq5488sdjxeylhnc44v2h90u4aqprq8glufux7qe4qzq2k6qkqverify_tokenAccepted
2,206,3842024-04-26 14:30:35au1czhesph7mjtkf89ceg38lan45s9jgdmcf08zy29h9yvemsfwacqq40r662mint_publicAccepted








Not implemented