织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

工作量证明本质上是一个去中心化时钟(2)

时间:2020-08-05 09:34来源:未知 作者:admin 点击:
这个问题在Leslie Lamport于 1978 年发表的“Time, Clocks, and the Ordering of Events in a Distributed System”一文中有很详细的说明 。不过实际上 , 除了 “正确同步的物

这个问题在 Leslie Lamport 于 1978 年发表的 “Time, Clocks, and the Ordering of Events in a Distributed System” 一文中有很详细的说明 。不过实际上 , 除了 “正确同步的物理时钟” 之外, 这篇文章并没有提出什么彻底的解决办法。在 1982 年,Lamport 还提出了 “Byzantine Generals Problem” (拜占庭将军问题) 。中本聪在他早期的邮件中解释了工作量证明如何能解决该问题。不过 ,他在比特币白皮书中写道: “想要在点对点的基础上使用一个分散式的时间戳服务器,我们需要使用工作量证明系统。” 这句话表明工作量证明主要还是用来解决时间戳排序这一问题的。

时间排序是最根本的问题

这里必须要强调一下,在中本聪提出解决办法之前,无法在分散式系统中确定事件与时间点的关联 这个难题使得去中心化账本一直无法实现。区块链中也有很多其它的技术细节值得玩味,不过时序还是最基础也是最重要的一点。我们甚至可以认为, 无法完成时间排序,就不可能有区块链 。

简要回顾 “工作量证明”

简单来说 ,比特币上的工作量证明就是找到一个值, 这个值经过 SHA-2 这个哈希函数运算后 (得到的哈希值) 能满足特定的条件(小于某一特定数值)。而这个要求的数值越小,可能满足条件的输入值就越少,从而找到这样一个输入值的难度就越高。

这种机制之所以叫作 “工作量证明” 就是因为满足条件的数值太少了。找到这样一个数需要进行大量的尝试(也就是工作量)。 需要花费的工作量反过来暗示了需要花费的 时间。

通过改变要求,我们可以调整难度以及找到这样一个值的可能性。比特币难度的动态调整使得整个网络平均每十分钟找到一个这样的值(译者注:虽然这样的值要满足的要求是不断变化的) 。

区块之间无事发生

一条链的状态是执行链上区块中交易的结果 。 因此每个新区块都会生成一个新状态。因为区块链的状态随着每一个新区块的生成而不断变化(译者注:而没有产生新区块时状态就不会改变),我们把生成一个区块所用的平均时间(十分钟)看作是区块链时间的最小计量单位。

SHA 函数是无记忆性、无过程性的

一个安全哈希算法在统计学中被认为是无记忆性的。这一特性明显与人类的直觉相反。有关无记忆性最好的例子就是扔硬币。如果一枚硬币已经连续十次正面朝上了,这是否代表下一次更可能是反面朝上呢? 直觉告诉我们,“是的”。但是实际上,不管之前的记录是什么样的,正面或是反面朝上的概率仍然是对半开的。

这种无记忆性是工作量证明的 无过程性 的前提 。无过程性指的是当矿工挖矿时反复尝试不同的 nonce 时,每一次尝试都是独立的事件。不论他们已经付出了多少努力,之后的每一次尝试找到正确结果的概率都是一样的。换句话说,每一次不成功的尝试不会让矿工们 “更接近” 正确的结果。一个已经尝试挖了一年矿的矿工并不会比一个刚开始挖矿的矿工更容易挖到下一个区块 。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容