以太坊 PoS 轉 PoW 的過程將觸動礦工的利益,加上合併日期臨近,社區中出現不少關於分叉的話題,有一個話題引起了關注,那就是:以太坊分叉可能會導致重入攻擊,讓用戶面臨丟失 NFT 的風險。
上圖中的這位推友就提示,如果用戶什麼也不做,可能因為重入攻擊(replay attack)導致自己的NFT 丟失。對此,評論區下方也出現不同聲音,比如用戶什麼也不做,反倒能保護自己的資產。
兩種觀點孰是孰非?如果發生分叉,用戶的NFT 會面臨風險嗎?應該如何保護自己的資產? Odaily 星球日報將通過分析成因,以回答上述問題。
重入攻擊與EIP-155
讓我們先複習兩個知識點,一個是重入攻擊,一個是EIP-155。
在區塊鏈中,重入攻擊特指在網絡硬分叉的過程中,用戶在原始鏈上簽署的交易可以在其他分叉鏈上被自己或者他人無許可地複制,以獲得更多的資產。
舉個例子,小明在某個PoW 鏈上有若干個CryptoPunk,PoW 鏈分叉出一條PoS 鏈後,小明在兩條鏈上將擁有相同數量的CryptoPunk 。此時小明在PoW 鏈上簽名了一次售出若干個CryptoPunk 的交易,理論上這筆交易可以在B 鏈上不經過小明許可的情況下再复制一遍。如果是小明自己複製了這筆交易,小明就多得到了一筆售出NFT 的收益(也變相藉由“增發”坑了買家);如果被他人復制了這筆交易,小明就會白白損失在PoS 鏈上的資產。
而EIP-155 ,是用於防止重入攻擊的一個協議,簡單理解就是如果不同的分叉網絡和測試網在遵循協議共識的情況下,給自己設置了一個獨一無二的【CHAIN_ID】,就能避免重入攻擊。
誰來保護用戶?用戶如何自我保護?
明白了重入攻擊與EIP-155 的原理後,我們就明確瞭如果以太坊合併後發生分叉,我們應該做什麼。
首先需要收集一個信息,以太坊的分叉鍊是否遵循了EIP-155協議?
如果分叉鏈遵循了EIP-155 協議(取決於分叉主導者對代碼的更改),那麼用戶在不同區塊鏈上的交易就是不可複制的,用戶不需要做任何事。
如果分叉鏈沒有遵循EIP-155 協議(不太講究啊),那麼重入攻擊就是可行的,用戶簽名的任何交易都可能在其他分叉鏈上複製。你要是希望利益最大化,每進行一次交易,自己都在其他鏈上複製一遍(最好通過自動化合約);如果選擇擁抱(正版)以太坊,就不要在分叉鏈上簽名任何交易。