Morph RPC: A Developer's Guide (Chain ID 2818)

By John Sullivan · October 13, 2026 · 5 min read · #morph #morph rpc #morphtx #alt fee #payments #developer guide

Morph is an Ethereum layer 2 aimed at payments, backed by the Bitget ecosystem. It runs its own fork of go-ethereum rather than the OP Stack, and the fork adds something no other chain in this series has: a native transaction type that pays gas in an ERC-20 token, plus optional payment references and memos. Standard Ethereum tooling works for ordinary transactions, but indexers and wallets meet new transaction and receipt fields as soon as someone uses them.

This guide is measured against the live chain on October 13, 2026, through the same endpoint SwiftNodes customers use.

The endpoint

https://rpc.swiftnodes.io/rpc/morph?key=YOUR_API_KEY
wss://rpc.swiftnodes.io/ws/morph?key=YOUR_API_KEY

With viem:

import { createPublicClient, defineChain, http } from "viem";

const morph = defineChain({
  id: 2818,
  name: "Morph",
  nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
  rpcUrls: { default: { http: ["https://rpc.swiftnodes.io/rpc/morph?key=YOUR_API_KEY"] } },
});

const client = createPublicClient({ chain: morph, transport: http() });

What we measured

Property Value
Chain ID 2818 (0xb02)
Client Morph's go-ethereum fork (Geth/v2.2.6-mainnet)
Block time ~1.9 s (1,000-block average); 277 of 300 consecutive gaps were exactly 2 s
Gas limit 45,000,000 per block
Base fee 1,000,000 wei (0.001 gwei), unchanged across 1,024 blocks
eth_maxPriorityFeePerGas 7,000,000 wei
Median tip actually paid 0
ETH transfer 0.00000083 ETH ($0.002), 97% L1 data fee
safe and finalized the same block, 585 blocks (~18 min) behind
eth_getLogs 5,000 blocks per request
Historical state full archive
Tracing debug_* and trace_*

Blocks and activity

Morph is quiet on-chain. In 300 consecutive blocks, 275 were empty and the rest held 26 transactions. Blocks keep coming every two seconds regardless, so block numbers are a usable clock. The chain has also sped up: averaged over the last 10 million blocks, a block took 2.97 s, against 1.86 s over the last 1,000.

In 4,000 recent blocks we counted 910 transactions by type:

Type Count What it is
0x0 legacy 565 ordinary transactions
0x2 EIP-1559 309 ordinary transactions
0x4 EIP-7702 31 delegated smart-account transactions
0x7f MorphTx 4 gas paid in a token
0x7e 1 message from Ethereum

The EIP-7702 share is notable for a chain this size. Wallets such as Bitget Wallet use it for gas abstraction. If your decoder rejects unknown types, allow 0x4, 0x7e and 0x7f.

Fees: almost all L1 data

The base fee was 1,000,000 wei in every block of a 1,024-block eth_feeHistory window, and blocks were at most 1.7% full. The median tip paid was 0, but eth_maxPriorityFeePerGas suggests 7,000,000 wei, seven times the base fee. Set the tip from fee history if you care about the last fraction of a cent.

Morph isn't on the OP Stack, so its L1 fee oracle lives at a different address: 0x530000000000000000000000000000000000000F. Its getL1Fee priced a signed ETH transfer at 805,003,819,709 wei:

Part Wei Share
Execution (21,000 × 1,000,000) 21,000,000,000 3%
L1 data fee 805,003,819,709 97%
Total 826,003,819,709 ≈ $0.002 at ETH $2,515
const l1Fee = await client.readContract({
  address: "0x530000000000000000000000000000000000000F",
  abi: [{ name: "getL1Fee", type: "function", stateMutability: "view",
          inputs: [{ type: "bytes" }], outputs: [{ type: "uint256" }] }],
  functionName: "getL1Fee",
  args: [serializedTx],
});

Receipts report the actual charge in l1Fee. A wallet that shows only gasUsed × effectiveGasPrice understates the cost about 40 times.

MorphTx: gas paid in tokens

MorphTx (type 0x7f) extends an EIP-1559 transaction with a feeTokenID. When it is nonzero, gas is paid in that token, priced through the L2 Token Registry at 0x5300000000000000000000000000000000000021. Morph's specification gives the conversion as tokenAmount = ⌈ethAmount × tokenScale / tokenRate⌉. Version 1 (from the Jade upgrade) also allows a 32-byte reference and a memo of up to 64 bytes to tag payments.

