Getting stuck in deploying a upgradeable contracts to Polygon Mainnet

I am going to deploy an upgradeable smart contract to polygon mainnet.
I am using hardhat to deploy it and I already tested it in polygon testnet, and I deployed my contract to testnet successfully.

However, when I deploy it to mainnet today, I just got stuck.
After running the script of deploying contract, the implementation contract and ProxyAdmin contract were deployed successfully within just 1 minute, but I wait for the transparent proxy contract for a very long time. I've retry to deploy it for a few times, but still not succeed to deploy the transparent transparent proxy.

My script is like below, just following your example:

// scripts/deploy_upgradeable_box.js
const { ethers, upgrades } = require("hardhat");

async function main() {
  const OurNft = await ethers.getContractFactory("NFT");
  console.log("Deploying OurNft...");
  const ourNft = await upgrades.deployProxy(
      initializer: "initialize",
  await ourNft.deployed();
  console.log("OurNft deployed to:", ourNft.address);


After I run the above script, it only shows "Deploying Our Nft...", and never shows "OurNft deployed to: address".

My hardhat.config.js is as below:

module.exports = {
  solidity: "0.8.10",
  networks: {
    matic_mainnet: {
      url: `[app_id]`,
      accounts: [process.env.PRI_KEY],
  etherscan: {
    apiKey: process.env.POLYGONSCAN_API_KEY,

I tried to connect polygon mainnet by different node, like maticvigil and moralis, but still failed to deploy.

Any ideas how can I resolve this problem?


Maybe you can delete this line, and then have a try.

Do you know if the transaction is getting sent?

You can run using env DEBUG='*' ... which prints the transaction hash and you can look it up.

After a few hours, when I checked polygon scan again, I found that my proxy contract had been deployed successfully. It was loading for more than 3 hours.... Since I retried many times, eventually many contracts were deployed to polygon mainnet...

I didn't run env DEBUG="*" when I ran my deployment script, but I did check the pending transaction pool on polygonscan and didn't found any transactions related to my wallet address, so I thought the transactions weren't sent out. So, I was very shocked when I saw many contracts had been deployed.

I've had similar experiences regarding pending transactions on Polygon which are nowhere to be found.