KUB Docs
  • Introduction to KUB
  • Connect to KUB
  • KUB PoS
    • Increase block gas limit to 90M
    • Update GasPrice Instruction
    • Incident from chaophaya hardfork
    • Overview
    • Considerations
    • Validator Node
      • Node Requirements
      • Run Validator Node
      • Validator Staking
      • StakeManager Contract
      • ValidatorShare Contract
      • Slashing
    • Run Full Node
    • Run Archive Node
    • Chaindata Snapshot
    • Migration PoSA to PoS
    • Delegator
      • How to delegate
      • How to claim reward
      • How to unstake
    • Lausanne Upgrade
  • Developer Center
    • ✨Getting Started
    • 🏆Project Tiers
    • 👨‍💻Connect Bitkub NEXT to register as a new user
    • ✔️Verify your identity via Bitkub NEXT (KYC or KYB)
    • 💰Subscribe to the KUB Developer Package
    • 🗳️Submit your project
      • 📗Create submit project
      • 📘Manage your project
        • Submit project
        • Create a new project version
        • Status of project version
      • 📙Manage project information
  • KUB SDK
    • NEXT SDK
      • NEXT SDK Code Cookbook
      • KUB SDK Compatible Smart Contract
        • Example Smart Contract for Testing
        • Example KUB SDK Compatible KAP20 Smart Contract
        • Example KUB SDK Compatible KAP721 Smart Contract
  • KUB Playground
    • Quick Start Guide on KUB Playground
  • KUB Layer 2
  • KUB Scan
  • RPC Service
    • JSON-RPC Endpoint
  • IPFS Service
    • IPFS Guideline
  • FAQ
  • Glossary
  • Reference and Service
    • KUB Whitepaper Version 3.3
    • Technical Paper Version 3.2
    • KUB Explorer
    • KUB Faucet
    • KUB Oracle
    • KUB Bridge
    • KKUB OTP
Powered by GitBook
On this page
  • Before Upgrading
  • What's Changed
  • Protocol Parameters Now Governed On-Chain
  • New Features
  • Validator Reactivation Function
  • Partial Unstaking
  • Upgrade Instructions
  • 1. Stop Geth
  • 2. Update Geth
  • 3. Update Genesis.json
  • 4. Start the Geth service

Was this helpful?

  1. KUB PoS

Lausanne Upgrade

PreviousHow to unstakeNextDeveloper Center

Last updated 7 days ago

Was this helpful?

Before Upgrading

  • This upgrade may involve some downtime. Please ensure a maintenance plan is in place before proceeding with the following upgrade instructions.

  • During the upgrade, your Geth node will be temporarily unavailable to the KUB network. After upgrading to the new version, the node may take approximately 5 to 15 minutes to resynchronize with the latest blockchain head.

  • We strongly recommend creating a disk snapshot before upgrading to prevent any potential data loss during the process; however, this is optional.

What's Changed

Protocol Parameters Now Governed On-Chain

Key staking and slashing thresholds are now defined as on-chain variables, allowing future adjustments through governance proposals:

  1. Staking Parameters

    1. minimumPoolStake: Minimum KUB required to run a pool node (supports )

    2. minimumPoolDelegate: Minimum KUB required to delegate to a pool

    3. minimumSoloStake: Minimum KUB required to run a solo validator node

    4. soloSlashRate: The penalty rate applied when a solo validator is slashed (expressed as a percentage of stake to be penalized) (supports )

  2. Slashing Parameters

    1. slashEpochThreshold: Number of consecutive missed epochs allowed before a validator becomes slashable

    2. slashEpochSize: Size of each slashing epoch; missed block counters reset at the start of a new epoch

New Features

Validator Reactivation Function

  • Allows validators removed from the candidate list (e.g., due to temporary issues or missed conditions) to reactivate themselves

  • Reactivation is permitted once the validator meets the minimum stake again

  • No manual network intervention is required

Partial Unstaking

  • Validators can now unstake a portion of their funds without closing their node

  • The remaining stake must stay above the required minimum to keep the validator active

  • Improves fund flexibility, especially if minimum thresholds are adjusted via governance

Upgrade Instructions

1. Stop Geth

Please make sure that your Geth node is stopped before the upgrade.

systemctl stop geth

2. Update Geth

Download the Geth v2.3.0 from GitHub.

// Download
wget https://github.com/kub-chain/bkc/releases/download/v2.3.0-bkc/geth2.3.0.linux-amd64.tar.gz
// Extract
tar -xvf ./geth2.3.0.linux-amd64.tar.gz -C /usr/bin/

Allow the file permission.

sudo chmod +x /usr/bin/geth

Make sure you have downloaded the upgraded version.

/usr/bin/geth version

You should see the binary version, it should be v2.3.0-bkc.

Geth
Version: 2.3.0-bkc-stable
Git Commit: 5c4b28fb17389a230451d02d3c59324a770855e3
Git Commit Date: 20250508
...

3. Update Genesis.json

Download the latest genesis.json.

# Download the genesis file
wget https://raw.githubusercontent.com/kub-chain/bkc-node/main/mainnet/genesis.json

Make sure the version that you have downloaded contains the hard fork configurations.

cat ./genesis.json

The output should contain the following:

{
  ...
  lausanneBlock: 25677934,
  ...
}

Apply the new Genesis.json file.

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

4. Start the Geth service

Please review the outputs and logs to ensure that everything is functioning correctly.

systemctl start geth && journalctl -fu geth

These values remain unchanged at launch and are only updatable through governance voting. They are publicly viewable via .

https://vote.kubchain.com/en/proposals/5
https://vote.kubchain.com/en/proposals/3
kubscan.com