Skip to main content
4 of 4
added 34 characters in body

Sending parameters with web3 .send is throwing MetaMask - RPC Error: [ethjs-query] while formatting outputs from RPC

I'm trying to call a function with parameters with web3 v1.7.0 .send() method which works fine without any parameters but fails when including them.

A simplified version:

contract Master{
constructor() {}
event AgreementCalled(address[] indexed initialParticipants);
function createAgreement(address[] memory initialParticipants) external {
    emit AgreementCalled (initialParticipants);
    }
}

called from Javascript with web3

let contractTransaction =  await MasterContract.methods.createAgreement(["0x26..7b", "0xeA8..A3e" ])
          .send({from:currentAccount});

I get the following console error

MetaMask - RPC Error: [ethjs-query] while formatting outputs from RPC '{"value":{"code":-32603,"data":{"message":"VM Exception while processing transaction: revert","code":-32000,"data":{"0x680b1ed2c6c24f5150a4fa5d1c764d134d25ab122e14891a2348087e6e7eb51e":{"error":"revert","program_counter":81,"return":"0x"},

Interestingly enough, Ganache UI shows the transaction, including the array Ganache displays values

  • If I remove the parameter (an array of addresses) it works fine, like so: MasterContract.methods.createAgreement().send({from:currentAccount});
  • If I change the array with a simple string both in the contract and javascript, I get the same error.
  • Adding lots of gas, like .send({from:this.eth.currentAccount, gas: 10000000}) doesn't solve it
  • Using Web3 1.7.0, solidity >=0.7.0 <0.9.0, Ganache
  • From Remix it works just fine

Any idea on what can be going on?