[Ethereum] 이더리움의 이해(2)

geth

geth[1]는 이더리움, 위스퍼, 스웜 노드를 구현한 것이며, go 언어로 작성된 CLI 애플리케이션이다. 이 기능을 묶은 이유는 하나의 DApp처럼 보일 수 있게 할 뿐만 아니라, 하나의 노드를 통해 클라이언트가 세 개의 DApp에 접근할 수 있기 때문이다.


geth 설치 - Ubuntu

apt을 이용하여 설치하는 것을 권장한다. 다음의 명령어를 터미널에서 실행해 보자.

1
2
3
4
sudo apt install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt update
sudo apt install ethereum

JSON-RPC 및 자바스크립트 콘솔

geth는 다른 애플리케이션이 통신할 수 있도록 JSON-RPC API를 HTTP, 웹소켓, 다른 프로토콜 등으로 제공한다. geth는 자바스크립트 API를 이용, 프로그래밍적으로 상호작용할 수 있도록 대화식 자바스크립트 콘솔을 제공한다. 대화식 콘솔은 IPC를 통한 JSON-RPC를 사용하여 geth와 통신한다.


메인 네트워크 연결

이더리움 네트워크의 노드들은 기본적으로 30303 포트를 사용한다. 그러나 다른 포트 번호를 사용해도 리스닝에는 문제가 없다.

geth 명령어만 실행하면 메인넷 네트워크에 연결할 수 있다.

1
geth --datadir "/users/packt/ethereum" --networkid 1

--datadir 옵션은 블록체인을 저장할 경로를 지정할 때 사용한다. 만약 지정하지 않는다면, 기본 경로는 $HOME/.ethereum이다.

--networkid는 네트워크 ID를 지정할 때 사용한다. 1은 메인넷 네트워크의 ID이다. 설정하지 않으면 default 값으로 1을 사용한다.


개인 네트워크 생성

개인 네트워크 생성은 랜덤 네트워크 ID를 지정하면 된다. geth는 로그와 디버깅을 위한 여러 플래그를 제공한다. 따라서 개인 네트워크 대신, --dev 플래그를 사용하면 다양한 디버깅 킻 로그 플래그가 활성화된 개인 네트워크가 실행된다.


계정 생성

geth를 통해 계정을 만들 수 있다. 아래 명령어를 실행해 보자.

1
geth account new

계정 리스트는 다음의 명령어로 볼 수 있다.

1
geth account list

채굴

geth는 기본적으로 채굴을 시작하지 않는다. --mine 옵션을 제공해야 채굴을 시작한다. 그 외에도 몇 가지 다른 옵션이 있다.

1
geth --mine --minerthreads 16 --etherbase '489b4e22aab35053ecd393b9fc35f4flde7b194' --unlock '489b4e22aab35053ecd393b9fc35f4flde7b194'

해싱을 위해 사용하기 위한 총 스레드 수를 지정하기 위해서는 minerthreads 옵션을 사용한다. default 값은 8이다. etherbase는 채굴을 통한 보상을 지급할 계정이다. 기본적으로 계정은 암호화되어 있기 때문에, 계정 내 이더에 접근하기 위해 계정과 연관된 개인 키를 사용해 복호화한다. unlock 옵션을 사용해 하나 이상의 계정을 잠금 해제할 수 있으며, 다수의 주소는 콤마를 이용해 분리한 후 제공하면 된다.


빠른 동기화

빠른 동기화는 전체 블록 다운로드 대신 블록 헤더, 트랜젝션 확인, 최신 상태의 DB만 받는다. 자세한 내용은 이 링크를 참고하자.


이더리움 지갑

이더리움 지갑은 계정 생성, 이더 송금, 컨트랙트 배포, 컨트랙트 함수 호출 등 다양한 일을 할 수 있는 이더리움 UI 클라이언트이다. 이 지갑은 geth를 번들로 포함한다. 이더리움 지갑은 IPC를 사용, geth와 통신하며 geth는 파일 기반의 IPC를 지원한다.



이 포스트의 모든 내용은 이더리움을 활용한 블록체인 프로젝트 구축(에이콘) 책을 참고하여 작성되었습니다.




  1. go-ethereum이라고도 불림 ↩︎

Share