Gidhub BE Developer

Genesis

2018-02-25
goodGid

사설 네트워크의 Genesis 블록 파일 정의

Genesis 블록은

이더리움의 기반인 블록체인의 가장 첫 번째 블록이며

이전 블록에 대한 정보를 갖고 있지 않는 유일한 블록이다.

Genesis블록을 정의함으로써

원하는 목적에 부합하는

이더리움 사설 네트워크를 구출할 수 있다.


해당 이더리움 네트워크에 접속하는

모든 클라이언트 노드들은

동일한 Genesis 블록을 소유하고 있어야

블록체인의 합의 과정에 참여할 수 있다.


환경 설정 가이드에서 [ Private Network 구성 - B.Genesis Block 정의 ]를 보자.

1. config

Geth 1.6 버전부터

기존 이더리움 버전에서

발생한 문제점들을 해결하기 위해

하드포크가 이루어졌다.

해당 옵션은 새로운 버전의 Geth를 이용하여

1.6 이전 버전의 이더리움 네트워크에 접속하였을 때

발생 될 수 있는 문제점을 해결하기 위한 옵션으로

사설 네트워크의 경우 가이드처럼 값을 설정하면 된다.

2. nonce

mixhash 옵션과 함께

현 블록의 작업 증명을 위해서

충분한 양의 계산을 수행했음을 증명해주는 옵션이다.

블록체인의 작업 증명을 위해서는

mixhash 값과 nonce가 조합된 값의 hash값이

일정한 수 이하인 nonce를 찾는데,

가장 최근에 추가된 블록의 헤더의 해시가

nonce값의 조합으로 일정 수를 찾아

작업 증명을 완료하게 된다.

3. timestamp

해당 블록이 취득된 시점을 나타내는 옵션이다.

유닉스의 time() 함수의 결과와 동일한다.

Genesis 블록은 최초의 블록이기 때문에

값이 0이다.


timestamp는 블록체인에서 2가지 용도로 활용된다.

첫 째로 작업 증명의 난이도를 조절하는데 사용된다.

즉 두 블록 간의 timestamp 값의 기간이 짧다면

작업 증명을 위한 난이도가 올라가게 되고,

기간이 너무 길면 난이도가 내려가고

다음 블록의 작업 증명 계산량이 즐어들게 된다.

둘 째로 블록 간의 순서를 확인할 때 활용된다.

4. parentHash

nonce와 mixhash를 포함한

부모 블록의 헤더에 대한 해시 값을 갖는 옵션이다.

Genesis 블록의 값은 당연히 0이다.

5. extraData

현재 뚜렷한 목적을 가지고 사용하는 옵션은 아니지만

앞으로 추가될지도 모르는 옵션을 위한

32바이트의 임시 저장 공간으로 활용된다.

필요에 따라 임의의 값을 넣어도 무방하다.

6. gasLimit

하나의 블록이 담을 수 있는 gas의 임계치이다.

몇 차례의 거래를

하나의 블록에 묶어서

담을 수 있는지를 결정하는데

필요한 옵션으로

값이 클수록 많은 거래를 담을 수 있기 때문에

그만큼 거래가 더 빨라질 수 있다.

7. difficulty

블록 생성을 위한 계산 난이도를 조절하는 옵션이다.

이 옵션을 조절하여

블록이 생성되는 시간을 일정 수준으로 유지할 수 있다.

값이 클수록 유효한 블록을 발견하기 위해

채굴자가 통계적으로 더 많은 계산을 수행해야한다.

지연 없이 원활한 거래 수행을 하여

테스트를 진행하기 위해선 낮은 값을 설정하면 된다.

8. mixhash

nonce 옵션과 함께

현 블록의 작업 증명을 위해서

충분한 양의 계산을 수행했음을

증명해 주는 옵션이다.

9. coinbase

해당 블록에 대해서 채굴에 성공하면

얻게 되는 총 보상금을

160비트의 주소 값으로 표현한 옵션이다.

채굴 보상금과

스마트 컨트랙트 실행에 대한 환불 값의 합을 나타낸다.

10. alloc

Genesis 블록을 생성함과 동시에

사전에 정의한 이더리움 계좌에 원하는 액수의 이더를 미리 송금해 놓을 수 있다.

즉 초기 잔고를 정의한다.


Genesis 블록 생성하기

  • 환경 설정 가이드에서 [ Private Network 구성 - C. DB 초기화 하기 ] 참고

  • geth의 --dev 옵션을 이용하여 이더리움 클라이언트가 자동으로 Genesis 블록을 만들어 사용하게 할 수 있다.

  • --dev 옵션은 개발자모드로 이더리움의 네트워크에 접속하는 옵션으로 기본 Genesis 블록을 자동 생성한다.

  • 이 때 생성된 Genesis 블록은 생성 계산 난이도가 낮다.


Recommend

Index