메인 콘텐츠로 건너뛰기

사전 요구 사항

Foundry 프로젝트가 이미 설정되어 있고 스마트 컨트랙트가 성공적으로 배포되어 있어야 합니다. 방법은 Foundry로 스마트 컨트랙트 배포 튜토리얼을 참조하세요.

스마트 컨트랙트 검증이란?

검증 프로세스는 스마트 컨트랙트 자체나 네트워크의 다른 상태에 영향을 미치지 않습니다. 대신, 네트워크 탐색기에 특정 주소에 배포된 스마트 컨트랙트의 원본 소스 코드를 제공하는 표준화된 프로세스입니다. 네트워크 탐색기는 해당 소스 코드를 독립적으로 컴파일하고 결과 바이트코드가 스마트 컨트랙트의 배포 트랜잭션에서 존재하는 바이트코드와 실제로 일치하는지 확인합니다. 검증이 통과되면(일치하는 경우) 블록 탐색기는 해당 특정 스마트 컨트랙트 페이지 내에서 향상된 모드를 “잠금 해제”합니다. 이제 다음을 포함한 더 많은 스마트 컨트랙트 세부 정보가 표시됩니다:
  • 전체 소스 코드(Solidity)
  • ABI(JSON)
  • 트랜잭션 및 이벤트가 더 자세하게 표시됩니다(ABI를 사용하여 파싱됨)
또한 사용자가 지갑을 연결하면 네트워크 탐색기 자체 내에서 함수를 호출하여 스마트 컨트랙트를 쿼리하고 상태를 업데이트하는 트랜잭션을 보낼 수도 있습니다.

검증 명령 실행

다음 명령을 입력합니다:
forge verify-contract \
  --rpc-url injectiveEvm \
  --verifier blockscout \
  --verifier-url 'https://testnet.blockscout-api.injective.network/api/' \
  ${SC_ADDRESS} \
  src/Counter.sol:Counter
${SC_ADDRESS}를 스마트 컨트랙트를 배포한 주소로 바꾸세요. 예를 들어 스마트 컨트랙트 주소가 0x213bA803265386C10CE04a2cAa0f31FF3440b9cF인 경우 명령은 다음과 같습니다:
forge verify-contract \
  --rpc-url injectiveEvm \
  --verifier blockscout \
  --verifier-url 'https://testnet.blockscout-api.injective.network/api/' \
  0x213bA803265386C10CE04a2cAa0f31FF3440b9cF \
  src/Counter.sol:Counter

검증 결과 확인

터미널에서 다음과 유사한 출력이 표시됩니다:
Start verifying contract `0x213bA803265386C10CE04a2cAa0f31FF3440b9cF` deployed on 1439
Submitting verification for [src/Counter.sol:Counter] 0x213bA803265386C10CE04a2cAa0f31FF3440b9cF.
Submitted contract for verification:
        Response: `OK`
        GUID: `213ba803265386c10ce04a2caa0f31ff3440b9cf686b778c`
        URL: https://testnet.blockscout-api.injective.network/address/0x213ba803265386c10ce04a2caa0f31ff3440b9cf
더 흥미로운 결과는 네트워크 탐색기를 방문하는 것입니다. 검증 출력의 네트워크 탐색기 URL을 방문하세요. 그런 다음 “Contract” 탭을 선택합니다. 그런 다음 “Code” 하위 탭을 선택합니다. 이전에는 “ByteCode”만 사용할 수 있었지만 이제 “Code”, “Compiler” 및 “ABI”도 사용할 수 있습니다. 여전히 “Contract” 탭 내에서 “Read/Write contract” 하위 탭을 선택합니다. 이전에는 이것이 존재하지 않았지만 이제 블록 탐색기에서 직접 모든 스마트 컨트랙트 함수와 상호 작용할 수 있습니다.

다음 단계

이제 스마트 컨트랙트를 배포하고 검증했으므로 해당 스마트 컨트랙트와 상호 작용할 준비가 되었습니다! 다음으로 Foundry로 스마트 컨트랙트 상호작용 튜토리얼을 확인하세요.