{"templateId":"markdown","versions":[{"version":"v1.39","label":"v1.39 STS","link":"/products/custody/overview/architecture/unified-indexer-service","default":true,"active":true,"folderId":"c15a2701"},{"version":"v1.38","label":"v1.38 STS","link":"/products/custody/v1.38/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/overview/architecture/unified-indexer-service","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-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","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"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 (UIS) is the blockchain indexing architecture used by ","Ripple Custody"," for ledger-specific indexing, event processing, and ledger APIs. UIS uses a decomposed, chain-specific adapter architecture with isolated ledger and network components."]},{"$$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":"/products/custody/reference/supported-ledgers"},"children":["Supported blockchain ledgers"]}," page."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["UIS is available for SaaS deployments and for on-premises deployments from v1.26. If you are migrating an on-premises deployment from legacy indexers to UIS, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/operations-and-maintenance/upgrading/unified-indexer-service-migration"},"children":["UIS on-premises migration guide"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"architecture","__idx":1},"children":["Architecture"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following diagram shows how UIS components fetch blockchain data, normalize it, and expose indexed events to internal consumers such as Ledger Accounting."]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"flowchart LR\n    subgraph OnPrem[\"On-prem\"]\n        direction LR\n        LA[\"Ledger Accounting\"]\n        APIGW[\"API GW\"]\n        EventsAPI[\"Events API\"]\n        EventsDB[(\"Events DB\")]\n\n        subgraph Unified[\"Unified Indexers\"]\n            direction LR\n            Processor[\"Processor\"]\n            IndexerDB[(\"Indexer DB\")]\n            GenericIndexer[\"Generic Indexer\"]\n        end\n\n        subgraph LedgerServices[\"Ledger services\"]\n            direction TB\n            LedgerAPI[\"Ledger API<br/>(XRPL API)\"]\n            Adapter[\"Ledger Adapter<br/>(XRPL Adapter)<br/>xrpl-mainnet<br/>xrpl-testnet\"]\n        end\n\n        XRPL[\"XRPL\"]\n    end\n\n    LA --> APIGW\n    APIGW --> EventsAPI\n    EventsAPI --> EventsDB\n    Processor --> IndexerDB\n    GenericIndexer --> IndexerDB\n    Processor --> EventsDB\n    GenericIndexer --> Adapter\n    Adapter --> XRPL\n    APIGW --> LedgerAPI\n    APIGW --> Adapter\n    LedgerAPI --> XRPL\n\n    EventsDB ~~~ Processor\n    IndexerDB ~~~ GenericIndexer\n    GenericIndexer ~~~ LedgerAPI\n","diagramHtml":"<svg id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 2323.140625px;\" viewBox=\"0 0 2323.140625 343.9325866699219\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .error-icon{fill:#552222;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .error-text{fill:#552222;stroke:#552222;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-thickness-normal{stroke-width:1px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-thickness-thick{stroke-width:3.5px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-pattern-solid{stroke-dasharray:0;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .marker{fill:#333333;stroke:#333333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .marker.cross{stroke:#333333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 svg{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 p{margin:0;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .label{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;color:#333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .cluster-label text{fill:#333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .cluster-label span{color:#333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .cluster-label span p{background-color:transparent;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .label text,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 span{fill:#333;color:#333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node rect,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node circle,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node ellipse,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node polygon,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .rough-node .label text,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node .label text,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .image-shape .label,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .icon-shape .label{text-anchor:middle;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .rough-node .label,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node .label,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .image-shape .label,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .icon-shape .label{text-align:center;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node.clickable{cursor:pointer;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .arrowheadPath{fill:#333333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edgePath .path{stroke:#333333;stroke-width:1px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .flowchart-link{stroke:#333333;fill:none;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .cluster text{fill:#333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .cluster span{color:#333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 rect.text{fill:none;stroke-width:0;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .icon-shape,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .icon-shape p,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .icon-shape .label rect,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 .node .neo-node{stroke:#9370DB;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].node rect,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].cluster rect,#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(0, 0)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-OnPrem\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"2307.140625\" height=\"327.93257904052734\"></rect><g class=\"cluster-label\" transform=\"translate(1127.9140625, 8)\"><foreignObject width=\"67.3125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>On-prem</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M243.969,156L250.219,156C256.469,156,268.969,156,280.802,156C292.635,156,303.802,156,309.385,156L314.969,156\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_LA_APIGW_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_LA_APIGW_0\" data-points=\"W3sieCI6MjQzLjk2ODc1LCJ5IjoxNTZ9LHsieCI6MjgxLjQ2ODc1LCJ5IjoxNTZ9LHsieCI6MzE4Ljk2ODc1LCJ5IjoxNTZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M417.093,183L426.13,188.994C435.166,194.989,453.239,206.978,467.859,212.972C482.479,218.966,493.646,218.966,499.229,218.966L504.813,218.966\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_APIGW_EventsAPI_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_APIGW_EventsAPI_0\" data-points=\"W3sieCI6NDE3LjA5MzIwNzk5MzYzODUsInkiOjE4M30seyJ4Ijo0NzEuMzEyNSwieSI6MjE4Ljk2NjI4OTUyMDI2MzY3fSx7IngiOjUwOC44MTI1LCJ5IjoyMTguOTY2Mjg5NTIwMjYzNjd9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M646.188,218.966L652.438,218.966C658.688,218.966,671.188,218.966,683.021,218.966C694.854,218.966,706.021,218.966,711.604,218.966L717.188,218.966\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_EventsAPI_EventsDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_EventsAPI_EventsDB_0\" data-points=\"W3sieCI6NjQ2LjE4NzUsInkiOjIxOC45NjYyODk1MjAyNjM2N30seyJ4Ijo2ODMuNjg3NSwieSI6MjE4Ljk2NjI4OTUyMDI2MzY3fSx7IngiOjcyMS4xODc1LCJ5IjoyMTguOTY2Mjg5NTIwMjYzNjd9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M2105.578,101.411L2111.828,99.842C2118.078,98.274,2130.578,95.137,2144.583,99.337C2158.587,103.538,2174.096,115.075,2181.851,120.844L2189.606,126.613\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_Adapter_XRPL_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_Adapter_XRPL_0\" data-points=\"W3sieCI6MjEwNS41NzgxMjUsInkiOjEwMS40MTA4OTk3MzM0ODAzOH0seyJ4IjoyMTQzLjA3ODEyNSwieSI6OTJ9LHsieCI6MjE5Mi44MTQ5NDE0MDYyNSwieSI6MTI5fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M411.024,129L421.072,121.167C431.12,113.333,451.216,97.667,478.962,89.833C506.708,82,542.104,82,577.5,82C612.896,82,648.292,82,679.755,82C711.219,82,738.75,82,766.281,82C793.813,82,821.344,82,900.456,82C979.568,82,1110.26,82,1240.953,82C1371.646,82,1502.339,82,1573.295,83.628C1644.251,85.256,1655.47,88.511,1661.08,90.139L1666.69,91.767\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_APIGW_LedgerAPI_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_APIGW_LedgerAPI_0\" data-points=\"W3sieCI6NDExLjAyNDI4MjA5NDU5NDYsInkiOjEyOX0seyJ4Ijo0NzEuMzEyNSwieSI6ODJ9LHsieCI6NTc3LjUsInkiOjgyfSx7IngiOjY4My42ODc1LCJ5Ijo4Mn0seyJ4Ijo3NjYuMjgxMjUsInkiOjgyfSx7IngiOjg0OC44NzUsInkiOjgyfSx7IngiOjEyNDAuOTUzMTI1LCJ5Ijo4Mn0seyJ4IjoxNjMzLjAzMTI1LCJ5Ijo4Mn0seyJ4IjoxNjcwLjUzMTI1LCJ5Ijo5Mi44ODEzNTI4MTY4MzY2OH1d\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M424.778,129L432.534,124.672C440.289,120.345,455.801,111.689,481.255,107.361C506.708,103.034,542.104,103.034,577.5,103.034C612.896,103.034,648.292,103.034,679.755,103.034C711.219,103.034,738.75,103.034,766.281,103.034C793.813,103.034,821.344,103.034,900.456,103.034C979.568,103.034,1110.26,103.034,1240.953,103.034C1371.646,103.034,1502.339,103.034,1573.282,104.196C1644.226,105.359,1655.42,107.684,1661.018,108.846L1666.615,110.009\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_APIGW_Adapter_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_APIGW_Adapter_0\" data-points=\"W3sieCI6NDI0Ljc3NzgyODQxMjA3NzcsInkiOjEyOX0seyJ4Ijo0NzEuMzEyNSwieSI6MTAzLjAzMzcxMDQ3OTczNjMzfSx7IngiOjU3Ny41LCJ5IjoxMDMuMDMzNzEwNDc5NzM2MzN9LHsieCI6NjgzLjY4NzUsInkiOjEwMy4wMzM3MTA0Nzk3MzYzM30seyJ4Ijo3NjYuMjgxMjUsInkiOjEwMy4wMzM3MTA0Nzk3MzYzM30seyJ4Ijo4NDguODc1LCJ5IjoxMDMuMDMzNzEwNDc5NzM2MzN9LHsieCI6MTI0MC45NTMxMjUsInkiOjEwMy4wMzM3MTA0Nzk3MzYzM30seyJ4IjoxNjMzLjAzMTI1LCJ5IjoxMDMuMDMzNzEwNDc5NzM2MzN9LHsieCI6MTY3MC41MzEyNSwieSI6MTEwLjgyMjE1NDg1MzYzNzh9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M2105.578,237.826L2111.828,240.177C2118.078,242.528,2130.578,247.23,2146.686,238.589C2162.794,229.948,2182.51,207.963,2192.368,196.97L2202.226,185.978\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_LedgerAPI_XRPL_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_LedgerAPI_XRPL_0\" data-points=\"W3sieCI6MjEwNS41NzgxMjUsInkiOjIzNy44MjYxNDMzNzYwODA3Mn0seyJ4IjoyMTQzLjA3ODEyNSwieSI6MjUxLjkzMjU3OTA0MDUyNzM0fSx7IngiOjIyMDQuODk2MDgwOTAwODMxNywieSI6MTgzfV0=\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M886.375,257.823L880.125,258.508C873.875,259.193,861.375,260.563,849.466,258.304C837.558,256.045,826.241,250.158,820.582,247.214L814.924,244.271\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_Processor_EventsDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_Processor_EventsDB_0\" data-points=\"W3sieCI6ODg2LjM3NSwieSI6MjU3LjgyMzEwMjQ5OTMxNTN9LHsieCI6ODQ4Ljg3NSwieSI6MjYxLjkzMjU3OTA0MDUyNzM0fSx7IngiOjgxMS4zNzUsInkiOjI0Mi40MjQ2MTU1ODA3MDI3NX1d\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M811.375,190.048L817.625,186.04C823.875,182.032,836.375,174.016,848.875,170.852C861.375,167.689,873.875,169.377,880.125,170.222L886.375,171.066\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_EventsDB_Processor_0\" class=\"edge-thickness-invisible edge-pattern-solid\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_EventsDB_Processor_0\" data-points=\"W3sieCI6ODExLjM3NSwieSI6MTkwLjA0ODI1ODU3OTAwNzM1fSx7IngiOjg0OC44NzUsInkiOjE2Nn0seyJ4Ijo4ODYuMzc1LCJ5IjoxNzEuMDY1OTE4NTc2ODM5NDd9XQ==\" data-look=\"classic\"></path><path d=\"M1595.531,209.923L1601.781,209.763C1608.031,209.604,1620.531,209.285,1632.379,207.963C1644.226,206.641,1655.42,204.316,1661.018,203.154L1666.615,201.991\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_GenericIndexer_Adapter_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_GenericIndexer_Adapter_0\" data-points=\"W3sieCI6MTU5NS41MzEyNSwieSI6MjA5LjkyMjczMTU1NTg5MTE1fSx7IngiOjE2MzMuMDMxMjUsInkiOjIwOC45NjYyODk1MjAyNjM2N30seyJ4IjoxNjcwLjUzMTI1LCJ5IjoyMDEuMTc3ODQ1MTQ2MzYyMn1d\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M1595.531,257.823L1601.781,258.508C1608.031,259.193,1620.531,260.563,1633.031,258.652C1645.531,256.74,1658.031,251.548,1664.281,248.952L1670.531,246.356\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_GenericIndexer_LedgerAPI_0\" class=\"edge-thickness-invisible edge-pattern-solid\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_GenericIndexer_LedgerAPI_0\" data-points=\"W3sieCI6MTU5NS41MzEyNSwieSI6MjU3LjgyMzEwMjQ5OTMxNTN9LHsieCI6MTYzMy4wMzEyNSwieSI6MjYxLjkzMjU3OTA0MDUyNzM0fSx7IngiOjE2NzAuNTMxMjUsInkiOjI0Ni4zNTU2OTAyOTI3MjQ0fV0=\" data-look=\"classic\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_LA_APIGW_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_APIGW_EventsAPI_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_EventsAPI_EventsDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_Adapter_XRPL_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_APIGW_LedgerAPI_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_APIGW_Adapter_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_LedgerAPI_XRPL_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_Processor_EventsDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_EventsDB_Processor_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_GenericIndexer_Adapter_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_GenericIndexer_LedgerAPI_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(1662.53125, 35)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-LedgerServices\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"435.046875\" height=\"226\"></rect><g class=\"cluster-label\" transform=\"translate(168.046875, 8)\"><foreignObject width=\"114.953125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Ledger services</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-LedgerAPI-7\" data-look=\"classic\" transform=\"translate(112.8671875, 121)\"><rect class=\"basic label-container\" style=\"\" x=\"-69.8671875\" y=\"-39\" width=\"139.734375\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-39.8671875, -24)\"><rect></rect><foreignObject width=\"79.734375\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Ledger API<br>(XRPL API)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-Adapter-8\" data-look=\"classic\" transform=\"translate(320.390625, 121)\"><rect class=\"basic label-container\" style=\"\" x=\"-87.65625\" y=\"-63\" width=\"175.3125\" height=\"126\"></rect><g class=\"label\" style=\"\" transform=\"translate(-57.65625, -48)\"><rect></rect><foreignObject width=\"115.3125\" height=\"96\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Ledger Adapter<br>(XRPL Adapter)<br>xrpl-mainnet<br>xrpl-testnet</p></span></div></foreignObject></g></g></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-LA-0\" data-look=\"classic\" transform=\"translate(144.734375, 156)\"><rect class=\"basic label-container\" style=\"\" x=\"-99.234375\" y=\"-27\" width=\"198.46875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-69.234375, -12)\"><rect></rect><foreignObject width=\"138.46875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Ledger Accounting</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-APIGW-1\" data-look=\"classic\" transform=\"translate(376.390625, 156)\"><rect class=\"basic label-container\" style=\"\" x=\"-57.421875\" y=\"-27\" width=\"114.84375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-27.421875, -12)\"><rect></rect><foreignObject width=\"54.84375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>API GW</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-EventsAPI-2\" data-look=\"classic\" transform=\"translate(577.5, 218.96628952026367)\"><rect class=\"basic label-container\" style=\"\" x=\"-68.6875\" y=\"-27\" width=\"137.375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-38.6875, -12)\"><rect></rect><foreignObject width=\"77.375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Events API</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-EventsDB-3\" data-look=\"classic\" transform=\"translate(766.28125, 218.96628952026367)\"><path d=\"M0,10.477781004937555 a45.09375,10.477781004937555 0,0,0 90.1875,0 a45.09375,10.477781004937555 0,0,0 -90.1875,0 l0,49.477781004937555 a45.09375,10.477781004937555 0,0,0 90.1875,0 l0,-49.477781004937555\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-45.09375, -35.21667150740633)\"></path><g class=\"label\" style=\"\" transform=\"translate(-37.59375, -2)\"><rect></rect><foreignObject width=\"75.1875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Events DB</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-XRPL-9\" data-look=\"classic\" transform=\"translate(2229.109375, 156)\"><rect class=\"basic label-container\" style=\"\" x=\"-48.53125\" y=\"-27\" width=\"97.0625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-18.53125, -12)\"><rect></rect><foreignObject width=\"37.0625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>XRPL</p></span></div></foreignObject></g></g><g class=\"root\" transform=\"translate(878.375, 140.03371047973633)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-Unified\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"709.15625\" height=\"141.86516571044922\"></rect><g class=\"cluster-label\" transform=\"translate(301.640625, 8)\"><foreignObject width=\"121.875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Unified Indexers</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M191.563,78.933L199.896,78.933C208.229,78.933,224.896,78.933,240.896,78.933C256.896,78.933,272.229,78.933,279.896,78.933L287.563,78.933\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_Processor_IndexerDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_Processor_IndexerDB_0\" data-points=\"W3sieCI6MTkxLjU2MjUsInkiOjc4LjkzMjU4Mjg1NTIyNDYxfSx7IngiOjI0MS41NjI1LCJ5Ijo3OC45MzI1ODI4NTUyMjQ2MX0seyJ4IjoyOTEuNTYyNSwieSI6NzguOTMyNTgyODU1MjI0NjF9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M489.063,95.241L480.729,96.768C472.396,98.294,455.729,101.346,439.708,100.89C423.687,100.434,408.311,96.469,400.624,94.486L392.936,92.503\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_GenericIndexer_IndexerDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_GenericIndexer_IndexerDB_0\" data-points=\"W3sieCI6NDg5LjA2MjUsInkiOjk1LjI0MTQyNTk2NjM1NjQ3fSx7IngiOjQzOS4wNjI1LCJ5IjoxMDQuMzk4ODc0MjgyODM2OTF9LHsieCI6Mzg5LjA2MjUsInkiOjkxLjUwNDU0OTUwOTM2MjMzfV0=\" data-look=\"classic\" marker-end=\"url(#diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9_flowchart-v2-pointEnd)\"></path><path d=\"M389.063,66.361L397.396,64.212C405.729,62.063,422.396,57.764,439.063,57.142C455.729,56.519,472.396,59.571,480.729,61.097L489.063,62.624\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-L_IndexerDB_GenericIndexer_0\" class=\"edge-thickness-invisible edge-pattern-solid\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_IndexerDB_GenericIndexer_0\" data-points=\"W3sieCI6Mzg5LjA2MjUsInkiOjY2LjM2MDYxNjIwMTA4Njg4fSx7IngiOjQzOS4wNjI1LCJ5Ijo1My40NjYyOTE0Mjc2MTIzMDV9LHsieCI6NDg5LjA2MjUsInkiOjYyLjYyMzczOTc0NDA5Mjc0fV0=\" data-look=\"classic\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_Processor_IndexerDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_GenericIndexer_IndexerDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_IndexerDB_GenericIndexer_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-Processor-4\" data-look=\"classic\" transform=\"translate(124.78125, 78.93258285522461)\"><rect class=\"basic label-container\" style=\"\" x=\"-66.78125\" y=\"-27\" width=\"133.5625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-36.78125, -12)\"><rect></rect><foreignObject width=\"73.5625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Processor</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-IndexerDB-5\" data-look=\"classic\" transform=\"translate(340.3125, 78.93258285522461)\"><path d=\"M0,10.95505617977528 a48.75,10.95505617977528 0,0,0 97.5,0 a48.75,10.95505617977528 0,0,0 -97.5,0 l0,49.95505617977528 a48.75,10.95505617977528 0,0,0 97.5,0 l0,-49.95505617977528\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-48.75, -35.932584269662925)\"></path><g class=\"label\" style=\"\" transform=\"translate(-41.25, -2)\"><rect></rect><foreignObject width=\"82.5\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Indexer DB</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-flowchart-GenericIndexer-6\" data-look=\"classic\" transform=\"translate(578.109375, 78.93258285522461)\"><rect class=\"basic label-container\" style=\"\" x=\"-89.046875\" y=\"-27\" width=\"178.09375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-59.046875, -12)\"><rect></rect><foreignObject width=\"118.09375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Generic Indexer</p></span></div></foreignObject></g></g></g></g></g></g></g></g></g><defs><filter id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs><defs><filter id=\"diagram-026c4063a85508dbf33f0e041b5792587c6653de5aa7a93341e79f5745bd65f9-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs></svg>","diagramHtmlDark":"<svg id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 2323.140625px;\" viewBox=\"0 0 2323.140625 343.9325866699219\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .error-icon{fill:#a44141;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .error-text{fill:#ddd;stroke:#ddd;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-thickness-normal{stroke-width:1px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-thickness-thick{stroke-width:3.5px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-pattern-solid{stroke-dasharray:0;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .marker{fill:lightgrey;stroke:lightgrey;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .marker.cross{stroke:lightgrey;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 svg{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 p{margin:0;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .label{font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;color:#ccc;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .cluster-label text{fill:#F9FFFE;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .cluster-label span{color:#F9FFFE;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .cluster-label span p{background-color:transparent;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .label text,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 span{fill:#ccc;color:#ccc;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node rect,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node circle,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node ellipse,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node polygon,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .rough-node .label text,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node .label text,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .image-shape .label,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .icon-shape .label{text-anchor:middle;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .rough-node .label,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node .label,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .image-shape .label,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .icon-shape .label{text-align:center;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node.clickable{cursor:pointer;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .arrowheadPath{fill:lightgrey;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edgePath .path{stroke:lightgrey;stroke-width:1px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .flowchart-link{stroke:lightgrey;fill:none;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .cluster text{fill:#F9FFFE;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .cluster span{color:#F9FFFE;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 rect.text{fill:none;stroke-width:0;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .icon-shape,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .icon-shape p,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .icon-shape .label rect,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 .node .neo-node{stroke:#ccc;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].node rect,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].cluster rect,#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].node polygon{stroke:url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].node path{stroke:url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-gradient);stroke-width:1px;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].node circle{stroke:url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(0, 0)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-OnPrem\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"2307.140625\" height=\"327.93257904052734\"></rect><g class=\"cluster-label\" transform=\"translate(1127.9140625, 8)\"><foreignObject width=\"67.3125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>On-prem</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M243.969,156L250.219,156C256.469,156,268.969,156,280.802,156C292.635,156,303.802,156,309.385,156L314.969,156\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_LA_APIGW_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_LA_APIGW_0\" data-points=\"W3sieCI6MjQzLjk2ODc1LCJ5IjoxNTZ9LHsieCI6MjgxLjQ2ODc1LCJ5IjoxNTZ9LHsieCI6MzE4Ljk2ODc1LCJ5IjoxNTZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M417.093,183L426.13,188.994C435.166,194.989,453.239,206.978,467.859,212.972C482.479,218.966,493.646,218.966,499.229,218.966L504.813,218.966\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_APIGW_EventsAPI_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_APIGW_EventsAPI_0\" data-points=\"W3sieCI6NDE3LjA5MzIwNzk5MzYzODUsInkiOjE4M30seyJ4Ijo0NzEuMzEyNSwieSI6MjE4Ljk2NjI4OTUyMDI2MzY3fSx7IngiOjUwOC44MTI1LCJ5IjoyMTguOTY2Mjg5NTIwMjYzNjd9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M646.188,218.966L652.438,218.966C658.688,218.966,671.188,218.966,683.021,218.966C694.854,218.966,706.021,218.966,711.604,218.966L717.188,218.966\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_EventsAPI_EventsDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_EventsAPI_EventsDB_0\" data-points=\"W3sieCI6NjQ2LjE4NzUsInkiOjIxOC45NjYyODk1MjAyNjM2N30seyJ4Ijo2ODMuNjg3NSwieSI6MjE4Ljk2NjI4OTUyMDI2MzY3fSx7IngiOjcyMS4xODc1LCJ5IjoyMTguOTY2Mjg5NTIwMjYzNjd9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M2105.578,101.411L2111.828,99.842C2118.078,98.274,2130.578,95.137,2144.583,99.337C2158.587,103.538,2174.096,115.075,2181.851,120.844L2189.606,126.613\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_Adapter_XRPL_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_Adapter_XRPL_0\" data-points=\"W3sieCI6MjEwNS41NzgxMjUsInkiOjEwMS40MTA4OTk3MzM0ODAzOH0seyJ4IjoyMTQzLjA3ODEyNSwieSI6OTJ9LHsieCI6MjE5Mi44MTQ5NDE0MDYyNSwieSI6MTI5fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M411.024,129L421.072,121.167C431.12,113.333,451.216,97.667,478.962,89.833C506.708,82,542.104,82,577.5,82C612.896,82,648.292,82,679.755,82C711.219,82,738.75,82,766.281,82C793.813,82,821.344,82,900.456,82C979.568,82,1110.26,82,1240.953,82C1371.646,82,1502.339,82,1573.295,83.628C1644.251,85.256,1655.47,88.511,1661.08,90.139L1666.69,91.767\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_APIGW_LedgerAPI_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_APIGW_LedgerAPI_0\" data-points=\"W3sieCI6NDExLjAyNDI4MjA5NDU5NDYsInkiOjEyOX0seyJ4Ijo0NzEuMzEyNSwieSI6ODJ9LHsieCI6NTc3LjUsInkiOjgyfSx7IngiOjY4My42ODc1LCJ5Ijo4Mn0seyJ4Ijo3NjYuMjgxMjUsInkiOjgyfSx7IngiOjg0OC44NzUsInkiOjgyfSx7IngiOjEyNDAuOTUzMTI1LCJ5Ijo4Mn0seyJ4IjoxNjMzLjAzMTI1LCJ5Ijo4Mn0seyJ4IjoxNjcwLjUzMTI1LCJ5Ijo5Mi44ODEzNTI4MTY4MzY2OH1d\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M424.778,129L432.534,124.672C440.289,120.345,455.801,111.689,481.255,107.361C506.708,103.034,542.104,103.034,577.5,103.034C612.896,103.034,648.292,103.034,679.755,103.034C711.219,103.034,738.75,103.034,766.281,103.034C793.813,103.034,821.344,103.034,900.456,103.034C979.568,103.034,1110.26,103.034,1240.953,103.034C1371.646,103.034,1502.339,103.034,1573.282,104.196C1644.226,105.359,1655.42,107.684,1661.018,108.846L1666.615,110.009\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_APIGW_Adapter_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_APIGW_Adapter_0\" data-points=\"W3sieCI6NDI0Ljc3NzgyODQxMjA3NzcsInkiOjEyOX0seyJ4Ijo0NzEuMzEyNSwieSI6MTAzLjAzMzcxMDQ3OTczNjMzfSx7IngiOjU3Ny41LCJ5IjoxMDMuMDMzNzEwNDc5NzM2MzN9LHsieCI6NjgzLjY4NzUsInkiOjEwMy4wMzM3MTA0Nzk3MzYzM30seyJ4Ijo3NjYuMjgxMjUsInkiOjEwMy4wMzM3MTA0Nzk3MzYzM30seyJ4Ijo4NDguODc1LCJ5IjoxMDMuMDMzNzEwNDc5NzM2MzN9LHsieCI6MTI0MC45NTMxMjUsInkiOjEwMy4wMzM3MTA0Nzk3MzYzM30seyJ4IjoxNjMzLjAzMTI1LCJ5IjoxMDMuMDMzNzEwNDc5NzM2MzN9LHsieCI6MTY3MC41MzEyNSwieSI6MTEwLjgyMjE1NDg1MzYzNzh9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M2105.578,237.826L2111.828,240.177C2118.078,242.528,2130.578,247.23,2146.686,238.589C2162.794,229.948,2182.51,207.963,2192.368,196.97L2202.226,185.978\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_LedgerAPI_XRPL_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_LedgerAPI_XRPL_0\" data-points=\"W3sieCI6MjEwNS41NzgxMjUsInkiOjIzNy44MjYxNDMzNzYwODA3Mn0seyJ4IjoyMTQzLjA3ODEyNSwieSI6MjUxLjkzMjU3OTA0MDUyNzM0fSx7IngiOjIyMDQuODk2MDgwOTAwODMxNywieSI6MTgzfV0=\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M886.375,257.823L880.125,258.508C873.875,259.193,861.375,260.563,849.466,258.304C837.558,256.045,826.241,250.158,820.582,247.214L814.924,244.271\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_Processor_EventsDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_Processor_EventsDB_0\" data-points=\"W3sieCI6ODg2LjM3NSwieSI6MjU3LjgyMzEwMjQ5OTMxNTN9LHsieCI6ODQ4Ljg3NSwieSI6MjYxLjkzMjU3OTA0MDUyNzM0fSx7IngiOjgxMS4zNzUsInkiOjI0Mi40MjQ2MTU1ODA3MDI3NX1d\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M811.375,190.048L817.625,186.04C823.875,182.032,836.375,174.016,848.875,170.852C861.375,167.689,873.875,169.377,880.125,170.222L886.375,171.066\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_EventsDB_Processor_0\" class=\"edge-thickness-invisible edge-pattern-solid\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_EventsDB_Processor_0\" data-points=\"W3sieCI6ODExLjM3NSwieSI6MTkwLjA0ODI1ODU3OTAwNzM1fSx7IngiOjg0OC44NzUsInkiOjE2Nn0seyJ4Ijo4ODYuMzc1LCJ5IjoxNzEuMDY1OTE4NTc2ODM5NDd9XQ==\" data-look=\"classic\"></path><path d=\"M1595.531,209.923L1601.781,209.763C1608.031,209.604,1620.531,209.285,1632.379,207.963C1644.226,206.641,1655.42,204.316,1661.018,203.154L1666.615,201.991\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_GenericIndexer_Adapter_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_GenericIndexer_Adapter_0\" data-points=\"W3sieCI6MTU5NS41MzEyNSwieSI6MjA5LjkyMjczMTU1NTg5MTE1fSx7IngiOjE2MzMuMDMxMjUsInkiOjIwOC45NjYyODk1MjAyNjM2N30seyJ4IjoxNjcwLjUzMTI1LCJ5IjoyMDEuMTc3ODQ1MTQ2MzYyMn1d\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M1595.531,257.823L1601.781,258.508C1608.031,259.193,1620.531,260.563,1633.031,258.652C1645.531,256.74,1658.031,251.548,1664.281,248.952L1670.531,246.356\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_GenericIndexer_LedgerAPI_0\" class=\"edge-thickness-invisible edge-pattern-solid\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_GenericIndexer_LedgerAPI_0\" data-points=\"W3sieCI6MTU5NS41MzEyNSwieSI6MjU3LjgyMzEwMjQ5OTMxNTN9LHsieCI6MTYzMy4wMzEyNSwieSI6MjYxLjkzMjU3OTA0MDUyNzM0fSx7IngiOjE2NzAuNTMxMjUsInkiOjI0Ni4zNTU2OTAyOTI3MjQ0fV0=\" data-look=\"classic\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_LA_APIGW_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_APIGW_EventsAPI_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_EventsAPI_EventsDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_Adapter_XRPL_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_APIGW_LedgerAPI_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_APIGW_Adapter_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_LedgerAPI_XRPL_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_Processor_EventsDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_EventsDB_Processor_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_GenericIndexer_Adapter_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_GenericIndexer_LedgerAPI_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(1662.53125, 35)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-LedgerServices\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"435.046875\" height=\"226\"></rect><g class=\"cluster-label\" transform=\"translate(168.046875, 8)\"><foreignObject width=\"114.953125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Ledger services</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-LedgerAPI-7\" data-look=\"classic\" transform=\"translate(112.8671875, 121)\"><rect class=\"basic label-container\" style=\"\" x=\"-69.8671875\" y=\"-39\" width=\"139.734375\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-39.8671875, -24)\"><rect></rect><foreignObject width=\"79.734375\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Ledger API<br>(XRPL API)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-Adapter-8\" data-look=\"classic\" transform=\"translate(320.390625, 121)\"><rect class=\"basic label-container\" style=\"\" x=\"-87.65625\" y=\"-63\" width=\"175.3125\" height=\"126\"></rect><g class=\"label\" style=\"\" transform=\"translate(-57.65625, -48)\"><rect></rect><foreignObject width=\"115.3125\" height=\"96\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Ledger Adapter<br>(XRPL Adapter)<br>xrpl-mainnet<br>xrpl-testnet</p></span></div></foreignObject></g></g></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-LA-0\" data-look=\"classic\" transform=\"translate(144.734375, 156)\"><rect class=\"basic label-container\" style=\"\" x=\"-99.234375\" y=\"-27\" width=\"198.46875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-69.234375, -12)\"><rect></rect><foreignObject width=\"138.46875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Ledger Accounting</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-APIGW-1\" data-look=\"classic\" transform=\"translate(376.390625, 156)\"><rect class=\"basic label-container\" style=\"\" x=\"-57.421875\" y=\"-27\" width=\"114.84375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-27.421875, -12)\"><rect></rect><foreignObject width=\"54.84375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>API GW</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-EventsAPI-2\" data-look=\"classic\" transform=\"translate(577.5, 218.96628952026367)\"><rect class=\"basic label-container\" style=\"\" x=\"-68.6875\" y=\"-27\" width=\"137.375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-38.6875, -12)\"><rect></rect><foreignObject width=\"77.375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Events API</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-EventsDB-3\" data-look=\"classic\" transform=\"translate(766.28125, 218.96628952026367)\"><path d=\"M0,10.477781004937555 a45.09375,10.477781004937555 0,0,0 90.1875,0 a45.09375,10.477781004937555 0,0,0 -90.1875,0 l0,49.477781004937555 a45.09375,10.477781004937555 0,0,0 90.1875,0 l0,-49.477781004937555\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-45.09375, -35.21667150740633)\"></path><g class=\"label\" style=\"\" transform=\"translate(-37.59375, -2)\"><rect></rect><foreignObject width=\"75.1875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Events DB</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-XRPL-9\" data-look=\"classic\" transform=\"translate(2229.109375, 156)\"><rect class=\"basic label-container\" style=\"\" x=\"-48.53125\" y=\"-27\" width=\"97.0625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-18.53125, -12)\"><rect></rect><foreignObject width=\"37.0625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>XRPL</p></span></div></foreignObject></g></g><g class=\"root\" transform=\"translate(878.375, 140.03371047973633)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-Unified\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"709.15625\" height=\"141.86516571044922\"></rect><g class=\"cluster-label\" transform=\"translate(301.640625, 8)\"><foreignObject width=\"121.875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Unified Indexers</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M191.563,78.933L199.896,78.933C208.229,78.933,224.896,78.933,240.896,78.933C256.896,78.933,272.229,78.933,279.896,78.933L287.563,78.933\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_Processor_IndexerDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_Processor_IndexerDB_0\" data-points=\"W3sieCI6MTkxLjU2MjUsInkiOjc4LjkzMjU4Mjg1NTIyNDYxfSx7IngiOjI0MS41NjI1LCJ5Ijo3OC45MzI1ODI4NTUyMjQ2MX0seyJ4IjoyOTEuNTYyNSwieSI6NzguOTMyNTgyODU1MjI0NjF9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M489.063,95.241L480.729,96.768C472.396,98.294,455.729,101.346,439.708,100.89C423.687,100.434,408.311,96.469,400.624,94.486L392.936,92.503\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_GenericIndexer_IndexerDB_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_GenericIndexer_IndexerDB_0\" data-points=\"W3sieCI6NDg5LjA2MjUsInkiOjk1LjI0MTQyNTk2NjM1NjQ3fSx7IngiOjQzOS4wNjI1LCJ5IjoxMDQuMzk4ODc0MjgyODM2OTF9LHsieCI6Mzg5LjA2MjUsInkiOjkxLjUwNDU0OTUwOTM2MjMzfV0=\" data-look=\"classic\" marker-end=\"url(#diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031_flowchart-v2-pointEnd)\"></path><path d=\"M389.063,66.361L397.396,64.212C405.729,62.063,422.396,57.764,439.063,57.142C455.729,56.519,472.396,59.571,480.729,61.097L489.063,62.624\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-L_IndexerDB_GenericIndexer_0\" class=\"edge-thickness-invisible edge-pattern-solid\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_IndexerDB_GenericIndexer_0\" data-points=\"W3sieCI6Mzg5LjA2MjUsInkiOjY2LjM2MDYxNjIwMTA4Njg4fSx7IngiOjQzOS4wNjI1LCJ5Ijo1My40NjYyOTE0Mjc2MTIzMDV9LHsieCI6NDg5LjA2MjUsInkiOjYyLjYyMzczOTc0NDA5Mjc0fV0=\" data-look=\"classic\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_Processor_IndexerDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_GenericIndexer_IndexerDB_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_IndexerDB_GenericIndexer_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-Processor-4\" data-look=\"classic\" transform=\"translate(124.78125, 78.93258285522461)\"><rect class=\"basic label-container\" style=\"\" x=\"-66.78125\" y=\"-27\" width=\"133.5625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-36.78125, -12)\"><rect></rect><foreignObject width=\"73.5625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Processor</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-IndexerDB-5\" data-look=\"classic\" transform=\"translate(340.3125, 78.93258285522461)\"><path d=\"M0,10.95505617977528 a48.75,10.95505617977528 0,0,0 97.5,0 a48.75,10.95505617977528 0,0,0 -97.5,0 l0,49.95505617977528 a48.75,10.95505617977528 0,0,0 97.5,0 l0,-49.95505617977528\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-48.75, -35.932584269662925)\"></path><g class=\"label\" style=\"\" transform=\"translate(-41.25, -2)\"><rect></rect><foreignObject width=\"82.5\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Indexer DB</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-flowchart-GenericIndexer-6\" data-look=\"classic\" transform=\"translate(578.109375, 78.93258285522461)\"><rect class=\"basic label-container\" style=\"\" x=\"-89.046875\" y=\"-27\" width=\"178.09375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-59.046875, -12)\"><rect></rect><foreignObject width=\"118.09375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Generic Indexer</p></span></div></foreignObject></g></g></g></g></g></g></g></g></g><defs><filter id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><defs><filter id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><linearGradient id=\"diagram-3817bc143bbc7e0a31763357cb55102231d90a4d5014f628454e4ba26b86e031-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#cccccc\" stop-opacity=\"1\"></stop><stop offset=\"100%\" stop-color=\"hsl(180, 0%, 18.3529411765%)\" stop-opacity=\"1\"></stop></linearGradient></svg>"},"children":["flowchart LR\n    subgraph OnPrem[\"On-prem\"]\n        direction LR\n        LA[\"Ledger Accounting\"]\n        APIGW[\"API GW\"]\n        EventsAPI[\"Events API\"]\n        EventsDB[(\"Events DB\")]\n\n        subgraph Unified[\"Unified Indexers\"]\n            direction LR\n            Processor[\"Processor\"]\n            IndexerDB[(\"Indexer DB\")]\n            GenericIndexer[\"Generic Indexer\"]\n        end\n\n        subgraph LedgerServices[\"Ledger services\"]\n            direction TB\n            LedgerAPI[\"Ledger API<br/>(XRPL API)\"]\n            Adapter[\"Ledger Adapter<br/>(XRPL Adapter)<br/>xrpl-mainnet<br/>xrpl-testnet\"]\n        end\n\n        XRPL[\"XRPL\"]\n    end\n\n    LA --> APIGW\n    APIGW --> EventsAPI\n    EventsAPI --> EventsDB\n    Processor --> IndexerDB\n    GenericIndexer --> IndexerDB\n    Processor --> EventsDB\n    GenericIndexer --> Adapter\n    Adapter --> XRPL\n    APIGW --> LedgerAPI\n    APIGW --> Adapter\n    LedgerAPI --> XRPL\n\n    EventsDB ~~~ Processor\n    IndexerDB ~~~ GenericIndexer\n    GenericIndexer ~~~ LedgerAPI\n"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Data flow:"]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ledger Adapters connect to blockchain nodes and fetch blockchain data. For EVM chains with node authentication configured, the Ledger Adapter routes requests through the Node Gateway sidecar, which injects the required credentials before forwarding to the node."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Generic Indexer orchestrates data fetching through adapters. Each ledger and network combination has its own stateful Generic Indexer instance."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["After data is fetched, the Generic Indexer indexes the data and stores it in the outbox table."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Processor reads the outbox table and generates standardized events."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Processor writes events to the database."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Events API reads from the database and provides indexed data to consumers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ledger Accounting pulls events through the Events API."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ledger APIs provide stateless access to live blockchain data from nodes, not indexed data."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"components","__idx":2},"children":["Components"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The UIS consists of several components that work together:"]},{"$$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":"Component"},"children":["Component"]},{"$$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":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Generic Indexer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The core orchestration engine that fetches blockchain data and stores it in a common format. While the indexer code is generic and reusable, a separate instance is deployed for each ledger and network combination (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uis-indexer-solana-devnet"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uis-indexer-xrpl-testnet"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Processor"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Handles business logic and generates standardized events from indexed data. It reads from the Generic Indexer's outbox table and creates customer-facing events. This indexed data is then served by the Events API."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ledger Adapters"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Chain-specific translation layers that connect to blockchain nodes and convert blockchain-specific data into the unified model consumed by the Generic Indexer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ledger APIs"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provide RESTful interfaces for accessing live blockchain data directly from the nodes. These APIs return stateless data and are called by ledger adapters or other components when checking balances, creating transactions, broadcasting transactions, or getting fees. These are stateless and can scale horizontally."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Node Gateway"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional reverse-proxy sidecar automatically co-deployed alongside an EVM indexer when an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authentication"]}," block is present in the ledger's node configuration. It intercepts outbound requests from the Ledger Adapter to the blockchain node and injects the required credentials (static headers, custom JWT tokens), so the indexer itself has no auth-specific code. No additional Helm flag is required — the presence of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authentication"]}," block triggers deployment. Applies to EVM chains only (Ethereum, Arbitrum, Base, Optimism, Polygon)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Events API"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provides RESTful interface for accessing indexed data. This is the primary interface where indexed data is accessed by consumers, such as Ledger Accounting. Handles authentication and provides HTTP endpoints for consumers to pull events. Product-level webhook delivery is handled separately by event distribution."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Gateway"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Single entry point for all UIS communication, routing requests to appropriate internal services."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"component-requirements","__idx":3},"children":["Component requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All installed UIS components are required for proper operation. The system is designed as an integrated whole, and removing any component will cause failures."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, if you are using Solana:"]},{"$$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":"Component"},"children":["Component"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$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":["Generic Indexer (per ledger/network)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A dedicated instance orchestrates data fetching for each ledger/network (e.g., mainnet, devnet)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Processor"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Generates events for Ledger Accounting"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Events API"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provides the pull-based interface for event consumption"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Solana Ledger Adapter"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Translates Solana-specific data"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Solana Ledger API"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provides access to live Solana blockchain data"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each component plays a critical role in the data flow pipeline."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"isolation-pattern","__idx":4},"children":["Isolation pattern"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The UIS uses the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bulkhead Pattern"]}," for fault isolation. Three components are run for each ledger and network combination:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ledger API"]}," - Provides access to live blockchain data for that specific ledger/network"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ledger Adapter"]}," - Translates blockchain-specific data for that ledger/network"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Generic Indexer"]}," - Orchestrates data fetching for that specific ledger/network"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These three components are duplicated for each ledger and network. This means:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Network-level isolation:"]}," If XRPL testnet goes down, XRPL mainnet remains unaffected"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ledger-level isolation:"]}," If Solana experiences issues (node failure, resource spike), it does not impact XRPL, TRON, or other ledgers"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Independent scaling:"]}," Each ledger/network combination can be scaled independently based on its specific needs"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This isolation ensures that failures are contained and do not cascade across the system."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"supported-chains-and-indexer-types","__idx":5},"children":["Supported chains and indexer types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple Custody"," supports a wide range of blockchains. Depending on the chain, indexing is handled either by UIS or by a standalone indexer. For on-premises deployments from v1.26:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Solana, TRON, and XRPL use UIS automatically and do not require a per-network UIS configuration setting."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Arbitrum, Base, and Optimism require UIS and must be explicitly configured with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]}," to be operable."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ethereum, Polygon, and Stellar continue to use existing standalone indexers unless you explicitly configure them to use UIS."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"on-premises-node-requirements","__idx":6},"children":["On-premises node requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For an on-premises deployment of UIS, 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 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":2,"id":"configuration","__idx":7},"children":["Configuration"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"saas-deployments","__idx":8},"children":["SaaS deployments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For SaaS deployments, UIS is enabled and managed by Ripple for supported chains."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"on-premises-deployments","__idx":9},"children":["On-premises deployments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For on-premises deployments, UIS is available from v1.26 or later."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use UIS automatically:"]}]},{"$$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":"Chain"},"children":["Chain"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Solana"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Uses UIS automatically. No per-network ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]}," setting is required."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["XRPL"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Uses UIS automatically. No per-network ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]}," setting is required."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["TRON"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Uses UIS automatically. No per-network ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]}," setting is required."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Must be explicitly configured to use UIS:"]}]},{"$$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":"Chain"},"children":["Chain"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Arbitrum"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Requires UIS. Configure the network with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]}," and provide node access settings."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Base"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Requires UIS. Configure the network with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]}," and provide node access settings."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optimism"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Requires UIS. Configure the network with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"uis\""]}," and provide node access settings."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ethereum"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional. You can continue using the legacy indexer or migrate to UIS."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Polygon"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional. You can continue using the legacy indexer or migrate to UIS."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Stellar"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional. You can continue using the legacy indexer or migrate to UIS."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Arbitrum, Base, and Optimism require UIS because there is no supported legacy-indexer path for those chains. They still need explicit configuration in on-premises deployments because ","Ripple Custody"," must know which network to run, which node endpoint to use, and which authentication settings to apply."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Other EVM chains like Ethereum and Polygon can optionally use UIS or continue with legacy indexers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Stellar can also optionally use UIS or continue with legacy indexers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Migrating a chain to the Unified Indexer is a one-way process and cannot be rolled back."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Please plan your migration carefully. For any questions about the deployment process, please contact your CPE or our Support team."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"configuration-example","__idx":10},"children":["Configuration example"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To enable UIS for a specific chain, set the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," parameter to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"uis\""]}," in that network's configuration block within your Helm chart's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["values.yaml"]}," file."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The example code below shows the correct structure for enabling the UIS for an Optimism Sepolia testnet:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"ledgers:\n  evm:\n    networks:\n      - name: optimism-sepolia\n        type: \"uis\"  # Enable UIS for this network\n        raw_config: |\n          tracker.opindexer-sepolia.base-url = \"http://api-management-uis\"\n          ...\n        indexer:\n          ...\n          node:\n            # URL for your provisioned Optimism Sepolia node.\n            url: \"http://your-optimism-sepolia-node-url\"\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For complete step-by-step migration instructions, including pre-migration setup, database preparation, and validation steps, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/operations-and-maintenance/upgrading/unified-indexer-service-migration"},"children":["UIS on-premises migration guide"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"node-authentication-for-evm-chains","__idx":11},"children":["Node authentication for EVM chains"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your EVM blockchain node requires authentication (for example, a Besu node that issues short-lived JWTs, or a third-party provider that expects a static header token), add an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authentication"]}," block to the network's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["indexer.node"]}," config. This automatically deploys a Node Gateway sidecar in the same pod as the EVM indexer."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"header-authentication-static-token-or-api-key","__idx":12},"children":["Header authentication (static token or API key)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode: header"]}," to inject a fixed key-value pair into every outbound request:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"ledgers:\n  evm:\n    networks:\n      - name: mainnet\n        type: \"uis\"\n        indexer:\n          node:\n            url: \"https://eth-node-provider.internal/\"\n            authentication:\n              mode: header\n              header:\n                key: \"x-auth-token\"\n                value: \"secret\"\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"custom-jwt-authentication","__idx":13},"children":["Custom JWT authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode: customJwt"]}," when the node requires a short-lived bearer token fetched from a separate token endpoint. Node Gateway fetches and caches the token, refreshing it before expiry."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"ledgers:\n  evm:\n    networks:\n      - name: testnet-goerli\n        type: \"uis\"\n        indexer:\n          node:\n            url: \"https://example-mas-node.internal/\"\n            authentication:\n              mode: customJwt\n              customJwt:\n                tokenUrl: \"https://example.com/api/generate-access-token\"\n                tokenMethod: POST\n                apiKeyHeader: \"x-api-key\"\n                apiKeyValue: \"your-api-key\"\n                requestBody:\n                  signature: \"your-signature\"\n                tokenJsonPath: data\n                tokenExpirySeconds: 3600\n                refreshBufferSeconds: 300\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customJwt"]}," field reference:"]}]},{"$$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":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$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":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tokenUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["String (URL)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Endpoint that issues the access token."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tokenMethod"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["String"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HTTP method for the token request (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKeyHeader"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["String"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Header name to include in the token request for API-key authentication of the token endpoint itself."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKeyValue"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["String"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Value for the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKeyHeader"]},". Store this in a Kubernetes Secret and inject via env var."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestBody"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Map"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key-value pairs sent as the JSON body of the token request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tokenJsonPath"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["String"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["JSON path expression to extract the token value from the token endpoint response (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["access_token"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tokenExpirySeconds"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Lifetime of the fetched token in seconds. Node Gateway caches the token for this duration."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["refreshBufferSeconds"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Seconds before expiry at which Node Gateway proactively fetches a new token. Must be less than ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tokenExpirySeconds"]},"."]}]}]}]}]}]},"headings":[{"value":"Unified Indexer Service","id":"unified-indexer-service","depth":1},{"value":"Architecture","id":"architecture","depth":2},{"value":"Components","id":"components","depth":2},{"value":"Component requirements","id":"component-requirements","depth":2},{"value":"Isolation pattern","id":"isolation-pattern","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":"Configuration","id":"configuration","depth":2},{"value":"SaaS deployments","id":"saas-deployments","depth":3},{"value":"On-premises deployments","id":"on-premises-deployments","depth":3},{"value":"Configuration example","id":"configuration-example","depth":3},{"value":"Node authentication for EVM chains","id":"node-authentication-for-evm-chains","depth":3},{"value":"Header authentication (static token or API key)","id":"header-authentication-static-token-or-api-key","depth":4},{"value":"Custom JWT authentication","id":"custom-jwt-authentication","depth":4}],"frontmatter":{"seo":{"title":"Unified Indexer Service"}},"lastModified":"2026-08-04T20:25:11.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/overview/architecture/unified-indexer-service","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}