# Set up Your Own Validator

The cross-chain transfer of tokens through the xAsset Bridge is efficient and highly secure. We have multiple validators to help confirm the correctness and security of transactions, ensuring that no malicious transactions or unexpected transactions occur. In addition, xAsset Bridge are compatible with the third parties register to be one of the validators to ensure sufficient decentralization.

## Validator Registration

#### Step 1. Get latest **validator server image**

You can get latest image from [docker hub](https://hub.docker.com/r/xyfinance/cross-chain-relay-validator)

#### Step 2. Run validator server with specific **environment variables**

Server listen port: `8004`

To run validator server properly, you must pass following environment variables when starting a container:

* `TOKEN_SYMBOL`: The token you want to validate.&#x20;

  Currently available symbols are:

  * XY
* `CC_VALIDATOR_KEY`: Private keys of validator EOA wallet, will be used to sign validated transaction. For example:&#x20;

  `28f56a15aef9105893fae9f2af4d2386b0a549ebe297c00708c494f5d53871d0`

#### Step 3. Expose server **endpoint** and verify

After server starts to run, the server endpoint needs to be exposed publicly in order to receive validate request. Make sure you can access `/signatures/crossChainRequests` from your server.

To verify server works properly, you may use following command for testing. If everything went good, it will return signatures of your validator.

```bash
curl -X GET "{your_server_domain}/signatures/crossChainRequests?srcChainId=1&requestId=88&destChainId=137&receiver=0x434d20f4286711530e945957f77384649c5301a7&amount=4141700000000000000000&fee=31002734678&txHash=0xfa287bb58af4b0c0e188abe4784a9e308e7b2302733ab7296f1bac5725a112fb"
```

#### Step 4. Fill registration form

Finally, fill this [form](https://forms.gle/soHFqG7bsBZNMbvC7) to inform us about your validator server.

We will add your server to our validator list after reviewed.
