比特币白皮书里的工作量证明(Proof-of-Work)要证明的是什么?

比特币白皮书里的工作量证明(Proof-of-Work)要证明的是什么?

白皮书里讲的工作量证明:

“为了在点对点的基础上构建一组分散化的时间戳服务器,仅仅像报纸或世界性新闻网络组一样工作是不够的,我们还需要一个类似于亚当•柏克(Adam Back)提出的哈希现金(Hashcash)。在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,比方说SHA-256下,随机散列值以一个或多个0开始。那么随着0的数目的上升, 找到这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。

我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制。只要该CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。

同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问题。如果决定大多数的方式是基于IP地址的,一IP地址一票,那么如果有人拥有分配大量IP地址的权力,则该机制就被破坏了。而工作量证明机制的本质则是一CPU一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。我们将在后文证明,设想一个较慢的攻击者试图赶上随后的区块,那么其成功概率将呈指数化递减。

另一个问题是,硬件的运算速度在高速增长,而节点参与网络的程度则会有所起伏。为了解决这个问题,工作量证明的难度(the proof-of-work difficulty)将采用移动平均目标的方法来确定,即令难度指向令每小时生成区块的速度为某一个预定的平均数。如果区块生成的速度过快,那么难度就会提高。”

白皮书里工作量证明其实讲了以下3点:

1.工作量证明的过程就是要解一道数学难题,这道数学难题就是要解一个用SHA256算法运算过的前面带1个或N个0的哈希值。如果矿工能算出这个未被SHA256算法运算过的随机散列值,并向全网广播,就拥有区块的记帐权,从而能获得比特币奖励。其它节点如何知道该矿工找到了这个随机散列值呢?当然是将矿工广播的随机散列值用SHA256算法计算,算出的结果与先前公布的哈希值进行比对,如果与先前哈希值一样,开头也有那么多个0,则验证该矿工计算正确。其它节点于是一致承认该矿工拥记帐权,于是跟随该矿工一起记帐。这里面矿工广播的随机散列值就是矿工向全网提供的工作量证明。而其它节点用SHA256算法计算出结果并比对的过程就是检验矿工是做了一定的工作量。奖励不是白给的,要付出大量劳动的。举个例子:A要向B发一封邮件,但要防止被B误认为是垃圾邮件。系统会根据发件人的发件时间和第几次发邮件出一道难题。这道难题初始信息包括:版本号(可以说是发第几次邮件)+发件日期时间+发件人邮件地址+一串随机散列数值,再将以上信息打包用SHA256算法计算出开头带数个0的hash值。并将这个哈希值公布,从而A和B都知道这个哈希值。那么A现在就要计算这个hash值hash前初始信息中包含有的随机散列值。A如果找到该散列值,就能将散列值与邮件一同发送给B,B只需用SHA256算法将该散列值再HASH计算一遍,得出同样带数个0的哈希值,然后就承认并接收A发的邮件不是垃圾邮件。因为A费了九牛二虎之力计算该难题的目的不仅仅是为了发垃圾邮件。这就是反垃圾邮件算法的形象过程。

2.以上前面数个0的个数可以根据全网挖矿算力灵活进行调整,算力高的时候,减少0的个数,算力低的时侯,增加0的个数,以保证出块数为每10分钟一个,每增加一个0,计算难度将呈指数级增长。

3.解决了一个集体节点中,哪些算是大多数的问题。因为在表决时要少数服从多数嘛!比特币釆用的是一CPU一票,而不是一IP地址一票。IP地址数量容易被操纵,而CPU分布在每个人的电脑里面,所以更加分散,不容易造成中心化,但现在出现了由专业化矿机组成的大型矿池,造成算力越来越中心化,这是中本葱始料未及的。由诚实节点组成的大多数被表现为最长的链。

攻击者想要攻击篡改一个数据除了要与时间戳一致,并完成该区块的工作量证明外,还要完成该区块之后所有区块的工作量证明,这工作量大得惊人,除非攻击者能控制全网51%的算力,否则只能是做梦而矣。

比特币白皮书里的工作量证明(Proof-of-Work)要证明的是什么?_第1张图片
图片发自App

你可能感兴趣的:(比特币白皮书里的工作量证明(Proof-of-Work)要证明的是什么?)