上一篇文章中,我们探讨了StefanDziembowski的PoC形式化模型和证明的讨论,本篇文章着重讨论BurstCoin实际运行的PoC完备系统的算法细节,涵盖Plot文件和出块流程两个方面。
PoC硬盘利用与Plot文件 Plot文件是每个参与出块的节点或矿工需要在硬盘中存储的文件,其内容由大量特定结构的Hash值组成。Plot文件包含以下基本概念:
- Shabal256:BurstCoin所使用的Hash算法,相比SHA256等其他算法,Shabal需要更多CPU计算时间和计算量。 - Nonce:Plot文件中拥有固定编号的基本单元,由256KB的数据构成,是矿工用来参与PoC过程的基础逻辑单元。 - Scoop:每个Nonce由4096个Scoop构成,同样拥有编号,其编号范围为0-4095。每个Scoop包含2个Hash值,也即一个Nonce包含8192个Hash值。
Nonce的生成流程如下:
- Nonce文件的种子由AccountId(即BurstCoin网络中的用户地址或者用户Id)与NonceId(即Nonce编号)组成,经过第一次Hash,生成Hash#8191,即Nonce中的编号为8191的Hash值。 - #8190Hash值由之前一个#8191Hash值与AccountId,NonceId生成。 - #8189Hash值由之前两个#8191Hash,#8190Hash值与AccountId,NonceId生成,依次类推,每下个Hash值,都有其之前计算的所有Hash值与AccountId,NonceId生成。如果过程中超过了4096个bytes,则取最近生成的4096bytes由Hash#0-8191与AccountId,NonceId共同生成,之后对8192个Hash值都分别对其进行异或操作,作为每个Hash最终的值。 - 得到了8192个Hash值后,Scoop文件的结构如图所示。
这同时也是矿工参与挖矿的最低门槛,即只要有大于等于1个Nonce文件即可参与挖矿。而根据BurstCoin全网算力估计,需要约117亿个Nonce,但一般家用主机只能存储200万个Nonce,因此低算力往往以参加矿池的形式参与挖矿。
PoC的共识与出块 PoC共识的完整挖矿流程包括GenHash的生成、ScoopNumber的计算、target和deadline的计算、交易打包及区块铸造和广播。
值得一提的是,BurstCoin的区块负载大小限制为176KB,平均可以承载19k个左右的交易,理论tps上限约为80,与其他PoW类型的区块链系统相类似。
结合StefanDziembowski的模型,我们可以探讨BurstCoin是否可以纳入其框架之下,并分享某些核心问题的解决方案。
链博科技致力于分享区块链领域的底层技术知识,同时从产业结合角度深入思考,推进区块链落地项目的建设,并为企业提供