Testnets

Ropsten 提供哪些重放攻擊保護?

  • November 28, 2017

我知道 Ropsten 測試網的部分必要性是因為 Morden 上的一些重放保護措施被破壞了。那麼 Ropsten 有什麼不同呢?

隨機數只是增加了比 Morden 更小的數字嗎?

查看創世塊,看起來nonce值設置為0x42,這是隨機數偏移量嗎?那麼當一個主網賬戶的交易超過 66 筆之後,它的測試網交易是否可以在主網上重播呢?

這聽起來並不理想,但如果這是答案,請告訴我!

Geth 和 Parity 等 Ropsten 客戶端使用EIP 155 簡單重放攻擊保護來防止 Ropsten 交易在主網上重放。

摘錄(EIP 155 有一個實際範例):

v = CHAIN_ID * 2 + 35 或 v = CHAIN_ID * 2 + 36,然後在計算交易的雜湊以進行簽名或恢復時,而不是僅對前六個元素(即 nonce、gasprice、startgas、to、 value, data),散列九個元素,v 替換為 CHAIN_ID,r = 0 和 s = 0。目前使用 v = 27 和 v = 28 的現有簽名方案仍然有效,並繼續在與現在相同的規則下執行.

Ropsten 的 CHAIN_ID 為 3。

Ropsten 交易必須按照 EIP 155 的規則進行設計才能獲得重放保護。 如果錢包實現了 EIP 155,它可以發出不受重放攻擊的無限交易。如果錢包沒有實現 EIP 155,它創建的交易可以在其他網路上重放(因為它們仍然是有效的交易,並且是上面摘錄中最後一句話的意思)。

簡而言之,為了在 Ropsten 中實現 EIP 155,散列 9 個元素(而不是 6 個)並將 41 或 42 用於v.


Gethnonce的 Ropsten 創世紀文件中的與重放保護無關:請參閱 每個 genesis.json 參數是什麼意思?如此處 所述,Parity 有一個單獨的 Ropsten 創世文件,Parity 將其稱為(EIP155 之前的重放保護隨機數)accountStartNonce.

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