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

Program artgo_aigc_v1_4.aleo

Program ID
artgo_aigc_v1_4.aleo
Owner signature
sign1krhqr2vlm673y7vq8t0cd4g8lsg0puya56d0zxalegflca4mdspd8hyamt4ljktj3scu3vdmvskgcs44zhkflt96fl3hh7jv7fqmjqyu234xcnwf9qgz3hesec6smj60a5eykmk2xh6xdx5683uqz34dqntw2cmrwvn4f4y6350h6uvcf8twjjltwlrxf78rsk5lkfqymdasgdyesej
Times called
701
Similar programs
0
Imports
Mappings
nfts (field -> NftInfo)
tokenId (boolean -> field)
admin (boolean -> address)
fees (boolean -> u64)
orders (field -> Order)
bids (field -> Bid)
Structs
Field2
NftHash
NftInfo
Order
Bid
Records
BidRecord
Nft
Functions
-
Transitions
mint_nft(Field2, public Field2, public field) -> Nft finalize(address, field, Field2)
transfer_private_nft(field, Nft, address) -> Nft finalize(field, field, Field2, address)
place_order(public field, Nft, public u8, public u64, public field, public address) -> Nft finalize(address, field, field, Field2, Order)
update_order(public field, public u64) -> () finalize(address, field, u64)
cancel_order(credits.aleo/credits, public u64, public field, public address) -> (credits.aleo/credits, BidRecord) finalize(address, field, u64, address)
handle_cancel_order(public field, Nft, public address) -> Nft finalize(field, field, Field2, address, address)
bid_order(credits.aleo/credits, public field, public u64, public address) -> (BidRecord, credits.aleo/credits) finalize(address, field, u64, address)
finish_order(public field, Nft, public address, public u64, public address, public u64, public address) -> Nft finalize(field, address, field, Field2, address, u64, u64, address)
set_admin(address) -> () finalize(address, address)
set_fee(u64) -> () finalize(address, u64)
Program Source Code (Aleo Instruction) Upload Leo source

import credits.aleo;

program artgo_aigc_v1_4.aleo;

struct Field2:
    first as field;
    second as field;

struct NftHash:
    minter as address;
    prompt as Field2;
    nonce as field;

struct NftInfo:
    holder as address;
    minter as address;
    hash as field;
    uri as Field2;

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

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

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

record Nft:
    owner as address.private;
    minter as address.private;
    prompt as Field2.private;
    nonce as field.private;
    uri as Field2.private;

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

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

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

mapping fees:
    key as boolean.public;
    value as u64.public;

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

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

function mint_nft:
    input r0 as Field2.private;
    input r1 as Field2.public;
    input r2 as field.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_4.aleo/mint_nft.future;
finalize mint_nft:
    input r0 as address.public;
    input r1 as field.public;
    input r2 as Field2.public;
    get.or_use tokenId[true] 1field into r3;
    add r3 1field into r4;
    set r4 into tokenId[true];
    cast r0 r0 r1 r2 into r5 as NftInfo;
    set r5 into nfts[r3];

function transfer_private_nft:
    input r0 as field.private;
    input r1 as Nft.record;
    input r2 as address.private;
    is.eq r1.owner self.caller into r3;
    assert.eq r3 true;
    cast r1.minter r1.prompt r1.nonce into r4 as NftHash;
    hash.bhp256 r4 into r5 as field;
    cast r2 r1.minter r1.prompt r1.nonce r1.uri into r6 as Nft.record;
    async transfer_private_nft r0 r5 r1.uri r2 into r7;
    output r6 as Nft.record;
    output r7 as artgo_aigc_v1_4.aleo/transfer_private_nft.future;
finalize transfer_private_nft:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as Field2.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 field.public;
    input r1 as Nft.record;
    input r2 as u8.public;
    input r3 as u64.public;
    input r4 as field.public;
    input r5 as address.public;
    is.eq r2 1u8 into r6;
    assert.eq r6 true;
    gt r3 0u64 into r7;
    lte r3 18446744073709551615u64 into r8;
    and r7 r8 into r9;
    assert.eq r9 true;
    cast r1.minter r1.prompt r1.nonce into r10 as NftHash;
    hash.bhp256 r10 into r11 as field;
    cast self.caller r0 r2 r3 1u8 0field into r12 as Order;
    cast r5 r1.minter r1.prompt r1.nonce r1.uri into r13 as Nft.record;
    async place_order r5 r0 r11 r1.uri r12 into r14;
    output r13 as Nft.record;
    output r14 as artgo_aigc_v1_4.aleo/place_order.future;
