Celereum Documentation

Complete technical reference for the Celereum blockchain with VRF-based committee consensus.

Overview

Celereum is a high-performance Layer 1 blockchain with a unique VRF-based committee consensus mechanism. Instead of traditional mining or staking-only validation, Celereum uses 4 specialized roles selected through Verifiable Random Functions (VRF) weighted by reputation.

Key Features

  • • 800ms block time
  • • ~1.6 second finality (2 blocks)
  • • Up to 35,000 TPS capacity
  • • VRF-based fair committee selection
  • • 4 specialized validator roles
  • • Reputation-weighted participation

Committee Roles

  • Sequencer: Orders transactions
  • Executor: Executes & computes state
  • Voter: Participates in finality voting
  • DA Node: Stores block data

Quick Start

Interact with Celereum using the JSON-RPC API:

typescript
// Get current block height
const response = await fetch('https://api.celereum.com:8443/rpc', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'cel_getLatestBlock',
    params: []
  })
});
const { result } = await response.json();
console.log('Latest block:', result.height);

// Get account balance
const balanceRes = await fetch('https://api.celereum.com:8443/rpc', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    id: 2,
    method: 'cel_getBalance',
    params: ['cel1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpyrzv6']
  })
});
const balance = await balanceRes.json();
console.log('Balance:', balance.result.balance / 1e10, 'CEL');

Network Parameters

Timing

Block Time800ms
Finality~1.6s (2 blocks)
Finality Blocks2
Unstaking Lock7 days

Limits

Max Block Size4 MB
Max TX/Block35,000
Target TPS35,000+
Block Gas Limit30,000,000

Accounts & Addresses

Celereum uses Bech32 encoded addresses with the "cel" prefix. Addresses are derived from public keys using SHA256.

Address Format

  • Prefix: cel1
  • Raw Length: 32 bytes (256 bits)
  • Encoded Length: ~62 characters
  • Example:
    cel1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpyrzv6

Cryptographic Keys

  • User Transactions: ECDSA secp256k1
  • Private Key: 32 bytes
  • Public Key: 33 bytes (compressed)
  • Validator Consensus: BLS12-381

Account State

rust
struct AccountState {
    balance: u128,              // Account balance in smallest units
    nonce: u64,                 // Transaction count for replay protection
    code_hash: Option<Hash>,    // Contract code hash (future)
    storage_root: Option<Hash>  // State storage root (future)
}

Transactions

Transactions are signed using ECDSA with secp256k1 curve. Each transaction must include a valid nonce to prevent replay attacks.

Transaction Structure

rust
struct Transaction {
    from: Address,        // Sender address (32 bytes)
    to: Address,          // Recipient address (32 bytes)
    value: u128,          // Amount to transfer
    nonce: u64,           // Sender's transaction count
    gas_limit: u64,       // Maximum gas units
    gas_price: u64,       // Price per gas unit
    data: Vec<u8>,        // Optional call data
    signature: Vec<u8>,   // ECDSA signature (64 bytes)
    public_key: Vec<u8>   // Compressed public key (33 bytes)
}

Signing Message

The signing message is created by concatenating: from || to || value || nonce || gas_limit || gas_price || data

Transaction Status

Pending
Confirmed (1 block)
Finalized (2+ blocks)
Failed

Fees & Gas

Transaction fees are calculated based on gas usage:

Total Fee = Gas Limit × Gas Price
Total Cost = Transfer Value + Total Fee
UnitValue
1 CEL10,000,000,000 units (10¹⁰)
Minimum Gas Price1 unit/gas
Block Gas Limit30,000,000
Balance Typeu128

Committee System

Celereum uses a 4-role committee system where validators are selected through VRF weighted by reputation. Each role has specific responsibilities in the consensus process.

Sequencer

1,000 CEL min

Orders and proposes transactions into blocks. Highest responsibility role.

Reward: 0.1 CEL/block

Executor

100 CEL min

Executes transactions and computes the resulting state changes.

Reward: 0.01 CEL/block

Voter

10 CEL min

Participates in finality voting. Requires 2/3 supermajority for consensus.

Reward: 0.001 CEL/block

DA Node

0 CEL min

Stores and serves block data for availability. Entry-level participation.

Reward: 0.0001 CEL/block

Reputation System

Reputation determines a validator's weight in VRF selection. Higher reputation means higher chance of being selected for committee roles.

Reputation Bounds

100
Initial
10,000
Maximum
10
Minimum (removal)

