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

3.2 KiB
Raw Blame History

Quickstart

Три пути в зависимости от того, что вам нужно.

Путь 1: локальная single-node за 5 минут

Самый быстрый способ потрогать блокчейн — одна нода в Docker, без TLS, без федерации, с HTTP-API на localhost:8080.

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 секунд. Что дальше:

Путь 2: single-node с TLS и доменом

Полный operator runbook — 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.

Требования

  • Docker Desktop / Docker Engine + Compose v2
  • 2 GB RAM (одна нода), 4 GB (3-node dev cluster)
  • 1 CPU

Для разработки из исходников:

  • Go 1.24+ (модуль использует новые фичи)
  • TinyGo 0.30+ — только если собираете WASM-контракты вручную

Проверка жизни

# высота тип
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 сек — всё ОК.