본문 바로가기

IT/Blockchain

Hardhat 튜토리얼 - 3) 배포 설정

728x90

 

(이전 문서)

[IT/Blockchain] - Hardhat 튜토리얼 - 1) 시작

[IT/Blockchain] - Hardhat 튜토리얼 - 2) 소스 분석


 

hardhat.config.ts 를 통해 배포 설정을 할 수 있습니다.

 

기본적으로 하드햇 컴파일 명령어는 다음과 같습니다.

npx hardhat complie

 

Solidity 컴파일 버전 설정

기본적으로 컴파일 할 버전을 한개만 사용할 경우 다음과 같이 설정합니다.

const config: HardhatUserConfig = {
  solidity: "0.8.19",
};

 

하지만, 작업 시에 다른 컴파일 버전이 필요할 수 도 있습니다. (오픈소스 또는 예전 컴파일 버전이 필요한 경우)

그럴 때 아래와 같이 컴파일 버전을 추가할 수 있습니다.

 - solidity 안에 compilers 구문을 추가하고 사용할 컴파일 버전을 나열합니다.

const config: HardhatUserConfig = {
  solidity: {
    compilers: [
      {
        version: "0.8.19"
      },
      {
        version: "0.6.1"
      }
    ]
  },
};

이렇게 해놓으시면 .sol 파일 중 해당 컴파일 버전이 사용될 경우 맞춰서 컴파일을 할 수 있게 됩니다.

 

 

네트워크 설정

하드햇에서 제공하는 로컬네트워크는 설정하지 않아도 기본적으로 사용할 수 있습니다.

개발이 어느 정도 진행되면, 테스트넷, 메인넷에 배포해야 하는 상황이 오게 됩니다.

그 때, networks 라는 필드를 통해 배포할 네트워크를 지정할 수 있습니다.

네트워크 설정을 하기 위해서는 배포할 메인넷/테스트넷의 노드 엔드포인트 정보를 알아야합니다.

기본적인 모양을 아래와 같습니다.

networks: {
  ethereum: { // 이 부분의 이름은 구분할 수 있게 자유롭게 작성하면 됩니다.
    url: '<Ethereum RPC node URL>',
    accounts: {
      mnemonic: 'test test test .... test'
    }
    /**
     * account: ['my private key']
     * 두 가지 방식으로 account를 지정할 수 있습니다. mnemonic, private key
     */

  }
 }

 

개인이 직접 노드를 구축하였을 경우 해당 노드를 엔드포인트로 지정하시면 됩니다.

규모가 큰 메인넷의 경우 대부분 Public Node Endpoint를 제공합니다.

 

Ethereum의 경우 다음 사이트에서 정보를 찾을 수 있습니다.

https://www.allthatnode.com/ethereum.dsrv

 

All That Node

Everything you need to build on Ethereum. Come build the multi-chain future without barriers.

www.allthatnode.com

 * 제공 되는 엔드포인트 중 Mainnet은 실제 통화로 거래소에서 거래되는 ETH를 사용하는 메인넷입니다.

   - Goerli, Sepolia는 이더리움 2.0의 테스트 넷입니다.

 

 


추가적인 하드햇의 기능

메인넷을 포크하여 로컬에서 메인넷에 배포하는 것과 같이 테스트를 해볼 수 있습니다.

실제 메인넷에 배포하여 테스트하려면 비용이 들어가야 합니다. 하지만, 이 기능을 사용해 메인넷 배포 테스트를 하게 되면 비용을 크게 절감할 수 있습니다.

메인넷 노드 정보 -> Hardhat이 복사 -> Local Node(forked) 로 사용하게 됩니다.

아래와 같이 작성하여 사용할 수 있습니다.

 networks: {
  hardhat: { //hardhat이라고 작성해야 합니다
    forking: {
      url: "https://ethereum-mainnet-rpc.allthatnode.com",
      blockNumber: 2800000 //포크 시작할 블록, 미지정 가능
    },
    accounts: { // 위의 두 가지 방법 모두 가능
      mnemonic: 'test test test test .... junk',
      accountsBalance: "10000000000000000000000000", // 10,000,000 KLAY
    }
    blockGasLimit: 30000000,
  }

참고 니모닉(mnemonic)

 

 

블록체인에서의 니모닉(Mnemonic)

니모닉(mnenonic)은 원래 쓰이는 단어입니다. 두산 백과 사전 니모닉의 해석을 보면, '니모닉은 재사용이 필요할 때 사람의 기억을 돕기 위해 명확하게 선택된 상징이나 상징의 조합을 사용하는 것

infomauntain.tistory.com

 

728x90