Files
dchain/docs/quickstart.md
vsecoder 546d2c503f chore(release): clean up repo for v0.0.1 release
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
2026-04-17 14:37:00 +03:00

86 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 сек — всё ОК.