목차
-P2P란?
-P2P 장점
-P2P 단점
P2P(Peer-to-Peer Or Point to Point)
블록체인의 가장 핵심중에 하나는 탈중앙화입니다. 비슷한 사례로 MP3서비스의 혁명 "소리바다"를 기억하시나요? 소리바다는 사람들끼리 직접 연결을 시켜서 MP3를 공유하던 서비스입니다. 최근에는 토렌트(torrent)같은 서비스가 나왔지만 2000년대 초에는 소리바다가 P2P 서비스의 최고봉이었죠. 즉 P2P는 사람과 사람을 직접 연결하는 기술입니다.
블록체인은 일명 CS구조라고 하는 Client-Server를 채택하지 않습니다. 이미 Server라는 말이 "중앙"화라는 말을 의미 할 수 있기 때문입니다. 물론 P2P도 다른 의미로 CS를 보여줄 수 있습니다. 예를 들어 사람과 사람간의 연결을 하더라도 소리바다처럼 누군가가 서버가 되어서 자료를 공유하고 누군가는 클라이언트가 되어서 서비스를 이용하는 역할이 될 수 있기 때문입니다. 그러나 일반적인 중앙에 사양이 매우 좋은 서버(Server)에 다중의 클라이언트(Client)가 붙는 구조를 CS구조라고 하고, 블록체인은 CS보다 P2P를 지향합니다.
P2P 기술의 장점
CS구조보다 단점이 많을것 같지만 P2P는 CS에서 느낄 수 없는 자유스러움과 강력함이 있습니다. 마치 검열이 강력한 iOS와 자유로운 안드로이드같은 느낌이라고 할까요? 안드로이드가 자유롭기 때문에 악성 프로그램도 많지만 iOS보다 더 많은 개발자가 참여하여 더욱 다양한 프로그램이 등장할 수 있는 것이 바로 그 사유입니다. 또 자유롭기 때문에 누구나 참여할 수 있는데 이 참여를 하는 사람들에게 보상을 주게 되면 CS보다 안정적인 서비스를 보여줄 수 있습니다.
CS는 중앙에서 이익을 가져가고, 손해를 보는 시스템이지만 P2P는 만들어 놓으면 사람들이 알아서 서버를 자청하며 생태계를 구축하기 때문에 돈이 들어가지 않습니다. 0원이 될수도 있는 비트코인을 보상으로 줄테니 P2P를 유지해라라는 것이 비트코인의 블록체인의 개념이며, 사람들은 비트코인을 얻기 위해서 자신의 PC를 기꺼이 P2P에 참여를 시켜서 비트코인의 생태계를 유지하게 됩니다.
P2P의 막강한 능력중 가장 핵심적인 것은 바로 보안 능력입니다. P2P는 모든 것을 서로간에 감시를 하게 됩니다. CS구조는 서버에서 내린 명령을 클라이언트가 따르는 구조이지만, P2P는 모든 컴퓨터가 서버-클라이언트 역할을 하게 됩니다. 그래서 상대방의 컴퓨터를 감시하게 되고 올바른 결론으로 도출을 하게 됩니다.
CS는 왕이 모든 것을 내리는 구조라고 한다면, P2P는 모든 시민들이 참여하여 잘못된 것을 정정하는 직접 민주주의 느낌이 강합니다. 그러다보니 누군가의 컴퓨터가 해킹이 되어서 잘못된 연산이 된다 한들 나머지 대다수의 컴퓨터가 올바른 판단을 내리게 되면 그 잘못된 연산을 하는 컴퓨터를 무시할 수 있습니다. 바로 이 기능으로 인해서 비트코인 블록체인은 탈중앙화 방식으로 돌아갈 수 있게 되는 것입니다.
그리고 노드(Node, 연결된 컴퓨터를 노드라고 합니다)들중 장애가 발생하여도 서비스에 지장이 크지 않거나 없없는 고가용성 혹은 내고장성의 서비스를 기본적으로 보여주지만, CS는 서버에 장애가 발생하면 무조건 서비스를 이용할 수 없습니다. 이걸 SPOF(Single Point of Failure) 구조라고 하는데 이를 위해서 서버를 분산으로 돌리지만 비용을 무시할 수 없을 것입니다.
P2P 기술의 단점
P2P의 단점도 장점의 강력함과 같이 매우 크리티컬한 단점을 가지고 있습니다. 클라이언트-서버 구조는 서버를 운영하는 사람이 존재한다면 언제 어디서든지 서비스를 이용할 수 있고 검증된 데이터를 사용할 수 있습니다. P2P같은 경우 서버의 역할을 해줄 사람이 없다면 서비스를 당연히 이용할 수 없습니다. 본인이 이용한 만큼 본인도 그 댓가를 지불하게 되는 원리기 때문에 댓가를 지불하기 싫은 사람이 많을수록 점점 서비스의 퀄리티가 죽을 수 있습니다.
그리고, 모든 P2P의 노드들의 연결 속도가 빠르면 모르겠지만, 회선이 느린 노드가 존재할 경우 전체 네트워크의 속도를 저하시킬 수 있는 단점이 존재합니다. CS 구조는 운영하는 사람들이 빠른 회선을 쓴다면, 클라이언트 회선만 속도가 보장될 경우 충분히 빠른 서비스를 이용할 수 있지만 P2P는 그렇지 못합니다.
Reference: https://needjarvis.tistory.com/237
'블록체인' 카테고리의 다른 글
[Typescript] 타입스크립트로 블록체인 P2P 구현해보기(찍먹) (0) | 2022.06.14 |
---|---|
[Typescript] 타입스크립트로 블록체인 마이닝(채굴) 구현하기 (0) | 2022.06.14 |
[Typescript] 타입스크립트로 블록체인 블록 검증하기 (0) | 2022.06.14 |
[Typescript] 타입스크립트로 블록체인 블록 구현하기 (0) | 2022.06.09 |
[블록체인] 블록체인 특징, 구성, 블록 만들어보기 (0) | 2022.06.08 |