Metamask: How to Call a payable function I am getting error={“code”:-32603,”message”:”Internal JSON-RPC error.”,”data”:{“code”:3,”message”:”execution reverted”}

Troubleshooting Paid Features on MetaMask

As a developer building decentralized applications (dApps) on the Ethereum blockchain, you probably know the importance of error and exception handling when interacting with smart contracts. In this article, we will explore how to resolve an error that occurs when calling a paid function using the Metamask signer method.

Understanding the Error

The error message shown indicates an internal JSON-RPC error. This is not unexpected since MetaMask usually handles errors internally and passes them to the application code. However, to troubleshoot the issue, it is important to understand what this error means.

The error has three components:

  • code: 32603 – Ethereum-specific code indicating an internal error.
  • message: Internal JSON-RPC Error – An error message describing the cause of the error.
  • data: { “code”: 3, “message”: “execution canceled” } – Actual error details.

Troubleshooting steps

To resolve this issue, let’s walk through the steps:

Metamask: How to Call a payable function I am getting error={

Step 1: Check the Ether value

When calling a paid function, you need to enter the exact amount of Ether (ETH) as input. To ensure that the Ether value is accurate, check that it matches the expected price.

const etherValue = 0x01;

constant transaction = {

// more properties

data: {

// more data

"gasprice": 200,000,

"gaslimit": 20000000,

"a": contractAddress,

"value": etherValue,

"onetime": 1,

"signer": wait metamaskSigner.sign(transaction, { a: contractAddress }),

},

};

Step 2: Check the error message and code

Review the error message and code to see what is happening. In this case, it looks like an execution returned error.

// check the error data

constant error = transaction.data;

console.log(error); // { code: 3, message: "execution returned" }

Step 3: Resolving the execution rollback error

To resolve the execution rollback error, you can try the following:

  • Increase the nonce value to prevent multiple executions of the contract.
  • Try calling the function with more ether that has not yet been consumed.
  • Check if there are any pending transactions on the blockchain that could be causing the issue.

constant transaction = {

// other properties

data: {

Gas price: 200000,

Gas limit: 20000000,

a: contract address,

value: etherValue + 1000000, // increase the amount of Ether

nonce: 5, // increase the nonce value

signer: wait metamaskSigner.sign(transaction, { a: contractAddress }),

},

};

Best practices

To avoid similar errors in the future:

  • When calling a paid function, always check that the ETH value matches the expected price.
  • Please carefully check the error message and code to understand what is happening.
  • If you are unsure how to handle specific errors or exceptions, please consult the official Ethereum documentation or ask the community for help.

By following these steps and best practices, you should be able to resolve the “execution returned” error when calling a paid function on MetaMask.

ethereum push through http


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *