Blockchain

Hardhat verify 작동 원리에 대하여

주인장 꼬비 2024. 2. 24. 03:15

Hardhat는 이더리움 스마트 컨트랙트 개발을 위한 도구로, 테스트, 배포, 디버깅 등의 기능을 제공한다. 그중 `hardhat verify`는 Hardhat에서 제공하는 명령어 중 하나로, 이더리움 블록체인 상에 배포된 스마트 컨트랙트의 소스 코드를 확인하고 검증하는 작업을 수행한다. 다만 Hardhat의 `verify` 명령어는 스마트 컨트랙트의 소스 코드가 실제로 배포된 바이트코드와 일치하는지를 검증하는 것이 아니라, 외부 서비스인 이더스캔과 같은 검증 서비스에 컨트랙트 정보를 제출하여 검증을 요청한다.

 

 

이더스캔을 예시로 들면 다음의 과정으로 verify 가 진행된다.

1. 사용자가 `hardhat verify` 명령어를 사용하여 컨트랙트 정보를 Hardhat에 전달한다.
2. Hardhat은 사용자가 제공한 컨트랙트 정보를 기반으로 이더스캔에 컨트랙트가 이미 검증되었는지 확인한다.

(https://docs.etherscan.io/api-endpoints/contracts#get-contract-source-code-for-verified-contract-source-codes)


3. 컨트랙트가 이미 검증되었다면 Hardhat은 더 이상의 작업을 수행하지 않고 사용자에게 그 결과를 반환한다.
4. 컨트랙트가 검증되지 않은 경우, Hardhat은 이더스캔에 컨트랙트 정보를 제출하여 검증을 요청한다.

(https://docs.etherscan.io/api-endpoints/contracts#verify-source-code)


5. 이더스캔 검증 서비스는 제출된 컨트랙트 정보를 기반으로 컨트랙트의 소스 코드를 확인하고 검증한다.
6. 검증 결과가 바로 나오는 것이 아니라서 이더스캔은 검증 결과를 확인할 수 있는 GUID를 Hardhat에게 알려준다. 검증은 대략 30s ~ 60s 정도 걸린다. 
7. Hardhat은 이 GUID를 사용자에게 반환하여 사용자가 컨트랙트의 검증 상태를 확인할 수 있게 한다.

(https://docs.etherscan.io/api-endpoints/contracts#check-source-code-verification-submission-status)

 

 


이러한 과정을 통해 Hardhat verify가 진행된다. 다만 Hardhat verify는 이더스캔과 같은 *scan.com 사이트나 sourcify 만 지원되고 이외의 익스플로어와는 상호작용이 되지 않는다. (이더스캔과 같은 request/response 의 API 를 만들고 hardhat.config.ts 파일에 체인과 apiURL을 추가하면 hardhat verify 를 사용할 수 있을 것 같다.)

 

'Blockchain' 카테고리의 다른 글

ERC4337 - Bundler 사용하기 (삽질중)  (0) 2024.05.12
Polygon zkEVM 관련 메모  (0) 2024.02.16
[Klaytn] Klaytn EN 무작정 띄워보기  (0) 2022.09.01