Go-Ethereum
檢查輸入是否是可行的乙太幣值
問題:
web3.js是否具有檢查值(數字 | 字元串 | BigNumber)是否為有效乙太值的函式?如果不是,那麼這樣做的有效方法可能是什麼?我是否必須手動創建一個函式以確保輸入值不超過 18 位小數,不為負數等?
闡述:
我的應用程序正在使用
web3.js
,geth
使用者可以隨時從他們的餘額中提取資金。現在在提款過程中,他們輸入了他們希望提款的金額。據我了解,這些是乙太幣的特徵:
- 18 位小數
- 大於或等於零
我可以創建一個函式來測量使用者輸入中存在多少小數點,但我會重新發明輪子嗎?
更具體地說,您需要檢查發送的 Ether 數量加上 gas limit * gas price 是否小於或等於該帳戶的目前餘額,這應該包括所有其他測試。在 web3 中,您可以通過以下方式執行此操作:
var sender = 0x123...; var to = 0xabc...; var value = 123; // Wei var gaslimit = 100000; var gasprice = 20000000000; // 20 GWei per gas if (web3.eth.getBalance(sender) >= value + gaslimit * gasprice) web3.eth.sendTransaction({from: sender, to: to, gas: gaslimit, gasprice: gasprice, value: value});