# Production Smart Contracts DChain поставляется с четырьмя production-контрактами, задеплоенными из genesis-кошелька. ## Обзор | Контракт | Назначение | Ключевые фичи | |---------|-----------|--------------| | [username_registry](username_registry.md) | Username ↔ адрес | Тарифная сетка, treasury fees, reverse lookup | | [governance](governance.md) | On-chain параметры | Propose/approve workflow, admin role | | [auction](auction.md) | English auction | Token escrow, автоматический refund, settle | | [escrow](escrow.md) | Двусторонний escrow | Dispute/resolve, admin arbitration | ## Деплой ```bash docker compose --profile deploy run --rm deploy ``` Все 4 контракта деплоятся автоматически. ID сохраняются в `/tmp/contracts.env`. ## Вызов контракта ```bash docker exec node1 client call-contract \ --key /keys/node1.json \ --contract \ --method \ --arg # строковый аргумент (можно несколько) --arg64 # числовой аргумент uint64 --gas # рекомендуется 20000 для записи, 5000 для чтения --node http://node1:8080 ``` ## Contract Treasury У каждого контракта есть **ownerless treasury address** — `hex(sha256(contractID + ":treasury"))`. Это эскроу-адрес без private key. Только сам контракт может снять с него деньги через host function `transfer`. Используется в `auction` и `escrow` для хранения заблокированных токенов. ## Просмотр состояния ```bash # Через REST API curl http://localhost:8081/api/contracts//state/ # Через Explorer open http://localhost:8081/contract?id= ``` ## Логи контракта ```bash # REST curl "http://localhost:8081/api/contracts//logs?limit=20" # Explorer → вкладка Logs ```