{"templateId":"markdown","versions":[{"version":"v1.43","label":"v1.43 LTS","link":"/pt-br/products/custody/overview/architecture/unified-indexer-service","default":true,"active":true,"folderId":"714bb270"},{"version":"v1.42","label":"v1.42 STS","link":"/pt-br/products/custody/v1.42/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"714bb270"},{"version":"v1.41","label":"v1.41 STS","link":"/pt-br/products/custody/v1.41/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"714bb270"},{"version":"v1.34","label":"v1.34 LTS","link":"/pt-br/products/custody/v1.34/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"714bb270"},{"version":"v1.26","label":"v1.26 LTS","link":"/pt-br/products/custody/v1.26/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"714bb270"},{"version":"v1.19","label":"v1.19 LTS","link":"/pt-br/products/custody/v1.19/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"714bb270"},{"version":"v1.15","label":"v1.15 LTS","link":"/pt-br/products/custody/v1.15/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"714bb270"}],"sharedDataIds":{"sidebar":"sidebar-@l10n/pt-BR/products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Unified Indexer Service","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"unified-indexer-service","__idx":0},"children":["Unified Indexer Service"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Unified Indexer Service is the blockchain indexing architecture used by ","Ripple Custody (Vault)"," for ledger-specific indexing, event processing, and ledger APIs. It has two versions: UIS v1 and its rewrite, UIS v2. UIS v2 runs one indexer for each network, plus a processor, a Blockchain API, and a configuration service (Cockpit) that all networks share."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a complete and up-to-date list of which ledgers are supported, please refer to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/reference/supported-ledgers"},"children":["Supported blockchain ledgers"]}," page."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page describes UIS v2, which SaaS deployments have run since version 1.40 and on-premises deployments run starting in version 1.43. To move an on-premises deployment to UIS v2, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/support/change-history/v143#deployment-affecting-changes"},"children":["Deployment-affecting changes"]}," in the version 1.43 release notes."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-it-works","__idx":1},"children":["How it works"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["UIS v2 indexes blockchain data and exposes it to ","Ripple Custody (Vault)"," through a small set of services:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Service"},"children":["Service"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Indexer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Reads blocks from a blockchain node and records them. One indexer runs per ledger and network (for example, Solana devnet and Solana mainnet each run their own indexer), so an issue on one network does not affect the others."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Processor"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Turns indexed blocks into the transaction events consumed by ","Ripple Custody (Vault)",". Shared across all ledgers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Blockchain API"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The single interface for blockchain operations — retrieves events, checks balances, prepares and broadcasts transactions. Shared across all ledgers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Cockpit"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Holds the ledger and network configuration that UIS v2 runs against. This configuration is managed by ","Ripple Custody (Vault)","."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For on-premises deployments, each indexer connects to a blockchain node that you provision — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#on-premises-node-requirements"},"children":["On-premises node requirements"]}," below."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"supported-chains-and-indexer-types","__idx":2},"children":["Supported chains and indexer types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following table lists the chains that each indexer serves:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Indexer"},"children":["Indexer"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Chains"},"children":["Chains"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status in version 1.43"},"children":["Status in version 1.43"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Legacy indexers"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ethereum, Polygon, Avalanche C-Chain, and Binance Smart Chain (ETH Indexer); Stellar (Stellar Indexer)."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not supported. Migrate to UIS v2 — except private EVM networks whose node doesn't allow debug mode. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#private-evm-networks"},"children":["Private EVM networks"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UIS v1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/reference/supported-ledgers#ethereum-virtual-machine-evm-ledgers"},"children":["EVM ledgers"]},", Solana, Stellar, TRON, and XRPL."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not supported. Migrate to UIS v2."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UIS v2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The same chains as UIS v1, plus Canton and Sui: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/reference/supported-ledgers#ethereum-virtual-machine-evm-ledgers"},"children":["EVM ledgers"]},", Solana, Stellar, TRON, XRPL, Canton, and Sui."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required for these chains."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Chain-specific indexers"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, and Dash (NBXplorer); Cardano; Algorand; Hedera; Polkadot (Substrate Indexer); Tezos."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unchanged."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Starting in version 1.43, as part of ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/support/change-history/v140#ledger-accounting-refactor-phase-2"},"children":["ledger accounting refactor phase 2"]},", EVM, Solana, Stellar, TRON, and XRPL networks are served by UIS v2 only, except as noted in the table above. On-premises deployments migrate to UIS v2 on version 1.43."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["UIS v2 is available as follows:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Deployment type"},"children":["Deployment type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"UIS v2 available from"},"children":["UIS v2 available from"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Migration"},"children":["Migration"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SaaS"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Version 1.40"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ripple runs the migration."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["On-premises"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Version 1.43"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You run the migration. See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/operations-and-maintenance/upgrading/ledger-accounting-phase-2-migration"},"children":["Ledger accounting phase 2 migration guide"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Change for on-premises deployments in version 1.43"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Starting in version 1.43, on-premises deployments can move to UIS v2, and you run the migration yourself. EVM, Solana, Stellar, TRON, and XRPL networks that use legacy indexers or UIS v1 (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]},") need to move to UIS v2 (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis-v2\""]},"). For the prerequisites and the procedure, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/operations-and-maintenance/upgrading/ledger-accounting-phase-2-migration"},"children":["Ledger accounting phase 2 migration guide"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"on-premises-node-requirements","__idx":3},"children":["On-premises node requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For an on-premises deployment of UIS v2, you are responsible for provisioning and maintaining your own blockchain nodes. The service must be able to connect to these nodes to index transactions. The following table lists minimum node requirements for on-premises UIS v2 deployments. Check the configuration packaged with your release for release-specific changes."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Blockchain"},"children":["Blockchain"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Node type"},"children":["Node type"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Minimum version"},"children":["Minimum version"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Connection"},"children":["Connection"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Archive requirement"},"children":["Archive requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Additional details"},"children":["Additional details"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Arbitrum"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Geth compatible"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["v3.7.X"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["JSON-RPC over HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Non-Archive"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Debug mode must be enabled."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Base"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Geth compatible"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["v0.14.1"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["JSON-RPC over HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Non-Archive"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Debug mode must be enabled."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ethereum"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Geth"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["v1.16.4"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["JSON-RPC over HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Archive (Required)"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Debug APIs must be enabled. High request volume (~1.2k - 300k/hour)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Optimism"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Geth compatible"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["v1.101511"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["JSON-RPC over HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Non-Archive"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Debug mode must be enabled."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Polygon"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Geth compatible"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["v1.16.4"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["JSON-RPC over HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Archive (Required)"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Debug mode must be enabled."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solana"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Agave"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["mainnet 2.3.10 / devnet 3.0.0"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["JSON-RPC over HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Archive Recommended"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Estimated request volume is ~9000/hour. No debug mode needed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Stellar"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Horizon"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["v23.0.0"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Archive (Preferred)"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Requires ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["application/x-www-form-urlencoded"]}," content-type for broadcasting transactions."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["TRON"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["FullNode"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["v4.8.0"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["RPC over HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Archive (Preferred)"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Estimated request volume is ~150k/day."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["XRPL"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["FullNode"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["2.6.X"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Archive Recommended"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Request volume is not based on tracked accounts."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"private-evm-networks","__idx":4},"children":["Private EVM networks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["UIS v2 reads each EVM block in debug mode (with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug_traceBlockByHash"]}," method). If the node of a private EVM network (for example, a Besu node) allows debug mode, configure the network with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis-v2\""]}," like any other EVM network. If the node requires a login, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#node-authentication"},"children":["Node authentication"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Nodes without debug mode"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the node of a private EVM network doesn't allow debug mode, UIS v2 can't index the network. Keep the network on the legacy Ethereum indexer."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In either case, contact your Customer Partner Engineer (CPE) or Ripple Support before you configure a private EVM network or plan its migration."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"configuration","__idx":5},"children":["Configuration"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"saas-deployments","__idx":6},"children":["SaaS deployments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For SaaS deployments, Ripple runs UIS v2 for supported chains, and Ripple runs the migration to UIS v2."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"on-premises-deployments","__idx":7},"children":["On-premises deployments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For on-premises deployments, configure each EVM, Solana, Stellar, TRON, and XRPL network in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ledger-accounting"]}," values with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis-v2\""]},", and set the URL of the node that you provisioned under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["indexer.values.node"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"ledgers:\n  <chain>:\n    networks:\n      - name: <network>\n        type: \"uis-v2\"\n        indexer:\n          values:\n            node:\n              url: \"https://<your-node-url>\"\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keep your existing chain keys and network names, and change only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a network uses ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["raw_config"]},", also declare ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ledger.<name>.indexer-network-name"]}," in it. For other networks, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ledger-accounting"]}," chart generates this value automatically. Without it, chart rendering fails, and the error message shows the exact line to add."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To move an existing deployment to UIS v2, follow the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/pt-br/products/custody/operations-and-maintenance/upgrading/ledger-accounting-phase-2-migration"},"children":["Ledger accounting phase 2 migration guide"]},". For any questions about the deployment process, contact your Customer Partner Engineer (CPE) or the Support team."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"node-authentication","__idx":8},"children":["Node authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a blockchain node requires a login, add an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authentication"]}," block next to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["node.url"]},". It takes either a static ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["header"]}," or a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customJwt"]}," token fetched from a token server:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"ledgers:\n  <chain>:\n    networks:\n      - name: <network>\n        type: \"uis-v2\"\n        indexer:\n          values:\n            node:\n              url: \"https://<private-node>\"\n              authentication:\n                # A static header. For Basic authentication, use the key Authorization\n                # and the value \"Basic <base64 of user:password>\".\n                header:\n                  key: x-api-key\n                  value: <api-key>\n                # Or a token fetched from a token server:\n                # customJwt:\n                #   tokenUrl: https://<token-server>/token\n                #   apiKeyHeader: x-api-key\n                #   apiKeyValue: <api-key>\n                #   requestBody:           # optional\n                #     signature: <signature>\n                #   tokenJsonPath: data    # optional; the reply field that holds the token (default: data)\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When at least one network has an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authentication"]}," block, the chart deploys a node gateway (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uis-v2-node-gateway"]},") with a Service and a Secret. The gateway adds the login to each call and forwards it to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["node.url"]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Networks without an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authentication"]}," block call their node directly. If no network has one, the chart doesn't deploy the gateway."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authentication"]}," accepts only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["header"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customJwt"]},". Any other key fails the installation. OAuth2 isn't supported."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Credentials (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["header.value"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customJwt.apiKeyValue"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customJwt.requestBody"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["httpProxy.password"]},") are stored in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uis-v2-node-gateway"]}," Secret, so the pod specification shows only the Secret name."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If your nodes are reachable only through an outbound proxy, set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nodeGateway.httpProxy"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]},", and optionally ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["username"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["password"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["noProxy"]},"). The gateway doesn't send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customJwt"]}," token requests through the proxy, so the token server must be reachable directly."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The gateway runs at least two replicas (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nodeGateway.replicas"]},"), and a PodDisruptionBudget keeps one gateway pod running during node drains."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To allow only the UIS v2 pods of the release to call the gateway, set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nodeGateway.networkPolicy.enabled"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},". This setting takes effect only if your cluster's network plugin enforces NetworkPolicy."]}]}]},"headings":[{"value":"Unified Indexer Service","id":"unified-indexer-service","depth":1},{"value":"How it works","id":"how-it-works","depth":2},{"value":"Supported chains and indexer types","id":"supported-chains-and-indexer-types","depth":2},{"value":"On-premises node requirements","id":"on-premises-node-requirements","depth":2},{"value":"Private EVM networks","id":"private-evm-networks","depth":3},{"value":"Configuration","id":"configuration","depth":2},{"value":"SaaS deployments","id":"saas-deployments","depth":3},{"value":"On-premises deployments","id":"on-premises-deployments","depth":3},{"value":"Node authentication","id":"node-authentication","depth":3}],"frontmatter":{"seo":{"title":"Unified Indexer Service"}},"lastModified":"2026-10-26T19:04:48.000Z","isTranslationFallback":true,"pagePropGetterError":{"message":"","name":""}},"slug":"/pt-br/products/custody/overview/architecture/unified-indexer-service","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}