finalize place_order:
    input r0 as address.public;
    input r1 as field.public;
    input r2 as field.public;
    input r3 as Field2.public;
    input r4 as Order.public;
    contains admin[true] into r5;
    assert.eq r5 true;
    get admin[true] into r6;
    assert.eq r6 r0;
    get nfts[r1] into r7;
    assert.eq r7.hash r2;
    assert.eq r7.uri r3;
    contains fees[true] into r8;
    assert.eq r8 true;
    get fees[true] into r9;
    gte r4.amount r9 into r10;
    assert.eq r10 true;
    contains orders[r1] into r11;
    not r11 into r12;
    assert.eq r12 true;
    set r4 into orders[r1];

function update_order:
    input r0 as field.public;
    input r1 as u64.public;
    gt r1 0u64 into r2;
    lte r1 18446744073709551615u64 into r3;
    and r2 r3 into r4;
    assert.eq r4 true;
    async update_order self.caller r0 r1 into r5;
    output r5 as artgo_aigc_v1_4.aleo/update_order.future;
finalize update_order:
    input r0 as address.public;
    input r1 as field.public;
    input r2 as u64.public;
    get orders[r1] into r3;
    is.eq r3.status 1u8 into r4;
    assert.eq r4 true;
    is.eq r0 r3.holder into r5;
    assert.eq r5 true;
    contains fees[true] into r6;
    assert.eq r6 true;
    get fees[true] into r7;
    gte r2 r7 into r8;
    assert.eq r8 true;
    cast r3.holder r3.nft_id r3.order_type r2 r3.status r3.deadline into r9 as Order;
    set r9 into orders[r1];

function cancel_order:
    input r0 as credits.aleo/credits.record;
    input r1 as u64.public;
    input r2 as field.public;
    input r3 as address.public;
    lte r1 r0.microcredits into r4;
    assert.eq r4 true;
    cast r3 2u8 self.caller r2 0u64 into r5 as BidRecord.record;
    call credits.aleo/transfer_private_to_public r0 r3 r1 into r6 r7;
    async cancel_order r7 self.caller r2 r1 r3 into r8;
    output r6 as credits.aleo/credits.record;
    output r5 as BidRecord.record;
    output r8 as artgo_aigc_v1_4.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 field.public;
    input r3 as u64.public;
    input r4 as address.public;
    await r0;
    contains fees[true] into r5;
    assert.eq r5 true;
    get fees[true] into r6;
    assert.eq r6 r3;
    get orders[r2] into r7;
    is.eq r7.status 1u8 into r8;
    assert.eq r8 true;
    is.eq r1 r7.holder into r9;
    assert.eq r9 true;
    contains admin[true] into r10;
    assert.eq r10 true;
    get admin[true] into r11;
    assert.eq r11 r4;
    cast r7.holder r7.nft_id r7.order_type r7.amount 2u8 r7.deadline into r12 as Order;
    set r12 into orders[r2];

function handle_cancel_order:
    input r0 as field.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_4.aleo/handle_cancel_order.future;
finalize handle_cancel_order:
    input r0 as field.public;
    input r1 as field.public;
    input r2 as Field2.public;
    input r3 as address.public;
    input r4 as address.public;
    contains admin[true] into r5;
    assert.eq r5 true;
    get admin[true] into r6;
    assert.eq r6 r4;
    get nfts[r0] into r7;
    assert.eq r7.hash r1;
    assert.eq r7.uri r2;
    get orders[r0] into r8;
    is.eq r8.status 2u8 into r9;
    assert.eq r9 true;
    is.eq r3 r8.holder into r10;
    assert.eq r10 true;
    remove bids[r0];
    remove orders[r0];

function bid_order:
    input r0 as credits.aleo/credits.record;
    input r1 as field.public;
    input r2 as u64.public;
    input r3 as address.public;
    gt r2 0u64 into r4;
    lte r2 18446744073709551615u64 into r5;
    and r4 r5 into r6;
    assert.eq r6 true;
    cast r3 1u8 self.caller r1 r2 into r7 as BidRecord.record;
    call credits.aleo/transfer_private_to_public r0 r3 r2 into r8 r9;
    async bid_order r9 self.caller r1 r2 r3 into r10;
    output r7 as BidRecord.record;
    output r8 as credits.aleo/credits.record;
    output r10 as artgo_aigc_v1_4.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 field.public;
    input r3 as u64.public;
    input r4 as address.public;
    await r0;
    contains admin[true] into r5;
    assert.eq r5 true;
    get admin[true] into r6;
    assert.eq r6 r4;
    cast r1 r2 r3 into r7 as Bid;
    set r7 into bids[r2];
    contains orders[r2] into r8;
    assert.eq r8 true;
    get orders[r2] into r9;
    is.eq r9.status 1u8 into r10;
    assert.eq r10 true;
    gte r3 r9.amount into r11;
    assert.eq r11 true;
    cast r9.holder r9.nft_id r9.order_type r9.amount 3u8 0field into r12 as Order;
    set r12 into orders[r2];

