区块链的共识机制
Last updated
Last updated
副官副官不同区块链需要不同的共识机制。比如公有链几乎人人都可以参与,每个参与者都是匿名,参与者之间不存在任何信任,采用算力敏感的挖矿共识作为激励机制。但是联盟链和私链在一组已知的、已识别的、且经过审查的参与者中进行区块链的操作。节点具有一定的信任基础,不需要算力敏感的共识机制,BFT类型的共识机制比较适合。
分布式节点按照投票决定下一步行动,按照多数节点的意见执行,但是分布式系统中可能存在恶意节点,也可能宕机。简化为将军和副官模型,忠诚的副官会遵守同一命令。
恶意节点为m,总结点为n,n>3m时,是可以解决的。
预设条件:
至少4个以上的参与者
每轮次有一个发令者
少于1/3的参与者作恶或失效
极大概率可达的网络(区块链网络)
区块链的共识算法本质上是为了解决拜占庭将军问题。
比特币作为无中心登记的匿名服务,创建多重身份的代价极低,多重身份意味着多重的投票权利。
Gloria可以实行多重身份攻击,从而允许她的双花行为。原因是身份制造几乎没有成本,所以我们需要取代用身份投票的机制,我们采用资源成本进行投票。提高作恶的代价!
挖矿(Mining)就是将新区块添加到区块链的过程。
通过消耗资源解决一个问题获得投票资格(即记账权)。记账权必须通过花费资源来获得,比如通过蛮力解决一个问题,通过记账奖励鼓励投入资源。
具体挖矿过程:参与者综合上一个区块的Hash值,上一个区块生成之后的新的验证过的交易内容的Merkel Root值,加上猜测一个随机数Nonce,再加上时间,一起打包到一个新的候选新区块,让新区块的Hash值小于比特币网络中给定的一个数。
挖矿成功:SHA(Merkel Root + 上一个区块Hash值 + 时间 + Nonce) < target
这是一道面对所有矿工的计算题,target范围越小,计算出来就越难(基于Hash函数特性)。系统每隔2016个区块,会根据上一周期的挖矿时间来调整挖矿难度(通过调整0的数目),来调节生成区块的时间稳定在10分钟左右。
整个争夺记账的过程就是挖矿的过程,也就是比特币发行的过程。挖矿争夺记账权奖励,记账有利润:比特币奖励+交易手续费。很多人争夺记账圈,通过付出计算量解决一个难题,谁先解决谁获得记账权,坏人作恶的成本变高。每十分钟左右生成一个不超过1MB的区块(记录了这10分钟发生的验证过的交易内容),串联到区块链尾部,每个区块的成功提交者可以得到系统一定数量的比特币的奖励(该奖励作为区块内的第一个交易,一定区块数后才能使用),以及用户附加到交易上的支付服务费用。
计入全网同时有两个合法提案会在网络中进行广播,收到的用户进行验证后,会基于用户认为的最长链基础上继续难题的计算。因此,系统中可能出现链的分叉(fork)。解决方案:比特币网络最长链机制。
双花能够成功需要攻击者拥有一半以上的算力,比特币网络的安全,要求一半以上的算力是可信的。一般个体达到1/3的计算力,比特币网络就存在破坏的风险了。