从零开始区块链:比特币如何挖矿?——比特币经典论文研读 (4) — ScalersTalk成长会 – 持续行动,刻意学习 – ScalersTalk Wonderland

从零开始区块链:比特币如何挖矿?——比特币经典论文研读 (4)

成长分享 scalerstalk 浏览 0条评论

ScalersTalk 成长会 2018 年火热招募中,目前报名人数已经突破 1100 人,参见《持续行动,为三年后的自己,扎心地做点事——ScalersTalk 成长会 2018 年会员资格开放申请》

一个比特币是怎么来的?这一节我们会得到答案。

本系列历史文章列表

从零开始区块链:对等网络与电子现金是什么?——比特币经典论文研读 (1)

从零开始区块链:如何防止一笔钱花两次?——比特币经典论文研读 (2)

从零开始区块链:如何证明计算机的工作量?——比特币经典论文研读 (3)

7.工作量证明(2)

第3篇的铺垫,这里就很好理解了。

(1) 比特币采用SHA256的标准做哈希运算,平均的工作量与0比特位的数量指数级增长。

(2) 为了时间戳的考虑,在计算每一个块的哈希值的时候,增加了一个随机数(nonce)。随机数每次加1,生成哈希值,检查是否满足前缀是若干个0的要求。CPU需要做大量计算才能得到满足要求的解。如果要块的内容修改,那就需要重新计算,找到满足条件的哈希值。这里面引用的就是哈希的细节敏感特性,当你修改了内容,哈希值就变化了

(3) 工作量证明还解决了一个“集体决策”的“大多数”问题。在网络中,到底用什么来代表“大多数”?如果用一个IP地址代表一票,那有很多IP地址的人可以操纵结果。于是作者采用了“一个CPU一票”的方式来代表大多数的意见。因为链的生成是需要工作量的,于是最长的那一条链,必然就拥有最多的工作量,也就是代表大多数人的意见。而工作量其实就是由CPU来计算的,于是这样就落实了一个CPU一票的精神。这里作者的逻辑就是,选择一个相对有难度的指标,计算工作量,然后把大多数人的工作量攒在一起,这就形成了一个共同的意见。不过作者没有料到的时,现在也有很多人拥有大量的CPU,而且不止是CPU,已经有专门的芯片了……

(4) 如果大部分的CPU算力在好人手里,那大家齐心协力一起算,工作的积累就会很快,链的增长速度超过其他链。如果要修改一个过去的块,攻击者要把这个块之后的其他所有块都重新做一遍。作者在后面会证明,随着链的增长,成功概率不断减小。你可以理解为:历史的潮流浩浩荡荡,如果你要逆潮流而动,那你要比潮流还更有能量。

(5) 综合考虑,块增加的速度会不断调整,如果增加速度太快了,计算工作量的难度会增加。

工作证明这部分就结束了。我有两点感想:

(1) 你是否发现,在阅读论文的时候,如果你基础工作打得扎实,哪怕需要花费一些时间,但是效果是可以复利到的。比如昨天用了很大的篇幅探讨HashCash,弄清楚基本情况以后,再探讨工作量证明反而简单了。

(2) 中本聪在设计比特币的时候,就是想用CPU分散的方式,构造没有人能操纵的结果。但是比特币发展至今,越来越多的算力掌握在少数人的手里,这倒也是有意思的事情。现在所谓的挖矿其实就是算出哈希值的隐喻表达。

(3) 基于工作量证明的机制有些人认为过于浪费资源,于是有新的机制开发出来,不需要进行挖矿工作,这个以后再议。

8.网络

这部分内容讲了比特币网络运行的基本规则:

(1) 所有交易全网广播。

(2) 每个节点把新交易纳入一个块中。

(3) 每个节点计算对应块的工作量证明,就是找到那个哈希值。

(4) 如果有节点算出了哈希值,即完成了工作量证明,就全网广播。

(5) 如果有一个块所有的交易有效,并且没有出现双花的情况,节点接受这个块。注意前面说过每个节点会有所有的网络交易,而且每个交易有签名可以验证。

(6) 节点认可一个块的方式,就是把这个块当成上一个块,继续寻找下一个块的工作证明。下一个块数据字段里面有一个“前一块哈希值”就把认可的哈希填进去。

除此之外还有其他几个要点:

(1) 节点只认网络中最长的那个链条作为正确的结果,然后继续延长这条链。