A MorphTx we sampled used fee token ID 6. Its receipt carried the rate used at execution time:

{
  "type": "0x7f",
  "feeTokenID": "0x6",
  "feeRate": "0x16cdf9f85beea",
  "tokenScale": "0xf4240",
  "feeLimit": "0x0",
  "l1Fee": "0x7d04bca3cb"
}

The transaction's logs show token ID 6 is USDC (0xcfb1186f4e93d60e60a8bdd997427d1f33bc372b): 0.003216 USDC moved to the fee vault at 0x530000000000000000000000000000000000000a.

Two practical consequences for anyone reading the chain:

  • Fee accounting. For a 0x7f transaction with a nonzero feeTokenID, the sender's ETH balance doesn't pay for gas. Compute the cost in the fee token, or read the transfer to the fee vault, rather than subtracting gasUsed × effectiveGasPrice from ETH.
  • Extra fields everywhere. Every receipt on Morph carries feeTokenID, feeRate, tokenScale, feeLimit, version, reference and memo, even ordinary transfers, where feeTokenID is 0x0. Strict schema validators need to allow them.

In our 4,000-block sample no transaction set a reference or memo yet.

Logs

eth_getLogs over 1,000 blocks returned 487 logs (0.3 MB) in 1.4 seconds, and 10,000 blocks returned 9,779 logs (6.7 MB) in 6.0 seconds. At 50,000 blocks one upstream answered:

-32000 block range is larger than max block range, block range = 50001, max block range = 5000

Since the answering node can vary, page at 5,000 blocks to be safe. That is under three hours of chain time per request. See our getLogs range cap survey for other chains.

History and tracing

State reads work from block 1. debug_traceBlockByNumber with callTracer and Parity-style trace_block both returned full traces near the head, and old blocks traced without errors.

Finality

safe and finalized pointed at the same block, 585 blocks (about 18 minutes) behind the head. As on BOB, there is no early "safe" stage, so a deposit flow that waits for safe waits for finalized. Withdrawals to Ethereum are a separate matter: Morph uses ZK fault proofs with a challenge window, which affects bridging, not the RPC tags. In our halt survey across 110 chains, Morph had no gap of 10 minutes or more between August 25 and October 6. For background, see soft vs hard finality on L2s.

Summary

  • Chain ID 2818, ETH for gas, ~2-second blocks, its own go-ethereum fork.
  • Base fee pinned at 0.001 gwei; a transfer costs about $0.002, 97% of it L1 data. The fee oracle is at 0x5300…000F.
  • MorphTx (0x7f) pays gas in registry tokens such as USDC, and every receipt carries the extra fee fields.
  • Expect types 0x4, 0x7e and 0x7f alongside ordinary transactions.
  • eth_getLogs up to 5,000 blocks; full archive and tracing; safe equals finalized at ~18 minutes.

Morph endpoints and status are on our Morph RPC page, with per-method pages such as eth_getLogs on Morph, alongside the rest of the 128 chains on one key. SwiftNodes has a free tier to try it.

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.

Related posts

  • Lens Chain RPC: A Developer's Guide (Chain ID 232)

    Lens Chain is a ZK Stack chain for social apps that pays gas in GHO and keeps its data on Avail. Measured: blocks only when there are transactions, two thirds of transactions sponsored by a paymaster, 8-hour batches, ~11 h to finalized, and a 10,000-log cap.

  • Filecoin RPC: A Developer's Guide to the FEVM (Chain ID 314)

    Filecoin speaks Ethereum JSON-RPC, but it is not an EVM chain underneath. Measured: 30-second epochs with null rounds that return an error, tipsets of about five blocks, two address formats, transfers that cost millions of gas, F3 finality 10 minutes behind the head, and a 360-epoch eth_getLogs cap.

  • Ink RPC: A Developer's Guide (Chain ID 57073)

    Ink is Kraken's OP Stack chain. Measured: 1 s blocks, a base fee near 280 wei, a suggested tip roughly 300 times what transactions actually pay, a transfer costing ~$0.002 at the median tip, dense logs that hit a 20,000-result eth_getLogs cap within a few hundred blocks, and full tracing.

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