# Lighting Network Timeout-Trees ## Metadata **Status**:: #x **Zettel**:: #zettel/literature **Created**:: [[2023-11-21]] ## Synopsis [[John Law - Scaling Lightning With Simple Covenants (Highlights)]] 是个很有趣的解决创建闪电通道受到区块链 TPS 限制的提案。它需要使用到 HTLC 和 Covenant。 - HTLC: 即在某个时间后才能执行 - Covenant: 简单说就是一个 UTXO 的解锁需要花费这个 UTXO 的交易满足一些条件 Timeout-Tree 就是一个特殊的 UTXO,有两种方式被花费: - 使用 HTLC,在某个时间 T 之后可以由 Bob 单方解锁具没有其它 Covenant 限制条件 - 使用 Covenant,限制 UTXO 可以分裂出来一系统 Bob 和用户 Pi 之间的 channel UTXO,其中 Bob 拥有余额 Ni, Pi 拥有余额 0. 这里分裂的结构是可以优化的,比如做成树状结构,这样有用户退出里不需要把所有的 channel UTXO 都创建出来,可以减少链上的消耗。注意这里可以创建的 channels 必须要保证总额不超过 UTXO 本身的额度,不然可能会出现所有用户都足额退出时有人没有余额可退。 ![VP2F2m](https://blog.iany.me/uploads/202311/PyzgEW/VP2F2m.jpg) 使用 Covenant 分裂出来的那些 channel UTXO 则能被用来做为 channel 用于 Bob 和 Pi 在链外调整余额。 对于用户 Pi 来说,有以下几种退出方法: - 自己在 channel 里余额为 0,不需要任何操作。等 Timeout-Tree 到期 Bob 把所有余额回收。 - 自己在 channel 里余额不为 0 - 在 HTLC 到期前提款。把自己的 channel cell 创建出来然后走正常的 light network 退出的流程。 - 在 HTLC 到期前通过 lighting network 把 channel 里的钱转给自己的其它 channel,比如一个新的 HTLC 剩余时间更长的 channel 中。 - 虽然定期转到一个新的 Timeout-Tree 对用户来说有很大的负担,但是这一块是我觉得很神奇的地方,相当于用户临时租了一条 channel,到期之前再重新租一条 channel,把余额转到新的 channel 中,而这所以的操作都在链下。链上只需要定期刷新 Timeout-Tree。对于中间人 Bob 只需要维护两个 Timeout-Tree UTXOs 交替更新即可。 如果用户 Pi 忘记提款或者通过 lighting network 转移余额,那么在该 Timeout-Tree 中的余额就丢失了。 Timeout-Tree 在理想情况下,所有用户的余额都被转移到新和 Timeout-Tree 的 channel 中去了,Bob 只需要回收整个 Timeout-Tree UTXO 然后用于任何用途,比如创建新的 Timeout-Tree。而一个 Timeout-Tree 可以同时创建大量的 lighting channel。 ## References - [Timeout Trees: A Solution To Scaling Lightning Network LSPs](https://bitcoinmagazine.com/technical/timeout-trees-a-solution-to-scaling-lightning-network-lsps) - [Scaling Lightning With Simple Covenants](https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-September/004092.html)