The BNB Smart Chain methods the Triport dedicated pool now covers
BSC used to be the read-only corner of the gateway. A dedicated pool closes the methods that a public gateway could not — wide log ranges, full history, debug traces and a WebSocket — and this is where each one lands against what other providers publish.
Endpoint and plans: BNB Smart Chain RPC endpoint.
For most of this year BNB Smart Chain was the read-only corner of the gateway: 22 read methods, eth_getLogs capped at around 100 blocks, a routed-node txpool view, and no WebSocket. That was an honest reflection of what a pool of public BNB gateways can serve. A dedicated pool changes the ceiling, and this post is about which methods it closes on BSC and how each one lands against what other providers publish.
Nothing here is a latency claim and none of it is a throughput SLA. It is a list of methods that now return, the documented limits that bound them, and the public facts that let you compare.
What a dedicated pool changes
A public gateway is shared infrastructure sized for the median caller. It answers eth_blockNumber and eth_call all day, but the expensive, scan-heavy methods are exactly the ones an operator rations first: a wide eth_getLogs is a multi-block bloom scan, debug_traceBlockByNumber re-executes every transaction in a block, and a logs subscription holds an open socket per client. On a shared BNB pool those are either capped hard or turned off, which is why the earlier BSC surface documented eth_getLogs as a 25/100-block per-node profile and published no trace or WebSocket at all.
A dedicated pool removes the sharing. The methods below are the ones that depend on it — they were not missing because the chain cannot do them, but because a public node would not spend the work on your behalf.
The methods now covered on BSC
Full history and receipts. The pool answers archive-depth reads to genesis, and eth_getBlockReceipts returns every receipt of a block — logs, status and gas in one call. That pair is the backbone of any reconciliation job: receipts give you the logs without a range filter, and archive depth means a backfill never hits a pruned wall partway down.
Transaction lookup by old hash. eth_getTransactionByHash and eth_getTransactionReceipt resolve against the full index, not just recent blocks, so a hash from a year ago still returns its transaction and its receipt rather than a null.
Wide eth_getLogs. This is the method that moves the most. The dedicated pool serves ranges up to 50,000 blocks and 50,000 logs per response, against the previous 100-block ceiling. A 100,000-block backfill of one contract is 2 calls instead of 1,000. The ceiling still exists for a reason — a log query is a scan and a response has a size — so a correct indexer still pages and still treats a range error as a signal to split, which the block-range-limits walkthrough covers in full. What changes is the size of the window you start from.
Execution traces. debug_traceTransaction and debug_traceBlockByNumber with callTracer return the internal call tree — the contract-to-contract calls, value transfers and reverts that no log or receipt records. That is the difference between knowing a transaction failed and knowing which internal call reverted it. These run through a deterministic trace router on a best-effort basis with no latency or throughput SLA: under load a trace can be declined rather than queued without end, so treat it as a diagnostic call, not a hot-path dependency.
A /ws/bsc socket. A single WebSocket carries newHeads, logs and newPendingTransactions subscriptions, and batches them on one connection. The newPendingTransactions channel is a stream of pending transaction hashes, not full transaction bodies — fetch the body with eth_getTransactionByHash when you need it — and the logs subscription requires a non-empty filter (an address, one or more topics, or both); an empty filter is refused the same way a chain-wide eth_getLogs is. For head tracking and event triggers the socket replaces a polling loop against eth_getBlockByNumber and eth_getLogs, and for pending activity it is a live feed rather than the point-in-time sample that txpool_content returns from one node. The BSC pending-transactions guide explains why the txpool view is a sample and a subscription is not.
A pool sized so your load is not shed. On the current load profile clients are not served 5xx or 429 on BSC — the shared-gateway failure mode where a burst from someone else becomes your error. This is a statement about the current profile, not a guarantee: a seven-day baseline measurement did record 429s on the deepest eth_getLogs scans, which is exactly why rate limits remain a published per-plan policy, documented in BSC limits, rather than an absence of limits. The point is that a dedicated pool makes those documented limits the only ceiling, instead of a shared one you cannot see.
How this compares to other BSC providers
The honest comparison is not "who has the method" — most providers can trace a BSC block if you pay for the right node. It is which plan the method needs and how wide a range it will serve. The table below uses only figures each provider documents publicly, or its published pricing; where a number is not publicly documented it is left out rather than guessed.
| Method / capability | Triport BSC (dedicated pool) | What other providers document publicly |
|---|---|---|
eth_getLogs block range | up to 50,000 blocks / 50,000 logs per response (Triport endpoint limit) | Alchemy documents a 10-block range on its Free plan, wider ranges on paid plans, and a 150 MB response cap on every plan (read 2026-10-31) |
| Full archive history | to genesis | archive access is typically a higher tier or a dedicated-node line item |
eth_getBlockReceipts / tx by old hash | full index | available where archive is enabled |
debug_traceTransaction / debug_traceBlockByNumber | served on the pool, best-effort, no SLA | a paid feature at most providers — QuickNode includes Trace & Debug from its Build plan ($49/mo, read 2026-10-31); others sell it as an upper tier or a separate add-on |
WebSocket (newHeads / logs / pending hashes) | /ws/bsc, batched on one socket | commonly a paid-tier feature; some free plans do not serve a BSC WebSocket at all |
| Dedicated, non-shared pool | yes, on flat monthly plans | a single-tenant BSC node at other providers is typically a separately priced, dedicated line item |
Two cells deserve a note. The eth_getLogs row uses only Alchemy's published per-plan table — the same one the block-range post cites — because it is the figure we can point at a public page for; the 50,000-block number on the Triport side is this endpoint's own limit, not a claim about anyone else's upstream. Figures for other BSC providers that we could not tie to a current public page were left out of this table rather than guessed. The trace and WebSocket rows are where the "who has the method" framing misleads — the method exists almost everywhere, but the plan it requires is the real cost, so compare plans, not checkmarks. For the full per-provider price breakdown see the best BSC RPC providers comparison.
Reading wide log ranges without tripping a cap
A wider ceiling does not retire the pager; it changes its starting window. The rule is the same one that works on every chain: start at a window, shrink it on a range or too-many-results error, grow it after a run of successes, and keep three failures apart — a range that is too wide (shrink), a result set that is too large (split the same range), and a block below the node's history (no window helps). Filter by address whenever you can, because an address-less filter is a scan of every contract's event logs, and store each page before you advance the cursor so a crash never skips a window.
With a 50,000-block ceiling the arithmetic changes in your favour. A one-million-block backfill of a single busy contract that would have been 10,000 calls at a 100-block window is 20 calls at the pool's ceiling — before the result-count cap forces any split. That is the difference between a backfill you schedule overnight and one you run inline.
When this is the wrong approach
- You broadcast transactions. BSC on the pool is a read surface. There is no submission category, so
eth_sendRawTransactionis not served here — sign and broadcast through your own node or a provider that sells submission. - You need every event on the chain. A wider
eth_getLogswindow is still a filtered scan; an address-less, chain-wide filter is exactly what a node refuses. Read receipts block by block witheth_getBlockReceipts, or run a purpose-built indexer. - You treat
txpoolas the whole mempool.txpool_contentis one node's local pool, a sample, not the network. For a live pending feed use the/ws/bscnewPendingTransactionssubscription — a stream of pending transaction hashes, not full transaction bodies — and still treat it as partial. - You need a throughput or latency guarantee. None of this is an SLA. The limits are a published per-plan policy; size your traffic against the sustained rate in BSC limits.
Sources
- Triport, eth_getLogs on BNB Smart Chain: this endpoint's block range (50,000 blocks / 50,000 logs per response), up from the previous 25/100-block per-node profile.
- Triport, eth_getBlockReceipts, eth_getTransactionByHash and eth_getTransactionReceipt on BNB Smart Chain: whole-block receipts and full-index transaction lookup.
- Triport, BSC limits: per-plan read and heavy-read RPS policy and burst behaviour.
- Triport, BSC RPC endpoint and BNB Smart Chain API reference: the published BSC surface.
- Triport, eth_getLogs block range limits across EVM chains: the adaptive pager and the per-chain failure taxonomy.
- Alchemy, eth_getLogs reference (read 2026-10-31): Free-plan 10-block range, wider ranges on paid plans, and a 150 MB response cap on every plan, for a chain set that includes BNB.
- QuickNode, pricing (read 2026-10-31): the Build plan ($49/mo) includes Trace & Debug methods.
Block-range figures for NodeReal and Chainstack that earlier drafts carried were removed before publish: no current public page states a per-plan
eth_getLogsceiling for BSC that we could cite, so they are left out rather than guessed.