일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 구조패턴
- 테트로미노
- 어댑터패턴
- 이터레이터
- c++
- 알고리즘
- 생성패턴
- 14500
- 행위패턴
- C
- bfs
- 추상팩토리
- 다이어그램
- AbstractFactory
- 완전탐색
- 백준
- FactoryMethod
- ps
- 반복자
- 데코레이터패턴
- 회전하는큐
- problemsolving
- 디자인패턴
- UML
- 빌더패턴
- C언어
- 재귀
- 옵저버
- 클래스다이어그램
- 팩토리메소드
- Today
- Total
salsa source
[이더리움 베이직] Genesis 블록 생성하기 본문
사설 네트워크의 Genesis 블록 파일 정의
Genesis 블록은 이더리움 기반인 블록체인의 가장 첫 번째 블록으로서 이전 블록에 대한 정보를 갖지 않는 유일한 블록입니다.
이더리움은 이 블록체인의 내용을 유연하게 변경할 수 있는 많은 옵션들을 지원하며,
이 옵션을 Genesis 블록에 정의함으로써 원하는 목적에 부합하는 이더리움 사설 네트워크를 구축할 수 있습니다.
해당 이더리움 네트워크에 접속하는 모든 클라이언트 노드들은 동일한 Genesis 블록을 소유하고 있어야
블록체인의 압의 과정에 참여 가능합니다.
다음은 JSON 형식의 커스텀 Genesis 블록 파일로서 메모장과 같은 텍스트 에디터를 이용하여 작성합니다.
<CustomGenesis.json>
{ "config" : { "chainID" : 15, "homesteadBlock" : 0, "eip155Block" : 0, "eip158Block" : 0 }, "nonce" : "0x0000000000000042", "timestamp" : "0x00", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData" : "0x00", "gasLimit" : "0x800000", "difficulty" : "0x400", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase" : "0x3333333333333333333333333333333333333333", "alloc" : { "7e214a733eb52d122df43968dbc62945ef92bb1e" : {"balance": "10000000000000000000"} } }
1) config
Geth 1.6 이전 버전의 이더리움 네트워크에 접속할 시 생길 수 있는 문제점을 해결하기 위한 옵션으로
사설 네트워크의 경우 위의 값으로 설정하면 됩니다.
2) nonce
mixhash 옵션과 함께 현 블록의 작업 증명을 위해 충분한 양의 계산을 수행했음을 증명해주는 옵션
블록체인의 작업증명을 위해 mixhash값과 nonce가 조합된 값의 해시 값이 일정 수 이하인 nonce를 찾는데
가장 최근에 추가된 블록의 헤더의 해시가 nonce 값의 조합으로 일정 수를 찾아 작업 증명을 완료합니다.
3) timestamp
해당 블록이 취득된 시점을 나타내는 옵션
Genesis 블록은 최초의 블록이기 때문에 0으로 설정하였습니다.
용도 - (1)작업증명의 난이도 조절 (2) 블록 간 순서 확인
4) parentHash
nonce와 mixhash를 포함한 부모 블록의 헤더에 대한 해시 값을 갖는 옵션
Genesis 블록은 최초의 블록이기 때문에 값은 0입니다.
5) extraData
현재 뚜렷한 목적을 가지고 사용하는 옵션은 아니지만 앞으로 추가될 지 모르는 옵션을 위한 32바이트 임시 저장공간입니다.
필요에 따라 임의의 갑을 넣어도 무방합니다.
6)gasLimit
하나의 블록이 담을 수 있는 gas의 임계치
7) difficulty
블록 생성을 위한 계산 난이도 조절 옵션
테스트를 위한 코드이기 때문에 낮은 값으로 설정했습니다.
8) mixhash
nonce옵션과 함께 블록의 작업 증명을 위한 옵션입니다.
9) coinbase
해당 블록에 대해 채굴에 성공하면 얻게 되는 총 보상금을 160비트의 주소값으로 표현한 옵션입니다.
채굴 보상금과 스마트 컨트랙트 실행의 환불 값의 합을 나타내며 'beneficiary' 또는 'etherbase'라고도 불립니다.
지속적인 테스트를 위해 큰 값으로 설정해 주는 것이 좋습니다.
10) alloc
genesis블록 생성과 함께 사전에 정의한 이더리움 계좌에 원하는 액수의 이더를 미리 송금 가능합니다.
이 옵션을 활용하여 앞서 개설한 계좌의 주소와 함께 초기 잔고(balance)를 정의하였습니다.
계좌의 주소는 앞서 생성 시 리턴받은 계좌의 주소입니다
(* 1018 wei == 1 ether)
Genesis 블록 생성하기
사설 네트워크 실행하기
-----------------------------각 폴더 경로------------------------------
사설 이더리움 네트워크 기본경로 : "c:\ethereum"
계좌 및 블록 데이터 저장 경로 : "c:\ethereum\data\myAccount"
Genesis 블록 파일(CustomGenesis.json)의 위치 : "c:\ethereum"
-------------------------------------------------------------------------
사설 네트워크의 최초 블록으로 생성하기
cmd 창에 아래 명령어를 실행합니다.
geth --datadir "c:\ethereum\data" init "c:\ethereum\CustomGenesis.json"
Genesis블록이 정상적으로 생성되면 아래 그림과 같이 블록 데이터가 저장되는 경로와
"Successfully wrote genesis state"라는 메세지를 확인 할 수 있습니다.
'STUDY > 블록체인' 카테고리의 다른 글
[이더리움 베이직] 새로운 계좌 개설하기 (0) | 2018.03.13 |
---|---|
[이더리움 베이직] Mist 브라우저 (0) | 2018.03.12 |
[이더리움 베이직] 사설 이더리움 네트워크 실행하기 (0) | 2018.03.12 |
[이더리움 베이직] Geth 클라이언트 계좌 만들기 (0) | 2018.03.12 |
[이더리움 베이직] Go Ethereum 클라이언트(Geth) 설치 (0) | 2018.03.12 |