ERC20 合约无法转移大额代币

Posted

技术标签:

【中文标题】ERC20 合约无法转移大额代币【英文标题】:ERC20 contract not able to transfer large tokens 【发布时间】:2020-09-14 20:05:15 【问题描述】:

我正在构建一个 ERC20 代币。我已经正确使用了小数。所以,我将 10^21 个令牌转移到一个函数来转移我的令牌。

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

所以我应该可以转移这笔钱?

我制作了一个 UI 并使用了 web3.js,但出现了这个错误。

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

然后我也在 Remix 中尝试了相同的值。那里的交易也失败了。如果我想转移 10*20 令牌等数字,执行失败。那么交易也会失败。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

解决了这个问题: 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")

【讨论】:

以上是关于ERC20 合约无法转移大额代币的主要内容,如果未能解决你的问题,请参考以下文章

如何从智能合约中转移 ERC20 代币而不转移到基本账户

我可以使用 PHP 从 ERC20 合约中转移代币吗?

ERC20 代币。无法获取变量,也无法使用已部署合约的方法

使用 PHP 将 ERC20 代币从一个账户转移到另一个账户

手把手教你发行代币

使用 Oraclize 和 Metamask 转移 ERC20 代币