Back to top
Published on -
November 21st, 2022
Written by:
Pierre Rousset

The Longstanding Polygon Transaction Underpriced Issue

Finding and addressing a year old bug on Polygon Mainnet that was causing usability headaches for many

TLDR: if you are running a Polygon blockchain node, you should immediately set the gpo.ignoreprice and txpool.pricelimit to be the same value. Polygon recommends 30 Gwei. We discovered last week that many popular node providers did not have these parameters aligned.

After receiving reports from our MultiBaas blockchain middleware customers that some Polygon transactions were being rejected with a transaction underpriced error, we determined that a key configuration value was missing from the default Polygon node configuration file, and was propagated down to many of the popular blockchain node providers.

In October 2021, Polygon recommended increasing the minimum gas tip for validating transactions to 30 Gwei. Validators and node providers were encouraged but not required to set the miner.gasprice  (minimum gas price for mining a transaction) and the txpool.pricelimit (minimum gas price limit to allow a transaction into the pending transaction pool) node settings to 30 Gwei.

However, the gpo.ignoreprice configuration parameter is just as important. It specifies the minimum transaction price for the gas price oracle within the blockchain node. When a blockchain client (web3 wallets, DApps, etc.) composes a transaction, if a gas price is not specified the blockchain node will consult its own internal gas price oracle for the most appropriate gas price based on recent network conditions and insert that into the unsigned transaction.

The logic for the gas price oracle can be found here. With default settings, the oracle returns the 60th percentile of the three lowest priced transactions included in each of the last 20 blocks. In other words, it considers 60 transactions over the last 20 blocks.

Because the minimum gas tip setting is only a recommendation and not a requirement, some validators are including transactions in blocks with a price below the minimum recommendation. If gpo.ignoreprice is not aligned with txpool.pricelimit, then the gas price oracle can return a price that is below what the node will accept for a submitted transaction.

For example, block 35612499 mined by 0x1efecb61a2f80aa34d3b9218b564a64d05946290 (Figment) contains a number of transactions with an effective gas tip price under the 30 Gwei threshold. Below are three of them.

Transaction Hash

TX Type

Max Fee Per Gas or Gas Price

Max Priority Fee Per Gas

Base Fee

Effective Gas Tip Price

0x43cd...

Legacy

105 Gwei

-

103 Gwei

2 Gwei

0xc615...

Legacy

106 Gwei

-

103 Gwei

3 Gwei

0x229f...

EIP-1559

107 Gwei

107 Gwei

103 Gwei

4 Gwei

We wrote a program to compose transactions using four popular Polygon blockchain node providers and over the course of several hours observed cases like the following.

We can summarize these results as follows, along with a fifth node provider we discovered later.

Blockchain Node Provider

Accepts TX < 30Gwei

Suggest Price < 30 Gwei

A

No

Yes

B

No

Yes

C

No

Yes

D

No

No

E

No

Yes

The fix is straightforward. If you run a Polygon blockchain node, you should immediately set the gpo.ignoreprice and txpool.pricelimit to be the same value. Polygon recommends 30 Gwei.

We let the affected Polygon node providers know immediately and are hoping for a quick resolution. We also reached out to the Polygon team, and opened an issue (#62) and pull requests (#63, #586) to fix it in the upstream Polygon node configuration file.

Update on Nov 24, 2022: As of today two node providers have implemented our suggested fix and two are still reviewing our request.