본문 바로가기

BlockChain

부트스트랩 노드

부트스트랩 노드란?

이더리움 네트워크는 중앙 서버 없이 노드간의 연결로 구성된 분산 구조 네트워크이다. 하지만 하나의 노드가 네트워크 안의 모든 노드와 연결되는 것이 아니라 서로의 주변 노드들에 연결하는 구조를 가지고 있다.

 

이런 구조 형식때문에 네트워크 내에서 특정 노드를 찾기가 어려워진다.

이를 해결하기 위해 존재하는 것이 부트스트랩 노드인데 부트스트랩 노드는 일정 기간 동안 그들과 연결되었던 노드들의 목록을 저장한다.

그래서 내 노드가 이더리움 네트워크에 다시 접속할때 부트스트랩 노드에 먼저 연결하여 최신 노드 연결 목록들을 불러와 정보를 공유한다 (접속하는 순간 나도 연결 목록에 들어가 나도 함께 노드를 공유하게 된다).

즉 노드들을 부트스트랩(동기화)시켜주는 것이다.

그렇다면 이 부트스트랩 노드를 구현한 bootnode에 대해서 살펴보자

bootnode란?

ethereum 깃 페이지를 참조하여 go-ethereum의 bootnode를 확인해 보면(https://github.com/ethereum/go-ethereum/blob/master/cmd/bootnode/main.go)

“부트노드는 이더리움 식별 프로토콜을 실행하는 부트스트랩 노드”이라고 설명한 것을 볼 수 있다.

즉 이더리움 네트워크에 참여하고자 하는 노드들을 서로 연결해주는 프로그램인 것이다.

이 관계성을 아래의 그림으로 이해해보자

 

이더리움에 참여하고 싶은 내가 노드4로써 bootnode에 붙게 되면 함께 연결되어 있는 다른 노드들과 연결하여 통신함으로 p2p망을 이루는 것이다.

이 bootnode로 부터 지속적으로 데이터 (node 목록)을 받고 그를 통해 block정보를 동기화하는 것이다.

이 부트노드를 사용할때 enode라는 URL로 각 노드의 이더리움 주소를 표현한다.

아래와 같은 enode를 가지고 있다고 했을때 각각의 요소를 살펴보자.

 

 

enode://91578…ce9e까지. 즉 @전까지가 enode URL을 표시한다.

그 hash값을 ECDSA를 사용하여 개인키로 서명한 512bit의 공개키이다.

‘@’구분자 다음에는 호스트의 IP주소를 확인할 수 있다. 여기서는 10.5.57.5

30303은 TCP 포트 번호.

discport=30301은 UDP 포트 번호를 나타낸다.

이렇게 구성된 enode URL로 bootnode를 연결하는 것이다

 

--bootnodes 'enode://50dc1ae7b7b5b3b8cdb843dec53e43b677fca13afd2e46c04a1c1a83aa92fbc30f07a7495bae8a3a1deb6e44e6d36f5b3f83d90efb34bef0c118d7336326ae12@127.0.0.1:30301'
 

references : 

https://steemit.com/coinkorea/@etainclub/smart-contract-8-2

 

[Smart Contract 개발] #8 이더리움 핵심 개요 정리 2 — Steemit

이전글에 이어서 이더리움 개발에 필요한 핵심 개요 정리를 이어가 보겠습니다. 이전글 - [Smart Contract 개발] #7 이더리움 핵심 개요 정리 1 역시 이번에도 다음 책의 내용을 바탕으로 내용을 요약

steemit.com

http://blockchaindev.kr/

 

BlockChain.Dev

Do your practice and all is coming The father of Ashtanga Vinyasa yoga Sri K. Pattabhi Jois

blockchaindev.kr

 

쵸코쿠키의 연습장

재테크, SW, 일상 관련 정보

jjeongil.tistory.com

https://dejavuqa.tistory.com/260

 

테스트 네트워크 만들어보기 (by bootnode)

여러대로 연결된 테스트 네트워크를 만들어 보겠습니다. 테스트 네트워크(클러스터)를 만드는 방법은 3가지 입니다. bootnode(bootstrap)를 이용하는 방법과 geth에서 admin.addPeer() 명령을 사용하는 방

dejavuqa.tistory.com

 

'BlockChain' 카테고리의 다른 글

콜, 트랜잭션, 윈도우 geth사용하기  (0) 2022.09.05
Wallet 호환 Token 만들기  (0) 2022.04.25
[EVM] 이더리움 가상머신  (0) 2022.03.21
머클 패트리시아 트리  (0) 2022.03.14
openethereum 메인넷 구축  (1) 2021.11.30