Holochain compared to ICP

Greetings,

I’ve been closely following Holochain with great interest for a few years. I had also been hearing about Dfinity here and there for a while (in fact one of the Holochain team members, who appears in the video linked below, has spoken highly of Dfinity in the past), but I never looked into it that deeply. Obviously in the past couple days there has been a lot of talk about it, so I’m suddenly curious to learn more and to especially to compare/contrast with Holochain, about which I know more.

For those who need an intro, here is a basic ~10ish minute introduction to Holochain for developers.

To me, Dfinity and Holochain seem to be very different approaches, and I have a feeling, but not a clear understanding, that they must have somewhat different use-cases.

However, Dfinity claims, essentially, that you build pretty much anything you can currently build on the Internet on it. Holochain also claims this, and has usually claimed it “in contrast to blockchain.”

In other words, generally when I think of blockchain, I think of consensus systems for tracking coins/tokens, and then other iterations of that same type of thing, like defi, NFTs, etc. But I don’t normally think of a scalable social network on blockchain, or a chat app, or reputation systems, or scalable IoT, etc… I’ve often thought of blockchain as being “data-centric,” essentially modeling digital “objects,” whereas Holochain is “agent-centric”, where applications are simply rules for how agents can interact with each other, which is more flexible and general purpose.

I gather that Dfinity is more than just a tokenization engine, however, and is much more flexible than Ethereum and its ilk.

One of the major differences I see is that, with Holochain, the application runs on the devices of the users themselves, vs. with Dfinity the application would run on decentralized data centers. The consequence of this is that users of a Holochain application can take their own data to either bridge or migrate to other applications whenever they wish. They have more complete ownership/control of their data. Aside from that, I’m not sure how else to compare the two.

I think what would help me compare and contrast would be to present some of the Holochain applications I know of which are in development, and ask, what would this look like on ICP? Would it be possible, and if so, what would be lost or gained either way?

  1. RedGrid: Mostly an IoT project, automating energy use either in homes or on industrial scale, resolving part of the difficulty with adopting renewables, which have higher fluctuations of energy availability.
  2. Junto: a peer-to-peer social network.
  3. Dada.art: a platform for artists to have “visual conversations,” where they can take turns adding frames to an expanding sequence/array of images.
  4. Holo-REA: Resource-Event-Agent accounting system, implementation of Valueflows protocol. Has modular building blocks for supply chain systems, project management software, logistics management and enterprise resource planning (as well as gift economies)

Very curious to hear any thoughts/reflections on this comparison between Holochain and ICP. Thanks!

1 Like

Another thing I would be interested to know more about is the cost for developers to run an application on ICP.

With Holochain, there is a difference between pure Holochain apps (hApps) and Holo-hosted web apps. Pure Holochain apps are completely p2p, running on the devices of the users themselves, hence free for users since they have already paid for the hardware they are using, and are paying for their own Internet and electricity. However, if a developer wants to host their hApp on the web, they need to pay Holofuel to Holo-hosts to make it accessible as a more conventional web-app.

No one knows yet how much Holo-hosting will cost for developers, since it will be a free market and Holo-hosting is still in alpha testing, but at some point I will be very curious to be able to compare something like ICP with Holo in terms of cost. Is it already known how much it will cost in ICP?

Holochain is basically a glorified SPA with a shared database between users of same app and no scalable backend. So kinda useless.

It also uses a centralised proxy/gateway so Internet users can access it.

Huh. So obviously you don’t know what Holochain is. Anyone else?

holochain vs internet computer

i think the latter attracts me more to dive in

*marketing matters

I’ve looked at the architecture diagram and they have said it themselves: holochain is not designed for processing long tasks. It only scales as more users use it because the processing is done on the user’s machine (literally what a SPA does). However if a user wanted to offload a CPU intensive task it can’t. It can only write to a shared DHT amongst users of the app. This makes it work with seriously basic apps. Dfinity does not work like that at all. It sends the original backend request to a main subnet which resolves the subnet of the canister and randomly distirbutes it.

I suggest you read this

https://medium.com/h-o-l-o/building-understanding-of-holochain-holos-progress-1f64a50ed079

Also watch out for the whole fat section labeled “centralised stuff”

2 Likes

Do you know where they said this, and what, specifically they were referring to by “long tasks?” I have never heard any team member say anything like this before.

You say this like it’s a bad thing…? It seems like quite an interesting property for an application to scale automatically as more users use it because the processing is done on the user’s machine. It also means it is literally as decentralized as you can possibly get, as depicted in this graphic comparing centralized, decentralized, and distributed networks.

This might be getting closer to answering one of my questions, which is essentially this: What could ICP do that Holochain can’t? If you can build social networks, ERP accounting systems, interactive art spaces, etc. on Holochain, then what are the specific things that it would not be able to do that ICP could? And by specific I mean I may need really concrete examples to help me understand.

