Safety & Liveness - FLP Impossibility [TIL / 블록체인]

알락·2022년 11월 13일
0

블록체인

목록 보기
6/11

blockchain banner

블록체인의 합의 알고리즘은 현실의 의사결정 모델을 가상에서 따라해보려는 노력으로 만들어졌다. 현실에서는 블록과 같은 집단의 공동목표가 모호해서 그렇지, 블록체인의 블록과 같은 역사 속의 한 획을 긋는 중요한 의사결정을 하게 된다. 현재는 많은 국가들이 이러한 의사결정의 기준을 민주주의 다수결의 원칙으로 하고 있다.
블록체인에서 말하는 합의란, 결국 현실의 "결정된 의사"와 같은 말이다. 그리고 합의를 이루는 과정이 꼭 "다수결의 원칙"을 따를 필요는 없다. 이는 합의를 도출하는 하나의 방법일 뿐이다.

합의를 도출하는 과정에서 어떤 것을 중요하게 생각할 것이냐라는 문제가 생긴다. 그 문제의 큰 그림을 그려보게 하는 개념이 있다.


FLP Impossibility

FLP Impossibility 는 이 아래의 가지 관점, Safety 와 Liveness가 분산 시스템에서 한 번에 충족되어질 수 없다는 이론이다. 합의 알고리즘을 설계할 경우에는 이 두 가지 관점 중 어느 것을 선택할 것이냐라는 문제제 직면하게 된다.

⌞ Safety

"문제가 없는 두 노드는 서로 다른 값으로 합의하지 않는다"라는 원칙이다. 즉 Saftey를 추구하는 합의 알고리즘에서 도출된 합의는 잘못될 수 없다는 것이다.

잘못되었다는 말은 여기에서 값이 다르다는 뜻에서만 사용하도록 하자. 정의의 관점에서 잘못되었다는 것은 판단하기 힘든 문제다.

⌞ Liveness

"문제 없는 노드들은 반드시 합의를 한다."라는 원칙이다. 노드들간의 메시지로 인해 일어나는 상태 변화를 언젠가는 매듭 짓는 것이다.


Liveness over Safety

비트코인이 채택하고 있는 합의 알고리즘 PoW는 개발자인 사토시 나카모토의 이름을 따 사토시 합의라고도 칭한다. 사토시 합의는 Safety를 희생하고 Liveness를 선택하였다. 일반적으로 사토시 합의에서는 주어진 문제를 더 잘 푸는 능력이 있는 체인이 선택되어지는데, 이는 결국 어떤 체인이 너 많은 해시파워를 갖고 있느냐로 귀결된다.
하지만 이에 대한 문제점은 생성된 블록의 확정이 늦어진다는 것이다. 아니 심지어 영원히 생성된 블록의 확정을 담보할 수도 없다. 왜냐하면 언제나 "51% 공격"이 도사리고 있기 때문이다. 비트코인의 블록들도 완전한 확정이 아닌 일반적인 확정이라고 얘기할 수 있다.

Safety over Liveness

PBFT에 기반한 BFT 계열 합의 알고리즘들이 Safety를 중시하는 알고리즘에 속한다.
특히 Cosmos 블록체인의 Tendermint 합의 알고리즘이 대표적인 방법이다. 이 방법으로는 어떤 상황에서도 서로 다른 두 블록이 동시에 생성되는 일이 없다. 하지만 메시지가 도달하지 못하는 비동기 네트워크에서는 블록 생성이 이루어지지 않을 수 있다. 이는 Liveness 가 보장되지 않는 상황을 의미한다.
BFT 계열 합의 알고리즘은 블록 생성을 위해 2번의 투표를 모야아 한다. 언젠가는 합의가 될테지만, 최악의 경우는 오랜 기간 블록이 생성되지 않아 TPS 저하의 결과를 만든다.

전하는 말

중요한 것은 safety와 liveness는 trade-off이지 둘 중 누군가가 더 우월한 특성은 아니라는 것이다. 자신이 구현하려는 서비스의 종류에 따라 safety와 liveness가 어느 정도 필요한지를 판단하여 알맞은 합의 알고리즘을 사용하는 블록체인을 선택해야 한다.
- [슭의 개발 블로그] 에서

참고

profile
블록체인 개발 공부 중입니다, 프로그래밍 공부합시다!

0개의 댓글