Holochain — A new way of thinking about society and distributed systems
By: Kiba Gateaux
Tags: Systems Thinking, Distributed Systems, Distributed Society, Blockchain, Holochain

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.

“I magine 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