개발환경 셋팅 (Geth, 가나슈, Node.js, 트러플)

CHOYEAH·2023년 10월 22일
1
post-thumbnail

1. Go 설치

Downloads

설치가 완료되면 터미널에 설치 위치와 go 버전을 확인

$ which go (설치 위치를 확인)
$ go version (go 버전을 확인)

2. Geth 설치

https://geth.ethereum.org/downloads/

게스 툴을 포함한 게스를 다운받아서 압축을 해제 후 /usr/local/bin/ 디렉토리에 압축 해제한 폴더의 프로그램들을 복사, 붙여넣기 + 버전 확인

❯ geth version
Geth
Version: 1.10.15-stable
Git Commit: 8be800ffa9c4992666e2620e0ab4725a1a83352b
Git Commit Date: 20220105
Architecture: amd64
Go Version: go1.17.5
Operating System: darwin
GOPATH=
GOROOT=go

간단 사용법 & 셋팅

Geth 구동해보기

$geth
$exit #정지

옵션 살펴보기

  • rpc //rpc 인터페이스를 가능하게 함 (json-rpc 활성, http-roc 서버를 활성화)
  • networkid //네트워크를 식별할 수 있는 id, 0~3을 제외한 임의의 정수 (본인이 임의의 수를 정함), 1=frontier 2. morden(disused) 3. ropsten, 4, rinkeby
  • rpcaddr //geth를 실행하고 있는 서버의 ip 주소를 설정, 기본값localhost, “0.0.0.0” 모든 인터페이스 허용
  • rpcport //임의의 포트 지정하지 않으면 8545로 사용한다.
  • rpcapi // browser-solidity에서 이용하는 api, 샘플 ap에서 이용할 api로 net,eth,web3,personal을 지정한다.
  • rpccorsdomain //크로스도메인 허가, 브라우저에서 직접 json-rpc를 송신할 경우 브라우저 pc의 ip주소를 지정해야 함 “*”를 지정하면 모두 허용하게 되지만, 가급적 허용할 ip를 지정하는 것이 좋다.
  • nodiscover 생성자의 노드를 다른 노드에서 검색할 수 없게 하는 옵션(동일한 제너시스 파일과 동일한 네트워크 id를 가진 사람이 실수로 체인에 연결하는 상황을 방지한다)
  • maxpeers 0 생성자의 노드에 연결할 수 있는 노드의 수, 0을 지정하면 다른 노드와 연결하지 않음
  • console 실행 후 자바스크립트 콘솔을 기동, 미 실행 시 다른 cmd창에 계속 진행
  • datadir //뒤에 genesis.json파일 경로 설정

geth의 Command line options에 대한 자세한 설명은 다음을 참고한다. https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options

매번 구동시 마다 편의를 위해서 alias를 설정

$ echo "alias gethstart='geth --networkid 4649 --nodiscover --maxpeers 0 --datadir ~/data_testnet --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpccorsdomain "*" --rpcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --verbosity 6 console 2>> ~/data_testnet/geth.log'" >> ~/.bashrc

로그인시 마다 적용하기 위해서는 .profile 에 해당 내용을 Shell에 반영

$ source ~/.bashrc

3. 가나슈 설치

가나슈는 스마트 컨트랙트 개발 단계에서 여러 편리한 인터페이스를 제공한다.

이더리움 노드를 인메모리로 돌려서 트랜잭션을 빠른속도로 처리가능하며 계정들도 미리 생성되어있다.

Truffle Suite - Truffle Suite

다운로드 및 설치

화면설명

  • ACCOUNT

    • CURRENT BLOCK: 노드에서 채굴한 마지막 블록 넘버
    • GAS PRICE: 노드가 트랜잭션을 처리하기위한 최소한의 가스 가격
    • GAS LIMIT: 트랜잭션을 무사히 마치기 위해 필요한 최대한의 가스
    • NETWORK ID: 가나슈 서버의 내부 블록체인 식별 아이디가 5777로 초기 설정되어서 이더리움 노드를 실행중
    • RPC SERVER: Geth나 메타마스크에서 이 주소로 연결하면 가나슈 환경을 그대로 쓸 수 있도록 해줌
    • MINING STATUS: 새로운 블록을 채굴하는 속도
    • MNEMONIC: 연산기호, 여러 단어들의 조합해서 아래의 계정들을 생성하는 비밀 문자 (니모닉은 가나슈를 설치할때 자동으로 생성됨) (ex: shaft clap gun expire course crouch magnet furnace grant shop used vacant)
    • TX COUNT: 좌측의 계정에서 트랜잭션을 몇번 처리했는지 출력
    • INDEX: 좌측의 계정이 현재 생성된 10개 계정들 중 몇번째에 위치해있는지를 보여줌
    • 키 아이콘: 아이콘 클릭시 해당 계정의 비밀키를 볼 수 있음
  • BLOCKS: 현재 노드가 채굴한 블록이 몇개인지 보여준다.

  • TRANSACTION: 노드에서 진행한 트랜잭션의 리스트를 볼 수 있음

  • LOGS: 현재 노드의 모든 로그를 출력

  • 검색창: 블록넘버나 트랜잭션 해시를 검색해서 원하는 정보를 검색 가능

  • 설정
    SERVER: 호스트명과 포트넘버 네트워크 아이디를 설정가능하며, 자동채굴 여부 설정, 채굴 속도 설정 가능
    ACCOUNTS & KEYS: 가나슈 내부에서 쓸 수 있는 계정의 갯 수 설정, 니모닉 문장 변경, 가나슈 시작시마다 니모닉 문장 오토 제너레이션 가능
    CHAIN: 가스 한도와 가스 가격 조정 가능
    ADVANCED: 로그 설정 및 구글 애널리틱스를 온오프 가능 가능


4. NodeJS, NPM 설치 (LTS버젼)


5. 트러플 설치

https://github.com/trufflesuite/truffle

트러플은 스마트 컨트랙을 컴파일하고 테스트하며 배포도 할 수 있게 해주는 프레임웍이다.

설치시 솔리디티, web3.js 또한 같이 설치된다.

npm 버젼은 6으로 설치한다. 그 이상인 경우 에러발생

재설치 예: $ npm cache clean -f, $npm install -g npm@6

npm i -g truffle

truffle version
Truffle v5.4.31 (core: 5.4.31)
Solidity v0.5.16 (solc-js)
Node v16.13.2
Web3.js v1.5.3

6. 메타마스크 가나슈 서버 연동

호스트와 포트 변경

메타마스크의 네트워크를 Localhost 8545로 선택하여 가나슈와 연결

마지막으로 가나슈의 시드 프레이즈를 가져와 메타마스크에 로그인

profile
Move fast & break things

0개의 댓글