106 lines
5.2 KiB
Markdown
106 lines
5.2 KiB
Markdown
# Автоматическая верификация контрактов
|
||
|
||
## Обзор
|
||
|
||
Автоматическая верификация контрактов интегрирована в процесс деплоя 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` в настройках
|
||
|
||
## Ручная верификация
|
||
|
||
Если автоматическая верификация не сработала, вы можете запустить верификацию вручную:
|
||
|
||
```bash
|
||
# В 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`:
|
||
|
||
```javascript
|
||
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. **Интеграция**: Единый процесс деплоя и верификации
|