The Trust Machine — Part4: The Tangle — a generalized voting protocol

Designing humanity’s trust layer for the digital world

Theoretical Model

Note: There are several different protocols that implement this primitive but the most prominent ones are most probably Hashgraph and HoneyBadger.

Note: The atomic broadcast protocol turns out to be a specialized version of the generalized voting protocol and therefore “not really” a true primitive as it makes assumptions about the underlying design (namely to resolve conflicts by establishing a total order).

Networking Layer

the green node has 5 neighbors

Note: IOTA provides a default peering strategy that allows nodes to find neighbors automatically and without user intervention.

nodes exchange messages containing transactions
each message references two previous messages
the network starts with a genesis message (blue)
the purple messages are the tips of the DAG
the purple messages form the past cone of the blue message
the purple messages form the future cone of the blue message
the red message was not picked up by others and will have no effect — it is orphaned

Note: This very simple idea of giving nodes the ability to catch up was one of Satoshi Nakamotos biggest breakthroughs.

Consensus Layer

The longest chain in reality is just a branch in a tree of competing forks.

Each reference in Satoshis blockchain votes on a potentially unbounded number of forks with a small and constant sized hash which makes the messaging complexity completely constant and independent from factors like e.g. the size of the network.

Note: Giving the hashes that connect the messages a meaning and nodes a way to understand this meaning was the second biggest revolution of Satoshi Nakamoto.

a message inherits the branches from its parents and its contained transaction
In the absence of conflicts, messages simply witness other messages and vote for the master branch
The branches propagate to all messages directly or indirectly approving the conflicting messages.
Branch DAG: the green branch has received more approvers and votes than the red branch
on top of the two hashes, we add the issuing nodes identity and signature to each message

Note: In times of low adoption, the most influential nodes will issue empty messages in regular intervals to secure the network.

Note: Non-transaction payloads will always be associated to the master branch as they have no inherent and shared concept of conflicts on layer1.

Note: We provide a proof of concept for a decentralized and censorship resistant chat application in the GitHub repository.

A node that likes the red and the green branch can never approve both as it would also approve blue.
Message4 inherits all branches of the referenced messages (including their past cone)
Message4 references Message3 with a weak parent and ignores the branches in its past cone (blue)
Message4 ignores the blue branch as it is conflicting with green and we like green more (with our special like parent)




I am a hacker, feminist, futurist and tech enthusiast working for IOTA and trying to make the world a better place (whatever that means) :P

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Hans Moog

I am a hacker, feminist, futurist and tech enthusiast working for IOTA and trying to make the world a better place (whatever that means) :P