One workspace
A hardened node, a thin HTTP bridge, a deterministic simulator, a CLI, and replay/repair utilities — all in a single Cargo workspace that builds in under a minute.
Devnet · v0.44.x · Proof of Bloom
Crocus is a minimal, seasonal Nakamoto-style chain. Long dormancy, short vivid blooms,
deterministic issuance, and a ledger so plain you can read it with cat.
Built to make every design decision legible, testable, and easy to poke holes in.
About
Most blockchains halve their block reward on a fixed schedule until it asymptotes to zero. Crocus halves too — but only during Blooms, finite windows of intense issuance that punctuate long stretches of dormancy. Between Blooms, new supply trickles. During a Bloom, it rains.
The result is a monetary cadence that mirrors a crocus flower: long sleep, short vivid bloom. It's a small, legible research vehicle for what happens to incentive design when issuance gains a temporal shape.
A hardened node, a thin HTTP bridge, a deterministic simulator, a CLI, and replay/repair utilities — all in a single Cargo workspace that builds in under a minute.
blocks.jsonl, utxo.jsonl, mempool.jsonl are the source of truth. Every consensus event is one JSON line. Rebuild indices from them any time.
Every validity, difficulty, issuance, and mempool rule lives in docs/consensus-spec.md with src/path:line citations — and every gap is catalogued, not glossed.
Three denominations — FLWR, gSAF (× 165), pSAF (× 75 000) — for a policy layer that treats minting and crafting as first-class operations.
Architecture
What's in the box
Proof-of-Bloom PoW, integer-stepped difficulty, cumulative-work fork choice, JSON routes on axum, optional metrics/events.
Canonical JSON policy, fee floor, RBF, per-IP rate limits, mempool GC by byte/entry/age. Optional header-first gossip.
Deterministic block generator driven by --blocks N and --root <dir>. Ideal for testing seasonal issuance end-to-end.
HD key derivation, deterministic tx-id derivation via canonical JSON, address helpers, optional HTTP POST through mempoold.
Rebuild utxo.jsonl or the chain index from blocks/<hash>.json envelopes. --verify-only accepts operator checkpoints as assertions.
Regenerate the redb index (tip · tx · addr tables) from blocks.jsonl in one shot. Useful after adversarial testing.
Capture a point-in-time view of the ledger root directory, with cross-store tip consistency checks.
Walk the ledger and summarize issuance, fees, total supply, and policy state at any height.
Issuance model
Block → Bloom → Cycle → Era. Every number comes straight from src/consensus/constants.rs.
| Unit | Duration | Behaviour |
|---|---|---|
| Block | ~10 min target | Deterministic per-height subsidy inside a Bloom; zero outside. |
| Bloom | 2 016 blocks · ~14 days | Reward window inside each Cycle. Three Blooms per Cycle. |
| Cycle | 26 weeks · ~half year | One Bloom plus ~24 weeks of dormancy. |
| Era | 8 Blooms | Halves the per-Bloom pool: ERA0_BLOOM_POOL / 2^era. |
Per-Bloom pool starts at 56 250 000 FLWR. Asymptotic cap:
900 000 000 FLWR. Full derivation and edge cases:
consensus-spec §3 ↗.
Quickstart
git clone https://github.com/SativusCrocus/crocus
cd crocus
cargo build --release --workspace
target/release/node --http 127.0.0.1:18080 --root devnet
target/release/devnet --blocks 20 --root devnet
curl -s http://127.0.0.1:18080/chain/tip | jq .
export CROCUS_API_TOKEN='use-a-real-value'
# /tx and /mine/once now require Authorization: Bearer <token>
Explorer
Paste your node's HTTP base below. The page persists it locally and rewires any downstream helpers.
Tip: start a local node, paste http://127.0.0.1:18080.
Sister protocols
Crocus is one of several research vehicles under @SativusCrocus — each exploring a different thin layer between cryptographic assurance and real economic flow.
Permissionless validity ledger for scientific claims. ForgeGuard ZK-proven exploit challenges, mirage sandboxes, attestation minting.
Bitcoin-native identity + settlement for autonomous AI agents. Schnorr signatures, inscriptions, Lightning rails.
Purchasing-power flatcoin pegged to real CPI via Pyth — not a fake $1 nominal peg. Permissionless, over-collateralized.
Zero-knowledge skill proofs. 24 h fraud-proof window, bonded challengers, decayed on-chain scores.
Thermodynamic money primitive. Fair-launched, browser-mineable PoW. No premine, Bitcoin-style halving.
Four-layer autonomous economic stack: GraphRAG agent swarm → MCP tool exec → multi-sig bridge → Docker/Akash deploy.
Roadmap
Four stacked PRs — scaffold, writers, migrator, drop — move the light DB from sled trees to a single redb file with crash-safe atomic writes.
A 766-line consensus-spec.md with src/path:line citations on every rule and a 20-row catalogued gap table flowing into Phase 5/6.
SECURITY.md cleanup, threat model extended to consensus (selfish mining, eclipse, long-range, mempool exhaustion), and CROCUS_API_TOKEN Bearer auth on write endpoints.
Close consensus-spec gap #1 and #13: verify PoW and recompute cumulative work on every received block. Eliminates the $0 long-range-rewrite cost.
Persistent node identity at <root>/.crocus/node_key; signed handshake in Version/VersionAck; optional peer pinning.
Fuzz expansion (chain index, SSE parser), property tests for consensus-critical code, end-to-end integration tests for HTTP + P2P.