Estoy tratando de implementar una función de "compra" de solidez en web3. En última instancia, quiero tener un botón en el que un usuario tenga metamáscara abierta para enviar una cantidad fija (1 éter para un ejemplo simple) al contrato inteligente a cambio de un token ERC20. Aprendí a transferir tokens entre dos billeteras, pero ahora me gustaría dar un paso más y aprender a enviar Ether para recibir un ERC20. Esta es la función de "compra" de solidez que he estado usando:
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;En este momento, he estado usando esto con un botón Onclick junto con metamask para transferir ERC20:
async function transfer() { contract.methods.transfer("Address", "Token quantity").send({ from: "Address"});¿Tiene algún consejo sobre cómo hacer que este Ether to ERC20 funcione en JS? ¡Gracias!
No hay información suficiente en la pregunta. Si está preguntando cómo llamar a la compra que ha escrito en solidez, la respuesta es la siguiente:
contract.methods.purchase("amount", "Token quantity").send({ from: "Address", value: ("amount"*"Token quantity"(in wei)) });