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

Program artgo_aigc_v1_6.aleo

Program ID
artgo_aigc_v1_6.aleo
Owner signature
sign1ehx6se7vrt2rm830g7jtps00x5njhmkfec34vf5w9lyyfdgej5p0v3ppy64ftdra5duug7uwa4cr4m0q2mekrndgymtflrf79ec42qnn6na3s7pg9gcfhm3lm3s5ehx3mzvdlzz6j2zva06jtv0dpjt5pxkvy24sfyrxt67kxquvccw5td8n0gqfmcen43j6sfx6rf37hqjsuxu2acv
Times called
73
Similar programs
Imports
Mappings
nfts (u128 -> NftInfo)
next_nft_id (boolean -> u128)
orders (u128 -> Order)
bids (u128 -> Bid)
settings (boolean -> Setting)
Structs
NftHash
NftInfo
Order
Bid
Setting
Records
BidRecord
Nft
Functions
-
Transitions
init(public address, public address, public u64) -> () finalize(address, address, u64)
mint_nft([u128; 3u32], public [u128; 3u32], public u128) -> Nft finalize(address, field, [u128; 3u32])
transfer_private_nft(u128, Nft, address) -> Nft finalize(u128, field, [u128; 3u32], address)
place_order(public u128, Nft, public u8, public u64, public u32, public address) -> Nft finalize(address, u128, field, [u128; 3u32], address, u8, u64, u32)
update_order(public u128, public u64) -> () finalize(address, u128, u64)
cancel_order(credits.aleo/credits, public u64, public u128, public address) -> (credits.aleo/credits, BidRecord) finalize(address, u128, u64, address)
handle_cancel_order(public u128, Nft, public address) -> Nft finalize(u128, field, [u128; 3u32], address, address)
bid_order(credits.aleo/credits, public u128, public u64, public address) -> (BidRecord, credits.aleo/credits) finalize(address, u128, u64, address)
finish_order(public u128, Nft, public address, public u64, public address, public u64) -> Nft finalize(u128, address, field, [u128; 3u32], address, u64, u64, address)
set_admin(public address) -> () finalize(address, address)
set_operator(public address) -> () finalize(address, address)
set_fee(public u64) -> () finalize(address, u64)
withdraw_fee(public u64, public address) -> () finalize(address)
Program Source Code (Aleo Instruction) Upload Leo source

import credits.aleo;

program artgo_aigc_v1_6.aleo;

struct NftHash:
    minter as address;
    prompt as [u128; 3u32];
    nonce as u128;

struct NftInfo:
    holder as address;
    minter as address;
    hash as field;
    uri as [u128; 3u32];

struct Order:
    holder as address;
    nft_id as u128;
    order_type as u8;
    amount as u64;
    status as u8;
    deadline as u32;

struct Bid:
    bidder as address;
    nft_id as u128;
    amount as u64;

record BidRecord:
    owner as address.private;
    bid_type as u8.private;
    bidder as address.private;
    nft_id as u128.private;
    amount as u64.private;

record Nft:
    owner as address.private;
    minter as address.private;
    prompt as [u128; 3u32].private;
    nonce as u128.private;
    uri as [u128; 3u32].private;

struct Setting:
    admin as address;
    operator as address;
    fee as u64;

mapping nfts:
    key as u128.public;
    value as NftInfo.public;

mapping next_nft_id:
    key as boolean.public;
    value as u128.public;

mapping orders:
    key as u128.public;
    value as Order.public;

mapping bids:
    key as u128.public;
    value as Bid.public;

mapping settings:
    key as boolean.public;
    value as Setting.public;

function init:
    input r0 as address.public;
    input r1 as address.public;
    input r2 as u64.public;
    assert.eq self.caller aleo1rh4whtqef93v2et8j9lujxr67l64fz9ctgn035lwqmp9h6wdf5psa4uu88;
    async init r0 r1 r2 into r3;
    output r3 as artgo_aigc_v1_6.aleo/init.future;
finalize init:
    input r0 as address.public;
    input r1 as address.public;
    input r2 as u64.public;
    contains settings[true] into r3;
    assert.eq r3 false;
    cast r0 r1 r2 into r4 as Setting;
    set r4 into settings[true];
    set 1u128 into next_nft_id[true];

