bootstrap 또는 apply로 컨트랙트를 배포한 후에는 verify 명령을 사용하여 Etherscan 또는 Blockscout와 같은 블록 탐색기에서 소스 코드를 검증할 수 있습니다. 이 명령은 forge verify-contract 바이너리를 사용하며, 생성자 인수 감지와 소스 코드 검증을 자동으로 처리합니다.
사용법
verify 명령은 다음과 같이 호출할 수 있습니다.
CLI 인수
--l1-rpc-url
배포할 L1 체인의 RPC URL을 정의합니다(현재 mainnet과 sepolia만 지원).
--input-file
입력 파일의 전체 경로입니다. 다음 중 하나일 수 있습니다.
- 컨트랙트 이름/주소 쌍이 포함된 단순 JSON 파일(
bootstrap superchain|implementations의 출력) - 전체
state.json파일(apply의 출력)
--contract-name 플래그를 전달하지 않으면 입력 파일의 모든 컨트랙트가 검증됩니다.
예시:
--contract-name(선택 사항)
검증할 단일 컨트랙트 이름을 지정하며, 입력 파일 내의 컨트랙트 키와 일치해야 합니다. 지정하지 않으면 입력 파일의 모든 컨트랙트가 검증됩니다.
--artifacts-locator
forge build 명령의 출력(즉, 컴파일된 바이트코드와 solidity 소스 코드)이 포함된 forge-artifacts의 locator입니다. 로컬 경로(file:// 접두사), 원격 URL(http:// 또는 https:// 접두사), 또는 표준 컨트랙트 태그(tag://op-contracts/v 접두사)를 사용할 수 있습니다.
--verifier
검증에 사용할 블록 탐색기입니다. 쉼표로 구분하여 여러 verifier를 지정할 수 있습니다.
옵션:
etherscan(기본값): mainnet/sepolia에 Etherscan을 사용합니다blockscout: mainnet/sepolia의 기본 Blockscout URL을 사용합니다custom: 커스텀 Etherscan v2 호환 인스턴스용입니다(--verifier-url필요)
- 단일 verifier:
--verifier etherscan - 여러 verifier:
--verifier etherscan,blockscout(둘 다에서 검증)
--verifier-url
verifier API URL입니다. 사용 방법은 verifier 유형에 따라 다릅니다.
etherscan: 무시됩니다(chain ID에서 자동으로 결정됨)blockscout: 선택 사항입니다(기본값은 mainnet/sepolia의 표준 Blockscout URL)custom: 필수입니다. 예:https://etherscanv2.compat-api.example.com/api
출력
출력 로그는 콘솔에 다음과 같은 형태로 표시됩니다. 최종 결과에numFailed=0이 표시되면 모든 컨트랙트가 성공적으로 검증된 것입니다.
자동 검증
apply 또는 bootstrap 명령에 --verify 플래그를 사용하면 배포 후 컨트랙트를 자동으로 검증할 수 있습니다.
다중 verifier 배포
여러 블록 탐색기에서 동시에 검증할 수 있습니다.- 공유 컨트랙트를 배포합니다
- Etherscan에서 검증합니다(API 키 사용)
- Blockscout에서 검증합니다(API 키 불필요)
- 두 verifier의 결과를 합쳐 보고합니다
지원되는 컨트랙트 번들
verify 명령은 이제 모든 컨트랙트 번들을 지원합니다.- Shared 컨트랙트(
bootstrap superchain에서 배포) - Implementations 컨트랙트(
bootstrap implementations에서 배포) - OpChain 컨트랙트(
apply에서 배포, 모든 체인별 컨트랙트 포함)
apply의 state.json 파일을 사용하면 verifier가 모든 배포 단계의 컨트랙트를 자동으로 추출하고 검증합니다.