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

This commit is contained in:
2025-07-18 11:59:17 +03:00
parent 2ca2827b7d
commit 1a4f2283b7
19 changed files with 5105 additions and 69 deletions

View File

@@ -0,0 +1,801 @@
# DLE Governance System - Документация
## 📋 Обзор системы
DLE (Digital Legal Entity) - это система управления цифровым юридическим лицом с использованием смарт-контрактов и токенов управления. Система включает в себя механизмы голосования, мультиподписи и административного управления.
## 🏗️ Архитектура системы
### Текущие смарт-контракты
#### 1. GovernanceToken.sol
```solidity
contract GovernanceToken is ERC20Permit, ERC20Votes, Ownable {
// Основные функции:
- mintInitialSupply(address[] partners, uint256[] amounts) // Начальное распределение токенов
- transfer() // Передача токенов
- balanceOf() // Проверка баланса
- getVotes() // Получение голосов на определенном блоке
}
```
#### 2. GovernanceTimelock.sol
```solidity
contract GovernanceTimelock is TimelockController {
// Основные функции:
- queue() // Постановка операции в очередь
- execute() // Выполнение операции после задержки
- cancel() // Отмена операции
}
```
#### 3. GovernorContract.sol
```solidity
contract GovernorContract is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {
// Основные функции:
- propose() // Создание предложения
- vote() // Голосование
- execute() // Выполнение предложения
- cancel() // Отмена предложения
}
```
### Текущие параметры системы
- **Порог предложения**: 100,000 GT
- **Кворум**: 4% от общего количества токенов
- **Задержка голосования**: 1 день
- **Период голосования**: 7 дней
- **Минимальная задержка Timelock**: 2 дня
## 🔧 Функции приложения
### Критические функции (требуют голосования)
#### 🚨 УДАЛЕНИЕ ДАННЫХ
##### Пользователи
```javascript
// Удаление пользователя
DELETE /api/users/:id
- Описание: Полное удаление пользователя и всех связанных данных
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
// Блокировка пользователя
PATCH /api/users/:id/block
- Описание: Блокировка пользователя в системе
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
```
##### Таблицы
```javascript
// Удаление таблицы
DELETE /api/tables/:id
- Описание: Удаление таблицы и всех связанных данных
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
// Удаление строк таблицы
DELETE /api/tables/:id/rows
- Описание: Массовое удаление строк
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
// Удаление столбцов таблицы
DELETE /api/tables/:id/columns
- Описание: Удаление столбцов таблицы
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
```
##### DLE (Digital Legal Entity)
```javascript
// Удаление DLE
DELETE /api/dle/:tokenAddress
- Описание: Удаление DLE по адресу токена
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
// Удаление пустого DLE
DELETE /api/dle/empty/:fileName
- Описание: Удаление пустого DLE по имени файла
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
```
##### Системные настройки
```javascript
// Удаление 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
```javascript
// Создание нового DLE
POST /api/dle
- Описание: Создание нового Digital Legal Entity
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
- Параметры: name, symbol, location, isicCodes, partners, amounts, network, etc.
```
##### Таблицы
```javascript
// Создание таблицы
POST /api/tables
- Описание: Создание новой таблицы
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
```
##### Системные настройки
```javascript
// Добавление RPC провайдера
POST /api/settings/rpc
- Описание: Добавление нового RPC провайдера
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
// Добавление токена аутентификации
POST /api/settings/auth-token
- Описание: Добавление нового токена для аутентификации
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
```
#### ⚙️ ИЗМЕНЕНИЕ СИСТЕМНЫХ НАСТРОЕК
##### База данных
```javascript
// Изменение настроек БД
PUT /api/settings/db-settings
- Описание: Изменение параметров подключения к базе данных
- Критичность: 🔴 ВЫСОКАЯ
- Требует голосования: ДА
- Параметры: db_host, db_port, db_name, db_user, db_password
```
##### AI настройки
```javascript
// Изменение настроек AI ассистента
PUT /api/settings/ai-assistant
- Описание: Изменение глобальных настроек AI ассистента
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
// Изменение AI провайдера
PUT /api/settings/ai-settings/:provider
- Описание: Изменение настроек конкретного AI провайдера
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
```
##### Коммуникации
```javascript
// Настройки Email
PUT /api/identities/email-settings
- Описание: Изменение настроек SMTP/IMAP
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
// Настройки Telegram
PUT /api/identities/telegram-settings
- Описание: Изменение настроек Telegram бота
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ДА
```
### Умеренные функции (опциональное голосование)
#### 📝 РЕДАКТИРОВАНИЕ ДАННЫХ
```javascript
// Редактирование пользователя
PATCH /api/users/:id
- Описание: Изменение данных пользователя
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ОПЦИОНАЛЬНО
// Редактирование таблицы
PATCH /api/tables/:id
- Описание: Изменение структуры таблицы
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ОПЦИОНАЛЬНО
// Импорт пользователей
POST /api/users/import
- Описание: Массовый импорт пользователей
- Критичность: 🟡 СРЕДНЯЯ
- Требует голосования: ОПЦИОНАЛЬНО
```
### Обычные функции (не требуют голосования)
#### 📖 ПРОСМОТР ДАННЫХ
```javascript
// Список пользователей
GET /api/users
- Описание: Получение списка пользователей
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ
// Список таблиц
GET /api/tables
- Описание: Получение списка таблиц
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ
// Список DLE
GET /api/dle
- Описание: Получение списка DLE
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ
// Детали пользователя
GET /api/users/:id
- Описание: Получение детальной информации о пользователе
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ
```
#### ✏️ РЕДАКТИРОВАНИЕ ЯЧЕЕК
```javascript
// Изменение значения ячейки
PATCH /api/tables/cell
- Описание: Изменение значения конкретной ячейки таблицы
- Критичность: 🟢 НИЗКАЯ
- Требует голосования: НЕТ
```
## 🎯 Система голосования
### Текущая реализация
#### Процесс голосования
1. **Создание предложения** - пользователь с достаточным количеством токенов создает предложение
2. **Период голосования** - 7 дней для голосования
3. **Подсчет голосов** - проверка кворума (4% от общего количества токенов)
4. **Постановка в очередь** - успешные предложения ставятся в очередь Timelock
5. **Выполнение** - после задержки (2 дня) предложение выполняется
#### Параметры голосования
- **Порог для создания предложений**: 100,000 GT
- **Кворум**: 4% от общего количества токенов
- **Задержка голосования**: 1 день (в блоках)
- **Период голосования**: 7 дней (в блоках)
- **Минимальная задержка Timelock**: 2 дня
### Предлагаемые улучшения
#### Новый модуль: AdminGovernanceModule
```solidity
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);
}
```
#### Типы административных действий
```solidity
// Критические действия (обязательное голосование)
"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" // Импорт пользователей
```
## 🔐 Система доступа
### Текущая система ролей
#### Роли пользователей
- **Администратор** - полный доступ ко всем функциям
- **Пользователь** - ограниченный доступ
#### Проверка прав
```javascript
// 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: 'Доступ запрещен' });
}
```
### Предлагаемая система доступа с токенами
#### Проверка через смарт-контракт
```solidity
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. **Прием платежей** - прием оплаты в выбранных токенах
#### Предлагаемый модуль: Административное голосование
```javascript
{
name: 'Административное голосование',
description: 'Добавляет систему голосования для административных действий',
installed: false,
features: [
'Голосование за удаление пользователей',
'Голосование за создание таблиц',
'Голосование за изменение системных настроек',
'Интеграция с существующими контрактами DLE'
]
}
```
## 🚀 План реализации
### Этап 1: Анализ и проектирование
- [x] Анализ текущих функций приложения
- [x] Определение критических операций
- [x] Проектирование архитектуры системы голосования
### Этап 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. Функции идентификации:**
```solidity
- getName() - получение названия
- getSymbol() - получение символа
- getContractAddress() - получение адреса (ИНН)
- getBusinessDescription() - получение описания
- getLegalAddress() - получение юр. адреса
- getContactInfo() - получение контактов
```
#### **B. Функции кодов деятельности:**
```solidity
- getIsicCodes() - получение кодов ISIC
- addIsicCode(string code) - добавление кода
- removeIsicCode(string code) - удаление кода
- updateBusinessDescription(string description) - обновление описания
```
#### **C. Финансовые функции:**
```solidity
- 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. Функции управления:**
```solidity
- 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:**
```solidity
- participateInDLE(address dleAddress, uint256 tokens) - участие в другом DLE
- voteInOtherDLE(address dleAddress, uint256 proposalId, bool support) - голосование в другом DLE
- getParticipation(address dleAddress) - получение информации об участии
- withdrawFromDLE(address dleAddress, uint256 tokens) - выход из DLE
```
#### **F. Функции мультиподписи:**
```solidity
- requireMultiSignature(bytes32 operationId, uint256 requiredSignatures) - требование мультиподписи
- signOperation(bytes32 operationId) - подписание операции
- getSignatureCount(bytes32 operationId) - количество подписей
- addAuthorizedSigner(address signer) - добавление подписанта
- removeAuthorizedSigner(address signer) - удаление подписанта
```
#### **G. Коммуникационные функции:**
```solidity
- 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 экосистеме
- Доступ к новым финансовым инструментам