Foundry를 이용한 컨트랙트 배포

파운드리 (Foundry)는 개발자가 명령 줄 인터페이스(CLI)를 통해 솔리디티 (Solidity)종속성을 관리하고, 컨트랙트를 컴파일, 테스트, 배포하며 블록체인과 상호 작용을 할 수 있도록 도와주는 러스트 (Rust)기반의 이더리움 개발 도구입니다.

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

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

STEP 1 - 파운드리 시작

파운드리 설치를 설치하기 위해서 다음 명령을 실행합니다.

  • Linux or MacOS

curl -L <https://foundry.paradigm.xyz> | bash foundryup
  • Windows

curl --proto '=https' --tlsv1.2 -sSf <https://sh.rustup.rs/> | sh cargo install --
git <https://github.com/foundry-rs/foundry> foundry-cli anvil --bins --locked

STEP 2 - 파운드리 프로젝트 설정

파운드리를 설치했으면 다음 단계는 새 프로젝트의 초기화입니다.

mkdir helloDka
cd helloDka
forge init .

다음은 파운드리의 폴더 구조에 대한 예시입니다.

/helloDka
├── README.md
├── foundry.toml
├── lib
|  └── forge-std
├── script
|  └── Counter.s.sol
├── src
|  └── Counter.sol
└── test
   └── Counter.t.sol

Step 3 - 예시 컨트랙트: Counter.sol

파운드리의 새로운 프로젝트는 기본적으로 샘플 컨트랙트 counter.sol와 샘플 테스트 파일을 포함합니다. counter.sol 코드는 변수 Number를 설정할 수 있는 간단한 기능이 구현되어 있습니다.

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

contract Counter {
    uint256 public number;

    function setNumber(uint256 newNumber) public {
        number = newNumber;
    }

    function increment() public {
        number++;
    }
}

Step 4 - 컨트랙트 컴파일

오류 없이 컴파일되면 컨트랙트가 올바른 것이며, 디카르고 웨어하우스에 배포할 준비가 된 것입니다.

forge build

Step 5 - 컨트랙트 배포

컨트랙트 배포는 Forge CLI 명령어 한 번으로 간단하게 완료할 수 있습니다.

다만, 이 과정에서는 웨어하우스 RPC 엔드포인트와 $DKA를 보유한 개인키가 필요합니다.

아래 제공된 RPC 엔드포인트 URL을 사용하시고, 개인 키를 준비해 주세요.

  • 웨어하우스 RPC 엔드포인트 : https://it-full.dknote.net

forge create --rpc-url "<https://it-full.dknote.net>" --private-key YOUR_PRIVATE_KEY  src/Counter.sol:Counter

명령어 성공 시, 다음과 같은 응답이 표시됩니다.

컨트랙트를 디카르고 웨어하우스에 성공적으로 배포했습니다.

“Deployed to” 에 명시된 컨트랙트 주소를 복사하여 디스캐너 (dScanner)에서 컨트랙트 배포 정보를 검색해보세요.

Last updated