r/zeronet • u/BillHaunting • 1d ago
Built something with a similar shape to ZeroNet, different tradeoffs
Posting here because this sub is the one place where I do not have to explain the premise. You already know what a site addressed by a keypair is, and why that matters. So I will skip that part and go straight to where mine differs, including where it is worse.
I built CAPSULE because I did not want to trust anyone. Every service I used to send a file said it was encrypted, and all of them could still read my files. That is the part that gets leaked, scanned and sold. The question is not whether something is encrypted. It is who has the key.
A .capsule address is an Ed25519 public key, 56 characters of base32, same construction as an onion v3 address. Nobody issues it, nobody renews it, and the only thing that can publish under it is whoever holds the private half. Records carry a sequence number, so an old version cannot be served as current.
The host cannot read the site. A ZeroNet peer seeds files it can open; a CAPSULE relay stores one encrypted blob, padded to a size class, under a neutral filename, and the key that opens it lives in the part of the link that browsers never send to a server. The relay knows it is holding something and nothing else.
A page cannot make a single network request. The extension does not display a site, it rebuilds it: bundle references become data: URLs, anything pointing at the open web is removed, <base> and meta refresh are deleted, and the result lands in an opaque origin under connect-src 'none' with no scripts by default. No fonts, no pixels, no beacons. That is a property of the format rather than a setting.
The whole site downloads at once. No partial fetch, on purpose: asking for one file at a time would tell the host which pages you read.
Where it is worse than ZeroNet, and I want to be clear about this
Relays are servers, not peers. Somebody has to run one, and if nobody near you does, you are stuck. ZeroNet's seeding model is more decentralised than mine in the way that actually counts, and I do not have a good answer for that yet beyond "relays are one process and anyone can run one".
And the network is small. There is a mix network in it, Sphinx packets, uniform size, per hop delays, so that the relay storing a capsule never learns who asked. Routing through relays that one person runs protects nobody, and that is close to what exists today. It gets better when other people run relays. Nothing else fixes it.
Code: https://github.com/missingus3r/CAPSULE
What it is: https://missingus3r.github.io/CAPSULE/
MIT, no token, no company. docs/THREAT_MODEL.md and docs/MIXNET.md are the ones that say what does not work, including the paragraph above. No external audit, which for a security project is a real gap and not a formality.
Genuinely interested in what this sub thinks of the relay-versus-peer choice. It is the decision I am least sure about.