이더리움 Level DB를 까보자(1) - 데이터 확보 편

in #ethereum6 years ago (edited)

안녕하세요 이더리움 코드 보는 Sigmoid입니다.
오늘은 이더리움 DB를 한번 까보려고 합니다.

먼저 환경설정은 다음과 같습니다.
노드 1개짜리 private 네트워크를 구성한다
3개의 계정을 생성한다
첫번째 계정이 7번 블록까지 마이닝을 한다

Screenshot_20190110-184750_Termux.jpg

7번 블록까지 마이닝 완료

0번부터 7번까지 블록 상태를 확인합니다.
Screenshot_20190110-185025_Termux.jpg

Screenshot_20190110-185009_Termux.jpg

Screenshot_20190110-184953_Termux.jpg

Screenshot_20190110-184936_Termux.jpg

Screenshot_20190110-184917_Termux.jpg

Screenshot_20190110-184857_Termux.jpg

Screenshot_20190110-184837_Termux.jpg

Screenshot_20190110-184821_Termux.jpg

블록해시나 루트해시 같은것들을 비교하기 위해 제네시스 블록부터 8개의 블록을 모두 프린트 해봅니다

이제 LDB레벨에서 체인터이터를 까보기 위해 간단한 코드를 작성합니다.
https://github.com/NAKsir-melody/eth-function-tests/blob/master/go-ethdb/go-ethdb.go
Screenshot_20190110-190044_Samsung Internet.jpg

db를 열고, 키/값 쌍을 모두 출력한다

최종적으로 얻은 DB의 결과는 아래와 같습니다.
https://github.com/NAKsir-melody/eth-function-tests/blob/master/go-ethdb/output.txt
Screenshot_20190110-190522_Samsung Internet.jpg

가장 먼저 눈에 띄는건 라인 2~9 네요. 제네시스 블록의 해시가 "0xbe1919e148bae41b9ce2ddae6c4cf0a3c3d725f30230657ad3bcd6ed0767efe1"이고, 라인 7번이 "48be1919e148bae41b9ce2ddae6c4cf0a3c3d725f30230657ad3bcd6ed0767efe1" 네요.

앞에 0x48은 ascii값으로 'H'이고 headerNumberKey를 의미합니다. 헤더의 번호가 값 필드에 들어있다는 것을 말하는데, 실제로 값 필드가 0 이니 블록번호 0 = genesisi!! )

이제 데이터들이 모아졌으니, 다음 블로그 부터는 한땀 한땀 분석해보도록 하겠습니다.

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.033
BTC 97872.55
ETH 3147.83
USDT 1.00
SBD 2.99