블록체인 소개 - (6) 퍼블릭 블록체인과 프라이빗 블록체인

|

블록체인 분류

블록체인은 크게 3가지 형태로 분류할 수 있습니다. 누구라도 자유롭게 노드 참여가 가능한 퍼블릭 블록체인(Public Blockchain), 허가된 노드들만 참여가 가능한 프라이빗 블록체인(Private Blockchain), 여러 기관들이 컨소시움을 이루어서 블록체인 네트워크를 같이 운영하는 컨소시엄 블록체인(Consortium Blockchain)으로 나눌 수 있습니다. 하지만, 프라이빗 블록체인과 컨소시움 블록체인은 그 성격이 유사하기 때문에 보통 블록체인을 나눌 때는 퍼블릭 블록체인과 프라이빗 블록체인으로 나눕니다.


퍼블릭 블록체인

퍼블릭 블록체인은 누구나 노드 참여가 가능하기 때문에, 악의가 있는 참가자를 가려내거나 대처해야 하는 아주 큰 이슈가 존재합니다. 이는 블록체인이 등장하기 이전부터 비잔틴 장군 문제(Byzantine Generals’ Problem)라는 난제로 유명했었고, 크게 다음과 같은 문제가 걸림돌이었습니다.

  • p2p 시스템에서는 각 노드간 정보 도달에 시간 차이가 존재한다. 또는 도달하지 못하는 경우도 발생할 수 있다.
  • 악의가 있는 노드에 의해 잘못된 정보가 전달 될 수 있다.

블록체인도 비잔틴 장군 문제를 고스란히 갖고 있고, 비트코인에서는 작업 증명(PoW, Proof of Work)이라는 합의 알고리즘을 도입하여 이 문제를 해결했습니다. 물론 PoW가 비잔틴 장군 문제의 유일한 해결책은 아니기 때문에 PoW 이외의 합의 알고리즘(예를 들면 PoS 등)을 채택하고 있는 블록체인 기술들도 늘어나고 있는 추세입니다.

PoW나 PoS 등의 합의 알고리즘은 추가 포스팅을 통해 설명을 하도록 하겠습니다.

암튼, 퍼블릭 블록체인은 노드 참여가 자유롭다는 점 때문에 성능이나 PoW 도입으로 인한 다양한 단점들을 많이 갖고 있습니다. PoW의 단점들도 추가 포스팅으로 같이 설명하도록 하겠습니다.

퍼블릭 블록체인은 많은 노드들의 참여가 보장될수록 보안성이 강력해지기 때문에 참여한 노드들에게 보상을 줘야 하는 p2p 경제 원칙을 따르고 있습니다. (p2p 경제 원칙의 대표적인 사례로 비트토렌트같은 경우는 파일 공유를 하면 다운로드 속도를 보상으로 제공합니다.) 따라서 그 보상을 코인으로 제공하는 경우가 대다수이기 때문에 내부 화폐가 필요하다고 볼 수 있습니다.

퍼블릭 블록체인은 알고리즘 변경이나 버그 수정, 엔진 업그레이드 등이 상당히 어렵습니다. 만약 수정을 하게 될 경우 최악의 경우에는 하드포크(Hard-fork)가 발생하게 되어 새로운 체인이 만들어지는 경우도 발생할 수 있습니다.


프라이빗 블록체인

프라이빗 블록체인은 허가된 노드들만 네트워크에 참여가 가능합니다. 이를 관리하는 멤버쉽 서비스가 따로 존재하며 특정 기업에서 프라이빗 블록체인 기반으로 서비스를 제공하면, 해당 블록체인의 노드들은 서비스를 제공하는 기업에서 전부 구동시킬 가능성이 높습니다. (참고로 해당 기업의 서비스에 회원 가입이나 로그인이 자유롭다고 해서 해당 서비스가 퍼블릭 블록체인인 것은 아닙니다. 서비스의 회원이 아닌 ‘노드(Node)’로서 참여가 자유로울 때 퍼블릭 블록체인이 되는 것입니다.)

프라이빗 블록체인은 이미 신뢰할 수 있는 노드들만 참여가 가능하기 때문에, 악의가 있는 참가자를 가려내는 것보다는 성능이나 결제 완료성(Settlement Finality)이 훨씬 중요합니다. 그래서 성능과 결제 완료성 문제를 해결한 합의 알고리즘인 PBFT(Practical Byzantine Fault Tolerance)를 주로 사용합니다.

PBFT는 다수결로 의사를 결정하고, 그 다음에 블록을 생성하기 때문에 체인의 분기가 발생하지 않습니다. 그래서 결제 완료성이 보장되며, PoW와 같이 정답을 찾을 때까지 반복적인 연산을 하지 않기 때문에 훨씬 고성능으로 동작할 수 있습니다.

네트워크에 참여한 모든 노드들은 특정 기업에서 자체적으로 운영하는 노드일 가능성이 높기 때문에 퍼블릭 블록체인과 같은 보상 시스템이 필요없습니다. 즉, 내부 화폐가 없더라도 잘 동작할 수 있습니다.

또한 모든 노드들을 특정 기업에서 컨트롤할 수 있기 때문에 코드 수정이나 엔진 업그레이드 등이 퍼블릭 블록체인에 비해 훨씬 더 쉽습니다.