본문 바로가기
블록체인/WEB3 개발

Ganache/Ganache-cli 설치하기, Ganache와 Remix 연동, Ganache Network에 스마트 컨트랙트 배포

by 제이제이_은재 2022. 7. 15.
반응형

💡Ganache

 

✓ Ganache가 필요한 이유

 

이더리움 노드는 Geth 나 Parity를 사용하여 실제 이더리움 메인(또는 테스트) 네트워크에 접속하여 블록을 모두 동기화시켜야 한다. 그러나 블록을 동기화 시키는데만 해도 2~3일 정도 소요되며, 트랜잭션을 보내도 블록을 채굴하기까지기 기다려야 하는 등, 스마트 컨트랙트를 개발할 때 불편한 점이 많다. 그래서 스마트 컨트랙트를 개발할 때는 가나슈(Ganache)와 같은 가상 혹은 프라이빗 네트워크 상에서 스마트 컨트랙트를 구동해보고, 테스트넷을 거쳐 메인넷에 올린다.

 

 

 

💻 개발 및 배포 과정

TestRPC -> TestNet -> MainNet

 

- TestRPC: 가나슈를 사용해 로컬 환경에서 개발 진행

- TestNet: 개발 완료 후 MainNet과 동일한 환경에서 테스트

- MainNet: 실제 서비스에서 사용할 수 있도록 배포

 

 

✓ Ganache 설치 및 소개

 

가나슈(Ganache)는 가상의 이더리움 네트워크를 생성해서 스마트 컨트랙트를 실행할 수 있도록 해주는 프로그램이다. 가나슈 등을 이용해 만든 가상 환경을 TestRPC라고 한다. 가나슈는 가나슈 홈페이지를 통해 다운로드 받고 설치 가능하다.

 

https://trufflesuite.com/ganache/

가나슈 설치중...

 

가나슈를 왼쪽에 있는 QUICKSTART로 실행한다.

 

실행하면 다음과 같은 화면이 나오는데, 간단히 설명해보면 아래와 같다.

 

- 현재, 가상의 이더리움 네트워크가 로컬에 운영되고 있다.

- 해당 네트워크에 접속하려면 http://127.0.0.1:7545로 접속할 수 있다.

- 10개의 가상 계정에는 각각 100 이더의 잔액이 충전되어 있다.

 

 

Ganache에서 mining이 활성화되어 있기 때문에 contract를 배포하거나 transaction을 실행할 수 있는 환경이 갖춰진다.

 

 

Ganache 어플리케이션 상단에 있는 6개의 탭은 다음과 같다.

 

ACCOUNTS: account들의 주소, 잔고, 트랜잭션 수

BLOCKS: block 번호, 생성시점, 사용된 가스, 포함된 트랜잭션

Transactions: 전체 트랜잭션

Contracts: 트러플(Truffle) 프로젝트에 포함된 스마트 컨트랙트

Events: 이벤트 리스트

Logs: EthereumJS VM의 로그

 

 

✓ Ganache-cli

 

Ganache-cli는 electron으로 wrapping 하는 형태로 제작되어 있기 때문에, GUI 가 필요 없다면 ganache-cli를 사용할 수도 있다. Truffle을 사용하여 개발/테스트 환경을 구성할 경우, truffle develop명령으로 ganache-cli 사용이 가능하다. Remix를 사용하여 개발/테스트 환경을 구성할 경우, Metamask에서 로컬 네트워크로 연겨랗여 사용이 가능하다. 

 

 

💻 npm을 이용하여 Ganache-cli 설치하기

npm install -g ganache-cli

 

설치가 완료되면 다음의 명령어로 확인한다.

ganache-cli version

결과

Ganache CLI v6.12.2 (ganache-core: 2.13.2)

Available Accounts
==================
(0) 0x0ec070d1711F711c1171ae618EfB054e1A73576C (100 ETH)
(1) 0x6A4F4117E96748494DF3a149FAf3A7Cf36497430 (100 ETH)
(2) 0x9cD6049a221DdB67682Cb898E6D2181AeD8Afb8e (100 ETH)
(3) 0x22Bd49488a68D6C1d7A7A190E5881e656e7bd232 (100 ETH)
(4) 0xF8975713890C0402bdaFCC92821FfFCce5dE2d66 (100 ETH)
(5) 0x89B9f124c825b1478B2B54ce96Aad3F0f9AA3cC2 (100 ETH)
(6) 0x8f42C1F3f791FF6A42B755CF025f3E22C317512e (100 ETH)
(7) 0xEF515b7388f0EcE1C8FA46a9A7229ef2c9Cff82D (100 ETH)
(8) 0x7a726F947AEee2715A93ae0667a034A7f884ef4D (100 ETH)
(9) 0xE2A079Da5D449B8eE5c45AA0C6f39B8B65F185d3 (100 ETH)

