# Lausanne Upgrade Instructions (v2.3.0-bkc)

## Before Upgrading

* This upgrade may involve some downtime. Please ensure you have a maintenance plan in place **before proceeding** with the following upgrade instructions.
* During the upgrade, your Geth (go-ethereum) node will be temporarily unavailable to the KUB network.
* After upgrading to the new version, your node may take approximately **5 to 15 minutes** to resynchronize with the latest blockchain information.
* We **strongly recommend** creating a disk snapshot **before upgrading** to prevent any potential data loss during the process.

## Instructions

Ensure the Geth node is fully stopped before proceeding with the upgrade

```bash
systemctl stop geth
```

Download and extract the Geth v2.3.0 binary from the official GitHub releases

```bash
wget https://github.com/kub-chain/bkc/releases/download/v2.3.0-bkc/geth2.3.0.linux-amd64.tar.gz
tar -xvf ./geth2.3.0.linux-amd64.tar.gz -c /usr/bin/
```

Grant the necessary execution permissions to the downloaded binary

```bash
sudo chmod +x /usr/bin/geth
```

Confirm that the correct version has been installed

```shellscript
/usr/bin/geth version
```

The expected output must be: `v2.3.0-bkc`

```shellscript
Geth
Version: 2.3.0-bkc-stable
Git Commit: ccc47eed26444e7fc262705fd1c3561119da1664 # This may be different
Git Commit Date: 20250506 # This may be different
...
```

Retrieve the latest `genesis.json` via the following command

```bash
wget https://raw.githubusercontent.com/kub-chain/bkc-node/main/mainnet/genesis.json
```

Verify that the downloaded file contains the required hard fork configuration

```bash
cat ./genesis.json
```

The output should contain the following field:

<pre class="language-json"><code class="lang-json">{
  ...
  "lausanneBlock": &#x3C;hard-fork-block>,
  ...
<strong>}
</strong></code></pre>

Apply the new `genesis.json`

```bash
/usr/bin/geth --datadir /bkc-node/mainnet/data init ./genesis.json
```

{% hint style="warning" %}
The data directory path used in the guide may differ from your actual environment. Verify your data directory path before executing any command and substitute it accordingly.
{% endhint %}

Start the Geth service to resume normal operation

```bash
systemctl start geth
```

Monitor the output logs to confirm the node has started successfully and is operating as expected

```bash
journalctl -fu geth
```
