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

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

@@ -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.