가나슈(Ganache)는 가상 이더리움 네트워크를 구축하여 스마트 컨트랙트를 테스트할 수 있는 툴입니다. Ganache를 통해 생성된 가상 환경을 TestRPC라고 부릅니다. 일반적으로 스마트 컨트랙트를 개발하고 배포할 때 먼저 TestRPC에서 로컬환경 개발을 진행하고, TestNet에서 개발이 완료된 컨트랙트를 MainNet과 동일한 환경에서 테스트를 진행합니다. 최종적으로 실제 서비스에 사용될 수 있도록 MainNet에 배포하는 과정을 거치게 됩니다.
TestRPC => TestNet => MainNet
가나슈(Ganache) 우분투 20.04 LTS 설치하기
우선 Appimage 파일을 다운로드 받습니다. Ganache 홈페이지에서 직접 다운로드 받으셔도 되고, 터미널에서 wget으로 받아오셔도 됩니다.
$ wget https://github.com/trufflesuite/ganache-ui/releases/download/v2.5.4/ganache-2.5.4-linux-x86_64.AppImage
Appimage 형식의 파일을 실행할 수도 있도록 excutable 속성을 추가한 후 실행합니다.
$ chmod a+x ganache-2.5.4-linux-x86_64.AppImage
$ ./ganache-2.5.4-linux-x86_64.AppImage
Ganache 사용하기
QUICKSTART로 실행합니다. 가나슈 는 가상 이더리움 네트워크를 생성해주고, 10개의 가상 계정을 제공합니다. 각 100 이더씩 충전되어 있습니다. Ganache에서는 채굴이 활성화 되어 있으므로 새로운 스마트 컨트랙트를 배포하거나, 트랜잭션을 올리면 즉각적으로 반영됩니다.
Ganache 상단에는 6개 탭이 있습니다.
- ACCOUNTS : 계정 주소, 잔액, 트랜잭션 정보등을 표시합니다.
- BLOCKS : 블록의 번호, 생성시간, 가스 소모량, 포함된 트랜잭션들을 표시합니다.
- TRANSACTIONS : 전체 트랜잭션을 표시합니다.
- CONTRACTS : Truffle 프로젝트에 포함된 스마트 컨트랙트를 표시합니다.
- EVENTS : 발생 이벤트를 표시합니다.
- LOGS : EthereumJS VM Logs를 표시합니다.
Ganache-cli 설치방법
가나슈의 GUI 환경을 사용하지 않고 터미널에서 바로 사용가능합니다. ganache-cli는 Electorn을 wrapping 하는 형태로 제작되었으며, Truffle을 사용해서 개발하는 경우 truffle develop 명령으로 ganache-cli 사용이 가능합니다. 만약 Remix로 개발하는 경우 MetaMask에서 로컬 Network으로 연결해 사용할 수 있습니다.
Ganache-cli는 NPM으로 설치가능합니다. 전역으로 설치합니다.
npm install -g ganache-cli
설치 완료 후 버전을 확인합니다. GUI 환경과 동일하게 10개의 가상 계정이 생성되고, 각 100ETH씩 들어있습니다. 다만 실행 포트가 8545에서 실행됩니다.
$ ganache-cli version
Ganache와 MetaMask 연동하기
Ganache 로컬 테스트 환경과 MetaMask를 연동해서 테스트넷에서 개발하기 전 환경을 구성할 수 있습니다.
① MetaMask에서 새로운 네트워크를 추가합니다.
② Ganache에서 생성된 가상 계정 중 하나를 MetaMast에 연동합니다. 우측 개인키를 열람하면 다음 화면이 팝업됩니다. PRIVATE KEY를 복사합니다.
MetaMask에서 계정 가져오기를 클릭합니다.
Ganache 네트워크에서 가상 계정을 연결했습니다. 단위가 CPAY로 되어 있지만 100개의 토큰을 가진 계정이 정상적으로 MetaMask 지갑에 연동됩니다.
Ganache Remix 연동하기
MetaMask와 Ganache 개발 환경을 연동하였습니다. 이제, MetaMask에 연동된 계정을 사용해 Remix 계정과 연동합니다. Remix에서 ERC-20 컨트랙트를 컴파일 한 후 배포화면으로 이동합니다.
Ganache와 연동된 MetaMask 계정을 선택합니다. ENVIRONMENT는 "Injected Web3"가 되고 계정은 Ganache에서 생성된 가상 계정입니다.
Ganache 환경에 배포를 진행합니다.
Ganache GUI의 BLOCK 탭을 확인합니다. 새로운 Block이 생성되었습니다. 컨트랙트를 배포함과 동시에 해당 트랜잭션이 Ganache 가상 네트워크에 올라갔고, 채굴이 바로 되면서 새로운 블록이 생성되었습니다.
블록에 담긴 트랜잭션은 1개가 존재합니다. 새로운 컨트랙트를 생성하는 트랜잭션입니다.
Ganache 로컬 가상 환경에서 배포한 컨트랙트를 돌려서 새로운 토큰을 추가합니다.
Ganache 환경에서 제공하는 가상 계정을 MetaMask에 새로 추가합니다. 추가된 계정으로 생성된 토큰을 전송합니다.
Ganache 정리
Ganache는 이더리움 블록체인에 올릴 스마트 컨트랙트를 로컬 환경에서 테스트 할 수 있는 환경을 제공합니다. 통상 스마트 컨트랙트를 개발할 때 TestRPC(Remote Procedure Call)에서 개발을 완료하고, Ropsten, Rinkeby 등의 테스트넷에서 메인넷과 동일한 환경의 테스트를 진행한 후 최종적으로 메인넷에 컨트랙트를 배포하게 됩니다.
Ganache는 GUI번과 CLI 환경 모두 사용할 수 있습니다. Ganache와 Remix를 연동해 컨트랙트를 쉽게 배포하고 테스트해볼 수 있습니다. Remix에서 Ganache 환경으로 컨트랙트를 배포하기 위해서는 먼저 Ganache에서 새성해주는 가상 계정을 MetaMask로 연동할 필요가 있습니다.
'Blockchain' 카테고리의 다른 글
[Blockchain] ERC-20 투표로 관리자 owner 설정 하는 방법 (0) | 2022.07.18 |
---|---|
[Blockchain] Truffle(트러플) 프레임워크 사용법(개발 배포 테스트) (0) | 2022.07.15 |
[Blockchain] 이더리움 토큰 발행하기 (ERC-20 라이브러리 사용) (0) | 2022.07.14 |
[Blockchain] 이더리움 토큰 발행 ERC-20 이란? (0) | 2022.07.14 |
[Blockchain] 가위바위보 스마트 컨트랙트 개선하기 (0) | 2022.07.13 |
댓글