Erc-20
從 web3 呼叫 ERC20 方法“transferFrom”時出現溢出錯誤
我只是想用這條線從我在 Ropsten 的一個智能合約轉移到我的錢包 1.02 WETH
const deposit = weth.methods.transferFrom(contract,wallet,1020000000000000000).send({from:wallet}).then(console.log)
但我收到了這個錯誤:
錯誤:溢出(故障=“溢出”,操作=“BigNumber.from”,值=1020000000000000000,程式碼=NUMERIC_FAULT,版本=大數字/5.3.0)
金額的精度為小數點後 18 位,如果我沒記錯的話,應該是正確的,對吧?
謝謝
問題是javascript數字沒有足夠的精度。
用於
web3.utils.toBN
將它們包裝在 BigNumber 對像中const amount = web3.utils.toBN("1020000000000000000") const deposit = weth.methods.transferFrom(contract,wallet,amount).send({from:wallet}).then(console.log)
因為它們是醚量,所以最好使用
web3.utils.toWei
const amount = web3.utils.toWei("1.02", "ether")