[가상화폐] 나의 이더리움 분석기 - Light Ethereum Service

오늘은 Light Etherium Services에 대해 분석시작.

기본적 정의는 다음과 같다.
블록헤더를 다운받고 아주 작은 부분을 검증하기 위해 하드 디스크에 저장된 trie노드 형태의 분산된 해시 테이블을 DB로 이용한다.

In Ethereum, a light client can be viewed as a client that downloads block headers by default, and verifies only a small portion of what needs to be verified, using a distributed hash table as a database for trie nodes in place of its local hard drive.

IoT같은 디바이스에서 compact하게 ethereum을 실행하기 위해 디자인 된 서비스이다.

우선 한글 주석은 여기..
https://github.com/NAKsir-melody/go-ethereum/commit/50133d56fc95640630c427fc79909a38bdb53da5

geth 바이너리가 실행되면서 노드를 생성후 초기화 하는데,
노드객체는 기본적으로 서비스들이 등록되는 컨테이너 객체이기 때문에
ethereum 프로토콜도 역시 서비스로 추가 된다.
초기화가 완료된 노드가 start하면서 본인에게 등록된 모든 서비스를 시작하게 되므로
그때 라이트 이더리움 프로토콜이 실행될 것이다.

우선 node가 어떤 프로토콜을 사용할 것인지는 이더리움 프로토콜을 노드에 등록하는 시점에
config파일의 sync 모드에 따라 Light Sync인지 아닌지(Full sync)를 구별한다.

RegisterEthServcie내에서 les 객체의 New function으로 부터 시작
New함수에서 체인 DB(level DB)를 설정하고(생성 혹은 연결 /eth/db/cahindata) 3초마다 모니터링할 meter를 달아둔다
db를 읽어서 캐노니컬 hash가 있는지 확인하고 없다면 제네시스 블록을 생성하고
있다면 해당 블럭의 해시를 체크한 후에 net의 config를 읽어서
main-net인지 test net인지 결정한다.

그 후에 서비스 참여자를 관리하기 위해 피어셋을 생성하고
서버풀을 가동하여 새로 생성되거나 발견된 라이트 서버 노드를 저장한다.
효율적인 검색을 위한 bloom인덱서와, 합의 엔진(ethash), 요청 분배자를 설정한다.
요청 분배자가 사용할(?) 릴레이 채널과 검색매니저를 설정하는데
검색 매니저는 request id에 대응하여 응답/재전송/타임아웃을 관리한다.

그후에 라이트 체인의 최신 state 정보를 받아 오는 과정에서
트랜젝션 풀을 생성함과 동시에 서브 프로토콜 매니저를 생성하여 이더리움 네트워크와 호환 가능한 피어들을 관리한다.

이제 start가 불리우면
LES를 시작하는데, 이때 DiscV5프로토콜을 이용해 RLPx 노드를 검색하고
내부적으로 프로토콜 매니저가 돌면서 블럭과 해시 정보를 동기화 한다.

위키를 찾아보니
이더리움은 RLPx스펙으로 kademlia프로토콜의 일부를 사용하여 노드를 찾고 관리한다고 한다(p2p 관련 부분, node discovery protocol)
http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf

코드에서 본 프로토콜 매니져의 역할은 아래. (Ethereum Wire Protocol)
이더리움 네트워크중 불록체인 데이터를 교환하는 프로토콜이다. = 프로토콜 매니져
두개의 피어가 서로 handshake를 하고 각자의 status message를 보낸다.
status는 TD와 best block의 해시값이 저장되어 있다.
베스트 블록 = RecentBlock이란 마이닝된 마지막 블록이다.
total difficulty는 누적된 체인의 difficulty이다. 이값이 크면 longest chain이 된다.
그러므로 해당 크라이언트가 방금 해시된블럭의 풀체인 피어로서 동작하게 된다
해쉬체인은 work풀을 통해 연결되 모든 피어에게 공유된다.
https://github.com/NAKsir-melody/wiki/blob/master/Ethereum-Wire-Protocol.md
(위키도 한글화 해야겠네..왜 이렇게 동작하는지 알려면..)

