1. Dry run deploy
Migrations dry-run (simulation)
.....
> Total deployments:   2
> Final cost:          0.058258696 ETH
That's $83.83
2. Do I have $83.83? Yes I do.

3. Double check mainNet configs (truffle-config.js):
- Current gas in Gwei 105 (105000000000 Wei)
 - Final cost was 0.058258696 ETH (58258696000000000 Wei)
 
Plug these numbers in:
 mainnet: {
      provider: () =>
        new HDWalletProvider({
          mnemonic: { phrase: process.env.MNEMONIC },
          providerOrUrl: process.env.RPC_URL_1,
        }),
      network_id: 1,
      from: process.env.DEPLOYERS_ADDRESS,
      gas: 58258696000000000, 
      gasPrice: 105000000000,
      confirmations: 2, 
      timeoutBlocks: 200,
      skipDryRun: false, 
    },
4. Time to deploy
truffle migrate --network mainnet
Result:
Error:  *** Deployment Failed ***
"Migrations" could not deploy due to insufficient funds
So, I've...
- Run the dry run, gotten the estimate cost of deploying the contract. Plugged that value in.
 - Got the current cost of Gas. Plugged that in.
 - Ran the contract
 - The deployment fails
 
Is there anything I'm missing here?