geth 란 이더리움 클라이언트 소프트웨어이다. 노드를 운영하기 편하게 도와주는 소프트웨어이다.
geth 설치법
$ brew install ethereum
설치가 안된다면
정상적으로 설치되었음을 확인
$ geth --version
테스트용 개인 체인을 만들기 위해서는 제네시스 블록을 만들어야한다. 보통 json을 사용한다.
genesis.json
{
"config": {
"chainId": 910513,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "0x20000",
"gasLimit": "0x2fefd8",
"alloc": {},
"extraData": "",
"nonce": "0x0000000000000000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
변수설명
1. config : 기본 설정값
2. chainId : 체인을 식별하기 위한 변수
3. eip###Block : ###번째 블록에서 하드포크된 블록중 어떤 블록을 선택하는지에 대한 변수. 제네시스블록은 0이다.
4. difficulty : 블록생성 난이도이다. 난이도가 늦으면 컴퓨팅 파워가 낮아도 블록을 빨리 채굴할 수 있다.
5. gasLimit : 하나의 블록이 담을 수 있는 가스의 최대값
6. alloc : 초기 계좌에 대한 잔고 설정.
7. extraData : 임시 데이터저장소, 특별한 목표가 없는 32비트 공간
8. nonce : POW에서 블록생성권한을 획득했음을 증명하기 위한 값
9. mixhash : POW 증명을 위한 값
10. parentHash : 부모블록의 해시값, 제네시스블록은 첫블록이므로 0이다.
11. timestamp : 블록을 취득한 시점, 제네시스블록은 0.
$ geth --datadir private-data init genesis.json
Successfully wrote genesis state 가 뜨면 성공이다.
이제 채굴을 해볼것이다.
$ geth --datadir . console
주의할점 체인인덱스를 수정하지 않고 그대로 복붙하면 다른 블록들이 받아와질수도 있다. 그렇게되면 갑자기 많은 블록들이 다운로드 된다. 체인인덱스를 수정해주도록하자
eth.coinbase : 블록보상이 지급되는 지갑주소 확인