클레이튼의 합의 알고리즘은 뭐가 다를까?
사람들은 모두 ‘합의’하면서 살아간다. 다수결에 원칙에 따라 선거를 진행하고, 피해자와 가해자 사이 입장의 차이를 해결하기 위해 ‘합의’하기도 한다. 당사자들간 원만한 합의가 되지 않는다라도 재판 판결이라는 ‘합의’로 결론을 도출한다. 이러한 ‘합의’는 많은 불특정 사람들이 공존하는 블록체인 생태계에서도 중요하다. 블록체인에서는 이를 ‘합의 알고리즘’이라고 부른다.
블록체인에서 합의가 중요한 이유는 수많은 노드가 함께 의사결정에 참여하는 분산 시스템이기 때문이다. 블록체인은 어떤 사안에 대해 중앙의 관리자가 결정하는 것이 아니기 때문에, 참여자(노드) 간 합의 알고리즘이 중요하다. 특히 노드에 사기꾼이 끼어있어도 그로 인해 잘못된 의사결정을 하지 않도록 만드는 게 중요하다. 합의 알고리즘이란 이런 문제를 일으키지 않고 모든 노드가 합리적인 결정을 내릴 수 있도록 하는 체계다.
대표적인 합의 알고리즘으로는 비트코인에서 사용하는 작업증명방식(PoW)방식과 이더리움 2.0이 채택한 지분증명방식(PoS)이 있다. PoW는 ‘탈중앙화’ 노드들이 컴퓨터 암호화로 이뤄진 복잡한 계산 문제를 푸는 방식으로 합의를 진행하는 알고리즘이다.
PoS 방식은 암호화 해독 능력이 아니라 블록체인 상의 지분을 바탕으로 합의를 진행하는 알고리즘이다. 지분이 많은 노드가 생태계 내 선한 영향을 끼쳐 발전을 만들면 다시 생태계 지분 증가로 이어지는 선순환을 이끌 수 있는 알고리즘이다. 앞서 이더리움이 지난 9월 ‘머지’ 업그레이드를 통해 기존 PoW에서 PoS 방식으로 전환했다.
그런데 국내의 대표적인 블록체인인 클레이튼은 PoW도 PoS도 채택하지 않았다. 클레이튼은 이스탄불 비잔티움 결함 허용(IBFT)이라는 방식을 채택했다. 클레이튼이 채택한 IBFT은 무엇이고, 왜 이 알고리즘을 채택했을까?
김민철 크러스트유니버스 개발자는 9일 진행된 ‘이프 카카오 2022: 카카오 블록체인 클레이튼의 합의 알고리즘 A to Z’ 강연에서 클레이튼의 IBFT에 대한 소개를 했다.
그에 따르면, 클레이튼이 사용하는 IBFT는 제안자의 제안에 합의 참여자들이 투표를 통해 동의하는 합의 알고리즘이다. 김 개발자는 1초 내 합의 과정을 모두 완료하고, 한번 합의된 결론은 번복하지 않는 안전한 합의 알고리즘이라고 설명했다. 앞선 방식들이 채굴 능력 혹은 높은 지분에 의해 특정 개인의 권한이 강하게 주장됐더라면, 클레이튼 생태계에서는 오로지 ‘투표’를 통해 블록을 결정하는 민주적인 시스템이라고 그는 전했다.
그는 IBFT 알고리즘이 PoW와 PoS와 다르게 탈중앙화를 제한하는 대신 보안성과 확장성을 강화한다고 설명했다. 그는 “분산 시스템에선 모든 문제를 해결할 수 있는 완벽한 알고리즘은 없고, 서비스와 네트워크 각 특성을 이해해 적절한 합의 방법을 선택해야 한다”고 말했다.
그에 따르면 클레이튼의 합의 알고리즘은 ▲합의 참여자 선정 ▲합의 동작 선정 ▲관리 대상 데이터(블록) 제안자 선정 ▲블록 제안자 교체 ▲안정적 합의를 위한 잠금(락킹, Locking) 메커니즘이라는 특징이 있다.
클레이튼 생태계 참여자가 되기 위해서는 먼저 500만 클레이를 고정(스테이킹)시켜 ‘거버넌스 카운슬(GC)’에 참여해야 한다. 쉽게 말해 클레이튼 생태계에 속해 있어야 한다는 말이다. 이곳에 참여하게 되면 여러 수학적 기준을 통해 각각의 커뮤니티가 구성되고, 블록에 대한 합의를 진행한다.
클레이튼 생태계에서는 특정 노드가 많은 비율의 지분을 스테이킹 하더라도 합의 시스템에서 적용되는 비율에 의해 모두 균등하게 조정된다. 즉, 생태계 내 많은 지분을 가지고 있더라도 합의 결정권은 모두 똑같이 부여된다는 것이다.
김 개발자는 “클레이튼의 경우 스테이킹량에 비례해 참여 기회를 주고 있다”면서도 “ (블록 제안에 있어서는) 기회가 중앙화될 수 없도록 특정 노드가 시스템 내 너무 많은 권한을 차지할 수 없게 조정하고 있다”고 설명했다.
이렇게 생태계 참여자가 선정됐으면 본격적인 합의가 시작된다. 대표 제안자는 클레이튼 생태계내에서 발생한 거래 내역을 합의 참여자들에게 전송한다. 해당 거래 내역을 담은 메시지를 받은 다른 참여자들은 합의와 동의 의사를 밝히고, 다른 참여자들에게도 그 여부를 확인한다. 그리고 그 합의 참여자 전체에서 3분의 2가 동의했다면, 최종 확정을 위한 확인 단계로 나아간다.
합의가 일정 시간 진행되지 않는다면, 새로운 대표자를 선출하고, 처음부터 다시 합의 과정을 시작한다. 클레이튼의 경우 10초 동안 하나의 블록도 합의되지 않으면, 해당 합의 과정을 중단하고, 새로운 합의를 시작한다. 하지만 이는 이미 대다수가 합의로 이끈 과정을 다시 해야한다는 점에서 불편함이 크다.
이에 대해 김 개발자는 “이때 안정성을 보장하는 락킹 메커니즘이 필요하다”며 “제안자 변경이 일어나더라도 락킹된 블록은 새로운 제안에서 합의로 이어지지 않는다”고 설명했다. 클레이튼에선 해당 메커니즘으로 안전하게 블록 제안자를 변경하면서, 하나의 값으로 합의를 진행할 수 있게 하고 있다는 설명이다.
앞으로의 클레이튼의 합의 알고리즘은 어떤 방향으로 가게될까. 김 개발자는 “현재 대부분의 합의가 아시아를 기반으로 동작하기 때문에 이를 글로벌로 확장해 지역적 한계를 극복해보려고 한다”며 “현재 프로토콜 내에서 합의 알고리즘을 개선할 수 있는 방법 등을 연구 개발 중에 있다”고 전했다. 이어 “탈중앙성 확보를 위해 합의 참여 노드를 계속 늘려나가고 있으며, 각 노드의 대표성 증대를 위해 노력하고 있다”고 전했다.
글.바이라인네트워크
<박지윤 기자> nuyijkrap@byline.network