[POSTECH 블록체인 입문] Distributed Consensus
Web 3.0/Block chain

[POSTECH 블록체인 입문] Distributed Consensus

  • 블록체인에서의 합의는 참여자 중 누구에게 블록을 생성할 권한을 주느냐를 결정하는 것임

성공적인 분산 합의가 이루어지기 위한 두 가지 조건

  • 올바른 참가자들 모두에 의해, 같은 값으로 결정을 내리면서 합의 과정이 끝나야 함
  • 합의의 결과 결정된 값은 임의의 값이 될 수 없고, 적어도 하나의 올바른 참가자에 의해서 제안된 값이어야 함

 

  1. 참여자들이 서로 연결되어 있고, 메시지를 주고 받는다고 가정해봅시다
  2. 메시지를 생성한 사람은 자신과 연결된 참여자들 모두에게 메시지를 보냅니다
  3. 그리고 메시지를 전달 받은 참여자는 자신이 받은 메시지를 순서대로 연결한다고 생각해봅시다
  4. 이때 (1)번과 (5)번 참여자가 동시에 메시지를 생성합니다
  5. 그러면 (1)번 참여자와 (5)번 참여자는 (클릭) 각각 자신과 연결되어 있는 참여자들에게 생성한 메시지를 전달합니다
  6. (3)번 참여자는 (1)번과 (5)번 참여자와 직접 연결되어있기 때문에 두 개의 메시지를 받게 되는데요
  7. 이때 1번으로부터 메시지를 받는 속도와 5번으로부터 메시지를 받는 속도가 네트워크 연결 상황에 따라 다르기 때문에
  8. (1)번 참여자가 보낸 초록색 메시지를 먼저 받았다고 생각하시면 됩니다
  9. 그렇게 메시지를 받은 참여자들은 또 다시 자신과 연결된 참여자에게 자신이 수신한 메시지를 전달합니다
  10. 동일한 과정을 반복하여, 최종적으로 각각의 참여자들은 다음 그림과 같이 초록색과 주황색 메시지를 모두 수신하게 되고, 자신이 메시지를 받은 순서대로 이를 연결합니다
  11. 최종 결과를 보시면 (1),(2),(3)번 참여자는 초록-주홍 순으로 메시지를 연결했지만, (4),(5)번 참여자는 주홍-초록 순으로 메시지가 연결되어 있습니다
  12. 합의를 이뤄내기 위해서는 최종적으로 모든 참여자가 동일한 결과를 가지고 있어야 하는데요, 그렇다면 이 시스템은 둘 중에 어떤 메시지 연결 순서를 받아들여서 인정해야하는 것일까요?
  13. 결국에는 이렇게 분산 시스템에서 모두가 동일한 상태를 가지고 있을 수 있도록 하는 것이 “분산 합의 알고리즘“ 입니다
  • 분산 시스템에서 모두가 동일한 상태를 가지고 있을 수 있도록 하는 것이 “분산 합의 알고리즘“ 

 

  • 기존의 중앙화 시스템에서는 일치하지 않는 의견을 중앙 기관이 결정 내려주었는데, 록체인과 같은 탈중앙화 시스템에서는 결정을 내려줄 주체가 존재하지 않음
  • 블록을 체인에 연결할 때, 동시에 두개 이상의 유효한 블록체인이 존재한다면 이 중에 하나를 선택할 수 있는 규칙이 있어야 함
  • 그래서 블록체인 상의 모든 참여자들이 동일한 순서로 블록을 연결하기 위해서는 합의 알고리즘이 필요함

 

분산합의가 일어나는 과정

  • peer-to-peer 네트워크의 모든 노드에서 합의에 도달한 일련의 트랜잭션 블록이 있음
  • 이 트랜잭션들은 최적화된 상태로 존재하기 위해 블록체인의 형태로 구성되어 있음
  • 각 노드는 처리되지 않은 트랜잭션을 가질 수 있음. 이는 합의과정을 아직 거치지 않은 것이므로 각 노드는 조금씩 다른 트랜잭션 셋을 가질 수가 있음
  • 세 노드가 있고 각 노드는 앞서 말한 처리되지 않은 트랜잭션을 수신하고 있다고 가정하면 노드들은 일정한 합의 프로토콜을 함께 운용할 것임
  • 만약 합의에 도달한다면, 그것이 단 하나의 노드에서 제안된 블록이라 할지라도 유효한 블록인 것이 확인되면 블록체인에 추가할 수가 있음

 

  • 분산 합의는 비트코인이 동작하는 방식과 유사하지만 정확히 같지는 않음
  • 노드가 제거되거나 악의적일 수가 있음
  • 특히 peer-to-peer 시스템이나 모든 노드가 서로 연결되어 있지 않다면 네트워크는 아주 불안전함
  • 모든 데이터를 관리하는 하나의 데이터 센터가 없기 때문에 다양한 통신에서 지연이 발생할 수가 있음

 

  • 다양한 분산합의 알고리즘이 있지만 대표적으로 알려진 작업증명(PoW), 지분증명(PoS), 위임증명(DPoS), 비잔틴 장애 허용을 이용 하는 것(PBFT) 들이 있음
  • DPoS : 암호화폐 소유자들이 각자의 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고, 이 대표자들끼리 합의하여 의사결정을 내리는 방식
  • PBFT : 블록체인의 합의 알고리즘의 기본인 BFT를 확장한 형태로 Neo, R3, ICT, Tendermint 같은 블록체인들이 사용하고 있음