[가상화폐] 나의 이더리움 분석기 - 중간정리 - 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
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

블록체인 기술

번호 제목 글쓴이 날짜 조회수
38 정보 쉽게 이해하는 블록체인 기술(1) icon Work4Block 05-17 4,772
37 정보 KEEP!T History: 장기적으로 볼 때 우리는 모두 죽는다 icon Work4Block 05-17 4,456
36 가상화폐 잘 조직화된 보안 대응 협력체계가 EOS를 DDoS에서 지켜줄 수 있다. icon Work4Block 05-16 4,152
35 정보 토큰 이코노미 설계의 빅 픽쳐와 행위자(Actor)에 대해 icon Work4Block 05-16 4,176
34 가상화폐 KEEP!T Column 비트코인 뽀개기(4편) icon Work4Block 05-11 5,038
33 정보 PoW를 다시 생각한다 icon Work4Block 05-09 4,173
32 정보 Modified Merkle Patricia Trie - ethereum이 상태를 저장하는 방법 icon Work4Block 05-08 5,222
31 정보 '스마트 계약'의 의미이론에 대해 icon Work4Block 05-08 4,628
30 정보 블록체인 진화의 방향으로서의 Blockchain inter-connection 이슈들 icon Work4Block 05-07 3,526
29 정보 KEEP!T Column: 아나키, 국가, 그리고 블록체인. icon Work4Block 05-04 3,889
28 정보 초보자들을 위한 이더리움 DApp 만들기 icon Work4Block 05-03 7,240
27 정보 블록체인, 탈중앙화 네트워크에는 경제학이 필요하다 - 암호경제학 (Cryptoeconomics)의 시대 icon Work4Block 05-02 3,676
26 정보 [BMT]EOSIO TPS 테스트 2번째 결과 by EOSeoul icon Work4Block 05-01 3,945
25 정보 양자 컴퓨팅이 블록체인을 위협할 거라고? 지금 걱정하기에는 이르지만 준비는 해야 해 icon Work4Block 05-01 4,005
24 정보 KEEP!T History: 비트코인의 발행량이 2100만개인 이유 icon Work4Block 04-30 4,281
23 가상화폐 [COSINT] 한국사람만 모르는 프로젝트 IOS/IOST icon Work4Block 04-28 4,065
22 가상화폐 KEEP!T Column 비트코인 뽀개기(3편) icon Work4Block 04-26 5,464
21 가상화폐 카이버네트워크(KyberNetwork) 백서(White Paper) 한글 번역본 icon Work4Block 04-26 4,596
20 정보 KEEP!T column: 블록체인의 미래를 보는 창 - 특허 icon Work4Block 04-25 3,939
19 정보 KEEP!T column: 블록체인과 신원인증 (Identification) icon Work4Block 04-25 4,420