웹 개발 메모장

[블록체인 어플리케이션 개발] Geth 기동하기 본문

옛날../블록체인 어플리케이션 개발 실전 입문

[블록체인 어플리케이션 개발] Geth 기동하기

도로롱주 2018. 10. 7. 18:37








Geth (go-ethereum) 개발 시작하기




이더리움 소개


이더리움은 스위스의 비영리 단체인 이더리움 재단에서 개발한 오픈소스 프로젝트 입니다.

이더리움은 단순한 코드로 스마트 계약을 구현할 수 있는 블록체인 기술이며 이더리움 사용자는 이더리움 코드를 작성할 수 있는 언어를 배우는 것 만으로 스마트 계약을 만들어 실행할 수 있습니다.




이더리움 클라이언트


이더리움은 스마트 계약을 실행할 수 있는 플랫폼이며 Go, C++, 파이썬 등 다양한 언어로 클라이언트가 구현되어 있습니다.



클라이언트

언어

개발자

1

go-ethereum

Go

Ethereum Foundation

2

Parity

Rust

Ethcore

3

cpp-ethereum

C++

Ethereum Foundation

4

pyethapp

Python

Ethereum Foundation

5

etherumjs-lib

JavaScript

Ethereum Foundation

6

Ethereum(J)

Java

<ether.camp>

7

ruby-ethereum

Ruby

Jan xie

8

ethereumH

Haskell

BlockApps




Local Private Test-net (사설 테스트넷)

라이브 네트워크가 아닌 테스트 네트워크이며 라이브 네트워크처럼 전 세계의 노드가 참가할 수 있는 'Morden 테스트넷'과 달리 자신의 노드 하나만 (또는 한정된 노드만) 참가할 수 있고 채굴의 난이도를 설정할 수 있기 때문에 스터디 목적에 적합한 네트워크 입니다.




테스트 네트워크에서 Geth (go-ethereum) 기동


로컬에서 Geth를 기동시키기 위해서는 송수신할 블록 데이터와 계정 정보를 저장할 디렉터리를 생성하고

그 디렉터리에 0번째 블록의 정보가 저장된 파일을 만들고 $ geth init 명령을 통해 초기화를 해야 합니다.



1. 디렉터리 생성


아래 명령어를 통해 testnet 디렉터리를 생성합니다.


$ mkdir ~/testnet




2. genesis.json 파일 생성


아래와 같은 0번째 블록의 기본 정보를 담고있는 json 파일을 생성합니다.


[genesis.json]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    "config": {
            "chainId": 15,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
    },
    "nonce": "0x0000000000000042",
    "timestamp": "0x0",
    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x00",
    "gasLimit": "0x8000000",
    "difficulty": "0x04000",
    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase":"0x3333333333333333333333333333333333333333",
    "alloc": {}
}
cs





3. 초기화

$ geth --datadir /home/cloudera/testnet/ init /home/cloudera/testnet/genesis.json

위 명령어를 통해 Geth 초기화 시킬 수 있습니다.


(tree 명령어를 통해 초기화 결과 확인)



4. Geth 실행

아래 명령어로 geth를 실행시킬 수 있습니다. 정상적으로 실행된 경우 Welcome 메세지와 프롬프트(>)가 표시됩니다.

$ geth --networkid 4649 --nodiscover --maxpeers 0 --datadir /home/cloudera/testnet console






참고
 - 블록체인 어플리케이션 개발 실전 입문 solidity를 이용한 이더리움 스마트 계약 구현 - 위키북스
 - http://blog.daum.net/subylee/49 (genesis.json 설명)
 - http://sancs.tistory.com/128 (이더리움 사설 네트워크 구성)





Comments