Solidity
ERC20 合約無法轉移大量代幣
我正在建構一個 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")