Holochain — A new way of thinking about society and distributed systems
Holochain is a framework for building peer-to-peer applications, like Ruby on Rails but it runs your app directly on your device instead of on a server. When I was introduced to Holochain I was skeptical but in the months since doing more research, talking to the community, and building some basic apps on it I have come to realize it as one of the best designed software systems I have seen in a long time. This is a compilation of my notes as I research Holochain so it is more like my initial thoughts and observations rather than a technical deep dive. I will be covering its values, core components, and similar technologies.
Introduction
The MetaCurrency Project, the organization behind Holochain, was started years ago by Arthur Brock. Its purpose was very different than what Satoshi Nakamoto had in mind with Bitcoin as an anonymous digital cash system with a predefined economic model. Brock believes that money is only one small part of what makes society run yet it takes the lions share of attention. In an overly simplified explanation, the MetaCurrency project is researching multi-dimensional value systems that can create more complex social organization patterns. A much grander purpose than Bitcoin will ever have. Holochain is a development framework that came out of years of experimentation on what would create these types of complex social systems. It has similar values and features to blockchain but a radically different philosophical and technological foundation.
Holochain’s Values
- Society > Technology — Technology doesn’t create better humans, humans create better technology. Those at MetaCurrency Project and Holochain don’t think tech will change society, we have to fix society and how humans interact first and technology will change as a result. Holochain is about enabling the better side of human nature which has been forced to the background. Tech is scientific artistry, art is about humanity.
- Biomimicry — The fundamental architecture of Holochain is designed to promote ecological systems like those found in nature. The team looks at the world around them, at billions of years of evolution, to gain insights into how resilient self-organizing communities emerge and
sustain themselves. More on biomimicry? - Personal Agency — Holochain puts you at the center instead of node/network control. On a blockchain the network decides who you are, your transaction has to be validated before you can change your own data. With Holochain you run your own network, you are in complete control of who you are and your personal data.
“Fortunately, there is a new wave of mission-driven blockchain projects conscious about their total social impact. Initiatives like Holochain, Faircoin, Yetta and LocalPay explicitly connect their code base to their social cause.” — World Economic Forum
- Constraint — They want people to intentionally constrain themselves so you communities grow around social rules. The general will of the group is made explicit so that people abide by collectively-established rules and expectations. Matt Schutte describes it like players in a game, we must all follow the same rules to progress. If you aren’t following the rules, you aren’t playing the game with everyone else — you can of course start a new game with similar which might be better than the last and attract more players.
- Collaboration > Competition — “Leaders and organizations are acknowledging that even their best individual efforts can’t stack up against today’s complex and interconnected problems. They are putting aside self-interests and collaborating…” — HBR. Holochain’s open network and evolution by design principles makes it easy for different services to use the same rules while still being separate apps much like blockchain dapps do.
Core Components
Source Chains
Every user of a Holochain application keeps a record of their own actions and entries by writing to their own local datastore (a.k.a blockchain). One chain per application stored directly on your device. There is intrinsic data integrity through these chained hashes similar to how Git keeps track of its many branches and forks. You can easily manage permissioned access to allow data to be globally public in the Holochain distributed hash table stored on other devices on the network, restricted to a subset of Holochain users, or completely secure and private even blocking access by other source chains of the same user. How do I know your data is reliable if it’s only stored on your device and never validated by miners?
That’s where the constraints and rules come in again, instead of a single global consensus mechanism each app specifies how data must be processed for it to be useable. When any app commits to its own source chain it must comply with these rules, any time you and I are exchanging information both of our devices check the incoming data to verify that we both followed the same rules.
Distributed Hash Table
Distributed hash tables (DHT) are distributed systems for storing and accessing files or arbitrary pieces of data. When data is put into a source chain its entry address is just a SHA-256 hash which is used to do a DHT lookup. All the nodes in the network are responsible for maintaining the hash table. Examples of DHTs include IPFS and BitTorrent. Every single Holochain app or happ bootstraps its own Holochain network so each app has its on DHT.
In Holochain networks, there are validation rules that new entries to the DHT have to comply with in order to get accepted and to propagate to other nodes. This means that as a participant in an application that uses Holochain you are only able to write to a shared space if the way you do that is according to the “terms of service” you agreed to in the beginning. In order to guarantee data availability and low participation barriers, every user (or node) carries a small part of the total data available. With a large pool of users the amount needed to be stored is gets smaller and yet there is still more resiliency and availability of the data.
Apps
Where blockchain dapps are merely decentralized, Holochain hpps are fully distributed because everything is peer-to-peer. My apps code and chain is stored on my device meaning it can work entirely offline. Being a p2p network with no server or database means I don’t need internet connection either, you and I can connect directly to each other to send messages or photos.
“Imagine something along the lines of a Java Virtual Machine connected to a distributed version of Github. Every time this JVM runs a program it confirms the hash of the code it is about to execute with the hash signed into the code repository by its developers.” — Art Brock
Dual Terms & Agreement
Because you own your own data you define how it can be used. When you download an app nowadays in the App Store you are forced to sign Terms & Agreements presented by the app. All or nothing, you have no say. To enable more complex interactions you have to enable people to enter into relationships how they feel is best, and sometimes this means different agreements for each side. My app might want to access your identity to add your profile on a post but you don’t want your identity associated with this app. Basically you can define how publicly your data is and as an app you can define how public your member’s data is .
It has to be a co-created agreement by you, the app, and all other parties involved.
Similar Technologies
Holochain is not the first of its kind. There are many other companies looking at other solutions that may be more viable than a single blockchain network such as Polkadot and Blockstack. Read the official Holochain list of comparisons.
“Systems will never scale if you require global consensus for local actions by independent agents…That adds an overhead of ridiculous complexity for something which needs to follow the principle of pushing intelligence and agency to the edges” — Arthur Brock
Blockchain vs Holochain
Conclusion
I believe every individual has a purpose in life. Holochain exists for one simple reason: So people discover their power to make a difference in the world.
Holochain is one of the best designed software systems I have seen in a long time. Disregarding the whole blockchain/DLT hype, they have taken years to experiment, design, and test a radically different way for people to interact with each other over the internet that could very well change how we view the physical world too. If you saw my profile description I study and apply chaos theory of which agent-based modeling is a popular methodology so I might be biased. That being said I encourage you to look further into Holochain.
Additional resources :