게스
게스(Geth)는 go-ethereum의 약자이다. Go에서 구현 된 전체 이더넷 노드를 실행하기위한 다목적 명령 줄 도구이다. 명령 행 부속 명령 및 옵션, Json-rpc 서버 및 대화식 콘솔의 세 가지 인터페이스를 제공한다.
목차
개요
게스(Geth)는 이더리움 재단(Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발되었다. 게스를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드node라고도 불림)에 연결하는 작업을 먼저 시작하고 블록체인의 전체 사본을 내려받게 된다. 게스는 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신한다. 또한 블록을 채굴하고, 블록체인에 트랜잭션을 추가하고 블록의 트랜잭션을 검증하며 트랜잭션을 실행할 수도 있다. 그리고 RPC를 통해 상호작용할 수 있는 API를 노출하여 서버 역할을 하기도 한다. 블록체인에 연결할 수 있는 자바스크립트 클라이언트(geth console)도 있다. Ethereum 블록 체인의 노드 역할을하며 사용자가 Ether을 마이닝하고 EVM에서 실행되는 소프트웨어 인 Ethereum VirtualMachine을 만들 수 있는 프로그램이다.[1]
Geth 설치 및 실행
Mac
Homebrew를 통해서 쉽게 설치 할 수 있다. $ brew tap ethereum/ethereum $ brew install ethereum
- 설치확인
$ geth version
윈도우
https://geth.ethereum.org/downloads/ 에서 받으면 된다. zip 파일을 다운받아 설치하면 자동으로 PATH 환경 변수가 추가된다.
- 설치확인
geth.exe를 실행 후, CMD에서 version을 확인하면 된다. [2]
실행
$ geth --networkid 4649 --nodiscover --maxpeers 0 --dataidr /PATH_TO/test_data console 2>> /PATH_TO/test_data/geth.log 명령어에 대한 설명과 옵션에 대해 설명
$ geth --networkid 4649 --nodiscover --maxpeers 0 --dataidr /PATH_TO/test_data console 2>> /PATH_TO/test_data/geth.log Geth 명령어 * networkid 4649 네트워크 식별자(정수), 0~3은 예약된 숫자이다. 0~3을 제외한 숫자를 작성하면 된다. * nodiscover 생성자의 노드를 다른 노드에서 검색할 수 없게 하는 옵션이다. 현재로써는 노드를 추가하는 것은 수동으로 해야한다. 이 옵션을 하지 않으면 동일한 Genesis 파일과 네트워크 ID를 가진 블록체인 네트워크에 생성자의 노드가 연결 될 수 있다.
$ geth --networkid 4649 --nodiscover --maxpeers 0 --dataidr /PATH_TO/test_data console 2>> /PATH_TO/test_data/geth.log Geth 명령어 * maxpeers 0 생성자의 노드에 연결할 수 있는 노드의 수를 지정. 0을 지정하면 다른 노드와 연결 X * datadir /PATH_TO/test_data 방금 우리가 생성한 데이터 폴더를 지정한다. 미지정 시, 기본 디렉토리를 사용한다.
$ geth --networkid 4649 --nodiscover --maxpeers 0 --dataidr /PATH_TO/test_data console 2>> /PATH_TO/test_data/geth.log Geth 명령어 * console 대화형 자바스크립트 콘솔을 가동한다. * 2>> /PATH_TO/test_data/geth.log 로그 파일을 만들 때 사용하는 옵션. 에러를 해당 경로의 파일에 저장한다.[2]
로컬 테스트넷에서 Geth 가동
- 데이터 디렉토리 송수신한 블록 데이터와 계정 정보를 저장할 폴더를 말한다. 데이터 디렉토리를 별도 지정하지 않으면 ~/.ethereum 이 기본 폴더로 지정된다.
- 우선 바탕화면에 test_data 폴더를 만든다. 2) Genesis 파일 앞서 설명했듯이 Genesis 블록에 대한 정보가 저장된 JSON 형식의 텍스트 파일이다. 사설 테스트넷을 구축할 경우 0 부터 블록 체인을 만들기 때문에 Genesis 파일을 만들어준다.
특징
게스를 실행하면 이더리움 프론티어 라이브 네트워크에 참여할 수 있다.
- 주소간 자금 이체
- 계약서 작성 및 거래
- 블록 히스토리 탐색
- 개인 에테르
지원되는 플랫폼은 리눅스(Linux), 맥(Mac Os) 및 윈도우(Windows)이다.
명령어
account 명령어
- list : Print summary of existing accounts
- new : Create a new account
새로운 계정 생성
- update : Update an existing account
비밀번호 바꾸기 $ geth account update 0 : 명령으로 0번째 계정을 업데이트 할 수 있다.
- import : Import a private key into a new account
새로운 계정에 private key 생성, key 파일로 계정 생성 geth account import/path/to/<keyfile> [3]
인터페이스
- 자바스크립트(Javascript)콘솔: geth대화식 콘솔로 시작할 수 있으며, JavascriptAPI를 노출시켜 노드와 상호작용하는 자바스크립트런타임 환경을 제공한다. 자바스크립트 콘솔 API 에는 web3추가 관리 API뿐만 아니라 자바 스크립트 앱 API도 포함된다.
- JSON-RPC 서버 : JSON-RPC APIgeth를 노출하는 json-rpc 서버로 시작할 수 있다.
- 명령 행 옵션은 명령 행 매개 변수와 하위 명령을 문서화한다.[4]
attach 이후에 javascript로 수행 할 수 있는 명령어
- eth.accounts : 현재 생성된 계정 배열
- eth.blockNumber : 현재 채굴된 블록의 번호
- eth.hashrate : 현재 해시레이트
- eth.coinbase : 채굴이 진행되면 보상을 받을 계정. 보통 이것을 eth.accounts[0]과 동일하게 셋팅한다.
- eth.mining : 현재 채굴중인지 여부
- eth.getBalance(account) : 계좌 잔고 조회
- eth.getTranaction(tx) : 트랜잭션의 정보
- eth.sendTransaction({from:account, to:account, value:wei}) : 트랜잭션 보내기
- eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:web3.toWei(1,"ether")})
- eth.pendingTransactions : 현재 진행을 기다리고 있는 트랜잭션 [5]
활용
Geth를 사용한 CPU 마이닝
이더리움(Ethereum)의 첫 번째 릴리스 인 Frontier에서는 a) GPU와 b) Ethereum 클라이언트인 게스만 있으면 된다. CPU마이닝은 가능하지만 너무 비효율적이다. 현재 게스에는 CPU광부만 포함되어 있으며 팀은 GPU 광부분기를 테스트하고 있지만 프론티어의 일부는 아니다. Ethereum의 C++ 구현은 Eth (CLI), AlethZero (GUI) 및 EthMiner (독립형 광부)의 일부로 GPU 광부를 제공한다.
- 계정관리
- 암호화토큰, 분산앱
종류
게스 v1.9.0 최신 클라이언트
각주
- ↑ 〈게스클라이언트〉, 《프로그래머스》
- ↑ 2.0 2.1 DongHyeok Lee, 〈Blockchain Study(3) - 이더리움(Geth)〉, 《SlideShare》, 2018-03-27
- ↑ IT한다옹, 〈geth 명령어 정리 및 활용〉, 《티스토리》, 2018-03-10
- ↑ Chris Chinchilla, 〈겟〉, 《깃허브》, 2019-08-01
- ↑ Duongame, 〈이더리움 geth 명령어 모음〉, 《Steemkr》, 2018-02-27
참고자료
- 〈게스클라이언트〉, 《프로그래머스》
- Chris Chinchilla, 〈겟〉, 《깃허브》, 2019-08-01
- 산두 타우, 〈GETH 란 무엇입니까?〉, 《티스토리》, 2019-08-01
- DongHyeok Lee, 〈Blockchain Study(3) - 이더리움(Geth)〉, 《SlideShare》, 2018-03-27
- IT한다옹, 〈geth 명령어 정리 및 활용〉, 《티스토리》, 2018-03-10
- Duongame, 〈이더리움 geth 명령어 모음〉, 《Steemkr》, 2018-02-27