You may be underestimating Holochain quite a bit here. Do you consider a full-fledged social network (e.g., Junto, and Hylo) to be a “seriously basic app?” That’s just one example. People are building all kinds of things on Holochain. Note that a complete application can be composed of many modular Holochain micro-apps.

This is referring to Holo-hosting, the web hosting infrastructure that can be used to make Holochain applications accessible via regular URLs. Pure Holochain apps have no “centralised stuff.” See this quote from a recent blog post:

Holochain is entirely peer-to-peer, completely lacking any centralized components that could be shut down. Users of Holochain don’t need permission from anyone to interact — not from an app store, not from a cloud server, not even from the internet’s gatekeepers (ISPs, nameservers, etc.) if the application were built to use non-internet protocols such as mesh or local networks.

in contrast to Holo-hosting:

Holo has some centralized aspects, including domain name resolution, routing algorithms, and performance metrics that are used in matching hosts with applications.

Relevant discussion on Holochain forum as well: Internet Computer - General Chat - Holochain Forum

Any comments/reactions/corrections to this from anyone here?

It really seems like they each have their own best use cases. I’m not an expert on either system’s architecture but I understand how they work at a higher-level.

Like @Esz14 mentioned, holochain is restricted scaling and compute-wise by the number of users you have, as well as their devices’ capabilities. Encrypted p2p messaging would be a great usecase for holochain because well, it’s truly p2p. Small-scale filesharing might also be possible on holochain, again because of it’s strong p2p networking.

Something like a decentralized reddit might be better suited to the IC, because canisters can be scaled so you can get higher throughput even with millions of users. There’s also media processing and storage that needs to be considered, and with large apps I think you can see the difficulties holochain might have with working on all of those files.

Personally, I’m very impressed and eager to work with both tools, they’re both incredible and well tuned to different requirements, at least how I see it. You may even want to look into ways that the IC can work with holochain, and vice versa…

1 Like

Awesome, I’m appreciating your perspective! Especially the recognition of the potential for collaboration and complementary use-cases. I feel like this is what the whole Dweb thing should be about.

I still don’t really get where this is coming from. As I understand it, Holochain scales very well, since it involves agent-to-agent interactions, and as more nodes (agents) are added, it theoretically scales linearly. A decentralized reddit should work perfectly fine on Holochain.

This part I think I understand a bit better. Yes, if participants don’t have the compute power to do what the app needs, then obviously that’s a problem. But I’m still wondering, what specific applications require so much compute power that a decent modern device couldn’t handle it? I guess maybe a video-sharing app like TikTok where you need the compute power to do video editing or something?

Yeah, makes sense!

As far as I am concerned, I find these two projects absolutely fascinating. And I hope to see them both progress so that we can benefit from their progress.
I started with Holochain and at the beginning I liked the idea of continuing with Rust rather than going with Motoko and at that time they were more advanced, more open.
Dfinity has always kept a control of its communication and marketing which confused me, because it seemed to me that there was a big difference between the speech and the reality of the sdk.
Later on, with my little Holochain experience, I was a bit afraid of the number of macros (I’m not a fan of the excess of macros in Rust) and dependencies that were increasing in an impressive way. On the other hand, Dfinity, the SDK has evolved, and functionalities to. Motoko is may be ( no definitely) a nice proposal as well as a simplification and abstraction from Rust so my heart swings. Rust also becomes a possible alternative.
Now, there are many differences, elements that make one lean towards the other but there will be the economic aspects of the costs of deployment and the facilities for the developers that will matter. Today, I’m dedicating my study time to Dfinity but I’m keeping an eye on it and I intend to go back to see the progress of the Holochain team.

1 Like

If my understanding of Holochain is correct, it does not offer any sort of finality. Each node relies on their peers to get a view of the world state, and self-verifies if this view is consistent. But there is nothing preventing the view from becoming inconsistent the next minute should a new knowledge be learned. In other words, it is vulnerable to eclipse and sybil attacks. You can’t really trust if a transaction is never double spent.

This is a solved problem in POW consensus (e.g. Bitcoin) because the longer the chain grows, the more resistant it is to such an attack. This is also a solved problem in POS consensus, where majority of the quorum can be trusted because bad behavior will be caught and punished via stake slashing.

The quorum of each subnet on IC is created through de-centiralized key generation. IC invents advanced cryptography to ensure the quorum can be created securely without centralized authorities, and requires staking from individual data centers to operate them. We don’t expect a high churn rate in the quorums, which is good for both stability and trustworthiness.

It is unclear to me how Holochain solves this problem of trust, which is essential to any distributed systems.

1 Like

I think that’s a good synopsis, Paul. I find Dfinity’s tech absolutely mind-boggling. I wonder how long before others realise that they have solved the scaling problems inherent in blockchain computing. It’s a complete mess with all the Ethereum sidechains. Having distributed containers seems much more elegant.

Pulling a quote by Paul D’Aoust from the Holochain Forum, who was answering a question someone else had asked about whether the “eventually consistent” finality of Holochain made it fine for many low-stakes p2p apps, but unsuitable for currencies: