DChain single-node blockchain + React Native messenger client. Core: - PBFT consensus with multi-sig validator admission + equivocation slashing - BadgerDB + schema migration scaffold (CurrentSchemaVersion=0) - libp2p gossipsub (tx/v1, blocks/v1, relay/v1, version/v1) - Native Go contracts (username_registry) alongside WASM (wazero) - WebSocket gateway with topic-based fanout + Ed25519-nonce auth - Relay mailbox with NaCl envelope encryption (X25519 + Ed25519) - Prometheus /metrics, per-IP rate limit, body-size cap Deployment: - Single-node compose (deploy/single/) with Caddy TLS + optional Prometheus - 3-node dev compose (docker-compose.yml) with mocked internet topology - 3-validator prod compose (deploy/prod/) for federation - Auto-update from Gitea via /api/update-check + systemd timer - Build-time version injection (ldflags → node --version) - UI / Swagger toggle flags (DCHAIN_DISABLE_UI, DCHAIN_DISABLE_SWAGGER) Client (client-app/): - Expo / React Native / NativeWind - E2E NaCl encryption, typing indicator, contact requests - Auto-discovery of canonical contracts, chain_id aware, WS reconnect on node switch Documentation: - README.md, CHANGELOG.md, CONTEXT.md - deploy/single/README.md with 6 operator scenarios - deploy/UPDATE_STRATEGY.md with 4-layer forward-compat design - docs/contracts/*.md per contract
1.7 KiB
1.7 KiB
testdata — dev-cluster identities
These three JSON files are hard-coded test keys used by the 3-node dev
cluster in the repository-root docker-compose.yml. They exist ONLY so that
running docker compose up --build -d gives every developer the same
deterministic network (same pubkeys, same peer IDs, same genesis validator
set) — making screenshots, tutorials, and loadtest fixtures reproducible.
Do NOT use these keys for anything that holds real value. The private keys are in the repository history, visible to everyone who can clone.
When you need real keys
- Single-node prod deploy: see
deploy/single/README.md— generate a fresh key withdocker run --entrypoint /usr/local/bin/client dchain-node-slim keygen --out node.jsonand store it outside the repo. - Multi-node prod cluster:
deploy/prod/README.md.
Files
| File | pub_key | peer ID |
|---|---|---|
node1.json |
26018d40e40514f38f799eee403f62da98cb5ac936e29049629f1873cbcb4070 |
12D3KooWCNj2ugnjqoJFPdRuhGZHvGTbEiTMmHDimfsxmGYcjGo9 |
node2.json |
bf3628d1a10fcf5a90d2cb31f387c8d1f2dac6a2c54c736c27d5ea04af9696a2 |
12D3KooWNgmwMbaw5K7vDbGxb9zvcF8gur5GWXGoFEVfKzSNc9bf |
node3.json |
6316e7427654cd2e300033c5e13b6182d595ec2c63bc8396b74183296112510c |
12D3KooWGVAnaq1EgH1dN49fQWvw1z71R5bZj7UmPkUeQkW4783V |
The baked-in WASM contracts under ../contracts/* are also copied into the
dev Docker image at build time — they don't need per-node identities.