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:
94
Makefile
Normal file
94
Makefile
Normal file
@@ -0,0 +1,94 @@
|
||||
.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
|
||||
Reference in New Issue
Block a user