跳转到正文
buybitcoinsmart

术语表 /闪电网络与 Layer 2

锚点输出

锚点输出是什么?
锚点输出是附加在闪电网络承诺交易上的两个330聪的应急出口,通道双方各自掌握一个密钥,使任何一方都能为预先签署的关闭交易提高手续费。

锚点通道为通道双方各提供一个微小的输出,起初只有各自本人能够花费,纯粹用作日后提高手续费的抓手。BOLT 3将金额固定为330聪,经过16个区块后,任何人都可以回收无人认领的锚点。如果您运行闪电网络钱包,请保留一笔备用的链上资金,因为锚点本身无法支付手续费。

运作方式

锚点输出将330聪锁定在通道一方的资金密钥之后,而一笔承诺交易带有两个锚点、而不是一个共享的抓手,原因在于一种攻击。

其脚本很短:资金公钥、OP_CHECKSIG、OP_IFDUP,随后是一个包含 OP_16和 OP_CHECKSEQUENCEVERIFY 的 OP_NOTIF 分支。您自己的签名可以立即将其解锁。承诺交易确认后经过十六个区块,任何人都可以用空见证将其解锁,BOLT 3借此避免被遗弃的找零永久留在有效币集合中。只有当手续费降得足够低、使回收330聪变得值得时,这条路径才有意义。

每方一个锚点是防止交易钉死(pinning)的设计。如果双方只有一个共享的抓手,对手方就可以在其上挂一笔体积很大、手续费很低的子交易,使未确认交易族不断膨胀,直到您自己提高手续费的成本高得无法承受,承诺交易也错过了广播时要赶上的期限。BOLT 3将使分离锚点防御得以生效的功劳归于 Bitcoin Core 0.19中的一项变更,并将每个锚点锁定在一个资金密钥上。这也是此类承诺交易上其他每个输出(包括 to_remote)都带有序列锁的原因。

这一切并非没有代价。两个锚点的金额都从出资方的余额中扣除,合计660聪,而承诺交易计费所依据的基础权重由724个权重单位增至1124个权重单位。出资方换来的是完全不带手续费的第二阶段 HTLC 交易:在 option_anchors 下,其手续费必须为零,并且以 SIGHASH_SINGLE 加 SIGHASH_ANYONECANPAY 签署,因此您在广播时附上自己的输入,并在那时按当时的费率支付手续费。BOLT 9将其列在第22位和第23位,作为一种带有零手续费 HTLC 交易的锚点承诺类型。

在哪里会遇到它

闪电网络通道在未经合作而关闭的那一刻,锚点输出就会出现在区块浏览器上,表现为两个各值330聪的输出,看上去像是有人出了差错。只有在没有任何 HTLC 在途、且一方余额低于粉尘限额时,BOLT 3才会省去其中一个。

本站的41篇钱包评测中,哪一款会让您遇到锚点输出,取决于托管方式。Phoenix 在本站的评分为4.0,在手机上运行真正的自托管闪电网络节点,本站评测记录显示,强制关闭后的恢复大约需要720个区块,因此锚点需要由您自己管理。Muun 的评分为3.8,同样是自托管钱包,但其闪电网络支付可能需要在链上结算的潜水艇交换(submarine swap)。Wallet of Satoshi 的评分为2.7,默认采用托管方式。330聪的输出无法为子交易提供资金,因此提高手续费意味着将锚点与您原有的一笔资金一同花费。

锚点输出 vs 临时锚点

锚点输出在最初的16个区块内只能由一个指定的资金密钥花费,而临时锚点从第一秒起就没有密钥,其中也没有值得保护的价值。

BOLT 3中较新的 zero_fee_commitments 通道使用功能位40和41,以基于标准 pay to anchor 脚本构建的单个 shared_anchor 取代这一对锚点:OP_1后接两个字节0x4e73,任何人都可以用空见证花费。其金额为240聪,即该脚本的标准粉尘限额,只有当剩余金额低于该数值时才会更低,临时粉尘规则允许这样做,因为此时承诺交易不支付手续费。两者从相反的方向应对同一种威胁:带密钥的锚点为双方各提供一个他人无法操作的杠杆,以此挫败交易钉死;无密钥的锚点则使承诺交易在有人附上手续费之前无法被挖出。

请勿混淆

常见问题

使用带锚点的闪电网络通道,需要链上比特币吗?

需要,如果您自己持有通道的话。一个锚点只有330聪,远不足以支付花费它的那笔交易,因此为关闭交易提高手续费,意味着将锚点与您已掌控的另一笔资金合并使用。托管型闪电网络钱包由服务方自行持有通道,因此这个问题不会落到您头上。

为什么 BOLT 3建议在锚点通道上采用更高的粉尘限额?

因为在 option_anchors 下,第二阶段 HTLC 交易不支付手续费,在判断小额 HTLC 是否获得独立输出时,其权重不再计入,所以 BOLT 3建议在这类通道上提高 dust_limit_satoshis,使确实出现的输出在花费时仍然划算。

任何人都可以花费锚点输出吗?

可以,在16个区块之后。该脚本允许任何人在承诺交易达到16个区块深度后,用空见证清扫无人认领的锚点,这样可以避免被遗弃的330聪输出永远留在活跃的币集中。只有在手续费很低时才值得这样做。

接着阅读

相关术语

闪电网络与 Layer 2中的更多术语

阅读本页英文版