Skip to content

chore(fallback): migrate to fallback rpc endpoint for log data#124

Merged
BZahory merged 5 commits intomainfrom
chore/CRTR-1869-ponder-to-fallback-rpc-migration
Mar 2, 2026
Merged

chore(fallback): migrate to fallback rpc endpoint for log data#124
BZahory merged 5 commits intomainfrom
chore/CRTR-1869-ponder-to-fallback-rpc-migration

Conversation

@BZahory
Copy link
Copy Markdown
Contributor

@BZahory BZahory commented Feb 24, 2026

Summary

  • Migrate the eth_getLogs transport from the Marble/Ponder indexer (v1-indexer.marble.live) to the new fallback-rpc caching proxy (fallback-rpc.vercel.app)
  • Rename createPonderHttp to createFallbackRpcHttp to reflect the new backing service
  • Add comments noting which events are whitelisted for the private RPC log service

Details

The fallback app previously relied on https://v1-indexer.marble.live/rpc/{chainId} as a prioritized eth_getLogs transport. This PR swaps it to https://fallback-rpc.vercel.app/{chainId}, a new caching proxy that serves the same role -- accepting only eth_getLogs requests and caching results. The transport config (batch: false, methods: { include: ["eth_getLogs"] }) and all call sites remain unchanged.

Comments were added to earn-subpage.tsx and borrow-subpage.tsx to document which event names (CreateMetaMorpho, SupplyCollateral) are explicitly whitelisted by the private RPC log service.

Test plan

  • Confirm eth_getLogs requests route to fallback-rpc.vercel.app on chains with full support (Mainnet, Base, Polygon, Unichain, Katana, Arbitrum, HyperEVM, Monad, Stable, Sei, TAC)
  • Verify vault and market data renders correctly in the UI
  • Confirm public RPC fallback still works if the new service is unreachable

@linear
Copy link
Copy Markdown

linear bot commented Feb 24, 2026

@vercel
Copy link
Copy Markdown

vercel bot commented Feb 24, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
lite-app Skipped Skipped Mar 2, 2026 3:43pm

Request Review

@BZahory BZahory marked this pull request as draft February 24, 2026 10:49
@BZahory BZahory changed the title chore: migrate to fallback rpc endpoint for log data chore(fallback): migrate to fallback rpc endpoint for log data Feb 24, 2026
@vercel vercel bot temporarily deployed to Preview – lite-app February 24, 2026 16:53 Inactive
@vercel vercel bot temporarily deployed to Preview – lite-app February 27, 2026 19:12 Inactive
@vercel vercel bot temporarily deployed to Preview – lite-app February 27, 2026 22:00 Inactive
@BZahory BZahory marked this pull request as ready for review March 2, 2026 14:39
@BZahory
Copy link
Copy Markdown
Contributor Author

BZahory commented Mar 2, 2026

Prod deployed and smoke testing looks good:

Smoke testing against https://fallback-rpc.vercel.app (all chains)

✓ smoke tests > GET /health returns 200 with status ok [848.35ms]
✓ smoke tests > unsupported method returns -32601 [124.57ms]
✓ smoke tests > unsupported chain ID returns -32602 [52.33ms]
✓ smoke tests > empty filter returns -32602 [44.91ms]
✓ smoke tests > unknown address without topics returns -32602 [45.16ms]
✓ smoke tests > unknown address + excluded Transfer topic returns -32602 [43.77ms]
✓ smoke tests > null body returns -32600 [47.96ms]
✓ smoke tests > array body returns -32600 [46.35ms]
✓ smoke tests > unknown address + non-Morpho topic returns -32602 [45.28ms]
✓ smoke tests > mixed known + unknown address array returns -32602 [45.18ms]
✓ smoke tests > invalid address type returns -32600 [52.03ms]
✓ smoke tests > invalid topics[0] type returns -32600 [60.54ms]
✓ smoke tests > missing params returns -32602 [52.37ms]
✓ smoke tests > MorphoBlue address + SupplyCollateral topic passes validation [206.60ms]
✓ smoke tests > unknown address + whitelisted topic is rejected [57.12ms]
✓ per-chain reachability > Chain 1 (Ethereum) is reachable [58.76ms]
✓ per-chain reachability > Chain 10 (OP Mainnet) is reachable [90.37ms]
✓ per-chain reachability > Chain 56 (BNB Smart Chain) is reachable [65.00ms]
✓ per-chain reachability > Chain 130 (Unichain) is reachable [87.47ms]
✓ per-chain reachability > Chain 137 (Polygon) is reachable [59.02ms]
✓ per-chain reachability > Chain 143 (Monad Mainnet) is reachable [68.04ms]
✓ per-chain reachability > Chain 146 (Sonic) is reachable [314.98ms]
✓ per-chain reachability > Chain 239 (TAC) is reachable [91.20ms]
✓ per-chain reachability > Chain 252 (Fraxtal) is reachable [529.14ms]
✓ per-chain reachability > Chain 480 (World Chain) is reachable [75.36ms]
✓ per-chain reachability > Chain 988 (Stable) is reachable [78.67ms]
✓ per-chain reachability > Chain 999 (HyperEVM) is reachable [328.64ms]
✓ per-chain reachability > Chain 1135 (Lisk) is reachable [205.32ms]
✓ per-chain reachability > Chain 1868 (Soneium Mainnet) is reachable [334.54ms]
✓ per-chain reachability > Chain 2741 (Abstract) is reachable [81.91ms]
✓ per-chain reachability > Chain 8453 (Base) is reachable [65.85ms]
✓ per-chain reachability > Chain 34443 (Mode Mainnet) is reachable [70.77ms]
✓ per-chain reachability > Chain 42161 (Arbitrum One) is reachable [243.19ms]
✓ per-chain reachability > Chain 42220 (Celo) is reachable [84.24ms]
✓ per-chain reachability > Chain 42793 (Etherlink) is reachable [89.19ms]
✓ per-chain reachability > Chain 43111 (Hemi) is reachable [286.50ms]
✓ per-chain reachability > Chain 57073 (Ink) is reachable [124.39ms]
✓ per-chain reachability > Chain 59144 (Linea Mainnet) is reachable [76.26ms]
✓ per-chain reachability > Chain 98866 (Plume) is reachable [263.40ms]
✓ per-chain reachability > Chain 534352 (Scroll) is reachable [334.00ms]
✓ per-chain reachability > Chain 747474 (Katana) is reachable [226.02ms]
✓ per-chain reachability > Chain 11155111 (Sepolia) is reachable [67.03ms]
✗ per-chain reachability > Chain 21000000 (Corn) is reachable [15001.05ms]
  ^ this test timed out after 15000ms.

