Blockchain

[Blockchain] 블록체인과 P2P네트워크 그리고 분산 시스템

Razelo 2022. 10. 29. 16:45

오늘 여유가 생겨서 블록체인 관련 글을 몇 가지 읽어봤는데 굉장히 잘 설명된 글이 있어서 블로그에 소개하고자 한다.

 

간단하게 알아볼 수 있는 좋은 내용으로 블록체인에서의 P2P 네트워크에 대해서 간략하게 알아보도록 하겠다. 

 

참고로 영문을 읽으면서 옮겨 적어서 조금은 문맥이 딱딱하게 느껴질 수도 있다. 


우선 P2P 의 개념에 대해서 알아보자. (첫번째 링크 참고)  

 

최근의 client-server의 구조는 웹사이트의 페이지와 데이터베이스, 미디어 등을 저장하는 서버가 있는 구성이다. 그리고 클라이언트는 이에 대한 access 를 요청하는 형태로 이루어진다. 

 

분산화된 P2P 시스템은 좀 더 커뮤니티 중심적인 면이 크다. 이 모델에서는 서버는 없고 모든 요소가 하나의 작은 서버라고 볼 수 있다. 모든 노드들이 데이터의 일부를 조금씩 가지고 있고 알고리즘에 의해 가장 근접해있는 노드에게로 요청을 보내고 주고받는 형태이다. 

 

가장 좋은 예시는 Torrent이다. P2P 네트워크는 서비스를 이용하는 모든 네트워크를 물리적으로 종료하지 않는 이상 그것을 제어하기는 어렵다. 

 

디바이스가 점점 강력해지고 프로세서는 좋아지고 스토리지도 점점 효율적이며 빨라질 수록 인터넷 자체는 점점 P2P구조로 가게 될 것이다. 비트코인과 같은 여타 코인들은 페이팔과는 다르게 모두 P2P 네트워크의 성격을 갖는다. 

 

Tor 또한 P2P 네트워크이다. 익명성을 위해 사용되는데 다른 이들의 컴퓨터를 주변의 사용자들 사이를 오가게 만들어서 추적할 수 없게 만드는 기술이다. P2P 사용하는 많은 장점이 있다. 

 

기존 Client - Server 모델보다 에너지 효율적이며 로드 또한 상당히 잘 분산되어질 수 있다. 또한 테트워크 보안 측면에서도 많은 장점이 존재한다. 


그렇다면 블록체인에서의 P2P에 대해서도 알아보자. (두번째 링크 참조)

 

// P2P in blockchain 

P2P에서는 참고로 Client - Server 개념이 아니라 모든 컴퓨터들이 노드가 되는 개념이라고 보면 된다. 그래서 모든 노드들이 동시에 서버도 될 수 있고 클라이언트도 될 수 있다고 보면 된다. 즉 peer 2 peer 라는 이름도 모든 머신들이 각각 client - server 가 되는게 아니라 모두 peer 가 된다는 의미인 것이다. 

 

물론 P2P 네트워크에도 분류는 존재한다. Structured Network 와 Unstructured Network로 나뉜다. Unstructured Network에서는 모든 노드들이 단순하게 랜덤한 상대와 연결을 맺는다. 그리고 scale up, down 이 상대적으로 용이하다고 한다. 

 

그러나 단점도 있다고 한다. 구조화되어있지 않기 때문에 인덱싱이 굉장히 어렵다고 한다. (이 부분은 네트워크에서의 indexing을 말하는 것 같은데 설명을 읽으면서도 용어가 낯설어서 정확히 뭘 이야기하는지 모르겠다. 이후에 찾아서 따로 정리해놓겠습니다.) 그래서 만약 노드가 특정 데이터의 조각이나 다른 노드를 찾고자 한다면 탐색에 필요한 잠재적인 대상에게 모두 닿아야하기 때문에 network로 flood 되어야 한다고 한다. (즉 네트워크 전체에 너가 맞냐고 물어보는 과정이 필요하다는 뜻이다.) 당연히 네트워크 파워도 많이 쓴다. 그리고 만약 데이터가 희귀한 데이터라면 네트워크에 있는 모든 노드 중 하나라도 빠짐없이 응답하지 않는 이상 데이터를 못찾게 되는 경우도 발생할 수 있다고 한다. Unstructured network의 종류로는 Kazaa 와 Limewire가 있다고 한다. 

 

그렇다면 왜 블록체인은 특별할까? 

 

분산 시스템 아키텍쳐로써의 P2P는 많은 장점과 함께 해결해야할 과제들이 존재한다. 가장 큰 장점은 이 아키텍쳐에서는 Single Point of Failure가 존재하지 않기 때문에 회복력이 강하다는 점이다. 

 

그런데 P2P 네트워크에서는 노드가 클라이언트이면서도 서버처럼 행동하기 때문에 공격에 좀 더 취약하다. DOS공격 혹은 distribution of malware 혹은 corrupted data 같은 공격에 취약하다. 

(연구에 따르면 위에서 언급한 Kazaa 서비스의 경우 15퍼센트의 수백만의 파일에 적어도 52종의 다양한 바이러스에 감염된 상태였다고 한다.)

 

블록체인은 100퍼센트 붕괴시킬 수 없는 것은 아니지만 사토시는 비트코인 백서에 이 취약점에 관한 굉장히 영리한 솔루션을 제안했다. 합의 프로토콜을 소개하면서 비트코인의 모든 노드가 트랜잭션이 유효함에 합의해야한다는 것을 이야기한 것이다. 각 노드가 next block 채굴을 위해 경쟁하는 구조를 통해 게임 이론을 적용한 것이다. 

 

비트코인에는 디지털 가치에 대한 저장을 위해서 해싱과 암호학 등의 다른 개념들도 비트코인에 적용되어있다. 하지만 이런걸 떠나서 사토시가 P2P에서의 분산화된 시스템 아키텍처의 고질적인 약점의 해결을 위해 제안한 해결방법은 블록체인에서 가장 경쟁적이면서도 핵심적인 요소로 남게 될 것으로 여겨진다. 

 

블록체인은 분산 아키텍쳐에서 혁신적인 발전으로 볼 수 있다. 앞으로 또한 앞으로 더 발전할 것이라고 볼 수 있다. 

 


아래 두 곳의 블로그에서 많은 도움을 받았다.

 

감사합니다.

 

(참고로 첫번째 링크는 질문에 달린 댓글들이 굉장히 많은데 따라 읽으면 좋다. 그리고 두번째 링크는 글 퀄리티가 굉장히 좋다.)

 

https://www.quora.com/What-are-distributed-peer-to-peer-networks

https://coincentral.com/distributed-system-architecture/

 

반응형