EIP-1559
The London hard fork introduced a new EIP that modifies how gas estimation and costs work for transactions on Polygon.
The London hard fork introduced a new EIP that modifies how gas estimation and costs work for transactions on Polygon.
Due to this, there is a change in how the transaction object is formed when sending transactions on Polygon. A new transaction type called Type 2 Transaction has been introduced. The legacy type transactions will still be compatible but it is recommended to shift to the new style. You can navigate to the end of this document to directly peek into the code.
How legacy transactions (Type 0) work
When you submit a transaction, you also send a gasPrice which is an amount you are offering to pay per gas consumed. Then, when you submit the transaction, miners can decide to include your transaction or not based on your gasPrice bid. Miners will prioritize the highest gas prices.
Sending Type 2 transactions with EIP1559
It is a similar concept, the gasPrice will be split into a baseFee and a priorityFee.
Every transaction needs to pay the base fee, which is calculated based on how full the previous block was. Transactions can also offer the miner a priorityFee to incentivize the miner to include the transaction in the block.
Sending legacy transactions
Only the gasPrice needed to be mentioned in the legacy transaction prior to the London fork.
The following code example shows sending transaction using a type 0 transaction:
const sendLegacyTransaction = async () => {
const web3 = new Web3('https://polygon-rpc.com');
await web3.eth.sendTransactions({
from: 0x05158d7a59FA8AC5007B3C8BabAa216568Fd32B3,
to: 0xD7Fbe63Db5201f71482Fa47ecC4Be5e5B125eF07,
value: 1000000000000000000,
gasPrice: 200000000000
})
}Sending EIP1559 transactions
Add maxPriorityFeePerGas field
The closest analogy to the gas:gasPrice combination is gas:maxPriorityFeePerGas. Since the baseFee needs to be paid regardless, we can just submit a bid on the tip for the miner. Note that the Polygon Gas Station V2 can be used to get the gas fee estimates.
The following code example shows sending transaction in Type 2 method:
// Example for
const sendEIP1559Transaction = async () => {
const web3 = new Web3('https://polygon-rpc.com');
await web3.eth.sendTransactions({
from: 0xFd71Dc9721d9ddCF0480A582927c3dCd42f3064C,
to: 0x8C400f640447A5Fc61BFf7FdcE00eCf20b85CcAd,
value: 1000000000000000000,
maxPriorityFeePerGas: 40000000000
})
}The Polygon Gas Station V2 can be used to get the gas fee estimates.
Polygon Gas Station V2 Endpoint:
https://gasstation.polygon.technology/v2Polygon Gas Station V2 sample response:
{
"safeLow": {
"maxPriorityFee": 37.181444553750005,
"maxFee": 326.2556979087
},
"standard": {
"maxPriorityFee": 49.575259405,
"maxFee": 435.00759721159994
},
"fast": {
"maxPriorityFee": 61.96907425625,
"maxFee": 543.7594965144999
},
"estimatedBaseFee": 275.308812719,
"blockTime": 6,
"blockNumber": 23948420
}See also
Please read the following articles to get a better understanding of sending EIP-1559 transactions:
- How to send transactions with EIP 1559, this tutorial will walk you through both the legacy and new (EIP-1559) way to estimate gas and send transactions.
- Learn how to send an EIP-1559 transaction using ethers.js.
Last updated on
MATIC
Polygon network is transitioning from MATIC to POL, which will serve as the gas and staking token on Polygon PoS. Use the links below to learn more:
EIP-4337
The ERC-4337 standard, also known as EIP-4337, allows developers to achieve account abstraction on the Polygon PoS. This page provides a simplified overview of