Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.
EvmRpcDataSourceBuilder builds a data source that ingests EVM data from any JSON-RPC endpoint.
It is the RPC counterpart of the EVM Portal stream: the query surface
(setFields, addLog, addTransaction, addTrace, addStateDiff, includeAllBlocks,
addQuery) is identical, and the built source runs anywhere a Portal source does — including
run() and Processor and the EVM fallback data source.
The only difference is setRpc(...) in place of setPortal(...).Use it when a Portal dataset is not available for your network, or as a standby source behind a
Portal primary — see High availability.
Setting network to a known slug (or its chainId) enables block validation and selects the right
trace/debug methods for that chain, so the produced dataset matches what the Portal serves:ethereum-mainnet, optimism-mainnet, base-mainnet, arbitrum-one, gnosis-mainnet,
polygon-mainnet, cronos-mainnetKnown slugs are offered in TypeScript autocomplete. Any other slug or chainId is accepted but runs
without a preset.
With no matching preset and no explicit rpc/method overrides, block validation is disabled and
dataset parity with the Portal is not guaranteed — the source logs a warning at build time.
Supplying your own rpc/method overrides counts as taking ownership of the per-chain
configuration and silences the warning.
setFields, setBlockRange, addLog, addTransaction, addTrace, addStateDiff,
includeAllBlocks, and addQuery behave exactly as on the Portal builder — see the
EVM Portal stream reference for the full query surface.
Returns an EVM data source with the standard interface (getHead, getFinalizedHead,
getStream, getFinalizedStream). Pass it to run() or Processor, use it
as a downstream source of an EVM fallback, or consume the stream directly.
Throws if setRpc(...) was not called.
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"SQD Documentation","description":"Developer docs for SQD. Stream onchain data from 110+ networks through the Portal HTTP API. Build indexers with the Squid or Pipes TypeScript SDKs and deploy on SQD Cloud. API reference, guides, and tutorials.","colors":{"primary":"#4f46e5","light":"#a5b4fc","dark":"#4338ca"},"logo":"https://docs.sqd.dev/images/favicon-512x512.png","favicon":"https://mintcdn.com/sqd-2119b3c3/guSbZXCH4rZ4VplP/images/favicon-512x512.png?fit=max\u0026auto=format\u0026n=guSbZXCH4rZ4VplP\u0026q=85\u0026s=68404b12d41ec308307bc81da4f5244e","api":{"playground":{"display":"interactive"},"examples":{"prefill":true}},"appearance":{"default":"system","strict":false},"background":{"color":{"light":"#ffffff","dark":"#08090a"}},"navbar":{"links":[{"href":"https://github.com/subsquid/squid-sdk","label":"Squid SDK","type":"github"},{"href":"https://github.com/subsquid-labs/pipes-sdk","label":"Pipes SDK","type":"github"},{"icon":"cloud","href":"https://cloud.sqd.dev","label":"Cloud"},{"icon":"waypoints","href":"https://network.sqd.dev","label":"Network"}],"primary":{"type":"button","label":"Get help","href":"https://t.me/hydradevs"}},"footer":{"socials":{"github":"https://github.com/subsquid","x":"https://twitter.com/hellosqd","telegram":"https://t.me/hydradevs","linkedin":"https://www.linkedin.com/company/subsquid","youtube":"https://www.youtube.com/@subsquid"},"links":[{"header":"Quickstarts","items":[{"label":"Pipes SDK","href":"/en/sdk/pipes-sdk/evm/quickstart"},{"label":"Squid SDK","href":"/en/sdk/squid-sdk/evm/quickstart"},{"label":"Portal API","href":"/en/portal/evm/quickstart"}]},{"header":"AI Development","items":[{"label":"llms.txt","href":"/llms.txt"},{"label":"llms-full.txt","href":"/llms-full.txt"},{"label":"skill.md","href":"/skill.md"},{"label":"Agent Skills","href":"https://github.com/subsquid-labs/skills"},{"label":"MCP Server","href":"/en/ai/mcp-server-docs"},{"label":"Plugins","href":"/en/ai/ai-development"}]},{"header":"Company","items":[{"label":"Blog","href":"https://blog.sqd.dev"},{"label":"Announcements","href":"/announcements"},{"label":"Changelog","href":"/changelog"},{"label":"Whitepaper","href":"/en/network/whitepaper"},{"label":"Website","href":"https://subsquid.io"}]}]},"seo":{"metatags":{"msvalidate.01":"570E8FF88EEAEACE2E2C262AF96E35F3"},"organization":{"id":"https://sqd.dev/#organization","name":"SQD","legalName":"Subsquid Labs GmbH","url":"https://sqd.dev/","logo":"https://sqd.dev/brand/Symbol_bl-bg.svg","sameAs":["https://github.com/subsquid","https://www.x.com/hellosqd","https://t.me/subsquid","https://www.youtube.com/@subsquid","https://www.linkedin.com/company/subsquid"]},"indexing":"all"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":false},"integrations":{"ga4":{"measurementId":"G-2JXBGQRKYN"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"That page does not exist. Start from the [documentation home](/en/home), browse [all networks](/en/data/all-networks), or open the [Portal API reference](/en/api/evm/introduction). Agents: the full page index is at [llms.txt](/llms.txt), every page is available as Markdown by appending `.md`, and the Portal API is described by [openapi.json](/openapi.json)."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","cursor","add-mcp","grok","download-spec","download-pdf"],"display":"header"},"thumbnails":{"appearance":"dark","background":"https://docs.sqd.dev/og.jpg","fonts":{"family":"Inter"}},"interaction":{"drilldown":false},"metadata":{"timestamp":false},"markdown":{"schema":true,"instructions":["Reach for SQD when you need onchain data without running a node or an indexer: decoded EVM logs and transactions, Solana instructions, Bitcoin transactions, Substrate events and calls, or Hyperliquid fills, over any block range on 110+ networks.","To query directly, POST to https://portal.sqd.dev/datasets/{dataset}/stream. The full API is described at https://docs.sqd.dev/openapi.json, and responses to the stream endpoints are JSON Lines.","To let an agent query it as a tool, connect the Portal MCP server at https://portal.sqd.dev/mcp.","Every page on this site is available as Markdown by appending .md to its URL."]},"navigation":{"global":{"anchors":[{"anchor":"Announcements","icon":"megaphone","href":"/announcements"},{"anchor":"Changelog","icon":"list","href":"/changelog"}]},"languages":[{"language":"en","href":"en/home"},{"language":"es","href":"es/404"},{"language":"ko","href":"ko/404"},{"language":"de","href":"de/404"},{"language":"tr","href":"tr/404"},{"language":"fr","href":"fr/404"},{"language":"ru","href":"ru/404"},{"language":"pt-BR","href":"pt-BR/404"},{"language":"zh","href":"zh/404"},{"language":"ja","href":"ja/404"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"sqd-2119b3c3","hasAudioNarration":false,"actualSubdomain":"sqd-2119b3c3","customDomains":["docs.sqd.dev"],"gitSource":{"type":"github","owner":"subsquid-labs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb20fcd2d002df62e28258","collectionId":"a1090a6b-a32c-4772-b0eb-8c1589b221d8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb20fcd2d002df62e28258"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeb20fcd2d002df62e28258","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"en","tag":"Build","count":386},{"language":"en","tag":"Squid SDK","count":224},{"language":"en","tag":"Reference","count":219},{"language":"en","tag":"Networks \u0026 Schemas","count":196},{"language":"en","tag":"EVM","count":134},{"language":"en","tag":"EVM Data","count":108},{"language":"en","tag":"Guides","count":108},{"language":"en","tag":"Solana","count":105},{"language":"en","tag":"Supported Networks","count":93},{"language":"en","tag":"Pipes SDK","count":83}],"searchSettings":{"maxResults":10,"isFiltersEnabled":true}},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":true,"type":"email","email":"[email protected]"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--hl-bg: #f0f1f5;--hl-cmd: #111827;--hl-line-num: #9ca3af;--hl-key: #2563eb;--hl-flag: #0284c7;--hl-str: #b45309;--hl-num: #16a34a;--hl-bool: #c026d3;--hl-comment: #6b7280}:root[class~=\"dark\"]{--hl-bg: #131316;--hl-cmd: #e6edf3;--hl-line-num: #484f58;--hl-key: rgb(143,164,255);--hl-flag: rgb(85,205,255);--hl-str: rgb(255,196,124);--hl-num: rgb(137,209,150);--hl-bool: rgb(247,156,224);--hl-comment: rgb(115,115,130)}[data-mode=\"wide\"] table{margin-left:auto;margin-right:auto}.network-name-cell button{text-align:left}.nav-tabs-item[href=\"/en/data/all-networks\"],.mobile-nav-tabs-item[href=\"/en/data/all-networks\"]{display:none!important}:root[class~=\"dark\"]{--gray-950: 14 15 17;--gray-900: 19 19 22;--gray-800: 28 28 32;--gray-700: 46 46 51}.breadcrumb-list,.breadcrumb-list .breadcrumb-item{font-family:var(--font-mono-sqd);font-size:0.6875rem;font-weight:550;letter-spacing:0.08em;text-transform:uppercase}#sidebar-content .sidebar-group-header{font-family:var(--font-mono-sqd);font-size:0.6875rem;font-weight:550;letter-spacing:0.08em;text-transform:uppercase;color:#8b8d9e}:root[class~=\"dark\"] #sidebar-content .sidebar-group-header{color:#8a8a93}.sqd-microlabel{font-family:var(--font-mono-sqd);font-size:0.6875rem;font-weight:550;letter-spacing:0.08em;text-transform:uppercase}.sqd-microlabel-muted{color:#8b8d9e}:root[class~=\"dark\"] .sqd-microlabel-muted{color:#8a8a93}.sqd-pg-label{font-size:11px;text-transform:uppercase;letter-spacing:0.08em;font-weight:500;color:rgba(17, 17, 21, 0.62)}:root[class~=\"dark\"] .sqd-pg-label{color:rgba(247, 248, 248, 0.62)}.sqd-pg-net{font-size:13px;letter-spacing:-0.003em;border-radius:0.25rem;background:transparent;color:rgba(17, 17, 21, 0.62);transition:color 0.15s, background-color 0.15s}.sqd-pg-net:hover{color:rgba(17, 17, 21, 0.85)}.sqd-pg-net[aria-pressed=\"true\"]{background:#e5e7eb;color:#111115;font-weight:510}:root[class~=\"dark\"] .sqd-pg-net{color:rgba(247, 248, 248, 0.62)}:root[class~=\"dark\"] .sqd-pg-net:hover{color:rgba(247, 248, 248, 0.85)}:root[class~=\"dark\"] .sqd-pg-net[aria-pressed=\"true\"]{background:#1c1c20;color:#f7f8f8}.sqd-pg-panel{border:1px solid rgba(229, 231, 235, 0.8);border-radius:0.375rem}:root[class~=\"dark\"] .sqd-pg-panel{border-color:rgba(36, 36, 40, 0.7)}.sqd-pg-bar{background:rgba(229, 231, 235, 0.25);border-bottom:1px solid rgba(229, 231, 235, 0.8)}:root[class~=\"dark\"] .sqd-pg-bar{background:rgba(28, 28, 32, 0.25);border-bottom-color:rgba(36, 36, 40, 0.7)}.sqd-pg-bar-b{background:rgba(229, 231, 235, 0.25);border-top:1px solid rgba(229, 231, 235, 0.8)}:root[class~=\"dark\"] .sqd-pg-bar-b{background:rgba(28, 28, 32, 0.25);border-top-color:rgba(36, 36, 40, 0.7)}.sqd-pg-tab{font-size:13px;font-weight:510;letter-spacing:-0.003em;border-radius:0.25rem;color:rgba(17, 17, 21, 0.62);transition:color 0.15s, background-color 0.15s}.sqd-pg-tab:hover{color:rgba(17, 17, 21, 0.85)}.sqd-pg-tab-active{color:#111115;background:rgba(229, 231, 235, 0.6)}:root[class~=\"dark\"] .sqd-pg-tab{color:rgba(247, 248, 248, 0.62)}:root[class~=\"dark\"] .sqd-pg-tab:hover{color:rgba(247, 248, 248, 0.85)}:root[class~=\"dark\"] .sqd-pg-tab-active{color:#f7f8f8;background:rgba(28, 28, 32, 0.6)}.sqd-pg-dim{color:rgba(17, 17, 21, 0.62)}:root[class~=\"dark\"] .sqd-pg-dim{color:rgba(247, 248, 248, 0.62)}.sqd-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.sqd-no-scrollbar::-webkit-scrollbar{display:none}.sqd-pg-select{background:#f8f9fb;border:1px solid #d1d5db;border-radius:0.5rem;color:#111115}:root[class~=\"dark\"] .sqd-pg-select{background:#131316;border-color:#2e2e33;color:#f7f8f8}.sqd-pg-code{font-family:var(--font-mono-sqd);font-size:13px;line-height:1.7;color:rgba(17, 17, 21, 0.9)}:root[class~=\"dark\"] .sqd-pg-code{color:rgba(247, 248, 248, 0.9)}.sqd-pg-line{display:flex}.sqd-pg-line:hover{background:rgba(0, 0, 0, 0.03)}:root[class~=\"dark\"] .sqd-pg-line:hover{background:rgba(255, 255, 255, 0.03)}.sqd-pg-num{width:44px;flex-shrink:0;text-align:right;padding-right:1.25rem;font-size:12px;line-height:1.7;color:rgba(17, 17, 21, 0.25);user-select:none;font-variant-numeric:tabular-nums}:root[class~=\"dark\"] .sqd-pg-num{color:rgba(247, 248, 248, 0.25)}main h1{letter-spacing:-0.032em}main h2{letter-spacing:-0.022em}.sqd-btn-primary-docs{background-color:#18181b;color:#ffffff;border:1px solid transparent;border-radius:0.375rem;font-weight:510;letter-spacing:-0.011em;transition:background-color 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94),\n box-shadow 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.sqd-btn-primary-docs:hover{background-color:#27272a}:root[class~=\"dark\"] .sqd-btn-primary-docs{background-color:#f7f8f8;color:#08090a}:root[class~=\"dark\"] .sqd-btn-primary-docs:hover{background-color:#ffffff;box-shadow:rgba(0, 0, 0, 0.08) 0px 0px 1px, rgba(0, 0, 0, 0.07) 0px 1px 1px,\n rgba(0, 0, 0, 0.04) 0px 3px 2px}.sqd-btn-secondary-docs{background-color:transparent;color:#27272a;border:1px solid rgba(0, 0, 0, 0.18);border-radius:0.375rem;font-weight:510;letter-spacing:-0.011em;transition:background-color 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94),\n border-color 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94),\n color 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.sqd-btn-secondary-docs:hover{background-color:#f4f4f5;border-color:rgba(0, 0, 0, 0.25);color:#09090b}:root[class~=\"dark\"] .sqd-btn-secondary-docs{color:#f7f8f8;border-color:#1c1c20}:root[class~=\"dark\"] .sqd-btn-secondary-docs:hover{background-color:rgba(255, 255, 255, 0.04);border-color:#2e2e33;color:#ffffff}#navbar span.bg-primary-dark{background-color:#18181b!important;border-radius:0.375rem}#navbar a:has(.bg-primary-dark),#navbar a:has(.bg-primary-dark) span,#navbar a:has(.bg-primary-dark) svg{color:#ffffff!important}:root[class~=\"dark\"] #navbar span.bg-primary-dark{background-color:#f7f8f8!important}:root[class~=\"dark\"] #navbar a:has(.bg-primary-dark),:root[class~=\"dark\"] #navbar a:has(.bg-primary-dark) span,:root[class~=\"dark\"] #navbar a:has(.bg-primary-dark) svg{color:#08090a!important}:root[class~=\"dark\"] #sidebar-content .dark\\:text-primary-light{color:#a5b4fc!important}:root[class~=\"dark\"] #sidebar-content .dark\\:bg-primary-light\\/10,:root[class~=\"dark\"] #sidebar-content .bg-primary\\/10{background-color:rgba(165, 180, 252, 0.08)!important}:root[class~=\"dark\"] #table-of-contents-layout li[data-active]>a{color:#a5b4fc!important;border-left-color:#2e2e33!important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #569CD6\"i]{--shiki-dark: rgb(143, 164, 255) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #C586C0\"i]{--shiki-dark: rgb(247, 156, 224) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #CE9178\"i]{--shiki-dark: rgb(255, 196, 124) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #B5CEA8\"i]{--shiki-dark: rgb(137, 209, 150) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #6A9955\"i]{--shiki-dark: rgb(115, 115, 130) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #DCDCAA\"i]{--shiki-dark: rgb(85, 205, 255) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #4FC1FF\"i]{--shiki-dark: rgb(85, 205, 255) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #9CDCFE\"i]{--shiki-dark: rgb(232, 232, 236) !important}:root[class~=\"dark\"] pre span[style*=\"--shiki-dark: #D4D4D4\"i]{--shiki-dark: rgb(232, 232, 236) !important}[role=\"menu\"]:focus-visible,[role=\"listbox\"]:focus-visible{outline:none!important}#navbar>.bg-background-light{background-color:rgba(250, 250, 250, 0.9)!important;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4)}:root[class~=\"dark\"] #navbar>.bg-background-light{background-color:rgba(8, 9, 10, 0.85)!important}#sqd-safari-edge{display:none}@media (max-width: 1023px){#sqd-safari-edge{display:block;position:fixed;top:0;left:0;right:0;height:8px;background-color:#ffffff;pointer-events:none;z-index:40}:root[class~=\"dark\"] #sqd-safari-edge{background-color:#08090a}}::selection{background:rgba(99, 102, 241, 0.2);color:#09090b}:root[class~=\"dark\"] ::selection{color:#f4f4f5}html{scrollbar-width:thin}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#ffffff}::-webkit-scrollbar-thumb{background:#d4d4d8;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a1a1aa}:root[class~=\"dark\"] ::-webkit-scrollbar-track{background:#08090a}:root[class~=\"dark\"] ::-webkit-scrollbar-thumb{background:#2a2a2e}:root[class~=\"dark\"] ::-webkit-scrollbar-thumb:hover{background:#3f3f46}@layer utilities{#banner{background:#eef2ff!important;border-bottom:1px solid #dfe5ff}#banner,#banner div,#banner p,#banner span{color:#18181b!important}#banner svg,#banner path,#banner button{color:rgba(24, 24, 27, 0.55)!important}#banner a{color:#4f46e5!important;font-weight:550}#banner a:hover{text-decoration:underline}#banner button:hover,#banner button:hover svg,#banner button:hover path{color:#18181b!important}#banner button:hover{background:rgba(79, 70, 229, 0.08)!important}:root[class~=\"dark\"] #banner{background:#16161f!important;border-bottom:1px solid rgba(165, 180, 252, 0.18)}:root[class~=\"dark\"] #banner,:root[class~=\"dark\"] #banner div,:root[class~=\"dark\"] #banner p,:root[class~=\"dark\"] #banner span{color:#f7f8f8!important}:root[class~=\"dark\"] #banner svg,:root[class~=\"dark\"] #banner path,:root[class~=\"dark\"] #banner button{color:rgba(247, 248, 248, 0.55)!important}:root[class~=\"dark\"] #banner a{color:#a5b4fc!important}:root[class~=\"dark\"] #banner button:hover,:root[class~=\"dark\"] #banner button:hover svg,:root[class~=\"dark\"] #banner button:hover path{color:#f7f8f8!important}:root[class~=\"dark\"] #banner button:hover{background:rgba(165, 180, 252, 0.12)!important}}.card{border-radius:0.5rem;background-color:#ffffff;border-color:#e5e7eb;box-shadow:0 1px 3px rgba(18, 42, 66, 0.04);transition:border-color 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94),\n box-shadow 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94),\n filter 0.16s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.card:hover{box-shadow:0 4px 12px rgba(18, 42, 66, 0.08), 0 1px 3px rgba(18, 42, 66, 0.04)}:root[class~=\"dark\"] .card{background-color:#131316;border-color:#1c1c20;box-shadow:none}:root[class~=\"dark\"] .card:hover{box-shadow:0 2px 8px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.04);filter:brightness(1.15)}@layer utilities{.card:hover{border-color:#d1d5db!important}:root[class~=\"dark\"] .card:hover{border-color:#2e2e33!important}}#content-area table th,.prose table th{font-size:0.8125rem;font-weight:550;letter-spacing:-0.006em;text-transform:none;color:rgba(24, 24, 27, 0.85);background-color:#f8f9fb;border-bottom:1px solid #e5e7eb}:root[class~=\"dark\"] #content-area table th,:root[class~=\"dark\"] .prose table th{color:rgba(247, 248, 248, 0.85);background-color:rgba(255, 255, 255, 0.02);border-bottom-color:#242428}#content-area table:not(.not-prose *),.prose table:not(.not-prose *){border-collapse:separate;border-spacing:0;border:1px solid #e5e7eb;border-radius:0.5rem;letter-spacing:-0.011em}:root[class~=\"dark\"] #content-area table:not(.not-prose *),:root[class~=\"dark\"] .prose table:not(.not-prose *){border-color:#1c1c20}#content-area table:not(.not-prose *) th,.prose table:not(.not-prose *) th{padding:0.6875rem 1rem}#content-area table:not(.not-prose *) td,.prose table:not(.not-prose *) td{padding:0.875rem 1rem;border-bottom:1px solid #e9eaee;transition:background-color 0.15s ease}:root[class~=\"dark\"] #content-area table:not(.not-prose *) td,:root[class~=\"dark\"] .prose table:not(.not-prose *) td{border-bottom-color:#1c1c20}#content-area table:not(.not-prose *) tbody tr:last-child td,.prose table:not(.not-prose *) tbody tr:last-child td{border-bottom:none}#content-area table:not(.not-prose *) thead tr:first-child th:first-child,.prose table:not(.not-prose *) thead tr:first-child th:first-child{border-top-left-radius:calc(0.5rem - 1px)}#content-area table:not(.not-prose *) thead tr:first-child th:last-child,.prose table:not(.not-prose *) thead tr:first-child th:last-child{border-top-right-radius:calc(0.5rem - 1px)}#content-area table:not(.not-prose *) tbody tr:last-child td:first-child,.prose table:not(.not-prose *) tbody tr:last-child td:first-child{border-bottom-left-radius:calc(0.5rem - 1px)}#content-area table:not(.not-prose *) tbody tr:last-child td:last-child,.prose table:not(.not-prose *) tbody tr:last-child td:last-child{border-bottom-right-radius:calc(0.5rem - 1px)}#content-area table:not(.not-prose *) tbody tr:hover td,.prose table:not(.not-prose *) tbody tr:hover td{background-color:rgba(230, 233, 240, 0.4)}:root[class~=\"dark\"] #content-area table:not(.not-prose *) tbody tr:hover td,:root[class~=\"dark\"] .prose table:not(.not-prose *) tbody tr:hover td{background-color:rgba(255, 255, 255, 0.03)}#content-area table:not(.not-prose *) tbody td:first-child,.prose table:not(.not-prose *) tbody td:first-child{font-weight:510;color:#18181b}:root[class~=\"dark\"] #content-area table:not(.not-prose *) tbody td:first-child,:root[class~=\"dark\"] .prose table:not(.not-prose *) tbody td:first-child{color:#f7f8f8}#content-area :not(pre)>code,.prose :not(pre)>code{background-color:#f4f4f5;border:1px solid #e4e4e7;border-radius:0.25rem;padding:0.125rem 0.375rem;color:#18181b}:root[class~=\"dark\"] #content-area :not(pre)>code,:root[class~=\"dark\"] .prose :not(pre)>code{background-color:#1a1a1e;border-color:#242428;color:#f7f8f8}.code-block,.code-block-background{border-radius:0.5rem}.code-block{border-color:#e5e7eb}.code-block-background{background-color:#fafbfc!important}:root[class~=\"dark\"] .code-block{border-color:#1c1c20}:root[class~=\"dark\"] .code-block-background{background-color:#0e0f11!important;box-shadow:none}#content-area .tree{--tree-highlight: rgb(var(--primary));margin:1.25rem 0;padding:0.5rem 0.25rem;border:1px solid #e5e7eb;border-radius:0.5rem;background-color:#fafbfc}:root[class~=\"dark\"] #content-area .tree{border-color:#1c1c20;background-color:#0e0f11}[role=\"dialog\"]{border-radius:0.75rem;box-shadow:0 8px 32px rgba(0, 0, 0, 0.10), 0 0 0 1px rgba(0, 0, 0, 0.06)}:root[class~=\"dark\"] [role=\"dialog\"]{background-color:#131316;box-shadow:0 8px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px #242428}#footer{background-color:#ffffff;border-top-color:rgba(0, 0, 0, 0.06)}:root[class~=\"dark\"] #footer{background-color:transparent;border-top-color:#1c1c20}#footer a.text-sm{color:#52525b;transition:color 0.16s ease-out}#footer a.text-sm:hover{color:#09090b}:root[class~=\"dark\"] #footer a.text-sm{color:#8a8a93}:root[class~=\"dark\"] #footer a.text-sm:hover{color:#f7f8f8}img[src*=\"/images/chains/solana.svg\"],img[src*=\"/images/chains/polkadot.svg\"],img[src*=\"/images/chains/hyperliquid.svg\"],img[src*=\"/images/chains/tron.svg\"]{object-position:-999px -999px;background-color:currentColor;mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}img[src*=\"/images/chains/solana.svg\"]{mask-image:url(\"/images/chains/solana.svg\");-webkit-mask-image:url(\"/images/chains/solana.svg\")}img[src*=\"/images/chains/polkadot.svg\"]{mask-image:url(\"/images/chains/polkadot.svg\");-webkit-mask-image:url(\"/images/chains/polkadot.svg\")}img[src*=\"/images/chains/hyperliquid.svg\"]{mask-image:url(\"/images/chains/hyperliquid.svg\");-webkit-mask-image:url(\"/images/chains/hyperliquid.svg\")}img[src*=\"/images/chains/tron.svg\"]{mask-image:url(\"/images/chains/tron.svg\");-webkit-mask-image:url(\"/images/chains/tron.svg\")}.callout{border-radius:0.5rem}.callout [data-component-part=\"callout-content\"],.callout [data-component-part=\"callout-content\"] p{color:#404046}:root[class~=\"dark\"] .callout [data-component-part=\"callout-content\"],:root[class~=\"dark\"] .callout [data-component-part=\"callout-content\"] p{color:#a0a0a5}@layer utilities{.callout[data-callout-type=\"info\"] a,.callout[data-callout-type=\"note\"] a{color:#4f46e5!important}:root[class~=\"dark\"] .callout[data-callout-type=\"info\"] a,:root[class~=\"dark\"] .callout[data-callout-type=\"note\"] a{color:#a5b4fc!important}.callout[data-callout-type=\"warning\"] a{color:#b45309!important}:root[class~=\"dark\"] .callout[data-callout-type=\"warning\"] a{color:#fbbf24!important}.callout[data-callout-type=\"tip\"] a,.callout[data-callout-type=\"check\"] a{color:#16a34a!important}:root[class~=\"dark\"] .callout[data-callout-type=\"tip\"] a,:root[class~=\"dark\"] .callout[data-callout-type=\"check\"] a{color:#4ade80!important}.callout[data-callout-type=\"danger\"] a,.callout[data-callout-type=\"error\"] a{color:#dc2626!important}:root[class~=\"dark\"] .callout[data-callout-type=\"danger\"] a,:root[class~=\"dark\"] .callout[data-callout-type=\"error\"] a{color:#f87171!important}}.callout[data-callout-type=\"info\"]{background-color:#f8f9fb;border-color:#e5e7eb}.callout[data-callout-type=\"info\"] svg{color:#8a8f98}:root[class~=\"dark\"] .callout[data-callout-type=\"info\"]{background-color:rgba(255, 255, 255, 0.03);border-color:#242428}:root[class~=\"dark\"] .callout[data-callout-type=\"info\"] svg{color:#8a8a93}.callout[data-callout-type=\"note\"]{background-color:rgba(79, 70, 229, 0.04);border-color:rgba(79, 70, 229, 0.16)}.callout[data-callout-type=\"note\"] svg{color:#4f46e5}:root[class~=\"dark\"] .callout[data-callout-type=\"note\"]{background-color:rgba(165, 180, 252, 0.06);border-color:rgba(165, 180, 252, 0.16)}:root[class~=\"dark\"] .callout[data-callout-type=\"note\"] svg{color:#a5b4fc}.callout[data-callout-type=\"warning\"]{background-color:rgba(217, 119, 6, 0.05);border-color:rgba(217, 119, 6, 0.22)}.callout[data-callout-type=\"warning\"] svg{color:#b45309}:root[class~=\"dark\"] .callout[data-callout-type=\"warning\"]{background-color:rgba(251, 191, 36, 0.06);border-color:rgba(251, 191, 36, 0.16)}:root[class~=\"dark\"] .callout[data-callout-type=\"warning\"] svg{color:#fbbf24}.callout[data-callout-type=\"tip\"],.callout[data-callout-type=\"check\"]{background-color:rgba(22, 163, 74, 0.05);border-color:rgba(22, 163, 74, 0.2)}.callout[data-callout-type=\"tip\"] svg,.callout[data-callout-type=\"check\"] svg{color:#16a34a}:root[class~=\"dark\"] .callout[data-callout-type=\"tip\"],:root[class~=\"dark\"] .callout[data-callout-type=\"check\"]{background-color:rgba(74, 222, 128, 0.06);border-color:rgba(74, 222, 128, 0.15)}:root[class~=\"dark\"] .callout[data-callout-type=\"tip\"] svg,:root[class~=\"dark\"] .callout[data-callout-type=\"check\"] svg{color:#4ade80}.callout[data-callout-type=\"danger\"],.callout[data-callout-type=\"error\"]{background-color:rgba(220, 38, 38, 0.05);border-color:rgba(220, 38, 38, 0.22)}.callout[data-callout-type=\"danger\"] svg,.callout[data-callout-type=\"error\"] svg{color:#dc2626}:root[class~=\"dark\"] .callout[data-callout-type=\"danger\"],:root[class~=\"dark\"] .callout[data-callout-type=\"error\"]{background-color:rgba(248, 113, 113, 0.06);border-color:rgba(248, 113, 113, 0.18)}:root[class~=\"dark\"] .callout[data-callout-type=\"danger\"] svg,:root[class~=\"dark\"] .callout[data-callout-type=\"error\"] svg{color:#f87171}.sqd-nt-frame{background:#ffffff;border:1px solid #e5e7eb;border-radius:0.5rem;box-shadow:0 1px 3px rgba(18, 42, 66, 0.04);overflow:hidden}:root[class~=\"dark\"] .sqd-nt-frame{background:transparent;border-color:#1c1c20;box-shadow:none}.sqd-nt-toolbar{background:#f8f9fb;border-bottom:1px solid #e5e7eb}.sqd-nt-frame .sqd-nt-scroll{overflow-x:auto;overscroll-behavior-x:contain}:root[class~=\"dark\"] .sqd-nt-toolbar{background:rgba(255, 255, 255, 0.02);border-bottom-color:#242428}.sqd-nt-frame .sqd-nt-table{padding:0}.sqd-nt-frame .sqd-nt-table div[class*=\"page-padding\"]{padding-left:0;padding-right:0}.sqd-nt-frame .sqd-nt-table table{margin:0}.sqd-nt-frame .sqd-nt-table td{min-width:0;overflow:hidden}.sqd-nt-frame .sqd-nt-table th[class*=\"text-center\"],.sqd-nt-frame .sqd-nt-table td[class*=\"text-center\"]{text-align:center}.sqd-nt-table tbody tr{border-bottom:1px solid #e9eaee;transition:background-color 0.15s ease}.sqd-nt-table tbody tr:last-child{border-bottom:none}:root[class~=\"dark\"] .sqd-nt-table tbody tr{border-bottom-color:#1c1c20}.sqd-nt-table tbody tr:hover{background-color:rgba(230, 233, 240, 0.4)}:root[class~=\"dark\"] .sqd-nt-table tbody tr:hover{background-color:rgba(255, 255, 255, 0.03)}.sqd-nt-table th{transition:background-color 0.15s ease}.sqd-nt-table th:hover{background-color:#eef0f4}:root[class~=\"dark\"] .sqd-nt-table th:hover{background-color:rgba(255, 255, 255, 0.05)}.sqd-nt-name{color:#18181b;font-weight:510}:root[class~=\"dark\"] .sqd-nt-name{color:#f7f8f8}.sqd-nt-name-link{color:inherit;text-decoration:none;transition:color 0.15s ease}.sqd-nt-name-link:hover{color:#4f46e5;text-decoration:underline;text-underline-offset:3px}:root[class~=\"dark\"] .sqd-nt-name-link:hover{color:#a5b4fc}.sqd-nt-logo{display:inline-flex;flex:none;align-items:center;justify-content:center;width:20px;height:20px;border-radius:9999px;overflow:hidden}.sqd-nt-logo img{display:block;width:100%;height:100%;margin:0;object-fit:contain}.sqd-nt-logo--white,.sqd-nt-logo--dark{padding:3px}.sqd-nt-logo--white{background:#fff}.sqd-nt-logo--dark{background:#0f0f11}.sqd-nt-logo--mono{background:#f4f4f5;color:#71717a;font-size:0.625rem;font-weight:600}:root[class~=\"dark\"] .sqd-nt-logo--mono{background:#1a1a1e;color:#a1a1aa}.sqd-nt-cell{color:#52525b}:root[class~=\"dark\"] .sqd-nt-cell{color:#a1a1aa}.sqd-nt-dim{color:#71717a}:root[class~=\"dark\"] .sqd-nt-dim{color:rgba(247, 248, 248, 0.62)}.sqd-nt-dot{display:inline-block;width:7px;height:7px;border-radius:9999px;background:#16a34a;box-shadow:0 0 0 3px rgba(22, 163, 74, 0.12)}:root[class~=\"dark\"] .sqd-nt-dot{background:#4ade80;box-shadow:0 0 0 3px rgba(74, 222, 128, 0.1)}.sqd-nt-no{color:#8b919c;font-weight:500;user-select:none}:root[class~=\"dark\"] .sqd-nt-no{color:#6b6b76}.sqd-nt-ok{color:#16a34a}:root[class~=\"dark\"] .sqd-nt-ok{color:#4ade80}.sqd-nt-badge{display:inline-flex;align-items:center;font-size:0.625rem;font-weight:550;letter-spacing:0.05em;text-transform:uppercase;padding:0.1875rem 0.5rem;border-radius:9999px;background:#f4f4f5;color:#52525b;border:1px solid #e4e4e7;line-height:1.4;white-space:nowrap}:root[class~=\"dark\"] .sqd-nt-badge{background:#1a1a1e;color:#a1a1aa;border-color:#2e2e33}.sqd-nt-badge--vm{background:#eef2ff;color:#4f46e5;border-color:#e0e7ff}:root[class~=\"dark\"] .sqd-nt-badge--vm{background:rgba(99, 102, 241, 0.12);color:#a5b4fc;border-color:rgba(99, 102, 241, 0.28)}a.sqd-nt-badge--tier{text-decoration:none;transition:border-color 0.15s ease}.sqd-nt-badge--core{background:rgba(217, 119, 6, 0.08);color:#b45309;border-color:rgba(217, 119, 6, 0.18)}a.sqd-nt-badge--core:hover{border-color:rgba(217, 119, 6, 0.36)}:root[class~=\"dark\"] .sqd-nt-badge--core{background:rgba(245, 158, 11, 0.12);color:#fbbf24;border-color:rgba(245, 158, 11, 0.22)}:root[class~=\"dark\"] a.sqd-nt-badge--core:hover{border-color:rgba(245, 158, 11, 0.44)}.sqd-nt-badge--partner{background:rgba(8, 145, 178, 0.07);color:#0e7490;border-color:rgba(8, 145, 178, 0.15)}a.sqd-nt-badge--partner:hover{border-color:rgba(8, 145, 178, 0.32)}:root[class~=\"dark\"] .sqd-nt-badge--partner{background:rgba(34, 211, 238, 0.1);color:#22d3ee;border-color:rgba(34, 211, 238, 0.2)}:root[class~=\"dark\"] a.sqd-nt-badge--partner:hover{border-color:rgba(34, 211, 238, 0.4)}.sqd-nt-badge--frontier{background:rgba(124, 58, 237, 0.07);color:#6d28d9;border-color:rgba(124, 58, 237, 0.15)}a.sqd-nt-badge--frontier:hover{border-color:rgba(124, 58, 237, 0.32)}:root[class~=\"dark\"] .sqd-nt-badge--frontier{background:rgba(167, 139, 250, 0.12);color:#a78bfa;border-color:rgba(167, 139, 250, 0.22)}:root[class~=\"dark\"] a.sqd-nt-badge--frontier:hover{border-color:rgba(167, 139, 250, 0.44)}a.sqd-nt-badge--retiring,.sqd-nt-badge--retiring{background:rgba(225, 29, 72, 0.07);color:#be123c;border-color:rgba(225, 29, 72, 0.18);text-decoration:none;transition:background 0.15s ease, border-color 0.15s ease}a.sqd-nt-badge--retiring:hover{background:rgba(225, 29, 72, 0.13);border-color:rgba(225, 29, 72, 0.32)}:root[class~=\"dark\"] a.sqd-nt-badge--retiring,:root[class~=\"dark\"] .sqd-nt-badge--retiring{background:rgba(251, 113, 133, 0.1);color:#fda4af;border-color:rgba(251, 113, 133, 0.22)}:root[class~=\"dark\"] a.sqd-nt-badge--retiring:hover{background:rgba(251, 113, 133, 0.18);border-color:rgba(251, 113, 133, 0.38)}.sqd-nt-chip{width:fit-content;white-space:nowrap;font-family:var(--font-mono-sqd, \"JetBrains Mono\", ui-monospace, monospace);font-size:0.75rem;background:#f4f4f5;border:1px solid #e4e4e7;border-radius:0.25rem;padding:0.125rem 0.375rem;color:#18181b}:root[class~=\"dark\"] .sqd-nt-chip{background:#1a1a1e;border-color:#242428;color:#d6d6dc}.sqd-nt-copy{color:#71717a;border-radius:0.25rem;padding:0.25rem;transition:color 0.15s ease, background-color 0.15s ease}.sqd-nt-copy svg{background-color:currentColor!important}.sqd-nt-copy:hover{color:#18181b;background:rgba(0, 0, 0, 0.04)}:root[class~=\"dark\"] .sqd-nt-copy{color:rgba(247, 248, 248, 0.62)}:root[class~=\"dark\"] .sqd-nt-copy:hover{color:#f7f8f8;background:rgba(255, 255, 255, 0.06)}.sqd-nt-control{background-color:#ffffff;border:1px solid #d4d4d8;border-radius:0.375rem;color:#27272a;font-size:14px;font-weight:510;letter-spacing:-0.011em;transition:border-color 0.16s ease, background-color 0.16s ease}.sqd-nt-control:hover{border-color:#a1a1aa}.sqd-nt-control:focus-visible{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px rgba(99, 102, 241, 0.2)}:root[class~=\"dark\"] .sqd-nt-control{background-color:#131316;border-color:#2e2e33;color:#f7f8f8}:root[class~=\"dark\"] .sqd-nt-control:hover{border-color:#52525b}.sqd-nt-filter{flex:1 1 16rem;min-width:0;font-weight:400}.sqd-nt-actions{flex:0 1 auto;min-width:0}.sqd-nt-filter::placeholder{color:#a1a1aa}:root[class~=\"dark\"] .sqd-nt-filter::placeholder{color:#71717a}.sqd-nt-select{appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2371717a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 0.625rem center;background-size:14px 14px}.sqd-nt-toggle-off{color:#71717a}:root[class~=\"dark\"] .sqd-nt-toggle-off{color:#a1a1aa}"},{"filePath":"fonts.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: italic;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCm3FwrK3iLTcvnUwkT9nA2.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: italic;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCm3FwrK3iLTcvnUwAT9nA2.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: italic;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCm3FwrK3iLTcvnUwgT9nA2.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: italic;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCm3FwrK3iLTcvnUwcT9nA2.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: italic;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCm3FwrK3iLTcvnUwsT9nA2.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: italic;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCm3FwrK3iLTcvnUwoT9nA2.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: italic;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCm3FwrK3iLTcvnUwQT9g.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCo3FwrK3iLTcvvYwYL8g.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCo3FwrK3iLTcvmYwYL8g.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCo3FwrK3iLTcvuYwYL8g.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCo3FwrK3iLTcvhYwYL8g.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCo3FwrK3iLTcvtYwYL8g.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCo3FwrK3iLTcvsYwYL8g.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcCo3FwrK3iLTcviYwY.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbX2o-flEEny0FZhsfKu5WU4xD-Cw6nSHrV.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbX2o-flEEny0FZhsfKu5WU4xD-CwenSHrV.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbX2o-flEEny0FZhsfKu5WU4xD-CwCnSHrV.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbX2o-flEEny0FZhsfKu5WU4xD-CwynSHrV.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbX2o-flEEny0FZhsfKu5WU4xD-Cw2nSHrV.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: italic;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbX2o-flEEny0FZhsfKu5WU4xD-CwOnSA.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD2OwG_TA.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD_OwG_TA.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD4OwG_TA.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD0OwG_TA.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD1OwG_TA.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 300 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD7OwE.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--font-inter: \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\",\n \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;--font-mono-sqd: \"JetBrains Mono\", \"Menlo\", \"Monaco\", \"Lucida Console\",\n \"Liberation Mono\", \"DejaVu Sans Mono\", \"Bitstream Vera Sans Mono\",\n \"Courier New\", monospace;--font-geist-mono: var(--font-mono-sqd)}body{font-family:var(--font-inter);letter-spacing:-0.011em;font-feature-settings:normal;font-variant-numeric:normal;font-variant-ligatures:normal}code,pre,.code,.hljs{font-family:var(--font-mono-sqd)}.font-inter{font-family:var(--font-inter)}.font-mono{font-family:var(--font-mono-sqd)}em,i,.italic{font-style:italic;font-synthesis:none}h1,h2,h3,h4,h5,h6,p,span,div{font-feature-settings:\"ss01\" 0, \"ss02\" 0, \"ss03\" 0;font-variant-alternates:normal}"}],"page":{"pagePath":"en/sdk/squid-sdk/evm/reference/evm-rpc-stream","slug":"/en/sdk/squid-sdk/evm/reference/evm-rpc-stream","pageMetadata":{"title":"EVM RPC data source","sidebarTitle":"EVM RPC source","description":"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.","keywords":["EvmRpcDataSourceBuilder","JSON-RPC","@subsquid/squid-sdk","network presets","dataset parity"],"href":"/en/sdk/squid-sdk/evm/reference/evm-rpc-stream"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`EvmRpcDataSourceBuilder`}),` builds a data source that ingests EVM data from any JSON-RPC endpoint.\nIt is the RPC counterpart of the `,_jsx(_components.a,{href:`/en/sdk/squid-sdk/evm/reference/evm-stream`,children:`EVM Portal stream`}),`: the query surface\n(`,_jsx(_components.code,{children:`setFields`}),`, `,_jsx(_components.code,{children:`addLog`}),`, `,_jsx(_components.code,{children:`addTransaction`}),`, `,_jsx(_components.code,{children:`addTrace`}),`, `,_jsx(_components.code,{children:`addStateDiff`}),`, `,_jsx(_components.code,{children:`includeAllBlocks`}),`,\n`,_jsx(_components.code,{children:`addQuery`}),`) is identical, and the built source runs anywhere a Portal source does — including\n`,_jsxs(_components.a,{href:`/en/sdk/squid-sdk/evm/reference/batch-processor`,children:[_jsx(_components.code,{children:`run()`}),` and `,_jsx(_components.code,{children:`Processor`})]}),` and the `,_jsx(_components.a,{href:`/en/sdk/squid-sdk/evm/reference/evm-fallback`,children:`EVM fallback data source`}),`.\nThe only difference is `,_jsx(_components.code,{children:`setRpc(...)`}),` in place of `,_jsx(_components.code,{children:`setPortal(...)`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Use it when a Portal dataset is not available for your network, or as a standby source behind a\nPortal primary — see `,_jsx(_components.a,{href:`/en/sdk/squid-sdk/evm/guides/advanced/high-availability`,children:`High availability`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`install`,children:`Install`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subsquid/squid-sdk`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subsquid/evm-rpc`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subsquid/evm-normalization`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@subsquid/evm-rpc`}),` and `,_jsx(_components.code,{children:`@subsquid/evm-normalization`}),` are optional peers of the SDK package —\nrequired only when an RPC source is used.`]}),`\n`,_jsx(Heading,{level:`2`,id:`complete-example`,children:`Complete example`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`21`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@subsquid/squid-sdk/processor'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`EvmRpcDataSourceBuilder`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@subsquid/squid-sdk/evm/rpc'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` USDC`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` TRANSFER`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` dataSource`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` EvmRpcDataSourceBuilder`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setRpc`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`RPC_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` network:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'ethereum-mainnet'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` })`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setFields`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`log:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`topics:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}})`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`addLog`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` where:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`USDC`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`topic0:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`TRANSFER`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]},`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` range:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`from:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 18_000_000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` })`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`run`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dataSource`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`db`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`ctx`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Same handler context as with a Portal source.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`setrpcoptions`,children:_jsx(_components.code,{children:`setRpc(options)`})}),`\n`,_jsx(_components.p,{children:`Accepts a bare endpoint URL string, or an options object:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Option`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`url`})}),_jsx(_components.td,{children:`JSON-RPC endpoint URL (required)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`network`})}),_jsx(_components.td,{children:`Known network slug or chainId — selects the per-network preset (block validation, trace/debug method choice)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`rpc`})}),_jsx(_components.td,{children:`Explicit validation/finality overrides, merged over the preset`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`method`})}),_jsx(_components.td,{children:`Explicit trace/stateDiff method overrides, merged over the preset`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`capacity`})}),_jsx(_components.td,{children:`Max concurrent requests`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`rateLimit`})}),_jsx(_components.td,{children:`Requests per second cap`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`strideSize`})}),_jsx(_components.td,{children:`Blocks per ingestion stride`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`strideConcurrency`})}),_jsx(_components.td,{children:`Concurrent strides`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`network-presets`,children:`Network presets`}),`\n`,_jsxs(_components.p,{children:[`Setting `,_jsx(_components.code,{children:`network`}),` to a known slug (or its chainId) enables block validation and selects the right\ntrace/debug methods for that chain, so the produced dataset matches what the Portal serves:`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`ethereum-mainnet`}),`, `,_jsx(_components.code,{children:`optimism-mainnet`}),`, `,_jsx(_components.code,{children:`base-mainnet`}),`, `,_jsx(_components.code,{children:`arbitrum-one`}),`, `,_jsx(_components.code,{children:`gnosis-mainnet`}),`,\n`,_jsx(_components.code,{children:`polygon-mainnet`}),`, `,_jsx(_components.code,{children:`cronos-mainnet`})]}),`\n`,_jsx(_components.p,{children:`Known slugs are offered in TypeScript autocomplete. Any other slug or chainId is accepted but runs\nwithout a preset.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`With no matching preset and no explicit `,_jsx(_components.code,{children:`rpc`}),`/`,_jsx(_components.code,{children:`method`}),` overrides, block validation is disabled and\n`,_jsx(_components.strong,{children:`dataset parity with the Portal is not guaranteed`}),` — the source logs a warning at build time.\nSupplying your own `,_jsx(_components.code,{children:`rpc`}),`/`,_jsx(_components.code,{children:`method`}),` overrides counts as taking ownership of the per-chain\nconfiguration and silences the warning.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`query-methods`,children:`Query methods`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`setFields`}),`, `,_jsx(_components.code,{children:`setBlockRange`}),`, `,_jsx(_components.code,{children:`addLog`}),`, `,_jsx(_components.code,{children:`addTransaction`}),`, `,_jsx(_components.code,{children:`addTrace`}),`, `,_jsx(_components.code,{children:`addStateDiff`}),`,\n`,_jsx(_components.code,{children:`includeAllBlocks`}),`, and `,_jsx(_components.code,{children:`addQuery`}),` behave exactly as on the Portal builder — see the\n`,_jsx(_components.a,{href:`/en/sdk/squid-sdk/evm/reference/evm-stream`,children:`EVM Portal stream reference`}),` for the full query surface.`]}),`\n`,_jsx(Heading,{level:`2`,id:`build`,children:_jsx(_components.code,{children:`build()`})}),`\n`,_jsxs(_components.p,{children:[`Returns an EVM data source with the standard interface (`,_jsx(_components.code,{children:`getHead`}),`, `,_jsx(_components.code,{children:`getFinalizedHead`}),`,\n`,_jsx(_components.code,{children:`getStream`}),`, `,_jsx(_components.code,{children:`getFinalizedStream`}),`). Pass it to `,_jsxs(_components.a,{href:`/en/sdk/squid-sdk/evm/reference/batch-processor`,children:[_jsx(_components.code,{children:`run()`}),` or `,_jsx(_components.code,{children:`Processor`})]}),`, use it\nas a downstream source of an `,_jsx(_components.a,{href:`/en/sdk/squid-sdk/evm/reference/evm-fallback`,children:`EVM fallback`}),`, or consume the stream directly.\nThrows if `,_jsx(_components.code,{children:`setRpc(...)`}),` was not called.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"EVM RPC data source","sidebarTitle":"EVM RPC source","description":"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.","keywords":["EvmRpcDataSourceBuilder","JSON-RPC","@subsquid/squid-sdk","network presets","dataset parity"],"href":"/en/sdk/squid-sdk/evm/reference/evm-rpc-stream"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Install","slug":"install","depth":2,"children":[]},{"title":"Complete example","slug":"complete-example","depth":2,"children":[]},{"title":"setRpc(options)","slug":"setrpcoptions","depth":2,"children":[]},{"title":"Network presets","slug":"network-presets","depth":2,"children":[]},{"title":"Query methods","slug":"query-methods","depth":2,"children":[]},{"title":"build()","slug":"build","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/sqd-2119b3c3/b07d1838ac35ff9a/safari-toolbar.js"],"subdomain":"sqd-2119b3c3","siteName":"SQD Documentation","title":"EVM RPC data source - SQD Documentation","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[{"_id":"6a71b13684ea1ad2a62a5407","deploymentId":"6808b07179034f1572602b7f","questionText":"How do I add logs to track?","status":"active","generatedBy":"contextual","path":"en/sdk/squid-sdk/evm/reference/evm-rpc-stream","createdAt":"2026-08-04T09:30:30.718Z","updatedAt":"2026-08-04T09:30:30.718Z","__v":0},{"_id":"6a71b13684ea1ad2a62a5406","deploymentId":"6808b07179034f1572602b7f","questionText":"What fields can I query?","status":"active","generatedBy":"contextual","path":"en/sdk/squid-sdk/evm/reference/evm-rpc-stream","createdAt":"2026-08-04T09:30:30.718Z","updatedAt":"2026-08-04T09:30:30.718Z","__v":0},{"_id":"6a71b13684ea1ad2a62a5405","deploymentId":"6808b07179034f1572602b7f","questionText":"How do I set up an RPC endpoint?","status":"active","generatedBy":"contextual","path":"en/sdk/squid-sdk/evm/reference/evm-rpc-stream","createdAt":"2026-08-04T09:30:30.718Z","updatedAt":"2026-08-04T09:30:30.718Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en/sdk/squid-sdk/evm/reference/evm-rpc-stream","matchLevel":0},"es":{"href":"/es/404","matchLevel":3},"ko":{"href":"/ko/404","matchLevel":3},"de":{"href":"/de/404","matchLevel":3},"tr":{"href":"/tr/404","matchLevel":3},"fr":{"href":"/fr/404","matchLevel":3},"ru":{"href":"/ru/404","matchLevel":3},"pt-BR":{"href":"/pt-BR/404","matchLevel":3},"zh":{"href":"/zh/404","matchLevel":3},"ja":{"href":"/ja/404","matchLevel":3}}},"lastModified":"2026-07-28T17:00:59.214Z","originalFileLocation":"en/sdk/squid-sdk/evm/reference/evm-rpc-stream.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.\">\u003cmeta data-mint-head name=\"application-name\" content=\"SQD Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"EVM RPC data source - SQD Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"SQD Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sqd-2119b3c3.mintlify.app/_mintlify/api/og/v2?division=Data+sources\u0026amp;title=EVM+RPC+data+source\u0026amp;description=Index+EVM+data+straight+from+a+JSON-RPC+endpoint+with+EvmRpcDataSourceBuilder.\u0026amp;theme=fdcf458c8520acc4daeceafb\u0026amp;signature=34b6d222970dbaf2b1139591675786a8ba19b2daee7e5c3d7cfe07bcbc43776e\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"EVM RPC data source - SQD Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sqd-2119b3c3.mintlify.app/_mintlify/api/og/v2?division=Data+sources\u0026amp;title=EVM+RPC+data+source\u0026amp;description=Index+EVM+data+straight+from+a+JSON-RPC+endpoint+with+EvmRpcDataSourceBuilder.\u0026amp;theme=fdcf458c8520acc4daeceafb\u0026amp;signature=34b6d222970dbaf2b1139591675786a8ba19b2daee7e5c3d7cfe07bcbc43776e\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/sqd-2119b3c3/L5OEwqNuR6-cqo9-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"SQD Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4f46e5\">\u003cmeta data-mint-head name=\"msvalidate.01\" content=\"570E8FF88EEAEACE2E2C262AF96E35F3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/sdk/squid-sdk/evm/reference/evm-rpc-stream.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://sqd.dev/#organization\",\"name\":\"SQD\",\"legalName\":\"Subsquid Labs GmbH\",\"url\":\"https://sqd.dev/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://sqd.dev/brand/Symbol_bl-bg.svg\"},\"sameAs\":[\"https://github.com/subsquid\",\"https://www.x.com/hellosqd\",\"https://t.me/subsquid\",\"https://www.youtube.com/@subsquid\",\"https://www.linkedin.com/company/subsquid\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.sqd.dev#website\",\"name\":\"SQD Documentation\",\"url\":\"https://docs.sqd.dev\",\"publisher\":{\"@id\":\"https://sqd.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream#webpage\",\"url\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream\",\"name\":\"EVM RPC data source\",\"description\":\"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.\",\"dateModified\":\"2026-07-28T17:00:59.214Z\",\"isPartOf\":{\"@id\":\"https://docs.sqd.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Squid SDK\",\"item\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reference\",\"item\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/packages-overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Data sources\",\"item\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/batch-processor\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"EVM RPC data source\",\"item\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream#article\",\"headline\":\"EVM RPC data source\",\"name\":\"EVM RPC data source\",\"description\":\"Index EVM data straight from a JSON-RPC endpoint with EvmRpcDataSourceBuilder.\",\"url\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sqd.dev/en/sdk/squid-sdk/evm/reference/evm-rpc-stream#webpage\"},\"dateModified\":\"2026-07-28T17:00:59.214Z\",\"keywords\":\"EvmRpcDataSourceBuilder, JSON-RPC, @subsquid/squid-sdk, network presets, dataset parity\",\"publisher\":{\"@id\":\"https://sqd.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.sqd.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"SQD Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"SQD Documentation","nav":{"global":{"anchors":[{"anchor":"Announcements","icon":"megaphone","href":"/announcements"},{"anchor":"Changelog","icon":"list","href":"/changelog"}]},"languages":[{"language":"en","tabs":[{"tab":"Getting Started","icon":"house","pages":[{"title":"Getting Started","href":"/en/home"}]},{"tab":"All Networks","hidden":true,"pages":[{"title":"All Networks","href":"/en/data/all-networks"}]},{"tab":"Build","icon":"code","menu":[{"item":"EVM","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/ethereum-color.svg","description":"Ethereum and EVM compatible chains","groups":[{"group":"Overview","pages":[{"title":"Build with SQD","sidebarTitle":"Overview","mode":"wide","href":"/en/sdk/overview"},{"title":"Choosing your tool","sidebarTitle":"Choosing a Tool","href":"/en/sdk/options-comparison"},{"title":"SQD vs The Graph","href":"/en/sdk/subsquid-vs-thegraph"},{"title":"Getting started with Portal","mode":"wide","href":"/en/portal/migration"}]},{"group":"Pipes SDK","icon":"text-align-start","tag":"1.0.0-beta.11","pages":[{"title":"Quickstart","href":"/en/sdk/pipes-sdk/evm/quickstart"},{"title":"Why Pipes SDK?","href":"/en/sdk/pipes-sdk/evm/why-pipes-sdk"},{"title":"Migrate to 1.0","sidebarTitle":"Migrating to 1.0","href":"/en/sdk/pipes-sdk/evm/migration"},{"group":"Guides","pages":[{"group":"Basic development","pages":[{"title":"Pipe anatomy","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/anatomy"},{"title":"Developing pipes","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/flow"},{"title":"Handling contract events","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/handling-events"},{"title":"Running bare bones","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/running-bare-bones"},{"title":"Pipes UI","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/pipes-ui"},{"title":"Testing pipes","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/testing"},{"title":"Dev runner","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/dev-runner"},{"group":"Configuring targets","pages":[{"title":"Postgres via Drizzle","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/targets/postgres-drizzle"},{"title":"ClickHouse","href":"/en/sdk/pipes-sdk/evm/guides/basic-development/targets/clickhouse"}]}]},{"group":"Advanced topics","pages":[{"title":"Factory transformers","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/factory-transformers"},{"title":"Stateful transforms","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/stateful-transforms"},{"title":"Logging","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/logging"},{"title":"Metrics","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/metrics"},{"title":"Profiling","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/profiling"},{"title":"OpenTelemetry tracing","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/tracing"},{"title":"Data freshness monitoring","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/latency-monitoring"},{"title":"Railway deployment","href":"/en/sdk/pipes-sdk/evm/guides/advanced-topics/railway-deployment"}]},{"group":"Architecture deep dives","pages":[{"title":"Cursor management","href":"/en/sdk/pipes-sdk/evm/guides/architecture-deep-dives/cursor-management"},{"title":"Fork handling","href":"/en/sdk/pipes-sdk/evm/guides/architecture-deep-dives/fork-handling"}]}]},{"group":"Reference","pages":[{"group":"Basic components","pages":[{"title":"Portal stream","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/source"},{"title":"Query builder","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/query-builder"},{"title":"Transformer","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/transformer"},{"group":"Target","pages":[{"title":"createTarget","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/target/create-target"},{"title":"drizzleTarget","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/target/postgres-drizzle"},{"title":"clickhouseTarget","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/target/clickhouse"},{"title":"bigqueryTarget","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/target/bigquery"},{"title":"parquetTarget","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/target/parquet"},{"title":"pubsubTarget","href":"/en/sdk/pipes-sdk/evm/reference/basic-components/target/pubsub"}]}]},{"group":"Utility components","pages":[{"title":"evmEventDecoder","href":"/en/sdk/pipes-sdk/evm/reference/utility-components/evm-decoder"},{"title":"contractFactory","href":"/en/sdk/pipes-sdk/evm/reference/utility-components/factory"},{"title":"portalSqliteCache","href":"/en/sdk/pipes-sdk/evm/reference/utility-components/sqlite-cache"},{"title":"metricsServer","href":"/en/sdk/pipes-sdk/evm/reference/utility-components/metrics-server"},{"title":"evmRpcLatencyWatcher","href":"/en/sdk/pipes-sdk/evm/reference/utility-components/evm-rpc-latency-watcher"}]},{"title":"Error reference","href":"/en/sdk/pipes-sdk/reference/errors"}]}]},{"group":"Squid SDK","pages":[{"title":"Quickstart","mode":"wide","href":"/en/sdk/squid-sdk/evm/quickstart"},{"title":"Design","sidebarTitle":"Design","href":"/en/sdk/squid-sdk/evm/design"},{"title":"How it works","sidebarTitle":"How it works","href":"/en/sdk/squid-sdk/evm/how-it-works"},{"title":"FAQ","href":"/en/sdk/squid-sdk/evm/faq"},{"group":"Guides","pages":[{"title":"Make an indexer","href":"/en/sdk/squid-sdk/evm/guides/make-an-indexer"},{"title":"Writing to Postgres","href":"/en/sdk/squid-sdk/evm/guides/writing-to-postgres"},{"title":"Serving GraphQL","href":"/en/sdk/squid-sdk/evm/guides/serving-graphql"},{"title":"Other data destinations","href":"/en/sdk/squid-sdk/evm/guides/other-data-destinations"},{"title":"Best practices","href":"/en/sdk/squid-sdk/evm/guides/best-practices"},{"group":"Migration","pages":[{"title":"Migrate a squid to Portal","sidebarTitle":"Migrate to Portal","mode":"wide","href":"/en/sdk/squid-sdk/evm/guides/migration/gateway-to-portal"},{"title":"How to use your dedicated Portal with a key","sidebarTitle":"Dedicated Portal key","href":"/en/sdk/squid-sdk/evm/guides/migration/portal-api-key"},{"title":"Add an API key for legacy gateways","sidebarTitle":"Gateway API key","href":"/en/sdk/squid-sdk/evm/guides/migration/gateway-api-key"},{"title":"Migrate from The Graph","href":"/en/sdk/squid-sdk/evm/guides/migration/migrate-from-thegraph"},{"title":"hasura-configuration tool v2","href":"/en/sdk/squid-sdk/evm/guides/migration/migrate-to-hasura-v2"}]},{"group":"Advanced","pages":[{"title":"Batch Processing","href":"/en/sdk/squid-sdk/evm/guides/advanced/batch-processing"},{"title":"Unfinalized blocks and reorgs","href":"/en/sdk/squid-sdk/evm/guides/advanced/unfinalized-blocks"},{"title":"Squid SDK tips and troubleshooting","sidebarTitle":"Tips and troubleshooting","href":"/en/sdk/squid-sdk/evm/guides/advanced/tips-and-troubleshooting"},{"title":"High availability","sidebarTitle":"High availability","href":"/en/sdk/squid-sdk/evm/guides/advanced/high-availability"},{"title":"Development Environment Setup","href":"/en/sdk/squid-sdk/evm/guides/advanced/development-environment-setup"},{"title":"CLI Cheatsheet","href":"/en/sdk/squid-sdk/evm/guides/advanced/cli-cheatsheet"},{"title":"Proxy contracts","href":"/en/sdk/squid-sdk/evm/guides/advanced/proxy-contracts"},{"title":"Factory Contracts","href":"/en/sdk/squid-sdk/evm/guides/advanced/factory-contracts"},{"title":"Multichain Indexing","href":"/en/sdk/squid-sdk/evm/guides/advanced/multichain-indexing"},{"title":"External APIs and IPFS","href":"/en/sdk/squid-sdk/evm/guides/advanced/external-apis-ipfs"}]}]},{"group":"Examples \u0026 tutorials","pages":[{"title":"Build an Indexer from Scratch","href":"/en/sdk/squid-sdk/evm/examples-tutorials/build-indexer-from-scratch"},{"group":"BAYC tutorial","pages":[{"title":"Step 1: Transfer events","href":"/en/sdk/squid-sdk/evm/examples-tutorials/bayc/step-one-indexing-transfers"},{"title":"Step 2: Owners \u0026 tokens","href":"/en/sdk/squid-sdk/evm/examples-tutorials/bayc/step-two-deriving-owners-and-tokens"},{"title":"Step 3: External data","href":"/en/sdk/squid-sdk/evm/examples-tutorials/bayc/step-three-adding-external-data"},{"title":"Step 4: Optimization","href":"/en/sdk/squid-sdk/evm/examples-tutorials/bayc/step-four-optimizations"}]},{"title":"Processor in action","href":"/en/sdk/squid-sdk/evm/examples-tutorials/batch-processor-in-action"},{"title":"Use with Ganache or Hardhat","href":"/en/sdk/squid-sdk/evm/examples-tutorials/use-with-ganache-hardhat"},{"title":"Index to local CSV files","href":"/en/sdk/squid-sdk/evm/examples-tutorials/file-csv"},{"title":"Index to Parquet files","href":"/en/sdk/squid-sdk/evm/examples-tutorials/file-parquet"},{"title":"Automatically generate an indexer","href":"/en/sdk/squid-sdk/evm/examples-tutorials/auto-generate-indexer"},{"title":"EVM Examples","sidebarTitle":"Examples","href":"/en/sdk/squid-sdk/evm/examples-tutorials/examples-widget"}]},{"group":"Reference","pages":[{"title":"Packages overview","sidebarTitle":"Packages overview","href":"/en/sdk/squid-sdk/evm/reference/packages-overview"},{"title":"Project Structure","href":"/en/sdk/squid-sdk/evm/reference/project-structure"},{"group":"Data sources","pages":[{"title":"Portal batch processor","sidebarTitle":"Portal batch processor","href":"/en/sdk/squid-sdk/evm/reference/batch-processor"},{"group":"EVM Portal stream","pages":[{"title":"EVM Portal stream","sidebarTitle":"EVM Portal stream","href":"/en/sdk/squid-sdk/evm/reference/evm-stream"},{"title":"Event logs","sidebarTitle":"Event logs","href":"/en/sdk/squid-sdk/evm/reference/evm-stream/logs"},{"title":"EVM transactions","sidebarTitle":"Transactions","href":"/en/sdk/squid-sdk/evm/reference/evm-stream/transactions"},{"title":"Traces","sidebarTitle":"Traces","href":"/en/sdk/squid-sdk/evm/reference/evm-stream/traces"},{"title":"Storage state diffs","sidebarTitle":"State diffs","href":"/en/sdk/squid-sdk/evm/reference/evm-stream/state-diffs"},{"title":"Field selection","sidebarTitle":"Field selection","href":"/en/sdk/squid-sdk/evm/reference/evm-stream/field-selection"},{"title":"Block data for EVM","sidebarTitle":"Block data","description":"Block data interfaces for EVM: the batch handler context and the Block item iterables.","href":"/en/sdk/squid-sdk/evm/reference/evm-stream/context-interfaces"}]},{"title":"EVM RPC data source","sidebarTitle":"EVM RPC source","href":"/en/sdk/squid-sdk/evm/reference/evm-rpc-stream"},{"title":"EVM fallback data source","sidebarTitle":"EVM fallback source","description":"Automatic failover between EVM data sources with EvmFallbackDataSourceBuilder.","href":"/en/sdk/squid-sdk/evm/reference/evm-fallback"}]},{"group":"Data stores","pages":[{"title":"Store interface","href":"/en/sdk/squid-sdk/evm/reference/data-stores/store-interface"},{"title":"TypeORM Store","href":"/en/sdk/squid-sdk/evm/reference/data-stores/typeorm-store"},{"title":"BigQuery Store","href":"/en/sdk/squid-sdk/evm/reference/data-stores/bigquery-store"},{"group":"File store","pages":[{"title":"file-store-* packages","href":"/en/sdk/squid-sdk/evm/reference/data-stores/file-store"},{"title":"CSV support","href":"/en/sdk/squid-sdk/evm/reference/data-stores/file-store/csv"},{"title":"JSON support","href":"/en/sdk/squid-sdk/evm/reference/data-stores/file-store/json"},{"title":"Parquet support","href":"/en/sdk/squid-sdk/evm/reference/data-stores/file-store/parquet"},{"title":"S3 support","href":"/en/sdk/squid-sdk/evm/reference/data-stores/file-store/s3-dest"}]}]},{"group":"Schema files","pages":[{"title":"Schema file and codegen","href":"/en/sdk/squid-sdk/evm/reference/schema-files/schema-files-codegen"},{"title":"Entities","href":"/en/sdk/squid-sdk/evm/reference/schema-files/entities"},{"title":"Entity relations","href":"/en/sdk/squid-sdk/evm/reference/schema-files/entity-relations"},{"title":"Indexes and constraints","href":"/en/sdk/squid-sdk/evm/reference/schema-files/indexes-constraints"},{"title":"Interfaces","href":"/en/sdk/squid-sdk/evm/reference/schema-files/interfaces"},{"title":"Unions and typed JSON","href":"/en/sdk/squid-sdk/evm/reference/schema-files/unions-typed-json"}]},{"title":"TypeORM model generation","href":"/en/sdk/squid-sdk/evm/reference/typeorm-codegen"},{"title":"TypeORM migration generation","href":"/en/sdk/squid-sdk/evm/reference/typeorm-migration"},{"group":"EVM typegen","pages":[{"title":"Generating utility modules","href":"/en/sdk/squid-sdk/evm/reference/evm-typegen/generating-utility-modules"},{"title":"Data decoding","href":"/en/sdk/squid-sdk/evm/reference/evm-typegen/data-decoding"},{"title":"Direct RPC queries","href":"/en/sdk/squid-sdk/evm/reference/evm-typegen/direct-rpc-queries"}]},{"group":"OpenReader","pages":[{"title":"OpenReader Overview","href":"/en/sdk/squid-sdk/evm/reference/openreader/overview"},{"group":"API reference","pages":[{"title":"Core API Introduction","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/intro"},{"title":"Entity Queries","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/queries"},{"title":"AND/OR Filters","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/and-or-filters"},{"title":"Sorting","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/sorting"},{"title":"Pagination","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/paginate-query-results"},{"title":"Nested Field Queries","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/nested-field-queries"},{"title":"Cross-relation Queries","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/cross-relation-field-queries"},{"title":"JSON Queries","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/json-queries"},{"title":"Union Type Resolution","href":"/en/sdk/squid-sdk/evm/reference/openreader/api/resolve-union-types-interfaces"}]},{"group":"Server configuration","pages":[{"title":"Custom Resolvers","href":"/en/sdk/squid-sdk/evm/reference/openreader/configuration/custom-resolvers"},{"title":"Authorization","href":"/en/sdk/squid-sdk/evm/reference/openreader/configuration/authorization"},{"title":"Caching","href":"/en/sdk/squid-sdk/evm/reference/openreader/configuration/caching"},{"title":"Subscriptions","href":"/en/sdk/squid-sdk/evm/reference/openreader/configuration/subscriptions"},{"title":"DoS Protection","href":"/en/sdk/squid-sdk/evm/reference/openreader/configuration/dos-protection"}]}]},{"title":"Hasura configuration tool","href":"/en/sdk/squid-sdk/evm/reference/hasura-configuration"},{"title":"Creating a squid project","sidebarTitle":"Create a squid","href":"/en/sdk/squid-sdk/evm/reference/create-squid"},{"title":"Squid SDK Logger","sidebarTitle":"Logger","href":"/en/sdk/squid-sdk/evm/reference/logger"}]}]},{"group":"Alternative clients","pages":[{"group":"Ponder","tag":"0.17.8","expanded":true,"pages":[{"title":"Use Portal with Ponder","sidebarTitle":"Overview","href":"/en/sdk/alternative-clients/ponder"},{"title":"Run the Ponder and Portal example","sidebarTitle":"Quickstart","href":"/en/sdk/alternative-clients/ponder/quickstart"},{"title":"Migrate a Ponder app to Portal","sidebarTitle":"Migrate an app","href":"/en/sdk/alternative-clients/ponder/guides/migrate"},{"title":"Ponder and Portal examples","sidebarTitle":"Examples","href":"/en/sdk/alternative-clients/ponder/examples"},{"title":"Configure Ponder with Portal","sidebarTitle":"Configuration","href":"/en/sdk/alternative-clients/ponder/configuration"},{"title":"Ponder benchmarks and validation","sidebarTitle":"Benchmarks and validation","href":"/en/sdk/alternative-clients/ponder/benchmarks-and-validation"}]},{"title":"sqd-go","tag":"Community","href":"/en/sdk/alternative-clients/sqd-go"},{"title":"DipDup","href":"/en/sdk/alternative-clients/dipdup"},{"title":"SQD Firehose","href":"/en/sdk/alternative-clients/subgraphs-support"},{"title":"ApeWorx plugin","href":"/en/sdk/alternative-clients/apeworx"}]}]},{"item":"Solana","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/sol.png","description":"Solana and SVM compatible chains","pages":[{"title":"Solana","href":"/en/sdk/pipes-sdk/solana/quickstart"}]},{"item":"Hyperliquid","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/hyperliquid-color.svg","description":"HyperCore trade executions","pages":[{"title":"Hyperliquid","href":"/en/sdk/pipes-sdk/hyperliquid/quickstart"}]},{"item":"Bitcoin","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/btc.png","description":"Bitcoin block and UTXO indexing","pages":[{"title":"Bitcoin","href":"/en/sdk/pipes-sdk/bitcoin/quickstart"}]},{"item":"Tron","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/tron.png","description":"Tron network indexing","pages":[{"title":"Tron","href":"/en/sdk/pipes-sdk/tron/quickstart"}]},{"item":"Substrate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/polkadot-color.svg","description":"Polkadot and other Substrate-based chains","pages":[{"title":"Substrate","href":"/en/sdk/squid-sdk/substrate/quickstart"}]}]},{"tab":"Deploy","icon":"cloud","pages":[{"title":"Deploy","href":"/en/cloud/overview"}]},{"tab":"Participate","icon":"network","pages":[{"title":"Participate","href":"/en/network/overview"}]},{"tab":"Networks \u0026 Schemas","icon":"database","menu":[{"item":"EVM Data","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/ethereum-color.svg","description":"Ethereum and EVM-compatible chains","pages":[{"title":"EVM Data","href":"/en/data/evm"}]},{"item":"Solana Data","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/sol.png","description":"Solana and SVM-compatible chains","pages":[{"title":"Solana Data","href":"/en/data/solana"}]},{"item":"Hyperliquid Data","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/hyperliquid-color.svg","description":"HyperCore and HyperEVM data","pages":[{"title":"Hyperliquid Data","href":"/en/api/hyperliquid-fills/metadata"}]},{"item":"Bitcoin Data","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/btc.png","description":"Bitcoin block and transaction data","pages":[{"title":"Bitcoin Data","href":"/en/api/bitcoin/metadata"}]},{"item":"Tron Data","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/tron.png","description":"Tron network data","pages":[{"title":"Tron Data","href":"/en/api/tron/metadata"}]},{"item":"Substrate Data","icon":"https://mintlify.s3.us-west-1.amazonaws.com/sqd-2119b3c3/images/chains/polkadot-color.svg","description":"Polkadot and Substrate-based chains","pages":[{"title":"Substrate Data","href":"/en/data/substrate"}]}],"pages":[{"title":"Networks \u0026 Schemas","href":"/en/data/evm"}]},{"tab":"Learn","icon":"book","pages":[{"title":"Learn","href":"/en/other/glossary/glossary"}]},{"tab":"AI","icon":"grip","pages":[{"title":"AI","href":"/en/ai/ai-development"}]}]},{"language":"es","pages":[{"title":"es","href":"/es/404"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/404"}]},{"language":"de","pages":[{"title":"de","href":"/de/404"}]},{"language":"tr","pages":[{"title":"tr","href":"/tr/404"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/404"}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/404"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-BR/404"}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/404"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/404"}]}]},"basePath":"","title":"EVM RPC data source - SQD Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}