Polygon RPC: The Gateway L2 for High-Throughput dApps

By John Sullivan · January 1, 1970 · 5 min read

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
J
John Sullivan
Infrastructure Writer, SwiftNodes

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.

Try SwiftNodes free — multi-chain RPC across 75+ networks, flat-rate pricing, pay by card or crypto, no KYC. Get an API key in 30 seconds →