  A companion paper defined the notion of digital social contracts, presented a
design for a social-contracts programming language, and demonstrated its
potential utility via example social contracts. The envisioned setup consists
of people with genuine identifiers, which are unique and singular cryptographic
key pairs, that operate software agents thus identified on their mobile device.
The abstract model of digital social contracts consists of a transition system
specifying concurrent, non-deterministic asynchronous agents that operate on a
shared ledger by performing digital speech acts, which are
cryptographically-signed sequentially-indexed digital actions. Here, we address
the distributed-ledger implementation of digital social contracts in the
presence of faulty agents: we present a design of a fault-tolerant
distributed-ledger transition system and show that it implements the abstract
shared-ledger model of digital social contracts, and discuss its resilience to
faulty agents. The result is a novel ledger architecture that is distributed
with a blockchain-per-person (as opposed to centralized with one blockchain for
all), partially-ordered (as opposed to totally-ordered), locally-replicated (as
opposed to globally-replicated), asynchronous (as opposed to
globally-synchronized), peer-to-peer with each agent being both an actor and a
validator (as opposed to having dedicated miners, validators, and clients),
environmentally-friendly (as opposed to the environmentally-harmful
Proof-of-Work), self-sufficient (as opposed to the energy-hogging Proof-of-Work
or capital-hogging Proof-of-Stake) and egalitarian (as opposed to the
plutocratic Proof-of-Work and Proof-of-Stake).
