首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当路由失败时,Raiden不立即释放信道容量?

为什么当路由失败时,Raiden不立即释放信道容量?
EN

Ethereum用户
提问于 2019-09-04 11:28:25
回答 1查看 72关注 0票数 2

在Raiden协议的当前实现中,当支付路由在某些传输后失败时,已经生成的散列时间锁将留在那里直到过期为止。这消耗了相当一段时间的信道容量。(这种情况不会改变是否发送RefundTransfer消息。)

我认为可以立即释放信道容量(例如,在通道状态的另一侧添加已删除的锁哈希)。现在的设计背后有什么原因吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-09-04 12:42:26

这是两件事的结果:

  • 回溯。
  • 分割的信道状态,被每个节点只能更新自己一半的信道状态。

考虑以下拓扑:

代码语言:javascript
复制
      - C -
A - B       E
      - D -

如果信道C-E没有足够的容量,则返回的结果路由将是A->B->C->B->D->E

知道了这一点,假设CD实际上是由攻击者控制的。如果来自C->B的消息不是传输,那么攻击者就可以向B撒谎,说通道C-E上没有容量,并使用D学到的秘密解锁在链上。为了保护B不受此影响,消息C->B必须是一种传输,这可以保证如果B->C发生,而不是C->B也会发生,从而有效地消除攻击。

下面是一个解决这个问题的建议:https://github.com/raiden-network/raiden-contracts/issues/1216。实际上,这一建议将使refund成为两个参与者的共同价值。

票数 5
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/74610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档