function finish_order:
    input r0 as field.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;
    input r6 as address.public;
    gte r5 r3 into r7;
    lte r5 18446744073709551615u64 into r8;
    and r7 r8 into r9;
    assert.eq r9 true;
    assert.eq self.caller r6;
    sub r5 r3 into r10;
    call credits.aleo/transfer_public r2 r10 into r11;
    cast r1.minter r1.prompt r1.nonce into r12 as NftHash;
    hash.bhp256 r12 into r13 as field;
    cast r4 r1.minter r1.prompt r1.nonce r1.uri into r14 as Nft.record;
    async finish_order r11 r0 r2 r13 r1.uri r4 r5 r3 r6 into r15;
    output r14 as Nft.record;
    output r15 as artgo_aigc_v1_4.aleo/finish_order.future;
finalize finish_order:
    input r0 as credits.aleo/transfer_public.future;
    input r1 as field.public;
    input r2 as address.public;
    input r3 as field.public;
    input r4 as Field2.public;
    input r5 as address.public;
    input r6 as u64.public;
    input r7 as u64.public;
    input r8 as address.public;
    await r0;
    contains admin[true] into r9;
    assert.eq r9 true;
    get admin[true] into r10;
    assert.eq r10 r8;
    contains fees[true] into r11;
    assert.eq r11 true;
    get fees[true] into r12;
    assert.eq r12 r7;
    contains orders[r1] into r13;
    assert.eq r13 true;
    get orders[r1] into r14;
    assert.eq r14.status 3u8;
    get nfts[r1] into r15;
    assert.eq r15.hash r3;
    assert.eq r15.uri r4;
    assert.eq r15.holder r2;
    contains bids[r1] into r16;
    assert.eq r16 true;
    get bids[r1] into r17;
    assert.eq r17.bidder r5;
    is.eq r17.amount r6 into r18;
    assert.eq r18 true;
    cast r5 r15.minter r15.hash r15.uri into r19 as NftInfo;
    set r19 into nfts[r1];
    remove bids[r1];
    remove orders[r1];

function set_admin:
    input r0 as address.private;
    async set_admin self.caller r0 into r1;
    output r1 as artgo_aigc_v1_4.aleo/set_admin.future;
finalize set_admin:
    input r0 as address.public;
    input r1 as address.public;
    get.or_use admin[true] aleo12n3kz2wzrljvhp9zkn9zety54wz8mlmlakzzkrs6znaz028wjczqpe8x3j into r2;
    assert.eq r2 r0;
    set r1 into admin[true];

function set_fee:
    input r0 as u64.private;
    async set_fee self.caller r0 into r1;
    output r1 as artgo_aigc_v1_4.aleo/set_fee.future;
finalize set_fee:
    input r0 as address.public;
    input r1 as u64.public;
    get admin[true] into r2;
    assert.eq r0 r2;
    set r1 into fees[true];

