风险提示:理性看待区块链,提高风险意识!

如何解决比特币硬分叉后的重放攻击?

2个回答

湘西大胃王8星评价

2020-11-02 13:41:07

如何解决比特币硬分叉后的重放攻击?

比特币交易的规则:将用户有权使用的若干比特币汇款地址上的之前交易的输出金额作为一次交易的输入,若干比特币收款地址上增加的交易金额作为本次交易的输出。输入金额必须大于等于输出金额,超出部分作为本次交易的手续费。手续费没有输出地址,奖励给将本次交易记账成功的矿工。

因为有时作为输出的金额超过了用户想要支付的金额。在这种情况下,比特币客户端会创建一个新的比特币地址,并把差额发送回这个地址,这就是比特币的找零机制。

比如你想从商店买一块钱的棒棒糖,你打开你的钱包,发现里面只有一张20元面值的人民币。你能支付的最小金额是多少呢?当然不是1块钱,你不能把这张20元钱的纸币撕下20分之1再交给营业员。你必须把这张20元面值的人民币全部交给收银员,然后因为你只需要支付1元钱,收银员会找给你19元。

微姐~全球支8星评价

2020-07-10 16:50:16

非常难解决。必须把分叉前的每一笔UTXO都成功转出成两笔不同的交易才行(必须要用特定方法在两个分叉上产生出不同的TXID,只转一次未必能成功)。

理论上(从技术角度)可以分离交易,比如借助opt-RBF的功能,当一笔转出交易在某一分叉上确认后,如果此时在另一分叉尚未确认,可以立即利用RBF的功能提高手续费,争取替换掉原来那条交易。如果这笔新交易被另一分叉确认,那么分离成功。

在实践上,一旦出现两个分叉将是致命的,可以宣布比特币失败了。因为在实际应用中无法做到及时有效地分离交易。 首先,目前的客户端(bitcoin-core)不支持自动生成RBF交易,需要手工构造脚本。分离时不是根据地址,而是需要具体到UTXO,估计绝大多数用户不知道该怎么做(即使给出方法,很多人也未必会操作)。 其次,分离交易必须要等确认速度最慢的那个分叉确认出不同TXID的交易才行,也就是说,分离速度取决于最慢的(最低算力)网络确认所需时间。在最慢的网络确认成功之前(可能需要数几小时或几天),不能进行除自己转给自己能控制私钥的地址之外的任何其他交易,这将导致无法完成任何真实转帐需求。 第三,网络将会出现真正的致命性拥堵,因为在短期内将出现了难以计数的分离UTXO这种原本根本不存在的交易需求。这可能导致整个交易网络瘫痪。