DecentralChainDecentralChain
  • Technologysubmenu
    Why DecentralChainWhat sets this chain apartHow the chain worksPublic blocks, public validatorsBlockchain featuresWhat is on, what is being voted onFinalityThe rollback bound, and what is unverifiedRIDEContracts that cannot run foreverFor machinesUnsigned transactions and RIDE in processSolana bridgePhantom and Solflare, mainnet onlyNetwork statusHeight, sync and peers, read live
  • Ecosystemsubmenu
    DCC public saleOpens 26 SeptemberDecentralCoinSupply, allocation and tokenomicsDecentral.ExchangeexternalDecentralPropDecentralScansoonCubensis ConnectDecentralAmericasoon
  • Developerssubmenu
    QuickstartRead, compile and composeREST APIEvery endpoint, no key, no accountSDK packages19 on npm, 5 in the workspaceSigningAuthorising without custodyMCP & AgentsThe chain, and the tools we have builtDecentralChain NodeRun a validator, and what LPoS pays
  • Communitysubmenu
    ChannelsTelegram, X and the reposDCC AirdropAllocated, not yet arrangedGovernanceWho can actually decide anythingBrand kitThe mark, and how to use it
  • Documentation
XGitHub
Start buildingarrow
DecentralChainDecentralChain

An open Layer-1 with Leased Proof of Stake.

Native token: DecentralCoin (DCC)

Fixed supply 100,000,000 DCC
Minted at genesis, never inflated

  • X
  • GitHub
  • Telegram

Build

  • Quickstart
  • REST API
  • SDK packages
  • Signing
  • MCP & Agents
  • Documentation

Ecosystem

  • DCC public sale
  • DecentralCoin
  • Decentral.Exchange
  • DecentralProp
  • DecentralSwap
  • Cubensis Connect

Network

  • Blockchain features
  • Finality
  • RIDE
  • Solana bridge
  • Run a node
  • Network status

Project

  • Community
  • DCC Airdrop
  • Governance
  • Brand kit
  • GitHub
mainnetHeight—Node—read from your browser
© 2026 DecentralChainOperated by DecentralExchange · Cédula Jurídica 3-102-956858
Jacó, Garabito, Costa Rica
TermsPrivacySecurityLicensingdecentralchain.io

Blockchain features

The chain upgrades
by vote

Every protocol change on DecentralChain ships dormant, carries a number, and stays off until block producers vote it on. Nothing is pushed. The table below is read live from a mainnet node, so it is the network's own answer rather than a snapshot that goes stale.
Voting window20,000 blocksThreshold18,000 blocksImplemented27 features

On this page

  • What a feature is
  • How one gets switched on
  • What an operator controls
  • Why it is not per-node
  • Where the chain stands now
  • Written but not yet on mainnet
  • Who decides today

What a feature is

A feature is a change to the rules the chain validates by. Each one gets a short numeric id and an entry in BlockchainFeature.scala, and the code for it ships inside the node long before it does anything. Until the network activates it, the node reads that code and skips it.

That is what makes an upgrade safe here. Operators install a release that contains the new rules, nothing changes, and the rules take effect later at a height everyone agrees on. No coordinated restart, no flag day.

How one gets switched on

A feature moves through exactly three states, and only forward:

  • Undefined. Known to the node, receiving votes, not yet over the line.
  • Approved. It cleared the threshold in a voting window. The rules are still not live.
  • Activated. One more window has passed and the rules now apply to every block. The height it happened at is permanent.

On DecentralChain mainnet a window is 20,000 blocks and a feature needs 18,000 of them to signal support, which is 90%. The gap between approved and activated is deliberate: it gives anyone still on an old release a full window to upgrade after the outcome is known but before it bites.

What an operator controls

One list in the node config. Any feature id you put in supported is signalled in every block your node produces.

decentralchain-mainnet.conf
dcc {
features {
# Vote for feature 14 and feature 1 in every block this node produces.
supported = [14, 1]
 
# Stop rather than follow a chain this node cannot validate.
auto-shutdown-on-unsupported-feature = yes
}
}
Note
Voting weight is block production, not node count. A node that never produces a block never casts a vote, however long it runs. Standing up a hundred validating nodes changes nothing; the signal rides in produced blocks, so influence tracks your share of them.

Why it is not per-node

Careful
Features are network-wide, not a plugin you enable for yourself. A feature is a change to what counts as a valid block. Once it activates, it applies to every node, and there is no configuration that opts your node out while keeping it on the network.

The node is explicit about this. auto-shutdown-on-unsupported-feature = yes is the default, and it means what it says: if the network activates something your release does not implement, your node stops rather than carrying on. That is the safe failure. A node that kept running would be validating against rules the rest of the network has left behind, accepting blocks everyone else rejects, and quietly serving an API for a chain nobody else is on.

So supported is a ballot, not a switch. It says which changes you want the network to adopt. What it cannot do is give you a different set of rules from everyone else, because a blockchain where nodes disagree about the rules is two blockchains.

Where the chain stands now

Reading the network…

Written but not yet on mainnet

Careful
Mainnet is behind the codebase. The public node reports DCC v1.3.5 while node-scala is at 1.7.0. The running network only knows features 1 to 16, so the eleven below cannot be voted on at all until operators upgrade. They are not waiting on a vote; they are waiting on a release.
#FeatureWhat it would add
17Ride V6, MetaMask supportRIDE V6 and MetaMask support.
18Consensus and MetaMask updatesConsensus and MetaMask updates.
19Block Reward DistributionSplits the block reward between producer and configured addresses.
20Capped XTN buy-back & DAO amountsCaps the XTN buy-back and DAO amounts.
21Cease XTN buy-backEnds the XTN buy-back.
22Light NodeLight node: validate without holding the full state.
23Boost Block RewardTemporarily boosts the block reward.
24ecrecover fixFixes ecrecover, the Ethereum signature-recovery opcode.
25Deterministic Finality & RIDE V9Deterministic finality and RIDE V9.
28Modern Groth16 verifierA modern Groth16 verifier, arkworks wire format, snarkjs and circom compatible. Needs every node upgraded before it can activate.
30InvokeScript version gating and per-step feeGates old InvokeScript versions against V5+ dApps, and charges a per-step fee when a V3 invoke calls a pre-V5 dApp.

Who decides today

Careful
One address currently produces 100% of blocks. Since votes ride in produced blocks, that operator alone can reach 18,000 of 20,000 on any feature, and no one else can reach it without them. Feature governance on DecentralChain is a single party today.

This matters most for feature 14. Activating block rewards would end the fixed supply, and the vote needed to do it is inside one operator's control. Anyone relying on 100,000,000 DCC being permanent should read it as a commitment that can be kept rather than a property of the protocol. Distributing block production is what would change that, and it is the reason running a producer is worth something beyond fee income.

Next

BlockchainFeature.scala

Every feature id, its description, and the code each one gates.

Next

The DecentralChain chapter

Accounts, blocks, transactions, tokens and the binary format, written out in full.