Block heightTimestampTransition IDFunction callState
2,198,6462024-04-26 02:39:59au1jhmfpv9zcem6gzap69969n0phxhp56jua2hcmz428cp4rkj4ysfqstjgffmint_nftAccepted
2,198,4212024-04-26 02:19:51au1qdskh7wsvckx9q7vaz76n0c3sw7msf05zg9xmucx9lcg4wug8yysqn4sq3mint_nftAccepted
2,196,4192024-04-25 23:01:30au19xthqlghayvl9qsr6me6j2krzkeaztczqy2dkcycnkm82l86dyxspnmhv4mint_nftAccepted
2,192,9632024-04-25 17:13:00au1rzz7vpspn5eta2rgjudpxxv2z0g5kmu2dum4y87lpyjcs46m9vps3tpkjdmint_nftAccepted
2,190,6872024-04-25 13:36:45au1e5n49hl5vtv92dtspzkeekmqr0zdwm4zeau8w4s6gmz90zqx95psfc533smint_nftAccepted
2,188,7722024-04-25 10:24:23au1t2sqwwur3fkv3k22j2p8qv7m68xqcl4fa2pkluka2xpkzvuv4s8spe9y0nmint_nftAccepted
2,188,6852024-04-25 10:16:14au1pr57jdqx8l0jvuvns00rrthrk3cn9yrk42zk8tpjepg3qqwk8qxseme5tpmint_nftAccepted
2,186,8742024-04-25 07:32:39au1ejx26gk6fme5497e0l9ue9nfanjcazzm2htqhfxl0vk3tdsflqgq4n9sezmint_nftAccepted
2,184,3452024-04-25 03:43:54au1ch22f3784e4wyrqhxqxva24cse0akqy5kdmfd0y42z77qvh29cxsnuucj3mint_nftAccepted
2,183,7612024-04-25 02:44:57au1ezjr302584xtem73k87v62yrjkg3vq8rd2mf6dmq4n5jdj8w9vgsssyv2smint_nftAccepted
2,174,3682024-04-24 12:19:07au1s7hhwar300y8pzfaa7wjvp9xcsp6ccnxv2ygyctyd90f2e370yqqwgrtnxmint_nftAccepted
2,174,2542024-04-24 12:07:30au17n7xhy532cx857rxc3hvgf8zek05p0eslyhfnaq39guu56sp6v8sgze05zmint_nftAccepted
2,171,2162024-04-24 07:01:21au1nypskrq9hs7y76gvhc3anp4xkdpea7dyp7s6ps835luflxglggyssuq2tdmint_nftAccepted
2,169,2472024-04-24 03:45:31au1xw2qdh59m2gea58y6zj5wn8glwg68grtljr2r2qlevrgrckl5uxsp3nywemint_nftAccepted
2,137,3232024-04-22 01:28:53au17j25jy8mantrettkmdwyejqeh2jrd5cesslgeu02nvz2fktweczqpp5wwvmint_nftAccepted
2,134,2792024-04-21 20:31:36au1wrftxlrgzvenghp0e25qk45pl4uguckfk633jrmxv6prpmkucgyq3mqmxamint_nftAccepted
2,129,9962024-04-21 13:47:14au1w5jd0vsxulu2hy8qf2t5pvxnkpe3wkzfa9nrmlpz74x30ghu4s9q07sd7rmint_nftAccepted
2,129,9372024-04-21 13:42:33au1uac9zvy33swvfa0k94ju262k2hvkz8sclwcqmmdaugp8cp0fm5rqp6kry6mint_nftAccepted
2,124,3522024-04-21 04:57:14au1ujd6j880jf2urhv5tc6ss0gjfefg7janc260e5ulqwngh89sjugq5sc3nhmint_nftAccepted
2,120,5292024-04-20 23:09:42au1knlyaaz0ek5vqhet28agmdrqm3s2xlhesss82q2nau2h73fsp5gsahrwu3mint_nftAccepted
2,115,7002024-04-20 15:30:50au1l446vanwj44fqla0rnu6kwv2eusg4nxsy5ky0naqn84tj3qj3crsy5mt90bid_orderRejected
2,115,6932024-04-20 15:30:18au1cz7mvdu55jnh2ljmrhl8g4yslke9nd4ctlqrmvhzwqyjmyyztgrsr4z98ybid_orderRejected
2,115,6662024-04-20 15:28:00au1ejtxxu974zv9zklx9vxf3550ljuxelzedd9x6d2zvvf4kcdley8qk5s92gmint_nftAccepted
2,115,6472024-04-20 15:26:17au1kykcmhvuqksaket99nckzp5ep7zac2295npq5szpz7r79rfjsyzscewqwwmint_nftAccepted
2,112,3852024-04-20 10:37:36au146quk42z0myvurm56r6a6ppxrmq3qz6mzkur4eq3l0a88wu3tqxsaxwplumint_nftAccepted
2,105,9502024-04-20 00:27:18au1gjsxrgu2nn6vwn527hxslm49296wsw69yk6efe5525evj9qv3grq0yhf78mint_nftAccepted
2,105,5422024-04-19 23:47:04au1tyurpwgmrf2n7ls0edymtj38khj6e89rjp4uucu79ss7arm64qrq0mrk58mint_nftAccepted
2,104,3912024-04-19 21:54:02au1sjplarq6zhrzt5jx8tkzfhxrhu25705g0qmwdmu59kh0nvrd4spstpwzz2mint_nftAccepted
2,099,8042024-04-19 14:32:17au1zzn582pdnedgr4hz7gxuq59ypvd0yt7ga3u9vhrjsclhqw7n5s8syheefcmint_nftAccepted
2,093,9422024-04-19 05:57:12au1e3szkt2k3s7nrzpdje2n2xfget3agg6hg49wl9e0wdz4aj8gau8qnp8dylmint_nftAccepted












Not implemented