Quai Network에서 간단한 단일 체인 스마트 계약을 배포하는 가이드입니다.
NodeJS | Javascript 런타임 환경. LTS 버전을 사용하세요. |
hardhat-example | Quai Network용 샘플 계약 및 배포 스크립트가 포함된 Hardhat 프로젝트입니다. |
Quais.js | Quai Network와 상호 작용하기 위한 JavaScript 라이브러리입니다. |
hardhat-example
저장소를 복제하고, 이 튜토리얼에서 사용할 Solidity
디렉토리로 이동한 다음, npm
을 통해 종속성을 설치합니다.
Solidity/
디렉토리에는 contracts/
디렉토리 내에 2개의 샘플 계약이 있습니다: ERC20.sol
과 ERC721.sol
. 두 계약 모두 Open Zeppelin 라이브러리에서 파생된 구현입니다.
이 튜토리얼에서는 ERC20.sol
샘플 계약을 사용하지만, 자체 계약을 추가하거나 다른 라이브러리의 계약을 사용할 수도 있습니다.
hardhat-example
저장소 루트에 토큰 세부 정보, 개인 키 및 RPC URL을 안전하게 관리하기 위한 샘플 환경 파일 .env.dist
가 포함되어 있습니다.
.env.dist
파일은 템플릿 파일이며 그대로 사용해서는 안 됩니다. .env.dist
파일을 새로운 .env
파일로 복사해야 합니다.이 파일은 hardhat-example
저장소의 루트에 위치하며 Solidity/
디렉토리의 설정 파일 역할을 합니다..env.dist
파일을 저장소 루트의 새 .env
파일로 복사합니다:
.env
파일을 열고 개인 키, RPC URL 및 배포하려는 계약의 토큰 인수를 추가합니다. .env
파일은 다음과 같아야 합니다:
PK
값은 모두 고유한 주소에 대한 것이어야 하며 영역 이름에 해당해야 합니다.
즉, CYPRUS1_PK
는 Cyprus1 주소의 개인 키여야 합니다.hardhat-example
저장소는 Quais SDK를 사용하여 단일 RPC URL만으로 네트워크 연결을 구성합니다. SDK가 네트워크 제공자를 구성하는 방법에 대해 자세히 알아보려면 SDK 제공자 예제 섹션을 방문하세요.
개인 키와 RPC URL을 입력한 후, 이제 hardhat.config.js
내에서 안전하게 사용할 준비가 되었습니다.
hardhat.config.js
파일을 사용합니다. 설정 파일을 통해 배포 네트워크, 작업, 컴파일러 등을 정의할 수 있습니다.
hardhat-example
에는 네트워크의 모든 샤드에서 스마트 계약을 배포하고 검증하기 위한 구성이 포함된 사전 제작된 hardhat.config.js
파일이 포함되어 있습니다.
샘플 hardhat 구성 파일
hardhat-example
저장소의 일부로 제공됩니다.cyprus1
cyprus2
cyprus3
paxos1
paxos2
paxos3
hydra1
hydra2
hydra3
hardhat.config.js
는 .env
파일에서 개인 키와 RPC URL을 가져와서 계약을 배포하고 검증하는 데 사용합니다. solidity
객체에서 Solidity 버전과 컴파일러 설정을 지정할 수도 있습니다.
Hardhat으로 컴파일
npx
를 사용하여 수행할 수 있습니다.다음을 사용하여 contracts/
디렉토리 내의 모든 계약을 컴파일합니다:배포 스크립트 구성
scripts/
디렉토리 내에서 ERC20 및 ERC721 계약 모두에 대한 배포 스크립트를 찾을 수 있습니다: deployERC20.js
및 deployERC721.js
. 이 튜토리얼에서는 ERC20 계약을 배포할 것입니다.deployERC20.js
스크립트는 hardhat.config.js
에서 네트워크 구성을 가져오고 저장소 루트의 .env
파일에서 토큰 인수를 가져와서 계약을 배포하는 데 사용합니다.토큰 인수는 tokenArgs
배열을 통해 사용됩니다:provider
및 wallet
변수 내에서 새 계약 인스턴스를 생성하는 데 사용됩니다:deployERC721.js
스크립트는 유사한 방식으로 작동하지만, 다른 계약 인수와 다른 계약 ABI 및
바이트코드를 사용합니다. 배포하려는 모든 계약에 대해 이 구성을 복제할 수 있습니다.계약 배포
--network
플래그를 사용합니다(사용 가능한 옵션은 여기에서 찾을 수 있습니다). 이 튜토리얼에서는 cyprus1
에 배포할 것입니다.ERC20.sol
및 ERC721.sol
샘플 계약은 예제 목적으로 각 토큰의 기본 구현입니다. 프로덕션 용도로
배포하기 전에 특정 사용 사례에 맞게 이러한 계약을 수정하는 것이 좋습니다.