블록체인과 P2P 통신
04 Jul 2017 | BlockChain p2pP2P 네트워크
P2P는 ‘Peer-to-Peer’라는 뜻으로 중앙 서버없이 각 단말들이 서로 동등한 입장에서 통신을 하는 네트워크를 말합니다. 각 단말은 서버이기도 하면서 동시에 클라이언트가 됩니다. 대표적인 P2P 서비스로 비트토렌트(BitTorrent)를 들 수 있습니다.
블록체인은 P2P 형태의 이루어진 탈중앙화 네트워크입니다. 따라서 P2P 네트워크가 갖고 있는 특징 및 장단점을 그대로 갖고 있습니다.
서버/클라이언트 네트워크의 장단점
- 서버가 서비스 관리를 집중적으로 수행하기 때문에 시스템의 설계 및 유지가 쉬움
- 기능 추가, 버그 수정 등 업데이트 및 관리가 쉬움
- 서버 장애 등이 발생할 경우 서비스 전체가 중단됨
P2P 네트워크의 장단점
- 서버를 준비할 필요가 없고, 각 노드들이 트래픽과 자원을 할당해 부하를 분산시켜줌
- 즉, 노드가 증가하더라도 서비스를 유지할 수 있는 높은 확장성을 갖고 있음
- 새로운 기능을 추가하거나 업데이트를 할 경우 관리가 어려움
- 네트워크 전송 시간 때문에 노드간 정보 불일치, 성능 저하가 발생하기 쉬움
하이브리드 P2P와 퓨어 P2P
P2P 시스템을 크게 2가지로 분류하면 각 노드들을 발견하고 탐색하기 위한 인덱스 서버(Index Server)를 사용하는 ‘하이브리드(Hybrid) P2P’와 순수하게 노드들만 존재하며, 노드 탐색 등의 기능도 노드들이 알아서 수행하는 ‘퓨어 P2P(Pure P2P)’로 구분할 수 있습니다.
하이브리드 P2P
하이브리드 P2P는 각 노드의 정보들이 인덱스 서버에 기록이 됩니다. 각 노드들간 데이터를 주고 받는 방식은 P2P로 이루어지지만, 노드들의 검색 및 발견 등은 인덱스 서버를 통해서 이루어집니다. 그래서 마치 서버/클라이언트 구조처럼 설계와 관리가 용이하지만 확장성이 떨어지는 단점이 있습니다. 스타크래프트와 같은 많은 게임들이 하이브리드 P2P 방식을 사용하고 있습니다. 게임상의 높은 네트워크 성능을 위해 유저간 직접 연결하는 P2P 통신을 사용하지만, 서로 방을 만들고 검색, 조인하기 위해서는 인덱스 서버를 활용합니다.
퓨어 P2P
퓨어 P2P는 모든 노드가 동등한 입장으로 네트워크에 연결되어 있습니다. 즉, 새로운 노드가 추가되는 등의 확장성은 높으나 시스템 전반을 설계하고 관리하기가 어렵다는 단점이 있습니다. 또한 각 노드들이 자율적으로 다른 노드들을 발견하고 탐색할 수 있도록 하는 알고리즘을 구현해야 하는 문제점이 있습니다.
구조화 오버레이와 비구조화 오버레이
구조화 오버레이는 각 노드들이 물리적으로 연결되어 있으며, 그에 따라 네트워크 토폴로지(Topology)도 반영되어 있는 네트워크입니다. 각 노드들의 ID가 할당되어 있고, 그에 따라 연결되는 대상들도 이미 정해져 있습니다. 라우팅(Routing)을 통해 메세지 전송 경로가 선택되어 있습니다. 따라서 다음과 같은 특징을 가집니다.
- 메세지를 전송하면 목적지 ID를 향해 효율적으로 전송이 되기 때문에 메세지 도착 가능성이 높음
- 노드의 확장성이 높음
- 노드 수가 증가하더라도 메세지의 전송 횟수는 크게 늘어나지 않음
- 노드 탐색은 네트워크의 물리적인 구조에 영향을 받아 유연함이 떨어짐
반면 비구조화 오버레이는 서로 물리적으로 연결되어 있지는 않지만, 논리적으로 연결된 것처럼 사용하는 네트워크입니다. 일반적으로 각 가정에서 P2P를 이용하는 경우가 비구조화 오버레이 구조입니다. 네트워크 토폴로지가 없으며, 각 노드를 탐색할 때는 탐색 메세지를 브로드캐스트(Broadcast)하여 주변 노드들에게 확산해나가는 방법을 사용합니다. 그러다보니 특정 노드를 향해 메세지를 전송할 경우 각 노드들간 메세지가 전파되면서 중간에 소실되는 경우가 많으며, 노드 수가 증가할 수록 메세지의 전송 횟수가 크게 증가하는 문제점이 있습니다.
- 메세지 전송시 주변 노드에게 전파시켜 전달하다보니, 특정 노드에 메세지 전달하는 것을 보장할 수 없음
- 노드 수가 많으지면 메세지 전송 횟수가 크게 증가함
- 물리적 네트워크 구조와 관계없이 주변 노드들을 유연하게 탐색하기 유리함
비구조화 오버레이에서 메세지 전송 문제를 해결하기 위해, 중간 중간 슈퍼 노드를 배치하여 메세지 전송을 효율적으로 하려는 개념도 있습니다.
블록체인의 기술 분류
블록체인은 P2P 기술을 이용하고 있습니다. 다만 블록체인의 종류에 따라서 그 특징이 다르기 때문에 분류 또한 다릅니다.
비트코인과 이더리움같은 경우는 모든 노드가 동등한 입장에서 네트워크를 형성하기 때문에 퓨어 P2P로 분류 가능합니다. 또한 네트워크 토폴로지 역시 정해지지 않았기 때문에 비구조화 오버레이라고 할 수 있습니다.
하이퍼레저같은 경우는 각 노드마다 그 역할을 다르게 지정할 수 있습니다. 네트워크 토폴로지가 정해지지 않았기 때문에 비구조화 오버레이이긴 하지만, 각 노드마다 역할을 다르게 하여 슈퍼 노드를 도입할 수 있습니다. 또한, 전용 멤버쉽(Membership) 서버를 갖고 있어 인덱스 서버 역할을 할 수 있기 때문에 하이브리드 P2P라고 할 수 있습니다.