https://arxiv.org/pdf/1904.13302.pdf "스텔라(XLM)는 당신이 생각하는 것만큼 안전한가?" 딱 봐도 도발적인 제목을 가진 이 논문은, 한국 블록체인 기술 분야에서 "저격수"로 통하는...

Gepostet von Daniel Hong am Dienstag, 7. Mai 2019

https://arxiv.org/pdf/1904.13302.pdf

"스텔라(XLM)는 당신이 생각하는 것만큼 안전한가?" 딱 봐도 도발적인 제목을 가진 이 논문은, 한국 블록체인 기술 분야에서 "저격수"로 통하는 카이스트의 김용대 교수님 연구실에서 저술한 것이다. 학술지 공개는 지난 4월 말에 이루어졌으나, 이 연구 자체는 상당히 오랜 시간에 걸쳐 조심스럽게 진행된 것으로 알고 있다. 당연하게도 카이스트는 한국 이공계 분야의 최고봉인 만큼 이 정도로 도발적인 내용의 논문을 허술하게 검증하고 내보냈을 리가 없었을 거다.

그럼에도 불구하고, 이 논문은 공개 이후 얼마 지나지 않아 스텔라와 관련 블록체인 커뮤니티에서 뜨거운 논란거리가 되었다. 내용 그 자체에 관한 논란이 아니라, 도발적인 제목과 논문 자체의 요지가 완전히 반대의 내용을 전달하고 있다는 것이다. 조금 더 정확하게 표현하자면, 잘 알려져 있듯 FLP 불가능성 정리에 따라 Safety와 Liveness를 모두 만족하는 합의체제는 존재할 수 없다. 그러나, 이 논문은 Liveness에 관한 내용임에도 불구하고 제목에서는 그와 상충되는 개념인 Safety를 지적하는 것처럼 해석될 요지가 있을 분만 아니라, 스텔라재단이 스텔라의 개발 목표에 관해 "Liveness보다는 Safety에 초점을 맞추고 있다"고 분명히 밝힌 바 있음에도 불구하고 굳이 약점인 Liveness를 공격했다는 불만의 목소리가 나오고 있는 것.

이 논문의 요지는 대략적으로 다음과 같다. 스텔라는 PBFT(Practical Byzantine Fault Tolerance)의 일종인 federated Byzantine agreement (FBA)를 합의 알고리즘으로 채택하고 있다. 스텔라 측은 FBA가 "표준적인" PBFT 합의보다 더 빠르고 안전하다고 주장하나, 실제로 따져보면 PBFT에서의 최대 Byantine 임계치 (즉, 악의적 방해에도 불구하고 네트워크에서 정상적인 합의가 이루어질 수 있도록 하는 악의적 노드의 최대 비율)와 (PBFT의 개조판인) FBA에서의 그것은 모두 1/3으로 같으므로 "표면적으로는" 어느 한 쪽이 더 낫다고 할 수 없다. PBFT 계열 합의는 모두 비잔틴 임계치를 넘어서지만 않으면 "충분한 수준의" Safety와 Liveness를 보장하므로, 둘 중 어느 것도 더 낫다고 볼 수 없는 것이다. 그러나, PageRank/NodeRank 등의 알고리즘으로 노드의 중앙성을 계산하면 스텔라재단이 운영하고 있는 3개의 quorum slice(FBA에서 서로 신뢰하는 것으로 지정된 노드들의 집합)와 그 노드들을 중심으로 네트워크가 상당히 중앙화되어 있다는 것을 알 수 있다. 조사 결과 이 3개의 slice 중 어느 2개만 오프라인이어도 네트워크 전체가 100% failure rate를 보이며, 따라서 스텔라재단은 그 자체로 네트워크의 단일실패점이다. 결론적으로, 스텔라의 FBA는 표준적인 PBFT보다 Safety/Liveness 그 어느 쪽에서도 더 낫다는 것을 보여주지 못했을 뿐만 아니라 중앙화로 인한 single point of failure의 위험성까지 존재하므로, 결코 바람직한 합의 알고리즘이 아니라는 것이다.

여기서 FLP 불가능성이란, 간단하게 말해 "*현재* 합의에 실패하지 않는 것" (Safety)와 "*미래의* 새로운 합의에 항상 성공하는 것" (Liveness) 두 가지 속성을 모두 완벽하게 만족하는 합의 알고리즘은 존재할 수 없다는 정리이다. 예컨대, 서로 멀리 떨어져 있는 3명의 회의로 모든 국가 정책을 결정하는 작은 정부가 있다고 가정하자. 이 경우, 의견을 물어야 하는 인원의 수가 적기 때문에 회의를 통해 합의를 이루어야 하는 안건들(message pool)에 대한 합의 그 자체는 매우 쉽게 이룰 수 있을 것이다 (Safety가 보장됨). 반면, 이 3명 중 2명이 갑자기 연락이 끊어지거나 악의적인 의도를 품기라도 한다면, 이 시스템은 더 이상 새로운 합의를 이룰 수 없게 된다 (Liveness가 보장되지 않음).

이 문제를 해결하기 위해 정부의 인원을 3명에서 15명으로 늘렸다고 하자. 이 경우, 인원의 수가 많아졌기 때문에 같은 2명이 연락이 끊어졌다 하더라도 새로운 합의를 이루는 것에는 문제가 없을 것이다 (Liveness가 보장됨), 거꾸로, 인원의 수가 많아졌으므로 의견 충돌이나 소통상의 문제가 발생하는 경우가 그만큼 증가하므로 합의에 실패할 가능성이 커진다 (Safety가 보장되지 않음).

