Hydrofile is a Nodejs library (and Svelte demo) that allows users to roll-up content and meta-data for various versions of the same file to be stored onto IPFS. The project also has a demo that allows a user to see the library in action through a front-end. This is a way to keep all your IPFS CIDs in one place, stored into a mutable Hypercore key, which can be saved to Ethereum and accessed by any of your Ethereum programs. Since the IPFS CIDs change all the time, the Hypercore key is handy to keep a static pointer, and that static pointer only needs to be saved to Ethereum once, saving on Gas fees, yet reflects all the new CIDs once saved.

HydroFile showcase

How it's made

Our express mission was to maintain CIDs of various versions of the same file. Since IPFS distinguishes solely on CIDs/Hashes, our library accomplishes the technical task of maintain the structure around version control, and store this information in a easily retrievable fashion. To encode the real world process of version controlling files, we use JSONLD to create a unidirectional linked list ordering of the metadata. This allows us to recurse back to older versions of a File on IPFS as needed. This provides an elegant solution to our first challenge. Our second challenge was around retrieval, for this we created an augmented Trie, to maintain a keyword search with leafnodes pointing to Versioned Files. We also took the Heads of the linked list, which we rolled up into Hypercore. This allows the library to leverage the public key of the Hypercore instance for visibility and distributed access. Once we've rolled up the file metadata onto Hypercore we simply have to insert the public key into Ethereum

Technologies used