circuitbreaker:保护你的Lightning网络节点免受流量洪水的侵袭
circuitbreaker 项目地址: https://gitcode.com/gh_mirrors/circuitbr/circuitbreaker
项目介绍
circuitbreaker
是一个为 Lightning 网络提供防护的组件,其作用类似于互联网中的防火墙。它允许节点自行设置每个对等节点(peer)可处理的在途哈希时间锁定合约(htlc)的最大数量。例如,对于已知的、可信任的对等节点,可以分配更高的最大值,而对于来自未见过的节点的全新通道,则可能仅限于几个待处理的 htlc。
此外,circuitbreaker
还可以应用速率限制,限制转发的 htlc 数量。这为抵御基于大量快速解决 htlc 的 DoS/垃圾邮件攻击提供了保护。速率限制是通过令牌桶(Token bucket)算法实现的,用户界面允许指定 htlc 之间的最小间隔。
大量 htlc 也用于探测通道余额,减少通过探测导致的信息泄露可能是对不信任的对等节点实施速率限制的另一个原因。
项目技术分析
circuitbreaker
的核心功能是防止节点因 htlc 流量过大而导致资源耗尽。在 Lightning 网络中,每个中继节点在转发支付时都会产生成本,这些成本主要体现为在途资金的锁定。当 htlc 在飞行中时,相关金额被锁定在中继节点的出站通道中,这意味着这些资金在这段时间内无法用于其他用途,从而产生了机会成本。
每个通道都有有限的 htlc '槽位',当前最大值为 483 个。这意味着无论通道容量多大,待处理的 htlc 数量都不能超过 483 个。在大通道尤其容易出现所有槽位被占用,而通道容量仅使用一小部分的情况,导致整个通道被认为是锁定的。锁定时间可以从几秒到长达两周甚至更长。
circuitbreaker
通过设置 htlc 数量的上限和速率限制,保护节点免受流量洪水的冲击,确保宝贵的通道流动性得到有效利用,从而最大化路由收益。
项目技术应用场景
在 Lightning 网络中,节点之间的支付路由涉及多个跳转。每个跳转都会产生转发的成本,而这些成本在 htlc 处于飞行状态时无法回收。circuitbreaker
的应用场景主要包括:
- 保护流动性:避免因流量过大导致流动性被锁定,无法有效利用。
- 防止DoS/垃圾邮件攻击:通过限制 htlc 数量和速率,减少恶意攻击带来的影响。
- 通道余额探测限制:减少通过探测通道余额导致的信息泄露。
项目特点
- 灵活配置:支持通过 Web UI 对每个对等节点进行单独配置,包括 htlc 数量上限和速率限制。
- 多种运行模式:包括失败模式、队列模式和仅对非发起方通道队列模式,根据不同场景选择最合适的策略。
- 安全性:即使
circuitbreaker
发生故障,也不会导致通道强制关闭,因为 lnd 内置了自动失败的防护机制。 - 统计功能:提供每个对等节点在过去一小时内处理的 htlc 的统计数据。
circuitbreaker
的出现为 Lightning 网络节点提供了一个重要的保护工具,能够有效提升网络的安全性和稳定性,为用户提供更加可靠的支付体验。通过合理的配置和使用,circuitbreaker
将成为 Lightning 网络中不可或缺的组成部分。
circuitbreaker 项目地址: https://gitcode.com/gh_mirrors/circuitbr/circuitbreaker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考