Page 253 - 《软件学报》2020年第12期
P. 253
任艳丽 等:可修改的区块链方案 3919
3.3 区块数据的修改
本节对上链交易数据的修改操作进行模拟.如图 10 所示,区块 72 上有一条交易:
“(payment,C012AE53,(950D6388,91,6073925CD72FCF79208A…),(D8353289,330))”.
假设后续有节点发现,曾经由于恶意节点发起双花攻击,区块 71~73 等所在的当前主链被另一条侧链颠覆,
使系统在认可该笔交易后,又认可与该交易输入账户相同、输出账户不同的另一笔等额交易,使输入账户实现
双花.为弥补该攻击造成的后果,可认为原本流入公钥为 D8353289 的受益方的金额又再次流向了另一个账户,
也即该笔交易中受益方的实际收益并非 330,而是 0,该条上链交易数据需要修改.节点于 2019 年 3 月 13 日向全
网广播一条交易修改请求:
ReviseTx={72,double spending,(payment,C012AE53,(950D6388,91,6073925CD72FCF79208A…),(D8353289,
330)),(payment,C012AE53,(950D6388,91,6073925CD72FCF79208A…),(D8353289,0))}.
对应的矿工 10,9,8,5,7,4,3,2 收到该请求后,将对其合法性进行认证.发现合法,便根据 ReviseTx 和原始交易
子块τ 72 生成新交易子块τ′ .
72
(τ
进一步,根据 Hash (τ 72 ) ⊕ G 72 (x 1 72 ,x 2 72 ,...,x 8 72 ) = Hash ′ 72 ) ⊕ G 72 (x′ 72 1 ,x′ 72 2 ,...,x′ 72 8 ) 求得 G 72 (x′ 72 1 ,x′ 72 2 ,...,x′ 72 8 ) .然后,8 名
矿工使用各自私钥,做 ECC-200 解密计算:
x′ j D ECC (g′ = )( j = 1,2,...,8) .
72 P 72 j P 72 j
从而得到新的专属随机数: x′ 1 ,x′ 2 ,...,x′ 8 .
72 72 72
其中,
τ′ 1 =DC93EB15EBE13BBBDA05FFD86464ED11A126FA3286615B6052.
P 72
矿工 10 利用私钥:973DBCD86EDE25F932599C1B79BC0953,对其进行 ECC-200 解密,求得:
1
x′ =5E0A3313E4FB185A377A6A00AE95C4EB4DD27CD498D9DE7F4A.
72
编程运行如图 11 所示.
(a) Public parameters in ECC-200 (b) x′
1
72
Fig.11 Parameters calculation
图 11 参数获取
x′ 72 2 ,...,x′ 72 8 求解同理,矿工随后在全网更新随机数.由陷门单向函数性质可知,同时拥有 8 名矿工的私钥才可
完成.最后,8 名矿工将区块 72 的交易子块由τ 72 变更为τ′ ,并生成相应的修改记录,作为一条溯源交易信息放入
72
交易池,以供后续矿工打包上链,该交易消息为
ctx=(revise,531694D0,20190313,72,double spending,(15347EFD0B…,204D562128…,19A87E1029…,
3959191C54…,2F75D24A42…,411BE1FE2D…,3651CB06D6…,2515C96F5…),(5E0A3313E4…,
CE441CDD19…,C9E73B440E…,1F8B5086DF…,971E915B1A…,B3C28D3E58…,F2648076ED…,
D569C22260…),(payment,C012AE53,(950D6388,91,6073925CD72FCF79208A…),(D8353289,330)),
(payment,C012AE53,(950D6388,91,6073925CD72FCF79208A…),(D8353289,0))).