Only this pageAll pages
Powered by GitBook
1 of 43

Celestium Network

Introduction

Loading...

Loading...

Getting Started

Loading...

Loading...

Loading...

Loading...

Guides

Loading...

Loading...

Loading...

Loading...

Monitoring

Loading...

Loading...

Consensus

Loading...

Loading...

Loading...

Execution

Loading...

Loading...

Loading...

Database

Loading...

Loading...

Transaction Lifecycle

Loading...

Loading...

Loading...

Loading...

Loading...

System Design

Loading...

Loading...

Loading...

Hardware Requirements

Loading...

Loading...

DEX GUIDE

Loading...

Loading...

About Us

About Us

Celestium is developed by a team of blockchain engineers, system architects, and innovators dedicated to building the next generation of high-performance Layer 1 blockchain infrastructure. We believe that scalability should not come at the expense of decentralization. Our mission is to create a network that delivers both speed and security while remaining fully compatible with the Ethereum ecosystem.

Our team brings together expertise in distributed systems, cryptography, consensus algorithms, and high-performance software development. With a focus on innovation, we aim to push the boundaries of blockchain technology by introducing advancements like Proof of Authority + AI consensus (PoAi), parallel execution, asynchronous execution, and a custom state database called CelesDb.

At Celestium, we are committed to empowering developers and users with a scalable, efficient, and decentralized blockchain platform. We strive to foster an open and collaborative ecosystem that drives the future of decentralized applications and financial systems.

Our Vision:

  • Build a blockchain network capable of supporting mass adoption without sacrificing decentralization.

  • Enable developers to build and scale applications seamlessly with Ethereum compatibility.

  • Pioneer blockchain innovations that set new standards for performance and security.

We believe that the future of blockchain lies in combining cutting-edge technology with a commitment to decentralization, and we are proud to lead that journey with Celestium.

Overview

Celestium is a high-performance, Ethereum-compatible Layer 1 blockchain designed to push the boundaries of scalability while preserving decentralization and security. It leverages a unique Proof of Authority + AI (PoAi) consensus mechanism and introduces several architectural advancements to achieve throughput of 10,000 transactions per second (TPS), with single-slot finality in 1 second.

Celestium aims to address the performance bottlenecks that limit existing blockchains, such as single-threaded execution and synchronous consensus-execution coupling, without compromising on the core principles of decentralization, trustlessness, and censorship resistance.

Core Design Principles

Celestium is built on a set of core principles that guide its design and development:

  • Decentralization First: While optimizing for scalability and performance, decentralization remains a top priority. The protocol is designed to ensure that no single entity can compromise the network's neutrality and security.

  • Ethereum Compatibility: Celestium is fully compatible with Ethereum Virtual Machine (EVM) bytecode and the Ethereum RPC API, enabling developers to migrate their existing Ethereum-based applications seamlessly.

  • Performance and Efficiency: With innovations like parallel execution, asynchronous execution, and a custom state database called CelesDb, Celestium achieves high throughput while optimizing resource efficiency.

Technical Innovations

Celestium introduces key innovations to enhance performance and usability:

  • Proof of Authority + AI (PoAi): A consensus mechanism that combines the stability and efficiency of Proof of Authority with AI-driven validator selection and optimization. This approach ensures fast, secure block finality while adapting to network conditions in real-time.

  • CelesBFT: A pipelined, two-phase Byzantine Fault Tolerant consensus algorithm inspired by HotStuff and DiemBFT, optimized for low latency and high throughput.

  • Asynchronous Execution: Decoupling consensus from execution allows Celestium to process consensus and transaction execution independently. This eliminates execution bottlenecks and allows transactions to utilize the full block time for processing.

Developer Experience

Developers can build on Celestium using familiar tools from the Ethereum ecosystem, including:

  • Hardhat, Foundry, and Apeworx for smart contract development and testing.

  • MetaMask and other popular wallets for interacting with the network.

  • Etherscan-style block explorers for transaction tracking and analytics.

Performance and Finality

Celestium achieves single-slot finality in 1 second, meaning that transactions are considered final and irreversible after a single block. Execution results are typically available within 1 second for full nodes. Light clients can verify state changes with a delayed Merkle root mechanism (D = 10 blocks), ensuring trust-minimized access to on-chain data.

Built for the Future

The Celestium client is developed from scratch using C++ and Rust, focusing on performance, robustness, and modularity. The network is engineered to support future upgrades and adapt to evolving demands within the blockchain industry.

Summary

Celestium provides a next-generation blockchain platform that balances decentralization, performance, and compatibility. It empowers developers and users with:

  • High throughput (10,000 TPS).

  • Low latency (1-second finality).

  • Ethereum compatibility.

  • Advanced execution model.

Whether building decentralized applications, deploying smart contracts, or processing high-frequency transactions, Celestium delivers the infrastructure to power the next wave of blockchain innovation.

