ConfigureNetwork.s.sol


Обзор

Файл ConfigureNetwork.s.sol представляет собой скрипт на языке Solidity, предназначенный для настройки параметров игровой сети, включающей токен MANA и связанные игровые контракты. Основная задача скрипта — задать и задокументировать экономические, операционные и параметры безопасности для оптимальной работы игрового протокола. Кроме того, скрипт генерирует конфигурационные файлы и скрипты мониторинга сети, которые используются вне блокчейна для поддержки и слежения за состоянием системы.

Этот контракт расширяет функциональность Script из Forge Std, что позволяет запускать конфигурационные операции в тестовых и локальных средах.


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

EconomicParameters

Структура, описывающая экономические параметры игровой сети:

Поле

Описание

baseManaReward

Базовое вознаграждение за игровые действия (в wei MANA)

levelUpManaCost

Стоимость повышения уровня персонажа (в wei MANA)

craftingManaCost

Базовая стоимость крафта (в wei MANA)

pvpEntryFee

Вступительный взнос для PvP боёв (в wei MANA)

validatorCommission

Комиссия валидаторов в базисных пунктах (100 б.п. = 1%)

stakingRewardRate

Годовая ставка вознаграждения стейкинга (%)

slashingPenalty

Штраф за слашинг (%)

marketplaceFee

Торговая комиссия маркетплейса в базисных пунктах


OperationalParameters

Структура, описывающая операционные параметры сети:

Поле

Описание

batchSize

Максимальное число действий в одном батче

batchTimeout

Таймаут батча в секундах

consensusTimeout

Таймаут достижения консенсуса в секундах

epochDuration

Длительность эпохи (периода) в секундах

minValidators

Минимальное количество валидаторов

maxValidators

Максимальное количество валидаторов

quorumPercentage

Процент кворума (0-100), необходимый для консенсуса


SecurityParameters

Структура, описывающая параметры безопасности:

Поле

Описание

maxActionValue

Максимальное значение за одно действие (в wei MANA)

dailyActionLimit

Лимит действий в день на одного игрока

suspiciousThreshold

Порог подозрительной активности (действия в минуту)

emergencyPauseDelay

Задержка перед экстренной паузой (в секундах)


Класс ConfigureNetwork

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


Методы

run() external

Основная точка входа. Последовательность действий:

  1. Выводит лог начала конфигурации.

  2. Загружает адреса ключевых контрактов: ManaToken, GameManager, ManaSettlement.

  3. Получает параметры конфигурации из внутренних функций.

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

  5. Вызывает методы конфигурирования по группам параметров.

  6. Останавливает broadcast.

  7. Генерирует конфигурационные файлы (текстовый .env и JSON).

  8. Создаёт скрипты мониторинга сети.

  9. Выводит итоговые сообщения о завершении.


getManaTokenAddress() internal view returns (address)

Возвращает адрес контракта токена MANA, используя функцию getContractAddress.


getGameManagerAddress() internal view returns (address)

Возвращает адрес контракта GameManager.


getManaSettlementAddress() internal view returns (address)

Возвращает адрес контракта ManaSettlement.


getContractAddress(string memory contractName) internal view returns (address)


getEconomicParameters() internal pure returns (EconomicParameters memory)

Возвращает предопределённый набор экономических параметров, например:


getOperationalParameters() internal pure returns (OperationalParameters memory)

Возвращает предопределённый набор параметров для управления сетью, например:


getSecurityParameters() internal pure returns (SecurityParameters memory)

Возвращает параметры безопасности, например:


configureEconomicParameters(address manaTokenAddr, address gameManagerAddr, EconomicParameters memory params) internal


configureOperationalParameters(address gameManagerAddr, OperationalParameters memory params) internal


configureSecurityParameters(address gameManagerAddr, SecurityParameters memory params) internal


generateConfigurationFiles(EconomicParameters memory economicParams, OperationalParameters memory operationalParams, SecurityParameters memory securityParams) internal

Генерирует и записывает в файловую систему два файла:

Использует vm.writeFile для записи файлов.


createMonitoringScripts() internal

Создаёт два скрипта на Bash:

Скрипты содержат шаблоны с комментариями, где можно добавить логику проверки и сбора данных.


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


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


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

Для запуска конфигурации достаточно выполнить скрипт с помощью Forge:

forge script ConfigureNetwork.s.sol:ConfigureNetwork --broadcast

В результате:


Диаграмма структуры класса ConfigureNetwork

classDiagram
    class ConfigureNetwork {
        +run()
        -getManaTokenAddress() address
        -getGameManagerAddress() address
        -getManaSettlementAddress() address
        -getContractAddress(string) address
        -getEconomicParameters() EconomicParameters
        -getOperationalParameters() OperationalParameters
        -getSecurityParameters() SecurityParameters
        -configureEconomicParameters(address, address, EconomicParameters)
        -configureOperationalParameters(address, OperationalParameters)
        -configureSecurityParameters(address, SecurityParameters)
        -generateConfigurationFiles(EconomicParameters, OperationalParameters, SecurityParameters)
        -createMonitoringScripts()
    }
    
    class EconomicParameters {
        +baseManaReward: uint256
        +levelUpManaCost: uint256
        +craftingManaCost: uint256
        +pvpEntryFee: uint256
        +validatorCommission: uint256
        +stakingRewardRate: uint256
        +slashingPenalty: uint256
        +marketplaceFee: uint256
    }
    
    class OperationalParameters {
        +batchSize: uint256
        +batchTimeout: uint256
        +consensusTimeout: uint256
        +epochDuration: uint256
        +minValidators: uint256
        +maxValidators: uint256
        +quorumPercentage: uint256
    }
    
    class SecurityParameters {
        +maxActionValue: uint256
        +dailyActionLimit: uint256
        +suspiciousThreshold: uint256
        +emergencyPauseDelay: uint256
    }
    
    ConfigureNetwork o-- EconomicParameters
    ConfigureNetwork o-- OperationalParameters
    ConfigureNetwork o-- SecurityParameters

Заключение

ConfigureNetwork.s.sol — критически важный скрипт для централизованной и стандартизированной настройки параметров игровой сети с токеном MANA. Он помогает разработчикам и администраторам быстро и прозрачно конфигурировать и документировать ключевые параметры, а также обеспечивает создание вспомогательных инструментов для мониторинга и управления сетью. Несмотря на то, что прямое изменение параметров в смарт-контрактах пока не реализовано, архитектура легко расширяема и хорошо интегрируется с инфраструктурой Forge и внешними системами.

---

Если необходимы дополнительные пояснения или примеры, пожалуйста, сообщите.