Files
DLE/backend/docs/AUTO_VERIFICATION.md

5.2 KiB
Raw Blame History

Автоматическая верификация контрактов

Обзор

Автоматическая верификация контрактов интегрирована в процесс деплоя DLE. После успешного деплоя контрактов во всех выбранных сетях, система автоматически запускает процесс верификации на соответствующих блокчейн-эксплорерах.

Как это работает

  1. Настройка в форме деплоя: В форме деплоя DLE есть чекбокс "Авто-верификация после деплоя" (по умолчанию включен)
  2. Деплой контрактов: Система разворачивает DLE контракты во всех выбранных сетях
  3. Автоматическая верификация: Если autoVerifyAfterDeploy = true, система автоматически запускает верификацию
  4. Результаты: Статус верификации отображается в логах деплоя

Поддерживаемые сети

Автоматическая верификация работает для всех сетей, настроенных в hardhat.config.js:

  • Sepolia (Ethereum testnet)
  • Holesky (Ethereum testnet)
  • Arbitrum Sepolia
  • Base Sepolia
  • И другие сети (настраиваются в конфиге)

Требования

  1. Etherscan API ключ: Должен быть указан в форме деплоя
  2. Права на запись: Приватный ключ должен иметь права на деплой контрактов
  3. Сеть доступна: RPC провайдеры для всех выбранных сетей должны быть доступны

Логи и мониторинг

В логах деплоя вы увидите:

[MULTI_DBG] autoVerifyAfterDeploy: true
[MULTI_DBG] Starting automatic contract verification...
🔍 Верификация в сети sepolia (chainId: 11155111)
✅ Верификация успешна: https://sepolia.etherscan.io/address/0x...
[MULTI_DBG] ✅ Automatic verification completed successfully

Статусы верификации:

  • verified - контракт успешно верифицирован
  • verification_failed - ошибка верификации
  • disabled - верификация отключена
  • already_verified - контракт уже был верифицирован ранее

Отключение автоматической верификации

Если вы хотите отключить автоматическую верификацию:

  1. В форме деплоя снимите галочку "Авто-верификация после деплоя"
  2. Или установите autoVerifyAfterDeploy: false в настройках

Ручная верификация

Если автоматическая верификация не сработала, вы можете запустить верификацию вручную:

# В Docker контейнере
docker exec dapp-backend node scripts/verify-with-hardhat-v2.js

# Или через npm скрипт
docker exec dapp-backend npm run verify:contracts

Техническая реализация

Автоматическая верификация интегрирована в backend/scripts/deploy/deploy-multichain.js:

if (params.autoVerifyAfterDeploy) {
  console.log('[MULTI_DBG] Starting automatic contract verification...');
  
  try {
    const { verifyContracts } = require('../verify-with-hardhat-v2');
    await verifyContracts();
    verificationResults = networks.map(() => 'verified');
    console.log('[MULTI_DBG] ✅ Automatic verification completed successfully');
  } catch (verificationError) {
    console.error('[MULTI_DBG] ❌ Automatic verification failed:', verificationError.message);
    verificationResults = networks.map(() => 'verification_failed');
  }
}

Устранение проблем

Ошибка "Contract already verified"

Это нормально - контракт уже был верифицирован ранее.

Ошибка "Rate limit exceeded"

Система автоматически добавляет задержки между запросами к разным сетям.

Ошибка "Network not supported"

Убедитесь, что сеть настроена в hardhat.config.js и имеет правильный Etherscan API URL.

Преимущества

  1. Автоматизация: Не нужно запускать верификацию вручную
  2. Надежность: Верификация происходит сразу после деплоя
  3. Мультисеть: Верификация во всех развернутых сетях одновременно
  4. Мониторинг: Полная видимость процесса через логи
  5. Интеграция: Единый процесс деплоя и верификации