function mint_nft:
    input r0 as [u128; 3u32].private;
    input r1 as [u128; 3u32].public;
    input r2 as u128.public;
    cast self.caller r0 r2 into r3 as NftHash;
    hash.bhp256 r3 into r4 as field;
    cast self.caller self.caller r0 r2 r1 into r5 as Nft.record;
    async mint_nft self.caller r4 r1 into r6;
    output r5 as Nft.record;
    output r6 as artgo_aigc_v1_6.aleo/mint_nft.future;
finalize mint_nft:
    input r0 as address.public;
    input r1 as field.public;
    input r2 as [u128; 3u32].public;
    get next_nft_id[true] into r3;
    add r3 1u128 into r4;
    set r4 into next_nft_id[true];
    cast r0 r0 r1 r2 into r5 as NftInfo;
    set r5 into nfts[r3];

function transfer_private_nft:
    input r0 as u128.private;
    input r1 as Nft.record;
    input r2 as address.private;
    cast r1.minter r1.prompt r1.nonce into r3 as NftHash;
    hash.bhp256 r3 into r4 as field;
    cast r2 r1.minter r1.prompt r1.nonce r1.uri into r5 as Nft.record;
    async transfer_private_nft r0 r4 r1.uri r2 into r6;
    output r5 as Nft.record;
    output r6 as artgo_aigc_v1_6.aleo/transfer_private_nft.future;
finalize transfer_private_nft:
    input r0 as u128.public;
    input r1 as field.public;
    input r2 as [u128; 3u32].public;
    input r3 as address.public;
    get nfts[r0] into r4;
    assert.eq r4.hash r1;
    assert.eq r4.uri r2;
    cast r3 r4.minter r4.hash r4.uri into r5 as NftInfo;
    set r5 into nfts[r0];

function place_order:
    input r0 as u128.public;
    input r1 as Nft.record;
    input r2 as u8.public;
    input r3 as u64.public;
    input r4 as u32.public;
    input r5 as address.public;
    assert.eq r2 1u8;
    cast r1.minter r1.prompt r1.nonce into r6 as NftHash;
    hash.bhp256 r6 into r7 as field;
    cast r5 r1.minter r1.prompt r1.nonce r1.uri into r8 as Nft.record;
    async place_order r5 r0 r7 r1.uri self.caller r2 r3 r4 into r9;
    output r8 as Nft.record;
    output r9 as artgo_aigc_v1_6.aleo/place_order.future;
finalize place_order:
    input r0 as address.public;
    input r1 as u128.public;
    input r2 as field.public;
    input r3 as [u128; 3u32].public;
    input r4 as address.public;
    input r5 as u8.public;
    input r6 as u64.public;
    input r7 as u32.public;
    gt r7 block.height into r8;
    assert.eq r8 true;
    get settings[true] into r9;
    assert.eq r0 r9.operator;
    gte r6 r9.fee into r10;
    assert.eq r10 true;
    get nfts[r1] into r11;
    assert.eq r11.hash r2;
    assert.eq r11.uri r3;
    contains orders[r1] into r12;
    assert.eq r12 false;
    cast r4 r1 r5 r6 1u8 r7 into r13 as Order;
    set r13 into orders[r1];

function update_order:
    input r0 as u128.public;
    input r1 as u64.public;
    async update_order self.caller r0 r1 into r2;
    output r2 as artgo_aigc_v1_6.aleo/update_order.future;
finalize update_order:
    input r0 as address.public;
    input r1 as u128.public;
    input r2 as u64.public;
    get settings[true] into r3;
    gte r2 r3.fee into r4;
    assert.eq r4 true;
    get orders[r1] into r5;
    assert.eq r5.status 1u8;
    assert.eq r0 r5.holder;
    cast r5.holder r5.nft_id r5.order_type r2 r5.status r5.deadline into r6 as Order;
    set r6 into orders[r1];

function cancel_order:
    input r0 as credits.aleo/credits.record;
    input r1 as u64.public;
    input r2 as u128.public;
    input r3 as address.public;
    cast r3 2u8 self.caller r2 0u64 into r4 as BidRecord.record;
    call credits.aleo/transfer_private_to_public r0 aleo17lpfjzs23ny7q8n0wl0fzvkcwfx9m3arhxdrjc5xvw35dqx8mqpsllzxdh r1 into r5 r6;
    async cancel_order r6 self.caller r2 r1 r3 into r7;
    output r5 as credits.aleo/credits.record;
    output r4 as BidRecord.record;
    output r7 as artgo_aigc_v1_6.aleo/cancel_order.future;
