区块链是一个融合了点对点传输(P2P),加密算法等技术的分布式数据库,它必须基于计算机网络来进行。
分布式记账的方式带来了的好处就是大家都来记账,每个人手里都有一本完整的账本(数据),某部分(节点)的账本(数据)的丢失不会导致整个账本(数据)的丢失,因为账本(数据)是全网所有(节点)共有,即这个数据有无数个备份,随时可以恢复。
而且随着节点的增加,账本(数据)也越来越安全,很难摧毁。
当然,另外一个好处就是,任意一个或部分(节点)的账本(数据)的篡改,都不可能被全网认同,对于数据的篡改几乎不可能,除非你能控制其中51%的节点,即51%攻击。
前面我们通过极简化的家庭模型来阐述了中心化记账和去中心化记账的对比,了解了公开的分布式记账的好处:安全(难摧毁)和真实(难篡改)。
那么极简化的家庭模型,只有少数人,大家都来记账,都来对账,也不会有什么大问题。
但如果是成千上万的人(节点)呢?
谁来记账?凭什么来让你记账?你有什么能力来记账?
这就需要达成一种共识,这就是区块链里面所需要的共识机制。
共识机制就是需要达成一致的问题,其中比较经典的共识机制问题就是“拜占庭将军问题”。
拜占庭将军问题
拜占庭有10个将军要攻击一个繁华强大的城邦,由于某种原因他们要分开行军和驻扎。
这个城邦虽然没有拜占庭强大,但也足以打败少于半数的拜占庭联军。拜占庭的将军们必须有超过半数一起攻打,不然就会失败,因此他们需要商定是否在约定时间攻击。他们需要面临的问题是,信使可能没有到达,也可能某几个将军是叛徒,会发不同的决定给不同的将军,误导他们使得最终无法统一行动。
当然还有一个很古典的有关共识机制的问题就是“类两军问题”。
由“类两军问题”引申出来的案例恐怕就是TCP的三次握手协议了:
1. A向B发送请求;
2. B对A说:我收到了你的请求;
3. A对B说:我知道你收到了我的请求;
但这其实是在假设第三次A对B说“我知道你收到了我的请求”时,假设B已经收到了,就不再继续确认下去了,否则,这样下去就没完没了,就变回成“类两军问题”了。
区块链的共识机制——工作量证明
在比特币系统里,比特币区块链的共识机制就是通过比拼计算能力来进行的,谁能在最短的时间内完成具有一定目标难度的hash散列值的计算,谁就获得这个记账的权利,并获得比特币奖励。
更多的有关比特币区块链的hash散列值计算可以参考:深挖比特币(八):什么是“挖矿”
(未完待续)
原文发布时间为:2018-02-28
本文作者:企鹅号小编
本文来源:腾讯云 云+社区,如需转载请联系原作者。