main-logo

Ganache 간략 소개

Ganache 간략 소개 및 소소한 추가 정보

profile
NY
2024년 02월 01일 · 0 분 소요

들어가며

블록체인 관련되어 어떤 흐름으로 생성되고 연결되는지 알아보고 싶어 영상 강의를 보게되었고 로컬 테스트를 위한 Ganache를 접하고 예전에 팀장님께서 말씀주셨던 것도 기억에 남아 간략하게 사용하는 법에 대해 공유드리는 것도 좋을 것 같아 정리해보았습니다.

 

Ganache

솔리디티 외에 로컬 블록체인에서 스마트 계약을 테스트하고 배포 가능하고, DApp(Decentralized applications)을 테스트할 수 있는 Ganache 라는 것이 존재합니다.

아래 내용 중 언급된 Remix IDE 와 함께 MetaMask까지 연결하여 사용 가능합니다.

https://trufflesuite.com/ganache/

해당 링크로 가서 다운로드 후 설치를 앱을 실행하면 아래와 같은 화면이 나타납니다.

 "Create a workspace" screen, the first screen when running "ganache"

 

퀵스타트(Quickstart) 및 새로운 워크스페이스(Workspace) 생성, 이렇게 두 가지 옵션이 있는데요.

두 옵션 모두 이더리움과 파일코인 두 가지 옵션을 제공하고 있어 이더리움 선택 후 설정된 것을 확인하고 진행하시면 됩니다.

QUICKSTART 로 진행하게 되면 이더리움에서 Ganache를 사용할 수 있도록 모든 정보가 자동으로 설정되어 있는 것을 확인하실 수 있습니다.

QUICKSTART 선택 후 실행 시 뜨는 기본 화면 캡쳐본

 

NEW WORKSPACE를 선택하면 첫 번째 탭인 Workspace 탭 화면이 활성화되는데요.

Workspace 이름을 지정하는 영역인데 미설정 시 컴퓨터마다의 기본 이름이 디폴트로 설정되며, 원하는 이름으로 변경하여 사용 가능합니다.

저는 TEST_01 이라고 생성했는데요. 마지막 이미지의 Workspace영역을 확인해보시면 적용된 것을 보실 수 있으실 것입니다.

Truffle 프로젝트를 Workspace에 연결하는 옵션도 있는데 해당 부분은 추후 조금 더 알아보겠습니다. (하핫..)

Ganache 내 WORKSPACE 메뉴 화면

 

다음은 Server 탭 화면입니다.

호스트명(Hostname)이 있고 포트 번호(Port number)가 있는데 포트 번호의 경우 로컬 테스트 시 7545를 그대로 사용하는 경우가 많지만 종종 8545를 사용하기도 한다고 합니다. 참고만 해두시면 좋을 것 같네요.

네트워크 ID는 Ganache 서버의 내부 블록체인 식별자이기 때문에 거의 그대로 유지하여 진행한다고 합니다.

Automine 옵션을 활성화하면 트랜잭션이 완료될 때마다 다음 블록을 자동 채굴하고, Error on transaction failure 옵션을 활성화하면 다양한 트랜잭션 오류를 추적할 수 있게 해줍니다.

Ganache 내 SERVER 메뉴

 

ACCOUNTS & KEYS 탭 화면에서는 생성하는 계정의 기본 잔고(이더의 양)를 설정할 수 있습니다. 기본값은 100이더로 되어있고 변경 가능합니다.

계정의 개수 또한 설정 가능한데요. 기본은 10개로 되어있으나 +- 변경 가능합니다. 해당 부분의 개수를 수정하게 된다면 Quickstart 선택 시 보여졌던 리스트 화면의 리스트 개수가 설정한 만큼 나온다고 생각하시면 될 것 같습니다.

그리고 니모닉(mnemonic) 관련 옵션이 있는데 니모닉은 여러 단어를 결합한 시드 문구를 사용하여 각 계정의 공개 키와 개인 키를 생성하는 방법입니다.

