# Chain ID

### Official Chain IDs <a href="#official-chain-ids" id="official-chain-ids"></a>

{% hint style="info" %}
The latest Chain ID (i.e highest Version Number) is the latest version of the software and mainnet.
{% endhint %}

::: ::: tab Testnets

| Name     | Chain ID      | Identifier | EIP155 Number | Version Number |
| -------- | ------------- | ---------- | ------------- | -------------- |
| BlockX   | blockx\_100-1 | blockx     | 100           | 1              |
| Atlantis | `blockx_50-1` | `blockx`   | `50`          | 1              |

### The Chain Identifier <a href="#the-chain-identifier" id="the-chain-identifier"></a>

Every chain must have a unique identifier or `chain-id`. Tendermint requires each application to define its own `chain-id` in the [genesis.json fields](https://docs.tendermint.com/master/spec/core/genesis.html#genesis-fields). However, in order to comply with both EIP155 and Cosmos standard for chain upgrades, BlockX-compatible chains must implement a special structure for their chain identifiers.

### Structure <a href="#structure" id="structure"></a>

The BlockX Chain ID contains 3 main components

* **Identifier**: Unstructured string that defines the name of the application.
* **EIP155 Number**: Immutable [EIP155](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md) `CHAIN_ID` that defines the replay attack protection number.
* **Version Number**: Is the version number (always positive) that the chain is currently running. This number **MUST** be incremented every time the chain is upgraded or forked in order to avoid network or consensus errors.

#### Format <a href="#format" id="format"></a>

The format for specifying and BlockX-compatible chain-id in genesis is the following:

```
{identifier}_{EIP155}-{version}
```
