Files
dchain/Makefile
vsecoder 7e7393e4f8 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
2026-04-17 14:16:44 +03:00

95 lines
4.7 KiB
Makefile
Raw Permalink 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.

.PHONY: build test up down reset deploy logs logs-node1 logs-node2 logs-node3 \
status peer-ids rebuild docker-clean test-local
# ── Сборка ───────────────────────────────────────────────────────────────────
build:
go build -o bin/node$(EXE) ./cmd/node
go build -o bin/client$(EXE) ./cmd/client
go build -o bin/wallet$(EXE) ./cmd/wallet
go build -o bin/peerid$(EXE) ./cmd/peerid
test:
go test ./...
# ── Docker: запуск / остановка ───────────────────────────────────────────────
## Собрать образ и запустить все три ноды
up:
docker compose up --build -d
@printf "\n Explorer → http://localhost:8081\n"
@printf " node2 → http://localhost:8082\n"
@printf " node3 → http://localhost:8083\n\n"
@printf " Задеплоить контракты: make deploy\n\n"
## Остановить ноды (данные сохраняются)
down:
docker compose down
## Полный сброс: остановить + удалить тома с данными
reset:
docker compose down -v
@printf "\n Данные удалены. Запустите 'make up' для чистого старта.\n\n"
## Задеплоить 4 production-контракта
deploy:
docker compose --profile deploy run --rm deploy
# ── Логи ─────────────────────────────────────────────────────────────────────
logs:
docker compose logs -f
logs-node1:
docker compose logs -f node1
logs-node2:
docker compose logs -f node2
logs-node3:
docker compose logs -f node3
# ── Статус ───────────────────────────────────────────────────────────────────
status:
@printf "\n── Контейнеры ──────────────────────────────────────────\n"
docker compose ps
@printf "\n── Сети ────────────────────────────────────────────────\n"
docker network ls | grep dchain || true
@printf "\n── Backbone IP-адреса ──────────────────────────────────\n"
@docker inspect -f '{{.Name}} {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
node1 node2 node3 2>/dev/null | grep 172.30 || true
@printf "\n"
# ── Peer IDs ─────────────────────────────────────────────────────────────────
## Показать peer ID и backbone multiaddr для всех нод
peer-ids: build
@printf "\n── node1 ────────────────────────────────────────────────\n"
bin/peerid$(EXE) --key testdata/node1.json --ip 172.30.0.11 --port 4001
@printf "\n── node2 ────────────────────────────────────────────────\n"
bin/peerid$(EXE) --key testdata/node2.json --ip 172.30.0.12 --port 4001
@printf "\n── node3 ────────────────────────────────────────────────\n"
bin/peerid$(EXE) --key testdata/node3.json --ip 172.30.0.13 --port 4001
@printf "\n"
# ── Docker: служебные ────────────────────────────────────────────────────────
rebuild:
docker compose build --no-cache
docker compose up -d
docker-clean:
docker compose down -v --rmi local
# ── Локальный тест (одна нода) ────────────────────────────────────────────────
test-local: build
@rm -rf /tmp/testchain
MSYS_NO_PATHCONV=1 bin/node$(EXE) \
--genesis --db /tmp/testchain --key testdata/node1.json \
--listen /ip4/0.0.0.0/tcp/4001 &
@sleep 8 && kill $$(pgrep -f "bin/node") 2>/dev/null || true
@echo "--- chain info ---"
bin/client$(EXE) info --db /tmp/testchain