Truffle
Truffle 和 Remix 的編譯方式不同
我有一個智能合約,當使用 truffle 和 remix 編譯時輸出不同的字節碼,即使兩者似乎都使用相同的編譯器版本:0.5.7+commit.6da8b019 這是一個已知問題嗎?這正常嗎?
這會導致驗證我在 etherscan 上的智能合約出現問題,從而受到我的使用者的信任,這是一件大事。
謝謝你的幫助。
好吧,在深入研究 remix 的編譯選項後,我找到了答案。現在看來,remix 的預設設置是:
evmVersion: "petersburg"
而在 Truffle 上,它設置為
evmVersion: "byzantium"
在 truffle-config 中明確設置 byzantium 修復了字節碼,現在它與 remix 的字節碼完全相同。
預設情況下,Truffle 編譯時啟用優化,Remix 時禁用。