{"id":16153950,"url":"https://github.com/artgo-labs/artgo","last_synced_at":"2025-10-24T01:31:42.808Z","repository":{"id":181776851,"uuid":"656009603","full_name":"artgo-labs/artgo","owner":"artgo-labs","description":"To leverage AIGC technology with NFT, marketplace and privacy.","archived":false,"fork":false,"pushed_at":"2024-06-19T06:02:07.000Z","size":1726,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-20T10:41:07.206Z","etag":null,"topics":["aigc","marketplace","nft","privacy","zkml"],"latest_commit_sha":null,"homepage":"https://artgo.io","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artgo-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-20T04:51:52.000Z","updated_at":"2024-06-19T06:02:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"f821e2ee-efe2-4194-800f-a1a86c9bd413","html_url":"https://github.com/artgo-labs/artgo","commit_stats":null,"previous_names":["artgo-labs/artgo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artgo-labs%2Fartgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artgo-labs%2Fartgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artgo-labs%2Fartgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artgo-labs%2Fartgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artgo-labs","download_url":"https://codeload.github.com/artgo-labs/artgo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219867160,"owners_count":16555821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aigc","marketplace","nft","privacy","zkml"],"created_at":"2024-10-10T01:14:55.942Z","updated_at":"2025-10-24T01:31:37.425Z","avatar_url":"https://github.com/artgo-labs.png","language":"Shell","funding_links":[],"categories":["Applications"],"sub_categories":["Art"],"readme":"# aigc.aleo program\nThe combination of AIGC and NFTs can create new digital content and value. The digital content generated by AIGC can be transformed into NFT — a unique digital asset with collecting and investment value.\n\nFor project introduction, please visit : [Artgo Background](https://github.com/artgo-labs/artgo/blob/main/Artgo%20Background.md).\n\nFor user guide, please visit : [Artgo Tutorial](https://github.com/artgo-labs/artgo/blob/main/Artgo%20Tutorial.pdf).\n\nOffical website : https://artgo.io/.\n\nThis documentation will introduce the program from technical side, keep updating.\n\n## Struct\n\n```js\nstruct Field2 {\n    first: field,   // the first half\n    second: field,  // the second half\n}\n```\n\n```js\nstruct NftHash {\n    minter: address      // creator\n    prompt: Field2,      // prompt command to generate image\n    nonce: field,        // random number to unique nft\n}\n```\n\n```js\nstruct NftInfo {\n    holder: address, // owner address\n    minter: address, // minter address\n    hash: filed,     // bhp256_hash(NftHash)\n    uri: Field2,     // image content ipfs url\n}\n```\n\n```js\nstruct Order {\n    holder: address, // owner address\n    minter: address, // minter address\n    nft_id: field,     // nft id\n    order_type: u8,  // order type, 0:non-trading 1:normal 2:auction（Todo）\n    amount: u64,    // minumum amount\n    status: u8,      // order status, 0:non-trading 1:trading 2:canceled 3:finished\n    deadline: field  // the timestamp to finish order -- blocknumber or timestamp\n}\n```\n\n```js\nstruct Bid {\n    bidder: address,    // bidder address\n    nft_id: field,        // id\n    amount: u64,       // bidding amount\n}\n```\n\n```js\nrecord BidRecord {\n    bid_type: u8,        // 1-bid, 2-cancel\n    owner: address,     \n    bidder: address,\n    nft_id: field,\n    amount: field,\n}\n```\n\n```js\nrecord Nft {\n    owner: address,         // NFT owner\n    minter: address,        // NFT minter\n    prompt: Field2,          // NFT prompt, hidden\n    nonce: field             // random number to unique nft\n    uri: Field2,             // NFT content\n}\n```\n\n## Public states\n\n### tokenId\n\nmapping\nStore the maximum tokenid.  \n`tokenId` store: `bool =\u003e field`;\n\n### nfts\n\nmapping\nStore all the minted nfts.  \n\n`nfts` store: `id =\u003e NftInfo`  \n`id` id++ from 1\n\n### admin\n\nmapping\nStore admin.  \n`admin` store: `bool =\u003e address`;  \n\n### orders\n\nmapping\nStore all the orders.  \n`orders` store: `field =\u003e Order`;  \nkey: `nft id`\n\n### bids\n\nmapping\nStore all the bids.\n`bids` store: `field =\u003e Bid`;  \nkey: `nft id`\n\n## Interfaces\n\n### mint_nft\n\n`mint_nft` used to mint nfts for aigc images\n nfts minted stored in `Nfts`\n\n- NFT mint, permisionless。\n  \ninputs:\n\n- `prompt` : Field2.private  \n  nft prompt\n\n- `uri` : Field2.public  \n    image content\n\n- `nonce` : field.public  \n    random unique number\n\noutputs:\n\n- `NFT` record\n\nusage:\n\n```shell\nrun mint_nft:\nleo run mint_nft\n```\n\n```shell\nexcute mint_nft:\nsnarkos developer execute -f $\u003cfee\u003e -r $\u003crecord\u003e --query $\u003cendpoint\u003e --broadcast $\u003c${endpoint}/testnet3/transaction/broadcast\u003e -p $\u003cprivate-key\u003e $\u003cprogram_id\u003e ${function_id} $\u003cinputs\u003e\ni.e:\nsnarkos developer execute \n-f 2509834 \n-r \"{  owner: aleo1rhgdu77hgyqd3xjj8ucu3jj9r2krwz6mnzyd80gncr5fxcwlh5rsvzp9px.private,  microcredits: 93750000000000u64.private,  _nonce: 600042304734513817307279222414740026784347330221707613918989922910747206357group.public}\" \n--query \"http://localhost:3030\" \n--broadcast \"http://localhost:3030/testnet3/transaction/broadcast\" \n-p \"APrivateKey1zkp8CZNn3yeCseEtxuVPbDCwSyhGW6yZKUYKfgXmcpoGPWH\" \nartgo_aigc_v1.aleo \nmint_nft \"{\n    first: 10000field,\n    second: 10000field\n}\" \"{\n    first: 10000field,\n    second: 10000field\n}\"\n```\n\n```shell\nquery nft:\ni.e:\ncurl --location 'http://127.0.0.1:3030/testnet3/program/aigc.aleo/mapping/nfts/1field'\n\n\n```\n\n### transfer_private_nft\n\n`transfer_private_nft` used to tranfer nft.\n\n- transfer nft, permisionless.\n\ninputs:\n\n- `nft_id` field  \n  NFT id\n\n- `NFT` record  \n  NFT to auction\n\n- `receiver` address  \n  Minimum amount for auction\n\noutputs:\n\n- `NFT` record to receiver\n\nusage:\n\n```shell\nTBD\n```\n\n### place_order\n\n`place_order` used to start an order.\n\n- place order, permisionless。\n\ninputs:\n\n- `nft_id` field  \n  NFT id\n\n- `NFT` record  \n  NFT to auction\n\n- `order_type` order type  \n      0 - non-trading\n      1 - normal\n      2 - auction\n\n- `amount` field  \n  Minimum amount for auction\n\n- `deadline` field  \n  the timestamp to finish order\n\n- `admin_in` address  \n  admin address\n\noutputs:\n\n- `NFT` record to admin\n\nusage:\n\n```shell\nTBD\n```\n\n### update_order\n\n`update_order` used to update an order.'\n\n- update order, permisionless.\n\ninputs:\n\n- `nft_id` : field  \n   nft id\n\n- `new_amount` : field  \n   order new amount\n\noutputs:\n\nusage:\n\n```shell\nTBD\n```\n\n### cancel_order\n\n`cancel_order` used to cancel an order.'\n\n- cancel order, permisionless.\n\ninputs:\n\n- `credit` : Record  \n   Aleo Credit record\n\n- `fee` : u64  \n   cancel fee\n\n- `nft_id` : field  \n   nft id\n\n- `admin_in` address  \n  admin address\n\noutputs:\n\n- `BidRecord` record\n  \nusage:\n\n```shell\nTBD\n```\n\n### bid_order\n\n`bid_order` to bid for NFT.\n\n- bid order, permisionless.\n\ninputs:\n\n- `credit` : Record  \n   Aleo Credit record\n\n- `nft_id` : field  \n   nft hash\n  \n- `amount` : field  \n  bid amount\n\n- `admin_in` address  \n  admin address\n\noutputs:\n\n- `BidRecord` record\n\n- success --`BidRecord` record to admin, if amount greater than previous, refund the previous. Otherwise, tx will fail.\n\nusage:\n\n```shell\nTBD\n```\n\n### finish_order\n\n`finish_order` to finish an order.\n\n- finish order, only admin\n- delete mapping when nft not sold.\n\ninputs:\n\n- `nft_id` : field  \n   nft record\n\n- `nft` : `NFT` record  \n   nft record\n\n- `fee` : u64  \n   trading fee\n\n- `winner` : address  \n   winner address\n\n- `winner_amount` : field  \n   winner amount\n  \n- `admin_in` : address  \n   admin address\n\noutputs:\n\n- `NFT` record to winner\n\nusage:\n\n```shell\nTBD\n```\n\n## Workflow (TBD)\n\n![avatar](./artgo.png)\n\n## Build Guide\n\nTo compile this Aleo program, run:\n\n```bash\nleo build\n```\n\n## Deploy Guide\n\nTo deploy this Aleo program, run:\n\n```bash\ni.e:\nsnarkos developer deploy \n--fee 1000001328000 \n-r \"{  owner: aleo1rhgdu77hgyqd3xjj8ucu3jj9r2krwz6mnzyd80gncr5fxcwlh5rsvzp9px.private,  microcredits: 93750000000000u64.private,  _nonce: 878010960996471104548362432643577968735743754584843045001751072533354535962group.public}\" \n--query \"http://localhost:3030\" \n--broadcast \"http://localhost:3030/testnet3/transaction/broadcast\" \n-p ${privatekey} \nartgo_aigc_v1.aleo\n```\n\n```bash\n\naigc program testnet3 deployed:\n\nv1 deployed:\ntxid: at1gz5azfpd0xegxxnan9j9yy0fujghvtrfdqkad0gplwf95z38s5gqfvsvp4\ncurl --location 'http://testnet3.artgo.app/testnet3/program/artgo_aigc_v1.aleo'\n\nv1_1 deployed:\ntxid: \nat148r6xq7dadmw3a0e0afnwl303xphy4qeuhhge54283kx7tsxtgzqzcpk9a\ncurl --location 'http://testnet3.artgo.app/testnet3/program/artgo_aigc_v1_1.aleo'\n\nv1_2 deployed:\ntxid:\nat1aencztkgs0rrw7z3p4nzkcxxgxrnnfqpwv43mf34n5f02j20vqgsqh77m7\ncurl --location 'http://testnet3.artgo.app/testnet3/program/artgo_aigc_v1_2.aleo'\n\nv1_3 deployed:\ntxid:\nat10538rm2ncpazklrkqgz29fq9dwc73f9wt5hpg9r3csfjqkzc4gzs7wrtr5\ncurl --location 'http://testnet3.artgo.app/testnet3/program/artgo_aigc_v1_3.aleo'\n\nmapping query:\n\ncurl --location 'http://testnet3.artgo.app/testnet3/program/${program_name}/mapping/${mapping_name}/${key}'\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartgo-labs%2Fartgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartgo-labs%2Fartgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartgo-labs%2Fartgo/lists"}