Files
DLE/docs/DLE_Governance_System.md

33 KiB
Raw Blame History

DLE Governance System - Документация

📋 Обзор системы

DLE (Digital Legal Entity) - это система управления цифровым юридическим лицом с использованием смарт-контрактов и токенов управления. Система включает в себя механизмы голосования, мультиподписи и административного управления.

🏗️ Архитектура системы

Текущие смарт-контракты

1. GovernanceToken.sol

contract GovernanceToken is ERC20Permit, ERC20Votes, Ownable {
    // Основные функции:
    - mintInitialSupply(address[] partners, uint256[] amounts) // Начальное распределение токенов
    - transfer() // Передача токенов
    - balanceOf() // Проверка баланса
    - getVotes() // Получение голосов на определенном блоке
}

2. GovernanceTimelock.sol

contract GovernanceTimelock is TimelockController {
    // Основные функции:
    - queue() // Постановка операции в очередь
    - execute() // Выполнение операции после задержки
    - cancel() // Отмена операции
}

3. GovernorContract.sol

contract GovernorContract is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {
    // Основные функции:
    - propose() // Создание предложения
    - vote() // Голосование
    - execute() // Выполнение предложения
    - cancel() // Отмена предложения
}

Текущие параметры системы

  • Порог предложения: 100,000 GT
  • Кворум: 4% от общего количества токенов
  • Задержка голосования: 1 день
  • Период голосования: 7 дней
  • Минимальная задержка Timelock: 2 дня

🔧 Функции приложения

Критические функции (требуют голосования)

🚨 УДАЛЕНИЕ ДАННЫХ

Пользователи
// Удаление пользователя
DELETE /api/users/:id
- Описание: Полное удаление пользователя и всех связанных данных
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА

// Блокировка пользователя
PATCH /api/users/:id/block
- Описание: Блокировка пользователя в системе
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
Таблицы
// Удаление таблицы
DELETE /api/tables/:id
- Описание: Удаление таблицы и всех связанных данных
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА

// Удаление строк таблицы
DELETE /api/tables/:id/rows
- Описание: Массовое удаление строк
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА

// Удаление столбцов таблицы
DELETE /api/tables/:id/columns
- Описание: Удаление столбцов таблицы
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
// Удаление DLE
DELETE /api/dle/:tokenAddress
- Описание: Удаление DLE по адресу токена
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА

// Удаление пустого DLE
DELETE /api/dle/empty/:fileName
- Описание: Удаление пустого DLE по имени файла
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
Системные настройки
// Удаление RPC провайдера
DELETE /api/settings/rpc/:networkId
- Описание: Удаление RPC конфигурации
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА

// Удаление токена аутентификации
DELETE /api/settings/auth-token/:address/:network
- Описание: Удаление токена для аутентификации
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА

// Удаление AI настроек
DELETE /api/settings/ai-settings/:provider
- Описание: Удаление настроек AI провайдера
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА

// Удаление правил AI ассистента
DELETE /api/settings/ai-assistant-rules/:id
- Описание: Удаление набора правил AI
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА

🏗️ СОЗДАНИЕ КРИТИЧНЫХ СУЩНОСТЕЙ

DLE
// Создание нового DLE
POST /api/dle
- Описание: Создание нового Digital Legal Entity
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
- Параметры: name, symbol, location, isicCodes, partners, amounts, network, etc.
Таблицы
// Создание таблицы
POST /api/tables
- Описание: Создание новой таблицы
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
Системные настройки
// Добавление RPC провайдера
POST /api/settings/rpc
- Описание: Добавление нового RPC провайдера
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА

// Добавление токена аутентификации
POST /api/settings/auth-token
- Описание: Добавление нового токена для аутентификации
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА

⚙️ ИЗМЕНЕНИЕ СИСТЕМНЫХ НАСТРОЕК

База данных
// Изменение настроек БД
PUT /api/settings/db-settings
- Описание: Изменение параметров подключения к базе данных
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
- Параметры: db_host, db_port, db_name, db_user, db_password
AI настройки
// Изменение настроек AI ассистента
PUT /api/settings/ai-assistant
- Описание: Изменение глобальных настроек AI ассистента
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА

