# Configuration

## Settings.js

### Configuration File Format

```
{
    // operating chain list
    chainList: [
        'eth',
        'klaytn',
        'icon',
    ],

    // Bridge Addresses
    BridgeAddress: {
        OrbitHubContract: "0x0000000000000000000000000000000000000000",
        OrbitBridgeHubContract: "0x0000000000000000000000000000000000000000",
        EthBridgeContract: "0x0000000000000000000000000000000000000000",
        KlaytnBridgeContract: "0x0000000000000000000000000000000000000000",
        IconBridgeContract: "0x0000000000000000000000000000000000000000",
        MessageMultiSigWallet: {
            Hub: "0x0000000000000000000000000000000000000000",
            Eth: "0x0000000000000000000000000000000000000000",
            Klaytn: "0x0000000000000000000000000000000000000000",
            Icon: "0x0000000000000000000000000000000000000000"
        },
        Eth: {
            EthVaultContract: "0x0000000000000000000000000000000000000000",
        },
        Klay: {
            KlaytnMinterContract: "0x0000000000000000000000000000000000000000",
            MessageMultiSigWallet: "0x0000000000000000000000000000000000000000",
        },
        Icon: {
            IconMinterContract: "cx0000000000000000000000000000000000000000",
            MessageMultiSigWallet: "cx0000000000000000000000000000000000000000",
        },
        Governance: {
            Chain: "ETH",
            Address: "0x0000000000000000000000000000000000000000",
            Bytes: "0x0000000000000000000000000000000000000000",
            Id: "0x0000000000000000000000000000000000000000000000000000000000000000",
        }
    },

    // Node Endpoints
    Endpoints : {
        Orbit: {
            rpc : "http://orbitchain",
            socket: "ws://orbitchain",
        },
        Eth : {
            rpc : "http://infura",
            socket : "ws://infura",
        },
        Klaytn: {
            // false: Using your node (not public EN), true: Using Kas node
            isKas: false,
    
            // your node configuration (not public EN)
            rpc: "",
            socket: "",

            // Kas configuration
            Kas: {
                // KAS Default
                rpc: "https://node-api.klaytnapi.com/v1/klaytn",
                chainId: 8217,

                // Your Credential
                accessKeyId: "",
                secretAccessKey: ""
            }
        },
        Icon: {
            api: 'https://ctz.solidwallet.io/api/v3',
            debug: 'https://ctz.solidwallet.io/api/debug/v3',
            version: 3,
            nid: 1
        },
        Parser: {
            api: "http://localhost:8084",
        },
        Syncer: {
            api: "http://localhost:9797/v1", 
        },
    },

    DEBUG: true,
    LOGLEVEL: 'debug',

    // WIP: validator things.
    VALIDATOR_ACCOUNT: {
        TYPE: "PK",
        DATA: "0000000000000000000000000000000000000000000000000000000000000000",
    },

    // WIP: operator things.
    OPERATOR_ACCOUNTS: {
        Klay: {
            TYPE: "PK",
            FEE_PAYER_ADDRESS : "0x0000000000000000000000000000000000000000",
            DATA: "0x0000000000000000000000000000000000000000000000000000000000000000",
        },
        Eth: {
            RELEASE: {
                TYPE: "PK",
                ADDRESS: "0x0000000000000000000000000000000000000000",
                DATA: "0000000000000000000000000000000000000000000000000000000000000000",
            },
        },
        Icon: {
            RELEASE: {
                TYPE: "PK",
                ADDRESS: "hx0000000000000000000000000000000000000000",
                DATA: "0000000000000000000000000000000000000000000000000000000000000000",
            },
        },
    },

    // WIP: Parser things.
    REDIS_HOST: "redis",
    REDIS_PORT: 6379,
    REDIS_EXPIRE: 7200,
    REDIS_DB : 1,

    // WIP: syncer things.
    REDIS_EVENT_HOST: 'redis',
    REDIS_EVENT_PORT: 6379,
    REDIS_EVENT_DB: 1,

    REDIS_EVENT_CHANNEL: process.env.PROFILE + 'priestNewBlock',
    REDIS_ETHEVENT_CHANNEL: process.env.PROFILE + 'ethNewBlock',
    REDIS_TERRAEVENT_CHANNEL: process.env.PROFILE + 'terraNewBlock',
    REDIS_KLAYTNEVENT_CHANNEL: process.env.PROFILE + 'klaytnNewBlock',

    REDIS_PUBLISHER_HOST: 'redis',
    REDIS_PUBLISHER_PORT: 6379,
    REDIS_PUBLISHER_DB: 1,

    REDIS_ETH_BRIDGE_CHANNEL: 'ethbridge',
    REDIS_TERRA_BRIDGE_CHANNEL: 'terrabridge',
    REDIS_ORBIT_BRIDGE_CHANNEL: 'orbitbridge',
    REDIS_KLAYTN_BRIDGE_CHANNEL: 'klaytnbridge',

    MIGRATE_BOTTOM_INCLUDE: 10000000,
    MIGRATE_TOP_EXCLUDE: 12785269,

    RPC_SERVER: 'http://localhost:8084',

    TERRA_BALANCE_INQUIRY_ENDPOINT: '/v1/terra/balance',

    ERC20_BALANCE_INQUIRY_ENDPOINT: '/v1/eth/getBalance',

    DB_CLIENT: 'mysql',
    DB_HOST: 'mysql',
    DB_PORT: '3306',
    DB_USER: 'root',
    DB_PASSWORD: 'password',
    DB_DATABASE: 'bridge',
    DB_CHARSET: 'utf8mb4',
    DB_MIN_POOL_SIZE: 2,
    DB_MAX_POOL_SIZE: 10,
    DB_MIGRATION_TABLE_NAME: 'knex_migrations',

    // dev 30 seconds
    REGISTER_INTERVAL: 30,
}
```

### Properties

The configuration file has the following configurable properties:

| Name                                    | Description                                                                                                                            |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| chainList                               | List of chains to provide bridging services.                                                                                           |
| BridgeAddress                           | Information such as contract and wallet address deployed to each chain for bridging service                                            |
| Endpoints                               | Public node endpoints to use for transaction verification                                                                              |
| VALIDATOR\_ACCOUNT                      | Validator private key for bridging transaction signing                                                                                 |
| OPERATOR\_ACCOUNTS                      | Account information to pay the tx fee when generating a transaction                                                                    |
| REDIS\_%                                | Redis instance related information to support communication and simple caching between parser/ syncer/ operator                        |
| MIGRATE\_%                              | Settings for syncer DB management                                                                                                      |
| DB\_%                                   | <p>DB-related settings to be used in syncer. <br>Note that editing this section may lead to discrepancies with docker-compose.yml.</p> |
| RPC\_SERVER, REGISTER\_INTERVAL, etc... | will be removed soon.                                                                                                                  |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bridge-docs.orbitchain.io/operator-guide/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
