Solidity

ERC20 合約無法轉移大量代幣

  • April 21, 2021

我正在建構一個 ERC20 代幣。我想正確地使用小數,以便人們也可以用小數進行交易。所以,我正在嘗試將 10^21 個令牌從我的地址轉移到另一個地址。

Minted tokens : 1000000 * (10**decimals) # decimals = 18

所以,我總共應該有 10^23 個令牌。

所以我應該可以轉移這個金額?

我製作了一個 UI 並使用了 web3.js,我得到了這個錯誤。

Unhandled Rejection (Error): 
invalid number value (arg="_price", coderType="uint256", value="1e+21")

然後我也在 Remix 中嘗試了相同的值。那裡的交易也失敗了。

如果我想轉移 10*20 令牌等數字,執行失敗。然後交易也失敗了。

我究竟做錯了什麼?

謝謝您的幫助。

您不能使用浮點數與加密貨幣或任何貨幣單位進行互動。您需要使用一個名為BigNumber.js的特殊幫助器類來進行數學運算。然後將這些數字轉換為字元串,然後再將它們傳遞給轉到 JSON-RPC 介面的函式。

使用此解決它: https ://github.com/ethereum/web3.js/issues/2077#issuecomment-468530879

         const dec = window.web3.utils.toBN(this.props.decimals)
         const price_ =  window.web3.utils.toBN(this.Object.value*(100))
         const price ="0x"+ price_.mul(window.web3.utils.toBN(10).pow(dec)).toString("hex")

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