// Изменение AI провайдера
PUT /api/settings/ai-settings/:provider
- Описание: Изменение настроек конкретного AI провайдера
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
Коммуникации
// Настройки Email
PUT /api/identities/email-settings
- Описание: Изменение настроек SMTP/IMAP
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА

// Настройки Telegram
PUT /api/identities/telegram-settings
- Описание: Изменение настроек Telegram бота
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА

Умеренные функции (опциональное голосование)

📝 РЕДАКТИРОВАНИЕ ДАННЫХ

// Редактирование пользователя
PATCH /api/users/:id
- Описание: Изменение данных пользователя
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ОПЦИОНАЛЬНО

// Редактирование таблицы
PATCH /api/tables/:id
- Описание: Изменение структуры таблицы
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ОПЦИОНАЛЬНО

// Импорт пользователей
POST /api/users/import
- Описание: Массовый импорт пользователей
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ОПЦИОНАЛЬНО

Обычные функции (не требуют голосования)

📖 ПРОСМОТР ДАННЫХ

// Список пользователей
GET /api/users
- Описание: Получение списка пользователей
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ

// Список таблиц
GET /api/tables
- Описание: Получение списка таблиц
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ

// Список DLE
GET /api/dle
- Описание: Получение списка DLE
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ

// Детали пользователя
GET /api/users/:id
- Описание: Получение детальной информации о пользователе
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ

✏️ РЕДАКТИРОВАНИЕ ЯЧЕЕК

// Изменение значения ячейки
PATCH /api/tables/cell
- Описание: Изменение значения конкретной ячейки таблицы
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ

🎯 Система голосования

Текущая реализация

Процесс голосования

  1. Создание предложения - пользователь с достаточным количеством токенов создает предложение
  2. Период голосования - 7 дней для голосования
  3. Подсчет голосов - проверка кворума (4% от общего количества токенов)
  4. Постановка в очередь - успешные предложения ставятся в очередь Timelock
  5. Выполнение - после задержки (2 дня) предложение выполняется

Параметры голосования

  • Порог для создания предложений: 100,000 GT
  • Кворум: 4% от общего количества токенов
  • Задержка голосования: 1 день (в блоках)
  • Период голосования: 7 дней (в блоках)
  • Минимальная задержка Timelock: 2 дня

Предлагаемые улучшения

Новый модуль: AdminGovernanceModule

contract AdminGovernanceModule {
    struct AdminAction {
        string actionType;     // Тип действия
        string targetId;       // ID цели
        bytes actionData;      // Данные действия
        uint256 proposalId;    // ID предложения
        bool executed;         // Выполнено ли
        uint256 createdAt;     // Время создания
    }
    
    mapping(uint256 => AdminAction) public adminActions;
    mapping(string => bool) public actionTypesRequiringVote;
    
    // Функции
    function proposeAdminAction(string memory actionType, string memory targetId, bytes memory actionData) external returns (uint256);
    function executeAdminAction(uint256 actionId) external;
    function canExecuteAction(address executor, string memory actionType) external view returns (bool);
}

Типы административных действий

// Критические действия (обязательное голосование)
"DELETE_USER"           // Удаление пользователя
"DELETE_DLE"           // Удаление DLE
"DELETE_TABLE"         // Удаление таблицы
"CREATE_DLE"           // Создание DLE
"UPDATE_DB_SETTINGS"   // Изменение настроек БД
"UPDATE_RPC"           // Изменение RPC настроек
"UPDATE_AUTH_TOKENS"   // Изменение токенов аутентификации

// Важные действия (опциональное голосование)
"CREATE_TABLE"         // Создание таблицы
"UPDATE_AI_SETTINGS"   // Изменение AI настроек
"UPDATE_EMAIL_SETTINGS" // Изменение email настроек
"UPDATE_TELEGRAM_SETTINGS" // Изменение telegram настроек
"IMPORT_USERS"         // Импорт пользователей

🔐 Система доступа

Текущая система ролей

Роли пользователей

  • Администратор - полный доступ ко всем функциям
  • Пользователь - ограниченный доступ

