论文标题
探测闪电网络中的通道余额
Probing Channel Balances in the Lightning Network
论文作者
论文摘要
由于闪电网络付款既没有广播也没有公开存储。因此,LN不仅被视为可扩展性,而且被视为比特币的隐私解决方案。该协议保证只能在渠道关闭中确认最新的频道状态。关于可用于路由及其总能力的渠道的LN节点八卦。要发出(多跳)付款,发件人根据其图表的本地知识创建了一条路线。由于本地渠道余额不是公开的,因此付款通常由于中间啤酒花的余额不足而失败。在那种情况下,付款将沿多个路线尝试,直到成功为止。这构成了隐私效率的权衡:隐藏的余额提高了隐私,但阻碍了路由效率。在这项工作中,我们表明攻击者可以使用探测轻松发现通道余额。每个渠道需要一分钟的时间,需要适度的资本承诺,而无需支出。我们描述了该算法并在比特币的TestNet上测试我们的概念验证实现。我们认为,LN在隐私和路由效率之间的平衡是次优的:渠道余额既没有得到很好的保护也不使用。我们概述了LN在此问题方面发展的两种方法。为了强调隐私,我们提出了一种错误处理的修改,该修改掩盖了发送节点中错误通道的详细信息。这将破坏我们的探测技术,但会使路由失败更加普遍,因为发件人不知道未遂路线中的哪个渠道失败了。为了提高效率,我们提出了一个新的API呼叫,该调用将使发件人的查询余额不是一方。我们认为,将这些方法结合起来可以帮助LN竭尽所能:可行时隐藏私人数据,并利用公共数据来提高路由效率。
As Lightning network payments are neither broadcasted nor publicly stored. Thus LN has been seen not only as scalability but also as privacy solution for Bitcoin. The protocol guarantees that only the latest channel state can be confirmed on channel closure. LN nodes gossip about channels available for routing and their total capacities. To issue a (multi-hop) payment, the sender creates a route based on its local knowledge of the graph. As local channel balances are not public, payments often fail due to insufficient balance at an intermediary hop. In that case, the payment is attempted along multiple routes until it succeeds. This constitutes a privacy-efficiency tradeoff: hidden balances improve privacy but hinder routing efficiency. In this work, we show that an attacker can easily discover channel balances using probing. This takes under a minute per channel and requires moderate capital commitment and no expenditures. We describe the algorithm and test our proof-of-concept implementation on Bitcoin's testnet. We argue that LN's balance between privacy and routing efficiency is suboptimal: channel balances are neither well protected nor utilized. We outline two ways for LN to evolve in respect to this issue. To emphasize privacy, we propose a modification of error handling that hides details of the erring channel from the sending node. This would break our probing technique but make routing failures more common, as the sender would not know which channel from the attempted route has failed. To improve efficiency, we propose a new API call that would let the sender query balances of channels that it is not a party of. We argue that combining these approaches can help LN take the best of both worlds: hide private data when feasible, and utilize public data for higher routing efficiency.