接着上一篇,我们继续聊聊《比特币白皮书》的第 4 部分:⼯作证明 (Proof-of-Work),今天的内容有点长(原文小长),希望你能耐心看完。
⼯作证明
还是老规矩,原文和中文翻译放在这里,便于中英文对照,有条件的可以原文理解。
To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof-ofwork system similar to Adam Back's Hashcash 6 , rather than newspaper or Usenet posts. The proofof-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash.
为了实现⼀个基于点对点的分布式时间戳服务器,我们需要使⽤类似亚当·伯克的哈希现⾦ 6 那样的⼀个⼯作证明系统,⽽不是报纸或者新闻组帖⼦那样的东⻄。所谓的⼯作证明,就是去寻找⼀个数值;这个数值要满⾜以下条件:为它提取散列数值之后 —— 例如使⽤ SHA-256 计算散列数值 —— 这个散列数值必须以⼀定数量的 0 开头。每增加⼀个 0 的要求,将使得⼯作量指数级增加,并且,这个⼯作量的验证却只需通过计算⼀个哈希。
For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it.
在我们的时间戳⽹络中,我们是这样实现⼯作证明的:不断在区块之中增加⼀个随机数(Nonce),直到⼀个满⾜条件的数值被找到;这个条件就是,这个区块的哈希以指定数量的 0 开头。⼀旦 CPU 的耗费算⼒所获的的结果满⾜⼯作证明,那么这个区块将不再能被更改,除⾮重新完成之前的所有⼯作量。随着新的区块不断被添加进来,改变当前区块即意味着说要重新完成所有其后区块的⼯作。
The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-ofwork of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added.
⼯作证明同时解决了如何决定谁能代表⼤多数做决定的问题。如果所谓的“⼤多数”是基于“⼀个IP地址⼀票”的⽅式决定的话,那么任何⼀个可以搞定很多 IP 地址的⼈就可以被认为是“⼤多数”。⼯作证明本质上来看,是“⼀个CPU⼀票”。所谓的“⼤多数决定”是由最⻓链所代表的,因为被投⼊最多⼯作的链就是它。如果⼤多数 CPU 算⼒被诚实的节点所控制,那么诚实链成⻓最为迅速,其速度会远超其他竞争链。为了更改⼀个已经产⽣的区块,攻击者将不得不重新完成那个区块以及所有其后区块的的⼯作证明,⽽后还要追上并超过诚实节点的⼯作。后⽂展示为什么⼀个被拖延了的攻击者能够追上的可能性将随着区块的不断增加⽽指数级降低。
To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases.
为了应对硬件算⼒综合的不断增加,以及随着时间推进可能产⽣的节点参与数量变化,⼯作证明难度由此决
定:基于平均每⼩时产⽣的区块数量的⼀个移动平均值。如果区块⽣成得过快,那么难度将会增加。
什么是工作量证明
工作量证明(Proof of Work,简称 PoW)是比特币的一项关键技术。
具体做法是:矿工们通过解决复杂的数学问题来“挖矿”,验证交易。只有当矿工成功解决这些问题时,交易才会被记录到区块链中。这个过程不仅保证了交易的合法性,还通过消耗计算资源来防止网络的攻击。
什么是“工作量证明”呢?
简单理解,工作量证明就是比特币系统通过一个“计算问题”来保证交易的真实性,并确保交易数据不能随便篡改。
还是有些抽象,对吧?没关系,我们继续用大白话理解。
可以把比特币网络想象成一个“藏宝图”。
每个矿工就是寻宝者,他们的任务是按照藏宝图提供的线索,去寻找“宝藏”(比特币)。
但藏宝图上并没有直接标出宝藏的位置,它只给了很多难度极大的提示。这些提示需要矿工们通过计算、尝试、解答来一步步解开。
因为每个题目都很复杂、难度大,寻宝者需要花费很多时间和精力来解答。
谁先找到宝藏,谁就能获得奖励:
第一个成功解开所有谜题,找到“宝藏”的寻宝者(矿工)就能得到奖励。这个奖励就是比特币!
找到就完事了么?并没有!还需要其他寻宝者(矿工)确认结果,怎么确认呢?
当有人找到宝藏,其他寻宝者会检查他找到的宝藏是否真实有效。只有当大家都确认这个宝藏位置没有问题,宝藏才会被记录下来,标记为“已被找到”——这就是比特币交易被确认的过程。
所以说,矿工没解决一个问题,就像是一个“工作完成”的证明,很形象的表达。
为什么是数学题
第 2 个问题,为什么要“做数学题”?为什么比特币不能直接让系统自动记录交易,而要矿工去做数学题呢?
真相是:为了确保网络的安全性和防止恶意攻击。
因为比特币的网络是去中心化的,没人控制它。所以,如果没有“工作量证明”的话,任何人都可以轻易修改交易记录,甚至造假交易。
举个栗子:假如你通过某个平台发了笔虚假的比特币交易,想让它进入比特币的区块链。你会怎么做呢?
如果系统没有“工作量证明”,你可以直接修改区块链上的数据,伪造交易。而有了工作量证明,就是设置一个门槛,并且这个门槛还不低呢,让你解决一个超级难的数学问题,需要你花大量的时间和计算能力(就是“工作量”)后,才能“合法”地加入交易数据。
大糙话,你得老老实实守法干活,光靠体力还不行,还得有足够的脑力(程序员+黑客的即时感),才能正当收入,想靠欺骗致富,嘿醒醒醒醒,在这里,白日梦了!
矿工为啥愿意干
第 3 个问题,为什么矿工要做这个工作?他们为什么愿意花费大量的计算资源去做这些复杂的数学题呢?
因为有钱赚,他们会得到奖励!
在比特币网络中,矿工通过“挖矿”解决数学题后,会获得比特币奖励,也就是比特币的“新币”,就像新印的钞票一样。这个奖励是比特币系统为了鼓励矿工参与验证交易、维护网络安全而设计的。
每当矿工完成一个“工作量证明”,他们就会得到比特币奖励(区块奖励)。
目前,比特币每10分钟就会产生一个新的区块,每个区块有一个固定数量的比特币奖励(目前是12.5个比特币,但这个奖励每四年会减半)。
举个栗子:矿工们“挖矿”就像是在参加一场计算力的竞赛。每个矿工都有一台计算机,计算机不停地解题,谁先解对,谁就能获得奖励。
每次成功解题,矿工就能把交易记录写进比特币账本(区块链),并获得比特币作为奖励。
为什么能确保安全
第 4 个问题,为什么“工作量证明”能确保安全,而不是其它?
首先,它的计算难度高,篡改很困难:
比特币的工作量证明是一个非常复杂的数学问题,需要计算机花费大量时间来解答。这个问题设计得非常难,即使是最强大的计算机也需要很长时间才能解决,而且解题的过程是完全不可预测的。
一旦有人试图篡改交易数据,就得重新解题,而且还得重做后面所有区块的数据,这几乎不可能发生。这就是比特币的安全性来源。
其次,有矿工竞争机制。
因为每个矿工都在竞争“先解答问题”的奖励,所以攻击者如果想改变区块链的历史数据,就得控制超过50%的计算能力,这几乎是不可行的,尤其是随着比特币网络的不断壮大,矿工数量也在增加。
最后,去中心化的安全。
比特币的工作量证明系统是去中心化的,每个人都可以参与进来。只要你有足够的计算力,你就能加入网络,参与验证。
没有中央机构能控制比特币网络,这使得攻击者必须拥有极其强大的算力才能攻击成功。即使有人试图攻击,也很快会被发现,因为网络中所有矿工都在不停地计算和验证交易。
小小回顾
总之,工作量证明就是比特币通过一个复杂的计算问题,让矿工们解决数学题来验证交易。这个过程是比特币网络的安全保障。
它确保交易记录不可篡改,只有当矿工花费计算力解决问题后,交易才会被写入区块链。
矿工通过挖矿获得比特币奖励,这个奖励是网络给矿工的激励,让他们继续为比特币网络提供安全保障。
写到这里,突然想到奈飞和海底捞文化,给员工极大的授权,激发每个人的主人翁意识和参与感,相当于拉每个员工合伙,每个人都拼了命的护自家生意,从而形成了别家学不会的护城河文化,一样的道理!
全员背书,人人为我,我为人人!
写在最后
关于第 4 部分,今天就先聊到这,下一篇继续。希望对你有帮助!
|