Erc-20
Ethers.js - 錯誤:無效的 BigNumber 字元串
我正在嘗試批准更多的 erc-20 代幣(它有 18 位小數)。
await token.connect(signer).approve(contractAddress, BigNumber.from((1000*(tenToPowerOf18Digits)).toString())) :
如果我嘗試批准超過 999 個令牌,它會給我這個錯誤
Uncaught (in promise) Error: invalid BigNumber string (argument="value", value="1e+21", code=INVALID_ARGUMENT, version=bignumber/5.5.0)
誰能幫我解決這個問題?如何批准超過 999 個令牌?
問題是
toString
數字的 將其轉換為 BigNumber 無法解釋的科學表示。解決這個問題的最簡單方法是在添加小數時使用 BigNumber:
const decimals = 18; const input = 999; const amount = BigNumber.from(input).mul(BigNumber.from(10).pow(decimals));
另一種方法是使用 ethers 來解析這個:
const decimals = 18; const input = "999"; // Note: this is a string, e.g. user input const amount = ethers.utils.parseUnits(input, decimals)