Проверка прав

// Middleware для проверки администратора
requireAdmin(req, res, next) {
    // Проверка через сессию
    if (req.session.isAdmin) return next();
    
    // Проверка через кошелек
    if (req.session.address) {
        const isAdmin = await authService.checkAdminTokens(req.session.address);
        if (isAdmin) return next();
    }
    
    // Проверка через ID пользователя
    if (req.session.userId) {
        const user = await db.getQuery()('SELECT role FROM users WHERE id = $1', [req.session.userId]);
        if (user.rows[0].role === 'admin') return next();
    }
    
    return res.status(403).json({ error: 'Доступ запрещен' });
}

Предлагаемая система доступа с токенами

Проверка через смарт-контракт

function canExecuteAction(address executor, string memory actionType) public view returns (bool) {
    // Проверка баланса токенов
    uint256 balance = governanceToken.balanceOf(executor);
    
    // Проверка типа действия
    if (actionTypesRequiringVote[actionType]) {
        return balance >= proposalThreshold;
    }
    
    // Для некритических действий достаточно быть администратором
    return adminService.isAdmin(executor);
}

📊 Модули DLE

Текущие модули

Доступные модули

  1. Контракт на активы - токенизация физических активов
  2. Мультиподпись - повышенная безопасность
  3. Дивиденды - распределение дивидендов между держателями
  4. Стейкинг - стейкинг токенов для получения наград
  5. Прием платежей - прием оплаты в выбранных токенах

Предлагаемый модуль: Административное голосование

{
    name: 'Административное голосование',
    description: 'Добавляет систему голосования для административных действий',
    installed: false,
    features: [
        'Голосование за удаление пользователей',
        'Голосование за создание таблиц',
        'Голосование за изменение системных настроек',
        'Интеграция с существующими контрактами DLE'
    ]
}

🚀 План реализации

Этап 1: Анализ и проектирование

  • Анализ текущих функций приложения
  • Определение критических операций
  • Проектирование архитектуры системы голосования

Этап 2: Разработка смарт-контрактов

  • Создание AdminGovernanceModule
  • Расширение GovernorContract
  • Создание интерфейсов для взаимодействия

Этап 3: Интеграция с приложением

  • Создание сервиса для работы с голосованием
  • Интеграция с существующими API
  • Обновление middleware для проверки прав

Этап 4: Обновление UI

  • Создание интерфейса для управления предложениями
  • Интеграция с модульной системой DLE
  • Добавление уведомлений о голосованиях

Этап 5: Тестирование и развертывание

  • Тестирование смарт-контрактов
  • Интеграционное тестирование
  • Развертывание в production

📝 Заключение

Текущая система DLE предоставляет базовую функциональность управления через токены, но требует расширения для полной интеграции с административными функциями приложения. Предлагаемая система голосования позволит обеспечить безопасность и прозрачность при выполнении критических операций.

Ключевые преимущества предлагаемого решения:

  1. Безопасность - все критические операции требуют голосования
  2. Прозрачность - все действия записываются в блокчейн
  3. Гибкость - возможность настройки уровней критичности
  4. Интеграция - использование существующей инфраструктуры DLE
  5. Модульность - возможность включения/выключения функций

🏗️ Архитектура DLE как цифрового акционерного общества

🎯 Концепция DLE

DLE (Digital Legal Entity) - это цифровое акционерное общество, где смарт-контракт сам по себе является цифровым ИНН организации со всеми функциями традиционного АО.

Основная аналогия:

Акционерное общество:
├── ИНН (идентификатор)
├── Банковский счет (финансы)
├── Юридический адрес
├── Контакты (телефон, email)
├── Коды деятельности (ОКВЭД)
├── Акционеры (владельцы)
├── Управление (голосование)
└── Участие в других организациях

DLE (цифровой аналог):
├── Адрес контракта (идентификатор)
├── Токены управления (акции)
├── Цифровой адрес (блокчейн)
├── Контакты (веб-интерфейс)
├── Коды деятельности (ISIC)
├── Держатели токенов (акционеры)
├── Система голосования
└── Участие в других DLE

