BOB RPC: A Developer's Guide (Chain ID 60808)

By John Sullivan · October 11, 2026 · 5 min read · #bob #bob rpc #build on bitcoin #bitcoin #op stack #developer guide

BOB ("Build on Bitcoin") is an Ethereum rollup built for Bitcoin assets. Its contracts hold wrapped and staked BTC, and its BOB Gateway moves BTC in and out. On the RPC side, though, it is an ordinary OP Stack chain. Gas is paid in ETH, data is posted to Ethereum, and standard Ethereum tooling works. The differences from other OP Stack chains are in the details: how quickly blocks become safe, how far back eth_getLogs reaches, and whether you can trace.

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

The endpoint

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

With viem:

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

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

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

What we measured

Property Value
Chain ID 60808 (0xed88)
Genesis block timestamp April 11, 2024
Block time 2.000 s (averages over 1,000 to 10,000,000 blocks)
Gas limit 30,000,000 per block
Base fee 252 wei
eth_maxPriorityFeePerGas 1,000,000 wei (0.001 gwei)
ETH transfer ~0.000000275 ETH, 92% of it L1 data fee
safe and finalized behind head the same block, 29 to 55 minutes behind
eth_getLogs range 2,000 blocks
Historical state full archive
Tracing not available

Fees: the L1 fee is the bill

Blocks are nearly empty: the busiest block in a 1,024-block eth_feeHistory window was 1.9% full. The base fee sits at 252 wei. The block header's fee parameters (denominator 250, elasticity 6, no minimum base fee) are the OP Stack defaults, so the fee would rise normally if demand appeared. The median tip in the same window was 0, even though eth_maxPriorityFeePerGas suggests 0.001 gwei.

Execution is almost free: 21,000 × 1,000,252 wei ≈ 0.000000021 ETH. The L1 data fee is the rest. We asked BOB's fee oracle at 0x420000000000000000000000000000000000000F to price a signed transfer with getL1Fee, and it returned 253,788,768,959 wei, about 0.000000254 ETH:

Part Wei Share
Execution (21,000 × 1,000,252) 21,005,292,000 8%
L1 data fee 253,788,768,959 92%
Total 274,794,060,959 ≈ $0.0007 at ETH $2,502

The oracle's baseFeeScalar is 2,000,000 and its blobBaseFeeScalar is 611,590, so the L1 fee follows both Ethereum's execution base fee and its blob fee. Estimate it before you send:

const l1Fee = await client.readContract({
  address: "0x420000000000000000000000000000000000000F",
  abi: [{ name: "getL1Fee", type: "function", stateMutability: "view",
          inputs: [{ type: "bytes" }], outputs: [{ type: "uint256" }] }],
  functionName: "getL1Fee",
  args: [serializedTx],
});

Wallets that show only gasUsed × effectiveGasPrice will understate a BOB transaction's cost by more than ten times. Receipts carry the real charge in l1Fee.

Bitcoin on an Ethereum rollup

BOB's BTC is ERC-20 tokens, each with its own bridge and decimals. totalSupply on BOB for the main ones on October 11:

Token Address Decimals Supply on BOB
uniBTC 0x236f8c0a61dA474dB21B693fB2ea7AAB0c803894 8 701.5
WBTC 0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3 8 10.1
SolvBTC 0x541FD749419CA806a8bc7da8ac23D346f2dF8B77 18 3.57
tBTC 0xBBa2eF945D523C4e2608C9E1214C2Cc64D4fc2e2 18 0.77

Two practical points follow. First, decimals differ: WBTC and uniBTC use 8, like satoshis, while SolvBTC and tBTC use 18, like ETH. Code that sums "BTC" across tokens has to normalize each one. Second, none of these is native BTC. Each carries its own issuer and bridge risk, so treat them as separate assets in pricing and risk logic.

Activity

BOB is quiet on-chain. In 300 consecutive blocks (10 minutes) there were 10 user transactions alongside the per-block deposit transactions, about one a minute. In our halt survey across 110 chains, BOB had no gap of 10 minutes or more between August 25 and October 6.

safe and finalized move together

On most OP Stack chains safe trails the head by a few minutes at most and finalized by about 20 minutes. On BOB the two tags pointed at the same block every time we checked. The lag changed between readings: 873 blocks (29 minutes) in our first, and 1,620 to 1,642 blocks (54 to 55 minutes) in three readings later the same day, growing by one block every two seconds. That pattern fits batches being posted to Ethereum infrequently: nothing becomes safe until a batch lands, and by the time we looked, the batch was already in a finalized Ethereum block.

The practical effect is that safe is not a quick confirmation on BOB. If your app waits for safe before crediting a deposit, expect waits of up to an hour, not a minute. Use latest plus your own confirmation count for low-value actions, and finalized where you need Ethereum's guarantee. BOB's proof system has also changed over time: according to L2BEAT it returned to a permissioned dispute game in September 2026. That affects withdrawals to Ethereum, not the RPC tags. For the general picture, see soft vs hard finality on L2s.

Logs

eth_getLogs accepts up to 2,000 blocks per request through our endpoint. A 2,001-block range returns:

-32602 eth_getLogs block range 2001 exceeds maximum of 2000; narrow fromBlock–toBlock or filter by address/topics

Because the chain is quiet, a full 2,000-block window (about 67 minutes) returned only 123 logs (192 KB) in 1.1 to 1.6 seconds. The same window filtered to WBTC returned 11 logs in about half a second. Page in 2,000-block steps and filter by address when you can. Other public endpoints differ: one capped at 1,000 blocks, another at 10,000 on its free plan. See our getLogs range cap survey for other chains.

History and tracing

State reads work at any depth: eth_getBalance at block 1 answered.

Tracing is the gap. debug_traceTransaction, debug_traceBlockByNumber and trace_block are not available through our endpoint, which answers the method is not available on this endpoint. We checked BOB's public RPCs directly, and none served traces either. BOB's own rpc.gobob.xyz answers authenticated API key required for method, another returns Invalid method, and a third returns a temporary internal error. If you need call traces on BOB, plan to run your own node with debug APIs enabled, or use a provider that sells authenticated access.

Summary

  • OP Stack chain, chain ID 60808, ETH for gas, 2-second blocks.
  • Base fee 252 wei; a transfer costs about 0.000000275 ETH, 92% of it the L1 data fee, priced off Ethereum's execution and blob fees.
  • BTC is several ERC-20s with different decimals and bridges; normalize before summing.
  • safe and finalized move together, 29 to 55 minutes behind the head in our readings.
  • eth_getLogs is capped at 2,000 blocks; tracing is not available publicly.

BOB endpoints and status are on our BOB RPC page, 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

  • Hemi RPC: A Developer's Guide (Chain ID 43111)

    Hemi is an OP Stack chain whose EVM can read Bitcoin. Measured: 12 s blocks, a 252 wei base fee, a transfer costing ~0.00000018 ETH (88% of it L1 data), the hVM Bitcoin precompiles in practice, ~20 min to finalized, full archive and eth_getLogs limits.

  • 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.

  • X Layer RPC: A Developer's Guide (Chain ID 196)

    X Layer is OKX's OP Stack chain with OKB for gas. Measured: 1 s blocks, a base fee pinned at 0.02 gwei, no L1 data fee, a transfer costing about $0.00006, a 100-block eth_getLogs cap, and history that runs back through its Polygon CDK era.

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 →