Blockchains from a Distribute d Computing Perspective
MAURICE HERLIHY, Brown University
ACM Reference Format:
Maurice Herlihy. 2018. Blockchains from a Distributed Computing Perspec-
tive. 1, 1 (January 2018), 6 pages. https://doi.org/10.1145/nnnnnnn.nnnnnnn
1 INTRODUCTION
Bitcoin rst appeared in a 2008 white paper authored by someone
called Satoshi Nakamoto [
15
], the mysterious deus abscondidus of the
blockchain world. Today, cryptocurrencies and blockchains are very
much in the news. Much of this coverage is lurid, sensationalistic,
and irresistible: roller-coaster prices and instant riches, vast sums of
money stolen or inexplicably lost, underground markets for drugs
and weapons, and promises of libertarian utopias just around the
corner.
This article is a tutorial on the basic notions and mechanisms
underlying blockchains, colored by the perspective that much of the
blockchain world is a disguised, sometimes distorted, mirror-image
of the distributed computing world.
This article is not a technical manual, nor is it a broad survey of
the literature (both widely available elsewhere). Instead, it attempts
to explain blockchain research in terms of the many similarities, par-
allels, semi-reinventions, and lessons not learned from distributed
computing. This article is intended mostly to appeal to blockchain
novices, but perhaps it will provide some insights to those familiar
with blockchain research but less familiar with its precursors.
2 THE LEDGER ABSTRACTION
The abstraction at the heart of blockchain systems is the notion
of a le dger, an invention of the Italian Renaissance originally de-
veloped to support double-entry bookkeeping, a distant precursor
of modern cryptocurrencies. For our purposes, a ledger is just an
indelible, append-only log of transactions that take place between
various parties. A ledger establishes which transactions happened
(“Alice transferred 10 coins to Bob”), and the order in which those
transactions happened (“Alice transferred 10 coins to Bob, and then
Bob transferred title to his car to Alice”). Ledgers are public, accessi-
ble to all parties, and they must be tamper-proof: no party can add,
delete, or modify ledger entries once they have been recorded. In
short, the algorithms that maintain ledgers must be fault-tolerant,
ensuring the ledger remains secure even if some parties misbehave,
whether accidentally or maliciously .
Author’s address: Maurice HerlihyBrown University, maurice.herlihy@gmail.com.
Permission to make digital or hard copies of all or part of this work for personal or
classroom use is granted without fee provided that copies are not made or distributed
for prot or commercial advantage and that copies bear this notice and the full citation
on the rst page. Copyrights for components of this work owned by others than ACM
must be honored. Abstracting with credit is permitted. To copy otherwise, or republish,
to post on servers or to redistribute to lists, requires prior specic permission and/or a
fee. Request permissions from permissions@acm.org.
© 2018 Association for Computing Machinery.
XXXX-XXXX/2018/1-ART $15.00
https://doi.org/10.1145/nnnnnnn.nnnnnnn
2.1 Blockchain Ledger Precursors
It is helpful to start by reviewing a blockchain precursor, the so-
called universal construction for lock-free data structures [12].
Alice runs an on-line news service. Articles that arrive concur-
rently on multiple channels are placed in an in-memory table where
they are indexed for retrieval. At rst, Alice used a lock to synchro-
nize concurrent access to the table, but every now and then, the
thread holding the lock would take a page fault or a scheduling
interrupt, leaving the articles inaccessible for too long. Despite the
availability of excellent textbooks on the subject [
13
], Alice was
uninterested in customized lock-free algorithms, so she was in need
of a simple way to eliminate lock-based vulnerabilities.
She decided to implement her data structure in two parts. To
record articles as they arrive, she created a ledger implemented as
a simple linked list, where each list entry includes the article and
a link to the entry before it. When an article arrives, it is placed
in a shared pool, and a set of dedicated threads, called miners (for
reasons to be explained later), collectively run a repeated protocol,
called consensus, to select which article to append to the ledger.
Here, Alice’s consensus protocol can be simple: each thread creates
a list entry, then calls a compare-and-swap instruction to attempt
to make that entry the new head of the list.
Glossing over some technical details, to query for a recent article,
a thread scans the linked-list ledger. To add a new article, a thread
adds the article to the pool, and waits for for a miner to append it
to the ledger.
This structure may seem cumbersome, but it has two compelling
advantages. First, it is universal: it can implement any type of data
structure, no matter how complex. Second, all questions of concur-
rency and fault-tolerance are compartmentalized in the consensus
protocol.
A consensus protocol involves a collection of parties, some of whom
are honest, and follow the protocol, and some of whom are dishonest,
and may depart from the protocol for any reason. Consensus is
a notion that applies to a broad range of computational models.
In some contexts, dishonest parties might simply halt arbitrarily
(so-called crash failures), while in other contexts, they may behave
maliciously (so-called Byzantine failures). In some contexts, parties
communicate through objects in a shared memory, and in others,
they exchange messages. Some contexts restrict how many parties
may be dishonest, some do not.
In consensus, each party proposes a transaction to append to the
ledger, and one of these proposed transaction is chosen. Consensus
ensures: (1) agreement: all honest parties agree on which transaction
was selected„ (2) termination: all honest parties eventually learn the
selected transaction, and (3) validity: the selected transaction was
actually proposed by some party.
Consensus protocols have been the focus of decades of research in
the distributed computing community. The literature contains many
algorithms and impossibility results for many dierent models of
computation (see surveys in [1, 13]).
, Vol. 1, No. 1, Article . Publication date: January 2018.