Raiden
路由失敗時,雷電為何不立即釋放通道容量?
在目前的 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
在兩個參與者之間產生共享價值。