Solidity
無法使用 web3 發送正確數量的令牌
我正在嘗試將我的 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。這非常有效。