# Running the Client

## Running an EO AVS data validator

EO **operator activation:** Ensure your account has been activated. To check your current status, run the following (1 is activated, 0 is not).&#x20;

```bash
cast call 0x4E70004b01987B4fd7DAcab348F0B39E9AE26110 "isValidatorActive(address validator)" <your alias address> -r https://rpc.eo.app | cast 2d
```

Follow us on [X (formerly known as Twitter)](https://x.com/eoracle_network) to see activation windows and more helpful info.\
\
For technical issues, please contact the EO team [here](https://discord.gg/eonetwork) on the operators-technical-help channel.&#x20;

Note: Access to our client source code is currently restricted; however, interested parties may contact <support@eo.app> to review the client for security reasons.

### Run using docker

Navigate to the data validator directory.&#x20;

```bash
cd data-validator
```

Run the docker.&#x20;

```
docker compose up -d
```

The command will start the data validator container. If you execute `docker ps` you should see an output indicating the `eo-data-validator` container has the " Up " status with ports assigned. You may view the container logs using

```bash
docker logs -f <container_id>
```

<details>

<summary>Data Validator V1 logs</summary>

The following example log messages confirm that your EO data validator software is up and running. Please ensure that your alias is declared and activated.&#x20;

```sh
2024-04-11 22:32:04 <1> 2024-04-11T19:32:04.467Z info:  Validator restarts on events: OnConfigChange
2024-04-11 22:32:04 <1> 2024-04-11T19:32:04.469Z info:  Health endpoints are available through port: 9000
2024-04-11 22:32:04 <1> 2024-04-11T19:32:04.469Z info:  Prometheus metrics are available through port: 9100
2024-04-11 22:32:05 <1> 2024-04-11T19:32:05.041Z info:  sent transaction b4f25b20a25c442dd0cb629395ce4b0859b3110f39b617ba5d4a112c5199a2a0 [nonce:0]  to block 256 ---<some_data> ---duration: 0.083 ---block received at 2024-04-11T19:32:04.958Z
2024-04-11 22:32:06 <1> 2024-04-11T19:32:06.130Z info:  sent transaction 191351c865a81379bace9c94d19fd605fddac04ba738d67bfd42d6618f97a322 [nonce:1]  to block 257 ---<some_data> ---duration: 0.03 ---block received at 2024-04-11T19:32:06.100Z
2024-04-11 22:32:07 <1> 2024-04-11T19:32:07.257Z info:  sent transaction 118e70a76fa0e65bcc7664b8b1feb6d6e820c0fc38d28968a5175e8b66b088ca [nonce:2]  to block 258 ---<some_data> ---duration: 0.022 ---block received at 2024-04-11T19:32:07.232Z
2024-04-11 22:32:08 <1> 2024-04-11T19:32:08.334Z info:  sent transaction cd825772a985ba01744712ffffea4376d7ab950e4f1cbf502f5c1189b79374a9 [nonce:3]  to block 259 ---<some_data> ---duration: 0.018 ---block received at 2024-04-11T19:32:08.316Z
2024-04-11 22:32:09 <1> 2024-04-11T19:32:09.504Z info:  sent transaction ef1b958dad78ca229c9efeff281e7691956634e6aa588fc03a5554b5800865ad [nonce:4]  to block 260 ---<some_data> ---duration: 0.016 ---block received at 2024-04-11T19:32:09.488Z
2024-04-11 22:32:10 <1> 2024-04-11T19:32:10.671Z info:  sent transaction 322f19fe10759660a8328bd8be6974ef9be5fac861e6069548380d277998091b [nonce:5]  to block 261 ---<some_data> ---duration: 0.021 ---block received at 2024-04-11T19:32:10.650Z
2024-04-11 22:32:11 <1> 2024-04-11T19:32:11.778Z info:  sent transaction f3e3a27fa1adcd3a89336b14e8342e60b943e9376f11c416128689d1e06d17dd [nonce:6]  to block 262 ---<some_data> ---duration: 0.016 ---block received at 2024-04-11T19:32:11.762Z
2024-04-11 22:32:12 <1> 2024-04-11T19:32:12.958Z info:  sent transaction f1310e2e16f873a7f121f0359e48a9d0b5de7cb887df6174081e8d2977d231c2 [nonce:7]  to block 263 ---<some_data> ---duration: 0.018 ---block received at 2024-04-11T19:32:12.940Z
2024-04-11 22:32:14 <1> 2024-04-11T19:32:14.135Z info:  sent transaction c3fed5490435682dfee86b15725ab1514d9f5802e8c7fc5e0f39a43c71bed4fc [nonce:8]  to block 264 ---<some_data> ---duration: 0.014 ---block received at 2024-04-11T19:32:14.121Z
2024-04-11 22:32:15 <1> 2024-04-11T19:32:15.260Z info:  sent transaction fa0017193eaef5f8b465ccbcb86fb3789d567ed34c688efcc5abc80915ccf0cd [nonce:9]  to block 265 ---<some_data> ---duration: 0.029 ---block received at 2024-04-11T19:32:15.231Z
2024-04-11 22:32:16 <1> 2024-04-11T19:32:16.399Z info:  sent transaction 5259a10f8dd43acc8e3f66e97b8489299d20caad9f0da0344ed9dea413f3bcf6 [nonce:10]  to block 266 ---<some_data> ---duration: 0.021 ---block received at 2024-04-11T19:32:16.378Z
2024-04-11 22:32:17 <1> 2024-04-11T19:32:17.505Z info:  sent transaction f0bfeb6223f3bd09ef8f251bb05b3c5c81b1c02ea555c5a2846077e11c145e31 [nonce:11]  to block 267 ---<some_data> ---duration: 0.013 ---block received at 2024-04-11T19:32:17.492Z
```

</details>

<details>

<summary>Data Validator V2 logs</summary>

The following example log messages confirm that your EO data validator software is up and running. Please ensure that your alias is declared and activated.&#x20;

```
{"lvl":"INF","component":"validator","healthEndpointsPort":9000,"prometheusPort":9100,"dataPort":9200,"t":"2025-03-28T17:43:24.921","msg":"HTTP servers started"}
{"lvl":"INF","component":"validator","configProvider":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","registryContractAddress":"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512","ovsAddresses":"HashSet\n0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","mainAddress":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8","keyStorePath":"/Users/eodata/Projects/core/go-datavalidator/.keystore","t":"2025-03-28T17:43:25.663","msg":"configProvider started"}
{"lvl":"INF","component":"validator","t":"2025-03-28T17:43:25.741","msg":"configProvider is running"}
{"lvl":"INF","component":"validator","t":"2025-03-28T17:43:25.741","msg":"calling onSourcesChange"}
{"lvl":"INF","component":"validator","t":"2025-03-28T17:43:25.741","msg":"initFeedsReporting started"}
{"lvl":"INF","component":"validator","time":"2025-03-28T19:43:25.742","t":"2025-03-28T17:43:25.742","msg":"feeds reporting initializing..."}
{"lvl":"INF","component":"validator","source":"coinbase","sourceID":"4","wsMsg":"{\"type\":\"subscribe\",\"product_ids\":[\"USDT-USD\",\"ARB-USD\",\"AVAX-USD\",\"BTC-USD\",\"SWELL-USD\",\"SOL-USD\",\"FIL-USD\",\"DOGE-USD\",\"MATIC-USD\",\"DAI-USD\",\"ETH-USD\",\"DOT-USD\",\"SHIB-USD\",\"LINK-USD\",\"UNI-USD\",\"XRP-USD\",\"LTC-USD\",\"ADA-USD\",\"OP-USD\"],\"channels\":[\"ticker\",\"heartbeat\"]}","t":"2025-03-28T17:43:26.310","msg":"subscribe message"}
{"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","symbols":["OPUSDT","LTCUSDT","ZRCUSDT","AVAXUSDT","ARBUSDT","LINKUSDT","DOTUSDT","MANTAUSDT","TRXUSDT","SWELLUSDT"],"t":"2025-03-28T17:43:26.554","msg":"preparing subscription request for chunk"}
{"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","symbols":["SOLUSDT","TONUSDT","FTMUSDT","DAIUSDT","TRUMPUSDT","XRPUSDT","TAIKOUSDT","ADAUSDT","PLUMEUSDT","DOGEUSDT"],"t":"2025-03-28T17:43:26.554","msg":"preparing subscription request for chunk"}
{"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","symbols":["ETHUSDT","SUSDT","USDCUSDT","BBUSDT","FILUSDT","BTCUSDT","BNBUSDT"],"t":"2025-03-28T17:43:26.554","msg":"preparing subscription request for chunk"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:ADA_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:XRP_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:TON_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:DOGE_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:BB_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:BNB_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:SOL_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:LTC_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:TRX_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:MODE_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:BTC_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:TAIKO_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:SHIB_USDT","t":"2025-03-28T17:43:26.655","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:DOT_USDT","t":"2025-03-28T17:43:26.655","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:ETH_USDT","t":"2025-03-28T17:43:26.655","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","conn_id":"f87ff096-c6ef-4594-817a-c15c0cc1af4a","t":"2025-03-28T17:43:26.735","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","conn_id":"f87ff096-c6ef-4594-817a-c15c0cc1af4a","t":"2025-03-28T17:43:26.737","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","conn_id":"f87ff096-c6ef-4594-817a-c15c0cc1af4a","t":"2025-03-28T17:43:26.737","msg":"subscription successful"}
{"lvl":"INF","component":"validator","source":"gateio","sourceID":"19","symbols":["\"USDC_USDT\"","\"MANTA_USDT\"","\"ZRC_USDT\"","\"TRUMP_USDT\"","\"SHIB_USDT\"","\"S_USDT\"","\"ETH_USDT\"","\"LTC_USDT\"","\"LINK_USDT\"","\"TRX_USDT\"","\"SOL_USDT\"","\"DOT_USDT\"","\"ARB_USDT\"","\"BTC_USDT\"","\"TON_USDT\"","\"PLUME_USDT\"","\"BNB_USDT\"","\"ADA_USDT\"","\"DOGE_USDT\"","\"XRP_USDT\"","\"DAI_USDT\"","\"SWELL_USDT\"","\"OP_USDT\"","\"SOV_USDT\"","\"FIL_USDT\""],"t":"2025-03-28T17:43:27.234","msg":"subscribing to symbols"}
{"lvl":"INF","component":"validator","connection":"localnonce","txHash":"0x91162245ec4d22d206434ea94956467272460afb50b1d6460d2d417fc104f8d2","blockNumber":"6778","blockHash":"0x1f691748aabcb8797928d1a6d4f140d3742ad0fe9b7e057fe35a542bae4080b3","gasUsed":5612449,"effectiveGasPrice":"50000007","accepted":true,"sendingDuration":2.186042,"waitingDuration":3002.025833,"t":"2025-03-28T17:43:30.904","msg":"received receipt for transaction"}
{"lvl":"INF","reporter":"eochain","blockNumber":"6777","aggregatorAddress":"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","aggregatorReportsCount":1,"blockAppeared":"2025-03-28T17:43:27.895","txHash":"0x91162245ec4d22d206434ea94956467272460afb50b1d6460d2d417fc104f8d2","t":"2025-03-28T17:43:30.904","msg":"quotes reported"}
{"lvl":"INF","component":"validator","connection":"localnonce","txHash":"0x146940e6a43805d781ba46ad3323ed037ead7c11486335a6dcbb62550c4e5d0f","blockNumber":"6779","blockHash":"0xbb4b7df9a83f8042d8948842eb6d46309f002087dceba48284d72625cb19c5ed","gasUsed":5698033,"effectiveGasPrice":"50000007","accepted":true,"sendingDuration":2.798292,"waitingDuration":2995.488624,"t":"2025-03-28T17:43:33.904","msg":"received receipt for transaction"}
{"lvl":"INF","reporter":"eochain","blockNumber":"6778","aggregatorAddress":"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","aggregatorReportsCount":1,"blockAppeared":"2025-03-28T17:43:30.903","txHash":"0x146940e6a43805d781ba46ad3323ed037ead7c11486335a6dcbb62550c4e5d0f","t":"2025-03-28T17:43:33.905","msg":"quotes reported"}
{"lvl":"INF","component":"validator","connection":"localnonce","txHash":"0x3540297cd201b02891f9a4faeed59e0b4d3e5e9c91af774ad644f434461d47bb","blockNumber":"6780","blockHash":"0x75b72660a0aae20c2d1afbc01a28e792fbefa3fcaac3a43f11b9a69b123a4d61","gasUsed":5695245,"effectiveGasPrice":"50000007","accepted":true,"sendingDuration":2.5475,"waitingDuration":2995.831167,"t":"2025-03-28T17:43:36.906","msg":"received receipt for transaction"}
{"lvl":"INF","reporter":"eochain","blockNumber":"6779","aggregatorAddress":"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","aggregatorReportsCount":1,"blockAppeared":"2025-03-28T17:43:33.904","txHash":"0x3540297cd201b02891f9a4faeed59e0b4d3e5e9c91af774ad644f434461d47bb","t":"2025-03-28T17:43:36.906","msg":"quotes reported"}
```

</details>

### Stop EO data validator

To bring the containers down, run the following command:

```bash
cd operator-setup/data-validator
docker compose down
```

### Upgrade EO data validator

Upgrade the AVS software for your EO data validator by following the steps below:

1. Pull the latest repo

```bash
cd operator-setup
git pull
```

3. Merge .env changes. Go over `.example_env` or `.example_env_holesky` and merge new fields that do not appear in your local .env file
   1. The structure of `.example_env*`  have been changed to support data validator V2
4. Pull the latest docker images

```bash
cd data-validator
docker compose pull
```

5. Stop the existing services

```bash
docker compose down
```

6. Start your services again. If any specific instructions need to be followed for any upgrade, those instructions will be given with the specific release notes. Please check the latest [release notes](https://github.com/Eoracle/Eoracle-operator-setup/releases) on Github and follow the instructions before starting the services again.

```bash
docker compose up -d
```
