chore: initial commit for v0.0.1

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
This commit is contained in:
vsecoder
2026-04-17 14:16:44 +03:00
commit 7e7393e4f8
196 changed files with 55947 additions and 0 deletions

28
testdata/README.md vendored Normal file
View File

@@ -0,0 +1,28 @@
# 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 with `docker run --entrypoint /usr/local/bin/client dchain-node-slim
keygen --out node.json` and 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.

6
testdata/node1.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"pub_key": "26018d40e40514f38f799eee403f62da98cb5ac936e29049629f1873cbcb4070",
"priv_key": "16aba1d2ffe7b1d0603ec5fbc2a48a9894fe61019af91b39217a88fc1bbfa5ae26018d40e40514f38f799eee403f62da98cb5ac936e29049629f1873cbcb4070",
"x25519_pub": "baada10a9c49ea7395cc8b39393cf9b292d255626eff708f0ba2c25d1aa8177d",
"x25519_priv": "a814c191256c362fd0874cd00fae00e3846a3451cc7093b0e080acc9bf50da56"
}

6
testdata/node2.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"pub_key": "bf3628d1a10fcf5a90d2cb31f387c8d1f2dac6a2c54c736c27d5ea04af9696a2",
"priv_key": "8289b3e36db67fe78bc7bb359590536188b084c4b302f6021bd59e7db21e543abf3628d1a10fcf5a90d2cb31f387c8d1f2dac6a2c54c736c27d5ea04af9696a2",
"x25519_pub": "9b7c5f43c79217dff8413ab2116b84b19b1e05606c143a82885609e08ac28579",
"x25519_priv": "b04fd2c99dda64e70601de5c92d05afe560733665867f911dd725ec674137a7a"
}

6
testdata/node3.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"pub_key": "6316e7427654cd2e300033c5e13b6182d595ec2c63bc8396b74183296112510c",
"priv_key": "49b357907960d5c11ddcf3d17c2e1a73971134974a759a8c5fb592a704b3e3f46316e7427654cd2e300033c5e13b6182d595ec2c63bc8396b74183296112510c",
"x25519_pub": "4a01c8ed427adbbb9aa799c3916921c8642086c6f3831d442123dc285bc9c04c",
"x25519_priv": "9073c8946ef5d520376a4c23bdd89f7bed4fa5ef7d69cbdc593e020a3a59ad78"
}