MyNFTs (Natal Artists collection)
This project implements the ERC721 Non-Fungible Token Standard, including the Metadata, Enumerable and Ownable extensions, and include a mint function to mint from a list of IPFS hashes (CIDs) that link to the json metadata.
About the NFTs collection
First works by artists who don't yet know they are artists... but they will be.
Technical features and used tools
- Solidity
- openzeppelin interfaces (ERC721, ERC165, Metadata, Enumerable and Ownable)
- Truffle
- Unit/Integration tests
- Chai (expect)
- truffle-assertions (revert assertions)
- openzeppelin/test-helpers (time and block manipulation)
- eth-gas-reporter
- solidity-coverage (code coverage)
- coveralls (code coverage report)
- solhint (linter for Solidity)
- slither (vulnerability analyzer)
- Full contract documentation (NatSpec Format)
- Solidity coding conventions
- Deployed to Rinkeby
- Minted tokens (on Rinkeby network)
- Opensea (you can see the NFT collection in Opensea)
- Rarible (you can see the NFT collection in Rarible)
- Pinata (Pinata was used to upload and pin the files to IPFS)
- IPFS (images and json metadata files)
- CI (Github Actions)
Additional and extended functions
- mint(): Mints the specified list of
hashes
(the IPFS hash of the metadata file) on behalf ofto
. - walletOfOwner(): Returns the tokenIds of the
owner
. - tokenURI(): Returns the Uniform Resource Identifier (URI) for the
tokenId
with the IPFS hash of the json metadata file. - setBaseURI(): Changes the actual {baseURI} to the
newBaseURI
.
NOTE: For more information see code comments in
NatalArtist.sol
.
Links
- Contract (Rinkeby network): link...
- NFT image: link...
- Metadata json file (NFT 0): link...
- NFTs collection (Opensea): link...
- NFTs collection (Rarible): link...
Reports
Solhint
solhint 'contracts/**/*.sol' -f table
Tests
truffle test
Code coverage
truffle run coverage
Gas
truffle test --reporter eth-gas-reporter
Slither
slither --exclude-dependencies .