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.
First works by artists who don't yet know they are artists... but they will be.
- 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)
- 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
.
- Contract (Rinkeby network): link...
- NFT image: link...
- Metadata json file (NFT 0): link...
- NFTs collection (Opensea): link...
- NFTs collection (Rarible): link...
solhint 'contracts/**/*.sol' -f table
truffle test
truffle run coverage
truffle test --reporter eth-gas-reporter
slither --exclude-dependencies .