이더리움 클라이언트

위키원
9teahyun (토론 | 기여)님의 2019년 8월 6일 (화) 11:14 판 (활용)
이동: 둘러보기, 검색

이더리움 클라이언트(Ethereum Clients)이더리움은 중앙 집중형 서버 프로그램이 따로 존재하지 않는다. 오로지 클라이언트 프로그램만 존재한다. 이더리움 클라이언트는 멀티 플랫폼 환경을 지원하기 위해 다양한 프로그래밍 언어로 개발되고 있다.

개요

이더리움 사양을 구현하고 다른 이더리움 클라이언트와 P2P 네트워크를 통해 통신하는 소프트웨어 응용 프로그램 으로 서로 다른 클라이언트가 다른 팀과 다른 프로그래밍 언어로 구현되는 동안 이들은 모두 동일한 프로토콜을 따른다. 따라서 모두 동일한 이더리움 네트워크를 운영하고 상호작용하는데 사용될 수 있다. 이더리움은 오픈 소스 프로젝트이며 모든 주요 고객을 위한 소스코드는 오픈 소스 라이센스에서 무료로 사용할 수 있다. 이더리움은 일반적으로 다른 블록체인보다 네트워크에서 실행되는 구현의 다양성이 더 크다.[1]

특징

이더리움 클라이언트는 이더리움 블록체인에 참여하는 노드이다. 즉 블락이 생성되면 그 정보를 전파 받는 역할을 하는 것이다. 따라서, 싱크된 블록체인 데이터를 가지고 있어야 하며 이더리움 클라이언트는 블록체인 네트워크의 노드이면서, 일반 사용자의 접속을 허용하고 블락체인과 연결시켜주는 역할도 담당한다. 그래서 일반 사용자는 이더리움 클라이언트, 즉 노드에 접속하여 geth와 같은 명령어로 블록체인 정보를 얻거나, 스마트 컨트랙트를 사용할 수 있다. 이더리움 클라이언트는 블록체인 데이터를 모두 가지고 있다. 한 사용자가 생성한 스마트 컨트랙트는 이더리움 클라이언트를 통해서 블록에 포함되고, 결국 블록체인으로 연결된다.[2]이더리움 클라이언트 프로그램은 리모트 프로시더 콜(Remote Procedure Call) (RPC) 명령어 인터페이스를 자바스크립트(Javascript)의 제이에스오엔(JSON)형태로 지원한다. 이것을 제이에스오엔 알피시 에이피아이(JSON-RPC API)라고 하는데, 이것을 이용해서 블록체인의 정보를 얻거나 거래를 생성하는 명령을 원격으로 할 수 있다.

Geth

이더리움 블록체인 네트워크(Ethereum Blockchain Network)

Geth는 이더리움 재단(Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발되었다. Geth를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드node라고도 불림)에 연결하는 작업을 먼저 시작하고 블록체인의 전체 사본을 내려받게 된다. Geth는 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신한다. 또한 블록을 채굴하고, 블록체인에 트랜잭션을 추가하고 블록의 트랜잭션을 검증하며 트랜잭션을 실행할 수도 있다. 그리고 RPC를 통해 상호작용할 수 있는 API를 노출하여 서버 역할을 하기도 한다. 블록체인에 연결할 수 있는 자바스크립트 클라이언트(geth console)도 있다.

패리티(Parity)

다양한 클라이언트가 서로 연결된 이더리움 블록체인 네트워크(Ethereum Blockchain Network)

패리티(Parity)는 이더리움 프로토콜의 또 다른 구현체이며, 러스트(Rust) 프로그래밍 언어로 개발되었다. 현재 Parity Inc. 라는 기업에서 운영하고 있으며 사실 이더리움 네트워크에 접속할 수 있는 클라이언트 소프트웨어를 개발하는 길은 누구에게나 열려 있다. C++, 파이썬 및 다른 언어로 작성된 클라이언트도 있다. 원한다면 이더리움 황서의 사양을 따라 자신의 클라이언트를 구현할 수 있다.

활용

geth는 이더리움의 모든 기능을 사용할수 있는 클라이언트로 설치는 바이너리를 사용하여 설치하는 방법과 소스를 빌드하여 설치하는 방법이 있다. 바이너리는 다음과 같이 설치할수 있다.


$ sudo apt-get install software-properties-common

$ sudo add-apt-repository -y ppa:ethereum/ethereum

$ sudo apt-get update

$ sudo apt-get install ethereum


소스를 사용하여 빌드하는 방법은 다음 순서로 진행을 한다. (소스 빌드는 ubuntu 환경을 기준으로 한다.) 먼저 이더리움 geth는 Go 언어로 작성이 되었기 때문에 Go lang을 설치합니다. geth 빌드에는 go lang 버전이 1.9 이상이 필요하며, 버전 1.9.1 버전이하에서는 빌드시에 에러가 발생하기 때문에 반드시 go lang 버전이 1.9.2 이상이 필요하다. Go lang의 다운로드 페이지(https://golang.org/dl/) 를 참고하여 최신버전을 설치한다.(예시버전 1.9.5)


$ curl -O https://storage.googleapis.com/golang/go1.9.5.linux-amd64.tar.gz

$ tar -C /usr/local -xzf go1.9.5.linux-amd64.tar.gz


위와같이 실행하면 /usr/local/go 에 설치가 된다. (권한문제가 있는경우 sudo 로 실행한다) 설치가 완료되면 실행경로를 추가해준다. (/etc/profile or $HOME/.profile)


$ export PATH=$PATH:/usr/local/go/bin

$


Go lnag 설치가 완료되었으면 다음과 같이 소스를 다운로드 받은후에 빌드를 한다.


$ git clone https://github.com/ethereum/go-ethereum

$ cd go-ethereum

$ make geth


안정된 버전의 소스를 사용하기 원한다면 다음과 같이 git branch를 release branch로 변경해도 된다. 다음과 같이 현재 가장 최신의 release branch는 1.8로 하기와같이 1.8 branch로 변경후 빌드를 한다.

각주

  1. 안성주지몬,〈[마스터링 이더리움Mastering Ethereum- Clients〉,《개발이야기》, 2018-09-26
  2. 이더리움 스마트 컨트랙트 동작방식 종결자!!! DApp 개발 가즈아〉, 《스팀잇》, 2017년도

참고자료

우분투 설치법-https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu