블록체인 - 4. 분산 P2P 네트워크 (Distributed Peer-to-Peer Network)

2024. 1. 24. 16:43블록체인/블록체인 기초

728x90
반응형

 블록체인에 대해 설명할 때 많이 들어보았던 표현으로 분산원장 기술(DLT: Distributed Ledger Technology), 분산 P2P 네트워크(Distributed Peer-to-Peer Network)등이 있다. 어림짐작으로나마 P2P라는 게 무엇인지는 알고 있으나 정확히 무엇을 의미하는지는 잘 모르는 경우가 많다.

 

 이에, 이 글에서는 P2P 네트워크와 분산 컴퓨팅에 대해 간략히 설명하고, 이것들이 블록체인에서 어떤 역할을 수행하는지 기술하여 보겠다.


P2P 네트워크

< 그림 1 - 클라이언트-서버 모델과 P2P 네트워크의 차이를 나타낸 그림 >

 

 P2P 네트워크(Peer-to-Peer Network)는 클라이언트-서버(Client-Server) 구조와 다르게 서버가 따로 존재하지 않으며, 각 노드들이 모두 동등한 계층 노드(Peer Nodes)들로 이루어져 있다. 말 그대로 각 노드들은 동등한 계층에 존재하여, 동등한 권리와 역할을 가진다. 쉽게 말해, 모든 노드는 공급자이며 소비자이다. 여러 자원(여기서는 노드)들에 의해 동작하는 네트워크를 분산 네트워크라 하고, 이 때문에 P2P 네트워크를 분산 P2P 네트워크로도 부른다.

 

 앞서 설명했듯, P2P는 중앙 집중화된 네트워크가 아니기에 DDOS와 같은 공격에 내성이 있다. 블록체인을 구성하는 전체 노드 중 하나가 공격받는다 해도, 다른 노드들 간에 통신이 이루어지는 데는 아무 문제가 없기 때문이다. 그리고 데이터의 정보가 위변조 되는 것을 차단하는 효과도 가지고 있다.[각주:1]

 

 우리 주변에서 흔히 볼 수 있는 P2P 프로그램으로는 파일 공유 프로그램이 있다. 과거에 토렌트를 이용해 본 적 있는 사람들은 알 텐데, 토렌트에서 어떤 파일을 받고자 할 때 해당 파일을 가지고 있는 사람[각주:2]의 수가 많을수록 전송 속도가 빨라지거나, 어떤 파일을 받고 나면 자신 컴퓨터에서 다른 컴퓨터로 시드를 공유하는 작업을 시작해서 본인 컴퓨터가 느려지거나 하는 경험을 해 본 적이 있을 것이다.

 

 방금 이야기한 것처럼 토렌트와 같은 파일 공유 시스템에서는 파일을 공유하는 사람이 적거나 아예 없는 경우에는 파일을 받는 속도가 무척 느려지거나, 파일을 다운 받는 것이 불가능하다.  P2P의 특성상 연결되어 있는 컴퓨터가 늘어나면 늘어날수록 피어가 늘어나서 더 성능이 좋아진다. 그런데 토렌트의 경우 파일을 공유해도 얻는 것이 없으니, 다들 자기 파일만 다운받고는 공유 옵션은 꺼버리곤 한다.

 

 블록체인은 이런 P2P 시스템의 문제점을 어떻게 해결하였는가. 비트코인에서는 사용자들이 전체 블록체인의 데이터를 가지고 있게끔 유도하기 위해, 채굴이라는 개념을 도입함으로써 해결하였다.[각주:3] 비트코인에서는 채굴 경쟁에 뛰어들기 위해서는 전체 블록체인의 데이터를 가지고 있어야만 한다.


블록체인에서의 P2P 네트워크

 블록에 대해 설명한 글에서 블록과 블록들이 어떻게 서로 연결되어 있는지(체인을 이루는지) 설명하였다. 그리고 이렇게 연결된 블록들이 데이터 변경에 대해 어떻게 대응하는지 불변 원장에 대해 설명하는 글에서 설명하였다. 이때, 해시를 이용한 암호화 링크만으로는 해결할 수 없는 2가지 문제가 존재한다 이야기하였다. 첫 번째는 누군가가 시스템 상의 블록을 전부 변경하는 경우고, 두 번째는 체인 중간에서 사고가 일어났을 경우다.

 

< 그림 2 - 블록체인에서의 각 Peer들의 관계와, 그들 각각이 가지고 있는 블록 체인을 나타낸 그림 >

 

 그림 2와 같이 블록체인에서 각 피어들은(개인들은) 전체 블록체인 데이터를 가지고 있다.[각주:4] 만약 여기 존재하는 어떤 사용자의 블록체인의 데이터를 임의로 수정하였다고 가정하여 보자.

 

< 그림 3 - 어떤 피어에서 블록체인의 블록 중 하나의 데이터가 임의로 변경되고, 그 뒤의 블록들의 해시값까지 모두 변경된 것을 나타낸 그림 >

 

 블록체인의 중간에 있는 어느 블록의 데이터를 수정하려면 그 블록의 해시값이 달라지게 되므로, 그 뒤의 블록들의 해시 값까지 모두 변경해야 한다. 번거로운 작업이지만 누군가가 불굴의 집념으로 이것을 해냈다고 가정하자. 이것을 나타낸 그림이 위의 그림 3이다. 이럴 경우 어떤 일이 일어나는가.

 

 블록체인의 각 사용자들은 서로 끊임없이 데이터를 동기화한다. 만약 그림 3처럼 누군가가 자기 마음대로 체인의 데이터를 조작한다면 해당 블록체인에게 데이터가 잘못되었다는 신호를 보내게 된다. 이렇게 여러 피어에서 해당 체인이 잘못되었다는 신호를 보내게 되면, 자신 주변의 블록체인 대다수가 다른 블록체인을 가지기로 합의했다는 것을 알게 되고, 빠르게 기존의 값으로 복구하게 된다.

 

 그렇다면 블록체인을 해킹하는 방법은 전혀 없는 것인가. 언제나 방법은 존재한다. 블록체인 네트워크에 존재하는 전체 피어 중에서 50% 이상의 컴퓨터를 굉장히 빠른 시간 내에(몇 초에서 최대 몇 분) 동시에 공격하여 자신이 원하는 대로 데이터를 교체한다면 공격에 성공할 수 있다.[각주:5] 이러한 공격을 51% 공격이라 한다.[각주:6]


  1. 이에 대해서는 아래의 블록체인에서의 P2P 네트워크에서 자세히 설명한다. [본문으로]
  2. 정확히는 공유하고 있는 사람 [본문으로]
  3. 채굴에 대한 개념은 다른 글에서 중점적으로 다룬다. 이곳에서는 간단히 그런 개념이 있다는 정도만 설명하고 넘어간다. [본문으로]
  4. 설명을 위해 모든 노드가 전체 블록체인 데이터를 가지고 있는 것처럼 설명했지만, 실제로는 그렇지 않고 좀 더 복잡하다. 여기서는 블록체인과 P2P에 대해 설명하기 위해 상세한 내용은 생략한다. [본문으로]
  5. 이 내용에 대해서는 합의 알고리즘에 대해 다루는 글에서 자세하게 설명할 것이다. 간단히 설명하자면 50% 이상의 해싱 파워를 가지고 있는 체인이 승리하고, 나머지 체인은 버려진다고 생각할 수 있다. [본문으로]
  6. 51% 공격이 성공한 예로는 비트코인골드, 이더리움 클래식, 모나코인 등에 대한 공격이 있다. 관련 뉴스기사 [본문으로]
728x90
반응형