[가상화폐] 나의 이더리움 분석기 - 중간정리 - 1

그동안 듬성듬성 분석해둔 부분을 일련의 그림으로 정리하여
이더리움 노드의 동작 맵을 그려보고자 합니다.

image.png

1 먼저 geth가 실행되면 풀노드로 동작하기 위해 노드를 하나 생성하는데,
이 과정에서 어카운트 매니져와 키스토어를 함께 생성합니다.
지난번에도 언급했지만, 이더리움 소스코드에서 노드라는 개념은
다양한 종류의 서비스를 등록하는 컨테이너 입니다.

2 이더리움 관련 설정값을 초기화 합니다. 이더베이스를 지정하고, 가스오라클이나 트렌젝션 풀에서 사용할 파라미터들을 초기화 합니다.(동기화 주기나, 동작을 위한 queue등을 설정). 메신져 서비스인 shh와 모니터링 서비스인 dashboard관련 설정도 진행합니다.

3 이더리움 서비스를 노드에 등록합니다. 이더리움 서비스의 내용은 다음그림에서 확인하겠지만, 이더리움 네트워크 동작에 사용될 DB, 합의 엔진, 인덱서, 체인, 트렌젝션 풀, 마이닝, 프로토콜 매니져, 가스 오라클까지 우리가 알고 있는 이더리움 그자 체라고 생각하시면 됩니다.

4 shh와 Stat서비스를 등록합니다. (크게 관심없어서 넘기겠습니다)

image.png

5 노드를 시작합니다. 이때 아까 등록했던 이더리움 서비스를 실제로 생성하게 됩니다.

5-1 이더리움의 모든 정보를 저장하는 DB를 생성합니다.

5-2 제네시스 블록을 설정합니다. 여기에 어떤 값을 설정하느냐에 따라 노드가 메인넷 체인기반으로 동작할지, 테스트넷 체인 기반으로 동작할지가 결정됩니다.

5-3 합의 엔진을 초기화 합니다. (합의 관련해서도 추가 분석진행중입니다.)

5-4 체인을 검색하여 블록을 관리할수있는 인덱서를 생성합니다.

5-5 블록체인을 생성시, 헤더체인을 생성하고, 초기 동기화용 루프를 동작시킵니다.

5-6 트렌젝션 풀을 생성해두고, 동기화용 루프를 동작시킵니다.

5-7 마이닝을 생성합니다. (5-3, 5-7에 해당하는 마이닝 관련 이전 글도 도식화 중에 있습니다.)

5-8 가스 오라클을 생성합니다.

image.png

6 노드를 시작합니다.

6-1 P2P 서비스를 시작합니다.리스닝 루프에서는 피어의 접속을 수락하기 위한 Aceept함수가, RunLoop에서는 피어에 접속하기 위한 dial함수가 동작합니다. 시간적 순서에 따라 누군가는 dial을 누군가는 accept를 하게 되고 어디서 많이 들어본 discovery v5 protocol이라던지, Devp2p의 handshake라던지 이런동작을 통해 연결이 확정되면 각 피어의 해당 루프에서는 handleMsg함수가 호출되게 됩니다. (저 아래그림에서 insertChain함수를 호출하도록 만드는 메시지가 여기서 처리됩니다. 핑크색으로 연결해두었습니다)

6-2 인덱서를 시작합니다. (추가분석이 필요합니다)

6-3 프로토콜 매니져를 시작하고 강조드렸던 4개의 루프가 동작하게 됩니다.
그중 이 글에서는 초록색으로 표현된 syncer만 정리합니다.

image.png

7 이전 글에서 다루었듯이 이더리움 프로토콜 매니져가 시작하면 싱커합수가 호출되고, 초록색 루프가 동작합니다.
이 루프 안에는 p2p레이어로 부터 전달된 블록을 노드가 관리하는 체인에 추가합니다.

image.png

8 그리고 체인에 추가하는 과정에서 블록 내부에 존재하는 트렌젝션들의 실행을 통해 어카운트의 잔고를 업데이트하는 것을 보실수 있습니다.

중간정리 -2 에서는
이전에 글로만 다루었던 마이닝과 블록의 브로드 캐스팅, 트렌젝션의 공유등에 대해
호출 맵을 작성하여 업데이트 할 예정입니다.

트렌젝션 공유
image.png

마이닝의 시작과 블록이벤트 그리고 블록의 전파
https://steemit.com/ethereum/@sigmoid/3flwa

지극히 개인적으로 이더리움 주석 한글화 프로젝트를 진행하고 있습니다.
https://github.com/NAKsir-melody/go-ethereum

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

블록체인 기술

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