Parallel Execution: Transactions are executed in parallel where possible, leveraging multi-core systems to maximize throughput without altering the linearity of block ordering.

  • CelesDb: A custom-built state storage solution optimized for parallel access and asynchronous I/O, designed to handle high transaction volumes efficiently.

  • Optimized state storage.

    Running a Full Node

    Running a Full Node

    Running a full node on Celestium allows you to independently validate transactions, interact with the blockchain, and support network decentralization. This section provides the steps to start and manage a full node after completing the installation process.

    Prerequisites

    Ensure you have successfully installed the Celestium node software. If not, follow the steps in the Node Installation section.

    Starting the Node

    Run the following command to launch your full node and connect to the Celestium Testnet:

    This command will start the node, connect to the testnet, and begin syncing the blockchain.

    Verifying Node Status

    Once the node is running, check its status with an RPC call:

    • Response is false → Your node is fully synced.

    • Response with progress data → Your node is still syncing.

    Accessing the Node

    Once the node is operational, you can interact with it using any Ethereum-compatible tools such as:

    • MetaMask: Connect your wallet to the Celestium Testnet RPC.

    • Hardhat or Foundry: Configure your development environment to use your local node at http://127.0.0.1:8545.

    Node Management

    • Stop the Node: Use Ctrl + C to terminate the node process.

    • Restart the Node: Simply run the start command again.

    • Check Logs: Logs are displayed in the terminal; redirect output to a file if needed.

    Next Steps

    • Connect your node to wallets and development tools.

    • Deploy and test smart contracts.

    • Monitor performance and sync status.

    Running a full node ensures you have direct access to Celestium network data, improving your development experience and enhancing network resilience.

    Node Installation

    Running a Celestium full node allows you to participate in the network, validate blocks, and access blockchain data directly. Follow the steps below to set up and run a Celestium node.

    Hardware Requirements

    Ensure your system meets the minimum hardware specifications to run a Celestium node efficiently:

    • CPU: 16-core processor

    • Memory: 32 GB RAM

    • Storage: 2 TB NVMe SSD

    • Network: 100 Mbps bandwidth

    Install Dependencies

    Make sure you have the following installed on your machine:

    • Linux (Ubuntu 22.04 recommended) or any compatible Unix-based OS

    • CMake (for build automation)

    • GCC / Clang (C++ compiler)

    • Git (for cloning repositories)

    Clone Celestium Client

    Retrieve the Celestium client source code from the official repository:

    Build the Node

    Compile the node from source:

    Run the Node

    After building, run the node to connect to the Celestium Testnet:

    Check Node Status

    Once the node is running, you can verify its status using:

    A response indicating false means your node is fully synced.


    Next Steps

    • Connect wallets like MetaMask to the Celestium Testnet.

    • Deploy smart contracts using Hardhat or Foundry.

    • Explore the network using .

    This setup will ensure your node is ready to interact with the Celestium blockchain network.

    Using Wallets

    (MetaMask, Phantom, etc.)

    Wallets allow users to interact with the Celestium blockchain by sending transactions, managing tokens, and connecting to decentralized applications (dApps). Celestium is EVM-compatible, meaning it works seamlessly with popular wallets such as MetaMask and Phantom.


    Connecting MetaMask to Celestium Testnet

    Connecting to Celestium Network

    To interact with the Celestium blockchain, you need to connect your wallet or development environment to the network. This guide will help you set up the Celestium Testnet.

    Celestium Testnet Configuration

    Use the following details to connect to the Celestium Testnet:

    • Network Name: Celestium Testnet

    Open MetaMask.
  • Click the network dropdown at the top.

  • Select Add Network → Add a network manually.

  • Enter the following details:

    • Network Name: Celestium Testnet

    • RPC URL: http://rpc-private-testnet.celestium.network

    • Chain ID: 252525

    • Currency Symbol: CLT

    • Block Explorer URL: http://testnet.celestium.network

  • Click Save.

  • You are now connected to the Celestium Testnet.


  • Adding Custom Tokens

    To view custom tokens such as Wrapped CLT (WCLT) in your wallet:

    1. Open MetaMask.

    2. Click Import Tokens.

    3. Enter the token contract address (when available).

    4. Click Add Custom Token → Import Tokens.


    Using Phantom Wallet

    Phantom also supports EVM-compatible networks. Follow these steps:

    1. Open Phantom wallet.

    2. Go to Settings → Change Network.

    3. Select Add Custom Network.

    4. Enter the Celestium Testnet details:

      • Network Name: Celestium Testnet

      • RPC URL: http://rpc-private-testnet.celestium.network

      • Chain ID: 252525

      • Currency Symbol: CLT

      • Explorer URL: http://testnet.celestium.network

    5. Click Save.

    6. You are now connected to Celestium Testnet.


    Sending CLT Tokens

    Once connected, you can send CLT tokens:

    1. Click Send in your wallet.

    2. Enter the recipient’s address.

    3. Specify the amount of CLT.

    4. Adjust gas fees if needed.

    5. Confirm the transaction.


    Viewing Transactions

    • Transactions can be viewed on the Celestium Testnet Explorer using your wallet address or transaction hash.


    Using wallets like MetaMask and Phantom provides a secure and user-friendly way to interact with the Celestium blockchain for sending tokens, deploying contracts, and accessing dApps.

    Rust (for Rust components)

    http://testnet.celestium.network

    RPC URL: http://rpc-private-testnet.celestium.network

  • Chain ID: 252525

  • Currency Symbol: CLT

  • Block Explorer URL: http://testnet.celestium.network


  • Connecting MetaMask to Celestium

    1. Open MetaMask and click the network dropdown at the top.

    2. Select Add Network → Add a network manually.

    3. Enter the details from the Celestium Testnet Configuration section above.

    4. Click Save. You are now connected to the Celestium Testnet.


    Hardhat Network Configuration

    To configure Hardhat for Celestium:

    Replace PRIVATE_KEY with your wallet’s private key.


    Foundry Configuration

    Create a foundry.toml file with the following content:


    Verifying Connection

    After setting up, verify your connection by querying the block number:

    If you receive a block number response, you are successfully connected to the Celestium Testnet.


    With your environment connected to Celestium, you are ready to start deploying smart contracts and interacting with the blockchain.

    bash
    
    ./celestium-node --rpc http://rpc-private-testnet.celestium.network --chain-id 252525
    bash
    
    curl -X POST http://127.0.0.1:8545 -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_syncing",
      "params":[],
      "id":1
    }'
    bash
    
    ./celestium-node --rpc http://rpc-private-testnet.celestium.network --chain-id 252525 > node.log 2>&1 &
    bash
    
    sudo apt update
    sudo apt install build-essential cmake git curl
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    source $HOME/.cargo/env
    bash
    
    git clone https://github.com/celestium-network/celestium-client.git
    cd celestium-client
    bash
    
    mkdir build && cd build
    cmake ..
    make -j$(nproc)
    bash
    
    ./celestium-node --rpc http://rpc-private-testnet.celestium.network --chain-id 252525
    bash
    
    curl -X POST http://127.0.0.1:8545 -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_syncing",
      "params":[],
      "id":1
    }'
    module.exports = {
      networks: {
        celestium: {
          url: 'http://rpc-private-testnet.celestium.network',
          chainId: 252525,
          accounts: [PRIVATE_KEY]
        }
      }
    };
    toml
    
    [profile.default]
    rpc_url = "http://rpc-private-testnet.celestium.network"
    chain_id = 252525
    bash
    
    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_blockNumber",
      "params":[],
      "id":1
    }'

    Logging & Troubleshooting

    Monitoring logs and diagnosing issues is essential to ensure that a Celestium node operates smoothly. Logs provide valuable insight into block synchronization, consensus processes, transaction execution, and potential errors.


    Accessing Node Logs

    When running a Celestium node, logs are printed to the console by default. You can also redirect logs to a file for easier review:

    • Real-time log view:

    • View last 100 lines:

    • Search for errors in logs:


    Common Log Messages

    Log Level
    Description

    Common Node Issues and Solutions

    Issue
    Cause
    Solution

    Increasing Log Verbosity

    For more detailed logs, use the --log-level flag:

    Available levels:

    • error

    • warn

    • info (default)


    Resetting Node Data

    If the node experiences persistent issues, resetting the local blockchain data can resolve corruption or sync failures:


    Reporting Issues

    If problems persist, consider:

    • Collecting relevant logs (node.log).

    • Noting system details (CPU, RAM, Disk usage).

    • Gathering block height and chain ID.

    Submit issues to the official Celestium support channels or community forums.


    Effective logging and troubleshooting ensure your node remains healthy, minimizing downtime and enhancing network participation.

    Submitting Transactions

    Submitting a transaction to the Celestium network involves creating a signed transaction and broadcasting it to the network through an RPC node. This section provides a step-by-step guide on how to submit transactions to Celestium Testnet.


    1. Prepare a Transaction

    A transaction can transfer CLT tokens, interact with a smart contract, or deploy a new contract. Transactions must include:

    • From: Sender’s address.

    • To: Recipient’s address (optional for contract creation).

    • Value: Amount of CLT to send (in wei).

    • Gas Limit: Maximum gas units to consume.

    • Gas Price: Fee per unit of gas (in wei).

    • Data: Optional data payload (e.g., smart contract call).


    2. Sign the Transaction

    Transactions must be signed using the sender’s private key. Popular libraries like ethers.js or web3.js can help with signing:

    Replace PRIVATE_KEY and 0xRecipientAddress with your actual data.


    3. Broadcast the Transaction

    If you sign the transaction offline, broadcast it using eth_sendRawTransaction:

    Replace 0xSignedTransactionData with the signed transaction hex string.


    4. Check Transaction Status

    Use eth_getTransactionReceipt to check the status:

    If the receipt is null, the transaction is still pending.


    5. View on Explorer

    Track your transaction on using your transaction hash.


    Best Practices

    • Use eth_estimateGas to calculate gas before sending.

    • Ensure your balance covers the transaction value and gas fees.

    • Double-check your private key security; never expose it publicly.

    This approach ensures that transactions are processed smoothly on the Celestium network.

    Finality & Block Time

    Celestium is designed to achieve fast and deterministic finality with a block time of 1 second, ensuring that transactions are confirmed and finalized swiftly without the risk of reorganization.


    Block Time

    Celestium operates with a block time of 1 second, meaning a new block is produced every second under normal network conditions. This is made possible by the CelesBFT consensus mechanism, which optimizes leader-based block production and validator voting processes.

    Key points regarding block time:

    • Fixed Block Time: 1 second per block.

    • Consistent Throughput: Supports high transaction throughput (up to 10,000 transactions per second) without compromising network stability.

    • Low Latency: Suitable for applications requiring fast transaction confirmations, such as decentralized finance (DeFi) and trading platforms.


    Finality

    Finality refers to the point at which a transaction is considered irreversible. Celestium achieves single-slot finality, meaning a block is finalized immediately after it is included in the blockchain and receives votes from a quorum of validators.

    Key Characteristics of Finality in Celestium:

    Attribute
    Description

    This deterministic finality model is more secure and predictable compared to probabilistic finality in Proof-of-Work systems like Ethereum (pre-Merge), which may require waiting for multiple confirmations to reduce the risk of chain reorganization.


    Finality vs. Execution Outcome

    It is important to distinguish between:

    1. Finality: Agreement on the order of transactions.

    2. Execution Outcome: The result of executing those transactions.

    In Celestium, finality is achieved in 1 second when the block is added to the chain. The execution of transactions may lag slightly behind finality but is typically completed within less than 1 second on full nodes. Users querying the state via light clients may experience a slight delay due to the Merkle root delay (D=10 blocks), but finality itself is not affected.


    Comparison with Ethereum

    Feature
    Celestium
    Ethereum (Post-Merge)

    Why Finality Matters

    Fast and deterministic finality is crucial for:

    • DeFi Applications: Ensuring rapid transaction settlements.

    • High-Frequency Trading: Providing immediate certainty about trade execution.

    • Gaming & NFT Platforms: Reducing waiting times for in-game asset transfers.

    • Cross-Chain Bridges: Mitigating risks associated with chain reorganizations.

    Finality and block time are foundational to Celestium’s performance-oriented design, enabling a blockchain infrastructure that supports real-time applications while preserving security and decentralization.

    Proof of Authority + AI (PoAi)

    Celestium introduces an innovative hybrid consensus mechanism called Proof of Authority + AI (PoAi), which combines the deterministic nature of Proof of Authority (PoA) with the adaptive capabilities of Artificial Intelligence (AI). This unique approach enhances network security, validator selection, and operational efficiency.


    Understanding Proof of Authority (PoA)

    Proof of Authority is a consensus model where a set of trusted and verified validators is responsible for producing blocks and securing the network. Unlike Proof of Work (PoW) or Proof of Stake (PoS), PoA relies on validator identity and reputation, making it efficient and energy-saving.

    Key attributes of PoA:

    Developing Smart Contracts

    Celestium is fully Ethereum Virtual Machine (EVM)-compatible, allowing developers to write and deploy smart contracts using Solidity, the most popular language for smart contract development. Any contract written for Ethereum can be deployed on Celestium without modification.

    This section provides an overview of the smart contract development process and an example of a basic Solidity contract.


    Tools for Development

    Developers can use familiar Ethereum development tools:

    Optimistic Execution

    Optimistic Execution is a technique used in Celestium to further enhance transaction processing efficiency when executing transactions in parallel. It allows transactions to start executing before the preceding transactions in the same block have finished, under the assumption that there will be no conflicts. If conflicts arise, affected transactions are re-executed.


    How Optimistic Execution Works

    Consider a block containing multiple transactions:

    ./celestium-node --rpc http://rpc-private-testnet.celestium.network --chain-id 252525 > node.log 2>&1 &
  • Validator Identity: Validators are known, vetted entities with a public reputation.

  • High Throughput: PoA enables faster block production with reduced computational overhead.

  • Low Energy Consumption: Does not require extensive computational resources like PoW.


  • Incorporating AI into PoA (PoAi)

    Celestium advances PoA by integrating AI-driven mechanisms into the validator selection and performance evaluation process. AI enhances the network's ability to dynamically assess and optimize validator operations, ensuring reliability and resilience.

    AI Enhancements in PoAi:

    Feature
    Description

    Performance Scoring

    AI monitors node uptime, block production success, and responsiveness to assign performance scores.

    Anomaly Detection

    Detects abnormal validator behavior, such as downtime, network attacks, or irregular activities.

    Adaptive Validator Rotation

    Based on AI analysis, underperforming or malicious validators can be dynamically rotated out.

    Predictive Analysis

    AI predicts potential node failures based on historical performance data, enabling proactive adjustments.


    Validator Selection and Rotation

    Validators are selected based on:

    1. Pre-Approved Identity: Validators must undergo an identity verification process before being considered.

    2. AI Performance Evaluation: AI continuously evaluates validators based on:

      • Block production success rate.

      • Node uptime.

      • Network responsiveness.

      • Latency and throughput metrics.

    Validators who consistently perform well are rewarded with more block production opportunities, while underperforming validators face reduced participation or replacement.


    Security and Sybil Resistance

    Combining PoA with AI strengthens Sybil resistance:

    • Identity Verification: Validators are pre-vetted and publicly accountable.

    • Behavioral Monitoring: AI flags malicious or non-compliant validators for removal.

    • Automated Adjustments: Validator set adjustments are automated based on AI performance evaluations.

    This approach reduces the risk of validator collusion and enhances the overall integrity of the Celestium network.


    Key Benefits of PoAi in Celestium

    Benefit
    Description

    Efficiency

    Faster block production and finality due to trusted validators.

    Resilience

    AI ensures only high-performing nodes contribute to consensus.

    Security

    Continuous monitoring reduces the risk of malicious behavior.

    Scalability

    Adaptive validator rotation supports increasing network demand.


    Proof of Authority + AI (PoAi) underpins Celestium’s consensus design by combining the efficiency of PoA with the adaptive intelligence of AI. This ensures a secure, high-performance Layer 1 blockchain capable of processing 10,000 transactions per second, while maintaining robust decentralization principles.

    Transactions are executed concurrently without waiting for the results of earlier transactions.

  • Each transaction tracks the state it reads and writes during execution (read-set and write-set).

  • After the transactions complete, the results are merged in block order.

  • If a transaction’s read-set depends on state modified by an earlier transaction in the block, and the state was different than expected, the transaction is re-executed with the updated state.

  • This approach ensures that, even with parallel execution, the final state is the same as if transactions had been executed sequentially.


    Example of Optimistic Execution

    Suppose a block contains the following transactions:

    • Tx1: Alice sends 10 CLT to Bob.

    • Tx2: Bob sends 5 CLT to Charlie.

    Using Optimistic Execution:

    1. Tx1 and Tx2 start executing in parallel.

    2. Tx2 reads Bob’s initial balance (before Tx1), which might be insufficient.

    3. Once the block is merged:

      • Tx1 updates Bob’s balance.

      • Tx2 detects that it used an outdated balance.

    4. Tx2 is re-executed using Bob’s updated balance.

    This re-execution is necessary because Tx2 depended on the result of Tx1.


    Key Benefits

    Benefit

    Description

    Faster Execution

    Transactions start executing without waiting for prior results.

    Efficient Use of Resources

    Takes full advantage of parallelism with multi-core systems.

    Correct State Guarantee

    Final state is identical to sequential execution.


    Optimizations in Celestium

    To reduce the overhead of re-executing transactions:

    • Expensive operations like signature verification are cached and not repeated during re-execution.

    • State accessed in the initial execution is cached in memory, minimizing the cost of re-execution.

    • Static analysis attempts to predict dependencies between transactions and minimize conflicts.


    Example Flow in Practice

    1. Transactions from a block are assigned to multiple cores for parallel execution.

    2. Each transaction optimistically reads state and performs computations.

    3. The outputs are merged sequentially in block order.

    4. If a transaction’s read-set conflicts with an earlier transaction’s write-set:

      • The transaction is re-executed.

    5. The final state is guaranteed to match sequential execution.


    Why Optimistic?

    The term "optimistic" refers to the assumption that most transactions will not conflict. In reality, many transactions are independent, such as:

    • Alice sending CLT to Bob.

    • Charlie deploying a smart contract.

    Only dependent transactions (e.g., Bob sending CLT after receiving from Alice) require re-execution. Since conflicts are rare, this approach is highly efficient.


    Optimistic Execution vs. Parallel Execution

    Aspect

    Optimistic Execution

    Parallel Execution

    Definition

    Transactions start execution before prior transactions finish.

    Transactions are executed in parallel on different cores.

    Key Focus

    Reducing idle time by assuming minimal conflicts.

    Maximizing throughput with multi-core processing.

    Conflict Handling

    Re-execution of transactions if conflicts are detected.

    Detects dependencies; avoids some conflicts proactively.


    Final Thoughts

    Optimistic Execution is a critical innovation in Celestium that unlocks the full potential of parallel transaction processing. It leverages modern hardware capabilities while ensuring Ethereum-compatible deterministic state.

    This approach, combined with Parallel Execution and Asynchronous Execution, enables Celestium to achieve high throughput and low-latency finality without compromising on state correctness.

    Finality Time

    1 second (same as block time)

    Irreversibility

    Once a block is finalized, it is irreversible unless a supermajority of validators act maliciously.

    Quorum Requirement

    A block is finalized when 2/3 of validator weight votes to approve it.

    Block Time

    1 second

    12 seconds

    Finality Time

    1 second (single-slot)

    12.8 minutes (2 epochs)

    Reorganization Risk

    Near-zero after 1 second

    Possible until finality (2 epochs)

    Storage read/write errors

    Disk performance issues

    Ensure NVMe SSD is functioning properly and has sufficient space.

    debug

    INFO

    Standard operational messages, including block finalization.

    WARN

    Non-critical issues, such as slow sync or network latency.

    ERROR

    Critical errors that could affect node functionality.

    DEBUG

    Detailed information (useful for development and debugging).

    Node is not syncing

    Network issues or wrong RPC URL

    Verify network connectivity and RPC URL configuration.

    High CPU or Memory Usage

    Block processing or large transaction load

    Ensure system meets hardware requirements; monitor with metrics.

    Failed transaction execution

    Gas limit too low, or contract error

    Check transaction gas limit and contract logic.

    Peer connection issues

    Network configuration or firewall

    Ensure ports are open and node can reach peers.

    http://testnet.celestium.network

    Hardhat – Development framework for building and testing smart contracts.

  • Foundry – Fast, modular toolkit for smart contract development.

  • Remix – Online IDE for writing, testing, and deploying Solidity contracts.


  • Setting Up Hardhat for Celestium

    1. Install Hardhat:

    1. Create a Hardhat Project:

    1. Configure Hardhat for Celestium Testnet:

    Modify hardhat.config.js:

    Replace PRIVATE_KEY with your wallet's private key.


    Example: Simple Solidity Contract

    This is a basic contract to store and retrieve a number:


    Deploying the Contract

    Create a deployment script scripts/deploy.js:

    Run the deployment script:


    Interacting with the Contract

    Once deployed, you can interact with the contract using ethers.js:

    Replace DEPLOYED_CONTRACT_ADDRESS with the address of the deployed contract.


    Viewing on Explorer

    Once deployed, you can verify the contract and track transactions on the Celestium Testnet Explorer.


    Best Practices

    • Always test contracts on the Celestium Testnet before deploying on the main network.

    • Use OpenZeppelin Contracts for secure and standardized smart contract implementations.

    • Review gas efficiency and security best practices when writing contracts.

    This guide provides the foundation to start developing and deploying smart contracts on Celestium

    tail -f node.log
    btail -n 100 node.log
    grep "ERROR" node.log
    ./celestium-node --rpc http://rpc-private-testnet.celestium.network --chain-id 252525 --log-level debug
    rm -rf celestium-data/
    ./celestium-node --rpc http://rpc-private-testnet.celestium.network --chain-id 252525 --data-dir celestium-data
    const { ethers } = require("ethers");
    
    const provider = new ethers.JsonRpcProvider("http://rpc-private-testnet.celestium.network");
    const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
    
    const tx = {
      to: "0xRecipientAddress",
      value: ethers.parseEther("0.1"),
      gasLimit: 21000,
      gasPrice: ethers.parseUnits("1", "gwei")
    };
    
    const transactionResponse = await wallet.sendTransaction(tx);
    console.log(`Transaction hash: ${transactionResponse.hash}`);
    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_sendRawTransaction",
      "params":["0xSignedTransactionData"],
      "id":1
    }'
    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_getTransactionReceipt",
      "params":["0xTransactionHash"],
      "id":1
    }'
    bash
    npm install --save-dev hardhat
    bash
    npx hardhat init
    javascript
    
    require("@nomicfoundation/hardhat-toolbox");
    
    module.exports = {
      solidity: "0.8.20",
      networks: {
        celestiumTestnet: {
          url: "http://rpc-private-testnet.celestium.network",
          chainId: 252525,
          accounts: [`0x${PRIVATE_KEY}`],
        },
      },
    };
    solidity
    
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.20;
    
    contract SimpleStorage {
        uint256 private storedNumber;
    
        function setNumber(uint256 _number) public {
            storedNumber = _number;
        }
    
        function getNumber() public view returns (uint256) {
            return storedNumber;
        }
    }
    javascript
    
    const hre = require("hardhat");
    
    async function main() {
      const SimpleStorage = await hre.ethers.getContractFactory("SimpleStorage");
      const simpleStorage = await SimpleStorage.deploy();
    
      await simpleStorage.waitForDeployment();
    
      console.log(`Contract deployed to: ${await simpleStorage.getAddress()}`);
    }
    
    main().catch((error) => {
      console.error(error);
      process.exitCode = 1;
    });
    bash
    
    npx hardhat run scripts/deploy.js --network celestiumTestnet
    javascript
    
    const contractAddress = "DEPLOYED_CONTRACT_ADDRESS";
    const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
    const simpleStorage = SimpleStorage.attach(contractAddress);
    
    // Set a number
    await simpleStorage.setNumber(42);
    
    // Get the number
    const storedNumber = await simpleStorage.getNumber();
    console.log(`Stored Number: ${storedNumber}`);

    DEX Testnet Contracts

    Celestium DEX Testnet is a decentralized exchange built on the Celestium blockchain. Below are the official smart contract addresses for the key components of the DEX.

    Core Contracts

    • Multicall: 0xe49FCCDb659ACA606A9AbD8EC478bc7462c67CEa

      • Used to aggregate multiple contract read calls into a single call to improve efficiency.

    Factory: 0xf467e3D49684bbDCFaFA73fC00FAeA85b180c456

    • The core contract responsible for creating and managing liquidity pools.

  • Router: 0xC24c897b5b78Da2Db8b590fc7f6f5402d8FD6754

    • Facilitates token swaps and liquidity provision by interacting with the factory contract.

  • Wrapped CLT (WCLT): 0xA316eb29ceD1277A1B22e8c16C9c66440F6A8446

    • A wrapped version of CLT used for liquidity pairs and swap functions.

  • USDT: 0xcB008c98885Fc3c24105c411111F9F0C6ee2ed36

    • Stablecoin available for trading pairs and liquidity pools.

  • Token Contracts

    • CelestiumFuel: 0x711e2157e573B5704084a24fC7a2EaD8aeE36972

      • A utility token for specific functionalities within the Celestium ecosystem.

    Usage and Integration

    Developers and liquidity providers can interact with these contracts using web3 libraries such as Ethers.js or Web3.js. These contracts allow:

    • Swapping tokens on-chain using the router contract.

    • Adding liquidity to pools for earning trading fees.

    • Fetching aggregated data via the multicall contract.

    Recommended Node Specifications

    Running a Celestium node requires robust hardware to ensure optimal performance, network stability, and seamless participation in consensus processes. The following hardware specifications are recommended for validators and full nodes.


    1. Validator Node Requirements

    Validator nodes play a critical role in block production and consensus. These nodes must meet higher performance standards due to their responsibilities within the CelesBFT and Proof of Authority + AI (PoAi) consensus mechanisms.

    Component
    Recommended Specification

    2. Full Node Requirements

    Full nodes maintain a complete copy of the blockchain, validate blocks and transactions, and support network stability.

    Component
    Recommended Specification

    3. Archive Node (Optional)

    Archive nodes store the entire history of the blockchain, including pruned state data, and are mainly used by blockchain explorers, data analytics, and research applications.

    Component
    Recommended Specification

    4. System Performance Considerations

    • High-Performance Disk I/O: Essential for Celestium’s CelesDb, which optimizes state storage access.

    • Parallel and Asynchronous Execution: Multi-core processors significantly improve transaction throughput.

    • GPU Acceleration: Enhances AI-driven validator operations and improves fraud detection efficiency in PoAi consensus.


    5. Security Recommendations

    • Enable firewalls and restrict access to RPC and P2P ports.

    • Implement DDoS protection for validator nodes.

    • Use dedicated servers or cloud infrastructure with high uptime guarantees (e.g., AWS, Google Cloud, or bare-metal providers).


    6. Example Server Build for Validator Node

    Component
    Example Build

    7. Summary

    Node Type
    CPU Cores
    RAM
    Storage
    Network
    GPU (Optional)

    Investing in robust hardware ensures stability, security, and high throughput, aligning with Celestium’s goal of achieving 10,000 transactions per second through cutting-edge blockchain architecture.

    Querying Blockchain Data

    Querying blockchain data on Celestium allows users and developers to retrieve information about blocks, transactions, balances, and contract states. This can be done using Ethereum-compatible JSON-RPC API methods.


    Common RPC Methods

    Below are the most commonly used RPC methods to query data from Celestium:

    Get the Latest Block Number

    Returns the current block number.

    Get Block Details by Number

    Fetches details of a specific block.

    Replace BLOCK_NUMBER with a hexadecimal block number (e.g., 0x1A for block 26).

    Get Transaction Details

    Fetches the details of a transaction by its hash.

    Replace TRANSACTION_HASH with the transaction hash.

    Get Transaction Receipt

    Checks the status and logs of a transaction.

    Get Account Balance

    Retrieves the balance of an account in wei.

    Replace ADDRESS with the account address.


    Interacting with Blockchain Programmatically

    You can also use libraries like ethers.js or web3.js to query blockchain data within your application:


    Using Celestium Explorer

    For a user-friendly way to explore transactions, blocks, and addresses, visit the Celestium Testnet Explorer:

    🔗


    Querying blockchain data is essential for monitoring transactions, tracking balances, and interacting with smart contracts. Celestium’s compatibility with the Ethereum API ensures that developers can integrate with existing tools seamlessly.

    How to Add Liquidity

    Providing liquidity on Celestium Swap Testnet allows users to contribute assets to liquidity pools, enabling seamless token swaps while earning rewards from transaction fees. Follow the steps below to add liquidity to the Celestium Swap Testnet.

    Prerequisites

    Before proceeding, ensure you have the following:

    • A MetaMask wallet or any Web3-compatible wallet.

    • Sufficient CLT tokens and the paired token in your wallet.

    • Connected to the Celestium Testnet network.

    • Access to .


    Step-by-Step Guide

    1. Connect Your Wallet

    1. Navigate to .

    2. Click "Connect to a wallet" in the top-right corner.

    3. Select MetaMask or another compatible wallet and approve the connection.

    4. Ensure that you are connected to the Celestium Testnet.

    2. Navigate to the Add Liquidity Page

    1. Click on the "Liquidity" tab in the navigation menu.

    2. Select "Add Liquidity" to proceed.

    3. Select Tokens & Input Amounts

    1. Choose CLT as the first token.

    2. Select a second token from the available options.

    3. Enter the amount of CLT and the corresponding amount of the second token.

    4. Ensure both token values are correctly balanced based on the pool’s ratio.

    4. Approve Tokens for Liquidity

    1. If this is your first time adding liquidity, click "Approve" next to both tokens.

    2. Confirm the approval transaction in your wallet.

    5. Supply Liquidity

    1. Click "Supply" to proceed.

    2. Review the transaction details, including pool share and expected returns.

    3. Confirm the transaction in your wallet.

    4. Once confirmed, your liquidity is successfully added, and you will receive Liquidity Provider (LP) tokens.

    6. Verify Your Liquidity

    1. Navigate to the "Liquidity" tab.

    2. Check the list of liquidity pairs where you have contributed funds.

    3. Your added liquidity and earned rewards will be displayed.


    Additional Notes

    • Removing Liquidity: To remove liquidity, go to the "Remove Liquidity" section, select your LP tokens, and withdraw your assets.

    • Gas Fees: Transactions on the testnet may require a small amount of test CLT tokens.

    Tokenomics

    Celestium Coin ($CLT) Tokenomics

    Celestium Coin ($CLT) is designed with a well-balanced tokenomics model to ensure sustainable growth, strong liquidity, and long-term ecosystem development. Below is a detailed breakdown of the token distribution and transaction tax structure.

    Total Supply

    • 100,000,000 CLT

    Token Distribution

    • Liquidity: 90% Ensuring deep liquidity for seamless trading and price stability.

    • Marketing: 1.5% Allocated for strategic promotions, partnerships, and brand awareness.

    • Bridge Mainnet: 2% Dedicated to facilitating cross-chain interactions and bridging mechanisms.

    • Community Reward: 1% Designed to incentivize and reward active participation within the ecosystem.

    Transaction Tax Structure (Buy & Sell Tax: 4%)

    • 3% for Marketing: Ensuring sustained growth, user adoption, and brand visibility.

    • 1% for Development: Supporting the ongoing technical advancements and ecosystem expansion.

    This tokenomics model ensures that Celestium remains a robust, scalable, and community-driven Layer 1 blockchain while securing long-term incentives for users, developers, and validators.

    Gas Fees & Priority Gas Auction

    Gas fees and transaction prioritization are essential components of the Celestium network’s transaction processing system. They determine the cost of computational operations and influence the order in which transactions are included in blocks.


    1. What Is Gas?

    Gas is a unit that measures computational work required to execute operations on the Celestium blockchain. Every transaction and smart contract execution consumes gas based on the complexity of the operation.

    Purpose of Gas

    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_blockNumber",
      "params":[],
      "id":1
    }'
  • Development: 1% Supporting continuous improvements and upgrades of Celestium's infrastructure.

  • Team: 1% Reserved for the core team to sustain long-term commitment and project stability.

  • DeFi Supply: 1.5% Allocated for DeFi-related utilities, partnerships, and ecosystem expansion.

  • Staking Reward: 1% Providing incentives to holders who contribute to network security and stability.

  • Validator Reward: 1% Rewards distributed to validators for maintaining network integrity and consensus.

  • Celestium Swap Testnet
    Celestium Swap Testnet

    500 Mbps

    Not required

    Archive Node

    16+

    64 GB

    8 TB SSD

    1 Gbps

    Not required

    CPU

    8-core (16-thread) CPU, 3.0 GHz or higher (e.g., AMD Ryzen 9 / Intel Xeon)

    RAM

    32 GB DDR4 or higher

    Storage

    2 TB NVMe SSD (High-speed, for fast state access and block storage)

    Network

    1 Gbps dedicated connection (low latency)

    Operating System

    Linux (Ubuntu 22.04 LTS recommended)

    GPU (Optional)

    NVIDIA GPU (e.g., RTX 3080 or higher) for AI-enhanced validation tasks

    CPU

    4-core (8-thread) CPU, 2.5 GHz or higher

    RAM

    16 GB DDR4 or higher

    Storage

    1 TB SSD (NVMe preferred)

    Network

    500 Mbps connection (low latency)

    Operating System

    Linux (Ubuntu 22.04 LTS recommended)

    CPU

    16-core (32-thread) CPU, 3.2 GHz or higher

    RAM

    64 GB DDR4 or higher

    Storage

    8 TB NVMe SSD

    Network

    1 Gbps dedicated connection

    Operating System

    Linux (Ubuntu 22.04 LTS recommended)

    CPU

    AMD Ryzen 9 5950X (16 cores, 32 threads, 3.4 GHz)

    RAM

    64 GB DDR4

    Storage

    Samsung 980 Pro 2TB NVMe SSD

    Network

    1 Gbps Fiber Connection

    OS

    Ubuntu 22.04 LTS

    GPU

    NVIDIA RTX 3090 (for AI acceleration)

    Validator

    8+

    32 GB

    2 TB SSD

    1 Gbps

    High-end GPU

    Full Node

    4+

    16 GB

    1 TB SSD

    http://testnet.celestium.network

    Prevents spam and inefficient computation.

  • Aligns computational effort with economic cost.

  • Incentivizes validators to process transactions.

  • Gas Units

    Each Ethereum Virtual Machine (EVM) opcode has a predefined gas cost. Celestium inherits these gas costs from Ethereum, ensuring compatibility.


    2. Gas Fees

    Gas fees represent the amount a user is willing to pay to execute a transaction. They are calculated as:

    Where:

    • Gas Used: Total gas consumed during transaction execution.

    • Gas Price: Amount the user is willing to pay per gas unit, denominated in CLT (native token).

    EIP-1559 Fee Model

    Celestium supports the EIP-1559 fee model, comprising:

    • Base Fee: Minimum fee per gas unit, dynamically adjusted based on network congestion.

    • Priority Fee (Tip): Additional fee paid to validators to prioritize transaction processing.

    • Max Fee: Maximum total fee the user is willing to pay per gas unit.

    Effective gas fee is determined as:

    Example

    Component
    Value

    Gas Used

    21,000

    Base Fee

    2 gwei

    Priority Fee

    1 gwei

    Max Fee

    5 gwei

    Effective Gas Price

    3 gwei

    Transaction Fee

    21,000 × 3 gwei = 63,000 gwei


    3. Gas Limit

    Gas limit represents the maximum gas units a user is willing to spend for a transaction. If a transaction exceeds this limit, it fails, and the gas is still consumed.

    Best Practice

    • Estimate gas consumption using tools like estimateGas() from libraries such as Web3.js.


    4. Priority Gas Auction (PGA)

    Celestium utilizes a Priority Gas Auction (PGA) mechanism to prioritize transactions. Validators order transactions based on Priority Fee (Tip) in descending order. Transactions offering higher tips are processed first.

    How PGA Works:

    1. Users submit transactions with varying gas prices (priority fees).

    2. Validators select transactions offering the highest priority fees.

    3. High-demand periods lead to users competing by increasing tips.

    4. Transactions with lower tips may experience delays or fail to be included.

    Key Implications:

    • Users can expedite transaction processing by increasing the priority fee.

    • PGA fosters a dynamic fee market, ensuring optimal resource allocation.


    5. Transaction Fee Market Behavior

    • Low Network Congestion: Base fee remains low, and minimal priority fees are required.

    • High Network Congestion: Base fee increases, and users must pay higher priority fees to secure transaction inclusion.


    6. Gas Fee Optimization Tips

    • Monitor network conditions to avoid overpaying during low congestion.

    • Use EIP-1559 transactions with an appropriate max fee and priority fee to balance cost and speed.

    • Leverage tools like eth_gasPrice or third-party services to estimate current gas fees.


    7. Gas Price Estimation (Web3.js Example)


    8. Summary

    • Gas fees ensure fair resource allocation and prevent spam.

    • Base Fee adapts dynamically; Priority Fee influences transaction speed.

    • Priority Gas Auction orders transactions by tips during congestion.

    • Users should adjust gas fees based on network conditions for cost efficiency.

    Celestium’s gas model aligns with Ethereum standards, ensuring a familiar experience for developers and users transitioning from existing EVM-compatible networks.

    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_getBlockByNumber",
      "params":["0xBLOCK_NUMBER", true],
      "id":1
    }'
    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_getTransactionByHash",
      "params":["0xTRANSACTION_HASH"],
      "id":1
    }'
    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_getTransactionReceipt",
      "params":["0xTRANSACTION_HASH"],
      "id":1
    }'
    curl -X POST http://rpc-private-testnet.celestium.network -H "Content-Type: application/json" --data '{
      "jsonrpc":"2.0",
      "method":"eth_getBalance",
      "params":["0xADDRESS", "latest"],
      "id":1
    }'
    const { ethers } = require("ethers");
    
    const provider = new ethers.JsonRpcProvider("http://rpc-private-testnet.celestium.network");
    
    const balance = await provider.getBalance("0xADDRESS");
    console.log(`Balance: ${ethers.formatEther(balance)} CLT`);
    Gas Fee = Gas Used × Gas Price
    Effective Gas Price = Base Fee + Priority Fee
    Editconst Web3 = require('web3');
    const web3 = new Web3('https://rpc-private-testnet.celestium.network');
    
    async function getGasPrice() {
      const gasPrice = await web3.eth.getGasPrice();
      console.log('Current Gas Price:', web3.utils.fromWei(gasPrice, 'gwei'), 'gwei');
    }
    
    getGasPrice();

    CelesDb Overview

    CelesDb is a custom-built database designed to optimize the storage and retrieval of blockchain state data for the Celestium network. Unlike traditional key-value databases commonly used in blockchain clients, CelesDb is specifically tailored to meet the demands of high-throughput parallel execution and asynchronous state management.


    Motivation for CelesDb

    Most Ethereum clients rely on general-purpose key-value stores like LevelDB, RocksDB, or LMDB, which internally use data structures such as B-Trees or LSM-Trees. However, Ethereum itself represents state using a Merkle Patricia Trie (MPT). This results in a mismatch between the underlying storage structure and the logical state representation, causing performance inefficiencies.

    Parallel Execution

    Celestium adopts Parallel Execution to maximize throughput and utilize modern multi-core processors effectively. By executing multiple transactions simultaneously, Celestium significantly improves performance compared to traditional blockchains that rely on serial transaction processing.


    Understanding Parallel Execution

    In most blockchains, transactions are executed sequentially. Each transaction updates the global state, and the result of one transaction can affect the next. This approach ensures correctness but creates a performance bottleneck.

    Parallel execution allows multiple transactions to be executed concurrently, provided they do not interfere with each other

    Node Performance Metrics

    Monitoring node performance is critical to ensure stability, uptime, and optimal functioning within the Celestium network. Operators can track various metrics to evaluate the health and efficiency of their node.


    Key Metrics to Monitor

    Metric
    Description
    CelesDb addresses this by natively implementing the Patricia Trie structure for both in-memory and on-disk storage. This direct mapping eliminates the overhead of embedding one data structure within another, significantly improving read and write performance.

    Key Features of CelesDb

    Feature

    Description

    Native Patricia Trie Implementation

    CelesDb stores blockchain state directly as a Patricia Trie on disk and in memory, optimizing access times.

    Asynchronous I/O (async I/O)

    Supports non-blocking database operations using modern system calls (e.g., io_uring on Linux).

    Parallel State Access

    Designed to support parallel transaction execution, allowing concurrent reads and writes.

    Low-latency Performance

    Bypasses filesystem caching in certain cases for direct I/O access, reducing overhead.

    Optimized for High Throughput

    Supports batch writes and parallel state reads to match the demands of Celestium’s parallel execution model.


    Asynchronous I/O (async I/O)

    A critical feature of CelesDb is its support for asynchronous I/O operations. Since Celestium executes multiple transactions in parallel, traditional blocking I/O would cause performance bottlenecks. Instead, CelesDb uses Linux’s io_uring interface to enable non-blocking, kernel-level asynchronous I/O operations. This allows:

    • Multiple I/O requests to be initiated simultaneously.

    • CPU resources to be used for other tasks while waiting for disk operations to complete.

    • Reduced context switching compared to traditional thread-based blocking I/O.


    How CelesDb Supports Parallel Execution

    Parallel transaction execution requires efficient concurrent access to state. CelesDb is designed to support:

    1. Concurrent Reads: Multiple transactions can read state simultaneously without blocking each other.

    2. Optimistic Writes: Transactions write to isolated state buffers during execution, reducing conflicts.

    3. State Merging: After transactions execute, CelesDb merges state changes in block order to ensure deterministic final state.


    Low-level Optimizations

    Optimization

    Description

    Direct I/O Access

    Avoids OS-level filesystem caching in certain cases to reduce overhead.

    Batch Writes

    Bundles multiple state changes into a single write operation for efficiency.

    Memory-efficient Trie Nodes

    Stores Patricia Trie nodes in compact formats, minimizing memory and disk usage.


    Benefits of CelesDb

    • Faster Block Processing: Reduces state access latency during parallel and optimistic execution.

    • Improved Scalability: Handles high transaction throughput by supporting parallel state access.

    • Lower Resource Usage: Efficient memory and disk management tailored for blockchain workloads.


    Comparison with Traditional Solutions

    Aspect

    CelesDb

    LevelDB / RocksDB

    Data Structure

    Native Patricia Trie

    LSM-Tree / B-Tree

    Async I/O Support

    Full support via io_uring

    Limited / None

    Parallel Access

    Built-in support for parallel reads/writes

    Designed for sequential access

    Blockchain State Efficiency

    Optimized for Patricia Trie-based state storage

    General-purpose storage


    Future Development

    CelesDb will continue to be improved with:

    • Further optimizations for Patricia Trie compaction.

    • Caching strategies to reduce disk access for frequently read state.

    • Cross-platform async I/O support beyond Linux (e.g., Windows IOCP).


    Final Thoughts

    CelesDb is a cornerstone innovation of the Celestium blockchain, enabling high-performance state management that aligns with parallel and asynchronous execution models. This custom database ensures that Celestium can achieve scalability and efficiency without compromising on Ethereum-compatible state guarantees.

    .

    Optimistic Execution Model

    Celestium employs an optimistic execution model to parallelize transaction processing:

    1. Transactions are optimistically executed in parallel without waiting for prior transactions in the block to complete.

    2. Each transaction tracks the state it reads and writes (read-set and write-set).

    3. After execution, the outputs are merged in block order:

      • If two transactions access different parts of the state, they merge seamlessly.

      • If two transactions conflict (e.g., they modify the same account), the later transaction is re-executed with updated state.

    This model ensures that the final state is identical to sequential execution, preserving Ethereum compatibility.


    Example of Parallel Execution

    Consider a block with these transactions:

    1. Tx1: Alice sends 10 CLT to Bob.

    2. Tx2: Charlie deploys a smart contract.

    3. Tx3: Bob interacts with a DeFi protocol.

    Parallel Execution:

    • Tx1 updates Alice and Bob’s balances.

    • Tx2 deploys a contract, unrelated to Tx1 or Tx3.

    • Tx3 involves Bob’s balance, which depends on Tx1.

    What happens:

    • Tx1 and Tx2 execute in parallel.

    • Tx3 starts optimistically but fails because it reads Bob’s balance before Tx1 completes.

    • After Tx1 is finalized, Tx3 is re-executed with the correct balance.


    Dependency Management

    Celestium uses static analysis and runtime checks to manage dependencies:

    • Static Analysis: Before execution, Celestium predicts potential conflicts based on transaction input data.

    • Runtime Conflict Detection: After execution, read-sets and write-sets are compared to detect conflicts. Conflicting transactions are automatically re-executed.

    This hybrid approach minimizes unnecessary re-executions and maximizes parallelism.


    Benefits of Parallel Execution

    Benefit

    Impact

    Increased Throughput

    Multiple transactions processed simultaneously.

    Reduced Latency

    Faster execution, especially for non-conflicting transactions.

    Efficient Resource Utilization

    Full use of modern multi-core CPUs.

    Ethereum Compatibility

    Execution results are identical to serial processing.


    Performance Considerations

    • Transactions with independent state (e.g., transfers between different users) benefit the most.

    • High-conflict transactions (e.g., interacting with the same contract) may require re-execution, but Celestium’s conflict detection minimizes the overhead.


    Parallel Execution vs. Asynchronous Execution

    Feature

    Parallel Execution

    Asynchronous Execution

    Focus

    Execution parallelism

    Decoupling consensus from execution

    Key Benefit

    Increased throughput

    Extended execution budget

    Compatibility

    Ethereum-compatible

    Ethereum-compatible


    Parallel Execution in Practice

    When processing a block, Celestium’s execution engine:

    1. Analyzes transactions for potential conflicts.

    2. Executes independent transactions in parallel.

    3. Detects conflicts and re-executes affected transactions if needed.

    4. Merges results in block order to ensure final state consistency.

    This approach allows Celestium to achieve high throughput while maintaining the deterministic nature of blockchain state transitions.

    CPU Usage

    Tracks processor load during consensus and execution tasks.

    Memory Usage (RAM)

    Monitors memory consumption, especially during execution.

    Disk I/O

    Measures read/write operations on the NVMe SSD storage.

    Peers Connected

    Number of peers the node is connected to.

    Block Time

    Measures the time taken to validate and finalize a block.

    Gas Usage per Block

    Tracks the average gas consumption per block.

    Transaction Pool Size

    Number of pending transactions in the mempool.

    Network Bandwidth

    Monitors data sent and received by the node.


    Accessing Node Metrics

    Celestium nodes provide performance metrics via a built-in monitoring interface. You can enable and access metrics in the node’s startup command:

    Metrics are typically exposed via Prometheus or logged locally for further analysis.


    Using Prometheus and Grafana for Visualization

    1. Install Prometheus:

    2. Configure Prometheus to scrape Celestium metrics (e.g., localhost:9090/metrics):

    3. Install Grafana:

    4. Connect Prometheus to Grafana:

      • Open Grafana (http://localhost:3000).

      • Add Prometheus Data Source → http://localhost:9090.

      • Build custom dashboards for CPU usage, memory, block sync status, and other metrics.


    Node Logs for Debugging

    Logs provide detailed information about node operations, including consensus, execution errors, and block production:

    Look for key entries like:

    • Finalized Block: Confirmation that a block is validated.

    • Sync Status: Current sync progress with the network.

    • Execution Errors: Potential issues during transaction processing.


    Best Practices for Performance Monitoring

    • Set up alerts for high CPU, memory usage, or node desynchronization.

    • Monitor block finality time to detect performance bottlenecks.

    • Check peers regularly to ensure stable network connectivity.

    • Track disk health when running NVMe SSDs, as high throughput can affect longevity.


    Monitoring node performance helps ensure reliability, prevents downtime, and allows operators to proactively address issues on the Celestium network.

    Block Sync Status

    Indicates if the node is in sync with the network.

    bash
    
    sudo apt update
    sudo apt install prometheus
    yaml
    
    scrape_configs:
      - job_name: 'celestium_node'
        static_configs:
          - targets: ['localhost:9090']
    bash
    
    sudo apt install grafana
    bash
    
    ./celestium-node --rpc http://rpc-private-testnet.celestium.network --chain-id 252525 --metrics
    bash
    
    tail -f node.log

    Deploy on Celestium

    Deploying a Smart Contract on Celestium Testnet Using Remix

    This guide will walk you through deploying an ERC-20 token smart contract on the Celestium Testnet using Remix , a web-based Solidity IDE.

    Prerequisites

    Before proceeding, ensure you have the following:

    • A MetaMask wallet connected to the Celestium Testnet.

    • Some test CLT tokens from the .

    • Basic familiarity with Solidity and Remix IDE.

    Step 1: Connect MetaMask to Celestium Testnet

    1. Open MetaMask and go to Settings > Networks > Add Network.

    2. Enter the Celestium Testnet details:

      • Network Name: Celestium Testnet

    Step 2: Get Test CLT Tokens

    1. Visit the .

    2. Enter your MetaMask wallet address and request test CLT.

    3. Wait for the tokens to be sent to your wallet.

    Step 3: Open Remix and Load the Contract

    1. Go to Remix IDE.

    2. Click Create New File and name it Token.sol.

    3. Copy and paste the following Solidity code:

    • Replace "Name Coin" with your token name.

    • Replace "TICKER" with your token symbol.

    Step 4: Compile the Smart Contract

    1. In Remix, go to the Solidity Compiler tab.

    2. Select the Solidity Version 0.8.16.

    3. Click Compile Token.sol.

    4. Ensure there are no errors before proceeding.

    Step 5: Deploy on Celestium Testnet

    1. Go to the Deploy & Run Transactions tab.

    2. In the Environment dropdown, select Injected Provider - MetaMask.

    3. Make sure your MetaMask is connected to Celestium Testnet.

    4. Click Deploy and confirm the transaction in MetaMask.

    Step 6: Verify Deployment

    1. Copy the contract address from Remix.

    2. Visit Celestium Testnet Explorer.

    3. Paste the contract address in the search bar to view details.

    Step 7: Interact with Your Token

    1. Add your token to MetaMask:

      • Open MetaMask and click Import Tokens.

      • Enter the contract address.

      • Click Add Token.

    Conclusion

    You have successfully deployed an ERC-20 token on the Celestium Testnet using Remix. This token can now be used for further development, testing, or integration with dApps.

    For additional support, join the Celestium Community:

    🔹 Telegram: @Celestium_Network 🔹 Website: 🔹 Faucet:

    CelesBFT Overview

    CelesBFT is the consensus protocol used by Celestium to achieve fast, secure, and deterministic finality in a decentralized environment. It is designed to handle high-throughput blockchain operations while ensuring Byzantine Fault Tolerance (BFT) and Proof-of-Authority combined with AI (PoAi) for Sybil resistance.


    Key Characteristics

    Feature
    Description

    How CelesBFT Works

    CelesBFT is a pipelined, two-phase consensus protocol adapted from HotStuff with enhancements from DiemBFT and Jolteon. It optimizes transaction finality and leader rotation while minimizing communication overhead.

    Consensus Participants

    • Leader: Proposes a block containing transactions.

    • Validators: Validate the proposed block and vote on its validity.

    Round Structure

    Each consensus round consists of the following steps:

    1. Proposal: The leader broadcasts a block proposal with a quorum certificate (QC) or timeout certificate (TC) for the previous round.

    2. Voting: Validators verify the block and sign a YES vote if valid.

    3. Quorum Certificate (QC): If 2f + 1 votes are received (f is the number of tolerated Byzantine nodes), the next leader aggregates the signatures into a QC.

    4. Timeout Certificate (TC): If a block is not proposed on time, validators submit timeout messages. Upon reaching 2f + 1, a TC is formed.


    2-Chain Commit Rule

    A block is finalized when two consecutive certified blocks are observed:

    • Block k is finalized when a QC is formed for Block k+1 and a valid proposal for Block k+2 is seen.


    BLS Multi-Signatures

    CelesBFT uses BLS signatures for aggregating validator votes:

    • BLS12-381 Curve: Allows signature aggregation into a single signature.

    • ECDSA: Used for other message types for performance efficiency.

    The blend of BLS and ECDSA ensures both performance and compactness in consensus messages.


    Fault Tolerance

    CelesBFT can tolerate up to f Byzantine nodes in a network of 3f + 1 validators. This guarantees consensus safety and liveness as long as at least 2/3 of the validators are honest.


    Finality and Reorg Resistance

    • Single-Slot Finality: Once a block is finalized, it is irreversible unless a supermajority behaves maliciously.

    • Finality Time: 1 second per block, offering faster transaction confirmation compared to probabilistic finality systems like Ethereum Proof-of-Stake.


    Advantages of CelesBFT

    • Fast Finality: Transactions are confirmed in 1 second.

    • Efficiency: Reduced communication complexity in the happy path.

    • Scalability: Supports high transaction throughput due to pipelined processing.

    • Security: Robust Byzantine Fault Tolerance with cryptographic signature aggregation.

    CelesBFT’s combination of performance and security makes it a cornerstone of Celestium’s high-throughput Layer 1 blockchain architecture.

    Asynchronous Execution

    Celestium introduces Asynchronous Execution as a core innovation to significantly enhance transaction throughput and system performance. This approach decouples the execution of transactions from the consensus process, enabling both processes to run in parallel.


    Background: The Limitation of Interleaved Execution

    Traditional blockchains like Ethereum follow an interleaved execution model, where consensus and execution are tightly coupled:

    1. A block proposer assembles a block and executes all transactions in it.

    2. Validators execute the transactions before voting to agree on the block's validity.

    3. The block is finalized only after both consensus and execution are complete.

    This approach leads to performance bottlenecks because:

    • Execution delays block finalization.

    • The gas limit must be conservative to ensure execution completes within the block time.

    • Block time is underutilized, as consensus occupies most of it.


    How Asynchronous Execution Works in Celestium

    Celestium decouples consensus and execution into two separate processes:

    1. Consensus Layer: Determines the order of transactions within a block without executing them.

    2. Execution Layer: Executes transactions after a block is finalized.

    Key Differences from Traditional Execution:

    Feature
    Interleaved Execution (e.g., Ethereum)
    Asynchronous Execution (Celestium)

    Benefits of Asynchronous Execution

    1. Increased Execution Throughput

    Since execution is no longer constrained by consensus, the full block time (1 second) can be dedicated to execution. This results in a much higher gas limit per block and improved throughput.

    2. Faster Finality

    Finality is achieved in 1 second based on transaction ordering alone. Users know their transactions are included in the blockchain without waiting for execution to complete.

    3. Reduced Execution Latency

    Nodes can optimize execution pipelines and parallelize transaction processing, further increasing system efficiency.

    4. Improved Resilience

    Nodes can handle execution failures independently without delaying consensus. For example, if a node executes transactions incorrectly, it can detect this later and re-execute them correctly.


    Delayed Merkle Root for State Consistency

    To maintain state consistency across nodes:

    • Each block header contains a Merkle root representing the final state.

    • This root is delayed by D blocks (e.g., D=10), allowing nodes time to execute and confirm the correct state.

    • Nodes that detect discrepancies in state can rollback and re-execute blocks until their state matches the agreed Merkle root.

    This approach ensures that all nodes converge on the same state while enabling fast block finality.


    Example Timeline:

    Block Number
    Consensus Finality
    Execution Completion

    Handling Failed Transactions

    • Since consensus only orders transactions, failed transactions are still included in blocks.

    • Nodes will execute transactions later; if a transaction fails (e.g., out of gas), it will still fail consistently across all nodes.

    • Users can query the result after execution completes, with no effect on finality.


    User Experience Impact

    Action
    User Perception

    Why It Matters

    Asynchronous execution is a fundamental shift that allows Celestium to:

    • Scale beyond the limitations of single-threaded execution.

    • Support complex applications with higher gas limits.

    • Maintain fast finality and user experience without sacrificing security.

    This innovation positions Celestium as a performance-optimized Layer 1 blockchain while retaining full compatibility with the Ethereum ecosystem.

    Querying the Outcome

    After a transaction is submitted, propagated, included in a block, finalized, and executed locally, users often need to verify the outcome of the transaction. This final step ensures that the transaction was successful and allows users to retrieve relevant data such as gas usage, status, and event logs.


    1. Checking Transaction Status

    Users can check the outcome of a transaction by querying an RPC node using the transaction hash. This can be done using two primary JSON-RPC methods:

  • Finality: A block is considered finalized when a QC for the subsequent block is formed.

  • Sybil Resistance

    Proof-of-Authority + AI (PoAi)

    Block Time

    1 second

    Finality

    Single-slot finality (block finalized after 1 second)

    Delegation

    Supported

    Pipelined Rounds

    Optimized two-phase consensus rounds with pipelining

    Optimistic Responsiveness

    Fast finality under normal conditions

    BLS Multi-Signatures

    Efficient certificate aggregation with BLS12-381 curve

    Consensus + Execution

    Happens together within block time.

    Consensus first, execution after.

    Execution Budget

    Limited by consensus time.

    Full block time available.

    Finality

    Includes execution result.

    Finality is about ordering; execution follows.

    Block N

    Finalized (1s)

    Execution begins

    Block N+1

    Finalized (1s)

    Execution continues

    Block N+D

    Finalized (1s)

    Merkle root confirmed

    Transaction Submission

    Near-instant inclusion (1s).

    Order Finality

    Guaranteed in 1s.

    Execution Outcome

    Typically available in < 1s after finality for full nodes.

    Light Client Proof

    Available after D=10 blocks (~10s) with Merkle proof.

    RPC URL
    :
    https://rpc-testnet.celestium.network
  • Chain ID: 252525

  • Currency Symbol: tCLT

  • Block Explorer URL: https://explorer-testnet.celestium.network

  • Click Save and switch to the Celestium Testnet network.

  • Test token transfers:

    • Use Remix to call transfer() to send tokens.

    • Check the balance using balanceOf().

    Celestium Faucet
    Celestium Faucet
    Celestium.network
    Get Test CLT
    // SPDX-License-Identifier: MIT
    
    pragma solidity 0.8.16;
    
    interface IERC20 {
        function totalSupply() external view returns (uint256);
        function balanceOf(address account) external view returns (uint256);
        function transfer(address recipient, uint256 amount) external returns (bool);
        function allowance(address owner, address spender) external view returns (uint256);
        function approve(address spender, uint256 amount) external returns (bool);
        function transferFrom(
            address sender,
            address recipient,
            uint256 amount
        ) external returns (bool);
       
        event Transfer(address indexed from, address indexed to, uint256 value);
        event Approval(address indexed owner, address indexed spender, uint256 value);
    }
    
    interface IERC20Metadata is IERC20 {
        function name() external view returns (string memory);
        function symbol() external view returns (string memory);
        function decimals() external view returns (uint8);
    }
    
    abstract contract Context {
        function _msgSender() internal view virtual returns (address) {
            return msg.sender;
        }
    
        function _msgData() internal view virtual returns (bytes calldata) {
            this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
            return msg.data;
        }
    }
    
    contract ERC20 is Context, IERC20, IERC20Metadata {
        mapping(address => uint256) private _balances;
    
        mapping(address => mapping(address => uint256)) private _allowances;
    
        uint256 private _totalSupply;
    
        string private _name;
        string private _symbol;
    
        constructor(string memory name_, string memory symbol_) {
            _name = name_;
            _symbol = symbol_;
        }
    
        function name() public view virtual override returns (string memory) {
            return _name;
        }
    
        function symbol() public view virtual override returns (string memory) {
            return _symbol;
        }
    
        function decimals() public view virtual override returns (uint8) {
            return 18;
        }
    
        function totalSupply() public view virtual override returns (uint256) {
            return _totalSupply;
        }
    
        function balanceOf(address account) public view virtual override returns (uint256) {
            return _balances[account];
        }
    
        function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
            _transfer(_msgSender(), recipient, amount);
            return true;
        }
    
        function allowance(address owner, address spender) public view virtual override returns (uint256) {
            return _allowances[owner][spender];
        }
    
        function approve(address spender, uint256 amount) public virtual override returns (bool) {
            _approve(_msgSender(), spender, amount);
            return true;
        }
    
        function transferFrom(
            address sender,
            address recipient,
            uint256 amount
        ) public virtual override returns (bool) {
            uint256 currentAllowance = _allowances[sender][_msgSender()];
            if (currentAllowance != type(uint256).max) {
                require(currentAllowance >= amount, "CLT20: transfer amount exceeds allowance");
                unchecked {
                    _approve(sender, _msgSender(), currentAllowance - amount);
                }
            }
    
            _transfer(sender, recipient, amount);
    
            return true;
        }
    
        function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
            return true;
        }
    
        function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
            uint256 currentAllowance = _allowances[_msgSender()][spender];
            require(currentAllowance >= subtractedValue, "CLT20: decreased allowance below zero");
            unchecked {
                _approve(_msgSender(), spender, currentAllowance - subtractedValue);
            }
    
            return true;
        }
    
        function _transfer(
            address sender,
            address recipient,
            uint256 amount
        ) internal virtual {
            require(sender != address(0), "CLT20: transfer from the zero address");
            require(recipient != address(0), "CLT20: transfer to the zero address");
    
            _beforeTokenTransfer(sender, recipient, amount);
    
            uint256 senderBalance = _balances[sender];
            require(senderBalance >= amount, "CLT20: transfer amount exceeds balance");
            unchecked {
                _balances[sender] = senderBalance - amount;
            }
            _balances[recipient] += amount;
    
            emit Transfer(sender, recipient, amount);
    
            _afterTokenTransfer(sender, recipient, amount);
        }
    
        function _mint(address account, uint256 amount) internal virtual {
            require(account != address(0), "CLT20: mint to the zero address");
    
            _beforeTokenTransfer(address(0), account, amount);
    
            _totalSupply += amount;
            _balances[account] += amount;
            emit Transfer(address(0), account, amount);
    
            _afterTokenTransfer(address(0), account, amount);
        }
    
        function _burn(address account, uint256 amount) internal virtual {
            require(account != address(0), "CLT20: burn from the zero address");
    
            _beforeTokenTransfer(account, address(0), amount);
    
            uint256 accountBalance = _balances[account];
            require(accountBalance >= amount, "CLT20: burn amount exceeds balance");
            unchecked {
                _balances[account] = accountBalance - amount;
            }
            _totalSupply -= amount;
    
            emit Transfer(account, address(0), amount);
    
            _afterTokenTransfer(account, address(0), amount);
        }
    
        function _approve(
            address owner,
            address spender,
            uint256 amount
        ) internal virtual {
            require(owner != address(0), "CLT20: approve from the zero address");
            require(spender != address(0), "CLT20: approve to the zero address");
    
            _allowances[owner][spender] = amount;
            emit Approval(owner, spender, amount);
        }
    
        function _beforeTokenTransfer(
            address from,
            address to,
            uint256 amount
        ) internal virtual {}
    
        function _afterTokenTransfer(
            address from,
            address to,
            uint256 amount
        ) internal virtual {}
    }
    
    contract NameContract is ERC20 { // dont use space for this section
        constructor () ERC20("Name Coin", "TICKER/SYMBOL") // Change your name Coin and Ticker
        {    
            _mint(msg.sender, 100_000_000 * (10 ** 18)); // Supply of Coin & Decimals
        }
    }

    Description

    eth_getTransactionByHash

    Returns information about a transaction by hash.

    eth_getTransactionReceipt

    Returns the receipt containing the execution result.

    The most common method for checking the final outcome is eth_getTransactionReceipt.


    2. Transaction Receipt Structure

    A transaction receipt is a data structure containing the execution result of a transaction:

    Field

    Description

    transactionHash

    Hash of the transaction.

    blockNumber

    Block number in which the transaction was included.

    status

    1 for success, 0 for failure.

    from

    Address of the sender.

    to

    Address of the recipient (or contract creation address).

    gasUsed

    Total gas used by the transaction.


    3. Example: Querying a Transaction Outcome

    Web3.js Example

    cURL Example


    4. Interpreting the Results

    Scenario

    Meaning

    Receipt is null

    Transaction is pending or not found.

    status == 1

    Transaction was successful.

    status == 0

    Transaction failed (e.g., out of gas or revert).

    logs contains events

    Smart contract emitted events during execution.

    contractAddress != null

    Contract was successfully deployed.


    5. Common Use Cases

    • Verifying Token Transfers: Check logs for Transfer events from ERC-20 contracts.

    • Contract Deployment: Retrieve the contractAddress after a successful deployment.

    • Gas Estimation: Analyze gasUsed and effectiveGasPrice for future transactions.


    6. Handling Pending Transactions

    If the transaction is still pending, users can also query:

    Method

    Description

    eth_getTransactionByHash

    Returns transaction details even if it is still pending.


    7. Best Practices

    • Always check status in the receipt before assuming success.

    • Monitor gas usage (gasUsed) to estimate costs more accurately.

    • Handle pending transactions gracefully in applications by implementing retries.


    8. Final Notes

    Querying transaction outcomes is a critical step in the transaction lifecycle. It provides clarity to users and developers, ensuring that transactions are executed as intended. Celestium’s Ethereum RPC compatibility allows seamless integration with existing Ethereum tools, making this process familiar and efficient for developers.

    Method

    Local Execution

    Local execution refers to the process by which a node processes and executes transactions from a finalized block to determine the post-state of the blockchain. This is a critical step in ensuring that all nodes in the network arrive at the same state after a block has been added to the chain.


    1. Execution Trigger

    Once a block is finalized through the CelesBFT consensus mechanism, the block and its transactions are considered immutable and part of the blockchain's history. After finalization:

    • Each node begins executing the transactions contained in the block.

    • Execution is performed optimistically and in parallel for efficiency.

    • The final state is merged sequentially to ensure deterministic results across all nodes.


    2. Execution Environment

    Local execution is carried out within the EVM-compatible runtime environment of Celestium. This allows for compatibility with Ethereum smart contracts, including contracts written in Solidity.

    Key elements of the execution environment:

    • Gas Accounting: Each transaction consumes gas based on the complexity of its operations.

    • Opcode Compatibility: The same gas costs per opcode as Ethereum are used.

    • Parallel Execution: Transactions are executed concurrently where possible.

    • State Merger: Final state changes are applied sequentially to maintain consistency.


    3. Transaction Processing Flow

    Each transaction undergoes the following steps during local execution:


    4. Parallel and Optimistic Execution

    Celestium employs optimistic execution and parallel transaction execution to maximize throughput:

    • Transactions are optimistically executed in parallel, assuming that their state accesses do not conflict.

    • State access tracking detects conflicts. If a conflict is found, the affected transaction is re-executed.

    • Final state changes are merged sequentially in the order of transactions in the block.

    This approach allows Celestium to maintain Ethereum-like execution semantics while achieving high throughput.


    5. Final State Commit

    After all transactions in a block are executed:

    • The final state is committed to CelesDb.

    • A state root hash is computed and stored as part of the block.

    • This hash allows light clients and other nodes to verify the state with Merkle proofs.


    6. Querying the Local Execution Result

    Users can query the result of transaction execution via RPC:

    The receipt includes:

    • status: 1 for success, 0 for failure.

    • blockNumber: The block containing the transaction.

    • gasUsed: Amount of gas consumed.


    7. Key Benefits of Local Execution in Celestium


    8. RPC Endpoints Related to Execution


    9. Example Use Case

    After submitting a transaction, a user may want to verify its success:

    This final step ensures users can confirm that their transactions have been successfully executed and included in the blockchain state.


    Local execution is a fundamental part of Celestium’s transaction lifecycle, ensuring that every node independently verifies and applies transactions consistently. By combining parallel execution, optimistic techniques, and EVM compatibility, Celestium delivers high performance while preserving the reliability and determinism expected from blockchain systems.

    Block Inclusion

    Block inclusion is the process through which transactions from the mempool are selected, ordered, and packaged into a block by a validator. This block is then proposed to the network and, upon consensus, is finalized as part of the blockchain. Understanding block inclusion is crucial for developers and node operators as it determines the finalization and ordering of transactions on Celestium.


    1. Block Production Mechanism

    Celestium uses the CelesBFT consensus algorithm with a Proof of Authority + AI (PoAi) mechanism to produce blocks. Block production follows a rotating leader model:

    • In each round (every 1 second), a validator is designated as the leader.

    • The leader is responsible for selecting pending transactions from the mempool and constructing a block.

    • Validators vote on the proposed block.

    • If two-thirds (2/3) of the validators agree, the block is finalized and added to the blockchain.

    This approach guarantees 1-second finality, meaning that once a block is finalized, it is irreversible unless a Byzantine fault occurs.


    2. Transaction Selection for Block Inclusion

    When a validator assembles a block, it follows these principles:

    a. Gas Price Priority (Priority Gas Auction - PGA):

    • Transactions with higher gas fees (maxFeePerGas) are prioritized.

    • The validator aims to maximize transaction fees collected as block rewards.

    b. Available Balance Validation:

    • The available balance of the account is checked in real-time.

    • Transactions that would exceed an account's available balance (considering other pending transactions) are skipped.

    c. Gas Limit Considerations:

    • Each block has a block gas limit.

    • The sum of the gas limits of included transactions cannot exceed the block gas limit.


    3. Transaction Cost Calculation

    When evaluating transactions, the maximum potential cost is calculated as:

    The validator verifies that the account’s available balance can cover this amount before including the transaction.


    4. Block Propagation

    Once a block is assembled:

    1. The leader broadcasts the block proposal to other validators.

    2. Validators validate the block:

      • Check transaction validity.

      • Verify the block signature.

    Finalization is achieved in a single slot (1 second), ensuring near-instant certainty.


    5. Impact of Block Inclusion on Transactions

    After a transaction is included in a block:

    • It becomes part of the blockchain’s history.

    • It is considered final and cannot be reversed without network failure.

    • The transaction’s outcome (success or failure) is determined during execution.

    Users can retrieve the transaction status using:

    This will return the block number, status, and logs associated with the transaction.


    6. Block Gas Limit

    The block gas limit restricts the amount of computational work that can be performed in a single block. It ensures that block production and propagation remain fast, maintaining Celestium’s high throughput.

    Example:

    • Block Gas Limit: 30,000,000

    • Transaction 1 Gas Limit: 500,000

    • Transaction 2 Gas Limit: 2,000,000

    The validator can include both transactions as long as their total gas limit does not exceed the block limit.


    7. Rejected or Delayed Transactions

    Transactions may remain in the mempool or be rejected if:

    • The transaction fee is too low.

    • The transaction requires more gas than the block gas limit allows.

    • The account lacks sufficient funds after other transactions are included.

    • The transaction depends on a nonce sequence that is not yet met.

    Rejected transactions can be replaced by resubmitting with a higher gas price.


    8. Summary of Block Inclusion Flow


    9. Key Benefits in Celestium

    • 1-Second Finality: Transactions are final within a single slot.

    • Gas Auction Efficiency: Ensures optimal fee selection.

    • Balance Validation: Reduces failed transactions in blocks.

    • High Throughput: Block gas limits are optimized for performance.


    10. Related RPC Endpoints


    Understanding block inclusion helps developers and users optimize transaction fees and timing, ensuring transactions are processed efficiently in Celestium’s high-performance environment.

    State Storage Optimizations

    Efficient state storage is critical for high-performance blockchains like Celestium, which aims to achieve high throughput and low-latency execution. Optimizing how blockchain state is stored and accessed directly impacts the speed of transaction processing, block validation, and node synchronization.

    CelesDb is the foundation of Celestium’s state storage, but additional optimizations are applied to maximize performance and reduce resource consumption.


    Challenges in Blockchain State Storage

    Blockchain state represents account balances, smart contract data, and other state variables. This state grows continuously as transactions modify it. Key challenges include:

    Transaction Submission

    Submitting a transaction is the initial step in interacting with the Celestium blockchain. This process involves creating a signed transaction that reflects the user's intention, whether it is sending native tokens (CLT), interacting with a smart contract, or deploying a new contract.

    Understanding the transaction submission process is essential for both developers building applications on Celestium and users seeking to conduct secure and efficient blockchain operations.


    1. Preparing a Transaction

    A transaction in Celestium adheres to the Ethereum transaction format, following standards such as:

    const Web3 = require('web3');
    const web3 = new Web3('https://rpc-private-testnet.celestium.network');
    
    async function getTransactionReceipt(txHash) {
      const receipt = await web3.eth.getTransactionReceipt(txHash);
    
      if (receipt) {
        console.log('Transaction Receipt:', receipt);
        if (receipt.status) {
          console.log('Transaction Successful!');
        } else {
          console.log('Transaction Failed!');
        }
      } else {
        console.log('Transaction is pending or not found');
      }
    }
    
    getTransactionReceipt('0xYOUR_TRANSACTION_HASH');
    curl -X POST https://rpc-private-testnet.celestium.network \
    -H "Content-Type: application/json" \
    --data '{
      "jsonrpc":"2.0",
      "method":"eth_getTransactionReceipt",
      "params":["0xYOUR_TRANSACTION_HASH"],
      "id":1
    }'

    logs

    Array of logs generated during execution (events).

    contractAddress

    Address of the contract created, if applicable.

    effectiveGasPrice

    Actual gas price paid after execution.

    Record transaction outcome and gas usage.

    logs: Logs emitted by the smart contract.

    Step

    Description

    Signature Verification

    Validate the sender's signature.

    Nonce Validation

    Ensure the transaction nonce is correct.

    Balance Check

    Verify the sender has sufficient balance.

    Gas Estimation

    Calculate gas cost based on transaction complexity.

    EVM Execution

    Execute the transaction logic within the EVM.

    State Update

    Apply changes to account balances and storage.

    Benefit

    Description

    Deterministic Execution

    All nodes arrive at the same state after executing the block.

    Parallel Processing

    Reduces block processing time.

    Fast Outcome Availability

    Full nodes know transaction outcomes within 1 second.

    EVM Compatibility

    Supports existing Ethereum tools and contracts.

    Method

    Description

    eth_getTransactionReceipt

    Get transaction execution result.

    eth_getBlockByNumber

    Fetch block details, including state root hash.

    Receipt Generation

    Confirm that the transactions do not exceed gas limits.

  • Validators vote on the block.

  • If 2/3 of the validators agree, a Quorum Certificate (QC) is formed.

  • The block is finalized and propagated to the network.

  • Step

    Description

    Transaction Selection

    Validator selects high-fee, valid transactions from the mempool.

    Block Assembly

    Transactions are bundled into a block, subject to gas and balance limits.

    Block Proposal

    The leader proposes the block to other validators.

    Voting & QC Formation

    Validators vote; 2/3 approval finalizes the block.

    Block Finalization

    The block is added to the blockchain; transactions are executed.

    Method

    Description

    eth_getBlockByNumber

    Retrieve block details by number.

    eth_getTransactionReceipt

    Get transaction status and logs.

    const receipt = await web3.eth.getTransactionReceipt(txHash);
    console.log(receipt);
    const txHash = '0xabc123...';
    const receipt = await web3.eth.getTransactionReceipt(txHash);
    
    if (receipt && receipt.status) {
        console.log('Transaction Successful:', receipt);
    } else {
        console.log('Transaction Failed or Pending');
    }
    Max Cost = Value + (Gas Limit * MaxFeePerGas)
    const receipt = await web3.eth.getTransactionReceipt(txHash);
    console.log(receipt);

    Frequent Random Reads and Writes: Each transaction may read and write to different parts of the state.

  • Large State Size: As the network grows, the state can reach terabytes in size.

  • Efficient Proof Generation: Merkle proofs are needed for light clients, requiring efficient state root computation.

  • Concurrency: Supporting parallel execution demands concurrent state reads and writes without data corruption.


  • Key State Storage Optimizations in Celestium

    Optimization

    Description

    Trie Node Caching

    Frequently accessed parts of the Merkle Patricia Trie are cached in memory to reduce disk reads.

    Compact Trie Node Encoding

    Trie nodes are stored in a compressed format to minimize disk usage and reduce I/O overhead.

    Node Preloading

    Anticipates state access patterns during execution and preloads relevant trie nodes into memory.

    Batch State Updates

    State changes from multiple transactions are batched into a single write operation, reducing I/O cost.

    Parallel State Reads

    Allows multiple transactions to read different parts of the state concurrently during parallel execution.

    Asynchronous State Access

    State reads and writes are non-blocking, leveraging async I/O (e.g., io_uring on Linux).


    Trie Node Caching

    To minimize disk I/O, Celestium employs an adaptive caching strategy:

    • Hot State Cache: Frequently accessed accounts and contract storage slots are kept in memory.

    • Trie Node Cache: Patricia Trie nodes involved in recent reads or writes are cached to speed up future accesses.

    • Execution Context Cache: Intermediate state during parallel and optimistic execution is kept in a local context cache before merging.

    This reduces redundant disk reads and accelerates transaction execution.


    Compact Trie Node Encoding

    Each node in the Merkle Patricia Trie is represented in a compact format to:

    • Reduce storage size on disk.

    • Accelerate deserialization during state reads.

    • Minimize the number of I/O operations.

    For example, nodes with short paths are packed into a single structure, reducing the need to traverse multiple disk blocks.


    Parallel State Reads

    Parallel transaction execution requires the state database to serve concurrent read operations efficiently:

    • Lock-free reads: Reads are allowed in parallel without locking.

    • Snapshot isolation: Transactions read a snapshot of the state at the block start, avoiding conflicts.

    • Trie Segmentation: Trie nodes are segmented so that reads on different branches can proceed independently.

    This ensures that parallel execution threads can access state concurrently without blocking each other.


    Batch State Updates

    Instead of writing state changes to disk for each transaction, Celestium:

    1. Accumulates state updates during block execution.

    2. Batches writes into a single I/O operation at the end of execution.

    3. Merges updates efficiently into the Patricia Trie.

    This drastically reduces the number of random disk writes and improves throughput.


    Asynchronous State Access

    Building on CelesDb’s async I/O capabilities, state reads and writes are designed to be non-blocking:

    • Concurrent state access requests are issued during transaction execution.

    • Other operations continue while waiting for disk reads/writes.

    • Async completion allows results to be processed as soon as they are ready.

    This is crucial for parallel execution, ensuring CPU resources are never idle waiting for I/O.


    Node Preloading

    Celestium leverages execution pre-analysis to predict which parts of the state will be accessed:

    • Static analysis of smart contract code predicts state dependencies.

    • State prefetching loads trie nodes into memory before execution begins.

    • Reduces random disk reads during execution.

    This optimization works particularly well when transactions interact with the same contracts frequently.


    Sparse Storage Layout

    Accounts and contract storage are designed to handle sparse keys efficiently. This is particularly useful for:

    • Contracts with large mappings but few actual entries.

    • Accounts with sparse nonces or balances across multiple tokens.

    Sparse layouts ensure that empty state entries do not consume disk space unnecessarily.


    Write-ahead Buffering

    During block execution, state changes are buffered in-memory before being written to disk:

    • Reduces disk writes during speculative execution (parallel and optimistic execution).

    • Accelerates transaction throughput, especially for blocks with frequent state updates.

    • Ensures crash consistency by logging buffered updates before committing.


    Benefits of State Storage Optimizations

    Benefit

    Impact

    Faster Transaction Execution

    Reduced disk I/O and faster state access enable low-latency execution.

    Improved Parallelism

    Concurrent reads and async writes support Celestium’s parallel and optimistic execution models.

    Reduced Disk Wear

    Batched writes and caching reduce the number of random disk writes, extending SSD lifespan.

    Lower Memory Footprint

    Compact encoding and adaptive caching optimize memory usage.

    Scalability

    Efficient handling of large state ensures Celestium can scale to millions of accounts and contracts.


    Comparison to Traditional Ethereum Clients

    Aspect

    Celestium State Storage

    Traditional Ethereum Clients

    Trie Node Caching

    Adaptive hot-state and trie caching

    Basic caching, limited optimization

    Parallel State Reads

    Fully supported

    Mostly sequential

    Async I/O

    Full async (io_uring support)

    Blocking I/O

    Batch Writes

    Optimized write batching

    Per-transaction writes


    Final Thoughts

    State storage optimizations in Celestium are purpose-built to complement parallel and asynchronous execution models. These enhancements ensure that state access is never a bottleneck, allowing Celestium to achieve high throughput without sacrificing Ethereum compatibility.

    By combining custom database design (CelesDb) with advanced storage techniques, Celestium can scale to support large-scale decentralized applications while maintaining low latency and high efficiency.

    EIP-2718: Typed Transaction Envelope.

  • EIP-2930: Optional Access Lists for Gas Optimization.

  • Key fields in a transaction:

    Field

    Description

    nonce

    Sequence number for the account.

    to

    Recipient address (or empty for contract deployment).

    value

    Amount of native token (CLT) to transfer.

    gasLimit

    Maximum gas units the transaction can consume.

    gasPrice

    Fee per gas unit in native token.

    maxFeePerGas

    Maximum fee per gas (used in EIP-1559 transactions).

    The transaction is serialized using RLP (Recursive Length Prefix) encoding.


    2. Gas Estimation

    Before submitting, users often estimate gas consumption by calling:

    This simulates transaction execution without broadcasting it, helping the user set a suitable gasLimit and avoid out-of-gas failures.


    3. Signing the Transaction

    A transaction is signed using the account's private key. Wallets such as MetaMask or hardware wallets handle signing securely.

    The signature covers the transaction fields, ensuring authenticity and preventing tampering.


    4. Submitting the Transaction

    After signing, the transaction is broadcast to the Celestium network through an RPC node:

    RPC Call Example:

    The node validates the transaction structure and the user's balance before propagating it to the network.


    5. Validation at Submission

    To prevent spam and invalid transactions, Celestium nodes check:

    • Sufficient Balance: Ensuring the account can cover value + gasLimit * maxFeePerGas.

    • Nonce Matching: The nonce must align with the account's next expected nonce.

    • Signature Validity: The ECDSA signature must match the sender's address.

    If any check fails, the transaction is rejected with an error message.


    6. Mempool Propagation

    Once validated, the transaction enters the mempool, a temporary pool of pending transactions. Validators select transactions from the mempool during block proposal, prioritizing those with higher fees.

    Celestium optimizes mempool management:

    • Transactions are sorted by effective gas price (base fee + priority fee).

    • Transactions exceeding the available balance are not admitted.

    • Replacement Transactions: Users can speed up or cancel pending transactions by submitting a new transaction with the same nonce and higher gas fees.


    7. Tracking the Transaction Status

    Users can track their transaction's status via:

    • eth_getTransactionReceipt: Retrieves execution results (success, failure, gas used).

    • Block Explorer: http://testnet.celestium.network

    Receipt Example:


    8. Common Errors

    Error

    Cause

    nonce too low

    A transaction with a higher nonce has already been sent.

    out of gas

    Gas limit was insufficient to cover computation.

    insufficient funds

    Balance is too low for the transaction’s value and fees.

    invalid signature

    Signature does not match the transaction data.


    9. Example Using Web3.js

    Here is an example of submitting a transaction using Web3.js in Node.js:


    10. Summary of Transaction Submission Flow

    1. Create Transaction: Specify to, value, gasLimit, data, and fee fields.

    2. Estimate Gas (Optional): Simulate execution to set an optimal gas limit.

    3. Sign Transaction: Use a wallet or library to sign.

    4. Submit Transaction: Call eth_sendRawTransaction via RPC.

    5. Validate: Node checks balance, nonce, and signature.

    6. Propagate: Transaction enters the mempool.

    7. Inclusion: Validator includes the transaction in a block.

    8. Query Status: Retrieve execution results via RPC or block explorer.


    Related RPC Endpoints

    Method

    Description

    eth_estimateGas

    Estimate gas usage for a transaction.

    eth_sendTransaction

    Send an unsigned transaction (requires unlocked account).

    eth_sendRawTransaction

    Submit a signed transaction.

    eth_getTransactionReceipt

    Retrieve transaction result after execution.


    Final Notes

    Understanding the transaction lifecycle ensures that developers can efficiently interact with Celestium, prevent common submission issues, and optimize fee spending. Proper handling of nonce, gas estimation, and mempool behavior is crucial for seamless on-chain operations.

    Accounts & Transactions

    Accounts and transactions form the foundation of activity on Celestium. They govern how users interact with the network, deploy smart contracts, and transfer value.


    1. Accounts in Celestium

    Celestium follows the Ethereum account model, meaning it supports two types of accounts:

    Externally-Owned Accounts (EOAs)

    eth_estimateGas
    eth_sendRawTransaction
    {
      "transactionHash": "0x...",
      "status": "0x1", // Success (0x0 = Failure)
      "blockNumber": "0x...",
      "gasUsed": "0x...",
      "logs": [ ... ]
    }
    const Web3 = require('web3');
    const web3 = new Web3('http://rpc-private-testnet.celestium.network');
    
    // Sender's private key and address
    const privateKey = '0xYOUR_PRIVATE_KEY';
    const senderAddress = '0xYOUR_ADDRESS';
    
    async function sendTransaction() {
      const nonce = await web3.eth.getTransactionCount(senderAddress, 'latest');
      const tx = {
        from: senderAddress,
        to: '0xRecipientAddress',
        value: web3.utils.toWei('0.1', 'ether'),
        gas: 21000,
        gasPrice: web3.utils.toWei('10', 'gwei'),
        nonce: nonce,
        chainId: 252525 // Celestium Testnet
      };
    
      const signedTx = await web3.eth.accounts.signTransaction(tx, privateKey);
      const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
    
      console.log('Transaction receipt:', receipt);
    }
    
    sendTransaction();

    Sparse Storage Layout

    Sparse Merkle Trie layout reduces storage overhead for accounts and contracts with minimal state.

    Write-ahead Buffering

    State changes are first written to a buffer before being committed to disk, minimizing expensive random writes.

    Sparse Storage

    Efficient handling of sparse state

    No special optimization

    maxPriorityFeePerGas

    Maximum priority fee per gas for miners/validators.

    data

    Optional data payload (e.g., contract interaction).

    signature

    ECDSA signature authorizing the transaction.

    Controlled by private keys.

  • Used by users to initiate transactions.

  • Can send and receive tokens.

  • Contract Accounts

    • Controlled by smart contract code.

    • Cannot initiate transactions independently.

    • Execute logic when triggered by an EOA or another contract.

    Address Format

    • 20-byte hexadecimal addresses.

    • Derived from the public key using ECDSA (Elliptic Curve Digital Signature Algorithm).

    • Example: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e

    Account State

    Each account has the following state properties:

    Field
    Description

    nonce

    Number of transactions sent (EOAs) or created (contracts).

    balance

    Amount of native tokens (CLT) held by the account.

    codeHash

    Hash of the smart contract code (empty for EOAs).

    storageRoot

    Merkle Patricia Trie root hash representing contract storage.


    2. Transactions in Celestium

    Transactions are signed messages that trigger state changes on the Celestium blockchain. They are compatible with Ethereum's transaction structure and comply with EIP-2718 and EIP-2930.

    Transaction Fields

    Field
    Description

    nonce

    Sequential number to prevent replay attacks.

    gasPrice / maxFeePerGas

    Amount the sender is willing to pay per gas unit.

    gasLimit

    Maximum gas units the transaction can consume.

    to

    Recipient address (or empty for contract creation).

    value

    Amount of CLT tokens to transfer.

    data

    Input data (e.g., smart contract call).

    Transaction Types

    Type
    Description

    Legacy Transactions

    Pre-EIP-1559 transactions using gasPrice.

    EIP-1559 Transactions

    Use maxFeePerGas and maxPriorityFeePerGas fields.

    EIP-2930 Transactions

    Include access lists to optimize gas usage.

    Gas and Fees

    • Gas represents computational effort.

    • Each opcode has a gas cost.

    • Transaction fee is calculated as:

    Signed Transactions

    Transactions must be signed using the sender's private key. This generates the v, r, s fields in the transaction.

    Example: Signing and Sending a Transaction (Web3.js)


    3. Native Token (CLT)

    • The native token on Celestium is CLT.

    • Used to pay for transaction fees (gas).

    • Can be transferred between accounts.

    4. Wrapped CLT (WCLT)

    • ERC-20 compliant representation of CLT.

    • Used in smart contracts requiring ERC-20 compatibility.


    5. Nonce Management

    Nonces ensure that each transaction is processed in order and prevents double-spending. Transactions with duplicate or out-of-order nonces will fail or be delayed.

    Best Practices:

    • Always retrieve the current nonce before sending a transaction:


    6. Access Lists (Optional)

    Introduced in EIP-2930, access lists reduce gas costs by pre-declaring state slots and accounts a transaction will access.

    Access List Example:


    7. Summary

    • EOAs are user-controlled; Contract Accounts are code-controlled.

    • Transactions modify state and transfer value.

    • Gas is a unit of computational cost, paid in CLT.

    • Access lists and EIP-1559 transactions improve gas efficiency.

    Celestium’s Ethereum compatibility allows developers to leverage familiar tooling, making the transition seamless for existing blockchain developers.

    javaSalinEditTransaction Fee = Gas Used * Effective Gas Price
    const nonce = await web3.eth.getTransactionCount(account.address);
    const Web3 = require('web3');
    const web3 = new Web3('https://rpc-private-testnet.celestium.network');
    
    async function sendTransaction() {
      const account = web3.eth.accounts.privateKeyToAccount('0xYOUR_PRIVATE_KEY');
      const tx = {
        from: account.address,
        to: '0xRecipientAddress',
        value: web3.utils.toWei('1', 'ether'),
        gas: 21000,
        maxFeePerGas: web3.utils.toWei('5', 'gwei'),
        maxPriorityFeePerGas: web3.utils.toWei('2', 'gwei'),
      };
    
      const signedTx = await account.signTransaction(tx);
      const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
      console.log('Transaction receipt:', receipt);
    }
    
    sendTransaction();
    const tx = {
      from: account.address,
      to: '0xContractAddress',
      data: '0x...',
      gas: 50000,
      accessList: [
        {
          address: '0xStorageContractAddress',
          storageKeys: [
            '0x0000000000000000000000000000000000000000000000000000000000000000',
          ],
        },
      ],
    };

    v, r, s

    ECDSA signature fields.

    Linearity of Blocks & Transactions

    Linearity in blockchain systems refers to the strict ordering of blocks and transactions to maintain consistency, prevent double spending, and ensure deterministic state transitions. Celestium enforces linearity to guarantee all nodes reach consensus on the same transaction history.


    1. Concept of Linearity

    Linearity ensures that:

    • Blocks are arranged in a single, sequential chain.

    • Each block references the hash of its predecessor, forming an immutable chain.

    • Transactions within a block are ordered deterministically.

    This structure prevents forks under normal conditions and ensures all network participants process transactions in the same sequence.


    2. Deterministic Block and Transaction Ordering

    Celestium enforces deterministic block and transaction ordering through:

    • Block Linearity: Each block has a unique height and follows its predecessor.

    • Transaction Linearity: Transactions within a block are ordered based on:

      • Nonce (for transactions from the same account).

      • Priority Fee (tip) during mempool selection.


    3. Nonce and Sequential Transactions

    Each account’s transactions are ordered using a nonce—a sequential number representing the number of transactions sent from an account.

    Example:

    Nonce
    Transaction Hash
    Status

    If a transaction with nonce 1 is missing, the network will not process nonce 2 until nonce 1 is confirmed.


    4. Why Linearity Matters

    • Double Spend Protection: Ensures a single transaction can alter an account’s state at a time.

    • Consensus Finality: All validators agree on the exact order of blocks and transactions.

    • Replay Protection: Nonces prevent transactions from being executed multiple times.


    5. Block Production and Finalization

    Validators produce blocks sequentially, referencing the hash of the previous block. Each block is finalized upon consensus, ensuring no reordering can occur afterward.

    Key Block Properties:

    Property
    Description

    6. Handling Gaps or Missing Transactions

    If a transaction with a lower nonce is delayed:

    • Higher nonce transactions from the same account are held in the mempool.

    • Once the missing transaction is confirmed, pending transactions are processed sequentially.


    7. Celestium’s Approach to Linearity

    Celestium’s consensus mechanism (PoA + AI and CelesBFT) reinforces linearity by:

    • Assigning block production responsibilities to validators in a round-robin manner.

    • Using AI-driven monitoring to prevent Byzantine behavior (e.g., block omission or reordering attempts).

    • Achieving block finality in a single round of voting under normal network conditions.


    8. Summary

    • Blocks and transactions follow a strict linear sequence.

    • Nonces prevent reordering within accounts.

    • Linear execution ensures consensus consistency and prevents state divergence.

    • Validators adhere to linear block production under CelesBFT consensus.

    Linearity is fundamental to Celestium’s performance and security, ensuring that all nodes maintain a unified state despite network latency or adversarial conditions.

    Time of arrival as a tie-breaker.

    0

    0xabc123

    Included

    1

    0xdef456

    Included

    2

    0xghi789

    Pending

    Height

    Block number, starting from 0 (genesis block).

    Parent Hash

    Reference to the previous block’s hash.

    State Root

    Root hash representing the state after executing all transactions.

    Mempool Propagation

    The mempool is a critical component in the transaction lifecycle of Celestium. It acts as a staging area for transactions that have been submitted by users but are not yet included in a block. The propagation of transactions through the mempool ensures that validators and other nodes in the network are aware of pending transactions, enabling their eventual inclusion in the blockchain.

    Understanding mempool propagation is essential for developers and node operators to grasp how transactions move across the network before finalization.


    1. What is the Mempool?

    The mempool is a temporary, in-memory data structure maintained by Celestium nodes. It holds transactions that have been:

    • Validated locally by the submitting node.

    • Not yet included in a finalized block.

    Nodes continuously share their mempool content with peers to ensure network-wide transaction visibility.


    2. Transaction Validation Before Mempool Admission

    Upon receiving a transaction, a Celestium node performs several validation checks before adding it to the mempool:

    • Balance Check: The account must have a sufficient available balance to cover value + gasLimit * maxFeePerGas.

    • Nonce Check: The nonce must be sequential according to the account’s transaction history.

    • Signature Verification: The transaction’s signature must be valid.

    Transactions that fail any of these checks are rejected and not propagated.


    3. Propagation Across Peers

    Once a transaction passes validation and is added to the mempool, it is propagated to peer nodes:

    • The node broadcasts the transaction hash and basic metadata to its peers.

    • Peers request the full transaction data if they do not already have it.

    • Each node performs its own validation before adding the transaction to its mempool.

    This propagation mechanism ensures that transactions spread rapidly across the Celestium network.


    4. Managing Mempool Capacity

    To prevent spam and ensure performance, Celestium nodes enforce mempool limits:

    • Maximum Mempool Size: A limit on the number of transactions in the mempool.

    • Eviction Policy: Low-fee or stale transactions may be dropped when the mempool is full.

    • Replacement Transactions: Users can replace pending transactions by submitting a new transaction with the same nonce and a higher fee (known as a “speed-up” or “cancel” transaction).

    Nodes prioritize transactions based on effective gas price (base fee + priority fee).


    5. Real-Time Available Balance Tracking

    One of Celestium’s innovations is real-time tracking of an account’s available balance during mempool admission. As transactions are added, the available balance is decremented:

    • Prevents the same funds from being spent multiple times in pending transactions.

    • Reduces the risk of block proposals containing invalid transactions.

    This approach safeguards against denial-of-service (DoS) attacks and enhances network efficiency.


    6. Mempool Gossip Protocol

    Celestium employs a gossip protocol to ensure rapid propagation of transactions:

    • Each node randomly selects a subset of peers to gossip new transactions.

    • Gossip is limited to reduce network congestion.

    • Peers that already have the transaction ignore redundant announcements.

    This decentralized broadcasting approach ensures that valid transactions reach block proposers swiftly.


    7. Transaction Replacement and Cancellation

    Users often need to speed up or cancel pending transactions:

    • Speed Up: Submit a new transaction with the same nonce and a higher gas price.

    • Cancel: Submit a zero-value transaction with the same nonce and a higher gas price.

    Replacement transactions must meet the price bump requirement (e.g., 10-12% higher gas price) to be accepted by nodes.

    Example with Web3.js:


    8. Priority Gas Auction (PGA)

    Validators use PGA (Priority Gas Auction) to order transactions in a block:

    • Transactions offering higher fees per gas are prioritized.

    • This auction mechanism creates competition during network congestion.

    Users can monitor current gas prices to optimize their fee settings.


    9. Mempool and Finality

    Transactions in the mempool are not final until included in a block. Once a block is finalized (1-second finality in Celestium), transactions within that block are considered part of the immutable blockchain history.


    10. Summary of Mempool Propagation Flow

    1. Transaction Submission: User submits a signed transaction.

    2. Validation: Node checks balance, nonce, signature, and gas price.

    3. Mempool Admission: Valid transactions are added to the mempool.

    4. Propagation: Transaction details are gossiped to peers.


    Related RPC Endpoints


    Key Benefits of Celestium Mempool Design

    • Real-Time Balance Tracking: Reduces invalid transaction inclusion.

    • Efficient Propagation: Ensures fast transaction distribution.

    • Spam Protection: Limits prevent network abuse.

    • User Control: Supports transaction replacement and cancellation.

    Understanding mempool propagation allows developers and users to optimize transaction submissions, ensuring timely and cost-efficient interactions with the Celestium blockchain.

    Gas Price Check: The gas price must meet the minimum network requirement.

    Replacement: Pending transactions can be replaced or canceled.

  • Block Inclusion: Validators select transactions based on fees.

  • Finality: Transactions are finalized after block confirmation.

  • Method

    Description

    eth_sendRawTransaction

    Submit a signed transaction.

    eth_getTransactionByHash

    Retrieve transaction details.

    eth_getTransactionReceipt

    Get transaction outcome and logs.

    const tx = {
      nonce: 10, // Same as the pending transaction
      to: '0xRecipientAddress',
      value: web3.utils.toWei('0.1', 'ether'),
      gas: 21000,
      gasPrice: web3.utils.toWei('20', 'gwei'), // Higher than the pending tx
    };