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

블록체인 기술

번호 제목 글쓴이 날짜 조회수
89 가상화폐 [Ethereum] Ethernaut 풀이 - 0.Hello Ethenaut icon Work4Block 06-21 2,497
88 가상화폐 [Ethereum] Ethernaut 소개 icon Work4Block 06-21 3,257
87 정보 [개념 정리] 온 체인(Onchain), 오프 체인(Offchain)이 무엇인가? icon Work4Block 06-21 3,615
86 가상화폐 나의 이더리움 분석기 - 중간정리 - 2 icon Work4Block 06-21 3,133
85 가상화폐 이더리움이 go를 사용하는 이유(개인적인 생각) icon Work4Block 06-21 2,332
84 가상화폐 [Ethereum] Smart Contract 개발을 위한 환경 세팅 (Remix, Ganache) icon Work4Block 06-19 7,636
83 가상화폐 나의 이더리움 분석기 - 중간정리 - 1 icon Work4Block 06-19 5,145
82 가상화폐 이더리움 프로토콜 매니져로부터 insertChain함수 호출 까지(Fetcher) icon Work4Block 06-18 2,460
81 가상화폐 이더리움 트렌젝션의 실행 icon Work4Block 06-18 2,428
80 가상화폐 나의 이더리움 분석기 - Light Ethereum Service icon Work4Block 06-18 3,680
79 가상화폐 Technical White Paper for QtumX icon Work4Block 06-09 3,377
78 가상화폐 Traceto(트레이스투) 코인 분석 icon Work4Block 06-09 2,516
77 가상화폐 엑심체인[Eximchain] 제대로 알기 2편 icon Work4Block 06-09 2,367
76 가상화폐 엑심체인[Eximchain] 제대로 알기 1편 icon Work4Block 06-09 2,625
75 가상화폐 Eximchain 미래의 무역과 상거래 플랫폼[백서포함] icon Work4Block 06-09 2,429
74 가상화폐 어거(Augur) 토큰 이코노미에 대한 이슈와 평가 icon Work4Block 06-08 2,541
73 가상화폐 어거(Augur)의 토큰이코노미 설명 icon Work4Block 06-08 2,425
72 가상화폐 팩텀(Factom)의 프로토콜 icon Work4Block 06-08 2,872
71 가상화폐 팩텀(Factom)의 토큰 공급 방식과 가치평가 방법 icon Work4Block 06-08 2,461
70 가상화폐 비트코인의 원리 PART 7: 비트코인의 원리와 인터넷의 원리를 마치며 (에필로그) icon Work4Block 06-07 4,861