SW/블록체인

블록체인 : 분산 합의 개념, 필요성, 종류

얇은생각 2022. 1. 4. 07:30
반응형

분산 합의란

먼저 블록체인에서 이루어지는 합의, 즉 분산 합의(Distributed Consensus)의 의미에 대해 알아보겠습니다. 블록체인에서의 합의는 참여자 중 누구에게 블록을 생성할 권한을 주느냐를 결정하는 것입니다. 블록체인 네트워크는 중앙 기관 없이 참여자들끼리 서로 연결되어 있는 구조이기 때문에, 결정을 내리기 위해서는 여러 사람들의 의견을 통일하기 위한 방법이 필요합니다.

성공적인 분산 합의가 이루어지기 위해선 두 가지 요구 조건이 만족되어야 합니다. 첫째, 올바른 참가자들 모두에 의해, 같은 값으로 결정을 내리면서 합의 과정이 끝나야 합니다. 둘째, 합의의 결과 결정된 값은 임의의 값이 될 수 없고, 적어도 하나의 올바른 참가자에 의해서 제안된 값이어야 합니다. 이 두가지를 만족시킬 수 있다면, 분산 합의가 만들어질 수 있습니다

 

 

분산 합의의 필요성

블록체인 : 분산 합의 개념, 필요성, 종류 1

 

참여자들이 서로 연결되어 있고, 메시지를 주고 받는다고 가정해봅니다. 메시지를 생성한 사람은 자신과 연결된 참여자들 모두에게 메시지를 보냅니다. 그리고 메시지를 전달 받은 참여자는 자신이 받은 메시지를 순서대로 연결한다고 생각해봅니다.

이때 (1)번과 (5)번 참여자가 동시에 메시지를 생성합니다. 그러면 (1)번 참여자와 (5)번 참여자는 (클릭) 각각 자신과 연결되어 있는 참여자들에게 생성한 메시지를 전달합니다. (3)번 참여자는 (1)번과 (5)번 참여자와 직접 연결되어있기 때문에 두 개의 메시지를 받습니다. 이때 1번으로부터 메시지를 받는 속도와 5번으로부터 메시지를 받는 속도가 네트워크 연결 상황에 따라 다르기 때문에 (1)번 참여자가 보낸 초록색 메시지를 먼저 받았다고 생각할 수 있습니다.

그렇게 메시지를 받은 참여자들은 또 다시 자신과 연결된 참여자에게 자신이 수신한 메시지를 전달합니다. 동일한 과정을 반복하여, 최종적으로 각각의 참여자들은 다음 그림과 같이 초록색과 주황색 메시지를 모두 수신하게 되고, 자신이 메시지를 받은 순서대로 이를 연결합니다. 최종 결과를 보시면 (1),(2),(3)번 참여자는 초록-주홍 순으로 메시지를 연결했지만, (4),(5)번 참여자는 주홍-초록 순으로 메시지가 연결되어 있습니다.

합의를 이뤄내기 위해서는 최종적으로 모든 참여자가 동일한 결과를 가지고 있어야 합니다. 그렇다면 이 시스템은 둘 중에 어떤 메시지 연결 순서를 받아들여서 인정할 수 있습니다. 결국에는 이렇게 분산 시스템에서 모두가 동일한 상태를 가지고 있을 수 있도록 하는 것이 “분산 합의 알고리즘“ 입니다.

 

 

블록체인이 분산 합의가 필요한 이유

기존의 중앙화 시스템에서는 일치하지 않는 의견을 중앙 기관이 결정 내려주었습니다. 블록체인과 같은 탈중앙화 시스템에서는 결정을 내려줄 주체가 존재하지 않습니다. 알아본 상황처럼 블록을 체인에 연결할 때, 동시에 두개 이상의 유효한 블록체인이 존재한다면 이 중에 하나를 선택할 수 있는 규칙이 있어야 합니다.

다시 말해, 블록체인 상의 모든 참여자들이 동일한 순서로 블록을 연결하기 위해서는 합의 알고리즘이 필요한 것입니다.  블록체인상에서 분산합의가 일어나는 과정을 알아보겠습니다.

 

블록체인 : 분산 합의 개념, 필요성, 종류

 

우선 peer-to-peer 네트워크의 모든 노드에서 합의에 도달한 일련의 트랜잭션 블록이 있을 것입니다. 이 트랜잭션들은 최적화된 상태로 존재하기 위해 블록체인의 형태로 구성되어있습니다. 각 노드는 처리되지 않은 트랜잭션을 가질 수 있습니다. 이는 합의과정을 아직 거치지 않은 것이므로 각 노드는 조금씩 다른 트랜잭션 셋을 가질 수가 있습니다.

그럼 이제 세 노드가 있고 각 노드는 앞서 말한 처리되지 않은 트랜잭션을 수신하고 있습니다. 노드들은 일정한 합의 프로토콜을 함께 운용합니다. 만약 합의에 도달한다면, 그것이 단 하나의 노드에서 제안된 블록이라 할지라도 유효한 블록인 것이 확인되면 블록체인에 추가할 수가 있습니다. 분산 합의는 비트코인이 동작하는 방식과 유사하지만 정확히 같지는 않습니다.

사실 분산 합의 시스템은 몇가지 어려운 기술적 문제들을 갖고 있습니다. 예를 들면, 노드가 제거되거나 악의적일 수가 있습니다. 또한, 특히 peer-to-peer 시스템이나 모든 노드가 서로 연결되어 있지 않다면 네트워크는 아주 불안전합니다. 게다가 인터넷 연결 상태가 좋지 않으면 통신 실패 상태가 될 가능성이 있습니다.

마지막으로 모든 데이터를 관리하는 하나의 데이터 센터가 없기 때문에 다양한 통신에서 지연이 발생할 수가 있습니다. 네트워크 지연으로 인해 분산합의 시스템에서는 글로벌 시간이라는 개념이 없습니다. 이는 모든 노드가 단순히 타임스탬프에 근거하여 이벤트의 순서를 합의하는 것이 불가능함을 의미합니다.

 

 

분산 합의 알고리즘 종류

다양한 분산합의 알고리즘이 있지만 대표적으로 알려진 작업증명(PoW), 지분증명(PoS), 위임증명(DPoS), 비잔틴 장애 허용을 이용 하는 것(PBFT) 들이 있습니다.

우선, 작업증명은 목표값 이하의 해시를 찾는 과정을 무수히 반복함으로써 해당 작업에 참여했음을 증명하는 방식의 알고리즘입니다. 가장 대표적인 합의알고리즘으로 Bitcoin, Ethereum, Litecoin, Zcash 등의 블록체인이 작업증명방식을 채택하고 있습니다. 그리고 지분증명은 암호화폐를 보유하고 있는 지분율에 비례하여 의사결정 권한을 주는 방식입니다.

QTUM, Peercoin 등의 블록체인이 지분증명 방식을 사용하고 있습니다. 위임증명은 암호화폐 소유자들이 각자의 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고, 이 대표자들끼리 합의하여 의사결정을 내리는 방식입니다. EOS, Steem, Risk, Ark 등의 블록체인이 위임지분증명 방식을 채택하고 있습니다.

마지막으로 PBFT는 블록체인의 합의 알고리즘의 기본인 BFT를 확장한 형태로 Neo, R3, ICT, Tendermint 같은 블록체인들이 사용하고 있습니다.

반응형