28 ms·
Show HN: Freenet, a peer-to-peer platform for decentralized apps
For the past 5 years or so I've been working on a ground-up redesign of Freenet, my peer-to-peer project from the early 2000s (now renamed Hyphanet).
The new Freenet has been up and running since December along with some early applications like River[1], our decentralized group chat and Delta - a decentralized CMS. Users have already started to build their own apps on Freenet including games, and we have some interesting apps in development like Atlas, a search/recommendation engine.
Architecturally, this new Freenet is a global, decentralized key-value store where keys are webassembly contracts which define what values (aka "state") are valid for that key, how or when the values can be mutated, and how the state can be efficiently synchronized between peers.
We've developed a unique (AFAIK) solution to the consistency problem, every contract must define a "merge" operation for the contract's associated state. This operation must be commutative, meaning that you can merge multiple states in any order and you'll get the same end result.
This approach allows state updates to spread through the network like a virus[2], which typically achieves consistent global state in a few seconds or less.
Like the world wide web, Freenet applications can be downloaded from the network itself and run in a web browser - similar to single-page apps on the normal web. However, rather than connecting back to an API running in a datacenter, the webapp connects locally to the Freenet peer and interacts with Freenet contracts and delegates over a local websocket connection.
If you'd like to try Freenet we have convenient installers for the major desktop OSs but not yet mobile, and you can be chatting with other users on River within seconds[3]. Happy to answer any questions, you're also welcome to read our FAQ[4], or watch a talk I gave back in March[5].
[1] https://github.com/freenet/river https://github.com/freenet/river
[2] https://freenet.org/about/news/summary-delta-sync/ https://freenet.org/about/news/summary-delta-sync/
[3] https://freenet.org/quickstart/ https://freenet.org/quickstart/
[4] https://freenet.org/faq/ https://freenet.org/faq/
[5] https://youtu.be/3SxNBz1VTE0 https://youtu.be/3SxNBz1VTE0
- deleted 5mo ago[deleted]
- Aldipower 5mo agoWe had too much Gnutella. I am in search for a locus to us. Now. SCNR
- EGreg 5mo agoBig fan of this project. Three years ago, I interviewed Ian Clarke about his upcoming Freenet rewrite. He's the original "OG" of decentralized content networks. We go into detail regarding its architecture on the podcast: https://www.youtube.com/watch?v=JWrRqUkJpMQ https://www.youtube.com/watch?v=JWrRqUkJpMQ
- aleqs 5mo agoVery cool project! > We've developed a unique (AFAIK) solution to the consistency problem, every contract must define a "merge" operation for the contract's associated state. This operation must be commutative, meaning that you can merge multiple states in any order and you'll get the same end result. Where can I learn more about this? How is this different from CRDTs/CmRDTs?
- dtj1123 5mo agoI'm also curious about this. I don't understand how deletion and modification can be made commutative operations in a way that makes sense
- cassonmars 5mo agoFor a basic CRDT set, merge rules have to have some kind of temporality basis in the messages such that commutativity is preserved. usually it's a timestamp, sometimes it's an unforgeable value like a hash, e.g. A: { "prev_hash": null, "content": "foobar" } B: { "prev_hash": "<hash of A>", "content": "foobarbaz" } C: { "prev_hash": "<hash of B>", "content": "foobaz" } and when played out of order, it's guaranteed to resolve to foobaz eventually or immediately, depending on when messages are received when you encounter the scenario of a fork, there's usually a fork resolution rule, e.g. D: { "prev_hash": "<hash of B>", "content": "foobazbar" } to resolve C vs D, sort lexicographically, choose direction of sort order and pick first When you have non-continuous data due to messages dropping, e.g. you have B and perhaps an E that builds on C, you can either use the same lexicographic rule, or make the hash basis a combination of timestamp and hash, so you get temporality and lineage. As for deletes, you have either the single set approach of simply making the message content empty and that _is_ the delete, or you have the 2-phase sets, where there exists an add set and a delete set. Quite a few ways to approach it, but commutativity can be readily preserved.
- Groxx 5mo agotombstones are sorta the default answer here (i.e. at simplest, you keep all data forever so you can merge correctly, but you hide anything where you've seen a tombstone after it). but "makes sense" and ways to optimize that can change massively with context. e.g. for a chat app, as soon as you see "deleted message X", you can reasonably drop X and all past and future changes to X because they won't be shown by anyone (don't even need to sync them). if you do that with "deleted chars 87..93" in a text editor, past-edits that you receive in the future might affect the behavior (it might add chars before those, changing what that range means), so you can't simply forget those chars (e.g. an easy option is to replay all events that occur after an event syncs, but that means retaining all events forever). the semantics you choose and what you do with the data affect your outcomes a lot. tbh this is one of the reasons I like the idea of a WASM-defined algorithm. no one algorithm will be "best" for all data, and the storage/computation/transmission savings can be extreme.
- dariosalvi78 5mo agoI wrote a short University essay on Freenet in 1998 I think it was... I may still have the document somewhere. Good stuff, very pioneer!
- duskwuff 5mo agoUnfortunately, this is an effectively unrelated project.
- noosphr 5mo agoThat project had nothing to do with the freenet that ran after 2006 either. It's not the first ground up rewrite with major breaking changes using the same name.
- sanity 5mo agoNot sure how you can say it's unrelated given that it was created for the same purpose by the same person with many design similarities.
- Groxx 5mo agoNeat. I've been wanting to see WASM-defined network behavior like this for a while (yay arbitrary consistency algorithms!), I'll have to explore it in more detail :) (the main thing I've been wanting to try: rather than graphql, send a WASM blob along with your request to a server, and just run it to filter fields in the response / pipeline requests / define "fail if any err / pair errors with requests" for concurrent requests. arguably you could even have it control callee-internal retries.)
- sanity 5mo agoThank you, that's actually an idea I considered a while ago - embed some wasm in a GET request (which retrieves complete contract state from the network) that could pre-process the state before returning it to the requestor. The issue was that Freenet requires that intermediate peers can cache the contract state as they're passing it back to the requestor so in the end I decided against it, but might revisit in the future.
- Groxx 5mo agoyea, there's a lot of scenarios it doesn't make sense in imo. and even with processing-gas-limits it's still kinda weird and harder to prevent abuse on (e.g. you can't predict costs because you don't know what requests it might send next - graphql's declarative approach helps it here). but for e.g. mobile apps with a trusted backend? probably great. you could even just send hashes of the WASM blobs because they will often be identical (and the full blob if that fails), and some serialized data to serve as args that vary (e.g. page-size limit of the third internal request), and you'd have an absurdly flexible system with fairly small requests. I'm just not sure how small, or if it'd end up computationally worth it compared to graphql / sparql / etc.
- nurumaik 5mo agoI think better approach for "ghost keys" would be requiring X amount of crypto to be sent to 0x0 (burning). Current implementation (requiring donation to freenet) basically gives freenet foundation infinite reputation (including any other potential project that would accept ghost keys as identity), kinda breaking the decentralization aspect
- sanity 5mo agoGhost keys will ultimately be just one of a menu of options for bootstrapping reputation in a decentralized reputation system. They have the advantage of simplicity, anonymity, and helping to fund the project, but as you correctly point out - they are centralized. A cryptocurrency-based solution like you suggest will undoubtedly be one of a menu of reputation bootstrapping options that will develop over time.
- blamestross 5mo agoReputation systems have been a theoretical idea for a while, but we haven't come up with anything sybil-proof without centralized identity management. "we have a menu" sounds a lot like "we don't actually have any viable plan" in this case. Don't get me wrong, this is awesome. I think it is built on a subtlety bad premise. I think it is time to start build organizational nomic games on this sort of contract system, literal organization governance, for systems like this to thrive.
- Groxx 5mo agoThere are tons of sybil-proof systems if you don't include signal from sources by default, but instead opt them in by hand. E.g. use a web of trust and then choose who you trust. It doesn't matter if there are trillions of accounts you don't trust, because you don't trust them.
- blamestross 5mo agoWhich isn't a web of trust. it is just an "allowlist". Humans are vulnerable to sybil attacks too.
- analogpixel 5mo agoELI5, how is this different than the internet?
- sanity 5mo agoImagine an internet that is fundamentally decentralized, where your online presence isn't at the mercy of a company like Google, Amazon, or Microsoft. Think of it as going back to the Internet's decentralized roots.
- alun 5mo agoVery interesting. Beyond ideological motivation, I’m curious what the long-term incentive is for someone to run a peer. For example, if Freenet were to reach scale, it could eventually need some kind of economic primitive around it. Something similar to how Filecoin handles decentralized storage, but for app state. One way to do this could be paying peers to keep app state available, serve it reliably, etc. and prove they are doing so.
- sanity 5mo agoOur intention is that Freenet will only consume surplus resources, but we plan to build a reputation system that could have a notion of "karma" that is earned by providing resources to the network. This karma could be used to gate access to resources, for example like a VIP chat room on River. So there are a lot of possibilities but for now users are motivated by a desire to see the network succeed, and that seems to be a sufficient motivator at our current scale.
- alun 5mo agoSeems reasonable to build a cryptocurrency around this. The network could pay the cryptocurrency out to users dedicating resources. Have you thought about that?
- sanity 5mo agoYou'd still need to solve the double-spend problem, because while contract state on Freenet will usually synchronize within a few seconds, it isn't guaranteed to converge to a single globally consistent state. Freenet's approach works well for things like group chat, where temporary inconsistency is mostly just an irritation, but for a cryptocurrency it is fatal. I'm not saying you couldn't build a cryptocurrency on Freenet, but you'd still need a solution to that problem.
- thrance 5mo agoCryptocurrencies have a toxic reputation. Associating one to this project is a sure path to killing it.
- gustavus 5mo agoIn my early days of technology tinkering when I was young I was always interested in security, and one day I stumbled upon freenet, and my world changed. It was amazing and led me to get far more acquainted with the cyberpunk scene. It was this alternative separate internet from what the rest of the world saw with all of the good and bad that brought. I've been meaning to set it up again and get back into it. I will say for everyone pining for the Internet of yesteryear freenet is it. Go and explore it it is everything the 90's Internet was like, super slow, crazy unhinged nerds all over the place random collections of links, crazy. Thanks for all you've done Ian Edit: Btw what is the best way to support the project and get involved?
- sanity 5mo agoThank you! If you're in a position to support the project financially you're more than welcome to donate[1], we're a 501c3 non-profit and all funds go to support development. If you're a developer and are interested in building on Freenet I suggest starting with https://freenet.org/build/manual/tutorial/ https://freenet.org/build/manual/tutorial/, you can also join our Matrix room[2], or install Freenet[3] and chat with us on River[3], our decentralized group chat. [1] https://freenet.org/donate/ https://freenet.org/donate/ [2] https://matrix.to/#/#freenet-locutus:matrix.org https://matrix.to/#/#freenet-locutus:matrix.org [3] https://freenet.org/quickstart/ https://freenet.org/quickstart/
- endofreach 5mo agoVery interesting. I have been working on something quite some time, where something like this would play a very crucial role, but i never got around to really thinking about how to implement everything. And as I have still a lot of work to do on my project, that would utilize something like freenet, i am very eager to dive into your work. Just wanted to write this as some form as appreciation for your work. I wonder though, what is your idea of a future, where freenet plays an important role in most peoples lives? Great work it seems, so far. I will yet have to really look through it all. Congratulations on this.
- sanity 5mo agoThank you! > I wonder though, what is your idea of a future, where freenet plays an important role in most peoples lives? While I realize this is wildly ambitious, my goal is that Freenet could ultimately replace the world wide web and the client-server architecture more generally which I view as inherently concentrating power in the hands of a few (which it has done).
- qcl820DV34 5mo agoNotably this project was conceived by a backroom decision to dump the original Freenet development team's work, in favor of a rewrite from different developers, without asking anyone on the original team. It was an ivory tower decision which was announced on the mailing list without prior discussion. The old team did not agree, yet it was forced through by a decision of the "board". The "board" was a group of people which had not been active on the project for over a decade. https://www.mail-archive.com/devl@freenetproject.org/msg55262.html https://www.mail-archive.com/devl@freenetproject.org/msg5526... The funding of the existing, original "Freenet" was repurposed for the new one of course. The new "Freenet" does not have anonymity as a design goal anymore, while the old one continues to exist and is maintained under its new name "Hyphanet" at: https://www.hyphanet.org/ https://www.hyphanet.org/
- nightpool 5mo agoI'm very glad to hear that—the anonymity of the original Freenet has led to it being a very unsavory place that was more well known for CSAM then anything positive or useful. As an outsider, it sounds like this new direction is the right choice for Freenet to try and attract new users and fulfill the team's original goals.
- qcl820DV34 5mo agoExtremely depraved things are not the only thing to use freedom of speech for, and freely speaking can result in all kinds of repressions. And even without agreeing on whether people should be anonymous on the Internet, it could be agreed that replacing a software which guards against a certain threat model (repressions) with one which does not, without changing the name, is not exactly a wise decision.
- sanity 5mo agoThe new Freenet will support the creation of anonymity systems as services on top of it, which is much better architecturally than tying the platform to one approach to anonymity as I did when I designed the original Freenet. We will also have a decentralized reputation system that will protect people from being exposed to unsavory or illegal content, a common criticism of the old Freenet architecture.
- treyd 5mo agoThis is awesome. I rotated some ideas like this in my head a while ago but never had the motivation to put it together. Happy to see more types of protocols like this.
- omoikane 5mo agoSee also: https://news.ycombinator.com/item?id=40469711 https://news.ycombinator.com/item?id=40469711 - Ian Clarke explains the next generation of Freenet [video] (2023)
- sim04ful 5mo agoThere's also https://internetcomputer.org/ https://internetcomputer.org/
- hbarka 5mo agoIs this similar to how Napster worked?
- sanity 5mo agoYes in the sense that users pool resources for the network, but no in the sense that Napster relied on a centralized database of content - whereas Freenet is entirely decentralized. Also Freenet is much more general, you could think of Napster like a shared hard drive, whereas Freenet is like a shared computer capable of running decentralized applications like group chat, social networks, search engines, etc.
- foobarian 5mo agoI thought Gnutella was a bit more like Freenet than Napster, iirc only the bootstrap was centralized.
- sanity 5mo agoGnutella was decentralized like Freenet, but it's broadcast search approach limited scalability relative to Freenet's "small-world" approach which can scale indefinitely.
- mweidner 5mo agoFor values that don't have a natural merge function (or where you don't want to bother writing one), would it make sense to sync update logs instead? That is: - The synced value is a history of client updates, sorted in some eventually consistent order (e.g. by hybrid logical clocks). Merging takes the union of the update sets. - The user-visible value is the result of processing these updates in order, using arbitrary contract code. This is overkill for simple last-writer-wins values, but it lets you support fairly general data types & arbitrary update functions, including ones that preserve application-specific invariants. The Automerge CRDT library works like this already [1][2], but it only allows specific updates to JSON data. Sharing code via your contracts solves the hard part of generalizing that to arbitrary data & updates. [1] https://automerge.org/ https://automerge.org/ [2] https://arxiv.org/abs/1805.04263 https://arxiv.org/abs/1805.04263
- sanity 5mo ago> For values that don't have a natural merge function (or where you don't want to bother writing one), would it make sense to sync update logs instead? Yes, in fact you can implement this within the current framework, for example with our group chat River, each room state maintains a list of the N most recent messages sorted by (approximate) timestamp. The idea is that you can adapt the merge logic to the needs of the specific application, and I think a time ordered event log will be a common pattern.
- koolba 5mo agoHow does it work in practice? Is it sorted by timestamp and content hash for uniqueness?
- sanity 5mo agoMessages in river are sorted by timestamp using a (non-cryptographic) hash of the message signature as tie-breaker, essentially a content hash. One weakness is that we trust the message author to provide an accurate message timestamp, however bad behavior such as manipulating timestamps can be addressed by banning the user from the room.
- dharmatech 5mo agoI definitely think we should be exploring decentralized approaches to services we use. I also would like to see an emphasis on local-first approaches. This experiment, in the spirit of UNIX, composes git and text files to form a social network: https://github.com/dharmatech/9social https://github.com/dharmatech/9social Video demo: https://youtu.be/q6qVnlCjcAI https://youtu.be/q6qVnlCjcAI
- sanity 5mo agoInteresting, we've also experimented with hosting git repos on Freenet, see: https://github.com/freenet/freenet-git https://github.com/freenet/freenet-git
- dharmatech 5mo agoThis is cool! OK, time for inception... 9social on freenet-git ¯ \ _ ( ツ ) _ / ¯
- outside2344 5mo agoConsider in your presentations leading with this as a demo to motivate the technical infrastructure you've put in place. It is hard to grok what Contracts, etc. etc. allow you to do in the abstract so working through how it allows us to build a decentralized GitHub might be a good anchor in a tangible use case.
- sanity 5mo agoAppreciate the suggestion. It's often difficult to know where to start when explaining a project like this. The freenet-git work is quite recent but we do feature River, our group chat app, fairly prominently on our installation page[1] so that people can quickly try out something useful. River is by-far the most fully developed app so far. [1] https://freenet.org/quickstart/ https://freenet.org/quickstart/
- rcakebread 5mo agoI wrote a web browser for Freenet called Snarfzilla. I guess it may have been the first web browser for "the dark web". [1] I integrated "Fair Tunes", which tried to pay musicians for mp3 files, long before any label was selling mp3's. (Edit: I just remembered Freshmeat automatically rejecting Snarfzilla because they were so sick of projects ending in *zilla. The owner thought it was cool and added it after I emailed. No idea why I used 'snarf'. I've never said it out loud.) [1] https://sourceforge.net/projects/snarfzilla/ https://sourceforge.net/projects/snarfzilla/
- maelito 5mo agoCan this be used to sync the data of an app from mobile to desktop without a server ? And vice-versa.
- sanity 5mo agoIn principle but we don't yet support mobile except experimentally, in part due to mobile OS restrictions (eg. iOS apps can't embed webassembly).
- mhitza 5mo agoBut not a problem in theory for Android and Ubuntu Touch systems?
- sanity 5mo agoYes, iOS is the main headache. The other issue is that people probably won't want it using their mobile network bandwidth in the background, but that's solvable.
- e12e 5mo agoAny reason this can't be compiled to wasm and run in browsers that way? Networking (protocol) issues? Ed: I guess you'd need a way to run wasm in wasm, and a way to author wasm contracts - and there's not yet a wasm-hosted rust compiler? Ed2: I'm not up to date on the state of self-hosted wasm compiler/languages... But I did come across: https://github.com/remko/waforth https://github.com/remko/waforth I guess it's time to dig out the thesis[t] again and look at movable code and p2p classifications again ... [t] https://ics.uci.edu/~fielding/pubs/dissertation/net_arch_styles.htm https://ics.uci.edu/~fielding/pubs/dissertation/net_arch_sty...
- andai 5mo agoCan you tell me about the old Freenet? I've read up on Wikipedia and it seems to be very much in the line with the 90s/2000s p2p file sharing software. Except that you can store stuff on other people's computers and it's encrypted? Which then led to people storing Bad Stuff, and this is somehow addressed in the new version? (I also read some stuff about friends and trust in the previous one, but haven't looked into properly.) I think understanding the old one and the issues it ran into would be helpful for understanding the context, and the motivations for the changes. Or to put it very bluntly: what is this, why should I care, and why not just use the old one? Thanks
- sanity 5mo ago> Or to put it very bluntly: what is this, why should I care, and why not just use the old one? If you don't mind I'll quote the FAQ[1]: The previous and current versions of Freenet have several key differences: Functionality: The previous version was analogous to a decentralized hard drive, while the current version is analogous to a full decentralized computer. Real-time Interaction: The current version allows users to subscribe to data and be notified immediately if it changes. This is essential for systems like instant messaging or group chat. Programming Language: Unlike the previous version, which was developed in Java, the current Freenet is implemented in Rust. This allows for better efficiency and integration into a wide variety of platforms (Windows, Mac, Android, MacOS, etc). Transparency: The current version is a drop-in replacement for the world wide web and is just as easy to use. Anonymity: While the previous version was designed with a focus on anonymity, the current version does not offer built-in anonymity but allows for a choice of anonymizing systems to be layered on top. > Which then led to people storing Bad Stuff, and this is somehow addressed in the new version? (I also read some stuff about friends and trust in the previous one, but haven't looked into properly.) The new version doesn't claim to provide anonymity as part of the platform itself although anonymity systems can be built on top of it. I'd also refer you to this FAQ [2]. [1] https://freenet.org/about/faq/#how-do-the-previous-and-current-versions-of-freenet-differ https://freenet.org/about/faq/#how-do-the-previous-and-curre... [2] https://freenet.org/about/faq/#how-does-freenet-handle-harmful-content https://freenet.org/about/faq/#how-does-freenet-handle-harmf...
- soundworlds 5mo agoLooks very interesting! I stumbled across your webpage a few months ago while looking into the state of peer-to-peer. Glad to see p2p projects are still active.
- oezi 5mo agoIs there any way to run this in the browser rather than downloading an app?
- sanity 5mo agoNot currently, but installation is very quick - the binary itself is just 10MB. I am thinking about making a public proxy available so people can try the network itself without installing it, but we've made installation as quick and painless as possible.
- eddy-sekorti 5mo agoLooks very intersting, congratulations for the launch and wishing you good Luck!
- sanity 5mo agoThank you!
- dgudkov 5mo agoIt's refreshing to see people doing something conceptually interesting outside of the LLM domain.
- miki123211 5mo agoIt feels like the state merging approach just pushes the hard problems onto the user, without giving them the tools to solve those problems properly. Imagine an application where an authorized group of users can create and vote in polls, using cryptographic signatures and public/private keys for user verification. What prevents me from connecting and saying that "everybody's state is wrong, that poll in 2024 which didn't reach quorum actually did, because I voted in it, here's my vote." How can the state merger know that the existing state has been valid for two years, and that the vote shouldn't be retroactively applied? Blockchains solve this by having state get more authoritative as blocks age. To undo the `poll_didnt_reach_quorum` state transition from 2024, one would have to rewind all blocks that have been created since, and PoW / PoS ensures that this is incredibly costly to do. On a related note, how does your design prevent sybil attacks, where one participant floods the network with many large contracts and large state updates?
- sanity 5mo agoAppreciate the feedback. > It feels like the state merging approach just pushes the hard problems onto the user, without giving them the tools to solve those problems properly. We've created many of these tools, and have used them to implement practical applications like group chat, a CMS, and a social network, and we and others will build many more tools over time. Designing applications for Freenet can require some creative problem solving, but each problem only needs to be solved once. > What prevents me from connecting and saying that "everybody's state is wrong, that poll in 2024 which didn't reach quorum actually did, because I voted in it, here's my vote." How can the state merger know that the existing state has been valid for two years, and that the vote shouldn't be retroactively applied? You could solve this similarly to Bitcoin by having a mechanism that "locks" poll results at a particular point in time to prevent subsequent additions, analogous to how mining repeatedly locks in the blockchain. > On a related note, how does your design prevent sybil attacks, where one participant floods the network with many large contracts and large state updates? Peers in the network track cost/benefit of each connected peer, so if a peer starts to consume a lot more resources than it provides then its neighbors will disconnect, a kind of immune response. I'm sure that once the network is big enough to attract large-scale attacks we'll need to adapt our approach, but I think we have a solid starting point.
- daohieu91 5mo ago[dead]
- Ember_Wipe 5mo ago[flagged]
- adamfisk 5mo agoExciting to see Freenet innovating so much, Ian! I haven't really dug in too deep but love that it's in Rust. What's it look like over the wire? How conspicuous is it in the face of, say government censors who can see and control every packet? Been chatting a lot with the HolePunch/Tether folks, and their work is impressive, particularly the use of the DHT for all signaling, Tailscale-inspired (aka Birthday Paradox) NAT hole-punching, an entire JavaScript runtime, etc. I'm curious about some of those details in Freenet. In particular, does it do fully decentralized hole punching? Either way, congrats!
- adamfisk 5mo agoWithout knowing too much about the drama discussed here, I think the bottom line is that the "old" Freenet was a bit on life support as far as I could tell and absolutely needed this kind of innovation from its founder.
- sanity 5mo agoThe medium tends to amplify drama far beyond the reality of it, hope you are well :)
- sanity 5mo agoThank Adam, nice you see you! > What's it look like over the wire? Encrypted UDP, but likely identifiable based on timing etc - we're not trying to hide it right now - the focus is more on decentralization. > In particular, does it do fully decentralized hole punching? Depends on what you mean by "fully". When peers first start up they need to connect to a "gateway", a freenet peer that can receive unexpected inbound UDP. But gateways are only required to introduce peers to the network, after the initial introduction they form new connections through the network. Right now we run these introductory gateways but will decentralize it over time.
- hoxihan 5mo ago[dead]
- rohitsriram 5mo agoDecentralized web has been a pipe dream forever but group chat actually working in practice is more convincing than anything they could have shown. Real time sync was always the hard part. Curious about mobile though, you mentioned iOS is the main blocker because of wasm restrictions. Is the plan to run the peer on desktop and have mobile just connect to it, or are you expecting people to run a full peer on Android?
- Gigachad 5mo agoThe hard part imo was not being exposed to, or unknowingly redistributing illegal content. They claim this new freenet solves this but the details on how weren't super clear.
- snvzz 5mo agoThey got rid of anonymity, which makes this a trivial problem: Law enforcement takes care of it. Now, whether giving up anonymity was worth it is a separate issue.
- MagicMoonlight 5mo agoRealistically the only uses cases of this are illegal ones. It’s like Tor, you’re either using it because your government made everything illegal, or you’re using it for dark shit.
- Gigachad 5mo agoI'd be interested in it just for fun. Hosting a cool decentralized blog or something. And hosting stuff that is legal in my country but illegal in say Russia. I just don't want to host or transport anything that is illegal or objectionable to me.
- tardedmeme 5mo agoEvery Tor relay redistributes CSAM daily, but nobody gets busted for running a Tor relay.
- trinsic2 5mo agoIt seems like downvoting brigading is happening quite a bit on this post on a lot of replies.
- toomim 5mo agoHow do you compare this to the effort in https://braid.org https://braid.org, which is also a decentralized web, which adds subscriptions that can operate in a tree (or DAG) of reactive state, each with its own validator and supporting different media types, and merging with merge-types? Freenet seems to not interoperate with the existing WWW as much, while at the same time giving more specification on a specific routing and WASM validator. The existing WWW and Braid leave those decisions up to each particular host/authority to decide.
- chris_explicare 5mo ago[dead]
- iamkrazy 5mo agoSerious question: how do you prevent/remove nefarious things like CSAM?
- mhitza 5mo agoWhat are the current limitation of this system? Slow bootstrapping, high latency, large disk usage? Is there a solution, or ideas, for DNS equivalents? I know the I2P approach (and remember that GNUNet had some unique approach as well), which can be workable in practice with "trusted registrars" as jump hosts. Name resolution feel even more important to solve in decentralized web. How can anonymity be built on top of this system? For ghost keys issuance, like with other privacy products, I'd really like to be able to buy redeem coupons in real life, not through stripe and all other online payment providers.
- sanity 5mo ago> What are the current limitation of this system? Slow bootstrapping, high latency, large disk usage? I'd say not working on mobile is probably the main one right now. Peers bootstrap into the network in seconds typically, and contract updates typically arrive at subscribed peers in under 2 seconds which was the design goal. The Freenet binary is just 10MB, and disk usage is fairly minimal as even the largest contracts are < a few MB. > Is there a solution, or ideas, for DNS equivalents? I know the I2P approach (and remember that GNUNet had some unique approach as well), which can be workable in practice with "trusted registrars" as jump hosts. Name resolution feel even more important to solve in decentralized web. Contracts in Freenet are identified by a hash of the contract webassembly + contract parameters - so the contract's identity is tied to its function. This is effectively a generalization of Freenet's "Signed-Subspace Keys" - which were also adopted by GNUnet. > How can anonymity be built on top of this system? Most likely through a mixnet or onion routing built on Freenet's contracts and delegates. If you don't mind listening to videos this was discussed in depth on a recent Freenet podcast[1]. [1] https://youtu.be/sfdsljrnJiI?si=tTs2qNglrYJOImn2 https://youtu.be/sfdsljrnJiI?si=tTs2qNglrYJOImn2
- sometimelurker 5mo agorelated wiki links: https://en.wikipedia.org/wiki/I2P https://en.wikipedia.org/wiki/I2P https://en.wikipedia.org/wiki/Tahoe-LAFS https://en.wikipedia.org/wiki/Tahoe-LAFS
- AlexWasHeree 5mo agoInteresting
- majorchord 5mo agoThe last time I tried freenet, I was immediately turned off by the amount of cheese pizza that was readily available. Tor has a similar problem but thankfully it's a bit harder to accidentally see something you shouldn't.
- GuardCalf 5mo ago[dead]
- standbyme 5mo agointeresting
- Darthagnon 4mo agoWhy did Locutus steal Freenet's name? Clickjacking 101
- sanity 4mo agoHow does someone "steal" the name of their own project?