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:
QmcK88CTcf4pt5rmFLFS7R2E3gH5Bd1Ljzn4jwM3sWheXb
QmWaZJ4mV7qo1KoQ5h73aJQMhTcaz6RJNme11wPdjJc3rM
QmXHdB2P9CJJKXFCtCs4w1wFtjxD4W65nCJsFvH6sFvimg
QmT5noisEBQdvMpNL6M7x5jMFEqouxaHrHzGryxkEMbRB6
QmUjBNgXFMMRTGajTVmC5WUvqqYZZqZDx8vMZyrg2hLvci
QmeS742ov22gRe1a8xnzRUx4x3dbxPPincsEiA2mugNJ7W
QmaZeNATSMChphgCY9DT6YJ61z3qP7iB8d55xPow4X5HG1
QmRtThz413TY6HYiyLicKJoFRXA6xNXUATE5S5UbfmdxHW
QmfJRvierpZj3vNZWHG2JGtwAEv6f1x48EAcdt5unQ54Ko
Qmf32EG2Nh5gvFrrNWLc1NKq4pChRvUo35CqaHrBnKDLro
QmQfGB2pDAt2Fn2FAnVLABsLQQPAx15dxmZCurqUpw5L73
Qmb8ifdM4oJDVbUfr5JrA2BQAW6RP67doe4b7ukSrzLRYj
QmQx1FdyYMdGUFEm8NuGNQEQ9hmmpmxX1riHq3b7567gW3
QmRQ1xyDTnCwxedVipSXuBLMeZsaYG8M17XqYZanGmaTRR
QmZYcPoWP5arnjbBr2SYAEFJTcU3jB8vAABiRoejA3AWjn
QmSnekSgRK1cmdtmSBTegW2tdRv5186sk9TwrriZMGb2yi
QmV9UExR1ZGtuShFTPGNwYYBpPtACHG15FgmNSNtwLR1fn
QmasvhgdDCthMN2GbwSgheACjqpntMzmaoQ8jWxt2YvB5G
QmP5ESNiJAjp2qsipvjiXT1i1ZtoXvJ9biVEhVJ2ApRkTU
QmdvojJtQFGNTekVpzJHBb3u1urm46H2BGQnHNcukie2rk
QmTFF8kaj1TrGzzHP991mkqcwBvfWq6xxNQCGnd6FFxU3o
QmdutktyQnESWCye1JuFRvW4ySqMiqVww9LarniitYNzVc
QmccvCfN4bd3KMPodsexXPy9ufQHmx73zBB67BRrxoudfu
QmceREWU3bL9WeGUFgXd1vVdsaePA1tJbUXsodsaGstbJm
QmZpwvP35qr5e7depjw2yPBnHkmaH9MUfnax6mTV9Vb8Hs
QmSpEpXfDyTSLN7bhSUkpKizWu6VgJ6V8Mn5p7kDoiBfh5
QmYGoTEPefF9Se5wtPYFw77bqipbjUagC6UtB8TdZMmkGA
QmRrJ2yBYNuBKW9RFgEX76FjqEcy6zte62NFXc7aueC5wW
Qmc57t9UhPYJDdUKkfYL59W8gEFPstX9D79XCqdmF5bJzJ
QmZHks7ATwKXo3hpYGKL4JULKC1bTVZFpb4sX7xe4NXroX
QmVrS79TCJ1iCV8BSZLbMPqHAUKDhU1urJmSFY9GuTaTa7
QmYWqTqiqngDwnptdBZAjeFYWZiNbkLidsMKoFU75yAsEL
QmbJ7UmgZAtR52panG4qt6BYD8Jvmk8XRpPb8Zz53is4no
QmXGEpGLYfVKLmEzzCZz931AVdERp22vHZEgnh1C2PTpyn
QmRg7TzmFm7r7aqhNmHxYG8FVjcfdCeuwr6RSFi9w6Xu8G
QmTsSnVy9NZYMzWm8iTtr5jDxANQMNEzYe8pJoWmf5Hr8c
QmRNVsePm1rWcDQgM96Wzq45Q8caEUpmQJjpLQGTgDdpsw
QmVJfNY8ryRs2Zd5ZWMJ6zxwzcgJcsgo8jNaUK98jNx5NB
Qme8hMy6D9D4BCm4RRs7zFSP2E6A4Ddp7hQXtp7sZCJAc3
QmNeovSGAc6w6reCYaqMF8vCCrywjSsSKZVWnNXwNy6YaH
Qme8wWGdEA1wr4xAjmSMQT2a7qzyJdGJXjWRz5E4oxi8XN
QmNwJaHPfqeoNHETz8m1TtA4d8QWvp3pPB5ZapAv3xNBTE
QmdoVuKWZdg1wqn7feUK1skNeSnwCgDkHicrzwh1PsmzPU
Qmebo33gznk22ooccww7Q3bWbAmP9jWcBJtozK88Sjhn6D
QmSDJxysHFi57nFeir1hpVZp8mHAEcT6MVeCaiqdGWdiNx
QmPWkfPpk8BpVP6JZavJJs9HfWdHW5fffp7hy6QcWuGUyj
QmPZYEx62dZ4hs2SGmN85mKJwmLsTEKayxDk92dcWVe9A9
QmQbKKxBY8KVfxJLXTHhjmkCWeWaDhxyp1VDV67UXJkmFZ
QmefNTzvKpfEsqxXssNksu2DCPouwFxxmRjuSgbyQZJsbo
QmQ8wyzFhCvuxCjAFsciMuFiN9pEGkSn4BkrBVJ6XwtWqa
QmXr3jbojMGds8voUjavm6dBUA7HustiWdPX9zLiJ7W4b4
QmcxF7DZhDwGQ5vyx7SuBwzSEM6zcawi72j8aHGWdHZD5k
QmekVc1PwgMdgHtSwj4MDeEhvtTw8vweTv259Jbu2P6Vzs
QmcCHyWrhivSdSqEXhM5C6aLv5E1LQkJYXsFT9QEqvubHL
QmPtZjVwBN9kZP4gVd6eS7bePfZNaVp9fJAgufajEShqhz
QmdxMDqayichcwEAx9Ykxo9q4EsgCozoLswk3fmJT9GT9J
QmUmAXm5Gk1PWbbYERztTGJuMbLWZ9HwCjtGgjxpYRRE4r
QmYHUGnTjVpsiPdRcVPsh9iRRrLAswuBkqBaKt1Uds9pG6
Qmdxt1PRn4VFPcCfHWGW3AXiTYETHFfubg8gr4SiViuMeX
QmPUyzhEJP5yd14XePNVui9SkJF6iv93bc5CtiXk4Q2kGB
QmTVx3bk4H2C7rjvxwKaVCiXQASTeKxjqyM6cxK25TfPbR
QmV3u3KfxWvf2TMg3kWUdkXQ7SnFmC1HaygAGDx1fCoKr9
QmcaPro3VcCKPkeYTm6s2v8EXHfMsPGTCqxpv8Cg2oDaE4
QmV1KqHRoXQQis9TPY3X5Bp7Z33Jr5KnkAwKdH6CSeGTyF
QmWh1yFDtyVVBMss5eUbZRMNH1ViyArK6ixKToWNXKh7P8
QmfE7tWfbbgKjCiEAn7dJVunyP9fpu3ScdGmh6v2Usd9pg
QmWJPqRXEZQnKeCwUHJxMSEj9kmjjeCP9Xk2a1t5JfPx32
QmTfd8FsaioW3Zhygr3igrP1r3xviJcXTufUGotyJJZxq9
QmcmBFh3bgRpFnpwrwe7aoEb366FkfWuuR9UwUTigGebTM
QmZHsCeKhGmZYGp2aXRPS2YqqUFbeKLoR8WyRXwHxPQNdU
QmTjDFymuyhMPYEG56p63UcZZjUzKW2TNJpi6LyeTPeah8
QmZB3yhv4AFbRF97TkvJPL7wRtVJFbACANxbmJxZaitenn
QmYzQDdERKiTxHcHTGSJsV5ZWPE4Vb9cqVNk2UZeqNCokg
QmXHBLVWETsyVGeBDpBbYkiGmYyacW6VvkHpzDxJnf1b56
QmSVadXk3vKzdmpb4HmJZCRqiJkWtyWT3HvBA5sKEXitpp
QmVx1nUrHZmgGMetEUL1AZ8ZuZ7x48pksKhMwe38GnMgpa
QmdzwZdWCShaUXCBp5eTDCooPfsuKZ2bZa6sjRThxqXuxA
QmYS5HdyqHjWxcibx61SGxHTEkPNfRjbb6k1EZYZQDxLfS
QmWLpAkizxaWTewLfnhCYjsgPt7MdmnLas7Xtp8DT4hxXB
QmVMGvexBSYJzARrQQFpkKvJ5YMxVtZAuuCJCqLmiaU8jo
QmUDUiLTERFx3xy1gmYpbaj9f5pMhoF8YTo4gUu2UBrUJd
QmZJJXpwpNtypecCgouVDZrDssipzpJ3boDnJ8ZuU7AydP
QmRCTwfDXfsE1e8Y5b3fncrUTJ5SiR7sCVaiJnVTRRdXHj
QmQUnyTtLWXrMELAAr2o1XBhHGmYvp2yEFm7FJWpMgFkCE
QmWoESmibhpdHQseHrpZa4hvGK4R8Eka62bCSN7PDPyxw4
QmdVo9RthNAHMwwVFpvjL37QTHsRsB115rm1nLMxnKARNX
Qme87dccLtF9wPfhyo4hSzgM8AJGjMoakhFAimGzQ2kTBn