*本系列文章是链家博客核心区块链研究小组输出的高质量区块链研究文章。它旨在研究和分享区块链底层技术的原理分析和新技术趋势,拒绝讨论任何令牌,市场和投资建议。在上一篇文章中,我们讨论了Stefan Dziembowski[14]从数学角度对PoC的形式模型和证明的讨论,而Burst是从工程角度实际运行的完整的PoC系统。
两者在概念上是相同的,但是Burst在实现细节上不同于本文提出的模型和交互。
本文将从Plot文件和chunking过程两个方面讨论PoC算法的细节,最后结合Stefan Dziembowski的模型讨论Burst能否纳入其框架。
PoC硬盘利用率和绘图文件
绘图文件(Plot file)是参与绘图的每个节点或挖掘器需要存储在硬盘中的文件,其内容由大量特定结构的哈希值组成。绘图文件包含以下基本概念:
Shabal256:Shabal256是BurstCoin使用的哈希算法。与SHA256等哈希算法相比,Shabal256需要更多的CPU时间和计算量。结合上一章的内容,我们可以知道BurstCoin选择Shabal一方面是因为矿工在分块阶段不需要做大量的Hash操作,另一方面也可以防止可能的恶意矿工通过计算代价来临时计算每个分块阶段需要的Hash值而不是存储的Hash值。Nonce:Nonce是绘图文件中固定数量的基本单位,由256KB数据组成。它是矿工参与PoC过程所使用的基本逻辑单元。Scoop:每个Nonce文件由4096个Scoop文件组成,这些文件也有数字,数字范围是0-4095。并且每个Scoop文件包含两个散列值,即Nonce文件包含8192个散列值。随机数的生成过程如下:
1.Nonce文件的种子由账号Id(即用户地址或BurstCoin网络中的用户Id)和Nonce Id(即Nonce号)组成。第一次哈希后,生成Hash #8191,即non中编号为8191的哈希值。
2.# 8190哈希值由之前的# 8191哈希值和帐户Id、Nonce Id生成。
3.# 8189哈希值由前面的两个# 8191哈希值、# 8190哈希值和帐户Id、NonceId等生成。每个哈希值由所有先前计算的哈希值和AccountId、Nonce Id生成。如果进程中有超过4096字节,新生成的4096字节将作为下一个哈希函数的输入参数。
4.最终哈希由哈希#0-8191、帐户Id和随机数Id生成。之后,8192个散列值分别被异或作为每个散列的最终值。
5.得到8192个哈希值后,Scoop文件的结构如下图所示:
此时,我们已经生成了一个完整的Nonce文件,它包含8192个哈希值,占用256KB。
同时也是矿工参与挖掘的最低门槛,即只要有一个以上等于一个Nonce文件,就可以参与挖掘。
按照目前BurstCoin全网计算能力的估算,3PB约占全网计算能力的百分之一,那么需要多少个Nonce呢?经过简单的计算,我们知道大约需要117亿个这样的随机数。
然而,一个典型的家庭主机只能存储200万个Nonce,以500G为例。
所以在BurstCoin的世界里,低算力基本上是以参与矿池的形式参与到挖掘过程中的。
PoC的共识和阻碍
在最后一章中,我们介绍了绘图文件及其基本结构。在这一章中,我们将介绍作为区块链共识的PoC及其完整的挖掘过程。同时,我们将讨论共识中的几个核心问题。最后,我们将结合Stefan Dziembowski的理论来讨论这两个系统之间的关系和异同。
上图展示了一个完整的PoC共识打破流程,下面我们将结合图介绍其中的每个步骤。
第1-2步,GenHash生成:GenHash类似于比特币中的BlockHash概念,用于形成连续的区块链结构。
在BurstCoin中,由于该散列同时参与共识过程中参数的建立,因此它将概念一分为二:
GenSig是通过哈希前一个块中的GenSig和前一个块中的块maker得到的,GenHash是通过哈希GenSig和fast high信息得到的。通过这样两次哈希计算,当前块之前的所有块形成不可改变的历史块的链式结构,同时获得PoC共识中的重要参数GenHash。
第3-4步。勺数的计算:钱包生成GenHash后,将这个值发送给挖掘器,挖掘器会计算出本次块释放所需的勺数。GenHash模4096是Scoop数的值。该挖掘号用于定义整个网络中的所有挖掘者应该查询他们在该块中拥有的所有Nonce中的挖掘数据。结合上一章的内容,我们可以知道它在某个勺子中拥有两个Hash的值。
第五步:计算目标,deadline:首先矿工需要遍历磁盘,在自己拥有的所有nonce中找到上一步计算的Scoop数对应的两个Hash,记录为scoopdata,使表达式target=Hash(scoopdata,GenSig)的值最小化。然后,使用最小目标值,计算目标值/基本目标值以获得截止日期。类似于目标比特币中的difference _ Target参数,控制着全网挖矿的难度,而dealine则决定着挖矿者产出的区块是否成功获得了该区块在全网的铸造权。
上述每个参数:
Deadline:一个整数值,一个有特定截止时间的块,只有在全网范围内等待与截止时间对应的指定时间后,才能被视为合法块。例如,如果截止时间是60,则意味着该块可以在前一块的块时间之后一分钟被允许作为合法块添加到主网络。由此可知,截止时间越小,获得当前区块铸造权的几率越大。deadline的计算过程是矿工通过遍历自己随机生成的所有nonce来计算,也就是说,nonce越多,占用的磁盘空间越大,获得值越低的deadline的概率就越大,从而获得铸造权的概率也就越大。BaseTarget:BurstCoin设置全网平均阻塞时间为4分钟,全网存储计算能力波动。在计算能力波动的情况下,如何控制全网平均阻塞时间?与比特币类似,BaseTarget代表挖掘难度,其值越小,全网挖掘难度越高。在burstcoin中,最小的目标需要除以BaseTarget才能得到最终的截止时间。因此,BaseTarget的动态调整可以直接控制整个网络中阻塞之间的间隔,即阻塞时间。步骤6-9,打包事务,铸造块和广播块。这个过程类似于所有的区块链系统。值得一提的是,BurstCoin的块负载大小限制在176KB,平均可以承载19k左右的事务。不难得出结论,其理论tps上限控制在80左右。与比特币、Eth等PoW型区块链系统相比,其性能量水平差不多。
综上所述,本次以BurstCoin为例,详细介绍PoC共识算法在工程中的实现,主要围绕情节文件内容的生成,与情节的详细交互以及计算流程。
在下一篇文章中,我们将摘录PoC共识过程的几个核心问题,帮助读者更好地理解PoC算法。同时,我们将结合Stefan Dziembowski的模型,讨论Burst能否纳入其框架,分享一些思考。敬请期待。
博科技区块链系列文章,致力于分享区块链领域底层技术知识,力求提供原创、深入的技术内容。
链博科技在技术层面探索区块链创新的同时,也从产业整合的角度进行深度思考,推动区块链落地项目建设,为企业提供专业、易用、全栈的区块链改革服务。
欢迎关注我们之前的文章,也欢迎在文章评论区留下你的看法和想法。
–
基准源
[1.]Spacemint:一种基于空间证据的加密货币BHD白皮书[3。]爆裂硬币介绍严重[4。]空间的证明[5。爆发主义者.]堆叠扩展器的空间证明[7。爆裂的Dymaxion[8 .]突发论坛.]采矿教程[10。辛西娅德沃克莫尼诺尔,通过处理或打击垃圾邮件来定价。朱塞佩阿坦尼斯、兰德尔c伯恩斯、礼萨科特莫拉、约瑟夫海岭、利基斯纳、扎卡里新泽西州彼得森和道恩宋。不可信存储区中可证明的数据传递。彭宁萨布丽娜德卡皮塔尼迪维尔卡蒂,和保罗塞弗森,编辑,ACM CCS 07,第598-609页。美国计算机学会出版社,2007年10月[12。凯文d鲍尔斯、阿里朱尔斯和艾莉娜奥普瑞。可检索性的证明:理论与实现。在CCSW,第43-54页,2009年[13。尼古拉卡尔韦拉斯和阿盖洛斯基亚斯。安全措施的有效证明。《网络安全与加密——第九届国际会议,SCN 2014,意大利阿马尔菲,2014年9月3-5日》。会议录,第520-537页,2014年][14。Dziembowski,s .Faust,s .Kolmogorov,v .Pietrzak,K. (2015).空间的证明。计算机科学讲义(包括人工智能的子系列讲义和生物信息学的讲义),9216(616160),585605。[15]比特币白皮书(作者:链博科技,内容来自链得得内容开放平台\”得得号\”;本文仅代表作者观点,不代表链得得官方立场)