A drop-in zome library and client tools for storing large amounts of binary data in a DHT. File Storage Zome GitHub repo.
Note: This project is currently looking for a new maintainer.
Please let us know if you’d like to take the reins! File storage on the DHT is a recurring need, but it’s also easy to do wrong if you don’t understand the consequences of your design. That’s why a well-maintained library that devs can just drop into their project is super valuable. You’ll be helping to equip future devs to build amazing apps!
Things to consider in your design:
- WebAssembly doesn’t do well at processing huge blobs. Chunking has to happen in the UI, but the zome needs to verify that the chunks can get retrieved in the right order. Currently the design involves a manifest of chunk hashes + the chunks themselves.
- No DHT peer wants to be holding someone else’s 2GB holiday videos on their phone. Chunking helps to defray the storage burden, and size must be configurable appropriate to the constraints of the user base.
- Once an entry is committed to the DHT, it’s there for good. Consider making it easy for app devs to spin up short-lived file storage DHTs for individual files.
- All entries are strings, and are embedded in a JSON structure for transport into and out of WebAssembly. Base64 might be your friend.
I don’t mind helping to maintain this if others can also pitch in because I’m super busy with Our World but this is a big core component of it so happy to contribute to it…