일단 라이트 노드로 설정되면 라이트 이더리움 서비스로 부터 블록과 해시를 받아오고
라이트 서버 노드들을 따로 저장해서 관리한다는건 알겠다.
또한 풀체인을 싱크하지 않고 최신 state만 받아오는 것을 확인했다.

아직 눈가리 코끼리 다리만지기 형태의 소스 분석이지만,
어느정도 분석하고 공부하다보면 큰 그림이 나올것이라 생각한다.

다음엔 합의 엔진인 ethash쪽을 분석해보고자 한다..

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

블록체인 기술

번호 제목 글쓴이 날짜 조회수
181 채굴 ░░░░❤️NEW 오 피 출 장❤️░░░░✅전원 20 대❤️여대생 VIP 코스✅100% 리얼 실 사 오피출장 12-21 44
180 가상화폐 ░░░░❤️NEW 오 피 출 장❤️░░░░✅전원 20 대❤️여대생 VIP 코스✅100% 리얼 실 사 오피출장 12-21 40
179 정보 ░░░░✅NEW 오 피 출 장✅░░░░✴️100% 리얼 실사✴️한국 매니저☪️다양한 옵션☪️극강 마인드 오피출장 12-21 40
178 정보 KEEP!T Column: 블록체인 진영 시리즈(1) 제도권의 시도들 icon Work4Block 04-07 3,527
177 정보 KEEP!T Column: 구글 이후의 시대 - 조지 길더 icon Work4Block 03-15 3,894
176 정보 KEEP!T promotion: 광고에 블록체인의 핵심적 가치를 붙이면 생기는 일 icon Work4Block 03-07 3,113
175 정보 [인터체인 시리즈 I]코스모스 네트워크 I - 데이터 상호운용 방법과 텐더민트 합의 알고리듬 icon Work4Block 01-25 4,476
174 가상화폐 (코인비평) 라인 링크(Link)의 BTC 보상정책과 봉이 김선달 icon Work4Block 01-15 2,918
173 정보 KEEP!T History: 블록체인史 (최종) 블록체인의 새 패러다임을 제시한 이더리움 icon Work4Block 01-10 3,739
172 가상화폐 [eosDAC] 크리머 : 커스토디안 출마 선언 및 당선 공약 + eosDAC의 가치 상승 전략 icon Work4Block 01-02 3,141
171 가상화폐 (코인비평) 퍼블리토(Publyto)....스팀에 필요한 것이 이런 것이 아니었을까? icon Work4Block 01-02 2,582
170 가상화폐 [EOS는 도태될 것인가? 도약할 것인가?] 1편 : 기존 기업 블록체인(댑) vs EOS 블록체인(댑) icon Work4Block 12-26 4,194
169 가상화폐 (코인비평) 스팀(steem)의 진정한 호재 ; 구글 애드센스 도입 icon Work4Block 12-13 4,971
168 가상화폐 [EOS] 댄라리머 : 열심히 보단 똑똑하게 일해라. (CPU를 위한 효율적인 컨트랙트 개발)] (번역)) icon Work4Block 12-13 3,439
167 가상화폐 KEEP!T column: 하이퍼레저 패브릭(Hyperledger Fabric)의 거래 흐름 icon Work4Block 12-13 3,303
166 가상화폐 [번역+사견] 개발자들이 EOS를 사용해야 하는 이유 5가지. + 개발자 FAQ icon Work4Block 12-11 3,217
165 가상화폐 [CODEOS] 새롭게 배포된 EOSIO v1.5.0을 소개합니다. icon Work4Block 12-10 2,877
164 정보 블록체인은 살아날수 있는가 -ㅅ- icon Work4Block 12-10 2,906
163 정보 KEEP!T Column: UN SDG와 블록체인 icon Work4Block 12-06 3,229
162 가상화폐 EOS Snapshot 기능 소개 icon Work4Block 11-27 3,544