【发布时间】:2021-10-08 02:42:56
【问题描述】:
我正在尝试在 web3 中实现一个可靠的“购买”功能。最终,我希望有一个按钮,然后用户可以打开元掩码以向智能合约发送固定金额(简单示例为 1 以太币)以换取 ERC20 代币。我已经学会了如何在两个钱包之间转移代币,但现在我想更进一步,学习如何发送 Ether 以接收 ERC20。这是我一直在使用的solidity“购买”功能:
function purchase(uint amount, uint tokens) public payable{
require (msg.value >= amount * 1 ether, "You must pay at least 1 ether per token");
balances[address (this)] -= tokens;
balances[msg.sender] += tokens;
现在我一直在使用它和一个 Onclick 按钮结合 metamask 来传输 ERC20:
async function transfer() {
contract.methods.transfer("Address", "Token quantity").send({
from: "Address"});
对于如何在 JS 中实现这个 Ether to ERC20 函数,你有什么建议吗?谢谢!
【问题讨论】:
-
好的,我已经成功使用购买功能向我的智能合约发送 1 个以太币并收到 ERC20 代币作为回报,尽管我只能使用我插入的地址进行此交易进入函数:``` async function purchase(){ contract.methods.purchase("1","1").send({ from: "Address", to: "Address", value: web3.utils.toWei ("1", "以太") }); ``` 任何发送者如何使用这个“购买”功能来与合约交互,而不仅仅是一个指定的地址?谢谢!
标签: javascript ethereum solidity web3 erc20