Polygon RPC: The Gateway L2 for High-Throughput dApps
Polygon PoS is the scaling solution that proved Ethereum could scale without waiting for rollups to mature. With 1.5-second block times, gas fees that rarely exceed 1 gwei, and over 93 million blocks processed, Polygon has become the default home for dApps that need throughput today, not someday.
What Polygon actually is
Polygon PoS is a sidechain to Ethereum, not a rollup. It runs its own consensus mechanism (Proof of Stake with a validator set) and periodically anchors state to Ethereum for security. This is fundamentally different from Optimism, Arbitrum, or Base, which are optimistic rollups that inherit Ethereum's security directly.
The tradeoff: Polygon offers faster finality (2 seconds vs 2 minutes for rollups) and lower fees, but you're trusting the Polygon validator set rather than Ethereum validators directly. For most applications, this is an acceptable tradeoff — Polygon has been running since 2020 with over 300 validators and has never had a consensus failure.
Key specs:
- Chain ID: 137 (0x89)
- Block time: ~1.5 seconds
- Gas token: POL (formerly MATIC)
- Consensus: Proof of Stake with checkpointing to Ethereum
- EVM compatibility: Full (same opcodes, same tooling)
Polygon also operates Polygon zkEVM, a separate Type 1 zkEVM chain that uses zero-knowledge proofs for Ethereum-equivalent execution. That's a different chain (chain ID 1101) with different tradeoffs. This post focuses on Polygon PoS, the high-throughput sidechain.
The RPC: Standard Ethereum JSON-RPC
Polygon exposes the standard Ethereum JSON-RPC interface. If you've built against Ethereum mainnet, you already know how to query Polygon.
# Chain ID
curl -s -X POST https://rpc.swiftnodes.io/rpc/polygon?key=YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
# -> {"jsonrpc":"2.0","id":1,"result":"0x89"}
# Latest block
curl -s -X POST https://rpc.swiftnodes.io/rpc/polygon?key=YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# -> {"jsonrpc":"2.0","id":1,"result":"0x590a5ae"} # ~93M
The core methods work as expected:
| Method | What it gives you |
|---|---|
eth_chainId |
Chain ID (137 / 0x89) |
eth_blockNumber |
Latest block height |
eth_getBlockByNumber |
Block by number (with or without full txs) |
eth_getBalance |
POL balance for an address |
eth_call |
Execute a call without creating a transaction |
eth_sendRawTransaction |
Submit a signed transaction |
eth_getLogs |
Query event logs |
Gas fees and block structure
Polygon's gas fees are consistently low. While Ethereum mainnet can spike to 50-200 gwei during congestion, Polygon typically stays under 1 gwei. A typical swap on Uniswap V3 (deployed on Polygon) costs fractions of a cent.
Blocks arrive every ~1.5 seconds and contain hundreds of transactions. Polygon processes more daily transactions than most L2s combined, making it one of the most active chains in the ecosystem.
# Gas price
curl -s -X POST https://rpc.swiftnodes.io/rpc/polygon?key=YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}'
# -> {"jsonrpc":"2.0","id":1,"result":"0x6fc23ac00"} # ~30 gwei in wei
# Block with transactions
curl -s -X POST https://rpc.swiftnodes.io/rpc/polygon?key=YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}'
# -> {"jsonrpc":"2.0","id":1,"result":{"number":"0x590a5ae","timestamp":"0x6a9bafb3","transactions":[...]}}
What's different from rollups
Polygon PoS is often grouped with L2s, but it's architecturally distinct:
- Optimism/Arbitrum/Base are optimistic rollups. They post transaction data to Ethereum and rely on fraud proofs for security. Finality takes ~7 days for withdrawals (or ~1 hour with fast-bridge services).
- Polygon PoS is a sidechain. It runs its own consensus and periodically checkpoints to Ethereum. Finality is ~2 minutes for deposits, ~30 minutes for withdrawals via the official bridge.
- Polygon zkEVM is a Type 1 zkEVM rollup. It uses zero-knowledge proofs for validity, offering stronger security guarantees than PoS but with higher gas fees and slower block times.
From an RPC perspective, they're all EVM-compatible. You can use the same tooling — ethers.js, viem, Hardhat, Foundry — against any of them. The chain ID is the only thing that changes.
eth_getLogs and range caps
Like most high-throughput chains, Polygon imposes range caps on eth_getLogs to prevent abuse. If you're querying logs for a contract that emits a lot of events, you'll need to chunk your queries into smaller block ranges.
The exact cap varies by provider, but a safe default is 10,000 blocks per query. If you need to scan a wider range, loop through it in chunks:
const FROM_BLOCK = 90000000;
const TO_BLOCK = 93000000;
const CHUNK_SIZE = 10000;
for (let i = FROM_BLOCK; i < TO_BLOCK; i += CHUNK_SIZE) {
const logs = await provider.getLogs({
address: "0x...",
fromBlock: i,
toBlock: Math.min(i + CHUNK_SIZE - 1, TO_BLOCK),
});
// Process logs
}
Trace methods and archive access
Polygon's standard RPC does not support trace_block, trace_transaction, or debug_traceCall. These methods require an archive node with tracing enabled, which is a different (and more expensive) infrastructure setup.
If you need internal transactions, contract creation traces, or state diffs at a specific block, you'll need to use a dedicated archive provider or query the chain's block explorer API.
For most dApp use cases — reading balances, submitting transactions, querying logs — the standard RPC is sufficient.
Bridging and finality
Assets move between Polygon and Ethereum via the official Polygon bridge (https://portal.polygon.technology/bridge) or third-party bridges like Across, Hop, and Stargate.
- Deposits (Ethereum → Polygon): ~20-30 minutes via the official bridge
- Withdrawals (Polygon → Ethereum): ~30 minutes via the official bridge (faster than rollups' 7-day challenge window)
Polygon's checkpoint mechanism anchors state to Ethereum every ~30 minutes. Once a checkpoint is confirmed on Ethereum, the corresponding Polygon blocks are considered finalized. This is faster than optimistic rollups but slower than chains with instant finality like Solana or Avalanche.
The short version
Polygon PoS is a high-throughput sidechain for Ethereum. Chain ID 137, ~1.5 second blocks, gas fees typically under 1 gwei. Standard Ethereum JSON-RPC — if you've built on Ethereum, you already know how to query it. Uses POL (formerly MATIC) for gas.
For dApps that need throughput today — DeFi, NFTs, gaming, social — Polygon is where the users are. Uniswap V3, Aave, OpenSea, and thousands of other dApps have made it one of the most active chains by daily transactions.
For reliable Polygon RPC access across load-balanced nodes, grab a free API key and point your app at:
https://rpc.swiftnodes.io/rpc/polygon?key=YOUR_API_KEY
John Sullivan covers RPC infrastructure, node operations, and multi-chain development at SwiftNodes — what it actually takes to keep endpoints fast, fresh, and reliable across EVM and non-EVM networks.