Reputation Rewards

  • • Correct duty completion: +1
  • • 24 hours online: +5
  • • 100 blocks participation: +10
  • • Endorsing good validator: +20

Reputation Penalties

  • • Missed duty: -10
  • • Wrong data submitted: -50
  • • Fraud detected: -500
  • • Endorsed fraudster: -100
  • • Inactivity (after 7 days): -5/day

Staking & Rewards

Participation LevelMin StakeEligible RolesReward/Block
Light0 CELDA Node only0.0001 CEL
Voter10 CELDA Node, Voter0.001 CEL
Executor100 CELDA Node, Voter, Executor0.01 CEL
Sequencer1,000 CELAll roles0.1 CEL

Unstaking Lock Period

When you request to unstake, your funds are locked for 7 days (604,800 blocks) before they can be withdrawn.

Slashing Penalties

Double Signing
100% stake
Fraud
50% stake
Invalid Execution
25% stake
Invalid Vote
10% stake
Data Unavailable
5% stake

VRF Selection

Committee members are selected using Verifiable Random Functions (VRF) based on BLS12-381 signatures. This ensures selection is both random and verifiable.

VRF Properties

  • Algorithm: BLS12-381 signatures as VRF proof
  • Domain Separator: CELEREUM_VRF_V1
  • Output: 32-byte hash from signature
  • Seed: XOR of 5 previous VRF outputs + block height + previous hash

Selection Weight

Selection probability is proportional to reputation score. Higher reputation = higher chance of selection. This incentivizes good behavior and long-term participation.

RPC Endpoints

Testnet
https://api.celereum.com:8443
WebSocket: wss://api.celereum.com:8444
Live
Mainnet
TBA
Coming Soon

REST API Endpoints

EndpointMethodDescription
/api/v1/blocksGETList blocks (paginated)
/api/v1/blocks/:heightGETGet block by height or hash
/api/v1/txsGETList transactions (paginated)
/api/v1/txs/:hashGETGet transaction details
/api/v1/address/:addrGETGet address transactions
/api/v1/address/:addr/balanceGETGet balance and nonce
/api/v1/network/statsGETGet network statistics
/api/v1/search?q=GETUniversal search
/api/v1/committeeGETGet current committee
/api/v1/committee/infoGETGet committee statistics
/api/v1/committee/rolesGETGet role requirements
/api/v1/validatorsGETList all validators
/api/v1/faucetPOSTRequest testnet tokens
/api/v1/finality/status/:hashGETGet tx finality status
/healthGETHealth check
/metricsGETPrometheus metrics

WebSocket Subscriptions

Connect to wss://api.celereum.com:8444/ws for real-time updates.

Subscription Channels

blockstxsstatsaddress:<addr>tx:<hash>

Event Types

NewBlockPendingTxTxConfirmedTxFinalizedNetworkStatsSubscribedUnsubscribedError
typescript
const ws = new WebSocket('wss://api.celereum.com:8444/ws');

// Subscribe to new blocks
ws.send(JSON.stringify({
  type: 'subscribe',
  channel: 'blocks'
}));

// Subscribe to specific address
ws.send(JSON.stringify({
  type: 'subscribe',
  channel: 'address:cel1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpyrzv6'
}));

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  switch (data.type) {
    case 'NewBlock':
      console.log('New block:', data.height, data.hash);
      break;
    case 'TxConfirmed':
      console.log('Tx confirmed:', data.hash);
      break;
    case 'TxFinalized':
      console.log('Tx finalized:', data.hash);
      break;
  }
};

JSON-RPC Methods

Send JSON-RPC requests to /rpc endpoint.

MethodParametersDescription
cel_chainId[]Get chain ID and network info
cel_getBalance[address]Get account balance and nonce
cel_getBlock[hash]Get block by hash
cel_getBlockByHeight[height]Get block by height
cel_sendTransaction[from, to, amount]Send unsigned tx (testnet)
cel_sendRawTransaction[signedTxData]Send signed transaction
cel_getStatus[]Get node status and sync state
cel_getLatestBlock[]Get latest block
cel_getTransactionCount[address]Get nonce for address

Example Request

bash
curl -X POST https://api.celereum.com:8443/rpc \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "cel_getBalance",
    "params": ["cel1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpyrzv6"]
  }'

// Response:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "balance": 10000000000000,
    "nonce": 5
  }
}

Documentation v2.0.0 • January 2026