ваше сообщение коммита

This commit is contained in:
2025-08-08 23:40:13 +03:00
parent badb8b9557
commit a10810df55
19 changed files with 2599 additions and 898 deletions

View File

@@ -10,6 +10,18 @@
GitHub: https://github.com/HB3-ACCELERATOR
-->
# DLE v2 — краткие обновления
- SingleChain Governance: голосование фиксируется в одной сети, исполнение в целевых сетях по EIP712 подписям без внешних мостов.
- Снапшоты голосующей силы: `ERC20Votes` (`getPastVotes`, `getPastTotalSupply`) исключают перелив голосов.
- Делегирование «только на себя»: 1 токен = 1 голос, запрет делегирования третьим лицам.
- Модульность: казна, таймлок, деактивация, коммуникации выделены в отдельные модули, операции выполняются через ядро DLE.
- «100% или ничего»: много-сетевые операции исполняются только при готовности всех целевых сетей.
- Детерминированный деплой: `FactoryDeployer` + CREATE2 для одинаковых адресов во всех выбранных сетях; INIT_CODE_HASH рассчитывается автоматически из актуального initCode.
- Аналитика: добавлены viewфункции для сводок, пагинации и агрегирования по предложениям.
---
# DLE - Единый Смарт-Контракт с Модульной Архитектурой
## 🎯 ПОЛНОЕ ПОНИМАНИЕ ЗАДАЧИ DLE
@@ -51,12 +63,12 @@ DLE (Digital Legal Entity) = Универсальная цифровая юри
### **3. СИСТЕМА УПРАВЛЕНИЯ:**
#### **Голосование и мультиподпись:**
#### **Голосование токен‑холдеров:**
```
- Только токен-холдеры участвуют в управлении
- Каждый токен = одна голосующая сила
- Кворум настраиваемый (например, 60% от общего количества токенов)
- Мультиподпись через токен-холдеров (проверка баланса при каждой операции)
- Коллективное голосование токенхолдеров (ERC20Votes снапшоты)
```
#### **Создание предложений:**
@@ -101,7 +113,6 @@ DLE (Digital Legal Entity) = Универсальная цифровая юри
```
- ERC-20 токены
- Система голосования
- Мультиподпись
- Мультичейн синхронизация
- Управление модулями
- DLEInfo (юридическая информация)
@@ -141,7 +152,7 @@ DLE (Digital Legal Entity) = Универсальная цифровая юри
```
- Только токен-холдеры управляют
- Проверка баланса при каждой операции
- Кворум мультиподписей
- Кворум голосов - все решения через коллективное голосование
- Синхронизация между цепочками
```
@@ -174,7 +185,7 @@ DLE.sol (Основной контракт) + Модули (добавляемы
1. **Один основной контракт** - управление токенами, голосованием, мультиподписью
2. **Модули** - специализированные функции (казначейство, иерархическое голосование, коммуникации)
3. **Только токен-холдеры** - никаких админских ролей
4. **Кворум мультиподписей** - все решения через коллективное голосование
4. **Кворум голосов** - все решения через коллективное голосование
5. **Проверка баланса** - при каждой операции
---
@@ -190,7 +201,7 @@ DLE.sol
├── Выбор цепочки для кворума (governanceChainId)
├── Синхронизация голосов между цепочками
├── Поддержка множественных цепочек
├── Мультиподпись (через токен-холдеров)
├── Голосование токенхолдеров
├── Мультичейн синхронизация
└── Система модулей (добавление/управление)
```
@@ -216,7 +227,7 @@ DLE.sol
- **Выбор цепочки для кворума** - токен-холдер может выбрать любую поддерживаемую цепочку
- **Синхронизация голосов** - после голосования результаты синхронизируются между цепочками
- **Поддержка множественных цепочек** - Ethereum, Polygon, BSC и др.
- **Мультиподпись** - через токен-холдеров с проверкой баланса
- **Голосование** - через токенхолдеров с проверкой баланса
- **Мультичейн синхронизация** - одинаковый адрес во всех цепочках
- **Управление модулями** - добавление/удаление через голосование
@@ -241,14 +252,14 @@ DLE.sol
### 5. ExternalDLEModule.sol ✅
- **Меж-DLE взаимодействие** - управление DLE B через приложение DLE A
- **Встраивание интерфейсов** - безопасное управление
- **Проверка прав** - через мультиподпись
- **Проверка прав** - через голосование токен‑холдеров
- **Аудит действий** - отслеживание операций
### 6. Мульти-чейн архитектура ✅
- **CREATE2 деплой** - одинаковый адрес во всех цепочках
- **Синхронизация состояния** - токены, предложения, голосования
- **Создание предложений** - в любой цепочке
- **Голосование** - в любой цепочке с синхронизацией
- **Голосование** - через токен‑холдеров с проверкой баланса
---
@@ -257,7 +268,7 @@ DLE.sol
### Основные принципы безопасности:
1. **Только токен-холдеры** - никаких админских ролей
2. **Проверка баланса** - при каждой операции
3. **Кворум мультиподписей** - все решения коллективные
3. **Кворум голосов** - все решения коллективные
4. **Простая логика** - минимум уязвимостей
### Защита от атак:
@@ -503,13 +514,10 @@ function createProposal(
uint256 _governanceChainId
) external returns (uint256);
// Синхронизация голосов между цепочками
function syncVoteFromChain(
uint256 _proposalId,
uint256 _fromChainId,
uint256 _forVotes,
uint256 _againstVotes,
bytes memory _proof
// Исполнение в целевых сетях по EIP-712 подписям (без мостов)
function executeProposalBySignatures(
uint256 proposalId,
bytes[] calldata signatures
) external;
// Проверка поддерживаемых цепочек
@@ -517,29 +525,8 @@ function isChainSupported(uint256 _chainId) external view returns (bool);
```
### Синхронизация между цепочками
```solidity
// Синхронизация токенов
function syncTokenBalance(
address holder,
uint256 balance,
uint256 fromChainId
) external;
// Синхронизация предложений
function syncProposal(
uint256 proposalId,
Proposal memory proposal,
uint256 fromChainId
) external;
// Синхронизация голосов
function syncVote(
uint256 proposalId,
address voter,
bool support,
uint256 fromChainId
) external;
```
- Результаты голосования фиксируются снапшотами ERC20Votes в governanceсети.
- Целевые сети принимают исполнение при верификации EIP712 подписей холдеров и кворума на зафиксированном timepoint.
---
@@ -940,7 +927,7 @@ contract DLE is ERC20, ReentrancyGuard {
### ✅ Безопасность
- Никаких админских ролей
- Простая логика мультиподписи
- Простая логика коллективного голосования
- Защита от основных атак
- Прозрачность всех операций
@@ -962,7 +949,7 @@ contract DLE is ERC20, ReentrancyGuard {
**DLE - это единый смарт-контракт с модульной архитектурой, который:**
1. **Управляется только токен-холдерами** через кворум мультиподписей
1. **Управляется только токенхолдерами** через кворум голосов
2. **Проверяет баланс токенов** при каждой операции
3. **Использует модули** для специализированных функций
4. **Синхронизируется между цепочками** с одинаковым адресом

View File

@@ -16,7 +16,7 @@
### Архитектурные требования
- **Single-Chain Governance**: Голосование происходит только в одной выбранной сети
- **Мультиподпись токен-холдеров**: Все операции требуют кворума подписей
- **Кворум голосов токенхолдеров**: Все операции требуют достижения кворума голосующей силы по снапшотам
- **Настраиваемые таймлоки**: Инициатор устанавливает задержку для каждого предложения
- **Cross-chain исполнение**: Решения выполняются во всех целевых сетях
- **Без админских ролей**: Только коллективное управление через токен-холдеров
@@ -24,11 +24,23 @@
### Технический стек
- **Frontend**: Vue.js 3 + Composition API
- **Web3**: ethers.js или web3.js
- **Контракты**: Solidity + OpenZeppelin + ERC-4337
- **Контракты**: Solidity + OpenZeppelin (ERC4337 опционально для кошельков/UX)
- **Стили**: Scoped CSS с переменными
---
## Обновления (DLE v2)
- Деплой:
- Мультисетевой деплой одной кнопкой: backend вызывает `deploy-multichain.js`.
- Предсказанные адреса DLE отображаются автоматически (endpoint `/api/dle-v2/predict-addresses`).
- INIT_CODE_HASH вычисляется автоматически на backend, не вводится вручную.
- Предложения (UI):
- Порядок секций: Базовая информация → Timelock → Governanceсеть → Целевые сети → Тип операции и параметры → Предпросмотр.
- Поля: `timelockHours`, `targetChains`, `governanceChainId`.
- Аналитика:
- Использовать новые viewфункции: `getProposalSummary`, `getProposalState`, `getProposalVotes`, `getQuorumAt`, `getVotingPowerAt`, `listSupportedChains`, `getGovernanceParams`.
## 1. БЛОК "ПРЕДЛОЖЕНИЯ" (`/management/proposals`)
### Задача 1.1: Создание предложений

View File

@@ -105,4 +105,19 @@ contract GovernanceModule {
- Проверяйте права доступа
- Тестируйте граничные случаи
- Валидируйте входные параметры
- Проверяйте обработку ошибок
- Проверяйте обработку ошибок
# Модульная архитектура (обновление для DLE v2)
- Модули выносятся в отдельные контракты: `TreasuryModule`, `TimelockModule`, `DeactivationModule`, `CommunicationModule`.
- Подключение/отключение модулей — строго через предложения DLE (`ModuleAdded`/`ModuleRemoved`).
- Исполнение модульных операций инициируется основным DLE через `_executeOperation` по безопасному `operationCalldata`.
- Денежные переводы из ядра исключены: все токено‑операции внутри `TreasuryModule`.
- Таймлок применяется на уровне предложения: `timelockHours` хранится в `Proposal` и проверяется при исполнении.
- Для оффчейн действий ядро эмитит событие `OffchainAction`, которое подписывает и обрабатывает бекенд/клиент.
Последовательность для казначейской операции:
1) Создание предложения с типом операции и параметрами, указание `governanceChainId`, `targetChains`, `timelockHours`.
2) Сбор голосов в выбранной сети (снапшоты ERC20Votes).
3) По наступлению timelock — `executeProposalBySignatures` в целевых сетях с проверкой EIP712 подписей и «100% или ничего».
4) Ядро вызывает `TreasuryModule` по `abi.encodeWithSelector(...)`.

View File

@@ -14,8 +14,64 @@
## Основной смарт контракт DLE
### DLE v2: ключевые изменения и API (актуально)
- Безопасность: удалены уязвимые Merkleмеханизмы crosschain; нет внешних мостов/оракулов.
- Голосующая сила: OpenZeppelin `ERC20Votes` (снимки `getPastVotes`, `getPastTotalSupply`).
- Делегирование: жестко ограничено «только на себя»; третьим лицам делегировать нельзя (1 токен = 1 голос).
- SingleChain Governance: голосование происходит в одной выбранной сети (`governanceChainId`), время снапшота фиксируется на создании предложения и используется во всех сетях.
- MultiChain исполнение: выполнение в целевых сетях по EIP712 подписям холдеров, проверяется суммарная голосующая сила на зафиксированном `timepoint` (без доверия к мостам).
- «100% или ничего»: операции считаются успешными только при готовности/успешности всех целевых сетей.
- Модули вынесены отдельно: `Treasury`, `Timelock`, `Deactivation`, `Communication` и др. Управление только через предложения.
- Детерминированные адреса: фабрика `FactoryDeployer` + CREATE2. Единый адрес DLE и модулей во всех выбранных сетях. INIT_CODE_HASH автоподставляется из актуального initCode.
- Аналитика: добавлены viewфункции для агрегирования и пагинации.
Пример основных функций DLE v2 (интерфейс):
```solidity
// Создание предложения с фиксацией сети голосования, целевых сетей и таймлока
function createProposal(
string calldata description,
uint256 governanceChainId,
uint256[] calldata targetChains,
uint64 timelockHours,
bytes calldata operationCalldata
) external returns (uint256 proposalId);
// Голосование с использованием снапшотов ERC20Votes (учет силы на момент создания)
function vote(uint256 proposalId, bool support) external;
// Отмена инициатором при наличии достаточной голосующей силы (мягкая отмена)
function cancelProposal(uint256 proposalId) external;
// Исполнение в целевой сети по EIP-712 подписям холдеров (без мостов)
function executeProposalBySignatures(
uint256 proposalId,
bytes[] calldata signatures
) external;
// Просмотровые функции (аналитика)
function getProposalState(uint256 proposalId) external view returns (uint8);
function getProposalVotes(uint256 proposalId) external view returns (uint256 forVotes, uint256 againstVotes);
function getQuorumAt(uint256 timepoint) external view returns (uint256);
function getVotingPowerAt(address account, uint256 timepoint) external view returns (uint256);
function getProposalSummary(uint256 proposalId) external view returns (/* агрегированные поля */);
function getGovernanceParams() external view returns (/* кворум, снапшоты, chainIds */);
function listSupportedChains() external view returns (uint256[] memory);
```
События (ключевые):
- `ProposalCreated`, `ProposalCancelled`, `ProposalExecuted`
- `OffchainAction` (триггер оффчейн‑действий через события)
- `ModuleAdded`, `ModuleRemoved`
Замечания по безопасности:
- Снапшоты голосующей силы через `ERC20Votes` исключают перелив голосов.
- Верификация EIP712 подписей исключает зависимость от внешних мостов.
- Отсутствуют админ‑роли: все изменения только предложением и кворумом.
- Защита от повторов: `nonces` и EIP712 схемы подписи используются по стандарту OZ.
```
### Концепция
**Один смарт-контракт** с ERC-20 токенами, настраиваемым кворумом, мультиподписью и модулями. Адрес контракта одновременно выполняет функции банковского счета и контактных данных.
**Один смарт-контракт** с ERC-20 токенами, настраиваемым кворумом и модулями. Адрес контракта одновременно выполняет функции банковского счета и контактных данных.
### Архитектура
```
@@ -23,7 +79,7 @@ DLE.sol (Один контракт)
├── ERC-20 токены (голосующая сила)
├── Настраиваемый кворум (% от общего количества токенов)
├── Система голосования (проверка баланса токенов)
├── Мультиподпись (через токен-холдеров)
├── Голосование токенхолдеров
├── Модули (добавляемые через голосование)
├── Мультичейн синхронизация
└── Полное управление данными DLE через кворум
@@ -70,13 +126,12 @@ DLE.sol (Один контракт)
- **Изменение процента кворума** через кворум
- **Изменение текущей цепочки** через кворум
#### 5. Мультиподпись через токен-холдеров
- **Описание**: Система подписей для критических операций
#### 5. Голосование токенхолдеров
- **Описание**: Критические операции подтверждаются голосованием держателей токенов
- **Функции**:
- Подписание операций токен-холдерами
- Проверка баланса токенов при подписи
- Сбор подписей до достижения кворума
- Выполнение операций после сбора подписей
- Подача голосов за/против с учетом голосующей силы
- Подсчет голосов по снапшотам `ERC20Votes`
- Исполнение операций после достижения кворума
#### 6. Казначейские функции
- **Описание**: Управление финансами DLE через голосование
@@ -110,7 +165,7 @@ DLE может владеть токенами других DLE и участв
#### Механизм работы
1. **DLE A** владеет токенами **DLE B**
2. **Голос DLE A** в **DLE B** прямо пропорционален количеству токенов **DLE B** на балансе **DLE A**
3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A**
3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум голосов** внутри **DLE A**
4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое
### Новые возможности изменения данных DLE ✅
@@ -165,7 +220,7 @@ event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId);
#### 4. Синхронизация
- Изменения синхронизируются во все поддерживаемые цепочки
- Merkle proofs обеспечивают безопасность cross-chain операций
- EIP712 подписи холдеров обеспечивают безопасность cross-chain исполнения (без мостов)
### Примеры использования
@@ -203,7 +258,7 @@ event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId);
#### Защита от злоупотреблений
- Все изменения только через кворум
- Проверка баланса токенов при голосовании
- Merkle proofs для cross-chain безопасности
- EIP712 подписи и проверка снапшотов для cross-chain безопасности
#### Аудит изменений
- Все изменения логируются в событиях
@@ -218,7 +273,7 @@ DLE может владеть токенами других DLE и участв
#### Механизм работы
1. **DLE A** владеет токенами **DLE B**
2. **Голос DLE A** в **DLE B** прямо пропорционален количеству токенов **DLE B** на балансе **DLE A**
3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A**
3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум голосов** внутри **DLE A**
4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое
#### Пример
@@ -228,8 +283,8 @@ DLE может владеть токенами других DLE и участв
- **DLE B** получает от **DLE A** подпись на **10% голосов**
#### Технические требования
- Система сбора мультиподписей внутри DLE для внешнего голосования
- Проверка кворума подписей перед активацией голоса DLE
- Система сбора голосов внутри DLE для внешнего голосования
- Проверка прав через голосование
- Прямо пропорциональный подсчет голосов по количеству токенов
- Интерфейсы для взаимодействия между DLE
@@ -272,11 +327,11 @@ function DLEBManagementInterface({ dleBAddress }) {
- URL: `http://localhost:5173/dle-management`
- Встраивание компонентов управления DLE B
- Безопасное подписание транзакций для DLE B
- Проверка прав через мультиподпись
- Проверка прав через голосование
### Технические требования
- Один адрес = универсальная точка входа
- Безопасность мультиподписи через токен-холдеров
- Безопасность коллективного голосования токенхолдеров по снапшотам
- Масштабируемость через модули
- Поддержка аудио/видео коммуникации
- Совместимость с существующими стандартами (ERC-20, ERC-721)
@@ -299,12 +354,12 @@ DLE должен функционировать в нескольких блок
#### 2. Синхронные токены управления
- Одинаковое количество токенов для каждого партнера во всех сетях
- Синхронизация операций с токенами между всеми развернутыми сетями
- Все операции с токенами только через мультиподпись и кворум
- Все операции с токенами только через кворум голосов
- Защита от double-spending и рассинхронизации
#### 3. Single-Chain Governance система
- Инициатор предложения выбирает ОДНУ сеть для голосования
- Все токен-холдеры участвуют в мультиподписи только в выбранной сети
- Все токен-холдеры участвуют в голосовании только в выбранной сети
- Инициатор устанавливает таймлок для предложения
- Проверка балансов токен-холдеров при подписании
- Исполнение решения происходит во всех целевых сетях
@@ -408,7 +463,7 @@ contract DLE_SingleChainGovernance {
ERC-4337 предоставляет стандартную инфраструктуру для смарт-контракт кошельков с универсальностью (один адрес во всех цепочках) и готовыми решениями для оптимизации газа.
#### Компоненты ERC-4337
- **Smart Contract Wallets** - встроенная мультиподпись
- **Smart Contract Wallets** — инфраструктура аккаунтов (опционально для UX)
- **Bundlers** - оптимизация газа через агрегацию транзакций
- **Paymasters** - гибкая оплата транзакций
- **Account Abstraction** - универсальность и стандартизация
@@ -449,7 +504,7 @@ ERC-4337 распространяется под лицензией **CC0** (Pub
-**ERC-20** - токены управления
-**Governance** - система голосования
-**Access Control** - роли и разрешения
-**Multisig** - мультиподпись
(устарело) Multisig — используем голосование токен‑холдеров (ERC20Votes)
-**Timelock** - задержки выполнения
### 2. **ERC-4337** (аудит: Trail of Bits)
@@ -475,7 +530,7 @@ contract DLE is ERC20, Governor, TimelockController {
### **Компоненты для интеграции:**
- **ERC-20** - токен управления DLE
- **Governor** - система голосования с мультиподписью
- **Governor** - система голосования
- **TimelockController** - настраиваемые таймлоки
- **Account Abstraction** - универсальность адреса
@@ -493,10 +548,13 @@ contract DLE is ERC20, Governor, TimelockController {
### ✅ **Надежность**
- Временем проверенные решения
- Простая логика мультиподписи токен-холдеров
- Простая логика коллективного голосования токенхолдеров
- Понятные механизмы таймлоков
### ✅ **Совместимость**
- Стандартные интерфейсы Ethereum
- Совместимость с существующими кошельками
- Легкая интеграция с DeFi протоколами
- Легкая интеграция с DeFi протоколами
### Примечание про ERC-4337 (опционально)
- Может использоваться в кошельках/окружении для UX (userOps), но не является частью ядра DLE v2.