50. 市场竞争、经济激励和难度调整

这一章,是本书第一篇里最难的一章,读者需要同时理解 4 个以上的新概念。而我们要解决的问题是:

工作量证明的目标值应该怎么定,才能让外界相信我们的数字档案馆已经投入了足够大的成本来制造区块头?

根据经济学理论,在一个充分竞争的市场里,企业的利润会趋近于零,而企业本身的规模有可能很大。虽然现实中没有完全竞争的市场,但竞争会不断挤压企业的利润空间,倒逼企业创新。

所以,只要把市场竞争和工作量证明相结合,就能解决我们的问题。

那么,之前提到的数字档案馆的“连锁店”,也就是“节点”,必须互相竞争,也就是说,它们必须是互相独立的企业。而新的企业也可以随时加入成为节点。

这种竞争,必须导向越来越小的工作量证明目标值。怎么设计呢?

数字档案馆向用户提供的不是免费服务,每存证一条数据,都应该向用户收取手续费。我们之前并没有设计手续费收入如何在多个节点之间分配。我们现在定这么几条规则:

  • 区块头哈希值小于目标值的区块才是有效的区块;
  • 凑出有效区块的节点可以获取区块里的所有手续费(这个收入称作“区块收入”)。
  • 当网络里出现了更长的链条时,节点应该立即认可这个链条,并在这个最长链条的结尾开始竞争下一个区块。(本书后半部分会说到,这一条规则其实不用定,它是博弈的均衡)

基于上述 3 条规则,节点之间的竞争,就是看谁率先凑出有效的区块头,简称“出块”。很显然,算力越大的节点,越容易出块,越容易获得手续费,所以节点就要尽可能提升自己的算力,这就是经济激励

上述第3条“规则”很有意思,它可以简称为“最长链均衡”。它其实是在解决,当多个节点同时凑出有效区块时,其他节点应该认可谁。这种现象再极端一点,就会如下图所示,节点 X 和节点 Y 都不认可对方,只认自己的区块,这种现象叫做“分叉”。

此时,节点 Z 应该何去何从?有了“最长链均衡”,节点Z可以很快地判断出应该跟随最长的节点Y的链条。而当大多数节点都这么“站队”时,最长链上汇集的算力就会远远超过较短的链,那么长链就更容易延长,短链上的节点会很快知难而退,回归主流,分叉则会消失。

回到市场竞争。如果利润空间很大,那么节点就会提升算力,增加成本。与此同时,节点也会研发算力尽量高,造价尽量低,耗电量尽量少的算力设备,也就是搞创新。可见,随着产业的发展,市场上的总算力会不断提升,如果工作量证明的难度是固定的,那出块频率会越来越高,跟我们原定的每十分钟一个区块的设计不符。所以,我们还需要一套“难度调整”机制。

难度调整,简单说就是出块太快时就调高难度,出块太慢时就调低难度,这是一种负反馈调节系统。这样,随着产业发展,长期来看出块的难度会越来越大,工作量证明的目标值会越来越小,区块头哈希值前面的零会越来越多。

我们需要一则公式来量化难度调整。这样的公式很难说怎样才能最优。我们暂定每2016个区块调整一次目标值。2016个区块对应336小时(14天),如果偏离了336小时,就要进行负反馈调整。公式如下:

 

至此,我们就把工作量证明和市场竞争完美地结合了。

节点在竞争压力下,算力成本将吃掉大部分收入,而如果要维护另一条虚假链,则需要投入同等的算力成本,这是不可能完成的。即使节点有实力这么做,它的最优策略也应该是把算力投入到真实的链上出块。

从用户的角度看,精巧的区块头哈希值凝结了残酷的市场竞争,每一个 0 的背后都是能源,都是人力,归根结底都是钱。这些钱,化为了哈希值里的 0 之后,就再也无法反悔了。如果节点作弊,或者整套系统作弊,那么所有的投入将会付诸东流。

至此,我们的存证系统的可信性已经达到了极致!

最后,我们回到数据结构上来。为了方便验证区块是否有效,区块头里需要加入两个新的信息:工作量证明目标值和区块生成时的时间戳。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值