The Astar Gas Station
note
Integrate with the Astar Networks Gas Station for optimal priority fee.
Documentation of the calculations
GasPriceOracle
- Each EVM RPC is queried using the GasPriceOracle module
const oracle = new GasPriceOracle({
defaultRpc: 'https://evm.shibuya.astar.network',
blocksCount: 200,
chainId: 81,
});
/*
{
estimate: {
baseFee: 779.371350051,
maxFeePerGas: 782.371350051,
maxPriorityFeePerGas: 3
},
gasPrices: {
instant: 1013.182755066,
fast: 935.245620061,
standard: 857.308485056,
low: 779.371350051
}
}
*/
- The GasPriceOracle Github repo does not mention how it does it’s calculations but from the results I could infer and confirm these results:
- Low Gas Price: is the base fee.
- Standard Gas Price: 110% of the base fee.
- Fast Gas Price: 120% of the base fee.
- Instant Gas Price: 130% of the base fee.
Estimates
- 8 months ago (October 30, 2022), a change was implemented to gather the
gasPrices
from the last 20 blocks and use percentiles of the results.
for (let i = latest.number; i > latest.number - 20; i--) {
block = await web3[network].eth.getBlock(i);
for (let j = 0; j < block.transactions.length; j++) {
txn = await web3[network].eth.getTransaction(block.transactions[j]);
gasPrices.push(Number(txn.gasPrice));
}
}
const percentiles = percentile([35, 60, 90, 99], gasPrices);
GasPriceOracle
- As of November 1st, 2023, the
GasPriceOracle
, is bein used as fall back values if an error occurred and the percentiles were undefined.
Substrate Tip Calculation
- The substrate tip is exactly the EVM price calculations multiplied:
Using the gas station
- Shibuya API: GET https://gas.astar.network/api/gasnow?network=shibuya&type=tip
- Shiden API: GET https://gas.astar.network/api/gasnow?network=shiden&type=tip
- Astar API: GET https://gas.astar.network/api/gasnow?network=astar&type=tip