Erc-20

從 web3 呼叫 ERC20 方法“transferFrom”時出現溢出錯誤

  • July 10, 2021

我只是想用這條線從我在 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")

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