I have an ERC20 contract and I am trying to access it from another contract, which is a Faucet. In the Faucet I have a function to query an account's balance, and another one to transfer some tokens to an account.
When I test everything in Ganache or Ropsten, it works normally. When I test this in a private local Geth network, this happens:
- I am able to deploy both contracts.
- I am able to transfer some tokens from the ERC20 to the Faucet.
- When I try to query the balance of an account by sending a transaction to the Faucet I get: "Error: Returned values aren't valid, did it run Out of Gas?"
- When I try to do a transfer by calling the Faucet, the transaction fails (it is mined, I get a transaction hash, but it fails and consumes all the gas).
What could I be missing? This doesn't seem like a problem in the contracts.
This is the Faucet's code:
pragma solidity 0.5.0; import "./Token/ERC20Basic.sol"; import "./Token/SafeERC20.sol"; contract Faucet { event AccountFunded(address account); address public tokenAddress; constructor(address _tokenAddress) public payable { tokenAddress = _tokenAddress; } function () external payable {} function testBalance(address account) public view returns (uint) { return ERC20Basic(tokenAddress).balanceOf(account); } function transfer(address account) public { SafeERC20.safeTransfer(ERC20Basic(tokenAddress), account, 10); emit AccountFunded(account); } } I am deploying and calling the contracts with Truffle. I tried different gas limits for the private geth network. This is the genesis file:
{ "config": { "chainId": 1337, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc" : {}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x100", "extraData" : "", "gasLimit" : "0x700000000", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" } Thanks!