ваше сообщение коммита
This commit is contained in:
@@ -14,8 +14,64 @@
|
||||
|
||||
## Основной смарт контракт DLE
|
||||
|
||||
### DLE v2: ключевые изменения и API (актуально)
|
||||
- Безопасность: удалены уязвимые Merkle‑механизмы cross‑chain; нет внешних мостов/оракулов.
|
||||
- Голосующая сила: OpenZeppelin `ERC20Votes` (снимки `getPastVotes`, `getPastTotalSupply`).
|
||||
- Делегирование: жестко ограничено «только на себя»; третьим лицам делегировать нельзя (1 токен = 1 голос).
|
||||
- Single‑Chain Governance: голосование происходит в одной выбранной сети (`governanceChainId`), время снапшота фиксируется на создании предложения и используется во всех сетях.
|
||||
- Multi‑Chain исполнение: выполнение в целевых сетях по EIP‑712 подписям холдеров, проверяется суммарная голосующая сила на зафиксированном `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` исключают перелив голосов.
|
||||
- Верификация EIP‑712 подписей исключает зависимость от внешних мостов.
|
||||
- Отсутствуют админ‑роли: все изменения только предложением и кворумом.
|
||||
- Защита от повторов: `nonces` и EIP‑712 схемы подписи используются по стандарту 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 операций
|
||||
- EIP‑712 подписи холдеров обеспечивают безопасность cross-chain исполнения (без мостов)
|
||||
|
||||
### Примеры использования
|
||||
|
||||
@@ -203,7 +258,7 @@ event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId);
|
||||
#### Защита от злоупотреблений
|
||||
- Все изменения только через кворум
|
||||
- Проверка баланса токенов при голосовании
|
||||
- Merkle proofs для cross-chain безопасности
|
||||
- EIP‑712 подписи и проверка снапшотов для 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.
|
||||
Reference in New Issue
Block a user