Page 252 - 《软件学报》2020年第12期
P. 252
3918 Journal of Software 软件学报 Vol.31, No.12, December 2020
3.2 新区块的生成
本节模拟区块生成过程,在第 3.1 节模拟的空间竞争中胜出的矿工获得记账权,可发布相应区块.以区块 72
为例,其记账者为矿工 10,挖矿排名交易消息 ctx={ranking,90F2246A,A,9,8,5,7,4,3,2},Q/N=80%(80%的设置原因
在第 3.3 节展开),N=10,Q=8.如第 2.1 节节介绍,区块 72 包含ϕ 72 ,σ 72,G 和τ 72 ,其中,ϕ 72 ,τ 72 分别为证明子块与交易字
块,由实验测试得:
• ϕ 72 =1c98228c2086fbd9d74b4645eba94d151d47fd9ecdcb0287729caf52b76906b8;
• τ 72 ={72,ctx},ctx 包含 25 条交易信息.
下面主要对新构建的σ 72,G 生成过程进行介绍.σ 72,G ={i,ζ (Hash(τ)⊕G) ,ζ σ },i=72;
ζ (Hash(τ)⊕G) 为记账者关于 Hash(τ)⊕G 的 DSA 签名,其中,
2
G = G 72 (x 1 72 , x 72 ,..., x 8 72 ) = g P 72 1 (x 1 72 ) || g P 72 2 (x 2 72 ) ||...|| g P 72 8 (x 8 72 ).
1
8
PP 72 2 ,...,P 分别为矿工 10,9,8,5,7,4,3,2 的公钥,即挖矿排名前 8 位的矿工.实验中, g P 72 j ( j = 1,2,...,8) 使用
,
72
72
ECC-200 实现,当 g ( j = 1,2,...,8) 输出长度为 200bit 时,G 的长为 200×8bit.为了使得每个 g ( j = 1,2,...,8) 都参
P 72 j P 72 j
与 Hash(τ)⊕G 结果的构建,防止 Hash(τ)⊕G 结果被部分矿工掌控,取 Hash(τ)=Hash 256 (μ 1 ||τ 72 )||…||Hash 256 (μ 6 ||τ 72 ),
其中,μ 1 ,μ 2 ,…,μ 6 为随机数,剩余位补零,使得 Hash(τ)与 G 长度相等.最终计算得:
ζ =A2BF2998C76CD6415EEB8E102F4D72DEC0D38EC9;
Hash (τ 72 ) G⊕ 72
ζ σ 则为记账者关于σ 71,G 的 DSA 签名,ζ σ =4B66BF0111FCD4841DD75621535870049130F182.
因此,
σ 72,G ={72,A2BF2998C76CD6415EEB8E102F4D72DEC0D38EC9,
4B66BF0111FCD4841DD75621535870049130F182}.
随后,矿工 10 将以上数据打包成区块并发布,经过全网验证通过后,区块 72 正式上链,其余区块生成过程同
理.图 10 为实验模拟生成的连续 3 个区块具体数据:
Fig.10 Original data of block 71~73
图 10 原始 71~73 区块数据