Solidity

無法使用 web3 發送正確數量的令牌

  • September 17, 2021

我正在嘗試將我的 erc20 代幣價值 1 轉移到我的契約中。在我的前端,我正在使用:

tokenContract.methods.approve(contract_addr, 1).send({from: accounts[0]});

在我的智能合約中,我正在使用:

tokenContract.transferFrom(msg.sender, address(this), 1);

這一切都很好,就像我獲得了成功的代幣轉移一樣。問題是合約收到的不是 1 個代幣,而是 0.000000000000000001。我的問題是我必須做哪些轉換才能確保發送 1,我在哪裡進行轉換?前端、智能合約還是兩者兼而有之?非常感謝您的幫助。

所以前端和智能合約都代表wei中的代幣,所以1個代幣是0.000000000000000001。在我的前端,我將 1 更改為 web3.utils.toWei(“1”, ’ether’); 在我的智能合約中做了 1 * 10 ** 18。這非常有效。

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