4. 工作量证明
为了在点对点的基础上构建一组分散化的时间戳服务器,仅仅像报纸或世界性新闻网络组一样工作是不够 的,我们还需要一个类似于亚当•柏克提出的哈希现金。在进行随机散列运算时,工作量证明机制引入了对 某一个特定值的扫描工作,比方说 SHA-256 下,随机散列值以一个或多个 0 开始。那么随着 0 的数目的 上升, 找到这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。
我们在区块中补增一个随机数,这个随机数要使得该给定区块的随机散列值出现了所需的那么多个 0。我 们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制。只要该 CPU 耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。 由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块 的全部工作量。
同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问题。如果决定大多数的方式是基于 IP 地址的,一 IP 地址一票,那么如果有人拥有分配大量 IP 地址的权力,则该机制就被破坏了。而工作量 证明机制的本质则是一 CPU 一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。
如果大多数的 CPU 为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如 果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作 量,并最终赶上和超越诚实节点的工作量。我们将在后文证明,设想一个较慢的攻击者试图赶上随后的区 块,那么其成功概率将呈指数化递减。
另一个问题是,硬件的运算速度在高速增长,而节点参与网络的程度则会有所起伏。为了解决这个问题, 工作量证明的难度将采用移动平均目标的方法来确定,即令难度指向令每小时生成区块的速度为某一个预 定的平均数。如果区块生成的速度过快,那么难度就会提高。
还没有评论,快来发表第一个评论!