(2021CCS)异步网络中的中本聪共识问题
前期知识
1. 节点
节点指的是区块链网络中的计算机,包含手机,矿机和服务器等等。但现在节点已不再单指个人的设备,任何一个矿场或者矿池,都可以看成一个大的节点,并且后者已远远超过个人设备节点。
根据覆盖面的不同,节点可分为“全节点”和“轻节点”,全节点就是拥有全网所有的交易数据的节点,轻节点则是只拥有和自己相关的交易数据节点。
全节点
- 一直在线
- 在本地硬盘上维护完整的区块链信息
- 在内存里维护UTXO集合,以便快速检验交易的正确性
- 监听比特币网络上的交易信息,验证每个交易的合法性
- 决定哪些交易会被打包到区块里
- 监听别的矿工挖出来的区块,验证其合法性
- 挖矿决定沿着哪条链挖下去
- 当出现等长的分叉的时候,选择哪一个分叉
轻节点
- 不是一直在线
- 不用保存整个区块链,只要保存每个区块的块头
- 不用保存全部交易,只保存与自己相关的交易
- 无法检验大多数交易的合法性,只能检验与自己相关的那些交易的合法性。
- 无法检测网上发布的区块的正确性
- 可以验证挖矿的难度
- 只能检测哪个是最长链,不知道哪个是最长合法链
节点要完成四项功能,分别是挖矿,钱包,路由和存储区块链。
节点的不同角色

2.共识的确定性
场景一:一群人决定一起吃饭,其中有几个人是leader,吃什么由他们决定,只要leader们决定"吃火锅",其他人只能够选择吃/不吃,而没办法决定"吃什么";
场景二:一群人决定一起吃饭,每个人都可以选择"吃什么",也可以选择推翻自己之前的决定,只要时间够长,就一定能达成一致;
场景一中leader决定"吃火锅"后,结果就不会修改,但是其他参与者可以选择吃/不吃;而在第二种场景中,"吃什么"则是一个不断变化的因素,只要还有一个人没确定"吃什么",那么他就有概率推翻之前所有人达成的"吃什么"的共识。
上述例子其实描述了共识机制中"确定性"的不同,场景一象征BFT共识,具备"最终确定性","吃火锅"是最终确定的,不存在"吃烧烤"的可能;场景二象征"中本聪共识",具备"概率确定性",即便达成"吃火锅"的共识,也存在"吃烧烤"的可能性。
决定确定性的本质特性是共识范围,也就是"谁说了算"。场景一中是leaders,场景二中则是吃饭的所有人。
就目前常见的共识机制而言,"确定性"主要分为两种:"概率确定性"以及"最终确定性"。
"概率确定性"如中本聪共识中"最长链机制",任何一笔交易都要等待六个区块确认;所有保存到本地的区块链必须是被本地节点验证通过的最长链;只有最长区块链上的区块才能获得系统承认并得到挖矿奖励。
"最终确定性"往往是是基于拜占庭容错协议(BFT)衍生的共识机制产生的,如Polkadot、YeeCo中的共识算法。在最终确定性逻辑中,一旦交易被包含在区块中并添加到区块链上,该交易就会被立即视为最终确定,而不像比特币的区块只是处于"很可能"被确定的状态。这意味着一旦在区块中达成协议,区块就会最终确定,其中的交易也不能被逆转。
3. Bitcoin Core 简介
当首字母 B 小写的时候,bitcoin 指的是一种加密货币,也就是比特币。当 B 大写的时候,Bitcoin 代表比特币协议或者比特币网络。
Bitcoin Core 是 Bitcoin 协议的实现,是一个开源软件。
Core 要提供一个节点运行的基础功能。比特币是一个点对点的网络,所以网络上的机器全都是客户端,没有服务器。而 Core 作为客户端上的软件就要承担起维持网络运行的全部职责,其中主要包括:第一,下载并保存完整的比特币区块链。第二,包含一个带图形界面的钱包软件,能够构建并签名交易并广播到整个网络,能够发送和接收比特币。第三,接收网络上的交易,验证交易并打包到区块中,实现挖矿功能。
疑问
1. 挖矿节点之间的非均匀块传播是什么?(是某个节点广播区块到其他节点的速度不一样吗)

浙公网安备 33010602011771号