분산된 시스템에서의 합의

트랜잭션의 모음인 블록이 생성되고, 다음 블록이 계속 연결되는 과정에서

각 노드가 서로 다른 내용의 블록을 연결하여

체인이 여러 갈래로 나뉘어지는 것을 방지하기 위한 메커니즘이다.

블록을 생성하고 유지하는 채굴자 또는 검증인이 기존의 체인에 어떤 블록을 더할 것인지 합의하고

각 노드에 생성된 블록을 업데이트하여 같은 내용의 블록체인을 유지하도록 규칙을 정하는 것이다.

동기성과 비동기성

각 노드간 어떤 블록을 연결할 것인지 합의하기 위해서는

누가 어떤 블록을 생성했는지 알아야 하고, 각 노드가 제안한 후보 블록이 있다면

어떤 블록을 최종적으로 선택하여 체인에 연결해야 할지 정해야 하는 과정에서 통신이 필요하다.

이때 노드 간 통신을 메시지를 주고 받는다고 표현하며,

분산된 환경에서 어떻게 합의에 이를 것인가를 결정하는 합의 알고리즘에서는

어떻게 메시지를 주고 받을 것인가가 중요하게 고려된다.

메시지를 주고 받는 방법은 크게 두 가지로 나눌 수 있다.