- 블록체인에서의 합의는 참여자 중 누구에게 블록을 생성할 권한을 주느냐를 결정하는 것임
성공적인 분산 합의가 이루어지기 위한 두 가지 조건
- 올바른 참가자들 모두에 의해, 같은 값으로 결정을 내리면서 합의 과정이 끝나야 함
- 합의의 결과 결정된 값은 임의의 값이 될 수 없고, 적어도 하나의 올바른 참가자에 의해서 제안된 값이어야 함
- 참여자들이 서로 연결되어 있고, 메시지를 주고 받는다고 가정해봅시다
- 메시지를 생성한 사람은 자신과 연결된 참여자들 모두에게 메시지를 보냅니다
- 그리고 메시지를 전달 받은 참여자는 자신이 받은 메시지를 순서대로 연결한다고 생각해봅시다
- 이때 (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) 들이 있음
- DPoS : 암호화폐 소유자들이 각자의 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고, 이 대표자들끼리 합의하여 의사결정을 내리는 방식
- PBFT : 블록체인의 합의 알고리즘의 기본인 BFT를 확장한 형태로 Neo, R3, ICT, Tendermint 같은 블록체인들이 사용하고 있음
'Web 3.0 > Block chain' 카테고리의 다른 글
[POSTECH 블록체인 입문] PoS & DPoS (0) | 2022.02.09 |
---|---|
[POSTECH 블록체인 입문] Proof of Work (0) | 2022.02.09 |
[POSTECH 블록체인 입문] ICON, LOOPCHAIN (0) | 2022.02.06 |
[POSTECH 블록체인 입문] EOS (0) | 2022.02.03 |
[POSTECH 블록체인 입문] Hyperledger Fabric (0) | 2022.01.27 |