Solidity

檢查具有可變值的轉移的乙太幣

  • August 14, 2022

所以我剛接觸solidity,我只想檢查轉移到合約中的乙太幣是否小於我在合約中的變數值。它實際上是在檢查wei而不是ethers。

require(msg.value > 0 ether, "Please contribute atleast 1 ETH.");
require(msg.value+Amount_Raised <= Amount_ToBe_Raised, "Please contribute correct amount.");

所以在這裡我想檢查 uint Amount_ToBe_Raised ,但它檢查的是 wei 而不是 Ether。

1 ether 相當於 1e18(Wei) 在solidity 上,所以你可以這樣檢查:

require(msg.value > 1 * 1e18, "Please contribute at least 1 ETH.");

msg.value總是在wei中,而不是在ethers中,並且在solidity中沒有浮點數,所以你比較wei中msg.value / 1e18的值,或者你與ether中的值進行比較,當然你會失去精度。

1 ether只代表1e18。

所以你可以這樣比較:

require(msg.value > 1 ether, "Please contribute atleast 1 ETH.");

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