A real custom blockchain testnet built from scratch in Node.js — with PoW mining, signed transactions, P2P sync, mempool, state layer, and a full CLI toolkit. Not an Ethereum fork. Not a toy demo.
Duglas Testnet is a custom blockchain runtime built from scratch — not a fork, not a wrapper, not a fake demo with hardcoded balances. Every block is really mined, every transaction is really signed, every balance really comes from chain history.
The core goal: custom blockchain first, execution platform later. Build the chain correctly, then build on top of it.
Duglas is built as a clean layered system. Each layer has a clear responsibility. Together they form a complete, real blockchain runtime.
Block structure, previous-hash linking, Proof-of-Work validity, cumulative chain work, and chain replacement rules. The base ledger — every block is real, every hash is computed.
Sender identity via signatures, nonces for ordering, fees, typed transactions, mempool admission policy, and double-spend prevention through nonce and balance validation.
Deterministic key-value state derived from confirmed data transactions. Pending-state preview from mempool contents. Full state history traceable to specific transactions.
Counter, registry, profile, todo, and notes modules. Structured payloads mapped into deterministic state changes. The bridge toward future execution or contract-like features.
Miners search for a nonce producing a valid SHA-256 block hash. Nodes replace their chain with a heavier valid chain. Competing histories, block validity, halving rewards — all the right core ideas, running locally.
Generate private-key or mnemonic-backed wallets. Derive checksum 0x... addresses. Import/export private keys. Save named wallets. Switch active wallet identity per node. All using secp256k1 — the same curve Ethereum uses.
The mempool is one of the most important teaching surfaces in the project. Transaction validation before admission. Nonce-aware sender ordering. Balance-aware checks. Fee-aware replacement. Anti-spam limits for data transactions. Payload-size-based fee rules.
Without mempool policy, a blockchain demo easily becomes unrealistic. Duglas treats it as a real subsystem.
Duglas introduces typed transactions and structured payloads instead of a VM. The chain stores signed transactions. Confirmed state is recomputed from accepted confirmed actions. Pending state is simulated from mempool contents.
{"app":"kv","action":"set","params":{"key":"greeting","value":"hello"}}
WebSocket-based P2P layer handles block and transaction propagation, chain synchronization, and peer discovery. Run a 3-node Docker testnet locally to see real peer sync in action.
localhost:3001 (HTTP) / :6001 (P2P)
localhost:3002 (HTTP) / :6002 (P2P)
localhost:3003 (HTTP) / :6003 (P2P)
Not the final product — architectural proof. These modules show that the chain can carry typed application intents, state can be deterministic and namespaced, and the project can evolve beyond pure value transfers.
Numeric state per address. create / add / sub / delete.
Global key-to-record mapping. set / delete / query.
One profile per address. displayName + bio.
Boolean task state namespaced by owner address.
Namespaced text storage per owner address.
The full phased timeline, current delivery status, and out-of-scope items now live on a separate page so the main landing stays focused on the product overview.
The full reward details, bug categories, report process, and submission form now live on a separate page so the main landing stays focused on the product itself.
Donations, docs, practical ways to help the project, and quick support paths now live on a separate page so the landing stays focused and shorter.
Three installation modes depending on what you need.
npm run start:node1 → duglas overviewduglas faucet → duglas wallet-save-name aliceduglas wallet-seed-new bobduglas send 0xBOB 10 1duglas mine → duglas receipt TX_ID