Fault-tolerant distributed systems move the trust in a single party to a majority of parties participating in the protocol. This makes blockchain based crypto-currencies possible: they allow parties to agree on a total order of transactions without a trusted third party. To trust a distributed system, the security of the protocol and the correctness of the implementation must be indisputable. We present the first machine checked proof that guarantees both safety and liveness for a consensus algorithm. We verify a Proof of Stake (PoS) Nakamoto-style blockchain (NSB) protocol, using the foundational proof assistant Coq. In particular, we consider a PoS NSB in a synchronous network with a static set of corrupted parties. We define execution semantics for this setting and prove chain growth, chain quality, and common prefix which together imply both safety and liveness.
翻译:分散式系统可以将单一方的信任转移给参与协议的多数当事方。 这使得基于链锁的加密成为可能: 允许当事方在没有信任第三方的情况下就交易的总顺序达成协议。 要信任一个分散式系统, 协议的安全和执行的正确性必须是无可争议的。 我们提出第一台机器检查证明, 保证一个协商一致的算法的安全性和生命性。 我们用基本验证助理 Coq 来核查一个中本式的块链(NSB) 协议的证明。 我们特别考虑将一个POS NS SB放在一个同步的网络中,与一组固定的腐败方同步。 我们为这一设置确定执行的语义, 并证明链式增长、 链式质量和共同的前缀, 两者都意味着安全和生命性。