Aquí está mi código javascript: la dirección a la que lo envío es la dirección de entrada del usuario en la aplicación. La persona que llama (la dirección de metamáscara actualmente seleccionada tiene suficientes tokens ERC20)
lookupVoterInfo: function() { let toAddress = $("#voter-info").val(); Voting.deployed().then(function(contractInstance) { contractInstance.transfer(toAddress, 10); })Contrato MyERC20:
// SPDX-License-Identifier: MIT pragma solidity ^0.7.0; import "../openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; import "../openzeppelin-contracts/contracts/math/SafeMath.sol"; contract MyERC20 is ERC20 { uint256 public INITIAL_SUPPLY = 20000; constructor() ERC20("MyToken", "MYT") { _mint(msg.sender, INITIAL_SUPPLY); } }mensaje de error:
Lo resolví haciendo lo siguiente: debe especificar la tarifa de gas y la dirección de la cuenta.
contractInstance.approve(web3.currentProvider.selectedAddress, 100, {gas: 1000000, from: web3.eth.accounts[0]}); contractInstance.transferFrom(web3.currentProvider.selectedAddress, toAddress, 10, {gas: 1000000, from: web3.eth.accounts[0]});