本文介绍了LND中集成的私有、利他主义的瞭望塔(watchtower)功能。瞭望塔作为第二道防线,在客户端节点离线或无法响应时,应对恶意或意外的违约情况,从而提高通道资金的安全性。文章详细说明了如何配置和使用瞭望塔,包括服务器端和客户端的配置选项、监听接口、外部IP地址、Tor隐藏服务以及数据库目录。同时,还介绍了如何监控瞭望塔客户端以及管理Justice交易的费用。
从 v0.7.0 版本开始,lnd
支持运行一个私有的、利他主义的瞭望塔,作为 lnd
的一个完全集成的子系统。在客户端节点离线或无法对违约行为做出反应时,瞭望塔充当响应恶意或意外违约场景的第二道防线,从而提高通道资金的安全性。
与奖励瞭望塔 相比,后者要求分享一部分通道资金作为履行义务的奖励,利他主义瞭望塔 会返还所有受害者的资金(减去链上手续费),不收取任何费用。奖励瞭望塔将在后续版本中启用,但仍在进行进一步的测试和完善。
此外,现在可以将 lnd
配置为瞭望塔客户端,将加密的违约补救交易(又名正义交易)备份到其他利他主义瞭望塔。瞭望塔存储固定大小的加密 blobs,并且只有在违规方广播了撤销的承诺状态后,才能解密和发布正义交易。客户端与瞭望塔的通信经过加密和身份验证,使用临时密钥对,从而减少了瞭望塔可以使用长期标识符对其客户端执行的跟踪量。
请注意,我们已选择在此版本中部署一组受限的功能,这些功能可以开始为 lnd
用户提供有意义的安全性。 许多与瞭望塔相关的功能已接近完成或取得了有意义的进展,我们将随着它们接受进一步的测试并变得可以安全发布而继续发布它们。
注意:目前,瞭望塔只会备份来自撤销承诺的 to_local
和 to_remote
输出;备份 HTLC 输出计划在将来的版本中部署,因为可以扩展该协议以在加密 blobs 中包含额外的签名数据。
要设置瞭望塔,命令行用户应编译可选的 watchtowerrpc
子服务器,该子服务器将提供通过 gRPC 或 lncli
与该塔进行交互的功能。 发布二进制文件默认情况下将包含 watchtowerrpc
子服务器。
激活该塔所需的最少配置为 watchtower.active=1
。
可以使用 lncli tower info
获取有关你的塔配置的信息:
$ lncli tower info
{
"pubkey": "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63",
"listeners": [
"[::]:9911"
],
"uris": [
],
}
可以使用 lnd -h
找到整套瞭望塔配置选项:
$ lnd -h
...
watchtower:
--watchtower.active If the watchtower should be active or not // 是否应激活瞭望塔
--watchtower.towerdir= Directory of the watchtower.db (default: $HOME/.lnd/data/watchtower) // watchtower.db 的目录(默认:$HOME/.lnd/data/watchtower)
--watchtower.listen= Add interfaces/ports to listen for peer connections // 添加接口/端口以侦听对等连接
--watchtower.externalip= Add interfaces/ports where the watchtower can accept peer connections // 添加瞭望塔可以接受对等连接的接口/端口
--watchtower.readtimeout= Duration the watchtower server will wait for messages to be received before hanging up on client connections // 瞭望塔服务器在挂断客户端连接之前将等待接收消息的持续时间
--watchtower.writetimeout= Duration the watchtower server will wait for messages to be written before hanging up on client connections // 瞭望塔服务器在挂断客户端连接之前将等待写入消息的持续时间
...
默认情况下,瞭望塔将监听 :9911
,它指定端口 9911
监听所有可用接口。 用户可以通过 --watchtower.listen=
选项配置自己的监听器。 你可以通过检查 lncli tower info
中的 "listeners"
字段来验证你的配置。 如果你在连接到你的瞭望塔时遇到问题,请确保打开了 <端口>
或你的代理已正确配置为指向活动的监听器。
此外,用户可以使用 watchtower.externalip=
指定其塔的外部 IP 地址,这将在 RPC 或 lncli tower info
上公开完整的塔 URI(pubkey@host:port):
$ lncli tower info
...
"uris": [
"03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@1.2.3.4:9911"
]
瞭望塔的 URI 可以提供给客户端,以便使用以下命令连接和使用该塔:
$ lncli wtclient add 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@1.2.3.4:9911
如果瞭望塔的客户端需要远程访问,请确保:
watchtower.listen
选择的端口。瞭望塔具有 tor 隐藏服务支持,并且可以使用以下标志在启动时自动生成隐藏服务:
$ lnd --tor.active --tor.v3 --watchtower.active
然后在使用 lncli tower info
查询时,onion 地址将显示在“uris”字段中:
$ lncli tower info
...
"uris": [
"03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@bn2kxggzjysvsd5o3uqe4h7655u7v2ydhxzy7ea2fx26duaixlwuguad.onion:9911"
]
注意:瞭望塔的公钥与 lnd
的节点公钥不同。 目前,这充当一个软白名单,因为它要求客户端知道塔的公钥才能将其用于备份,然后才能实现更高级的白名单功能。 我们建议不要公开披露此公钥,除非你准备好将你的塔开放给整个互联网。
可以使用 watchtower.towerdir=
配置选项移动瞭望塔的数据库。 请注意,将在所选目录后附加一个尾随 /bitcoin/mainnet/watchtower.db
,以隔离不同链的数据库,因此设置 watchtower.towerdir=/path/to/towerdir
将在 /path/to/towerdir/bitcoin/mainnet/watchtower.db
生成一个瞭望塔数据库。
例如,在 Linux 上,默认的瞭望塔数据库将位于:/home/$USER/.lnd/data/watchtower/bitcoin/mainnet/watchtower.db
为了设置瞭望塔客户端,你需要两件事:
--wtclient.active
标志启用瞭望塔客户端。$ lnd --wtclient.active
$ lncli wtclient add 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63@1.2.3.4:9911
可以通过此方法配置多个瞭望塔。
用户可以选择通过设置 wtclient.sweep-fee-rate
选项来配置正义交易的费用率,该选项接受 sat/byte 单位的值。 默认值为 10 sat/byte,但用户可以选择更高的费率,以便在费用高峰期间提供更高的优先级。 修改 sweep-fee-rate
将在守护程序重新启动后应用于所有新更新。
随着 lncli wtclient
命令的添加,用户现在可以直接与瞭望塔客户端交互,以获取/修改有关已注册瞭望塔集的信息。
例如,使用 lncli wtclient tower
命令,你可以获取当前与上面添加的瞭望塔协商的会话数,并通过 active_session_candidate
值确定它当前是否用于备份。
$ lncli wtclient tower 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63
{
"pubkey": "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63",
"addresses": [
"1.2.3.4:9911"
],
"active_session_candidate": true,
"num_sessions": 1,
"sessions": []
}
要获取有关瞭望塔会话的信息,用户可以使用 --include_sessions
标志。
$ lncli wtclient tower --include_sessions 03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63
{
"pubkey": "03281d603b2c5e19b8893a484eb938d7377179a9ef1a6bca4c0bcbbfc291657b63",
"addresses": [
"1.2.3.4:9911"
],
"active_session_candidate": true,
"num_sessions": 1,
"sessions": [
{
"num_backups": 0,
"num_pending_backups": 0,
"max_backups": 1024,
"sweep_sat_per_vbyte": 10
}
]
}
可以使用 lncli wtclient -h
找到整套瞭望塔客户端配置选项:
$ lncli wtclient -h
NAME:
lncli wtclient - Interact with the watchtower client. // lncli wtclient - 与瞭望塔客户端交互。
USAGE:
lncli wtclient command [command options] [arguments...]
COMMANDS:
add Register a watchtower to use for future sessions/backups. // 注册一个瞭望塔以用于将来的会话/备份。
remove Remove a watchtower to prevent its use for future sessions/backups. // 删除一个瞭望塔以防止其用于将来的会话/备份。
towers Display information about all registered watchtowers. // 显示有关所有已注册瞭望塔的信息。
tower Display information about a specific registered watchtower. // 显示有关特定已注册瞭望塔的信息。
stats Display the session stats of the watchtower client. // 显示瞭望塔客户端的会话统计信息。
policy Display the active watchtower client policy configuration. // 显示活动的瞭望塔客户端策略配置。
OPTIONS:
--help, -h show help // 显示帮助
- 原文链接: github.com/lightningnetw...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!