📋 Формы для ручного деплоя смарт-контрактов

Основная форма деплоя DLE:

Блок 1: Идентификация (ИНН)

- Название организации (name)
- Символ токена (symbol) 
- Описание деятельности (businessDescription)
- Юридический адрес (legalAddress)
- Контактная информация (contactInfo)

Блок 2: Коды деятельности (ISIC)

- Выбор секций ISIC (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)
- Выбор разделов (2-значные коды)
- Выбор групп (3-значные коды)
- Выбор классов (4-значные коды)
- Дополнительные коды деятельности

Блок 3: Финансы (банковский счет)

- Начальное распределение токенов (partners[], amounts[])
- Общее количество токенов (totalSupply)
- Минимальный баланс для голосования (proposalThreshold)
- Кворум для принятия решений (quorumPercentage)

Блок 4: Управление (акционерное собрание)

- Задержка голосования (votingDelay)
- Период голосования (votingPeriod)
- Минимальная задержка выполнения (timelockMinDelay)
- Тип управления (демократическое/олигархическое)

Блок 5: Мультиподпись

- Количество требуемых подписей (requiredSignatures)
- Список авторизованных подписантов (authorizedSigners[])
- Временные ограничения на подписание
- Типы операций, требующие мультиподпись

Блок 6: Коммуникация

- Веб-сайт организации (website)
- Email для связи (contactEmail)
- Телефон для связи (contactPhone)
- Адрес для сообщений (communicationAddress)

🏗️ Типы и функции смарт-контрактов

Основной контракт: DigitalLegalEntity.sol

A. Функции идентификации:

- getName() - получение названия
- getSymbol() - получение символа
- getContractAddress() - получение адреса (ИНН)
- getBusinessDescription() - получение описания
- getLegalAddress() - получение юр. адреса
- getContactInfo() - получение контактов

B. Функции кодов деятельности:

- getIsicCodes() - получение кодов ISIC
- addIsicCode(string code) - добавление кода
- removeIsicCode(string code) - удаление кода
- updateBusinessDescription(string description) - обновление описания

C. Финансовые функции:

- receive() - прием ETH
- receiveERC20(address token, uint256 amount) - прием токенов
- getBalance() - получение баланса
- distributePayment(address[] recipients, uint256[] amounts) - распределение
- mintTokens(address to, uint256 amount) - эмиссия токенов
- transferTokens(address to, uint256 amount) - передача токенов
- getTotalSupply() - общее количество токенов

D. Функции управления:

- createProposal(string title, string description, ProposalType type) - создание предложения
- vote(uint256 proposalId, bool support) - голосование
- executeProposal(uint256 proposalId) - выполнение предложения
- cancelProposal(uint256 proposalId) - отмена предложения
- getProposalStatus(uint256 proposalId) - статус предложения
- getVotingPower(address account) - голосующая сила

E. Функции участия в других DLE:

- participateInDLE(address dleAddress, uint256 tokens) - участие в другом DLE
- voteInOtherDLE(address dleAddress, uint256 proposalId, bool support) - голосование в другом DLE
- getParticipation(address dleAddress) - получение информации об участии
- withdrawFromDLE(address dleAddress, uint256 tokens) - выход из DLE

F. Функции мультиподписи:

- requireMultiSignature(bytes32 operationId, uint256 requiredSignatures) - требование мультиподписи
- signOperation(bytes32 operationId) - подписание операции
- getSignatureCount(bytes32 operationId) - количество подписей
- addAuthorizedSigner(address signer) - добавление подписанта
- removeAuthorizedSigner(address signer) - удаление подписанта

G. Коммуникационные функции:

- sendMessage(string message, string senderInfo) - отправка сообщения
- respondToMessage(uint256 messageId, string response) - ответ на сообщение
- initiateCall(string callerInfo, string purpose) - запрос звонка
- acceptCall(uint256 callId, string response) - принятие звонка
- rejectCall(uint256 callId, string reason) - отклонение звонка

🧩 Модули для настройки смарт-контракта

Базовые модули:

Модуль 1: Управление токенами