finalize cancel_order:
    input r0 as credits.aleo/transfer_private_to_public.future;
    input r1 as address.public;
    input r2 as u128.public;
    input r3 as u64.public;
    input r4 as address.public;
    await r0;
    get settings[true] into r5;
    assert.eq r3 r5.fee;
    assert.eq r4 r5.operator;
    get orders[r2] into r6;
    assert.eq r6.status 1u8;
    assert.eq r1 r6.holder;
    cast r6.holder r6.nft_id r6.order_type r6.amount 2u8 r6.deadline into r7 as Order;
    set r7 into orders[r2];

function handle_cancel_order:
    input r0 as u128.public;
    input r1 as Nft.record;
    input r2 as address.public;
    cast r2 r1.minter r1.prompt r1.nonce r1.uri into r3 as Nft.record;
    cast r1.minter r1.prompt r1.nonce into r4 as NftHash;
    hash.bhp256 r4 into r5 as field;
    async handle_cancel_order r0 r5 r1.uri r2 self.caller into r6;
    output r3 as Nft.record;
    output r6 as artgo_aigc_v1_6.aleo/handle_cancel_order.future;
finalize handle_cancel_order:
    input r0 as u128.public;
    input r1 as field.public;
    input r2 as [u128; 3u32].public;
    input r3 as address.public;
    input r4 as address.public;
    get settings[true] into r5;
    assert.eq r4 r5.operator;
    get nfts[r0] into r6;
    assert.eq r6.hash r1;
    assert.eq r6.uri r2;
    get orders[r0] into r7;
    assert.eq r7.status 2u8;
    assert.eq r3 r7.holder;
    remove bids[r0];
    remove orders[r0];

function bid_order:
    input r0 as credits.aleo/credits.record;
    input r1 as u128.public;
    input r2 as u64.public;
    input r3 as address.public;
    cast r3 1u8 self.caller r1 r2 into r4 as BidRecord.record;
    call credits.aleo/transfer_private_to_public r0 aleo17lpfjzs23ny7q8n0wl0fzvkcwfx9m3arhxdrjc5xvw35dqx8mqpsllzxdh r2 into r5 r6;
    async bid_order r6 self.caller r1 r2 r3 into r7;
    output r4 as BidRecord.record;
    output r5 as credits.aleo/credits.record;
    output r7 as artgo_aigc_v1_6.aleo/bid_order.future;
finalize bid_order:
    input r0 as credits.aleo/transfer_private_to_public.future;
    input r1 as address.public;
    input r2 as u128.public;
    input r3 as u64.public;
    input r4 as address.public;
    await r0;
    get settings[true] into r5;
    assert.eq r4 r5.operator;
    cast r1 r2 r3 into r6 as Bid;
    set r6 into bids[r2];
    get orders[r2] into r7;
    assert.eq r7.status 1u8;
    gte r3 r7.amount into r8;
    assert.eq r8 true;
    lt block.height r7.deadline into r9;
    assert.eq r9 true;
    cast r7.holder r7.nft_id r7.order_type r7.amount 3u8 r7.deadline into r10 as Order;
    set r10 into orders[r2];

function finish_order:
    input r0 as u128.public;
    input r1 as Nft.record;
    input r2 as address.public;
    input r3 as u64.public;
    input r4 as address.public;
    input r5 as u64.public;
    sub r5 r3 into r6;
    call credits.aleo/transfer_public r2 r6 into r7;
    cast r1.minter r1.prompt r1.nonce into r8 as NftHash;
    hash.bhp256 r8 into r9 as field;
    cast r4 r1.minter r1.prompt r1.nonce r1.uri into r10 as Nft.record;
    async finish_order r7 r0 r2 r9 r1.uri r4 r5 r3 self.caller into r11;
    output r10 as Nft.record;
    output r11 as artgo_aigc_v1_6.aleo/finish_order.future;
