说到区块链,每位接触过开发或炒币的人大概都能列出一串耳熟能详的名称:BTC,ETH,EOS,BTM,NEO等等。按时间和功能又分成所谓第一代,第二代,第三代的区块链技术。如果要问区块链的优点是什么,大家基本上都会说:
1 开放中心化系统
2 数据不可篡改,公开透明
3 匿名(现有环境下其实已经不具备)
但要说为什么可以做到这些,又能保证系统的正常运行,都离不开对共识机制的建立,实现分布式(去中心化的近义词)系统的容错解决方案。
回到1982年,从1975年就开始的“阿波罗-联盟”计划仍在发射哥伦比亚航天飞机。屡受挫折的NASA也让2013年拿了图灵奖的莱斯利 兰伯特 Leslie Lamort研究如何解决系统间通信的稳定争取问题。兰波特这一年发表了这片论文《拜占庭将军问题》中为了定义要解决的计算机系统问题,设想了这个拜占庭将军的场景:
拜占庭(东罗马帝国)的几支部队在敌人的城外驻扎下来了,每支部队的士兵听命于他们的将军。将军之间可以通过信使互相沟通。经过观察敌情,他们明白必须统一军事行动计划才能取胜。但是,将军之中可能有叛徒,试图阻止忠诚的将军们达成一致。将军们必须有一个算法保证:
A。 所有忠诚的将军对同一个计划(未被篡改)做决定
B。少量的叛变将军不能让忠诚将军接受一个不合理的计划
在论文中兰伯特进一步把这个问题分成2类:
1.将军得到的都是口述消息,信息可能损失
2.将军得到的是某种加密过的信息,不会被修改
只是从这个问题的定义,我们可以知道:
1 没有一个至高权威的法令者,大家平等商议
2 大部分是忠诚(善良)的,但不能防止有作恶者
3 每个将军都需要知道所有人的决定,信息公开
是不是非常像区块链技术现在要解决的问题?以至于现在对区块链技术的对比分析中,都会有一条:是否支持拜占庭容错ByantineFalultTolerance.
如果对拜占庭问题中的主要节点和交互与区块链做类比,可以得到:
1将军相当于数据写入打包的节点--矿工
2需要对数据做防篡改处理--加密
3需要知道数据是谁修改的—签名
具体到第一代的区块链代表比特币,共识算法Prove Of Work:
1.每个士兵和将军理论上都可以写数据,策反难度大。缺点也明显,速度慢。
2.到底是谁可以传递数据,每个人都不停的扔骰子,谁第一个扔到了规定的数字谁打包数据。其中有运行和算力(扔骰子速度)2中因素影响。
3.通过Hash算法防止篡改
4.椭圆曲线数字签名
第二代的代表,以太坊:
1.仍然是所有人都参与数据传递和写入。
2.挖矿算法与比特币不同,需要更多显卡运算而不是CPU。
3.每个参与的人除了读写交易数据,还能执行复杂指令(智能合约)。
第三代区块链的代表,EOS:
1.只有将军(超级节点)负责数据处理,速度可以明显加快。
2.共识机制DPOS,简单说就是每次随机选择某个将军处理数据
3.如果将军不合格,在定期举行的选举中会被更换
即使每天都有层出不穷的新链产生,要清晰理解这些区块链技术的特点,背后的原理机制,只要从其共识算法的原理出发,层层递进,不会迷失方向。
参考文章:
The Byzantine Generals Problem https://people.eecs.berkeley.edu/~luca/cs174/byzantine.pdf