Private Keys
==================
(0) 0x02a3e7cbce65b5b707be510a3a71dac79ff4a318bb3e6fb72230cb1c91c5582c
(1) 0x08c4512f559ff8ce0c56aaf50c5dc20a0fd90399a500e3989544c7a501deff5d
(2) 0x153dc4a7ebc8d98810089cec3234acc68c35333e230c3d81758716cfe5dc031f
(3) 0x58722ae9faaf1fd81f1ef7428c0064b42f1a6a86d7da946b41937e3953341a2c
(4) 0x95d60829728b93dd41a341976821f7025731e665dabfb186ae8d057ef6e851a0
(5) 0xef16c2b4ed3ec87c938123c23bb3fff1796e213d95f95c451cd8dcb728c99ce7
(6) 0x4f4434540e8ef0db441aab69271a60d9884fdd90cb978f5030aeb29017dc6b86
(7) 0xb29c04303b7e5627186e755f7a3cfc1e4960b268b436901b0065f01e1cb0133c
(8) 0xbc4f11e1c1f8ee86025b919a9a0ceba161de945efaaba19cb8563352f98b2490
(9) 0x7cd61517404b7178a74108e3434848c59c5aeb2275037944dcb2b69cf26f97b7

HD Wallet
==================
Mnemonic:      scrub behave because acoustic gold salmon chief cannon giant promote tuition flower
Base HD Path:  m/44'/60'/0'/0/{account_index}

Gas Price
==================
20000000000

Gas Limit
==================
6721975

Call Gas Limit
==================
9007199254740991

Listening on 127.0.0.1:8545

 

💻 Ganache와 Remix 연동

 

✓ Metamask와 Ganache 연동

 

1. Metamask에서 네트워크를 선택하는 항목 중, '맞춤형 RPC' 혹은 '네트워크 추가' 항목을 선택한다.

 

 

 

2. 맞춤형 RPC 화면에서 네트워크 이름, 새 RPC URL, 체인 ID 를 각각 입력해준다.

 

 

* 네트워크 이름 : Ganache Network

* 새 RPC URL : http://127.0.0.1:7545

* 체인 ID : 1337

 

3. 값을 입력 후 저장을 누르면 오른쪽과 같이 네트워크에 Ganache Network가 생긴 것을 확인할 수 있습니다.

 

 

이제 Ganache 계정을 Metamask로 가져와보자. Ganache 계정을 Metamask에서 사용하려면 계정의 Private Key를 가져와 Metamask 계정에 import 해야 한다.

 

4. Ganache에서 Address 옆 열쇠 버튼을 눌러 Private Key를 복사한다.

 

5. Metamask에서 계정 아이콘을 클릭하여 계정 가져오기를 선택한다.

 

6. 복사해 온 비공개 키 값을 입력한다.

 

7. 연동 완료!

 

 

✓ Ganache Network에 스마트 컨트랙트 배포

 

1. Metamask 계정을 이용하여 Remix 계정과 연동한다. ERC-20 토큰 코드를 준비하여 Ganache 네트워크에 ERC-20 토큰을 배포한다.

 

2. Deploy 후 Ganache를 보낸다.

 

 

3. Ganache로 돌아가 계정을 확인해보면 잔액이 줄어든 것도 확인 가능하고 아래처럼 하나의 블록이 생성된 것을 확인할 수 있다. 이는 Deploy와 동시에 transaction을 Ganache 네트워크에 전송했고, 채굴이 일어나서 블록이 1개 생성된 것이다.

 

transaction 탭에서 확인해보면 스마트 컨트랙트가 Ganache 네트워크에 배포된 것을 확인할 수 있다.

 

 

4. Reopsten TestNet처럼 네트워크에서 함수 실행도 가능하다.

 

 

 

반응형

댓글