Excluded from release bundle:
- CONTEXT.md, CHANGELOG.md (agent/project working notes)
- client-app/ (React Native messenger — tracked separately)
- contracts/hello_go/ (unused standalone example)
Kept contracts/counter/ and contracts/name_registry/ as vm-test fixtures
(referenced by vm/vm_test.go; NOT production contracts).
Docs refactor:
- docs/README.md — new top-level index with cross-references
- docs/quickstart.md — rewrite around single-node as primary path
- docs/node/README.md — full rewrite, all CLI flags, schema table
- docs/api/README.md — add /api/well-known-version, /api/update-check
- docs/contracts/README.md — split native (Go) vs WASM (user-deployable)
- docs/update-system.md — new, full 5-layer update system design
- README.md — link into docs/, drop CHANGELOG/client-app references
Build-time version system (inherited from earlier commits this branch):
- node --version / client --version with ldflags-injected metadata
- /api/well-known-version with {build, protocol_version, features[]}
- Peer-version gossip on dchain/version/v1
- /api/update-check against Gitea release API
- deploy/single/update.sh with semver guard + 15-min systemd jitter
86 lines
3.2 KiB
Markdown
86 lines
3.2 KiB
Markdown
# Quickstart
|
||
|
||
Три пути в зависимости от того, что вам нужно.
|
||
|
||
## Путь 1: локальная single-node за 5 минут
|
||
|
||
Самый быстрый способ потрогать блокчейн — одна нода в Docker, без TLS, без
|
||
федерации, с HTTP-API на `localhost:8080`.
|
||
|
||
```bash
|
||
git clone https://git.vsecoder.vodka/vsecoder/dchain.git
|
||
cd dchain
|
||
|
||
# 1. Собираем образ
|
||
docker build -t dchain-node-slim -f deploy/prod/Dockerfile.slim .
|
||
|
||
# 2. Генерим ключ ноды (один раз)
|
||
mkdir -p keys
|
||
docker run --rm --entrypoint /usr/local/bin/client \
|
||
-v "$PWD/keys:/out" dchain-node-slim \
|
||
keygen --out /out/node.json
|
||
|
||
# 3. Запускаем как genesis (блок 0 = эта нода — единственный валидатор)
|
||
docker run -d --name dchain --restart unless-stopped \
|
||
-p 4001:4001 -p 8080:8080 \
|
||
-v dchain_data:/data \
|
||
-v "$PWD/keys:/keys:ro" \
|
||
-e DCHAIN_GENESIS=true \
|
||
-e DCHAIN_ANNOUNCE=/ip4/127.0.0.1/tcp/4001 \
|
||
dchain-node-slim \
|
||
--db=/data/chain --mailbox-db=/data/mailbox --key=/keys/node.json \
|
||
--relay-key=/data/relay.json --listen=/ip4/0.0.0.0/tcp/4001 --stats-addr=:8080
|
||
|
||
# 4. Проверяем
|
||
curl -s http://localhost:8080/api/netstats
|
||
curl -s http://localhost:8080/api/well-known-version
|
||
open http://localhost:8080/ # Explorer UI
|
||
open http://localhost:8080/swagger # Swagger UI
|
||
```
|
||
|
||
Блоки коммитятся каждые ~5 секунд. Что дальше:
|
||
|
||
- Первая отправка tx — [cli/README.md](cli/README.md)
|
||
- API endpoint reference — [api/README.md](api/README.md)
|
||
- Выключить UI / Swagger — см. `DCHAIN_DISABLE_UI` / `DCHAIN_DISABLE_SWAGGER` в [deploy/single/README.md](../deploy/single/README.md)
|
||
|
||
## Путь 2: single-node с TLS и доменом
|
||
|
||
Полный operator runbook — [deploy/single/README.md](../deploy/single/README.md).
|
||
Там 6 готовых сценариев: публичная с UI, headless API, полностью приватная,
|
||
genesis, joiner, auto-update от Gitea.
|
||
|
||
## Путь 3: multi-validator federation
|
||
|
||
3 ноды в PBFT quorum, Caddy LB с ip_hash для WS — [deploy/prod/README.md](../deploy/prod/README.md).
|
||
|
||
## Требования
|
||
|
||
- Docker Desktop / Docker Engine + Compose v2
|
||
- 2 GB RAM (одна нода), 4 GB (3-node dev cluster)
|
||
- 1 CPU
|
||
|
||
Для разработки из исходников:
|
||
|
||
- Go 1.24+ (модуль использует новые фичи)
|
||
- TinyGo 0.30+ — только если собираете WASM-контракты вручную
|
||
|
||
## Проверка жизни
|
||
|
||
```bash
|
||
# высота тип
|
||
curl -s http://localhost:8080/api/netstats | jq '.total_blocks'
|
||
|
||
# версия бинаря
|
||
docker exec dchain /usr/local/bin/node --version
|
||
# → dchain-node v0.5.0-dev (commit=abc1234 date=… dirty=false)
|
||
|
||
# /api/well-known-version — те же данные + features[]
|
||
curl -s http://localhost:8080/api/well-known-version | jq .
|
||
|
||
# лист возможностей
|
||
curl -s http://localhost:8080/api/well-known-version | jq '.features'
|
||
```
|
||
|
||
Если `total_blocks` растёт каждые ~5 сек — всё ОК.
|