Closes the v2.2.0 roadmap. Desktop client is feature-complete and
ready for first installer builds.
Contact request flow (fills a real gap flagged by the user):
* lib/tx.ts grows buildContactRequestTx / buildAcceptContactTx /
buildBlockContactTx with canonical bytes matching mobile.
* lib/api.ts: fetchContactRequests + ContactRequestRaw.
* New contact modal — sections/contacts/NewContactModal.tsx — resolves
@username / DC-address / hex pub via resolveAccount, shows identity
preview (incl. "has encryption key / key not published" hint),
fee tier picker (5k / 10k / 50k µT), optional 280-char intro,
balance guard.
* Requests inbox — sections/contacts/RequestsList.tsx — polled every
15 s via /relay/contacts, filters pending, Accept submits
ACCEPT_CONTACT + adds the peer to local contacts with their
identity.x25519_pub pre-cached, Block submits BLOCK_CONTACT.
* ContactsList grows a two-tab header (Contacts / Requests with a
pending-count badge) + "+ New" button next to the filter input.
Auto-update:
* hooks/useUpdateCheck.ts — polls /api/update-check on mount and
every 6 hours; loose semver compares the Gitea release tag
against this build's app.version (from Electron IPC), ignores
the node's own update_available flag (it compares vs. the node,
not the desktop).
* shell/UpdateBanner.tsx — thin strip above the status bar with
the new tag, Download button (opens the release URL in the
default browser), and a dismiss-for-this-tag × so once-seen
updates don't nag.
Packaging — electron-builder config tightened:
* artifactName pattern includes version + os + arch.
* Mac: hardenedRuntime on, dmg + zip outputs, social-networking
category.
* Windows: NSIS (full installer, per-user or per-machine) +
portable exe.
* Linux: AppImage + deb.
* Strip source maps and test folders from the asar.
* publish: null — no auto-publisher yet; Gitea releases are
uploaded manually for now.
* directories.output = release/, directories.buildResources =
resources/ so icons land in a predictable place once we add them.
Version bumped to 2.2.0 in package.json. docs/ROADMAP.md marks
v2.2.0 row complete; remaining work (attachments, code signing,
group chats) moved to a post-v2.2.0 bucket.
DChain documentation
Справочник по блокчейн-ноде DChain. Читается в любом порядке, но если в первый раз — идите по разделам сверху вниз.
Оглавление
| Документ | О чём |
|---|---|
| quickstart.md | Поднять ноду локально за 5 минут |
| architecture.md | 4 слоя стека: network / chain / transport / app |
| node/README.md | Запуск ноды (docker, native, deployment) |
| update-system.md | Версионирование, /api/update-check, auto-update от Gitea |
| api/README.md | REST + WebSocket API endpoints |
| cli/README.md | CLI client — команды, флаги, примеры |
| contracts/README.md | Системные контракты (native + WASM) |
| development/README.md | SDK для написания своих контрактов (TinyGo) |
| node/governance.md | On-chain governance, голосование параметров |
| node/multi-server.md | Multi-validator federation deploy |
Внешние ссылки из репо
- README.md — обзор проекта
- deploy/single/README.md — operator runbook для single-node
- deploy/prod/README.md — operator runbook для multi-validator
- deploy/UPDATE_STRATEGY.md — дизайн forward-compat обновлений (4 слоя)
Соглашения
- Единицы: микро-токены (
µT). 1 T = 1,000,000 µT. MinFee = 1000 µT = 0.001 T. - Pubkey: 32-байтный Ed25519 (hex, 64 символа).
- Address:
DC+ первые 24 hex-символа SHA-256(pubkey). - ChainID:
dchain-+ первые 12 hex-символов SHA-256 genesis-блока. - Времена: RFC 3339 (UTC) везде, кроме internal-счётчиков в Prometheus (unix seconds).