BlockChain

(BlockChain) Ganache

JJeongHyun 2023. 2. 10. 14:06
반응형

ganache

 

ganache

  • 테스트용 로컬 이더리움 네트워크
    • 테스트 목적으로 로컬에 설치해서 사용할 수 있는 일종의 간이 블록체인
  • ganache의 장점
    • Geth 등 보다 빠른 속도
    • 별 다른 세팅 없이 바로 테스트가 가능
    • 기본으로 10개의 계정이 생성되며 각 계정에 100 Coin씩 지급
      • 서버연결 시에 어느 정도의 계정의 수와 Coin량을 조절할 수 있다
  • 단점
    • 채굴을 해도 보상이 없다
    • 외부의 네트워크 피어로 연결이 안 된다
    • 서버종료 시 모든 데이터가 삭제된다

ganache Install

npm i -g ganache-cli
  • Ubuntu 환경에서 node.js가 설치가 되어 있어야 한다
  • cli : Commend Line Interface

 

ganache-cli 실행

npx ganache-cli
# ganache-cli

ganache-cli 실행 후 화면

ganache-cli options

-a 100 | --account 100 
-e | --defaultBalanceEther 1000
-b 60 | --blockTime 60
-p | --port
-h | --host | --hostname
-g | --gasPrice
-l | --gasLimit
--chainId
  • -a 100 | --account 100 : 서버시작 시 생성할 계정의 수, 기본값 10
  • -e | --defaultBalanceEther 1000 : 서버 시작 시 생성되는 계정의 소지 Ether, 기본값 100
  • -b 60 | --blockTime 60 : 자동 마이닝 시간 간격, 초 단위, 지정하지 않은 게 좋다, 기본적으로 트랜잭션 발생 시 마이닝을 바로 진행한다
  • -p | --port : 사용할 포트, 기본값 8545
  • -h | --host | --hostname : 기본 접속 주소, http.addr 랑 같은 기능을 한다고 생각하면 된다. 기본값은 127.0.0.1
  • -g | --gasPrice : wei의 가스 가격, 기본값 20000000000 (20 GWei)
  • -l | --gasLimit : 블록 가스 한도, 기본값 0x6691b7
  • --chainId : 체인 아이디, 기본값 1337

metamask 내의 네트워크 ganache 연결

네트워크 수동 추가 형광펜 표시

 

ganache 네트워크 상세 등록

ganache 네트워크 설정값

 

 

ganache의 RPC

  • 기존 RPC 종류
    • eth
      • accounts
      • blockNumber
      • coinbase
      • getBalance
      • sendTransaction
    • miner
      • start : 자동 마이닝 시작
      • stop : 자동 마이닝 종료
    • personal
      • unlockAccount
      • newAccount
      • sendTransaction
  • ganache RPC
    • evm
      • snapshot : 현재 상태를 저장한다
      • revert : snapshot으로 상태를 되돌린다. 되돌린 스냅샷 기준으로 이후 스냅샷은 삭제된다
      • mine : 강제 채굴
      • unlockUnknownAccount : unlockAccount와 같다. 단, 비밀번호가 없이
      • lockUnknownAccount : lockAccount와 같다. 단, 비밀번호 없이

 

  • evm_snapshot
curl -X POST -H "content-type:application/json" --data '{"id":1337, "jsonrpc": "2.0", "method":"evm_snapshot"}' http://localhost:8545

evm_snapshot 실행 curl 코드
evm_snapshot 결과 화면

 

  • evm_revert
curl -X POST -H "content-type:application/json" --data '{"id":1337, "jsonrpc": "2.0", "method":"evm_revert", "params":["0x3"]}' http://localhost:8545

evm_revert 실행 curl 코드
evm_revert 실행 결과 화면

 

metamask 계정들 결과

metamask evm_revert 결과 후 계정들 ETH