Raiden

路由失敗時,雷電為何不立即釋放通道容量?

  • September 4, 2019

在目前的 Raiden 協議實現中,當支付路由在一些轉賬後失敗時,已經製作的雜湊時間鎖將保留在那裡,直到它們過期。這消耗了相當長一段時間的通道容量。(無論是否發送 RefundTransfer 消息,情況都不會改變。)

我認為可以立即釋放通道容量(例如,通過在通道狀態的另一側添加已刪除的鎖定雜湊)。目前的設計背後有原因嗎?

這是兩件事的結果:

  • 回溯。
  • 通道狀態的分裂,每個節點只能更新自己的一半通道狀態。

考慮以下拓撲:

     - C -
A - B       E
     - D -

如果通道C-E沒有足夠的容量,則返回的路徑將是A->B->C->B->D->E

知道了這一點,假設C並且D實際上是由攻擊者控制的。如果來自的消息C->B不是傳輸,那麼攻擊者可以撒謊B說通道上沒有容量C-E,並使用從中學到的秘密D來解鎖鏈上。為了B避免這種情況,消息C->B必須是傳輸,這保證如果B->C發生,C->B也將發生,有效地消除攻擊。

這是一個可以解決此問題的提案:https ://github.com/raiden-network/raiden-contracts/issues/1216 。實際上,該提案將refund在兩個參與者之間產生共享價值。

引用自:https://ethereum.stackexchange.com/questions/74610