Go-Ethereum

檢查輸入是否是可行的乙太幣值

  • July 16, 2017

問題:

web3.js是否具有檢查值(數字 | 字元串 | BigNumber)是否為有效乙太值的函式?如果不是,那麼這樣做的有效方法可能是什麼?我是否必須手動創建一個函式以確保輸入值不超過 18 位小數,不為負數等?


闡述:

我的應用程序正在使用web3.jsgeth使用者可以隨時從他們的餘額中提取資金。現在在提款過程中,他們輸入了他們希望提款的金額。據我了解,這些是乙太幣的特徵:

  • 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});

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