메인 콘텐츠로 건너뛰기

사전 요구 사항

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

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

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

스마트 컨트랙트 검증 구성 편집

hardhat.config.js를 열고 etherscansourcify 요소를 확인하세요.
  etherscan: {
    apiKey: {
      inj_testnet: 'nil',
    },
    customChains: [
      {
        network: 'inj_testnet',
        chainId: 1439,
        urls: {
          apiURL: 'https://testnet.blockscout-api.injective.network/api',
          browserURL: 'https://testnet.blockscout.injective.network/',
        },
      },
    ],
  },
  sourcify: {
    enabled: false,
  },
Sourcify와 Etherscan은 두 가지 인기 있는 블록 탐색기이며 각각 다른 검증 API를 가지고 있습니다. Injective는 Etherscan API와 호환되는 Blockscout을 사용합니다. 따라서 구성에서 Sourcify가 비활성화되어 있습니다. Etherscan 구성 내에서 apiKey 값은 필요하지 않으므로 비어 있지 않은 값이면 됩니다. customChains 내의 inj_testnet 네트워크는 이미 Injective 테스트넷에 적합한 값으로 구성되어 있습니다.

검증 명령 실행

다음 명령을 입력합니다:
npx hardhat verify --network inj_testnet ${SC_ADDRESS}
${SC_ADDRESS}를 스마트 컨트랙트를 배포한 주소로 바꾸세요. 예를 들어 스마트 컨트랙트 주소가 0x98798cc92651B1876e9Cc91EcBcfe64cac720a1b인 경우 명령은 다음과 같습니다:
npx hardhat verify --network inj_testnet 0x98798cc92651B1876e9Cc91EcBcfe64cac720a1b

검증 결과 확인

터미널에서 다음과 유사한 출력이 표시됩니다:
Successfully submitted source code for contract
contracts/Counter.sol:Counter at 0x98798cc92651B1876e9Cc91EcBcfe64cac720a1b
for verification on the block explorer. Waiting for verification result...

Successfully verified contract Counter on the block explorer.
https://testnet.blockscout.injective.network/address/0x98798cc92651B1876e9Cc91EcBcfe64cac720a1b#code
더 흥미로운 결과는 네트워크 탐색기를 방문하는 것입니다. 검증 출력의 네트워크 탐색기 URL을 방문하세요. 그런 다음 “Contract” 탭을 선택합니다. 그런 다음 “Code” 하위 탭을 선택합니다. 이전에는 “ByteCode”만 사용할 수 있었지만 이제 “Code”, “Compiler” 및 “ABI”도 사용할 수 있습니다. 여전히 “Contract” 탭 내에서 “Read/Write contract” 하위 탭을 선택합니다. 이전에는 이것이 존재하지 않았지만 이제 블록 탐색기에서 직접 모든 스마트 컨트랙트 함수와 상호 작용할 수 있습니다.

다음 단계

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