finalize finish_order:
    input r0 as credits.aleo/transfer_public.future;
    input r1 as u128.public;
    input r2 as address.public;
    input r3 as field.public;
    input r4 as [u128; 3u32].public;
    input r5 as address.public;
    input r6 as u64.public;
    input r7 as u64.public;
    input r8 as address.public;
    await r0;
    get settings[true] into r9;
    assert.eq r8 r9.operator;
    assert.eq r7 r9.fee;
    get orders[r1] into r10;
    assert.eq r10.status 3u8;
    get nfts[r1] into r11;
    assert.eq r11.hash r3;
    assert.eq r11.uri r4;
    assert.eq r11.holder r2;
    get bids[r1] into r12;
    assert.eq r12.bidder r5;
    assert.eq r12.amount r6;
    cast r5 r11.minter r11.hash r11.uri into r13 as NftInfo;
    set r13 into nfts[r1];
    remove bids[r1];
    remove orders[r1];

function set_admin:
    input r0 as address.public;
    async set_admin self.caller r0 into r1;
    output r1 as artgo_aigc_v1_6.aleo/set_admin.future;
finalize set_admin:
    input r0 as address.public;
    input r1 as address.public;
    get settings[true] into r2;
    assert.eq r0 r2.admin;
    cast r1 r2.operator r2.fee into r3 as Setting;
    set r3 into settings[true];

function set_operator:
    input r0 as address.public;
    async set_operator self.caller r0 into r1;
    output r1 as artgo_aigc_v1_6.aleo/set_operator.future;
finalize set_operator:
    input r0 as address.public;
    input r1 as address.public;
    get settings[true] into r2;
    assert.eq r0 r2.admin;
    cast r2.admin r1 r2.fee into r3 as Setting;
    set r3 into settings[true];

function set_fee:
    input r0 as u64.public;
    async set_fee self.caller r0 into r1;
    output r1 as artgo_aigc_v1_6.aleo/set_fee.future;
finalize set_fee:
    input r0 as address.public;
    input r1 as u64.public;
    get settings[true] into r2;
    assert.eq r0 r2.admin;
    cast r2.admin r2.operator r1 into r3 as Setting;
    set r3 into settings[true];

function withdraw_fee:
    input r0 as u64.public;
    input r1 as address.public;
    call credits.aleo/transfer_public r1 r0 into r2;
    async withdraw_fee r2 self.caller into r3;
    output r3 as artgo_aigc_v1_6.aleo/withdraw_fee.future;
finalize withdraw_fee:
    input r0 as credits.aleo/transfer_public.future;
    input r1 as address.public;
    await r0;
    get settings[true] into r2;
    assert.eq r1 r2.admin;

