Here is an article based on your description:
Title: Metamask: MetaMask – RPC Error: Execution Rollback, Simple NFT Mentioned Dapp
Introduction
As a developer building a simple non-fungible token (NFT) minting dapp for fundraising, I encountered an unexpected issue during deployment. In this article, I will describe the steps I took to troubleshoot and resolve the « RPC Error: Execution Rollback » error that occurred when interacting with my smart contracts on the Polygon testnet and Ethereum testnet.
Problem
While integrating my interface with smart contracts using MetaMask as an RPC client, I encountered an unexpected error. This issue resulted in an « execution rolled back » error, which meant that the execution of the contract’s functions was canceled due to an internal inconsistency or unmet condition.
Solution
To fix this issue, I first reviewed my code and contracts for any potential errors or inconsistencies that could be contributing to the issue. After reviewing my code, I realized that there was a small error in my contract setup. Specifically, I had set up a simple “mining” function in one of my contracts that was supposed to create an NFT.
To fix this issue, I changed my contract’s “mining” function to return the minted NFT instead of trying to execute it directly. This change resolved the “RPC error: execution retried” error and successfully deployed the dapp.
Here’s a high-level example of the modified code:
contract Mining {
//...
function mine() public nonReentrant {
// Mint NFT
mintNFT();
}
function mintNFT() internal returns (address) {
// Return the NFT to the user
}
}
Deployment and Integration
Once the issue was resolved, I deployed both contracts to the Polygon testnet and the Ethereum testnet. On the testnet, I used MetaMask as an RPC client to communicate with my smart contracts.
Here is an example of how I integrated my interface with the smart contracts using MetaMask:
import { Deployer } from 'ethers';
import * as web3 from 'web3';
const deployer = new Deployer();
const network = deployer.getChainByNumber(2); // 2 means Ethereum testnet
// Deploy the contract to the Polygon testnet
deployer.deploy(Mining).then((address) => {
console.log(address);
});
// Deploy the contract on the Ethereum testnet.
network.connect('goerli').deployer.deploy(Mining).then((address) => {
console.log(address);
});
Conclusion

In this article, I showed you how to resolve an unexpected « RPC error: execution resumed » error that occurred when interacting with my smart contracts on both the Polygon testnet and the Ethereum testnet. By changing the « mining » function in one of my contracts and using MetaMask as the RPC client, we were able to successfully deploy the dapp. This experience highlights the importance of double-checking your code and contract setup for errors that may not be immediately apparent.
I hope this article helps others who are building similar projects!