术语表 /闪电网络与 Layer 2
Watchtower
- Watchtower 是什么?
- Watchtower(瞭望塔)是一项您付费或申请使用的服务,在您的闪电网络节点离线期间监视区块链,随时准备惩罚发布旧余额的通道对手方。
闪电网络通道之所以能保持诚实,是因为一方一旦广播过时状态,另一方就可以取走整个通道余额,但前提是有人及时发现。Watchtower 就是这个人:它保存一条长度为16字节的提示和一个加密数据块,在对应交易出现在链上之前,它无法读取该数据块。如果您的节点运行在会休眠的笔记本电脑上,就需要一个。
运作方式
Watchtower 从不持有您的私钥,在出问题之前也不会知道自己在保护哪条通道。
每当通道余额发生变化,您的节点会为即将撤销的状态构建惩罚交易并加密,然后向 watchtower 提交两样东西:一是提示,即已撤销承诺交易的 txid 的前16字节;二是密文。Watchtower 存储固定大小的数据块,并扫描每个区块,查找 txid 以其中某条提示开头的交易,除此之外不做任何事。一旦出现匹配,watchtower 会根据同一个 txid 推导出解密密钥,解开清扫指令,自身不签署任何新内容,然后广播已完成的惩罚交易。追回的比特币会进入您的钱包事先选定的地址。
在依赖 watchtower 之前,有两项限制值得了解。在 lnd 中,一个 watchtower 会话最多接受1024份备份,客户端才会开启新的会话;正义交易(justice transaction)按默认的10 sat/byte 费率构建,您可以通过 wtclient.sweep-fee-rate 设置调高。第二项限制是覆盖范围:lnd 的 watchtower 备份的是已撤销承诺交易的 to_local 和 to_remote 输出,不包括仍在途中的支付所对应的输出,因此聘用 watchtower 只能降低风险,而不能消除风险。
在哪里会遇到它
Watchtower 出现在节点软件的配置中,而不是大多数人用来发送聪的应用里。
运行 lnd 时,您可以通过公钥和主机地址添加一个 watchtower,也可以在默认的端口9911上为朋友运营一个。所有已部署的 watchtower 都是利他型 watchtower:它们会把追回的全部资金扣除挖矿手续费后返还,而不是抽成,因为协议中的付费版本虽已制定规范,却从未完成。托管型闪电网络应用不提供这些功能,大多数手机钱包也没有,因为它们的通道由服务商管理,服务商自己的机器从不休眠。
对主要想购买并持有比特币的人来说,您大概不需要。如果您运营路由节点,或者把相当数额的余额放在通道里,而存放通道的电脑一连几周被锁在抽屉里,那就需要。如果闪电网络对您来说只是手机上一个存放咖啡钱的应用,您应当防范的损失是手机掉进河里,而不是对手方作弊。
Watchtower vs 路由节点
Watchtower 保护通道,而路由节点为他人转发支付并收取手续费,两者除了同在一台机器上之外别无共通之处。路由节点必须保持在线,因为离线会损失收入,这正是正规的路由运营者聘用 watchtower、而不是自己充当 watchtower 的原因。两者可以在同一台机器上运行。它们回答的是相反的问题:如何持续赚取收入,以及如何在自己没有盯着的时候避免被盗。