本文主要是介绍Anchor outputs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 引言
Anchor outputs为闪电昂罗commitment transactions中的特殊outputs,其设计为支持该交易做fee bump。Anchor outputs的早期名为simplified commitments。
每次某闪电网络通道内的balance发生变化,会创建一笔commitment transaction,并由参与方签名。仅当一方决定单方关闭该通道时(如因为另一方不响应),才广播该commitment transaction。由于所广播的commitment transaction创建自很久以前,该commitment transaction内的交易手续费可能太高或太低。支付太低feerate,可能会再起timelock过期之前,该commitment transaction都未被确认,从而导致资金被盗。
对此的解决方案为:
- commitment transaction支付最小量的手续费
- 然后允许通道的任一参与方对该交易做fee bump
早期的解决方案Replace-by-fee (RBF),会存在transaction pinning交易固定的问题。
后期设计为使用Child pays for parent (CPFP),但需依赖CPFP carve out来规避交易固定的问题。
最新的设计版本中,会向commitment transaction中增加2个outputs:
- 闪电网络通道双方一人一个
- 需要该commitment transaction内的所有其它outputs的脚本受
1 OP_CHECKSEQUENCEVERIFY (CSV)
条件阻碍,该条件可防止它们被花费至少一个区块。
为完全有效,该协议还依赖于比特币全节点实现package relay,因此即使其费率低于节点的最低中继费,也有办法让CPFP对commitment transaction进行fee bump。但在package relay可用之前,LN节点可能只需为其commitment transaction支付略高的费用,以确保它们被节点接受。
参考资料
[1] Anchor outputs: Also covering Simplified commitments
[2] 2020年8月对闪电网络BOLT: Basis of Lightning Technology (Lightning Network Specifications) 的PRfeature: define option_zero_htlc_tx_fee (feature 22/23) #824
[3] 2020年8月对闪电网络BOLT: Basis of Lightning Technology (Lightning Network Specifications) 的PRAnchor outputs #688
[4] 2020年9月 [Lightning-dev] SIGHASH_SINGLE + update_fee Considered Harmful
这篇关于Anchor outputs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!