이는 사회에서 정치가 맞닥트리는 딜레마와도 그 근원이 정확히 같다. 완전한 독재 체제라면 빠르게 결정을 내릴 수는 있겠으나 국민의 뜻을 정확하게 반영하기 어렵고 (Maximum safety - minimum liveness), 반대로 완전한 직접민주주의 체제라면 대다수가 생각하는 방향으로 결정을 내릴 수는 있겠으나 그 결정을 내리기까지 매우 오랜 시간과 노력을 들여야만 할 것이다 (Minimum safety - maximum liveness). 이 두 가지를 모두 완벽하게 만족시킬 수는 없으므로, 그 사이에서 적절히 타협한 것이 현대의 간접민주제이다.

마찬가지로, 블록체인 네트워크에서도 safety와 liveness 사이에서 적절히 타협해야만 한다. 이 때 중앙화되어 있을수록 safety가, 탈중앙화되어 있을수록 liveness가 강조되는 경향성이 있으나 항상 그런 것은 아니다 (합의 알고리즘을 어떻게 구현하느냐에 따라 다르다). 대표적인 것이 Cosmos의 Tendermint인데, 여기서는 guaranteed safety - not guaranteed liveness를 표방하나 구조적으로 중앙화된 단일실패점이 존재하는 구조는 아니다. (FLP Impossibility 정리는 1985년의 https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 이 논문에서 최초로 체계적으로 증명된 바 있다.)

다시 스텔라 이야기로 돌아가자면, FBA는 ("federated"라는 형용사가 암시하듯) 어느 정도의 중앙화를 통해 Safety를 확보해내는 접근을 채택하고 있다. 단지 문제는, 중앙화를 견제할 수 있는 메커니즘이 제대로 동작하지 않아 Liveness가 "블록체인"에서 존재해야 할 Baseline 기준조차 제대로 맞추지 못했다는 것이다. 중앙화되어 있더라도 Liveness만 만족할 수 있다면 이렇게까지는 까이지 않았을 거다. 스텔라재단이 운영하고 있는 3개의 quorum slice에 실패점이 집중되어 있다는 것은... "블록체인" 네트워크로서 갖춰야 할 자질을 제대로 갖췄는지 심각한 의문을 가지게 하는 것도 사실이다.

그래서 나는 이 논쟁 자체가 정작 중요한 논점을 비껴가고 있다고 본다. 이 논문의 제목이 다소 자극적이고 "Liveness"에 관한 내용을 제대로 표현하지 못했다는 것은 사실이나, "우리는 Safety에 주로 초점을 맞추겠다"라는 스텔라재단의 답변을 비판하는 사람이 왜 아무도 없는지 의문이다. 합의 절차가 어렵고 느리다고 독재 정부를 도입했다면, 그걸 과연 "민주주의"라 할 수 있나? 마찬가지로 Safety에만 주로 초점을 맞추어 개발한다면, 그걸 과연 "블록체인"이라 부를 수 있을까? 논문의 자극적인 제목과 스텔라의 "탈중앙화의 철학"만 가지고 싸우지 말고, 제발 이런 측면에서 조금 더 체계적이고 건설적인 논쟁이 진행되었으면 좋겠다. 개인적으로는 네트워크의 중앙화와 Liveness 속성은 완전히 별개이며, 어느 정도 중앙화되어 있더라도 Liveness를 만족시킬 수 있는 견제 메커니즘이 존재한다면 상관이 없다는 입장인데... 이렇게 말하고 다니면 중앙화를 옹호하는 거냐는 식으로 꼭 사상공격이 들어오더라. 이런 사상검증 말고, 커뮤니티 구성원들이 자신은 이 문제에 대해서 어떻게 생각하는지를 논리적으로 반박해줄 수 있었으면 한다.

오히려 내가 이 논문에서 의문을 가지고 있는 것은 따로 있다. 논문의 대략적인 논리는 (i) 비잔틴 임계치가 같은 PBFT 계열의 합의라면 Safety와 Liveness 그 어느 면에서도 더 낫지 않고, (ii) FBA는 PBFT 계열의 합의이고 비잔틴 임계치도 1/3로 PBFT와 같으며, (iii) PBFT보다 더욱 더 중앙화되어 있고 single point of failure까지 존재하기 때문에 (iv) FBA 합의는 위험하다는 논리 전개를 펼치고 있다. (i)과 (ii)의 가정은 이미 알려져 있는 PBFT 합의의 1/3 임계치 예외사항에 관한 논리 (http://www.scs.stanford.edu/~dm/home/papers/li:bft2f.pdf 논문 참조)를 따르므로 명확한 레퍼런스 없이 다소 Hasty한 가정으로 짚고 넘어가더라도, http://www.scs.stanford.edu/~dm/blog/safety-vs-liveness.html 이 블로그 글이 지적하듯 Liveness의 척도로 이 임계치의 측정값, 즉 (f, x)-Fault Tolerance라는 개념을 도입한 것은 다소 부적절해 보인다. 중앙화의 척도에 따라 single point of failure가 발생하면 FT 임계치는 당연히 크게 감소하는데, 그것이 practical한 상황에서의 liveness가 낮다는 증명은 되지 않기 때문이다. 예컨대, 이 척도대로라면 현대의 모든 금융 시스템은 낮은 liveness로 인해 수시로 장애를 일으켜야 하나, backup system과 실제 장애발생 확률이라는 변수가 있으므로 한 국가의 금융거래 시스템 전체가 다운되는 일은 지금까지 거의 발생하지 않았다. 논문의 논리 전개 자체는 크게 공감하나, 이러한 가정 때문에 일부 논리에서 설득력이 다소 떨어지는 부분이 있어 보인다.

(이상 학사 학위도 없는 무자격 학부생 나부랭이의 논문 리뷰였습니다)