Функции:
- Эмиссия новых токенов
- Сжигание токенов
- Замораживание/размораживание токенов
- Делегирование голосов
- Настройка прав доступа

Настройки:
- Максимальное количество токенов
- Минимальный баланс для голосования
- Период блокировки токенов
- Комиссии за операции

Модуль 2: Система голосования

Функции:
- Создание различных типов предложений
- Настройка параметров голосования
- Автоматическое выполнение решений
- Отмена предложений
- Делегирование голосов

Настройки:
- Кворум для разных типов решений
- Период голосования
- Задержка выполнения
- Порог для создания предложений

Модуль 3: Мультиподпись

Функции:
- Настройка количества подписей
- Управление подписантами
- Временные ограничения
- Отмена подписей
- Автоматическое выполнение

Настройки:
- Количество требуемых подписей
- Список авторизованных подписантов
- Время действия подписей
- Типы операций, требующие мультиподписи

Модуль 4: Финансовое управление

Функции:
- Управление балансами
- Распределение дивидендов
- Инвестирование средств
- Конвертация валют
- Управление портфелем

Настройки:
- Автоматическое распределение дивидендов
- Инвестиционные лимиты
- Валютные пары для конвертации
- Комиссии за операции

Модуль 5: Участие в других DLE

Функции:
- Покупка токенов других DLE
- Голосование в других DLE
- Управление портфелем участий
- Автоматическое голосование
- Отчетность по участиям

Настройки:
- Лимиты на участие в других DLE
- Стратегии голосования
- Автоматические действия
- Уведомления о важных событиях

Модуль 6: Коммуникация

Функции:
- Управление сообщениями
- Настройка уведомлений
- Автоматические ответы
- Интеграция с внешними сервисами
- Архив коммуникаций

Настройки:
- Автоматические ответы
- Фильтры сообщений
- Интеграции (email, telegram, slack)
- Шаблоны ответов

Модуль 7: Безопасность

Функции:
- Многофакторная аутентификация
- Временные блокировки
- Аудит операций
- Восстановление доступа
- Мониторинг безопасности

Настройки:
- Уровни безопасности
- Временные ограничения
- Список доверенных адресов
- Автоматические блокировки

Модуль 8: Отчетность

Функции:
- Генерация финансовых отчетов
- Отчеты о голосованиях
- Отчеты об участиях
- Налоговая отчетность
- Экспорт данных

Настройки:
- Периодичность отчетов
- Форматы экспорта
- Автоматическая отправка
- Шаблоны отчетов

🔄 Интеграция модулей

Связи между модулями:

Управление токенами ↔ Система голосования
Финансовое управление ↔ Участие в других DLE
Мультиподпись ↔ Все критические операции
Безопасность ↔ Все модули
Отчетность ↔ Все модули
Коммуникация ↔ Все модули

Настройка модулей:

1. Активация/деактивация модулей
2. Настройка параметров каждого модуля
3. Установка связей между модулями
4. Тестирование функциональности
5. Развертывание в production

🎯 Ключевые особенности DLE

1. Единый идентификатор:

  • Адрес смарт-контракта = ИНН организации
  • Все функции доступны через один адрес
  • Полная прозрачность всех операций

2. Автоматизация:

  • Автоматическое выполнение решений
  • Автоматическое распределение дивидендов
  • Автоматическая отчетность

3. Безопасность:

  • Мультиподпись для критических операций
  • Временные задержки для важных решений
  • Полный аудит в блокчейне

4. Масштабируемость:

  • Участие в неограниченном количестве других DLE
  • Настраиваемые параметры для разных типов операций
  • Модульная архитектура для добавления новых функций

🏆 Преимущества DLE над традиционным АО

Эффективность:

  • Мгновенные платежи и переводы
  • Автоматическое выполнение решений
  • Снижение бюрократических процедур

Прозрачность:

  • Все операции видны в блокчейне
  • Невозможность подделки документов
  • Полная история всех действий

Глобальность:

  • Работа без границ
  • Участие в международных проектах
  • Мультивалютные операции

Инновационность:

  • Интеграция с DeFi протоколами
  • Участие в DAO экосистеме
  • Доступ к новым финансовым инструментам