1 tests failed:
✗ per-chain reachability > Chain 21000000 (Corn) is reachable [15001.05ms]
  ^ this test timed out after 15000ms.

 42 pass
 1 fail
 42 expect() calls
Ran 43 tests across 1 file. [21.31s]
 ELIFECYCLE  Command failed with exit code 1.

The only error is a 429 on Corn:

Status: 429
URL: https://21000000.rpc.thirdweb.com
Request body: {"method":"eth_getLogs","params":[{"address":"0xc2B1E031540e3F3271C5F3819F0cC7479a8DdD90","topics":["0xa3b9472a1399e17e123f3c2e6586c23e504184d504de59cdaa2b375e880c6184"],"fromBlock":"0x0","toBlock":"0x270f"}]}

Details: "You are using a public-good RPC with strict rate limits. To lift these limits you can obtain an api key for free at https://thirdweb.com/create-api-key"
Version: viem@2.35.1
    details: "\"You are using a public-good RPC with strict rate limits. To lift these limits you can obtain an api key for free at https://thirdweb.com/create-api-key\"",
   docsPath: undefined,
 metaMessages: [
  "Status: 429", "URL: https://21000000.rpc.thirdweb.com", "Request body: {\"method\":\"eth_getLogs\",\"params\":[{\"address\":\"0xc2B1E031540e3F3271C5F3819F0cC7479a8DdD90\",\"topics\":[\"0xa3b9472a1399e17e123f3c2e6586c23e504184d504de59cdaa2b375e880c6184\"],\"fromBlock\":\"0x0\",\"toBlock\":\"0x270f\"}]}"
],
 shortMessage: "HTTP request failed.",
    version: "2.35.1",
       body: {
  method: "eth_getLogs",
  params: [
    [Object ...]
  ],
},
    headers: Headers {
  "date": "Mon, 02 Mar 2026 14:42:21 GMT",
  "content-type": "text/plain",
  "content-length": "151",
  "connection": "keep-alive",
  "cache-control": "private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0",
  "expires": "Thu, 01 Jan 1970 00:00:01 GMT",
  "referrer-policy": "same-origin",
  "x-frame-options": "SAMEORIGIN",
  "report-to": "{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=uV%2FozhADYBONKy6mKmlWKZE%2BBK3%2Bz1NEp%2F5LW7z4icz5x33EvytBqc0Y0QteqmlL5EYBqCE836OyAv%2F%2BmHZIXSyBAIJapzoNJ9H2RDusrmv6NNekfk1mRA%3D%3D\"}]}",
  "retry-after": "0",
  "nel": "{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}",
  "server": "cloudflare",
  "cf-ray": "9d612ae4efbb883e-IAD",
}

@BZahory BZahory force-pushed the chore/CRTR-1869-ponder-to-fallback-rpc-migration branch from 1d0baba to 18d6866 Compare March 2, 2026 14:53
@vercel vercel bot temporarily deployed to Preview – lite-app March 2, 2026 14:53 Inactive
@vercel vercel bot temporarily deployed to Preview – lite-app March 2, 2026 15:42 Inactive
@BZahory BZahory requested a review from haydenshively March 2, 2026 15:51
@BZahory BZahory merged commit 559e84f into main Mar 2, 2026
3 checks passed
@BZahory BZahory deleted the chore/CRTR-1869-ponder-to-fallback-rpc-migration branch March 2, 2026 17:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants