My NFT collection has all token metadata, images, and other assets stored on IPFS, a distributed, content-addressed file system. This ensures my NFTs are not dependent on a traditional centralized cloud backend to store images or host metadata.
This page provides some info on IPFS, as well as lists all CIDs associated with the project for others who may which to pin my files on their nodes. For more general information, see the Project Info page.
IPFS uses content addressing, which means that the identifier for a specific file is derived from its contents. This is a powerful feature, since clients can verify that the contents have not been tampered with by re-computing the CID (content identifier) locally after receiving the file from the network.
My NFT smart contract stores the IPFS hash of the metadata associated with each token I mint. This not only allows my contract to point marketplaces to the location of the metadata, but creates an on-chain assertion about their contents.
By default, IPFS network nodes will garbage collect files under certain circumstances. Files can be "pinned" on an IPFS node, which will prevent this process from occurring. Currently I use a commercial service to pin all of the files associated with my tokens across a few different regions, but will be hosting my own node(s) in the future.
Anybody can pin any file, and by having my collectors, friends, colleagues, or archivists pin the hashes associated with my content, the files will always* be available on the network.
What happens if I am no longer pinning the files? Eventually, if I neglect my commercial pinning service, or shut down all of my personal nodes, and nobody else is pinning the files... they will be garbage collected out of any other nodes in the network over time. This is the case for all data hosted on IPFS.
The CIDs of all files associated with this project are available in the GitHub repo (currently in the token-manifest package), and all currently "active" metadata hashes are directly queryable on-chain (metadata variations that are not active are not directly queryable, though any web3 client can read private contract data).
All metadata, image, and asset CIDs:
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