# Indexers configuration reference

This section explains how to deploy indexers to your Ripple Custody infrastructure with the Helm package manager. This section only applies to on-premise deployments.

## Prerequisites

Before you deploy indexers, you need a basic understanding of the following:

- [Kubernetes](https://kubernetes.io/docs/home/)
- [Helm](https://helm.sh/docs/)
- [Helm chart configuration](https://helm.sh/docs/chart_template_guide/getting_started/), especially [values.yaml](https://helm.sh/docs/chart_template_guide/values_files/)


In addition, you need one or more suitable distributed ledger network nodes on the blockchain ledger.

## Networks

| Possible Indexers | Network Name | Ledger | Description |
|  --- | --- | --- | --- |
| Bitcoin Regression Testing Network | regtest-1 | Bitcoin | Often used for local testing. |
| Bitcoin Testing Network | testnet | Bitcoin | Used for testing purposes. |
| Bitcoin Main Network | mainnet | Bitcoin | Actual network. |
| Litecoin Regression Testing Network | regtest-1 | Litecoin (Bitcoin fork) | Often used for local testing. |
| Litecoin Testing Network | testnet | Litecoin (Bitcoin fork) | Used for testing purposes. |
| Litecoin Main Network | mainnet | Litecoin (Bitcoin fork) | Actual network. |
| Dogecoin Regression Testing Network | regtest-1 | Dogecoin (Bitcoin fork) | Often used for local testing. |
| Dogecoin Testing Network | testnet | Dogecoin (Bitcoin fork) | Used for testing purposes. |
| Dogecoin Main Network | mainnet | Dogecoin (Bitcoin fork) | Actual network. |
| Dash Regression Testing Network | regtest-1 | Dash (Bitcoin fork) | Often used for local testing. |
| Dash Testing Network | testnet | Dash (Bitcoin fork) | Used for testing purposes. |
| Dash Main Network | mainnet | Dash (Bitcoin fork) | Actual network. |
| Go Ethereum Private Development Network | geth-dev | Ethereum | Development environment. |
| Ethereum Parity Technologies Development Network | parity-dev | Ethereum | Development environment. |
| Ethereum Holesky Test Network | testnet-holesky | Ethereum | Used for testing purposes. |
| Ethereum Sepolia Test Network | testnet-sepolia | Ethereum | Used for testing purposes. |
| Ethereum Main Network | mainnet | Ethereum | Actual network. |
| Ethereum PoW Main Network | pow-mainnet | Ethereum | Actual network. |
| Polygon Amoy Test Network | testnet-amoy | Polygon (formerly MATIC) (EVM compatible) | Used for testing purposes. |
| Polygon Main Network | mainnet | Polygon (formerly MATIC) (EVM compatible) | Actual network. |
| Avalanche C Chain Fuji Test Network | testnet-fuji | Avalanche C Chain (EVM compatible) | Used for testing purposes. |
| Avalanche C Chain Main Network | mainnet | Avalanche C Chain (EVM compatible) | Actual network. |
| Binance Smart Chain Test Network | testnet | Binance Smart Chain (EVM compatible) | Used for testing purposes. |
| Binance Smart Chain Main Network | mainnet | Binance Smart Chain (EVM compatible) | Actual network. |
| XRP Ledger Development Network | devnet | XRP Ledger | Development environment. |
| XRP Ledger Regression Testing Network | regtest-1 | XRP Ledger | Often used for local testing. |
| XRP Ledger Testing Network | testnet | XRP Ledger | Used for testing purposes. |
| XRP Ledger Main Network | mainnet | XRP Ledger | Actual network. |
| Tezos Sandbox Network | sandbox | Tezos | Often used for local testing. |
| Tezos Testing Network | testnet | Tezos | Used for testing purposes. |
| Tezos Main Network | mainnet | Tezos | Actual network. |
| Substrate Development Network | dev | Substrate (Parity Technologies) | Development environment. |
| Substrate Testing Network (Westend) | westend | Substrate (Parity Technologies) | Often used for local testing. |
| Substrate Staging Network (Kusama) | kusama | Substrate (Parity Technologies) | Used for testing purposes. |
| Substrate Main Network (Polkadot) | polkadot | Substrate (Parity Technologies) | Development environment. |
| Stellar Development Network | devnet | Stellar | Development environment. |
| Stellar Main Network | mainnet | Stellar | Actual network. |
| Solana Development Network | devnet | Solana | Development environment. |
| Solana Main Network | mainnet | Solana | Actual network. |
| Cardano Testing Network | testnet | Cardano | Actual network. |
| Cardano Preview Network | preview | Cardano | Often used for local testing. |
| Cardano Pre-Prod Network | preprod | Cardano | Pre-Production network. |
| Cardano Main Network | mainnet | Cardano | Actual network. |
| Hedera Testing Network | testnet | Hedera | Used for testing purposes. |
| Hedera Main Network | mainnet | Hedera | Actual network. |
| Algorand Testing Network | testnet | Algorand | Used for testing purposes. |
| Algorand Main Network | mainnet | Algorand | Actual network. |


## Helm configuration

To deploy an indexer, you need to create and update a `values.yaml` file.

Use this empty template to help you get started:


```yaml

ledgers:
  bitcoin:
    regtest-1:
      enabled: false
      nodeEndpoint:
      url:
      user:
      password:
      fallbackFeeRate:
    testnet:
      enabled: false
      nodeEndpoint:
      url:
      user:
      password:
      fallbackFeeRate:
    mainnet:
      enabled: false
      nodeEndpoint:
      url:
      user:
      password:
      fallbackFeeRate:
```

Each network appears as a separate object under the ledger name object, for example `regtest-1` in the template example. Enable or disable the deployment of an indexer for each network by modifying its `enabled` field.

Each network has its own configuration structure, but we can group them into the following families.

### Configuration 1 - Bitcoin and its forks

- bitcoin
  - regtest-1
  - testnet
  - mainnet
- litecoin
  - regtest-1
  - testnet
  - mainnet
- dogecoin
  - regtest-1
  - testnet
  - mainnet
- dash
  - regtest-1
  - testnet
  - mainnet


| Field Name | Type | Format | Default | Description |
|  --- | --- | --- | --- | --- |
| `enabled` | Boolean | `true` or `false` | `false` | Specifies whether the indexer for the specific network is active. |
| `nodeEndpoint` | String | URL in a valid format, for example, `<hostname>:<port>` | Empty string | The URL for the Bitcoin node that the indexer will connect to. |
| `url` | String | URL | Empty string | The URL for the indexer. |
| `user` | String | Alphanumeric | Empty string | The username for authenticating with the indexer. |
| `password` | String | Alphanumeric | Empty string | The password for authenticating with the indexer. |
| `fallbackFeeRate` | Integer | Satoshi/vByte | 100 | The fallback fee rate to use when the indexer cannot retrieve the fee rate from the node. |


The following example shows a `values.yaml` file for deploying a Bitcoin indexer for the mainnet:


```yaml
harmonize:
  ledgers:
      bitcoin:
        mainnet:
          enabled: true
          nodeEndpoint: NODEURL:PORT
          url: https://NODEUR?auth=TOKEN
          user: <user>
          password: <password>
          fallbackFeeRate: 100
```

In the example, you need to replace `<user>` and `<password>` with your actual username and password for the indexer.

### Configuration 2 - EVM, XRPL, & Tezos

- ethereum
  - geth-dev
  - testnet-holesky
  - testnet-sepolia
  - parity-dev
  - mainnet
  - pow-mainnet
- polygon
  - testnet-amoy
  - mainnet
- avalanche-c-chain
  - testnet-fuji
  - mainnet
- bsc
  - testnet
  - mainnet
- xrpl
  - regtest-1
  - devnet
  - testnet
  - mainnet
- tezos
  - sandbox
  - testnet
  - mainnet


| Field Name | Type | Format | Default | Description |
|  --- | --- | --- | --- | --- |
| `enabled` | Boolean | `true` or `false` | `false` | Specifies whether or not the indexer for the specific network is active. |
| `uri` | String | URL | Empty string | The URL for the indexer. |


The following example shows a `values.yaml` file for deploying an Ethereum indexer for the testnet:


```yaml
harmonize:
  ledgers:
    ethereum:
      testnet-holesky:
        enabled: true
        uri: 'https://test-holesky-node.bdnodes.net?auth=uamvQornmOiUr0Dg7nbf48jjnPt'
```

### Configuration 3 - Polkadot ecosystem

- substrate
  - dev
  - polkadot
  - kusama
  - westend


| Field Name | Type | Format | Default | Description |
|  --- | --- | --- | --- | --- |
| enabled | Boolean | `true` or `false` | `false` | Specifies whether or not the indexer for the specific network is active. |
| ws | String | URL | Empty string | WebSocket connection URL. |
| sidecar (or ws_sidecar_url/ws_sidecar) | String | URL | Empty String | Sidecar URL. |


The following example shows a `values.yaml` file for deploying a Polkadot indexer for the mainnet:


```yaml
harmonize:
  ledgers:
    substrate:
      polkadot:
        enabled: true
        ws: ws://my-web-socket-server.com
        sidecar: mySuperSecretPassphrase
```

### Configuration 4 - Stellar & Solana

- stellar
  - devnet
  - mainnet
- solana
  - devnet
  - mainnet


| Field Name | Type | Format | Default | Description |
|  --- | --- | --- | --- | --- |
| enabled | Boolean | `true` or `false` | `false` | Specifies whether or not the indexer for the specific network is active. |
| url | String | URL | Empty string | The URL for the indexer. |
| passphrase | String | Alphanumeric | Empty string | The passphrase for authenticating with the indexer. |


The following example shows a `values.yaml` file for deploying a Solana indexer for the mainnet:


```yaml
harmonize:
  ledgers:
    solana:
      mainnet:
        enabled: true
        url: 'https://test-solana-node.bdnodes.net?auth=uamvQornmOiUr0Dg7nbf48jjnPt'
        passphrase: mySuperSecretPassphrase
```

### Configuration 5 - Cardano ecosystem

- cardano
  - preprod
  - preview
  - testnet
  - mainnet


| Field Name | Type | Format | Default | Description |
|  --- | --- | --- | --- | --- |
| `enabled` | Boolean | `true` or `false` | `false` | Specifies whether or not the indexer for the specific network is active. |
| `http` | String | URL | Empty string | HTTP connection URL. |
| `ws` | String | URL | Empty string | WebSocket connection URL. |


The following example shows a `values.yaml` file for deploying a Cardano indexer for the mainnet:


```yaml
harmonize:
  ledgers:
    cardano:
      mainnet:
        enabled: true
        http: 'https://test-cardano-node.bdnodes.net?auth=uamvQornmOiUr0Dg7nbf48jjnPt'
        ws: ws://my-web-socket-server.com
```

### Configuration 6 - Hedera & Algorand

- hedera
  - testnet
  - mainnet
- algorand
  - testnet
  - mainnet


| Field Name | Type | Format | Default | Description |
|  --- | --- | --- | --- | --- |
| `enabled` | Boolean | `true` or `false` | `false` | Specifies whether or not the indexer for the specific network is active. |
| `http` | String | URL | Empty string | HTTP |


The following example shows a `values.yaml` file for deploying a Hedera indexer for the mainnet:


```yaml
harmonize:
  ledgers:
    hedera:
      mainnet:
        enabled: true
        http: 'https://test-hedera-node.bdnodes.net?auth=uamvQornmOiUr0Dg7nbf48jjnPt'
```

## Deployment

To deploy your indexer, run the following Helm command:


```bash
helm install <my-release-name> <helm-chart-repository> -f my-custom-values.yaml
```

Where `<my-release-name>` is the name of your Helm release, `<helm-chart-repository>` is the chart you want to install, and `my-custom-values.yaml` is the file you completed with your configuration.

## Next step

- [Telemetry configuration](/products/custody/v1.34/deployment/reference/telemetry)