Neox에서 Hello World 스마트 컨트랙트를 배포하는 첫 번째 튜토리얼을 따라 했으며, 이제 NeoX 탐색기에서 이를 검증하는 방법을 궁금해한다면 이 가이드가 당신을 위한 것입니다.
이전 튜토리얼을 따랐다면, 사용했던 동일한 폴더로 이동하면 됩니다.
이 부분을 건너뛰고 싶다면 이 저장소를 끌어와 작업을 가져올 수 있습니다. 그런 다음 7단계 및 8단계를 완료하여 NeoX에 이 Hello World 스마트 컨트랙트를 배포하면 됩니다.
이제 NeoX에 배포한 Hello World 컨트랙트의 컨트랙트 해시를 보관해야 합니다. 이 해시는 다음 단계에서 사용할 것입니다. 이 예제에서는 0x769427b5A043b4aB2f4c31A7Da819526F3B0d181을 사용하겠습니다.
이를 위해 컨트랙트 검증 페이지로 이동하여 다음 명령어로 생성한 플래튼 코드를 사용합니다: npx hardhat flatten.
그런 다음 hardhat.config.js 파일에 있는 모든 정보(컴파일러 버전, 최적화 매개변수 등)를 채웁니다. 이는 다음과 같이 보일 것입니다:

작업이 완료되면 컨트랙트가 검증되어야 하지만, 이 방법이 항상 작동하지 않을 수 있으므로 다른 방법을 살펴보겠습니다.
이 방법에서는 다음 명령어로 새로운 의존성을 설치해야 합니다: npm install --save-dev @nomicfoundation/hardhat-verify. 의존성을 추가한 후, hardhat.config.js 파일 상단에 다음 가져오기를 추가합니다.
require("@nomicfoundation/hardhat-verify");
작업이 완료되면 매우 간단합니다. 컨트랙트 해시만 있으면 다음 명령어를 실행하면 됩니다:
npx hardhat verify --network neox-t4 0x769427b5A043b4aB2f4c31A7Da819526F3B0d181 "Hello World!"
검증이 성공했다는 비슷한 출력이 표시될 것입니다:
컨트랙트 소스 코드 제출 성공
contracts/HelloWorld.sol:HelloWorld at 0x769427b5A043b4aB2f4c31A7Da819526F3B0d181
블록 탐색기에서 검증을 위해. 검증 결과 대기 중...
블록 탐색기에서 HelloWorld 컨트랙트 검증 성공.
https://neoxt4scan.ngd.network/address/0x769427b5A043b4aB2f4c31A7Da819526F3B0d181#code
명령어 끝에 배포 중 컨트랙트 초기화에 사용한 인수를 추가했습니다. 생성자 인수가 여러 개라면 Javascript 파일에 이를 넣고 --constructor-args 매개변수를 사용할 수 있습니다. 이 예제에서는 npx hardhat verify --constructor-args arguments.js --network neox-t4 0x769427b5A043b4aB2f4c31A7Da819526F3B0d181와 같이 실행하며, arguments.js 파일에는 다음 코드가 포함됩니다:
module.exports = [
"Hello World!"
];
이제 컨트랙트가 검증되었으므로 탐색기의 컨트랙트 탭은 다음과 같이 보일 것입니다:

이제 컨트랙트 읽기와 컨트랙트 쓰기 두 개의 탭이 표시됩니다.
읽기 부분에서는 컨트랙트에 저장된 현재 메시지를 확인할 수 있습니다. 이는 이전 튜토리얼 끝에 넣은 NeoX는 최고의 체인입니다.입니다.

쓰기 부분에서는 메시지를 입력하고 쓰기 버튼을 클릭하여 탐색기가 Metamask 지갑에서 서명할 트랜잭션을 생성하도록 할 수 있습니다.

읽기 부분으로 돌아가면 메시지가 변경된 것을 확인할 수 있습니다.

이제 컨트랙트를 탐색기에서 검증하는 것이 왜 중요한지 알 수 있습니다. 이는 사람들이 컨트랙트를 더 신뢰할 수 있게 하며, 코드를 작성하지 않고도 누구나 쉽게 상호작용할 수 있게 합니다.
메인넷에서 컨트랙트에 대해 동일한 작업을 하려면 구성에 NeoX 메인넷 체인을 추가해야 합니다. 다음과 같이 설정합니다:
require("dotenv").config();
require("@nomicfoundation/hardhat-toolbox");
require("@nomicfoundation/hardhat-verify");
const { NEOX_PK, NEOX_MAINNET_PK } = process.env;
module.exports = {
solidity: {
version: "0.8.26",
settings: {
optimizer: {
enabled: true,
runs: 200,
details: {
yul: false,
},
},
}
},
networks: {
'neox-t4': {
url: 'https://neoxt4seed1.ngd.network',
accounts: [${NEOX_PK}],
gasPrice: 40e9,
gas: 50e6,
},
'neox': {
이 구성에서는 메인넷에 다른 개인 키를 사용하므로 .env 파일에도 이를 추가해야 합니다. 테스트넷과 메인넷에 다른 지갑을 사용하면 잘못된 체인을 선택하는 실수를 피할 수 있습니다.
이제 테스트넷에서 했던 모든 작업을 동일하게 수행하되, 네트워크 매개변수를 neox-t4(테스트넷 체인)에서 neox(메인넷 체인)로 변경하면 됩니다:
npx hardhat verify --network neox 0x769427b5A043b4aB2f4c31A7Da819526F3B0d181 "Hello World!"
축하합니다! NeoX 체인에서 Hello World 컨트랙트를 성공적으로 검증했습니다. 요약하자면, 다음을 배웠습니다: