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

DecentralChain Node

Run the chain
yourself

The node is the chain. It validates transactions, stores and produces blocks, talks to other nodes, and serves the REST API everything else on DecentralChain is built against. This page covers what it takes to run one, what producing blocks actually pays today, and the numbers come from the node source rather than from a brochure.
Version1.7.0RuntimeJava 25 (Temurin)ConsensusLeased Proof of Stake

On this page

  • What the node is
  • How LPoS picks a producer
  • What a producer earns
  • What it needs to run
  • Running one
  • Ports and peers
  • Checking it works
  • Where the details live

What the node is

A Scala full node, forked from Dcc 1.6.x, carrying the RIDE smart contract language and a REST API that stays compatible with the Dcc API. One process does all of it: transaction validation, block production and storage, peer communication, and extensions.

You do not need to produce blocks to run one. A node that only validates and serves the API is useful on its own, and it is what you want behind an application that should not depend on someone else's endpoint.

How LPoS picks a producer

Leased Proof of Stake decides who produces the next block by generating balance. Holders can lease their balance to a producer without giving up custody: the lease adds to that producer's generating balance, the coins never move, and the holder can cancel it. That is the leased part.

The thresholds are in GeneratingBalanceProvider, and there are two of them:

  • 10,000 DCC generating balance is the standing minimum to be allowed to produce a block.
  • 1,000 DCC applies instead, but only once the SmallerMinimalGeneratingBalance feature is activated on the network. Until then the 10,000 figure is the one that binds.
  • Generating balance is measured over a depth of 1,000 blocks (50 before the configured switch height), so a balance that arrived a moment ago does not count yet.

What a producer earns

Careful
There is no block reward on DecentralChain today. Feature 14, Block Reward and Community Driven Monetary Policy, has never activated: the node reports VOTING and GET /blockchain/rewards returns error 199. Producers earn transaction fees and nothing else.

Fees split under Next Generation: 40% to the block that includes the transaction and 60% to the producer of the following block. The node does carry an unused reward implementation of 6 DCC per block over 100,000-block terms, which is not running.

Careful
One address currently produces 100% of blocks. Be clear-eyed about what that means before you budget hardware: a new producer joins a network where block production is not currently distributed, and fee income on a chain with low transaction volume is small. Run a node because you want your own validating endpoint and a vote in what the chain does. Treat any yield as unproven.

What it needs to run

RequirementMinimumRecommended
Docker Engine25.xLatest stable
RAM4 GB8 GB
CPU2 cores4+ cores
Disk (mainnet, SSD)200 GB500 GB
Network100 Mbit/s1 Gbit/s
Inbound ports6868/tcp6868/tcp + 6869/tcp

Initial sync takes hours to days depending on disk and network. A fast SSD is the difference between the two.

Running one

Docker is the supported path. Keep the seed and password in an env file with chmod 600 that is never committed, and pass it with --env-file rather than putting secrets in your shell history.

docker
docker run -d \
--name dcc-node \
--restart unless-stopped \
-p 6868:6868 \
-p 6869:6869 \
-v dcc-data:/var/lib/dcc \
-e DCC_NETWORK=mainnet \
-e DCC_HEAP_SIZE=4g \
-e DCC_WALLET_SEED="$DCC_WALLET_SEED" \
-e DCC_WALLET_PASSWORD="$DCC_WALLET_PASSWORD" \
ghcr.io/decentral-america/node-scala:mainnet-latest

On bare metal you need a Java 25 JDK, Eclipse Temurin recommended, and the fat JAR built from the repository:

bare metal
java -Xmx4g \
-Djava.net.preferIPv4Stack=true \
-jar node/target/dcc-all-<version>.jar \
node/decentralchain-mainnet.conf
Careful
Anything that has held your seed should be treated as compromised if it leaks. The DCC_WALLET_SEED variable is not written to logs, which is not the same as being safe on a machine you do not control.

Ports and peers

Each network runs its own P2P port and ships its own known peers. The REST API listens on 6869 and, on mainnet, binds to 127.0.0.1 by default. Leave it that way unless you intend to publish it, and put a reverse proxy in front if you do.

NetworkP2P portKnown peers
mainnet6868168.119.116.189 · 135.181.87.72 · 35.158.218.156 · 52.48.34.89
testnet6863159.69.126.149 · 94.130.105.239 · 159.69.126.153 · 94.130.172.201
stagenet686288.99.185.128 · 95.216.205.3 · 49.12.15.166 · 88.198.179.16

Mainnet and testnet want at least 5 connections, stagenet 3. The defaults live in node/src/main/resources/network-defaults.conf.

Checking it works

health
# Status: expect stateHeight == blockchainHeight, updatedTimestamp recent
curl -s http://localhost:6869/node/status | python3 -m json.tool
 
# Your height against a known peer
curl -s http://localhost:6869/blocks/height
curl -s http://168.119.116.189:6869/blocks/height

More than 100 blocks behind a peer means it is still syncing, which is normal on a first start. If height stops moving after sync completes, restart and search the logs for Fork or InvalidBlock.

Where the details live

  • RUNBOOK.md in the node repository: starting, health, sync, wallet management, log handling, upgrades and graceful shutdown.
  • docker/README.md for a complete Docker Compose setup.
  • node/src/main/resources/network-defaults.conf for per-network ports, peers and consensus parameters.
  • infra/LEASING-CUSTODY-DESIGN.md for how generator stake is held through leasing, and its threat model.

Next

node-scala on GitHub

The node source, the runbook, the Docker images and the network configs.

Next

Node, in the manual

What a node is, what it stores, and how it talks to the rest of the network.