본문 바로가기
Bitcoin

비트코인의 네트워크(새로운 노드가 추가되는 원리)

by PudgeKim 2021. 3. 15.

비트코인은 각각의 노드가 중앙서버 없이 연결되어 탈중앙화된 네트워크라고 불립니다. (노드는 각 컴퓨터를 뜻한다고 보시면 됩니다.)
이번 포스팅에서는 어떻게 새로운 노드가 비트코인 네트워크 안에 포함되는지 알아보겠습니다.
약간의 네트워크에 대한 이해가 조금 있으시면 좋습니다.

새로운 노드가 비트코인 네트워크 안에 추가되고싶다면 기존의 비트코인 네트워크를 이루고 있는 노드들중 하나를 찾아서 그 노드와 연결하면 될 것입니다.
이 과정에 있어서 물리적인 거리는 영향을 끼치지 않습니다. 즉, 새로 추가되고싶어하는 노드 주변에 가까운 노드(비트코인 네트워크를 이루고 있는)와 먼저 연결을 시도하는 것은 아닙니다.

 

그럼 어떻게 기존 노드를 찾을까요?

첫번째 방법으로는 DNS seeds를 이용하는 방식입니다. Mastering Bitcoin에 DNS seeds에 대해 이렇게 나와있습니다.
DNS servers that provide a list of IP addresses of bitcoin nodes.
즉, DNS seeds에 요청하면 비트코인을 이루고 있는 노드들의 IP주소를 알 수 있습니다.
DNS seeds는 한가지만 있는게 아니라서 어떤 DNS seeds는 static한 IP주소를 주고 어떤 것은 랜덤한 IP주소를 주기도 합니다.

이렇게 DNS seeds에 요청하여 비트코인을 이루고 있는 노드들의 IP주소를 받게 되면 새로운 노드(비트코인 네트워크에 추가되고싶은 노드)는 해당IP주소를 가진 노드들과 TCP connection을 시도하여 여러 메시지를 주고 받습니다. 

그럼 새로운 노드와 연결된 기존 비트코인 네트워크를 이루고 있는 노드들은 그들의 이웃들(이 역시 기존 비트코인 네트워크를 이루고 있는 노드들)에게도 메시지를 전달하여 새로운 노드가 왔다는 것을 알립니다.
새로운 노드도 자신과 연결된 기존 노드들에게 그들의 이웃들의 IP주소를 달라고 요청할 수도 있습니다.
이렇게 새로운 노드는 기존 네트워크에 추가되어집니다.

'Bitcoin' 카테고리의 다른 글

비트코인의 블록구조와 체이닝  (0) 2021.03.17
비트코인의 Bloom Filters  (0) 2021.03.16
비트코인의 SPV Nodes  (0) 2021.03.16
비트코인의 UTXO란?  (0) 2021.03.14
비트코인의 Transaction fee  (0) 2021.03.14