K. Birman, Reliable distributed systems: technologies, web services and applications, Springer 2005
M. van Steen, A. Tanenbaum, Distributed systems, 3rd ed., 2017
Felix C. Gärtner, Fundamentals of fault-tolerant distributed computing in asynchronous environments, Journal ACM Computing Surveys (CSUR) 31:1 (1999) 1-26 doipdf
Leslie Lamport, Paxos made simple, ACM Sigact News, 32(4):18–25, 2001. pdf
github/libp2p - modular peer-to-peer networking stack (used by IPFS and others)
Haifeng Chen et al. Invariants based failure diagnosis in distributed computing systems, 2010 29th IEEE Symposium on Reliable Distributed Systems doi
Stewart Grant, Hendrik Cech, Ivan Beschastnikh, Inferring and asserting distributed system invariants, pdf
A small treatise on distributed computing concepts used in building blockchain architectures is
Roger Wattenhofer, The science of the blockchain, 115 pp. Inverted Forest Publishing 2016
M. J. Fischer, N. Lynch, M. S. Paterson, Impossibility of distributed consensus with one faulty processJACM 32:2, 374-382 (1985) pdf
CAP theorem (according to wikipedia): it is impossible for a distributed data store to simultaneously provide more than two out of the following three guarantees:
Consistency: Every read receives the most recent write or an error
Availability: Every request receives a (non-error) response – without the guarantee that it contains the most recent write
Partition tolerance: The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes
Seth Gilbert, Nancy Lynch, Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services, ACM SIGACT News 33:2 (2002) 51–59 doi