Here is an attempt to give a general definition of a distributed
ledger, trying to encompass most existing forms of blockchains and
distributed ledgers, making their (theoretical) properties and
underlying assumptions explicit. We start with a long definition,
following with a shorter summary. Comments and suggestions for
improvement are more than welcome.
A long definition
A distributed ledger is a distributed data structure where a (fixed
or unbounded) set of bookkeeping nodes (aka miners),
interconnected by a peer-to-peer network, collectively maintain a
global state without any form of centralised control.
- Members can request individual bookkeeping nodes to
execute transactions to update this global state on their
behalf.
- Often members need to authenticate, to verify whether they are
authorised to execute that transaction.
- Such a transaction is either processed (and thus ends up affecting
the global state), or silently ignored (possibly with delay in the
case of lazy distributed ledgers that do not have immediate
transaction finality).
- The bookkeeping nodes agree on the order in which these
transactions are executed (whenever this order is relevant), and on
their effect on the global state.
- All transactions are public, and so is the global state (at least
to the members of the distributed ledger, in case it is a private
ledger).
- The global state may record (some part of) the history of all
transactions executed so far.
- As long as a specified fraction of the bookkeeping nodes is honest
and active, this record is correct, and consensus on the order of
incoming transactions and their effect on the global state is
(eventually) reached.
- All members can verify that the global state corresponds to
executing these transactions in the agreed order, when started in some
known initial state.
- The effect of a transaction on the global state is either
determined by some fixed transaction semantics (in the case of
e.g. the Bitcoin blockchain), or corresponds to calling a function
specified by some ‘smart contract’ that specifies how the global state
should be transformed.
- In the latter case, the transaction may specify some parameters
that serve as input to the contract.
- Members may submit smart contracts to the ledger for execution by
other members, by writing the code that modifies the global state of
the ledger according to the programming model specified by the
distributed ledger.
A shorter definition
A distributed ledger is a distributed data structure where a set of
bookkeeping nodes, interconnected by a peer-to-peer network,
collectively maintain a global state without any form of
centralised control.
- Authorised members can request individual bookkeeping
nodes to execute transactions to update this global state on
their behalf.
- Such a transaction is either processed (and thus ends up affecting
the global state), or silently ignored.
- The bookkeeping nodes maintain consensus on the list of
executed transactions and their effect on the global state, as long as
a specified fraction of the bookkeeping nodes is honest and
active.
- The global state, which includes the history of all transactions
performed on it, is public to all members.
- The effect of a transaction on the global state is either
determined by some fixed transaction semantics, or corresponds to
calling a function specified by some ‘smart contract’ code that
specifies how the global state should be transformed.
In case you spot any errors on this page, please
notify me!
Interestingly I’ve given a talk about this (different forms of distributed ledgers and their properties) last Tuesday at the Groninger Blockchain Meetup, summarizing (Public) Blockchains in three statements, with a couple of generalizations that follow in the next slides for other types of Distributed Ledgers (and then other types for non-ledger Distributed Systems).
Of course, the slides are ‘concise for the sake of presenting’ and might be considered a little ‘too abbreviated’ when read outside of the context of the talk, but I am very happy that the used definition is very similar to the one that you use in this article.
(The specific slide: https://slides.com/qqwy/granular-blockchain-v3/#/20 , the next five slides talk about the related properties of other kinds of distributed systems).