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:
// 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
Limits
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
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
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
Fees & Gas
Transaction fees are calculated based on gas usage:
Total Cost = Transfer Value + Total Fee
| Unit | Value |
|---|---|
| 1 CEL | 10,000,000,000 units (10¹⁰) |
| Minimum Gas Price | 1 unit/gas |
| Block Gas Limit | 30,000,000 |
| Balance Type | u128 |
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 minOrders and proposes transactions into blocks. Highest responsibility role.
Reward: 0.1 CEL/block
Executor
100 CEL minExecutes transactions and computes the resulting state changes.
Reward: 0.01 CEL/block
Voter
10 CEL minParticipates in finality voting. Requires 2/3 supermajority for consensus.
Reward: 0.001 CEL/block
DA Node
0 CEL minStores 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
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 Level | Min Stake | Eligible Roles | Reward/Block |
|---|---|---|---|
| Light | 0 CEL | DA Node only | 0.0001 CEL |
| Voter | 10 CEL | DA Node, Voter | 0.001 CEL |
| Executor | 100 CEL | DA Node, Voter, Executor | 0.01 CEL |
| Sequencer | 1,000 CEL | All roles | 0.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
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
https://api.celereum.com:8443TBAREST API Endpoints
| Endpoint | Method | Description |
|---|---|---|
| /api/v1/blocks | GET | List blocks (paginated) |
| /api/v1/blocks/:height | GET | Get block by height or hash |
| /api/v1/txs | GET | List transactions (paginated) |
| /api/v1/txs/:hash | GET | Get transaction details |
| /api/v1/address/:addr | GET | Get address transactions |
| /api/v1/address/:addr/balance | GET | Get balance and nonce |
| /api/v1/network/stats | GET | Get network statistics |
| /api/v1/search?q= | GET | Universal search |
| /api/v1/committee | GET | Get current committee |
| /api/v1/committee/info | GET | Get committee statistics |
| /api/v1/committee/roles | GET | Get role requirements |
| /api/v1/validators | GET | List all validators |
| /api/v1/faucet | POST | Request testnet tokens |
| /api/v1/finality/status/:hash | GET | Get tx finality status |
| /health | GET | Health check |
| /metrics | GET | Prometheus metrics |
WebSocket Subscriptions
Connect to wss://api.celereum.com:8444/ws for real-time updates.
Subscription Channels
blockstxsstatsaddress:<addr>tx:<hash>Event Types
NewBlockPendingTxTxConfirmedTxFinalizedNetworkStatsSubscribedUnsubscribedErrorconst 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.
| Method | Parameters | Description |
|---|---|---|
| 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
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