합의 프로토콜의 속성

허정·2022년 3월 6일
0

블록체인

목록 보기
16/38

합의 프로토콜을 2가지 속성을 만족시켜야 합니다.

  • safety
  • liveness

1. FLP Impossibility

(1) safety

문제 없는 두 노드가 서로 다른 값으로 합의하면 안 됩니다. 다른 값이 합의됐다는 것은 같은 높이의 서로 다른 블록이 생성됐다는 뜻입니다.

(2) liveness

문제 없는 모든 노드들은 무한 루프에 빠지지 않고 상태 변경이 종료되는 합의가 반드시 이루어져야 합니다.

(cf) finality
블록체인에 커밋되면 잘 구성된 모든 블록이 취소되지 않는다.

2. Liveness over Safety

비트코인이 사용하는 합의 알고리즘은 언제나 더 어려운 문제를 푼 체인이 잇으면, 그 체인을 유효한 체인으로 판단합니다. 즉, 지금 있는 체인보다 더 긴 체인을 만들 해시 파워가 있으면, 언제든지 현재 합의된 블록을 다른 블록으로 대체할 수 있다는 것입니다.
Finality가 보장되지 않는다 = safety를 포기했다.(FLP Impossibility)

3. Safety over Liveness

전통적인 분산 시스템에서 연구되던 PBFT에 기반한 BFT 계열의 합의 알고리즘이 safety over liveness에 해당합니다.

(ex) Tendermint
하나의 라운드가 Propose, Prevote, Precommit의 3단계로 이뤄집니다. Prevote와 Precommit 단계에서 합의는 2/3이상의 동의가 필요합니다. 따라서 safety가 항상 보장됩니다. 하지만, 전송한 메시지가 시간 안에 도달하는 것을 보장하지 못 하는 비동기 네트워크에서는 합의가 이루어지지 않아서 블록이 생성되지 않을 수 있습니다. (liveness가 보장되지 않습니다.)
그래서 Tendermint는 정해진 시간 안에 메시지가 도달하는 것이 보장되지만, 그 정해진 시간은 알 수 없는 Partial Synchronous Network Model을 사용합니다. 그러나 최악의 경우에는 몇번의 라운드 동안 새 블록이 생성되지 않으면서 TPS 저하를 일으킬 수 있습니다.

4. 고려 사항

합의 프로토콜에서는 크게 3가지를 고려해야 합니다.

  • Finality
  • 51% attack & BFT
  • Transaction cost

0개의 댓글