스마트 컨트랙트 배포하기 With Truffle And Hardhat

Truffle

1. Truffle 설치 및 사용

1.1. 설치

npm install truffle -g
npm install -g ganache-cli

ganache : 로컬에서 블록체인 테스트하는 기능

1.2. 트러플 구성

truffle init

1.3. 실습용 예제 사용하기

truffle에서 기본 제공하는 예제 파일

https://trufflesuite.com/boxes/metacoin/

truffle unbox metacoin

1.4. 테스트

truffle test // 전체 테스트
truffle test ./test/TestMetaCoin.sol // 개별 파일 테스트

1.5. 컨트랙트 컴파일

truffle compile

1.6. 로컬 체인에서 테스트

→ 로컬에서 돌아가는 테스트용 블록체인

truffle develop

2. Ganache - 가나슈

실제 ethereum과 똑같이 생성할수 있는 geth같은 경우 트랜잭션을 실행하는데에 15초씩 걸리기 때문에 개발 속도가 느려진다. → 가나슈를 사용하면 실제 네트워크와 같은 환경에서 바로바로 결과를 볼 수 있다.

2.1. truffle-config.js 수정

module.exports = {
  // 네트워크 설정 (로컬, 테스트넷, 메인넷, ... 등등을 설정 한다.)
  networks: {
    dev: { // 이름은 아무거나 사용 가능
      host: "127.0.0.1",     // Localhost
      port: 8545,            // Standard Ethereum port
      network_id: "*",       // Any network
     },
  },
  // 컴파일러 설정
  compilers: {
    solc: {
      version: "0.8.13", // 컴파일러 버전
    }
  },
};

2.2. Ganache-cli 실행

ganache-cli

2.3. 컴파일

truffle compile

2.4. 배포

(ganache-cli가 실행 중이여야함)

3. 실제 네트워크에 배포



Hardhat

1. 설치

npm install --save-dev hardhat
npx hardhat

→ create a JavaScript project 선택

2. 필요 모듈 설치

npm install --save-dev @nomicfoundation/hardhat-toolbox hardhat-abi-exporter
require("@nomicfoundation/hardhat-toolbox");
require("hardhat-abi-exporter")

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.9",
network:{},
abiExporter: {
        path: './ABI',
        runOnCompile: true,
        clear: true,
    },
};

3. contract 작성 및 컴파일

4. 컨트랙트 테스트

5. 네트워크에 배포