https://github.com/chronocoders/ferrous
A Rust-built Layer 1 blockchain — RandomX PoW, BIP39 wallets, Shamir recovery, post-quantum roadmap
https://github.com/chronocoders/ferrous
blockchain cryptocurrency layer1 proof-of-work rust
Last synced: 12 days ago
JSON representation
A Rust-built Layer 1 blockchain — RandomX PoW, BIP39 wallets, Shamir recovery, post-quantum roadmap
- Host: GitHub
- URL: https://github.com/chronocoders/ferrous
- Owner: ChronoCoders
- Created: 2026-04-13T02:26:48.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-28T21:57:53.000Z (15 days ago)
- Last Synced: 2026-05-28T23:20:41.998Z (15 days ago)
- Topics: blockchain, cryptocurrency, layer1, proof-of-work, rust
- Language: Rust
- Homepage: https://ferrous.network
- Size: 558 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Roadmap: docs/ROADMAP.md
Awesome Lists containing this project
README
# Ferrous Network
A Rust-built Layer 1 blockchain inspired by Bitcoin's UTXO model written from scratch with a focus on memory safety, ASIC-resistant PoW, and long-term cryptographic security.
Featuring a custom-built P2P networking stack with automatic partition recovery, persistent RocksDB storage, RandomX proof-of-work, and a post-quantum cryptography roadmap (CRYSTALS-Dilithium, RingCT), Ferrous is an independent chain engineered for high performance and extensibility.
## Features
- **Consensus**: RandomX Proof-of-Work with per-block difficulty adjustment (150s target).
- **Networking**: Full P2P stack with headers-first sync, block relay, and inventory protocol.
- **Storage**: Persistent blockchain state using RocksDB.
- **Architecture**: Modular design separating consensus, networking, and storage logic.
- **Interface**: JSON-RPC API and TUI Dashboard for node monitoring.
- **Safety**: 100% safe Rust code with strict linting (`deny(warnings)`).
## Quick Start
### Prerequisites
- Rust 1.70+ (stable)
- Clang (for RocksDB bindings)
- CMake
### Build & Run
```bash
# Clone repository
git clone https://github.com/ChronoCoders/ferrous
cd ferrous
# Run the full node with TUI dashboard (Regtest mode)
cargo run --example node -- --dashboard --network regtest
# Run on Mainnet
cargo run --example node -- --network mainnet
```
### Monitor TUI (Seed Nodes)
Ferrous includes a standalone monitoring TUI that polls multiple remote nodes over JSON-RPC via SSH tunnels.
1) Open SSH tunnels (these commands will appear to “do nothing” and should be left running):
```bash
ssh -N -L 18331:127.0.0.1:8332 root@45.77.153.141
ssh -N -L 18332:127.0.0.1:8332 root@45.77.64.221
```
2) Verify tunnels (PowerShell):
```powershell
curl.exe -s -X POST http://127.0.0.1:18331 -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"getblockchaininfo","params":[],"id":1}'
curl.exe -s -X POST http://127.0.0.1:18332 -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"getblockchaininfo","params":[],"id":1}'
```
3) Run the monitor:
```bash
cargo run --release --example monitor
```
### Mining (Regtest)
To mine blocks instantly in `regtest` mode, open a second terminal and use the RPC interface:
```powershell
# PowerShell
Invoke-RestMethod -Uri http://127.0.0.1:8332 -Method Post -Body '{"jsonrpc": "2.0", "method": "mineblocks", "params": [10], "id": 1}' -ContentType "application/json"
```
```bash
# Bash
curl -X POST http://127.0.0.1:8332 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"mineblocks","params":[10],"id":1}'
```
## Project Status
**Version**: 0.4.0 (Alpha)
**Phase**: Phase 4 — Post-Quantum Cryptography (complete). Phase 5 (Ring CT) is next.
### Implemented
- **Consensus**: RandomX proof-of-work (CPU-friendly, ASIC-resistant), per-block ±1% difficulty adjustment, 150s target.
- **Cryptography**: CRYSTALS-Dilithium (ML-DSA-65, NIST FIPS 204) signatures; bech32m P2DL addresses with BLAKE3 pubkey hashing. ECDSA/P2PKH fully removed.
- **Core**: Block/Tx validation, Merkle roots, UTXO set management.
- **Networking**:
- Handshake (Version/Verack)
- Headers-first synchronization
- Block propagation (Inv/GetData/Block)
- Transaction relay & Mempool
- Peer discovery (Addr/GetAddr)
- **Network Recovery**:
- Automatic partition detection and reconnection.
- Health monitoring and stale block detection.
- RPC commands: `getrecoverystatus`, `forcereconnect`, `resetnetwork`.
- **Storage**: RocksDB integration for chain state and block index.
- **RPC**: JSON-RPC API with the following methods:
- `getblockchaininfo`
- `getblockhash`
- `getblock`
- `getbestblockhash`
- `getmininginfo`
- `mineblocks`
- `generatetoaddress`
- `getnewaddress`
- `getbalance`
- `listunspent`
- `listaddresses`
- `sendtoaddress`
- `sendrawtransaction`
- `getrawmempool`
- `getwalletinfo`
- `encryptwallet`
- `importseed`
- `getshamirshares`
- `getnetworkinfo`
- `getpeerinfo`
- `getconnectioncount`
- `getnetworkhealth`
- `getrecoverystatus`
- `forcereconnect`
- `resetnetwork`
- `stop`
- **UI**: Terminal User Interface (TUI) for real-time statistics.
### Infrastructure (Live Testnet)
- `seed1.ferrous.network` — `45.77.153.141` — Vultr New York — mining
- `seed4.ferrous.network` — `45.77.64.221` — Vultr Frankfurt — mining
### Roadmap
- **Phase 1 ✓**: Core foundation — RandomX PoW, UTXO, P2P, headers-first IBD.
- **Phase 2 ✓**: Parallel IBD — multi-peer BlockDownloadQueue + apply-buffer backpressure.
- **Phase 3 ✓**: Wallet integration — BIP39 seed phrase + Shamir's Secret Sharing recovery, ChaCha20-Poly1305 encryption.
- **Phase 4 ✓**: Post-Quantum Cryptography — CRYSTALS-Dilithium (ML-DSA-65), bech32m P2DL addresses. Live on testnet since 2026-05-31.
- **Phase 5 (Current)**: Privacy Features — Ring Confidential Transactions + CLSAG.
- **Phase 6**: Security audit + Mainnet launch.
## Documentation
- [Architecture Overview](docs/ARCHITECTURE.md)
- [Consensus Specification](docs/CONSENSUS.md)
- [API Reference](docs/API.md)
- [Development Guide](docs/DEVELOPMENT.md)
## Testing
The project maintains a strict "zero warnings" policy.
```bash
# Run tests
cargo test
# Run strict linting checks
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
```
## License
MIT License. See [LICENSE](LICENSE) for details.
## Contact
Maintained by **ChronoCoders**.