Block heightTimestampTransition IDFunction callState
2,046,0942024-04-16 03:32:52au1pdluk0twxavgxgnps0k0q97axjw527ge7r9tavnz38vtuzjazqys7j66r5place_orderAccepted
2,046,0642024-04-16 03:30:02au16v7a7xruas9yd8y3fkrjvuz7sywplyvlsjhpj570deur3xsdwvxqypan9vplace_orderAccepted
2,045,8952024-04-16 03:13:28au1a0m75vr2rxf3tt9ymnyky99s7huc6wp8f2crmuxhzxyetwcd0cxssvym7lfinish_orderAccepted
2,045,8852024-04-16 03:12:25au14f969tyxwwadpca6y2vspsrxq4eu7gffhukw5g3k6s28dvgksuqsntceh6bid_orderAccepted
2,045,3672024-04-16 02:23:59au1svwajlgazqalxhxe6n3ur8www2t89vx3s3a546999unkctklxvgs0a8acfmint_nftAccepted
2,045,2012024-04-16 02:09:04au1vz2dnhp6ghlfs0hawhcla6hkpzmmkgrhuzemsr6k4sc795lyqgzsh2w8k7place_orderAccepted
2,045,1722024-04-16 02:06:15au1279cu6wu0l9he4200xty7j7fr604yrkkyk28dmykvfy9r9vj6gxq2rc9faplace_orderAccepted
2,033,9642024-04-15 08:17:46au1de8jcu3xxxqx8q2e5at9ajr24q7jdswva9rz52qmfxcx9l9ylc8s682xhefinish_orderAccepted
2,033,9482024-04-15 08:16:22au1fejkftt92qlcw07xs6k45h9k43ztcxm2v0f7jlurkt8cjfmzcgrs5fmwq5bid_orderAccepted
2,033,9162024-04-15 08:13:18au1anx8ueyutk4dgfpllsj9x9zaj3l07azeafgpnt34cqtwxx3c5cpskt43gxmint_nftAccepted
2,033,0462024-04-15 06:50:53au105df2k3022za6rhcjzfzjagp8v0rgsd64ja2ut7n4dkk06kq7yqslzu7ahmint_nftAccepted
1,987,9212024-04-12 07:21:30au1wu9t7vk8yq4c4erfqlgstcl90dwqspq7dm2777jlgsfmpuk9jygsl97saymint_nftAccepted
1,956,9282024-04-10 06:28:59au1grxt5xndtl896ajjscm3skpjczj77egaqs0ggxjk83ywyvv4yq8qh3xg3nmint_nftAccepted
1,954,3772024-04-10 02:24:52au1j60dlmsa03mf63uxpcsklep2k727uxxl44khtnup3mu2jfqwk5ysjfw95utransfer_private_nftAccepted
1,943,3232024-04-09 08:52:35au1hrcvnyuu0r6l0zru39l6znngld73m6a8z4f0taqd3mgd9k5n3y9s8348vchandle_cancel_orderAccepted
1,943,3162024-04-09 08:51:36au1pmsss2zrr4phrytpnfmr5r69m0fnyez20uu2p3mp80h0dzn60u8sksxf6lcancel_orderAccepted
1,943,2482024-04-09 08:44:57au1f8gm4kte9j9h74mw9kadcasghngn6njhgmvvgpytl6pmu7679g8s7x7k84place_orderAccepted
1,943,1802024-04-09 08:38:24au1qxmaru5w5hh2ygx386cwa4kgwqmsnffhs2y5pp4ln4wp502xygfq0u4vtuhandle_cancel_orderAccepted
1,943,1712024-04-09 08:37:38au10xmf642dsty03ankxrj4p8psrmfcwpz3j9er3r2e7ppacu4qhcpqnh37h8cancel_orderAccepted
1,943,0642024-04-09 08:28:11au1ap4544e2k6wwphwhjppj2qnnxhpw67vuym7myqzclep5y8c93sgsdejdmpplace_orderAccepted
1,943,0032024-04-09 08:22:29au1a85smq8rs0a04jk465t35z9hhk4lpcdm99x6qhn29hpmg0779cxqvjsf8umint_nftAccepted
1,942,9612024-04-09 08:18:14au1qmztrvgqt09puuc8gdrc63h8yntrw6thx2cve8tz4krp5vfweqgsanppwefinish_orderAccepted
1,942,9492024-04-09 08:17:07au1xpp38xs08kma5dyz68mt5z8clhkfdxkgj7v7z8j4y0thhs40vvpst4550tbid_orderAccepted
1,942,8602024-04-09 08:08:31au1xltjdajsftm0zdmk0pq094hlgyj8m60whh8uf2v2wwvk8u0tggrsesgp59update_orderAccepted
1,942,8232024-04-09 08:04:54au1m82n8jxgqpz5u93jqlucue3yuj9u5fn5gr7cd9fwzhwyjdkd3vrq8n5rxwplace_orderAccepted
1,942,8142024-04-09 08:03:57au1xv7g30tqadrzrpxg2mpgtnevvarchaljw5vcq68l3vjmlfmyxv9quhp0ccplace_orderAccepted
1,942,7452024-04-09 07:57:06au1myduh0zlgv6f8xqmlelnh48maslv3r89s2xltr7xy4225mzp85ps4ke9slmint_nftAccepted
1,942,6892024-04-09 07:52:01au1epep4xs5jkhxe0h0enacke29k5lugny0t838v62qdzyd3vdd3cfqnyzx5emint_nftAccepted
1,942,5722024-04-09 07:41:30au1hgg9qtkx3tal9rmh8mht88pc8wjcdu8j4qdzlldchwx5z7ggmvqslhj6rgfinish_orderAccepted
1,942,5592024-04-09 07:40:29au1t0hsw3sztu924fnp33094s7darr5a3puz4xpqewdc3d4ejnmlspqmvftsgbid_orderAccepted










Not implemented