Wisdom Chain挖矿的本质是什么

论坛 期权论坛 期权     
智慧链技术社区   2020-3-28 04:13   1699   0




区块链本质上是一个去去中心化账本,今天我们将讲述Wisdom Chain挖矿。我们知道Wisdom Chain采用了PoW与DPoS的混合机制,所以在此之前我们要了解下PoW工作量证明机制。

工作量证明系统(或者说协议、函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这个概念由Cynthia Dwork 和Moni Naor 1993年在学术论文中首次提出。


而工作量证明(PoW)这个名词,则是在1999年 Markus Jakobsson 和Ari Juels的文章中才被真正提出。哈希现金是一种工作量证明机制,它是亚当·贝克(Adam Back)在1997年发明的,用于抵抗邮件的拒绝服务攻击及垃圾邮件网关滥用。


在比特币之前,哈希现金被用于垃圾邮件的过滤,也被微软用于hotmail/exchange/outlook等产品中(微软使用一种与哈希现金不兼容的格式并将之命名为电子邮戳)。


工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。这种方案的一个核心特征是不对称性:工作对于请求方是适中的,对于验证方则是易于验证的。它与验证码不同,验证码的设计出发点是易于被人类解决而不易被计算机解决。








举个例子,给定的一个基本的字符串"Hello, WDC!",我们给出的工作量要求是,可以在这个字符串后面添加一个叫做nonce的整数值,对变更后(添加nonce)的字符串进行SHA256哈希运算,如果得到的哈希结果(以16进制的形式表示)是以"0000"开头的,则验证通过。


为了达到这个工作量证明的目标。我们需要不停的递增nonce值,对得到的新字符串进行SHA256哈希运算。按照这个规则,我们需要经过4251次计算才能找到恰好前4位为0的哈希散列。


"Hello,WDC!0"=>1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
"Hello,WDC!1"=>e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
"Hello,WDC!2"=>ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7
......
"Hello,WDC!4248"=>6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965
"Hello,WDC!4249"=>c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
"Hello,WDC!4250"=>0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9


通过这个示例我们对工作量证明机制有了一个初步的理解。有的人会认为如果工作量证明只是这样的一个过程,那是不是只需要记住nonce为4521计算能通过验证就行了?当然不是的,这只是一个个例。


下面,我们将输入简单的变更为"Hello,WDC+整数值",整数值取1到1000,也就是说,将输入变成一个由1000个值组成的数组:"Hello,WDC!1、Hello,WDC!2……Hello,WDC!1000"。然后对数组中的每一个输入依次进行上面例子中要求的工作量证明——找到前导为4个0的哈希散列。


容易算出,预期大概要进行2^16次尝试(哈希值的伪随机特性使得我们可以做概率估算),才能得到4个前导0的哈希散列。而统计一下刚才进行的1000次计算的实际计算结果,我们会发现,进行计算的平均次数为66958次,十分接近2^16(65536)。在这个例子中,数学期望的计算次数,就是我们要求的“工作量”,重复多次进行的工作量证明会是一个符合统计学规律的概率事件。


统计输入的字符串与对应得到目标结果实际使用的计算次数列表如下:


Hello,WDC!1 => 42153
Hello,WDC!2 => 2643
Hello,WDC!3 => 32825
Hello,WDC!4 => 250
Hello,WDC!5 => 7300
...
Hello,WDC!995 => 164819
Hello,WDC!996 => 178486
Hello,WDC!997 => 22798
Hello,WDC!998 => 68868
Hello,WDC!999 => 46821


Wisdom Chain体系里的工作量证明机制与上述示例类似,但是要比上述简单些。Wisdom Chain网络中任何一个节点,如果想生成一个新的区块并写入区块链,必须解出Wisdom Chain网络出的工作量证明的迷题。


这道题关键的三个要素是工作量证明函数、区块及难度值。工作量证明函数是这道题的计算方法,区块决定了这道题的输入数据,难度值决定了这道题的所需要的计算量。


Wisdom Chain采用了DPoS+PoW的混合机制,DPoS委托权益证明机制的加入,通过社区节点抵押投票动态的选出每一个纪元的前15位矿工候选人,然后在将PoW工作量证明机制的难度设置为1,然后每个矿工候选人,进行一个哈希计算,哈希计算出来的值小于难度目标值就算是获得了打包权。而这个哈希计算,是一个计算公式,具体来说,是将如下参数连接起来。



version + previous_block_hash + merkle_root + time +target_bits + nonce


进行两次256哈希计算,如果计算出的值小于目标难度值,就成功
代码结构如下:


block_header=version+previous_block_hash+merkle_root+time+target_bits+nonce
foriinrange(0,2**32):
   ifsha256(sha256(block_header))
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:75
帖子:5
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP