dKargo Docs
dKargo.ioWhitepaper
Docs KOR
Docs KOR
  • Documentation
  • 노드 구축
    • 체인 RPC
    • 공통 설치 가이드
    • 체인 노드 종류
    • 풀 노드
    • 아카이브 풀 노드
    • 밸리데이터 노드
  • 지갑 설정
    • MetaMask 연결
    • 지갑 생성
    • 지갑 가져오기
    • 네트워크 추가
  • 밸리데이터 운영
    • 밸리데이터 스테이킹
    • 스테이킹
    • 언스테이킹
    • 클레임
  • 컨트랙트 배포
    • 컨트랙트 배포 방식
    • Remix-IDE를 이용한 컨트랙트 배포
    • Hardhat을 이용한 컨트랙트 배포
    • Foundry를 이용한 컨트랙트 배포
  • ERC-20 브릿징
    • ERC-20 브릿징이란?
    • 표준 게이트웨이
    • 범용적 커스텀 게이트웨이
    • 커스텀 게이트웨이
  • DKA 브릿징
    • DKA 브릿징이란?
    • DKA 입금
    • DKA 출금
  • 포우셋
    • 포우셋이란?
    • 포우셋 사용하기
  • 체인 스냅샷
    • 체인 스냅샷 다운로드
  • 컨트랙트 주소
    • 디카르고 컨트랙트 주소
  • 버그 바운티
    • 버그 바운티 프로그램
Powered by GitBook
On this page
  • 개발 환경
  • Step 1 - 하드햇 프로젝트 설정
  • Step 2 - Counter.sol 컨트랙트 작성
  • Step 3 - 이그니션 파일 업데이트
  • Step 4 - 하드햇 설정
  • Step 5 - 컴파일과 배포
  • Step 6 - 배포 트랜잭션 확인
  • 컨트랙트 검증
  1. 컨트랙트 배포

Hardhat을 이용한 컨트랙트 배포

PreviousRemix-IDE를 이용한 컨트랙트 배포NextFoundry를 이용한 컨트랙트 배포

Last updated 1 month ago

하드햇 (Hardhat)은 이더리움 소프트웨어를 위한 개발 프레임워크입니다. 컨트랙트 디앱 개발, 컴파일, 디버깅, 배포 등 이더리움을 개발하기 위한 다양한 기능이 구성되어 있습니다.

디카르고는 이더리움의 EVM과 상호 작용을 할 수 있기에, 디카르고 네트워크에 컨트랙트를 배포할 수 있습니다.

하드햇과 디카르고 웨어하우스를 사용하여 지갑 디앱 (Wallet dApp)을 구축하는 방법을 살펴보겠습니다.

모든 블록체인에 컨트랙트를 배포할 때는 해당 체인의 네이티브 토큰을 사용하여 배포 가스 수수료를 지불해야 하며, 이는 디카르고도 마찬가지입니다. 디카르고 웨어하우스에 배포하기 전에 을 통해 $DKA 테스트넷 토큰을 획득할 수 있습니다.

개발 환경

사전 준비 사항 (Prerequisites)

  • Node.js & npm/yarn:

    • Installed from .

  • Hardhat: Development environment for Ethereum.

    • Install with:

    npm install --save-dev hardhat

Step 1 - 하드햇 프로젝트 설정

  1. 하드햇 프로젝트를 새로 초기화합니다.

mkdir helloDka
cd helloDka
npx hardhat init
npm i dotenv
touch .env
  1. 다음은 하드햇 프로젝트의 폴더 구조에 대한 예시입니다.

/helloDka
├── README.md
├── contracts
|  └── Lock.sol
├── hardhat.config.js
├── ignition
|  └── modules
|     └── Lock.js
├── package-lock.json
├── package.json
└── test
   └── Lock.js

Step 2 - Counter.sol 컨트랙트 작성

contracts 폴더 안에 Counter.sol 파일을 생성한 다음 아래 코드를 복사하여 붙여 넣습니다.

해당 코드는 변수 Number를 설정할 수 있는 간단한 기능이 구현되어 있습니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
 
contract Counter {
    uint256 public number;
 
    function setNumber(uint256 newNumber) public {
        number = newNumber;
    }
 
    function increment() public {
        number++;
    }
}

Step 3 - 이그니션 파일 업데이트

./ignition/modules 폴더 안에 Counter.js 파일을 생성한 다음 아래 코드를 복사하여 붙혀 넣습니다.

const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules");
 
module.exports = buildModule("Counter", (m) => {
  const lock = m.contract("Counter");
 
  return { lock };
});

Step 4 - 하드햇 설정

  1. 필요한 플러그인 및 구성을 hardhat.config.js에 작성합니다.

    • require('dotenv').config() : .env를 불러옵니다.

    • accounts: [process.env.PRIVATE_KEY] : .env 에 작성된 개인키를 전달합니다.

require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.24",
  networks: {
    warehouse: {
      url: "<https://it-full.dknote.net>",
      accounts: [process.env.PRIVATE_KEY],
    },
  },
  ignition: {
    requiredConfirmations: 1
  }
};
  1. .env 파일 안에 다음을 추가합니다. gitignore 파일에 .env가 추가되었는지 확인합니다.

PRIVATE_KEY=YOUR KEY HERE WITH NO QUOTES

Step 5 - 컴파일과 배포

  1. counter.sol 을 컴파일합니다.

npx hardhat compile
  1. counter.sol 코드를 디카르고 웨어하우스에 배포합니다.

npx hardhat ignition deploy ./ignition/modules/Counter.js --network warehouse

Step 6 - 배포 트랜잭션 확인

  1. 배포된 컨트랙트의 트랜잭션 정보를 조회합니다.

npx hardhat ignition transactions chain-2465001

컨트랙트 검증

이더리움이나 EVM 기반 블록체인에서 스마트 컨트랙트를 개발해 보셨다면, 아마 하드햇의 검증 (verify) 기능을 사용해 보셨을 겁니다.

추가로 개발에 필요한 를 설치합니다.

해당 코드는표준 코드이며, 컨트랙트 배포를 수행합니다.

에서 트랜잭션 정보 검색할 수 있습니다.

하지만 저희 디카르고 체인은 물류 서비스에 최적화된 블록 익스플로러 (Explorer)인 를 자체적으로 개발했기 때문에, 하드햇의 검증 기능과는 호환되지 않습니다.

대신, 여러분이 개발한 컨트랙트의 투명성을 보장하기 위해 에서 제공하는 를 활용할 수 있습니다.

포우셋 (faucet)
Node.js
dotenv
하드햇 이그니션(hardhat ignition)
dScanner
dScanner
dScanner
Verify Contract