Freenet
Freenet is a decentralized, low latency, peer-to-peer network.
Freenet versus I2P
Freenet is a closed network that is much closer to I2P than to Tor. Content is all inside the network, and it is not designed to be used as a proxy to the clearnet. Users do not operate servers or routers on Freenet, they make direct connections to peers on the network, and interact with smart contracts.
Both I2P and Freenet have had programming language upgrades, with the new Freenet being written in Rust. The network architecture is completely different from the old Freenet of past; this is a re-design.
Freenet is ideal for publishing files anonymously, since those files live on the network, not on a server. Unlike I2P, Freenet interactions typically happen via web browser. Having said that, the Freenet core can be embedded in apps and it uses HTTP socket or websockets for transport.
Routing
A user node holds smart contract logic for the contracts that user has interacted with recently or currently. The network is a global key-value store. To find a smart contract the user sends their request to a peer who is closer to a node with that contract, and so on until the destination is reached. This decentralized method of reaching a destination is based on greedy routing; where each node connects with a peer that is closer to that content.
The image above depicts a user's place in the network relative to peers. Every node is assigned a value from 0 to 1, and the numerical difference between two nodes determines "closeness". Instead of a straight line segment, it is formed into a conceptual circle, so 0 and 1 are immediate neighbors. Modular arithmetic here - 0.9 is closer to 0.1 than it is to 0.5.
Anonymity
Freenet routes traffic through multiple hops on the network, but does not do this explicitly for providing anonymity like Tor and I2P do. Freenet emphasizes low latency, and leaves stong anonmity guarantees up to the application. A series of contacts could be constructed to provide more, but every application does not provide this.
Video explainer from Ian Clarke:
clearnet |
Tor |
I2P
If these links don't work, use the "watch?v=PKUmtpwbsMs" with any invidious instance
Smart Contracts
The contract logic is separate from the application state, but I'm going to need to get more familiar with these contracts before I go into detail. A smart contract is web assembly code, associate with shared state on the network. The code for a contract is separate from the state, which can change without changing the contract ID (basically a hash of the contract code)
Here is an exaplainer video from freenet's youtube channel:
clearnet |
Tor
I2P