共识机制综述 | 本质剖析 浅谈机制对比
共识机制作为区块链技术中的核心部件,是进入区块链领域的必修课。不过要想理解共识机制,首先要了解区块链和其基本结构和必要概念。所以作为综述零篇,本文想先定义一些基本概念,为后面的讨论做好铺垫。
基本定义
首先我们需要定义区块链。定义很简单:区块链就是区块组成的链。
这是我读到的最简单定义,没有之一。有了这个基本定义,我们就可以研究:什么是区块,什么是链。
区块就是打包在一起的数字信息,且规定大小不能超过1M;而链,就是储存这些信息的数据库。那么接下来的问题是,区块装着什么信息,如何入链。区块的信息主要分为两部分:区块头和区块体。
- 区块信息(6):Version, prevBlockHash, merkleRoot, time difficultyTarget, nonce.(具体内容信息见附表)
- 交易信息(3):numTransactionsBytes, numTransactions, transactions.
所以区块装的是自身的身份信息和本身需要加密传递的交易信息。那么问题就来了,如何创建一个区块,这个区块凭什么上链,人们凭什么相信,上链的区块中的信息一定是真实可信、没有篡改、未被双花的交易信息?这些问题,就是共识机制要解决的。这里面有两个部分,第一个,区块如何产生;第二,区块产生后,如何被被全链认可。而共识机制,就是为完成这两个步骤而制定的规则。
共识机制原理
共识机制要解决的问题如下,如何确保交易数据真实、无法篡改、不能双花。
PoW
通过“工作量”进行证明:当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算。以此保证整个系统只要不超过51%的节点作恶,就能保证最长链的正确性。
PoS
权益证明。相比PoW发工资的方式,PoS则是发利息。持币时间越长,持有币量越高,得到的分红越大。缺点是容易形成两极分化,无法全面普及权益。
PoS还有各种衍生、分支算法,比如DPoS,SPoS等,均是在权益证明的基础上增加相关细节规则,以尝试提高参与度和分利均衡。
BFT
BFT主要针对拜占庭将军问题,解决了故意作恶时,如何确保100%的准确性(比特币使用的PoW,就不是100%确保准确的),可是这种容错需要牺牲比例,BFT只能在不超过三分之一的节点作恶的情况下保证准确,而且规模不适宜应用,这也就是为什么,应用最广的是PBFT(实用型BFT)的原因。目前针对共识后半段,也就是如何达成一致这一过程,许多机制都采用PoW或者PoS加PBFT的方式。
DAG
DAG是共识上脱链的一次尝试。利用有向无环图采取大多数一致,抛弃少数错误的方式来决定方向,但是应用没有前几种广泛,目前还在尝试中。
其他相关共识还有PoX,PoA,PoD,PoB,PoI等等利用各种不同方式达成一致的规则尝试。以后有机会将更细致的逐个分析。
参考文献
1 Luke Fortney/what is blockchain
https://www.investopedia.com/terms/b/blockchain.asp
2 what is PoA权威证明(PoA)与其他共识机制相比有何不同?
https://www.jianshu.com/p/58913d425032
3 卓一凡/简单介绍什么是区块链
http://baijiahao.baidu.com/s?id=1603347470881357088&wfr=spider&for=pc
4 Lidiya007/区块链中区块的构成详解
https://blog.csdn.net/lidiya007/article/details/83657672
]