HD Mnemonic 옵션을 활성화 하면 이것을 자동 생성하도록 해주며, 비활성화 시 기본적으로 입력된 니모닉을 사용하게 됩니다.

하지만 되도록 테스트 시 HD 니모닉은 자동 생성 하지말고 기본 제공되는 니모닉을 사용하는 것이 작업 시 편할 거라고 하네요.

참고 : 니모닉은 우리가 지갑 복구 시 본인 확인용으로 체크하는 12개의 임의의 단어 나열입니다.

니모닉 관련 내용 참고 블로그 : Mnemonic 이란? - Henry Kang

Ganache 내 ACCOUNTS&KEYS 메뉴

 

Chain 탭 화면에서는 가스 한도(Gas limit)와 가스 가격(Gas price)을 설정할 수 있습니다.

각 블록 및 트랜잭션에 사용할 한도는 기본 설정되어있지만 역시 변경 설정 가능합니다.

Hardfork 에는 여러 옵션이 있으며 테스트 진행 시 시스템이 자동으로 설정한 값을 사용해도 되지만 Petersberg과 Muir Glacier도 많이 사용한다고 합니다.

그리고 하드포크라는 용어가 생소하여 관련해서 검색해보았는데요. 시간되실 때 참고 링크를 한번 읽어보셔도 좋을 것 같습니다.

 

Ganache 내 CHAIN 메뉴

 

 

마지막으로 Advanced 탭 화면은 로그를 파일로 저장하는 옵션이 있습니다

바로 OUTPUT LOGS TO FILE 옵션인데요. 해당 옵션을 활성화하면

LOG FILE DIRECTORY 옵션이 노출되며, 폴더를 지정해주면 해당 폴더 모든 유형의 출력 로그에서 발견되는 모든 오류가 지정한 폴더에 기록됩니다.

여기까지 설정하고 우측 상단의 START 버튼을 클릭하면 Quickstart 설정 시 보았던 것과 같이 계정 리스트가 뿌려진 화면이 출력된 것을 볼 수 있습니다.

상단에 WORKSPACE 란에 위에 적었던 TEST_01 로 생성된 것이 확인되실까요?

Ganache 내 새로운 TEST_01 워크스페이스 생성 화면

 

실행된 화면의 상단 탭도 간단하게 설명드리겠습니다.

진입 시 보시게되는 Accounts 메뉴는 workspace 생성 시 설정한 계정의 정보를 노출하는 리스트 화면이며, Blocks 메뉴를 보면 리스트가 한 개 있는 것을 보실 수 있는데 현재 채굴 중이라는 것입니다.

Transactions 메뉴는 단어 그대로 발생하는 모든 트랜잭션이 기록되는 화면이고, Contracts 메뉴는 실행 중인 모든 계약이 기록되는 화면입니다. 스마트 계약 시 모두 여기에 표시되니 확인하시면 될 것 같습니다.

Events 메뉴가 있는데 해당 부분은 조금 더 확인 후 내용 보완하겠습니다.

Logs 메뉴는 말 그대로 발생하는 모든 로그나 오류를 Logs 폴더에 자동으로 기록하는 곳입니다.

 

기본적인 메뉴에 대한 설명은 이것으로 정리하고 위에 잠시 말씀드린 것처럼 Remix IDE 와 함께 MetaMask까지 연결하여 사용 가능한데요.

관련하여 Remix에 대해 먼저 잠깐 설명드리면,

Remix라는 테스트 작업 진행 시 용이하게 사용 가능한 오픈 소스 통합 개발 환경(IDE)이 있는데 이것을 이용하여 브라우저에서 직접 Solidity 계약을 작성, 배포할 수 있고 코드를 컴파일할 수도 있으며, 로컬 블록체인이나 이더리움 메인넷에도 배포할 수 있습니다. 

메타마스크도 연결하여 사용할 수 있는데 이 부분도 나중에 필요 시 정리하여 간략한 사용법을 올리겠습니다.

