说明

前面写一篇关于分布式系统的文章,但是没有考虑拜占庭问题,所以聊聊区块链共识技术,在这个过程看看比特币是如何解决拜占庭问题和共识问题。

定义

区块链是什么?这个问题有太多的回答。

区块链是一个由全体联网节点共同维护并持有同一账本的分布式数据库,它通过算法来达成共识,在无需信任的各节点中构建一个无单一故障点或控制点的去中心化可信系统

所以在技术上区块链的本质是分布式帐本技术(DLT)。

重要性

Why Decentralization Matters这篇文章从互联网发展历程与面临问题说明去中心化重要性。

去中心化重要性来自去中心化带来的影响与作用,具体如下:

  1. 去中心化可以降低垄断的可能性,是一种对抗垄断的重要方式
  2. 去中心化提供高可用性
  3. 去中心化对抗DDos
  4. 去中心化可以让人人参与,权力下放
  5. 去中心化是让数据归还用户,保护隐私的重要技术手段之一
  6. 去中心化消除中间环节,提高效率
  7. 去中心化与中心化并不是对立,可以相互补充
  8. 去中心化能够解决中心化无法解决的问题,如微信流控算法,并没有采用全局,而由节点根据延迟参数调整,另外是5G带来的高速传输与海量数据需要去中心化来来解决

去中心化解决问题

  1. 提供全球开放的分布式数据
  2. 提供不可更改的数据库
  3. 提供trustless的基础设施
  4. 基于以上三点的业务的需求

思考模型

如同前面的分布式系统一样,对于公链(去中心化系统)问题,也可以分为以下几个子问题:

  1. 在什么环境下?
  2. 有哪些节点参与?
  3. 通过什么样的共识算法?
  4. 使什么业务?
  5. 达成什么样的容错要求?

总结一句话:在什么环境下,有哪些节点参与,通过什么样的共识算法,使什么业务达成什么样的容错要求

下面就这五个问题展开说明。

环境

大部分去中心化系统的环境要点如下:

  1. 异步网络模型
  2. 网络结构是P2P网络
  3. 网络传输是不可靠的
  4. 系统异常是常态
  5. 并发
  6. 缺少全局时钟

(Ps:这里不展开说明了,谈谈对分布式系统的一些思考)

节点

节点准入方面

  1. 节点自由加入与退出
  2. 节点需要通过PoW测试才能加入
  3. 节点需要PoS持仓才能加入
  4. 节点需要质押才能加入

节点角色

  1. 节点平等,无角色任何差异如比特币
  2. 节点分为超级节点,见证节点如EOS

节点数量

  1. 不限数量,如比特币,以太坊
  2. 指定数量,如EOS指定为21,steemit指定数量为11

节点可信

  1. 存在不可信的作恶节点
  2. 可信节点(算力)一定多于作恶节点(算力)

节点配置

  1. 机器性能波动大
  2. 网络带宽波动大
  3. 节点分布在全球各地
  4. 节点配置不受控
  5. 节点之间差异大如算力,POS投票权重

节点经济原则

  1. 99.99%以上节点是趋利
  2. 节点受激励引导
  3. 节点受惩罚限制
  4. 节点之间存在博弈与竞争
  5. 节点不会作出投入成本大于产出收益的选择

共识算法

一定要摆脱传统分布式思想的限制。要在经济,竞争,博弈,协议等多方面有效结合。

共识

从上图可以看出,传统分布式共识算法在整个共识里面只占很小一部分。 共识算法是区块链技术上的核心。

不得不说,PoW是另一种形式实现拜占庭容错,是比特币最大的亮点。

属性

一个科学共识算法必须同时满足以下四个属性:

  1. Agreement
  2. Validity
  3. Integrity
  4. Termination

这四个属性从四个方面规范共识算法的要求,也为我们提供分析共识算法四个不同的视角。

Agreement

Every correct process must agree on the same value.

这是实现一致性必须要做到的要求:每个节点必须达成一致。 bitcoin通过以下几点实现该属性,具体如下:

  1. 在选主方面选择最强算力原则,保证具体高度的区块的一致性(以最快算出的为准)
  2. 在链分叉情况下选择最长链,解决网络分化等原因可能出现的分叉问题

Validity

If all the correct processes proposed the same value v, then any correct process must decide v.

Validity是为了防止这种情况的出现:一些节点无论提议什么值,本节点一直提交NULL。在bitcoin这种行为可以理解为自私挖矿行为。

bitcoin通过以下几点实现该属性,具体如下:

  1. 算力不可复制
  2. 随机性加大自私挖矿的成本
  3. 最长链确认由各节点自行确认
  4. 时间戳确认

Integrity

No Node decides twice.

保证共识得到一致性不可逆,不可被修改。那么在这成共识过程中有许多操作需要进行限制。 bitcoin通过以下几点实现该属性,具体如下:

  1. 链式结构
  2. 算力要求
  3. 难度提升
  4. 多节点竞争

Termination

Eventually, every correct process decides some value.

Termination是一个liveness属性,bitcoin通过以下几点实现该属性,具体如下:

  1. 通过激励吸引大量节点参与,保证有节点来完成出块
  2. 出块时间周期设置10分钟

业务

去中心化带来业务的形态的变化,现列举部分业务如下:

  1. 去中心化交易所
  2. 去中心化网络平台
  3. 去中心化计算平台
  4. 去中心化存储
  5. 去中心化CDN
  6. 去中心化数字货币
  7. 去中心化协议
  8. 去中心化跨链
  9. 去中心化金融科技DeFi
  10. 去中心化通信

容错要求

对于去中心化系统,对应的容错要求是DCS定理。

DCS定理

如同CAP定理一样,DCS定理是指在一个公有链系统中不可能同时满足以下三个条件:去中心化(Decentralized)、一致性(Consistency)和可扩展性(Scale)。

DCS定理

去中心化

去中心化是指任意节点可以加入与退出,整个网络不受任何人控制。

一致性

与上面CAP的一致性类似,不过应用中更加偏重安全如防范双花攻击。

可扩展性

可扩展性是指TPS能够实现提高。

关于DCS这三者之间的tradeoff,更多参考The DCS Triangle

小结

区块链的共识现在还处于探索阶段,并不像分布式系统共识(不考虑拜占庭问题)已经成熟。区块链的共识在不断探索与发展中,未来会有更多的新型共识出来。

参考

  1. Why Decentralization Matters
  2. The DCS Triangle
  3. SoK: Consensus in the age of blockchains
  4. DAGOR:微信微服务过载控制系统
  5. A Brief Tour of FLP Impossibility
  6. Agreement with Satoshi – On the Formalization of Nakamoto Consensus
  7. Yuval Noah Harari: Why fascism is so tempting and how your data could power it | TED Talk
  8. Tech C.E.O.s Are in Love With Their Principal Doomsayer
  9. 谈谈对分布式系统的一些思考
  10. Algorand’s Instant Consensus Protocol
  11. 区块链到底有什么了不起
  12. BitTorrent
  13. 公有链的基本挑战
  14. Blockchains don’t scale. Not today, at least. But there’s hope.
  15. Consensus Protocols of Distributed Ledger Technology