Solidity
檢查具有可變值的轉移的乙太幣
所以我剛接觸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.");