LocalDeploy.s.sol

Обзор

LocalDeploy.s.sol — это скрипт быстрого локального деплоя смарт-контрактов для целей разработки и тестирования. Он автоматизирует процесс развертывания основных контрактов игровой экосистемы, их настройку и генерацию конфигурационных файлов для взаимодействия с оффчейн компонентами (например, игровым нодом). Скрипт предназначен для использования с инструментарием Foundry (forge) и локальной сетью Anvil.

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


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

Контракт LocalDeploy

Наследуется от Script из библиотеки Foundry forge-std. Основная точка входа — функция run(), которая выполняет весь процесс деплоя и настройки.

Методы


function run() external

Описание:
Главный метод, вызываемый при запуске скрипта. Выполняет следующие шаги:

Параметры: отсутствуют.

Возвращаемое значение: отсутствует.

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

forge script script/LocalDeploy.s.sol --broadcast --rpc-url http://localhost:8545

function generateOffChainConfig(DeployGameContracts.DeployedContracts memory contracts) internal

Описание:
Вспомогательный метод для генерации конфигурационного файла .env.local для оффчейн компонентов (например, игрового нода). В файле прописываются URL RPC, адреса контрактов, приватный ключ для локальной сети и уровень логирования.

Параметры:

Возвращаемое значение: отсутствует.

Использование: вызывается из run() после деплоя.


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


Взаимодействие с другими файлами и компонентами


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

classDiagram
    class LocalDeploy {
        +run()
        -generateOffChainConfig(DeployGameContracts.DeployedContracts)
    }

    class ManaToken {
        +constructor(address)
        +grantRole(bytes32, address)
        +mint(address, uint256)
        +GAME_MANAGER_ROLE() view returns (bytes32)
    }

    class ManaSettlement {
        +constructor(address)
        +initialize(address, address)
    }

    class GameManager {
        +constructor(address, address, address)
    }

    class DeployGameContracts {
        class DeployedContracts {
            +manaToken: address
            +gameManager: address
            +manaSettlement: address
        }
    }

    LocalDeploy --> ManaToken
    LocalDeploy --> ManaSettlement
    LocalDeploy --> GameManager
    LocalDeploy --> DeployGameContracts.DeployedContracts

Резюме

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


Инструкции по запуску

  1. Запустить локальный RPC-узел Anvil:

    anvil
    
  2. Выполнить скрипт деплоя:

    forge script script/LocalDeploy.s.sol --broadcast --rpc-url http://localhost:8545
    
  3. Запустить игровой нод оффчейн:

    cd off-chain && make run-game-node
    
  4. Запустить демо-клиент для тестирования.


Если необходима дополнительная помощь по работе с этим скриптом, рекомендуется ознакомиться с документацией Foundry и исходным кодом смарт-контрактов.