Solidity

數學運算後需要檢查^0.8

  • August 1, 2022

我正在查看一些協議合約,我已經看到他們使用*require()*語句檢查了非常明顯的數學運算。本合約使用solidity 0.8.11

uint256 id = vaultCount;
vaultCount = vaultCount + 1;
require(vaultCount >= id);

這是什麼原因?我知道由於不足和溢出,在 0.8 之前需要這樣做。但為什麼現在需要它?

有兩種解釋,這兩種解釋都是藉口而不是理由

  1. 他們為 Solidity < 0.8 編寫了合約,這意味著它沒有內置的溢出檢查。然後當他們移植到 0.8.11 時,他們沒有註意到這一點(我過去一直對此感到內疚。)
  2. 他們只是不知道 Solidity >= 0.8 已內置溢出​​檢查

更清楚地說,要回答您的問題,絕對沒有必要,而且重新進行編譯器已經做過的檢查是在浪費精力

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