The Web Native File System (WNFS) is a distributed file system. It is versioned, logged, programmable, has strong-yet-flexible security, and is fully controlled by the end user. Service providers can validate writes without reading the contents of the file system, and minimal metadata is leaked.
WNFS relies heavily on the ”space” side of the space/time trade-off to deliver performance. As a consequence of this and Merklization, WNFS can provide advanced functionality such as versioning and delegated or collaborative write access.
WNFS can be used for offline collaboration, because WNFS forms a state-based conflict-free replicated data type (CRDT): There exists a commutative and associative merge function that combines any two (versions of) WNFS roots.
WNFS is content-addressed and thus extremely portable. It may be stored on the edge, on the end user's device or in the cloud. Devices may also only partially load a WNFS and still write files and directories.
Please see the official spec or specs for more detail.
- Public WNFS (🏁 start here!)
- Private WNFS
- Namefilters
- Skip Ratchet
- For live chat, join the
#wnfs
channel in the IPFS discord. - For ideas & use cases, feel free to use this repo's github discussions.
Note that while the below all describe WNFS at the time they were written, the spec has undergone updates. Please refer to the latest spec if you have questions.
- A Distributed File System for Secure P2P Applications by Brooklyn Zelenka (Strange Loop 2022)
- The Skip Ratchet by Brooklyn Zelenka (Strange Loop 2022)
- WebNative File System by Brooklyn Zelenka (IPFS bing 2022)
- Shared Private Files Design in Webnative's WNFS by Brooklyn Zelenka
- Skip Ratchet: A Hierarchical Hash System by Brooklyn Zelenka