This system uses the IPFS protocol. The protocol takes care of distributing data in a safe and efficiently distributed way.
In a nutshell, it works like this:
- IPFS uses content based addressing, so each file or folder has an address calculated using an hash of the content
- IPFS is fully distributed, and safe, because anyone can verify some data actually matches the address
- IPFS is efficient because anyone that views some content caches it and helps redistribute it. Your machines however will never redistribute data you haven't viewed or downloaded
- IPNS associates an IPFS address to the address of a node, it works like a pointer to track data that changes over time
__Data Storage:__ A user's profile, posts, votes, comments and all his other data is served by him and stored in his computer(s). Anyone that views his
content will cache it by default thus helping others to see his profile. That's why if hundreds of people open the profile page of some
guy, his computer won't be overwhelmed because the data will be passed from computer to computer and will be available unless _everyone that has a copy goes offline_. Even then, we thought about fully optional __Cache Servers__ to help. You can learn more about them below.
### Data Storage
Each user exposes a folder called `ipfs-boards` in the root of the IPNS
publication, containing:
- boards
- _board name(s)_
- settings.json - the board's settings
- whitelist - contains links to all whitelisted users
- blacklist - contains links to all blacklisted users
- approved - contains links to all approved content
- posts - contains files named with the date of submission
- comments
- (parent-hash) - contains files named with date of submission
- posts
- _board name(s)_
- _post(s)_ - named with their creation date
- comments
- _board name(s)_
- _comment(s)_ - named with their parent object uri