ConfigureManaStaking.s.sol


Обзор файла

Файл ConfigureManaStaking.s.sol представляет собой скрипт на языке Solidity, предназначенный для настройки токена MANA с целью его использования в системе стекинга валидаторов Symbiotic. Скрипт упрощает конфигурацию параметров стекинга, управление ролями и создание тестовых ставок для валидаторов, а также генерирует документацию, описывающую параметры и требования к стекингу.

Основная задача файла — подготовить токен MANA к взаимодействию с инфраструктурой стекинга Symbiotic, обеспечивая корректную настройку параметров и создание базовых тестовых данных.


Подробное описание

Контракт ConfigureManaStaking

Контракт наследует Script из forge-std, что позволяет запускать его как скрипт для автоматизации процессов развертывания и настройки.

Структура данных

struct StakingConfig {
    uint256 minStake;
    uint256 maxStake;
    uint256 slashingPercentage;
    uint256 unavailabilitySlashing;
    uint256 unstakingDelay;
    uint256 rewardRate;
}

Основные функции

run() external

Главная функция скрипта, выполняющая поэтапную конфигурацию:

  1. Загрузка адреса токена MANA.

  2. Вывод текущего состояния токена.

  3. Получение параметров стекинга.

  4. Запуск режима записи транзакций (vm.startBroadcast()).

  5. Конфигурация параметров стекинга.

  6. Настройка ролей для стекинга.

  7. Создание тестовых ставок для валидаторов.

  8. Остановка режима записи транзакций (vm.stopBroadcast()).

  9. Генерация документации по стекингу.

Использование
forge script ConfigureManaStaking.s.sol --broadcast

getManaTokenAddress() internal view returns (address)

Возвращает адрес контракта MANA токена. Логика выбора адреса:


getStakingConfig() internal pure returns (StakingConfig memory)

Возвращает жестко заданную конфигурацию параметров стекинга.

Пример возвращаемых значений:


configureStakingParameters(ManaToken manaToken, StakingConfig memory config) internal

Выводит текущие параметры стекинга в консоль. Реальная настройка параметров в контракте управления стекингом (например, StakingManager) пока не реализована — здесь только логирование.


setupStakingRoles(ManaToken manaToken) internal

Подготавливает токен для интеграции с менеджером стекинга (роль STAKING_MANAGER_ROLE). На данном этапе выполняется только логирование о готовности.


createTestValidatorStakes(ManaToken manaToken, StakingConfig memory config) internal

Создает три тестовых валидатора с начальными ставками, равными 5-кратному минимальному стекингу. Для каждого валидатора:

Пример адресов валидаторов жестко зашит в коде.


generateStakingDocumentation(StakingConfig memory config) internal

Генерирует и сохраняет два файла документации:

  1. ./docs/mana-staking-guide.md — руководство по стекингу токена MANA с описанием параметров, условий штрафов, требований к валидаторам и экономике вознаграждений.

  2. ./validators/validator-config-template.env — шаблон конфигурационного файла для валидатора с предустановленными параметрами и плейсхолдерами.


Важные детали реализации


Взаимодействие с другими частями системы


Пример использования

// Запуск настройки и создания тестовых ставок
ConfigureManaStaking configure = new ConfigureManaStaking();
configure.run();

Диаграмма структуры контракта

classDiagram
    class ConfigureManaStaking {
        +run()
        -getManaTokenAddress() address
        -getStakingConfig() StakingConfig
        -configureStakingParameters(ManaToken, StakingConfig)
        -setupStakingRoles(ManaToken)
        -createTestValidatorStakes(ManaToken, StakingConfig)
        -generateStakingDocumentation(StakingConfig)
    }
    
    class StakingConfig {
        +uint256 minStake
        +uint256 maxStake
        +uint256 slashingPercentage
        +uint256 unavailabilitySlashing
        +uint256 unstakingDelay
        +uint256 rewardRate
    }
    
    ConfigureManaStaking --> StakingConfig
    ConfigureManaStaking ..> ManaToken : interacts with

Итог

Файл ConfigureManaStaking.s.sol — это автоматизированный скрипт для подготовки токена MANA к работе в экосистеме стекинга Symbiotic. Он облегчает настройку параметров, управление правами и создание тестовых данных, а также обеспечивает генерацию полезной документации для разработчиков и операторов валидаторов. В дальнейшем этот скрипт может быть расширен для полноценного взаимодействия с контрактами стекинга и автоматизации полного цикла развертывания.


Если необходимы дополнительные пояснения или примеры по интеграции — готов предоставить.