区块链安全:常见攻击类型及防范策略
1. 双花攻击
1.1 创建第一笔交易
在创建第一笔交易时,交易输入的构建是通过选择未花费的交易来满足所需的交易价值(如 0.1 BTC)和交易费用。代码中的 while 循环会持续运行,直到创建足够的输入值来满足输出值和交易的最小费用。 delta_fee 表示满足交易费用所需的额外费用,如果它是正值,则从 value_out 中扣除,否则添加。
value_in = 0
value_out = sum([vout.nValue for vout in tx.vout])
unspent = sorted(rpc.listunspent(1), key=lambda x: x['amount'])
while (value_in - value_out) / len(tx.serialize()) < feeperbyte1:
delta_fee = math.ceil((feeperbyte1 * len(tx.serialize())) - (value_in - value_out))
if change_txout.nValue - delta_fee > dust_amount:
change_txout.nValue -= delta_fee
value_out -= delta_fee
if value_in - value_out < 0:
new_outpoint = unspent[-1]['outpoint'
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



