ChainSafe Storage is a suite of APIs and services that allows users to store and retrieve data from IPFS and Filecoin. Users can either use dashboard or use APIs directly to integrate ChainSafe Storage in their applications. You will learn how to interact ChainSafe Storage in upcoming sections.
The chainsafe storage operates with the concept of Buckets. It is conceptually similar to features in other storage services that use the same term. A Bucket represents a file grouping mechanism that allows all the files belonging to the Bucket be part of the metadata hierarchy. This is almost like a file system but without per-file access control and instead the access is controlled at a per-bucket level.
All of the files uploaded to IPFS are represented in a flat structure but it would not be sufficient to store them like this so the obvious idea would be to use the IPFS file system. However, such a file system is open to everybody and might reveal file or folder names and relative positioning, this could be something a user may never want to reveal. As a solution to this problem we store the file's hierarchy in a way that it won't be revealed to anybody on the public network, it will essentially be stored as an IPFS object.
Unlike the flat structure of IPFS, our file system will preserve original file names, relative paths, content type, size and most importantly create a mapping between this metadata and the real IPFS CIDv0.
As mentioned earlier, we are not doing an access control check on files (because it would not be possible taking into account the nature of IPFS) but rather on the file system and Bucket. So only users with the proper access rights can manage data in a particular bucket and as a consequence make changes to the underlying file system and discover the mappings between metadata and CIDs of the uploaded files.
It would not be fair for us to restrict usage only to the internal file system, so it is also possible to create a Bucket that has an IPFS file system associated.
All the features that Chainsafe Storage Provides, whether is S3 compatible storage, NFT storage or file uploads, are built on the buckets internally.
Summing up everything that we just described, Buckets is a structure that holds:
Filesystem (files hierarchy) type: chainsafe
Lists of Owners, Writers and Readers
Size of all the data stored in it