(2) 如果在同一时间,同时有两个节点发现了新的不同块,广播出去,那么有的节点先收到第一个,有的先收到第二个,怎么办?该干嘛干嘛。继续在先收到的块上挖矿,但是保存另外一个分支。等到下一个块出现的时候,总会有一个变得更长,那就到那个时候,换到更长的块上去。

(3) 不要担心丢包的问题,缺的总是可以通过各种方式补上。

9.激励机制

激励机制一直是P2P网络研究的重点问题[14,15]。只要是去中心化,就会面对激励机制问题。为什么?因为你让很多人干原来一个中心就能干的事情,一个是我为什么要做这些事情,对我有什么好处?二是,如果参与的人多,搞小动作的人就会出现。激励机制的出现就是设计了一套体系,来激励大家好好干,别搞事。

P2P网络原先设计的是“我为人人,人人为我”的原则,但是,由于经常会出现部分节点“搭便车”的情况,网络运行并没有设计的那样好。比如在BT下载里面,就会有“吸血鬼”的节点,只从其他节点下载,却从来或者很少上传。这样最后就会出现社会科学里说的“公地悲剧”[16]

公地悲剧指的是,在共享资源的系统中,每个人根据自己的利益最大化独立行事,但是却最后这些行为却导致和共同利益相反的结果。在P2P网络中,如果吸血节点越来越多,那最后这个网络就会出现拥塞以及崩坏。在社会环境下,每个工厂都对外排放污水,最后生态环境破坏,没有人逃得掉。

比特币里的激励机制如何设计?

(1) 块内第一个交易,由块创始人产生一个新的币。这样可以激励节点参与到P2P网络的维护中,也可以把新发行的币流通到市场中。因为在比特币的场景下,没有中央权威机构发行货币。这样一来,网络中出现的币,以恒定的速度发行,就像黄金矿工挖出黄金一样;只不过比特币消耗的是电能与CPU的算率。

(2) 激励机制还包括交易手续费。如果交易的输出值小于输入值,那么这个差价就是交易费,算在包含这笔交易的块下。而一旦币进入流通以后,激励就主手续费为主,而且可以不受通胀影响。

(3) 激励机制让节点选择做一个诚实的节点,不干坏事。因为如果一个攻击者组织了超过诚实节点的算力,就面临这个选择:要么选择用于欺诈其他所有人,于是可以把花的钱盗回来;要么就是用来生成新的币。不过算下来,应该还是造新币划算,因为既然已经有一半以上的算力,其实自己可以赚到超过其他所有人更多的钱,按照规则行事,对自己有利;否则把整个网络搞坏,自己留一堆币,也没有用了。

所以比特币的激励机制就是用“币”这个方式,简单直接地对节点进行激励。这个激励效果有多好?因为知道挖矿可以赚得比特币,现在有专门的人从事矿机的生产与制造,已经形成了相当规模的产业。如此看来,激励效果相当之好……

总结下来,这一节就两个主要议题:

(1) 比特币通过哈希碰撞的方式进行挖矿

(2) 比特币作为一种激励手段鼓励节点参与到网络运行中

    用苹果手机,一竿子打赏给S私人红包

参考文献

[14] Ma R T B, Lee S C M, Lui J C S, et al. An incentive mechanism for P2P networks, 2004[C].

[15] Zhang K, Antonopoulos N, Mahmood Z. A Review of Incentive Mechanism in Peer-to-Peer Systems, 2009[C].Oct.

[16] Hardin G. The tragedy of the commons[J]. Journal of Natural Resources Policy Research, 2009,1(3):243-253.

  1. 111111刻意学习.jpg

    新书《刻意学习》热卖中

ScalersTalk成长持续论

    ★★★★★   

ScalersTalk成长会是由Scalers发起的社群生态体系,专注1000天以上的“N阶持续行动理论体系与能力构建”,以“从英语初阶到同声传译全栈解决方案”为特色,以“持续输入输出训练实践拓宽认知边界”为导向。

微信公众号  l  ScalersTalk成长持续论

新 浪 微 博   l  @Scalers

网           站  l   ScalersTalk.com

开 放 社 群   l  100小时训练QQ群C 456036104

畅 销 书 籍  l 《刻意学习》火热销售中

 ★★★★★ 

2018年成长会申请说明

《持续行动,为三年后的自己,扎心地做点事——ScalersTalk成长会2018年会员资格开放申请(2017.12)》(请点击)

本文原文:http://www.scalerstalk.com/1308-Incentive

与本文相关的文章