ваше сообщение коммита
This commit is contained in:
@@ -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` в целевых сетях с проверкой EIP‑712 подписей и «100% или ничего».
|
||||
4) Ядро вызывает `TreasuryModule` по `abi.encodeWithSelector(...)`.
|
||||
Reference in New Issue
Block a user