게스 편집하기
편집을 되돌릴 수 있습니다.
이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 | 당신의 편집 | ||
3번째 줄: | 3번째 줄: | ||
==개요== | ==개요== | ||
게스(Geth)는 [[이더리움재단]](Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발되었다. 게스를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드node라고도 불림)에 연결하는 작업을 먼저 시작하고 블록체인의 전체 사본을 내려받게 된다. 게스는 [[블록체인]]의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신한다. 또한 블록을 채굴하고, 블록체인에 트랜잭션을 추가하고 블록의 트랜잭션을 검증하며 트랜잭션을 실행할 수도 있다. 그리고 [[RPC]]를 통해 상호작용할 수 있는 [[API]]를 노출하여 서버 역할을 하기도 한다. | 게스(Geth)는 [[이더리움재단]](Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발되었다. 게스를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드node라고도 불림)에 연결하는 작업을 먼저 시작하고 블록체인의 전체 사본을 내려받게 된다. 게스는 [[블록체인]]의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신한다. 또한 블록을 채굴하고, 블록체인에 트랜잭션을 추가하고 블록의 트랜잭션을 검증하며 트랜잭션을 실행할 수도 있다. 그리고 [[RPC]]를 통해 상호작용할 수 있는 [[API]]를 노출하여 서버 역할을 하기도 한다. | ||
− | + | [[블록체인]]에 연결할 수 있는 자바스크립트 클라이언트(geth console)도 있다. Ethereum 블록 체인의 노드 역할을하며 사용자가 Ether을 마이닝하고 EVM에서 실행되는 소프트웨어 인 Ethereum [[Virtual]][[ Machine]]을 만들 수 있는 프로그램이다.<ref>〈[https://programmers.co.kr/learn/courses/7322/lessons/42394 게스클라이언트]〉, 《프로그래머스》</ref> | |
− | [[블록체인]]에 연결할 수 있는 자바스크립트 클라이언트(geth console)도 있다. | ||
[[파일:이더리움_블록체인_네트워크.png|700픽셀|섬네일|오른쪽|설명]] | [[파일:이더리움_블록체인_네트워크.png|700픽셀|섬네일|오른쪽|설명]] | ||
32번째 줄: | 31번째 줄: | ||
==로컬 테스트넷에서 Geth 가동== | ==로컬 테스트넷에서 Geth 가동== | ||
*데이터 디렉토리
송수신한 블록 데이터와 계정 정보를 저장할 폴더를 말한다.
데이터 디렉토리를 별도 지정하지 않으면 ~/.ethereum 이 기본 폴더로 지정된다.
| *데이터 디렉토리
송수신한 블록 데이터와 계정 정보를 저장할 폴더를 말한다.
데이터 디렉토리를 별도 지정하지 않으면 ~/.ethereum 이 기본 폴더로 지정된다.
| ||
− | *우선 바탕화면에 test_data 폴더를 만든다.
2) Genesis 파일
앞서 설명했듯이 Genesis 블록에 대한 정보가 저장된 JSON 형식의 텍스트 파일이다.
사설 테스트넷을 구축할 경우 0 부터 | + | *우선 바탕화면에 test_data 폴더를 만든다.
2) Genesis 파일
앞서 설명했듯이 Genesis 블록에 대한 정보가 저장된 JSON 형식의 텍스트 파일이다.
사설 테스트넷을 구축할 경우 0 부터 블록 체인을 만들기 때문에 Genesis 파일을 만들어준다. |
==노드 설치 및 실행== | ==노드 설치 및 실행== | ||
− | + | 블록 체인 에 참여하려면 일반적으로 노드 가되기 위해 필요한 기능을 구현하는 클라이언트 소프트웨어를 실행한다 . 단순히 트랜잭션을 네트워크로 보내는 것과 같은 조치에도 일반적으로 노드가 필요하다. Ethereum 블록 체인에 참여 하려면 Go 프로그래밍 언어를 사용하여 구현 된 Ethereum 네트워크에서 노드를 실행하기위한 명령 줄 인터페이스 인 Ethereum Geth를 사용하여 수행 할 수 있다. | |
이더리움의 목표는 서로 다른 프로그래밍 언어로 작성된 여러 가지 클라이언트 소프트웨어 구현을 제공하여 이더리움 내에서 다양한 생태계를 조성하는 것이다. 그러나 지금까지 가장 성숙한 이더리움 구현은 "Go Ethereum"이며 [[게스]](Geth)로 축약된다. 다른 클라이언트, 특히 [[패리티]]가 있지만 Geth는 Ethereum 노드를 실행하기 위한 사실상의 참조 구현으로 볼 수 있다.<ref name="geth">Stefan Beyer, 〈[https://www.mycryptopedia.com/ethereum-geth-installing-and-running-a-node/ Ethereum Geth: Installing and Running a Node]〉, 《MYCRYPTOPEDIA》, 2019-03-27</ref> | 이더리움의 목표는 서로 다른 프로그래밍 언어로 작성된 여러 가지 클라이언트 소프트웨어 구현을 제공하여 이더리움 내에서 다양한 생태계를 조성하는 것이다. 그러나 지금까지 가장 성숙한 이더리움 구현은 "Go Ethereum"이며 [[게스]](Geth)로 축약된다. 다른 클라이언트, 특히 [[패리티]]가 있지만 Geth는 Ethereum 노드를 실행하기 위한 사실상의 참조 구현으로 볼 수 있다.<ref name="geth">Stefan Beyer, 〈[https://www.mycryptopedia.com/ethereum-geth-installing-and-running-a-node/ Ethereum Geth: Installing and Running a Node]〉, 《MYCRYPTOPEDIA》, 2019-03-27</ref> | ||
42번째 줄: | 41번째 줄: | ||
가장 낮은 수준에서 P2P (Peer-to-Peer) 프로토콜은 네트워크에서 통신을 담당하며 네트워크에서 피어를 검색하는 역할도 한다. 이 수준에서 사용되는 통신 메커니즘은 가십 알고리즘을 기반으로 한다 . 이 고전적인 분산 시스템 알고리즘은 1980 년대부터 시작되었으며 전염병 또는 소문이 인구를 통해 퍼지는 방식에 따라 네트워크 통신을 모델링한다. 아이디어는 간단하지만 강력하다. 네트워크의 노드는 메시지가 직접 연결된 다른 노드로 메시지를 릴레이 한 다. 이러한 노드는 이웃 노드로 간주 될 수 있다. 결국, 모든 노드는 전체 네트워크에 전파 될 때 릴레이 된 메시지를 받아야 한다. | 가장 낮은 수준에서 P2P (Peer-to-Peer) 프로토콜은 네트워크에서 통신을 담당하며 네트워크에서 피어를 검색하는 역할도 한다. 이 수준에서 사용되는 통신 메커니즘은 가십 알고리즘을 기반으로 한다 . 이 고전적인 분산 시스템 알고리즘은 1980 년대부터 시작되었으며 전염병 또는 소문이 인구를 통해 퍼지는 방식에 따라 네트워크 통신을 모델링한다. 아이디어는 간단하지만 강력하다. 네트워크의 노드는 메시지가 직접 연결된 다른 노드로 메시지를 릴레이 한 다. 이러한 노드는 이웃 노드로 간주 될 수 있다. 결국, 모든 노드는 전체 네트워크에 전파 될 때 릴레이 된 메시지를 받아야 한다. | ||
− | P2P 메커니즘 외에도 Ethereum Geth는 세 가지 주요 모듈을 구현한다. 실제 Ethereum 클라이언트 구현 외에도 Geth에는 Swarm 및 Whisper 도 포함된다 . Swarm은 IPFS (Interplanetary Filesystem) 와 유사한 분산 파일 시스템으로, 대량의 데이터를 저렴하고 분산 된 방식으로 저장하는 것을 목표로 한다. Whisper는 | + | P2P 메커니즘 외에도 Ethereum Geth는 세 가지 주요 모듈을 구현한다. 실제 Ethereum 클라이언트 구현 외에도 Geth에는 Swarm 및 Whisper 도 포함된다 . Swarm은 IPFS (Interplanetary Filesystem) 와 유사한 분산 파일 시스템으로, 대량의 데이터를 저렴하고 분산 된 방식으로 저장하는 것을 목표로 한다. Whisper는 블록 체인 트랜잭션에 의존하지 않고 엔드 포인트 간의 통신을 가능하게하는 분산 메시징 프로토콜이다. |
실제 이더리움 특정 모듈은 트랜잭션 처리를 위해 이더리움 가상 머신을 구현한다. 블록체인 상태는 LevelDB 키-값 데이터베이스에 저장된다. 애플리케이션이 실행중인 Geth 인스턴스에 연결하기 위해 JSON RPC API 가 노출된다. 직접 연결하거나 web3.js 와 같은 언어별 라이브러리를 통해 연결할 수 있다.<ref name="geth"></ref> | 실제 이더리움 특정 모듈은 트랜잭션 처리를 위해 이더리움 가상 머신을 구현한다. 블록체인 상태는 LevelDB 키-값 데이터베이스에 저장된다. 애플리케이션이 실행중인 Geth 인스턴스에 연결하기 위해 JSON RPC API 가 노출된다. 직접 연결하거나 web3.js 와 같은 언어별 라이브러리를 통해 연결할 수 있다.<ref name="geth"></ref> | ||
68번째 줄: | 67번째 줄: | ||
====인터페이스==== | ====인터페이스==== | ||
− | *자바스크립트[[(Javascript)]]콘솔: | + | *자바스크립트[[(Javascript)]]콘솔: geth대화식 콘솔로 시작할 수 있으며, Javascript[[API]]를 노출시켜 노드와 상호작용하는 자바스크립트런타임 환경을 제공한다. 자바스크립트 콘솔 API 에는 web3추가 관리 API뿐만 아니라 자바 스크립트 앱 API도 포함된다. |
− | *JSON-[[RPC]] 서버 : JSON-RPC | + | *JSON-[[RPC]] 서버 : JSON-RPC [[APIgeth]]를 노출하는 json-rpc 서버로 시작할 수 있다. |
*명령 행 옵션은 명령 행 매개 변수와 하위 명령을 문서화한다.<ref> | *명령 행 옵션은 명령 행 매개 변수와 하위 명령을 문서화한다.<ref> | ||
Chris Chinchilla, 〈[https://github.com/ethereum/go-ethereum/wiki/geth 겟]〉, 《깃허브》, 2019-08-01</ref> | Chris Chinchilla, 〈[https://github.com/ethereum/go-ethereum/wiki/geth 겟]〉, 《깃허브》, 2019-08-01</ref> | ||
87번째 줄: | 86번째 줄: | ||
==활용== | ==활용== | ||
===Geth를 사용한 CPU 마이닝=== | ===Geth를 사용한 CPU 마이닝=== | ||
− | 이더리움([[Ethereum]])의 첫 번째 릴리스 인 Frontier에서는 a) GPU와 b) Ethereum 클라이언트인 게스만 있으면 된다. [[CPU]] 마이닝은 가능하지만 너무 비효율적이다. | + | 이더리움([[Ethereum]])의 첫 번째 릴리스 인 Frontier에서는 a) GPU와 b) Ethereum 클라이언트인 게스만 있으면 된다. [[CPU]]마이닝은 가능하지만 너무 비효율적이다. |
− | 현재 게스에는 | + | 현재 게스에는 CPU광부만 포함되어 있으며 팀은 [[GPU]] 광부분기를 테스트하고 있지만 프론티어의 일부는 아니다. |
− | Ethereum의 C++ 구현은 Eth (CLI), AlethZero (GUI) 및 EthMiner (독립형 | + | Ethereum의 C++ 구현은 Eth (CLI), AlethZero (GUI) 및 EthMiner (독립형 광부)의 일부로 GPU 광부를 제공한다. |
* 계정관리 | * 계정관리 | ||
− | * | + | * 암호화토큰, 분산앱 |
==종류== | ==종류== |