DeployProduction.s.sol

Обзор

DeployProduction.s.sol — это скрипт развертывания на языке Solidity, предназначенный для выполнения производственного (production) развертывания смарт-контрактов с использованием сетевых конфигураций. Скрипт интегрируется с системой Forge (forge-std), что позволяет автоматически подставлять параметры сети, валидировать их, запускать основной скрипт развертывания игровых контрактов и сохранять результаты развертывания в виде артефактов и конфигурационных файлов. Основная цель — упростить и стандартизировать процесс развертывания для различных сетей, учитывая особенности каждой из них (например, основной сети, тестовых сетей и локальной сети).


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

Контракт DeployProduction

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

Свойства:


Основные методы

run()

function run() external returns (DeployGameContracts.DeployedContracts memory)
DeployProduction deployer = new DeployProduction();
DeployGameContracts.DeployedContracts memory deployedContracts = deployer.run();

validateDeploymentParams()

function validateDeploymentParams(NetworkConfig.Config memory config) internal pure

saveDeploymentArtifacts()

function saveDeploymentArtifacts(
    DeployGameContracts.DeployedContracts memory deployed,
    NetworkConfig.Config memory config
) internal

generateNetworkConfig()

function generateNetworkConfig(
    DeployGameContracts.DeployedContracts memory deployed,
    NetworkConfig.Config memory config
) internal

generateABIFiles()

function generateABIFiles(DeployGameContracts.DeployedContracts memory deployed) internal

getNetworkName()

function getNetworkName(uint256 chainId) internal pure returns (string memory)

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


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


Пример рабочего процесса

flowchart TD
    A[Запуск run()] --> B[Инициализация NetworkConfig]
    B --> C[Получение текущей конфигурации]
    C --> D[Вывод параметров в консоль]
    D --> E[Валидация параметров]
    E --> F[Установка переменных окружения]
    F --> G[Вызов DeployGameContracts.run()]
    G --> H[Получение адресов развернутых контрактов]
    H --> I[Сохранение артефактов JSON]
    I --> J[Генерация .env файла]
    J --> K[Генерация ABI файлов]
    K --> L[Завершение скрипта с выводом в консоль]

Диаграмма классов

classDiagram
    class DeployProduction {
        -NetworkConfig networkConfig
        +run() DeployGameContracts.DeployedContracts
        -validateDeploymentParams(NetworkConfig.Config config)
        -saveDeploymentArtifacts(DeployGameContracts.DeployedContracts deployed, NetworkConfig.Config config)
        -generateNetworkConfig(DeployGameContracts.DeployedContracts deployed, NetworkConfig.Config config)
        -generateABIFiles(DeployGameContracts.DeployedContracts deployed)
        -getNetworkName(uint256 chainId) string
    }

    DeployProduction ..> NetworkConfig : uses
    DeployProduction ..> DeployGameContracts : uses
    DeployProduction ..|> Script

Заключение

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