Skip to content

Choose a tag to compare

@trevormil trevormil released this 18 Feb 12:29

v24 Latest

🔧 BitBadges Chain Upgrade — v24
📦 [Release v24](https://github.com/BitBadges/bitbadgeschain/releases/tag/v24) • 🆕 [Latest Release](https://github.com/BitBadges/bitbadgeschain/releases/latest)

Upgrade Name: v24
Upgrade Block Height: 8890000
Estimated Time: 2/24/2026, 11:19:18 AM EST

Summary of update: This upgrade removes CosmWASM, adds full EVM compatibility with JSON-RPC API and ERC20 support, renames the badges module to tokenization, and introduces Interchain Queries for cross-chain token ownership verification.

🚨 Important Instructions for Node Operators
To successfully upgrade your node to v24 please follow these steps:

Download the New Binary
Download the latest v24 binary from the [release page](https://github.com/BitBadges/bitbadgeschain/releases/tag/v24).

Place Binary in the Correct Path
Move the new binary to:

<your_node_home>/cosmovisor/upgrades/v24/bin/
Ensure Correct Naming
Rename the binary file to:

bitbadgeschaind
This is required for nodes using the default Cosmovisor configuration.

Check Executable Permissions
Ensure the binary is executable:

chmod +x <your_node_home>/cosmovisor/upgrades/v24/bin/bitbadgeschaind
Verify Setup
Run the following to confirm the version and setup:

<your_node_home>/cosmovisor/upgrades/v24/bin/bitbadgeschaind version
Cosmovisor Will Auto-Switch
Cosmovisor will automatically switch to the new binary at the specified block height. If your node does not have the correct setup, it will halt and could be slashed.

📚 For full setup and operational details, see the [Run a Node documentation](https://docs.bitbadges.io/for-developers/bitbadges-blockchain/run-a-node).

⚠️ CosmWASM Removal and EVM Addition

This upgrade includes major architectural changes:

CosmWASM Removal:

  • The CosmWASM module has been completely removed from the chain
  • WASM stores (wasm-store and wasmx-store) are deleted during the upgrade
  • No WASM library installation is required - the libwasmvm library is no longer needed
  • If you previously had libwasmvm installed, you can optionally remove it (not required)

EVM Integration:

  • Full Ethereum Virtual Machine (EVM) compatibility has been added via the cosmos/evm module
  • New stores are added: evm, erc20, feemarket, and precisebank
  • The chain now supports:
    • JSON-RPC API - Standard Ethereum JSON-RPC endpoints (port 8545)
    • ERC20 Wrapping - Native Cosmos coins can be wrapped as ERC20 tokens
    • Custom Precompiles - Direct access to tokenization, Gamm, and SendManager modules from Solidity
    • Dual Wallet Support - Same address works for both Cosmos and EVM transactions
    • EVM Chain IDs: Mainnet (50024), Testnet (50025), Local dev (90123)

Precompiles Available:

  • Default Cosmos precompiles (0x0800-0x0806): Staking, Distribution, ICS20 (IBC), Vesting, Bank, Governance, Slashing
  • Custom BitBadges precompiles:
    • 0x1001 - Tokenization precompile (create collections, transfer tokens, manage approvals)
    • 0x1002 - Gamm precompile (AMM liquidity pool operations)
    • 0x1003 - SendManager precompile (send native Cosmos coins from EVM)

📝 Notable Changes in v24

  • CosmWASM removed - WASM and WASMX modules completely removed from the chain
  • EVM integration added - Full Ethereum Virtual Machine compatibility via cosmos/evm module
  • ERC20 support - Native Cosmos coins can be wrapped as ERC20 tokens
  • Custom precompiles - Tokenization, Gamm, and SendManager accessible from Solidity smart contracts
  • JSON-RPC API - Standard Ethereum JSON-RPC endpoints for Web3 compatibility
  • Badges module renamed to tokenization - Module renamed throughout the codebase (store key badgestokenization, all data preserved)
  • Store migrations - WASM stores deleted, EVM stores (evm, erc20, feemarket, precisebank) added
  • EVM Chain ID validation - Chain ID is automatically validated and set during upgrade based on binary build configuration
  • Binary builds - Production binaries are built with chain IDs compiled in (mainnet: 50024, testnet: 50025)
  • Interchain Queries (ICQ) - Cross-chain token ownership verification via IBC (see below)

🔧 For Developers

Module Rename:

  • The badges module has been renamed to tokenization throughout the codebase
  • All existing data is preserved - the store key is renamed during migration
  • API endpoints, CLI commands, and module paths now use tokenization instead of badges
  • This is a cosmetic change - all functionality remains the same

EVM Integration:

  • Connect to EVM JSON-RPC at port 8545 (mainnet: https://evm-rpc.bitbadges.io, testnet: https://evm-rpc-testnet.bitbadges.io)
  • Use standard Ethereum tooling: MetaMask, ethers.js, web3.js, Hardhat, Foundry
  • Precompile addresses are fixed and documented in the EVM Integration Guide
  • Chain IDs are set at build time - ensure you're using the correct binary for your network

Breaking Changes:

  • CosmWASM contracts are no longer supported - migrate any WASM-based functionality to Solidity
  • Module import paths changed from x/badges to x/tokenization (for Go developers)

🌐 Interchain Queries (ICQ)

BitBadges now supports Interchain Queries that allow other Cosmos chains to verify token ownership without transferring tokens. This enables cross-chain gating, proof-of-ownership, and other interoperability use cases.

Two Query Types:

  1. OwnershipQuery - Streamlined lookup for a single (tokenId, ownershipTime) → returns exact balance amount
  2. FullBalanceQuery - Returns complete UserBalanceStore (balances, approvals, permissions)

Capabilities:

  • Query exact balance amount for a specific token ID and ownership time from any IBC-connected chain
  • Get full balance store including approvals and permissions
  • Bulk queries for up to 100 addresses per packet
  • Support for both bech32 and EVM hex address formats

IBC Channel Setup:

  • Port: tokenization
  • Version: tokenization-1
  • Channel Ordering: UNORDERED

Precompile Query Methods (Updated):

  • getBalanceAmount - Now takes single tokenId and ownershipTime (not arrays)
  • getTotalSupply - Now takes single tokenId and ownershipTime (not arrays)
  • getBalance - Returns full UserBalanceStore (unchanged)

Use Cases:

  • Cross-chain token gating
  • DeFi collateral verification
  • Multi-chain identity credentials
  • Cross-chain governance voting weights
  • Cross-chain approval checking

📚 See Cross-Chain Queries documentation for implementation details.