{"id":20185142,"url":"https://github.com/aeternity/aex141-nft-collection-example","last_synced_at":"2025-04-10T06:11:43.890Z","repository":{"id":80979249,"uuid":"528806588","full_name":"aeternity/aex141-nft-collection-example","owner":"aeternity","description":"Simple showcase how to create an NFT collection and mint NFTs. The repo also contains a simple-nft-viewer UI.","archived":false,"fork":false,"pushed_at":"2023-04-12T18:49:34.000Z","size":14267,"stargazers_count":4,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T07:21:49.367Z","etag":null,"topics":["aelabs","hacktoberfest","nft","smartcontract","sophia"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/aeternity.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":"2022-08-25T10:46:51.000Z","updated_at":"2024-10-10T10:34:29.000Z","dependencies_parsed_at":"2023-05-30T17:45:21.089Z","dependency_job_id":null,"html_url":"https://github.com/aeternity/aex141-nft-collection-example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeternity%2Faex141-nft-collection-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeternity%2Faex141-nft-collection-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeternity%2Faex141-nft-collection-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aeternity%2Faex141-nft-collection-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aeternity","download_url":"https://codeload.github.com/aeternity/aex141-nft-collection-example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248166925,"owners_count":21058481,"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":["aelabs","hacktoberfest","nft","smartcontract","sophia"],"created_at":"2024-11-14T03:11:41.377Z","updated_at":"2025-04-10T06:11:43.876Z","avatar_url":"https://github.com/aeternity.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aex141-nft-collection-example [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/aeternity/aex141-nft-collection-example)\n\n\nThis repository will guide you through all the steps required to create an NFT collection and NFTs on the æternity blockchain using the [AEX-141](https://github.com/aeternity/AEXs/blob/master/AEXS/aex-141.md) standard.\n\nIt demonstrates two different use cases:\n- Unique NFTs (e.g. for unique artworks)\n- Edition NFTs using templates (e.g. for gaming)\n\n## Immutable Metadata on IPFS\nThe immutable metadata of the following example collections is stored on IPFS and referenced in the NFT contract. This way we avoid spamming the chain with unnecessary data while embracing decentralization.\n\n\u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003eRead more...\u003c/b\u003e\u003c/summary\u003e\n\n### Considerations\nIn case you plan to launch a collection your should consider taking actions in following order:\n\n1. Upload media file to IPFS\n1. Create JSON file with immutable metadata which includes the reference to the media file on IPFS\n   - e.g. `\"media_url\": \"ipfs://QmV8zLF5zBSiKU9go9GXkeCZXeHp7iZQMzpBxnU5eGHSZT\"`\n1. Upload JSON file with immutable metadata on IPFS\n1. Deploy the NFT contract\n1. Mint the NFTs which includes the reference to the JSON file on IPFS that contains immutable metadata\n\nThis will be demonstrated and explained step by step if you continue reading.\n\n### Example collection: Apes stepping into the Metaverse\n\nFor this example we used [DALL-E 2](https://openai.com/dall-e-2) to generate some images based on the text `apes stepping into the metaverse`.\n\nThe images have been uploaded and pinned using [Pinata](https://www.pinata.cloud) where you can pin up to 1GB of media for free.\n\nThe NFT images of the example collection are stored under [nfts/images](./nfts/images) and their filename reflect the IPFS hash which is used in the `media_url` in the immutable metadata of each NFT ;-)\n\n**Note**:\n\n- If the media isn't pinned anymore and nobody saved the original file the NFT media cannot be fetched anymore.\n- When creating NFT collections you (or your community) should ensure that the media is always pinned on IPFS (or other decentralized storage alternatives) either by yourself or by some 3rd party service you typicall have to pay for.\n- The IPFS hash will always be the same as long as somebody owning the original media has it stored somewhere, uploads and pins at again on IPFS.\n\n### NFT metadata - overview\n\n| NFT name | File | IPFS hash\n| --- | --- | --- |\n| Walking on the ladder | [1.json](./nfts/immutable-metadata/1.json) | [QmdXfW9PuiUi6rToxmFMxaiY3Umn6SKGygihhk2oUj1PDu](https://ipfs.io/ipfs/QmdXfW9PuiUi6rToxmFMxaiY3Umn6SKGygihhk2oUj1PDu) |\n| The path to heaven | [2.json](./nfts/immutable-metadata/2.json) | [QmQCctL2rnAHvhKNRAFg5iHbtkWcDA1GE1YeacgkWnnxbX](https://ipfs.io/ipfs/QmQCctL2rnAHvhKNRAFg5iHbtkWcDA1GE1YeacgkWnnxbX) |\n| Still sitting in the jungle | [3.json](./nfts/immutable-metadata/3.json) | [QmYmQtJR3WHdspFmzUThpKw6WbbuPc5oprPB6fGxsvjmBa](https://ipfs.io/ipfs/QmYmQtJR3WHdspFmzUThpKw6WbbuPc5oprPB6fGxsvjmBa) |\n| We almost made it! | [4.json](./nfts/immutable-metadata/4.json) | [QmX8q5hHW6kB7N12YyttfdiBBdQAZ6sjkVbzQa7kRo6Qnn](https://ipfs.io/ipfs/QmX8q5hHW6kB7N12YyttfdiBBdQAZ6sjkVbzQa7kRo6Qnn) |\n| I'm in! | [5.json](./nfts/immutable-metadata/5.json) | [QmfMnhj3LoTbYjSfsvbtabHK4CV4zL29E4DpaYPoxkhUnx](https://ipfs.io/ipfs/QmfMnhj3LoTbYjSfsvbtabHK4CV4zL29E4DpaYPoxkhUnx) |\n| Utopia is there! | [6.json](./nfts/immutable-metadata/6.json) | [QmajFQ7Q9XrZgqi54vacv3ya2AATyAQ7Bw9wCazYYtWGyJ](https://ipfs.io/ipfs/QmajFQ7Q9XrZgqi54vacv3ya2AATyAQ7Bw9wCazYYtWGyJ) |\n| Waiting for my homies! | [7.json](./nfts/immutable-metadata/7.json) | [QmbMuA5vaebD1jzTkSiaTrHxnQ2H8keY76dguS3ANmuShs](https://ipfs.io/ipfs/QmbMuA5vaebD1jzTkSiaTrHxnQ2H8keY76dguS3ANmuShs) |\n| There is no way back! | [8.json](./nfts/immutable-metadata/8.json) | [QmdZ6JFCGdQQUEuyeMU7S7Hb929QFt1BgUcZmYg6nEd4E1](https://ipfs.io/ipfs/QmdZ6JFCGdQQUEuyeMU7S7Hb929QFt1BgUcZmYg6nEd4E1) |\n\n### NFT metadata - schema\nWe're proposing following schema for the immutable metadata referenced in the NFT:\n\n- `name` the name of the NFT\n- `description` the description of the NFT\n- `media_type` the media type of the NFT\n    - e.g. `NONE`, `IMAGE`, `AUDIO`, `VIDEO`, `3D_GLB`, `PDF`, ... (ideally this is defined based on discussions within the community)\n- `media_url`\n    - e.g. `ipfs://`, `ar://`\n    - we recommend to **AVOID** using centralized URLs as this property should be immutable\n- `traits`\n    - a JSON string representing `map\u003cstring, object\u003e` so that basically everything is possible to be represented here\n\nExample:\n```json\n{\n    \"name\": \"Walking on the ladder\",\n    \"description\": \"They are escaping from earth and stepping into the metaverse!\",\n    \"media_type\": \"IMAGE\",\n    \"media_url\": \"ipfs://QmfCr586aHFVk6p2WhTC1Kvcaps24Mtny2CLB5bsTT9MvZ\",\n    \"traits\": {\n        \"apes_count\": 2,\n        \"moon_visible\": true\n    }\n}\n```\n\n\u003c/details\u003e\n\n## Example 1 - Collection with unique NFTs\n\nThe first example demonstrates how a collection that includes only unique NFTs could look like.\n\n\u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003eRead more...\u003c/b\u003e\u003c/summary\u003e\n\n### Contract\n\nThe following contract is used for showcasing unique NFTs:\n- [CollectionUniqueNFTs.aes](./contracts/CollectionUniqueNFTs.aes)\n\n### Extensions\n\nThis example demonstrates the usage of following extensions:\n- `mintable`\n    - allows the owner/creator of the NFT contract to mint new NFTs\n- `mintable_limit`\n    - defines a limit/cap of NFTs that can be minted in the NFT contract which can only be decreased afterwards\n- `burnable`\n    - allows the owner (or approved account) to burn an NFT\n\n### Dealing with metadata\n\nThe [AEX-141](https://github.com/aeternity/AEXs/blob/master/AEXS/aex-141.md) standard is aiming to be very flexible when it comes to dealing with metadata.\n\n#### Contract level: `meta_info`\n\nThe `meta_info` specifies general info about the NFT collection:\n\n- `name` the name of the collection\n- `symbol` the symbol of the collection\n- `base_url` the base-url, in case you want to use the metadata_type `URL` for the collection\n    - this property is optional and irrelevant for this example\n- `metadata_type` the metadata type to use\n    - one of `URL`, `OBJECT_ID`, `MAP`\n    - this example demonstrates the usage of `MAP`\n\n#### Usage of `metadata_type`\nThis example provides the first proposal how to deal with metadata for collections with unique NFTs only and uses the metadata_type `MAP` specified in AEX-141. Following key is used in this example:\n\n- `url` pointing to the place where the JSON file with the immutable metadata is stored\n    - e.g. `ipfs://QmdXfW9PuiUi6rToxmFMxaiY3Umn6SKGygihhk2oUj1PDu`\n\nPotentially you can add many more custom key-value pairs if needed. E.g. there is also a `mutable_attributes` extension (see example for Edition NFT Collection below) where the key `mutable_attributes` is used to store additional (upgradeable) data for an NFT.\n\n\u003c/details\u003e\n\n## Example 2 - Collection with Template Edition NFTs\nThe second example demonstrates how a collection of edition NFTs based on templates look like. This is especially interesting for gaming projects where you want to re-use immutable metadata for a specific type of NFT and still have the flexibility to attach mutable attributes to every single NFT.\n\n\u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003eRead more...\u003c/b\u003e\u003c/summary\u003e\n\n### Contract\n\nThe following contract is used for showcasing editon size NFTs with templates:\n- [CollectionTemplateEditionNFTs.aes](./contracts/CollectionTemplateEditionNFTs.aes)\n\n### Extensions\n\nThis example demonstrates the usage of following extensions:\n- `mintable_templates` - allows the owner/creator of the NFT contract to\n    - create new templates by providing\n        - immutable metadata\n        - an edition limit (optional) which can only be decreased afterwards\n    - delete templates if no NFT has been minted based on it\n    - mint NFTs based on templates\n- `mintable_templates_limit` - defines a limit/cap for templates that can be created in the NFT contract\n- `mutable_attributes` - allows the owner/creator of the NFT contract to update mutable attributes for NFTs in the collection\n- `burnable` - allows the owner (or approved account) to burn an NFT\n\n### Dealing with metadata\n\nThe [AEX-141](https://github.com/aeternity/AEXs/blob/master/AEXS/aex-141.md) standard is aiming to be very flexible when it comes to dealing with metadata.\n\n#### Contract level: `meta_info`\n\nThe `meta_info` specifies general info about the NFT collection:\n\n- `name` the name of the collection\n- `symbol` the symbol of the collection\n- `base_url` the base-url, in case you want to use the metadata_type `URL` for the collection\n    - this property is optional and irrelevant for this example\n- `metadata_type` the metadata type to use\n    - one of `URL`, `OBJECT_ID`, `MAP`\n    - this example demonstrates the usage of `MAP`\n\n#### Usage of `metadata_type`\nThis example provides the first proposal how to deal with metadata for collections with unique NFTs only and uses the metadata_type `MAP` specified in AEX-141. Following keys are used in this example:\n\n- `template_id` defines the template the NFT is based on\n    - the template has to be created before\n    - the template includes following properties:\n        - `immutable_metadata` in case of this example we use `MetadataIdentifier` (URL) pointing to the place where the JSON file with the immutable metadata is stored\n            - e.g. `ipfs://QmdXfW9PuiUi6rToxmFMxaiY3Umn6SKGygihhk2oUj1PDu`\n        - `edition_limit` the max amount of NFTs that can be minted using the template (MUST be \u003e 0)\n        - `edition_supply` the number of NFTs that have already been minted using the template\n            - this value is incremented on each new NFT mint\n- `edition_serial` defines the serial no of the minted NFT within a specific template\n\nAfter mint:\n- `mutable_attributes` can be added and updated in form of a JSON string\n\n**Note:**\n- You can of course also implement a custom `template_mint_mutable` entrypoint where you can pass mutable attributes directly on minting if required.\n- In case you prefer having immutable data on-chain you can use `MetadataMap` (MAP) as metadata for templates. We generally recommend to store the data off-chain like showcased in this example using `MetadataIdentifier (URL)\n\n\u003c/details\u003e\n\n## Deployment \u0026 Minting\n\nWith the following example scripts you can easily test deployment on the official testnet. For mainnet almost identical steps can be executed. Of course you need some Æ to cover the transaction fees.\n\n\u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003eRead more...\u003c/b\u003e\u003c/summary\u003e\n\n### Create keypair and get some Æ on testnet\nCheck out the quick start guide to learn how to create a keypair and how to fund your account:\n\n- https://docs.aeternity.com/aepp-sdk-js/latest/quick-start/\n\nAlternatively just execute the [createKeypairAndFundAccount.js](./scripts/createKeypairAndFundAccount.js) script as follows:\n\n`node ./scripts/createKeypairAndFundAccount.js`\n\nIt will print the following output to the console:\n\n```\nSecret key: sure ;-)\nPublic key: ak_QVSUoGrJ31CVxWpvgvwQ7PUPFgnvWQouUgsDBVoGjuT7hjQYW\nBalance: 5000000000000000000 ættos\n```\n\n### Deploy \u0026 Mint Collection with unique NFTs\n\nThe [deployAndMintCollectionUniqueNFTs.js](./scripts/deployAndMintCollectionUniqueNFTs.js) script demonstrates how you can use the SDK programmatically to deploy and mint your NFTs on the testnet. If you run the following command, the contract will be deployed and the NFTs will be minted according to the data defined in [collection_unique_nfts.json](./nfts/collection_unique_nfts.json):\n\n`SECRET_KEY=\u003cyour_secret_key\u003e node ./scripts/deployAndMintCollectionUniqueNFTs.js`\n\nAlternatively you can set the env variable `SECRET_KEY` in your terminal and just run `node ./scripts/deployAndMintCollectionUniqueNFTs.js`.\n\n\u003cdetails\u003e\n    \u003csummary\u003eShow console output\u003c/summary\u003e\n\n```sh\nDeploying with account: ak_8Ujt76QfpT1DyYsNZKGPGtMZ2C2MFf7CcnpQvJWNsX6szZkYN\n==\u003e Adding include to filesystem: ./core/utils.aes\n==\u003e Adding include to filesystem: ./core/IAEX141NFTReceiver.aes\nContract successfully deployed!\nContract address: ct_2QTanakTwkp2p68n3aR296iE2ad4tHH3ov8kRy8ySF4xQuunM8\nTx-Hash: th_4rNhmN2PwTKdPvgVJ4hsaigjSJoYd9Et9o1Rbz1R2V7dR2naZ\nGas used: 2821\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 244\nMinted NFT with id '1'\nTx-Hash: th_XKPPEAtAuM8RFaZaQXssqfa2yjN6SuBwYxXciraSSPcgPhGK9\nGas used: 19552\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 245\nMinted NFT with id '2'\nTx-Hash: th_26Vq5MULJLQD54k3sTFtjSe9TpnAofUbyyyVawDCxo8VQCA8dk\nGas used: 20141\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 246\nMinted NFT with id '3'\nTx-Hash: th_26vmPV7bnHVzX1yAdJZANFyEgiZZGPAozJzTU9ALn5j9DWuJU9\nGas used: 20013\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 247\nMinted NFT with id '4'\nTx-Hash: th_bRr9nURDa4fK2E85TVGFLdQ4D7iZuLTSdkQGBFYr9YUX4nnMa\nGas used: 19643\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 248\nMinted NFT with id '5'\nTx-Hash: th_TRc9HTqxKuFBFfPWmWrpgr4UgrWvmdYdaFtpCMNWqXvZNcMP3\nGas used: 19656\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 249\nMinted NFT with id '6'\nTx-Hash: th_2dqqahEsY3dAKcMog6xrcRdY4dToGAtP6UyiSxHk5Ckh2UC7gH\nGas used: 19669\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 250\nMinted NFT with id '7'\nTx-Hash: th_wwD6P18Pc1PWX85Qxa8afQunQ8tYbwzhNbwCq3s6AP7YADM2L\nGas used: 19682\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 251\nMinted NFT with id '8'\nTx-Hash: th_MigEKnRR5mTNjQrQ7MukGmcbBEdtHdmf6cEU1ms2mipqzYVeB\nGas used: 19695\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\n```\n\u003c/details\u003e\n\n### Deploy \u0026 Mint Collection with edition size NFTs (Templates)\n\nThe [deployAndMintCollectionTemplateEditionNFTs.js](./scripts/deployAndMintCollectionTemplateEditionNFTs.js) script demonstrates how you can use the SDK programmatically to deploy and mint your NFTs on the testnet. If you run the following command, the contract will be deployed, templates will be created and all the NFTs will be minted according to the data defined in [collection_templates.json](./nfts/collection_templates.json):\n\n`SECRET_KEY=\u003cyour_secret_key\u003e node ./scripts/deployAndMintCollectionTemplateEditionNFTs.js`\n\nAlternatively you can set the env variable `SECRET_KEY` in your terminal and just run `node ./scripts/deployAndMintCollectionTemplateEditionNFTs.js`.\n\n\u003cdetails\u003e\n    \u003csummary\u003eShow console output\u003c/summary\u003e\n\n```sh\nDeploying with account: ak_8Ujt76QfpT1DyYsNZKGPGtMZ2C2MFf7CcnpQvJWNsX6szZkYN\n==\u003e Adding include to filesystem: ./core/utils.aes\n==\u003e Adding include to filesystem: ./core/IAEX141NFTReceiver.aes\nContract successfully deployed!\nContract address: ct_2oq4kSd4j1VkkbupueXLdHwYEJdY8Ntzvp1FFkMB1gYyXkYPcV\nTx-Hash: th_9FnZLqfbwKddtJgnnE1e61hNYrcjUcHFYH5QsZBEXBHpx3UWY\nGas used: 2980\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 253\nCreated template with id '1'\nTx-Hash: th_KsfMGhkVf2n5RLY5qh1Bo8HppudiQREq7LMKAYuauLSuYKg4s\nGas used: 16414\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 254\nMinted NFT with id '1' of template with id '1'\nTx-Hash: th_28qfRHx2ZQSDWzmAD3RugA1W4GNGCotbxCNpVKYnf8XQQ2ibGs\nGas used: 20931\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 255\nCreated template with id '2'\nTx-Hash: th_Vrk8UGyUpgnvVPK3TknudxPx3Jd3mSCUPnfqcuKbjWZSZivjQ\nGas used: 16818\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 256\nMinted NFT with id '2' of template with id '2'\nTx-Hash: th_waWuVxDvUtqu5GECd9b3yeBjdh9JXoUhTuUt6QNNLbYWrrdHh\nGas used: 21381\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 257\nMinted NFT with id '3' of template with id '2'\nTx-Hash: th_2hbQt2YJALH9bqJs3vTMW6UhixJZKp6PdWXj3V8DSC45ANato5\nGas used: 21854\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 258\nCreated template with id '3'\nTx-Hash: th_b3DY71PvbLj8ZC2XqL43qWaB23kugLid76B8dHGxCKuLQUutq\nGas used: 16491\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 259\nMinted NFT with id '4' of template with id '3'\nTx-Hash: th_oXSkPorJsDzoBiJJNQ38TAaUAUvqS1msrZcvBb3JHxJuPFRmc\nGas used: 21050\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 260\nMinted NFT with id '5' of template with id '3'\nTx-Hash: th_2SaGtb7HpLq5VY8oj7yyTijjpY1vsVkSFMEm6sNaFHpmKsH6jj\nGas used: 21063\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 261\nMinted NFT with id '6' of template with id '3'\nTx-Hash: th_QYCf4BCQzzeW5mY2wMWR5cCALRB7mnBbtcbTbBaXgWr22Hbvt\nGas used: 21076\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 262\nCreated template with id '4'\nTx-Hash: th_mjh5knapnbjGVqwVy4FJFJekNaRLNbpuqqK1pxreMGuf8Pg9Y\nGas used: 16491\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 263\nMinted NFT with id '7' of template with id '4'\nTx-Hash: th_EqgSR2B4v2dke2TVJzDpfvBkZhXa4KPzhf5YHjECpbNgnu2n4\nGas used: 21089\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 264\nMinted NFT with id '8' of template with id '4'\nTx-Hash: th_wdTL1jFkSte4jy6FRSufSYWNYwUqaebTzhoaHBoBuyU5V3Buk\nGas used: 21102\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 265\nMinted NFT with id '9' of template with id '4'\nTx-Hash: th_PzKUYMmFV2D6ir5Sz8rqd8jo7uodvR7WTPbUkL3TvpU4yPKuK\nGas used: 21115\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 266\nMinted NFT with id '10' of template with id '4'\nTx-Hash: th_j1eGrdsqD4ToXgaNZRBaudP82v5Ngzoezds113Hvrrg4ZcbMs\nGas used: 21128\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 267\nCreated template with id '5'\nTx-Hash: th_2FPVLnCfCy7mmiwWFcyhHaWi3cW9KHNK4EjCYiEmGG9kaM58bp\nGas used: 16491\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 268\nMinted NFT with id '11' of template with id '5'\nTx-Hash: th_i3kucKLr5uR8KL5WRrUXfbuApdpWQYyHmYk3deUPpN2aeqMQD\nGas used: 21141\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 269\nMinted NFT with id '12' of template with id '5'\nTx-Hash: th_qwNGL9T2WgRWks3rFLTMJdCTLGYCqKYbRd3yfLpSQAhcfD9ZQ\nGas used: 21154\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 270\nMinted NFT with id '13' of template with id '5'\nTx-Hash: th_DUTXCMRVdwsRnDSLEUjjHVu4sR31KiQ8nYatsteTn8y5xzLXT\nGas used: 21167\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 271\nMinted NFT with id '14' of template with id '5'\nTx-Hash: th_292MwJQzH9SEQXzDL6uYXnzKFXRn7rMrqTeGisFssBb64CHuaQ\nGas used: 21180\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 272\nMinted NFT with id '15' of template with id '5'\nTx-Hash: th_2u1PTGYhaoqUfM1szyHKK56V5YfhrUDTFohYqfYKh9VQJCRQRt\nGas used: 21193\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 273\nCreated template with id '6'\nTx-Hash: th_zL7FxDH3ukaaaspC2S1DgFvEdB5vKWsGZrLgTACGTT9kzF1Er\nGas used: 16491\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 274\nMinted NFT with id '16' of template with id '6'\nTx-Hash: th_bZWX3j25qP4EBCp256wkrZRM9wVtf6sB2XmWQnQkRbq7Y5SVr\nGas used: 21206\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 275\nMinted NFT with id '17' of template with id '6'\nTx-Hash: th_Ru9rSyS1yxa9L3WtomU6R1TCBSuo85w3RvyEHY7koXgtWtsK5\nGas used: 21219\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 276\nMinted NFT with id '18' of template with id '6'\nTx-Hash: th_r3Y1r4imxc8hsm5Hg5Sx1ehdmkmPJg8JwasUyqTQFWHpNDdR9\nGas used: 21232\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 277\nMinted NFT with id '19' of template with id '6'\nTx-Hash: th_2ikkQHRmEi2e4eAACrBQQos4tGRHTF4vyb7czKDTzThQgSP4b7\nGas used: 21245\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 278\nMinted NFT with id '20' of template with id '6'\nTx-Hash: th_Rp5YY6jyrekoaYQktK8cYo6vHq95RSR7oJwMR1C6GyCkmiMhb\nGas used: 21258\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 279\nMinted NFT with id '21' of template with id '6'\nTx-Hash: th_2At6Qx85DpWK3CEopsysVL9TjRi9cKBHGSk6Juz3TTzDctZRsv\nGas used: 21271\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 280\nCreated template with id '7'\nTx-Hash: th_2rVi99vxGW4c7YuQpYiGDy9fvxbLSwqCyQytEaq9V2eDQQGVxo\nGas used: 16491\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 281\nMinted NFT with id '22' of template with id '7'\nTx-Hash: th_GtdqdL4g4TJ1ZQc8VcLH1G3JjjjkcGzhxTRt4RhUGpaPC1mXp\nGas used: 21284\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 282\nMinted NFT with id '23' of template with id '7'\nTx-Hash: th_cwXbjKqamB4o4h8exxt4HyfDVkL7ewhwzLQ8HEkW8hdeC6GPa\nGas used: 21297\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 283\nMinted NFT with id '24' of template with id '7'\nTx-Hash: th_saePVZtTqtbLqMHdfBLQUq8MaUSY9rQgk9iMVvWZnQ18j4yap\nGas used: 21310\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 284\nMinted NFT with id '25' of template with id '7'\nTx-Hash: th_3r5YUspr7NTUvN1cuDpUZNwJkUmVhT6cS9qywGLBcbkjdZLFw\nGas used: 21323\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 285\nMinted NFT with id '26' of template with id '7'\nTx-Hash: th_YdKDjAa4Jt2SKA61ZV3o9aGhJuUPi4gTcnjM3ymju1YUWAuGi\nGas used: 21336\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 286\nMinted NFT with id '27' of template with id '7'\nTx-Hash: th_saGZ21Boi18czSZBPf4KNoHx81a56r1GHXhhykjTQqfPdr8pD\nGas used: 21349\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 287\nMinted NFT with id '28' of template with id '7'\nTx-Hash: th_2BGPc4qHNAK25ZmjX6KkiA9ZuJY59DjSWVhTumwmFjGva3mZzK\nGas used: 21362\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 288\nCreated template with id '8'\nTx-Hash: th_ojhH9bD7kGRpgZ6rXob2qi5asBKsYTdbSVaKzGdpfP6wiRxz4\nGas used: 16491\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 289\nMinted NFT with id '29' of template with id '8'\nTx-Hash: th_2J41T5D4gLyFb6KMZU8Knn6BtaaxvDttqgt4XzC1kjC2fc2e5R\nGas used: 21375\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 290\nMinted NFT with id '30' of template with id '8'\nTx-Hash: th_29p3pK1LLnMmhZePx6vrEn3ZXccXKfGPFBShPqST9eQQ2NqcVu\nGas used: 21388\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 291\nMinted NFT with id '31' of template with id '8'\nTx-Hash: th_2U99fvrvXrkxkcwtycVmKscAJaXubEPmNd8XoBsa2NyC34eUc2\nGas used: 21426\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 292\nMinted NFT with id '32' of template with id '8'\nTx-Hash: th_2KFFYMZMumtEbjDTYv7aYv3eh9psS5w1Lyvj2pdUoRZWkK7R9T\nGas used: 21441\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 293\nMinted NFT with id '33' of template with id '8'\nTx-Hash: th_qw7jZ6UxryTYnBq8dqeDn8Kb9Nphptn59DgQzGoTzN5hNykJd\nGas used: 21454\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 294\nMinted NFT with id '34' of template with id '8'\nTx-Hash: th_WuwCj1ed4WhmL5C1v7NakQXA9Npikg6iYrqxEo2g8FwXKQ1ai\nGas used: 21467\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 295\nMinted NFT with id '35' of template with id '8'\nTx-Hash: th_SxjDmD8bsXtHJkA7xyVRWNiB28tdQucoJSkhqxKJae445afrk\nGas used: 21480\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\nUsing nonce: 296\nMinted NFT with id '36' of template with id '8'\nTx-Hash: th_NxjFwCYKSyCULjgQVgkVx6pW8jjntWK9kpyeWAnmEz4HLjAot\nGas used: 21493\n------------------------------------------------------------------------------------------\n------------------------------------------------------------------------------------------\n```\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n## Simple-NFT-Viewer\n\nThis repository also provides you an example frontend, the [Simple-NFT-Viewer](./simple-nft-viewer) which is written in Vue.js.\n\nIt fetches the NFT metadata from contract [ct_2QTanakTwkp2p68n3aR296iE2ad4tHH3ov8kRy8ySF4xQuunM8](https://explorer.testnet.aeternity.io/contracts/transactions/ct_2QTanakTwkp2p68n3aR296iE2ad4tHH3ov8kRy8ySF4xQuunM8) and displays:\n - Name of the NFT collection\n - Name, Description and Image of all NFTs\n\n## Congratulations\nNow you know everything to get started with minting your own and unique NFT collection on the æternity blockchain :-)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeternity%2Faex141-nft-collection-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faeternity%2Faex141-nft-collection-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeternity%2Faex141-nft-collection-example/lists"}