Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/papers/MIT-LCS-TM-394.pdf
Binary file not shown.
33 changes: 33 additions & 0 deletions src/app/blog/consensus-is-impossible/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,37 @@ export const metadata = {

export default (props) => <BlogPostLayout article={post} {...props} />

Our latest video covers a proof paper by Nancy Lynch that shows that 100% certainty of consensus is impossible in a distributed system with even one faulty node. The paper is very comprensive, and we thought picking one to dramatize would be a great way to introduce impossibility proofs!

<iframe width="560" height="315" src="https://www.youtube.com/embed/_VAAC9Rt6H0?si=IWXKlPvoJ2qe6r9R" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

<Note>
We're using this post to add details that weren't covered in the video. We'll update this post with more info as comments & questions roll in!
</Note>

## Can I haz paper link?

[of course!](/papers/LIT-LCS-TM-394.pdf)

## Do you use this in iroh?

Indirectly, yes! All iroh protocols run up against these laws of distributed systems "physics". Some examples:
* strictly speaking, [iroh docs](/proto/iroh-docs) isn't a consensus protocol, it's a "sync" protocol. Here even the word sync is a bit of a misnomer, because there is no such thing as asynchronus synchronization, but we digress. Instead the garuntee iroh docs focuses on is that all nodes will _eventually_ have the same data, once we all have the same entries in our namespace, not that they will all agree on the same data at the same time.
* [iroh blobs](/proto/iroh-blobs) is content-addressed (refer by hash) specifically to get around the potential of byzantine faults, assuming you trust the hash you're asking for in the first place.

## The extra `t` is for buggy nodes

In the video, one fix to address the fault is to transition from requiring `2t + 1` to `3t + 1`. The detail we _don't_ cover in the video: the extra `t` describes that you're accounting for buggy/malicious nodes as well as down/delayed nodes. The down/delayed nodes would be covered by the `2t` part of the equation.

## This is not the most interesting proof in the paper!

That honor goes to the [FLP impossibility proof](https://en.wikipedia.org/wiki/Consensus_(computer_science)#Solvability_results_for_some_agreement_problems), for which the authors won a Dijkstra prize. Nancy Lynch was a co-author on that paper as well, and it's a great read if you're interested in the topic!

## Join our discord & nerd out

Come tell us what we missed! We'll update here!

<Button href="/discord">Join Discord</Button>
<br />
<br />
<br />
Loading