GRND · v0.1.0 · experimental

Ground
State

BlockDAG Layer 1 built in Rust. SHA-256d proof of work. ML-DSA-65 signatures. GhostDAG consensus. Early stage — not audited, not suitable for value storage.

21,000,000
Max supply GRND
5 GRND
Block reward
10s
Block time
ML-DSA-65
Signatures (FIPS 204)

Components

Technology implemented in v0.1.0.

01 — Signatures
ML-DSA-65

NIST FIPS 204 lattice-based digital signatures. All transactions are signed with ML-DSA-65. Key sizes: 1,952 byte public key, 3,309 byte signature.

NIST FIPS 204
02 — Consensus
GhostDAG

PHANTOM protocol with parameter k=10. Blocks form a directed acyclic graph. Parallel blocks are classified as blue (honest) or red (conflicting).

PHANTOM / k=10
03 — Key exchange
Kyber768

NIST FIPS 203 lattice-based key encapsulation. Used for session key derivation in P2P transport. AES-256-GCM encrypted channels.

NIST FIPS 203
04 — Mining
SHA-256d PoW

Double SHA-256 proof of work. Difficulty retargets every 2,016 blocks (~5.6 hours). 4x maximum adjustment factor per window.

SHA-256d
05 — Storage
RocksDB + UTXO

Persistent block storage, UTXO set, DAG state, and address index. Column families: blocks, utxo, dag, addr_utxo, coinbase, meta.

RocksDB 0.22
06 — Network
libp2p gossipsub

Block and transaction propagation via gossipsub. IBD (Initial Block Download) with header-first sync. Persistent peer identity and peer memory.

libp2p 0.56

Stack

Written in Rust. Single binary, no runtime dependencies beyond RocksDB.

LayerTechnologyStandard / Version
PoWSHA-256dDouble SHA-256
SignaturesML-DSA-65NIST FIPS 204
Key exchangeKyber768NIST FIPS 203
ConsensusGhostDAG (k=10)PHANTOM 2018
KeystoreAES-256-GCM + Argon2id256 MB / 4 iter
StorageRocksDB + UTXO + address indexrocksdb 0.22
Networklibp2p gossipsublibp2p 0.56
RPCJSON-RPC over HTTPaxum 0.8

Emission schedule

21,000,000 GRND maximum supply. Distributed through SHA-256d proof of work.

Max supply21,000,000 GRND
Block reward5 GRND (initial)
Halving interval2,100,000 blocks (~243 days)
Block time10 seconds
Miners98% of block reward
PoI Treasury2% of block reward (continuous)
Founder5% (1,050,000 GRND at genesis)
Coinbase maturity100 blocks
Dust threshold546 satoshis
Miners — 95%
Founder — 5%

The founder allocation (1,050,000 GRND) was issued in the genesis coinbase. Remaining supply is distributed through mining. Emission curve: ~90% mined in ~2 years, ~99% in ~4 years.

Proof-of-Improvement

Security and code quality funded by the protocol. No foundation. No council. Holders decide.

How it works

1. Submit. A developer opens a Pull Request on GitHub with a bug fix, security improvement, or new feature.

2. Automated gate. CI/CD runs cargo test, security audit, static analysis, and fuzzing. If any check fails, the submission is rejected automatically. No exceptions.

3. On-chain vote. If CI passes, an on-chain vote opens. Every GRND holder can vote YES, NO, or ABSTAIN. 1 GRND = 1 vote. Max 1% of supply per wallet (anti-whale).

4. Auto-release. After 14 days, if quorum (10% of circulating supply) is met and majority votes YES, the treasury releases the reward automatically. No human gatekeepers.

Reward tiers
Critical10,000 GRND
High2,000 GRND
Medium500 GRND
Low100 GRND
Vote parameters
Quorum10% of circulating supply
Majority>50% of votes cast
Voting period14 days
Anti-whale cap1% of supply per wallet
Anti-spam deposit10 GRND (returned if approved)
Treasury
2% block tax

Every block allocates 2% of the coinbase reward to the PoI treasury. ~315,000 GRND per year at initial emission. Self-sustaining, no pre-mine required.

Quality gate
Automated CI/CD

Compilation, unit tests, security audit, static analysis, fuzzing. Only code that passes every check reaches a vote. Prevents low-quality submissions.

Decision
Holder vote

GRND holders vote on-chain. Balance snapshot at claim time prevents vote manipulation. No council, no foundation, no centralized authority.

Execution
Auto-release

When quorum + majority is reached, the protocol releases GRND from the treasury automatically. No manual disbursement. Trustless from end to end.

Block acceptance

Checks enforced before a block is added to the DAG.

PoW validation — hash must meet difficulty target from consensus state
Difficulty check — block bits must match expected bits, not self-declared
Height validation — must equal selected parent height + 1
Timestamp bounds — not before parent, not >2 hours in the future
Merkle root — recomputed from transactions and compared
Coinbase value — must not exceed block reward + transaction fees
Signature verification — ML-DSA-65 on every non-coinbase input
UTXO validation — inputs must reference unspent outputs
Double-spend — tracked per-block with spent-set
Coinbase maturity — 100 confirmations before spendable
Dust rejection — outputs below 546 satoshis rejected
Finality checkpoint — reorgs deeper than 1,000 blocks rejected

Block 0

The chain starts here.

Block #0 — mainnet
height0
reward1,050,000 GRND (founder)
coinbaseGroundState genesis: 21000000 GRND.
minimum energy, maximum stability. 2026.
timestamp1,750,000,000 (Unix)
bits0x1d00ffff
hash000000003678864d91deae9e32c216f688b32d467302af43d7d3b696c5465bdc
nonce4,611,686,021,245,511,439
foundergrnd1q4fbcd3b3fae5de3e2b4015ca132c8744b8af170a79e4eb45

The genesis block contains the founder allocation (5% of max supply). All subsequent blocks distribute rewards through SHA-256d proof of work. Given identical parameters, every node computes the same genesis hash.

Notice: GroundState is experimental software in active development. No independent security audit has been performed. Do not use GRND to store value.

Build from source

Requires Rust 1.94+. Tested on macOS and Linux.

01 — Build
Compile
# clone
git clone https://github.com/groundstate888/groundstate
cd groundstate

# build (~5 min first time)
cargo build --release
02 — Run
Start node
# start node (mines genesis on first run)
./target/release/groundstate \
  --rpc-bind 127.0.0.1 \
  --rpc-port 16210 \
  --data-dir ./grnd-data
03 — Mine
Start mining
# mine to your address
./target/release/groundstate \
  --mine \
  --miner-address grnd1q...
04 — Query
RPC interface
# network info
curl -X POST http://127.0.0.1:16210 \
  -H "Content-Type: application/json" \
  -d '{"method":"getnetworkinfo","id":1}'