Nonce

第 2 層狀態通道中的 Nonce

  • September 7, 2018

在乙太坊的第 2 層解決方案(狀態通道)中,我不明白**nonces 是什麼?**如果我們用 13 個 nonce 簽署了一個狀態通道 Tx 並且現在不把它放在鏈上,那麼如果我在網路上用更高的 nonce 用 nonce 14(與狀態通道無關)製作另一個 Tx,不是嗎交易保持掛起直到且除非具有隨機數 13 的狀態通道 Tx 被連結?

隨機數是包含在狀態更新中的序列號,它是狀態通道中雙方簽署的一條資訊。由於它是由雙方簽署的,因此最高 nonced 狀態更新的鏈上合約是最新的。在爭議案例中,雙方將有機會送出他們最高的 nonced 更新,更高的 nonce “獲勝”並定義關閉通道的餘額。

有關這在實踐中如何工作的範例,請查看 Connext 的雙向 ETH/ERC20 通道管理器的實現:

https://github.com/ConnextProject/ethcalate-bidirectional-erc20-single/blob/master/contracts/ChannelManager.sol#L238

在乙太坊中,這總是通過智能合約來完成。部分原因是智能合約為各方提供了資金存在且不會轉移的安全性。那麼您不需要在網路上生成有效交易,而是需要允許智能合約生成有效交易的數據。在此視圖下,您不需要使狀態通道中的 nonce 與主網路中的相同。

假設 A 和 B 一直在通過支付通道交換乙太幣,從 A 到 B 和 B 到 A 的每筆交易都由雙方簽名,A 可以隨時送出他版本的通道餘額(即 A 有 3ETH,B有 1ETH)並且智能合約等待 B 送出他的版本(這是為了避免其中一方送出對其有利的餘額的早期版本)如果送出的餘額同意,那麼如果不是系統則一切都很好將具有更高通道隨機數的那個視為真的。然後合約將鎖定在其中的乙太幣發送給相關使用者。

希望這可以幫助

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