A UTXO-based blockchain with Rapid Stake Consensus (RSC), hybrid post-quantum cryptography, and zero mandatory transaction fees. Written in C.
MXD is a layer-1 cryptocurrency designed for efficient, secure, and accessible digital transactions. The network runs Protocol v4, which embeds on-chain validator scoring directly into block headers for transparent, deterministic proposer selection.
Key design choices:
- UTXO transaction model with voluntary tips (no mandatory fees)
- Hybrid cryptography: Ed25519 (default) + Dilithium5 (post-quantum), selectable per node at runtime via
algo_id - Rapid Stake Consensus (RSC): round-robin block proposal with score-weighted fallback and validation chain signatures from 50%+ of the Rapid Table
- RocksDB storage for blocks, UTXOs, and address indexes
- Bridge support: native BNB-to-MXD bridge with v3 bridge mint transactions
The project builds into two artifacts: libmxd.so (shared library) and mxd_node (standalone node binary).
- Zero mandatory fees -- users may attach voluntary tips
- Hybrid Ed25519 / Dilithium5 signatures on the same network
- Protocol v4 on-chain validator scoring (stake 30%, proposals 25%, participation 25%, latency 20%)
- Deterministic total supply tracking per block
- WASM3-based smart contracts (basic support, disabled by default)
- HTTP JSON API for wallets, explorers, and bridge integrations
- P2P networking with DHT-based node discovery
- Cross-platform: Linux, macOS, Windows (MSYS2)
# Automated (recommended)
./install_dependencies.sh [--force_build]
# Manual -- Ubuntu/Debian
sudo apt-get install -y build-essential cmake libssl-dev libsodium-dev libgmp-devAdditional libraries built from source by the install script: wasm3, libuv, uvwasi, RocksDB.
git clone https://github.com/AlanRuno/mxdlib.git
cd mxdlib
mkdir build && cd build
cmake ..
cmake --build . --parallelThis produces lib/libmxd.so and lib/mxd_node.
# Start with defaults (loads default_config.json)
./mxd_node
# Custom config and algorithm override
./mxd_node --config testnet.json --algo dilithium5
# Override port / register as bootstrap
./mxd_node --port 9000 --bootstrapConfiguration is via a JSON file. Key fields: node_id, network_type, port, data_dir, initial_stake, preferred_sign_algo (1 = Ed25519, 2 = Dilithium5), bootstrap_nodes. See the default_config.json file for all options.
Currently deployed on 5 GCP nodes (mxd-test-node-testing-0 through 4) in us-central1-a. HTTP API listens on port 8080, P2P on port 8000.
| Method | Path | Description |
|---|---|---|
| GET | /status |
Node status and chain height |
| GET | /block/{height} |
Block by height |
| GET | /tx/{hash} |
Transaction by hash |
| GET | /balance/{address} |
Address balance (UTXO sum) |
| POST | /tx/submit |
Submit a signed transaction |
| POST | /bridge/submit |
Submit a bridge mint transaction |
| GET | /validators |
Current validator set and scores |
| GET | /mempool |
Pending transactions |
See source (mxd_http_api.c) for the full endpoint list and request/response formats.
MXD includes a native bridge endpoint (/bridge/submit) for cross-chain transfers between BNB and MXD. Bridge mint transactions use the v3 transaction format and are validated against the bridge oracle before inclusion in a block.
Detailed documentation:
The docs/ directory contains detailed guides:
- Build Instructions
- Hybrid Cryptography Guide
- Module Documentation
- Integration Guide
- Serialization Spec v4
- Smart Contracts Roadmap
- Security Guidelines
- Platform Quirks
- Determinism
- MXD Whitepaper (English)
This project is licensed under the MIT License. See LICENSE for details.