Remix IDE에서 ganache 를 이용하려면 작성한 솔리디티 파일을 컴파일 후 좌측 패널의 Deploy & run transactions 메뉴에서 ENVIRONMENT 의 옵션 중 web3 provider 를 선택하여 ganache 에서 제공하는 서버의 주소를 동일하게 일치시켜 입력해주면 연결됩니다.

해당 연결이 완료된 후 계약을 배포(Deploy 버튼 Click 후 에러 없이 성공)하면 ganache 의 트랜젝션 메뉴에 성공한 계약 생성 리스트가 뜨게 됩니다.

솔리디티 파일 상 코드로 입력한 store 값들이 좌측 패널이 나타날텐데 해당 store 의 값들을 변경하여 테스트를 해보면 계약이 변경 생성될 때마다 가스 비용이 사용되는 것을 확인할 수 있습니다.

 

이것으로 Ganache에 대한 소개는 마치고, 해당 글 작성 시 솔리디티 (Solidity)에 대한 내용이 있었는데요. 솔리디티 컴파일 관련 추가 정보와 기본 요소인 가스에 대한 부분 관련해서 추가적으로 참고해두시면 좋을 것 같아 번외편처럼 잠깐 설명드리려고 합니다. 세부 내용은 블록체인의 정의가 정리되어있는 블록체인이 필요한 이유 라는 글과 함께 스마트 컨트랙트스마트 컨트랙트는 뭘로 만들어요? 글이 작성되어있으니 함께 확인 부탁 드리며, 제 글은 이전 글들의 추가 참고 내용 정도로 봐주시면 좋을 것 같습니다.

 

EVM, 이더리움 가상 머신(Ethereum Virtual Machine)

EVM은 스마트 계약 기반의 탈중앙화 앱을 실행하기 위해 이더리움에서 사용되는 소프트웨어 플랫폼입니다.

그런데 EVM은 사실 솔리디티를 읽지 못하기 때문에 솔리디티를 컴파일해주어야 한다고 해요. 코드와 솔리디티를 컴파일하면 옵코드(op_codes)와 바이트코드(Bytecode)로 바뀌게 되고 그 중 바이트코드가 이더리움 가상 머신이 실제로 읽을 수 있는 언어라고 합니다.

그래서 솔리디티를 사용하여 스마트 계약 생성 시 옵코드와 바이트코드로 컴파일해야 이더리움 가상 머신이 바이트코드를 읽고 작업을 진행하는 것으로 알아두시면 좋을 것 같습니다.

가스 (Gas)

가스는 이더리움 네트워크에서 특정 작업을 수행하는 데 필요한 컴퓨팅 파워의 양을 측정하는 단위이며, 트랜잭션을 성공적으로 수행하기 위한 수수료를 말하는데요.

이더리움의 모든 트랜잭션에는 가스 비용이 드는데 해당 비용은 이더리움의 암호화폐인 이더로 지불하게 됩니다.

필요한 가스의 양은 스마트 계약의 규모와 속도에 따라 달라지기 때문에 계약을 아주 빠르게 처리할 필요가 있다면 비용 증가, 반대로 시간적 여유가 있다면 비용을 줄이는 등의 지불할 가스 비용을 책정하는 옵션이 있으니 상황에 따라 선택하여 진행 가능합니다.

이더리움 가스 가격의 단위는 Gwei 라고 하며, 1gwei는 1이더의 10억분의 1입니다.

1 gwei = 0.000000001 ETH

“모든 거래에는 가스 비용이 든다” 라고 알고 계시면 좋을 것 같습니다.

 

마치며

강의를 들으면서 깊지는 않지만 사용하시는 부분에서 알아두면 좋을 것 같다고 생각되는 옵션들을 설명드려보았습니다. 조금이나마 블록체인 관련하여 작업 시 도움이 되면 좋겠습니다.

Ganache와 소소한 정보 등 내용 정리는 여기까지 입니다.

부족한 글 읽어주셔서 감사합니다. 🙇🏻‍♀️

그럼 안녕히…👋 -The End-

 

참고 문서