Awesome and mind-blowing. @blintz could you expand on the possibilities?
Could a web server serve pages without learning which ones is it serving? (EDIT: https://spiralwiki.com/ ooooh!)
Can a distributed storage system like Arweave serve content chunks in this way? Can a video hosting stream video without learning which video is it streaming?
What are the performance hits?
Yeah, the possibilities are extensive! This is what makes me really excited :)
Yup, our https://spiralwiki.com demo shows how to do this for webpages (Wikipedia).
We’ve looked into using Spiral to make distributed protocols like IPFS more private. Especially for content-addressed systems like IPFS, privacy is a huge roadblock to adoption: who wants to announce the exact content they are looking for to (almost) the entire network? Spiral could definitely help, though ultimately, the IP layer will still leak your IP to the final target server. At the very least, using Spiral to do Kademlia for IPFS, your IP and desired content will not get broadcast to every node on the network. It seems cool, but we’d like to figure out if people would pay for that (so we could grow / pay our server costs).
Yeah, it works surprisingly well for video. Something like ‘private Netflix’ is pretty feasible.
The performance hit is significant, since to answer a single query, the server needs to do a computation involving every element of the database. Still, as you can see from the demo, this can be pretty darn fast.
reply
100 sats \ 1 reply \ @om 13 Sep 2022
Sweet!
Suppose you have a list of key-value pairs and the hash of this list is well-known. Is it possible to not just fetch the value but also prove that the value comes from the list?
A weaker version of this question, is it possible to scramble the database in such a way that the server can still serve queries but can't delete a row without discarding the whole thing?
The case I'm thinking about is DNS. The "Unstoppable" domains, for example, are very much stoppable as all Polygon queries go through polygon-rpc.com (this is exactly the sort of thing that makes Bitcoiners roll their eyes and claim that Bitcoin isn't crypto). It would be super cool to resolve domains without revealing which domain you're looking for, but the problem of censorship isn't immediately solved by Spiral yet.
reply
This is definitely gets more into the realm of zero-knowledge. Basically, as it stands, it is not easy to prove that the server is not censoring or tampering with the database.
DNS is a great application, especially for various decentralized naming systems, like ENS or Unstoppable. Certainly we can at least mitigate the privacy disaster that is status-quo today (people just using eth.xyz, and broadcasting every .eth domain they resolve to a random third party). Censorship-resistance is, like you said, a whole new can of worms.
reply