# Смарт Контракты Digital Legal Entity (DLE) ## Основной смарт контракт DLE ### Концепция **Один смарт-контракт** с ERC-20 токенами, настраиваемым кворумом, мультиподписью и модулями. Адрес контракта одновременно выполняет функции банковского счета и контактных данных. ### Архитектура ``` DLE.sol (Один контракт) ├── ERC-20 токены (голосующая сила) ├── Настраиваемый кворум (% от общего количества токенов) ├── Система голосования (проверка баланса токенов) ├── Мультиподпись (через токен-холдеров) ├── Модули (добавляемые через голосование) ├── Мультичейн синхронизация └── Полное управление данными DLE через кворум ``` ### Требования #### 1. Токен управления (ERC-20) - **Описание**: Стандартный ERC-20 токен для управления DLE - **Функции**: - Минтинг токенов при создании DLE - Распределение токенов между участниками - **Голосующая сила = количество токенов** - Проверка баланса токенов при каждой операции #### 2. Настраиваемый кворум - **Описание**: Процент от общего количества токенов для принятия решений - **Функции**: - Настройка кворума при создании DLE - **Изменение кворума через голосование** ✅ - Расчет кворума: `(totalSupply * quorumPercentage) / 100` - Проверка достижения кворума для каждого решения #### 3. Система голосования через токен-холдеров - **Описание**: Только владельцы токенов участвуют в управлении - **Функции**: - Создание предложений (любым токен-холдером) - Голосование пропорционально балансу токенов - Проверка баланса токенов при каждой подписи - Выполнение предложений после достижения кворума - **НЕТ админских ролей - только коллективное управление** #### 4. Полное управление данными DLE через кворум ✅ - **Описание**: Все данные DLE можно изменить через систему голосования - **Функции**: - **Изменение названия DLE** через кворум - **Изменение символа токена** через кворум - **Изменение местонахождения** через кворум - **Изменение координат** через кворум - **Изменение юрисдикции** через кворум - **Изменение ОКТМО** через кворум - **Изменение КПП** через кворум - **Изменение кодов ОКВЭД** через кворум - **Изменение процента кворума** через кворум - **Изменение текущей цепочки** через кворум #### 5. Мультиподпись через токен-холдеров - **Описание**: Система подписей для критических операций - **Функции**: - Подписание операций токен-холдерами - Проверка баланса токенов при подписи - Сбор подписей до достижения кворума - Выполнение операций после сбора подписей #### 6. Казначейские функции - **Описание**: Управление финансами DLE через голосование - **Функции**: - Внесение токенов в казну - Вывод токенов из казны через голосование - Распределение дивидендов - Бюджетирование через предложения #### 7. Модульная система - **Описание**: Добавление новых функций через модули - **Функции**: - Добавление модулей через голосование - Управление модулями через голосование - Изоляция модулей от основного контракта - Обновление модулей через голосование #### 8. Коммуникационные функции - **Описание**: Прием сообщений и звонков - **Функции**: - Прием текстовых сообщений - Прием аудио/видео звонков - Кворум для коммуникационных действий - Хранение истории коммуникаций ### Иерархическая система голосования DLE #### Концепция DLE может владеть токенами других DLE и участвовать в их голосовании через систему кворума подписей. #### Механизм работы 1. **DLE A** владеет токенами **DLE B** 2. **Голос DLE A** в **DLE B** прямо пропорционален количеству токенов **DLE B** на балансе **DLE A** 3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A** 4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое ### Новые возможности изменения данных DLE ✅ #### 1. Обновление основной информации DLE ```solidity function _updateDLEInfo( string memory _name, string memory _symbol, string memory _location, string memory _coordinates, uint256 _jurisdiction, uint256 _oktmo, string[] memory _okvedCodes, uint256 _kpp ) internal ``` #### 2. Изменение процента кворума ```solidity function _updateQuorumPercentage(uint256 _newQuorumPercentage) internal ``` #### 3. Изменение текущей цепочки ```solidity function _updateCurrentChainId(uint256 _newChainId) internal ``` #### 4. События для отслеживания изменений ```solidity event DLEInfoUpdated(string name, string symbol, string location, string coordinates, uint256 jurisdiction, uint256 oktmo, string[] okvedCodes, uint256 kpp); event QuorumPercentageUpdated(uint256 oldQuorumPercentage, uint256 newQuorumPercentage); event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId); ``` ### Процесс изменения данных DLE #### 1. Создание предложения - Любой токен-холдер создает предложение об изменении данных - Выбирает цепочку для сбора голосов - Указывает новые значения для изменения #### 2. Голосование - Токен-холдеры голосуют за/против изменения - Голосующая сила = количество токенов - Проверка баланса при каждом голосе #### 3. Исполнение - При достижении кворума предложение исполняется - Данные DLE обновляются - Событие эмитится для отслеживания #### 4. Синхронизация - Изменения синхронизируются во все поддерживаемые цепочки - Merkle proofs обеспечивают безопасность cross-chain операций ### Примеры использования #### Изменение названия DLE ``` 1. Создание предложения: "Изменить название на 'Новое DLE'" 2. Голосование в выбранной цепочке 3. При кворуме: обновление названия 4. Синхронизация во все цепочки ``` #### Изменение кворума ``` 1. Создание предложения: "Изменить кворум с 51% на 60%" 2. Голосование в выбранной цепочке 3. При кворуме: обновление процента кворума 4. Синхронизация во все цепочки ``` #### Изменение текущей цепочки ``` 1. Создание предложения: "Изменить текущую цепочку на Polygon" 2. Голосование в выбранной цепочке 3. При кворуме: обновление currentChainId 4. Синхронизация во все цепочки ``` ### Безопасность #### Валидация данных - Проверка корректности всех входящих данных - Валидация адресов и числовых значений - Проверка поддержки цепочек перед изменением #### Защита от злоупотреблений - Все изменения только через кворум - Проверка баланса токенов при голосовании - Merkle proofs для cross-chain безопасности #### Аудит изменений - Все изменения логируются в событиях - Возможность отслеживания истории изменений - Прозрачность всех операций ### Иерархическая система голосования DLE #### Концепция DLE может владеть токенами других DLE и участвовать в их голосовании через систему кворума подписей. #### Механизм работы 1. **DLE A** владеет токенами **DLE B** 2. **Голос DLE A** в **DLE B** прямо пропорционален количеству токенов **DLE B** на балансе **DLE A** 3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A** 4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое #### Пример - **DLE A** владеет **10% токенов DLE B** - Кворум в **DLE B** = **51%** - Холдеры **DLE A** голосуют за подпись в **DLE B** - **DLE B** получает от **DLE A** подпись на **10% голосов** #### Технические требования - Система сбора мультиподписей внутри DLE для внешнего голосования - Проверка кворума подписей перед активацией голоса DLE - Прямо пропорциональный подсчет голосов по количеству токенов - Интерфейсы для взаимодействия между DLE ### Межприложное взаимодействие DLE #### Концепция Каждое DLE имеет свое веб3 приложение с интерфейсом управления. DLE могут взаимодействовать через встраивание интерфейсов. #### Архитектура взаимодействия - **DLE A** (домен 1) + **Веб3 приложение A** с интерфейсом - **DLE B** (домен 2) + **Веб3 приложение B** с интерфейсом - **Голосование** происходит через блокчейн между доменами #### Вариант реализации (рекомендуемый) **Встраивание интерфейса DLE B в приложение DLE A** ##### Преимущества: - **Безопасность**: Холдеры DLE A не покидают свое приложение - **Защита от фишинга**: Пользователи всегда в знакомой среде - **Контроль**: DLE A контролирует безопасность интерфейса - **Удобство**: Единый интерфейс для управления всеми DLE - **Аудит**: Все действия отслеживаются в одном месте ##### Техническая реализация: ```javascript // В приложении DLE A function DLEBManagementInterface({ dleBAddress }) { return (