我想让用户用令牌支付,而不是'eth‘。Smart合同:
contract Test {
IERC20 token;
constructor(address tokenAddress){
token = IERC20(tokenAddress)
}
function payWithToken() external {
require(token.balanceOf(msg.sender) > 5000, "insufficient token amount")
token.transferFrom(msg.sender, address(this), 5000;
...
}
}用户可以使用此合同使用令牌支付吗?我怎样才能通过web3.js在我的前端做到这一点呢?
在我的前面,我通常会
const address = 'xxxxxxxx'
const abi = 'xxxxxxxxx'
const url = 'xxxxxxxx'
const web3 = new Web3(url)
const contract = web3.eth.Contract(abi, address)
contract.methods.someFunctions().send({
from: ethereum.selectedAddress,
value: web3.utils.toWei('1', ether)
})我如何从智能契约中调用'payWithToken‘方法?我能做这样的事吗?
contract.methods.payWithToken().send({
from: ethereum.selectedAddress,
value: 'tokens here?'
})我不知道如何在我的前端使用web3.js的payWithToken方法。
发布于 2022-11-28 06:19:26
对于令牌,我们需要首先从该令牌契约调用批准函数。然后调用没有值字段的合同函数payWithToken。
contract.methods.payWithToken().send({
from: ethereum.selectedAddress,
# value: 'tokens here?' // no need of this
})https://stackoverflow.com/questions/74584443
复制相似问题