시간과 스테이트의 분리

작성자 Ryan Gentry

July 16, 2019 | 18 minute read

향후 1, 2년 이내에 이더리움 2.0, 폴카도트(Polkadot), 디피니티(Dfinity), 니어 프로토콜(Near Protocol), 알고랜드(Algorand), 카데나(Kadena), 스페이스 메쉬(Spacemesh), 솔라나(Solana) 등 수많은 스마트 컨트렉트 플랫폼이 출시 예정이며, 각 팀은 차별화된 확장성 전략을 채택하고 있습니다.

그러나 대부분의 접근법은 비잔틴 장군 문제가 적용하는 환경(이하 ‘비잔틴 환경’)에 놓인 분산 컴퓨팅 체계의 근원적인 문제점, '시계(Clock) 문제'를 효과적으로 다루지 못하고 있습니다. 합의에 다다르려면 네트워크 상에서 최소한 51%의 참여 노드들이 같은 거래 목록을 동시에, 같은 순서로 집행해야 하는데, 이를 위해서는 동일한 시간 기준, 즉 전역 시계(Global Clock)에 대한 합의가 필요합니다. '시계 문제(Clock Problem)'는 위와 같은 환경에서 다수의 불신하는 주체들 간 시간 기준 합의의 어려움을 의미합니다. 모두가 전역 시계에 합의하면 각 거래 기록에 일관적인 타임스탬프가 적용되기 때문에 거래를 순서대로 집행하는 것이 훨씬 쉬워집니다.

시계 문제는 현대의 크립토 시대 이전의 대규모 네트워크들에도 나타났으며, 무선 통신 분야에서 가장 두드러졌습니다. 셀 타워들은 수만개의 핸드폰을 동시에 지원해야 합니다. 통신 가능한 주파수를 각 핸드폰당 개별적으로 지정해주기에는 대역폭(bandwidth)이 부족했기 때문에 통신사들은 다수의 통화를 같은 주파수에 주입시키는 "다중 접속 기술(Multiple Access Technology)이 필요했습니다.

2차세계대전 당시 코드분할다중접속(CDMA) 기술이 개발되었습니다. CDMA 기술은 시계 문제를 해결하기 위해 각 단말기에서 데이터를 고유 키로 암호화한 후 몇 개의 주파수에 걸쳐 다른 단말기들과 동시에 전송하도록 합니다. 통합된 통신을 각각 별개의 통화로 나누는 역할은 셀 타워에서 전담합니다. 위 과정에서의 효율성은 암호화의 복합성과 비례합니다. 저렴한 단말기들도 지원해야 하는 광범위 네트워크의 효율성은 이전부터 천천히, 일정한 속도로 향상되어 왔습니다.

통신사들은 2G 무선 전화 네트워크의 도래 이후 시계 문제 처리의 표준이 된 시분할다중접속(TDMA) 기술을 도입함으로써 효율성을 비약적으로 증진시켰습니다. TDMA 기술은 셀 타워들이 각 라디오 주파수를 시간 슬롯(Slot)으로 나누고, 개별 통화에 해당 타임 슬롯을 배정하는 방식을 취합니다. 이때 네트워크 전체적으로 가용한 시계를 셀 타워에서 제공합니다. TDMA 기술은 개별 주파수가 다수의 데이터 채널을 동시에 지원하도록 함으로써 제한된 대역폭의 확장성을 획기적으로 향상시켜 같은 주파수에서 동시에 송신하는 단말기들의 혼선을 감소시킵니다.

본 에세이에서는 블록체인 플랫폼들이 비잔틴 환경에서 시계 문제를 어떻게 다루는지 먼저 살펴봅니다. 이후 가장 효과적인 시계를 구축하는 블록체인이 시간과 스테이트(State)를 성공적으로 분리하여, 수백만 명 유저의 정보량을 안전하고 탈중앙화된 방식으로 처리할 수 있는 확장성을 갖출 수 있을 것이라는 논지로 결론 지을 것입니다.

시계와 탈중앙화 합의

구글 스패너(Spanner)는 최고 성능 분산화 데이터베이스 중 하나로 18개의 인스턴스가 동일한 방식 및 순서로 거래를 집행하며, 50,000+ 초당거래처리량(TPS)와 1초 미만의 완결소요시간(TTF) - 거래가 완결성을 갖추기까지 걸리는 시간 - 을 지원합니다. 스패너는 허가형 데이터베이스로, 강력한 사용자 인증 체계를 갖추고 있습니다. 스패너는 1989년에 개발된 팩소스(Paxos) 합의 알고리즘을 활용하며, 해당 알고리즘은 정전, 서버 다운, 악성 버그 등에도 데이터베이스가 기능할 수 있도록 합니다. 오늘날의 블록체인은 5,000+ TPS도 버거워 하는 상황에서 팩소스가 단 21개의 인스턴스로 위 성능을 구현한다는 점은 인상적입니다. 구글에서는 각 데이터 센터 원자 시계를 정기적으로 정확하게 동기화시키는 현장 상주 인원들이 전임 엔지니어로 고용되어 있습니다. 전역적으로 접근 및 신뢰 가능한 시계가 있으면 타임스탬핑이 가능해져서 순서가 뒤섞인 거래 목록을 받더라도 올바른 순서대로 처리할 수 있게 됩니다. 인스턴스들끼리 서로 같은 행동을 같은 순서로 진행하고 있는지 확인할 필요 없이 스테이트(State)를 업데이트하기 때문에 이는 시간과 스테이트(State)가 분리되었다고 말할 수 있습니다.

스패너 사례에서 도출할 수 있는 교훈은 비(非)비잔틴 환경에서 전역적으로 접근 가능한 시계가 있으면 합의가 상당히 쉬워진다는 점입니다.

안타깝게도 오늘날의 스마트 컨트렉트 플랫폼은 스패너와 비교했을 때 두 가지 추가적인 제한사항이 있습니다.

  1. 검증 노드가 되는 것은 검열 저항성을 위해 무허가성이어야 합니다.
  2. 검증 노드의 3분의 1이 악의적이더라도 이용자들의 자금은 안전해야 합니다.

검증 노드 인스턴스를 어디에서든 누구나 활성화할 수 있다면 합의 알고리즘은 다양한 하드웨어 및 네트워크 구성과 호환되도록 설계되어야 하며 악의적인 검증 노드들을 처리할 수 있어야 합니다. 또한 진정한 검열 저항성을 갖추려면 모든 대역 외(Out-of-band) 정보는 신뢰되면 안됩니다(The Oracle Problem).

팩소스가 개발된지 20년이 지난 시점에서 익명의 누군가가 무허가성 컴퓨터 네트워크 상에서 거래 순서에 대해 합의할 수 있는 방안을 고안해냈습니다. 사토시 나카모토의 작업증명 합의알고리즘(이하 '작업증명')입니다.

작업증명 + 타임체인 = 시계

실제로 사전 출시된 비트코인 코드에서 사토시 나카모토는 현재 보편적으로 표현되는 '블록체인 데이터 구조' 대신에 '타임체인'이라는 명칭을 사용했습니다. 타임체인에서는 평균 10분에 한 번씩 블록(거래 기록 집합체)이 추가되는 형식으로 시간이 움직이며, 해당 블록의 추가로 전역 스테이트가 최신화됩니다. 다만, 해당 과정은 작업증명, 난이도 조정, 최장체인규칙 등의 절묘한 조합으로 구현되며, 본 에세이의 범위에서 벗어나기 때문에 구체적으로 다루지는 않을 것입니다. 블록을 집행한 후 각 노드는 유효한 신규 블록을 자체적으로 채굴하거나 네트워크에서 받기 전까지 스테이트 최신화를 할 수 없습니다. 작업증명 상에서 시간과 스테이트는 결부되어 있어 항상 같이 움직입니다. 한마디로, 스테이트 최신화 없이는 시간이 흘러갈 수 없는 것입니다.

'유효'한 블록의 요건은 치열하게 논의되고 있는 주제입니다. 거래 양식과 블록 크기는 고려되고 있는 수많은 요소들 중 하나일 뿐입니다. 단, 네트워크가 순서에 맞게 해당 블록을 배치할 수 있도록 ‘이전 블록의 해시값을 블록에 포함하는 부분’은 논란의 여지 없이 필수로 여겨지고 있습니다.

Proof of Work + Time Chain = Clock

이미지: 블록체인의 각 블록은 이전 블록의 해시값을 포함하여 이전 블록 이후에 온다는 점을 증명합니다.

타임체인의 목적은 위의 1번 요건, '검증 노드가 되는 것은 무허가성이어야 한다.'를 충족시키는 것입니다. 현 비트코인 네트워크의 상태의 유효성을 검증하는 유일한 방법은 제네시스 블록 스테이트에서부터 현 스테이트까지의 모든 거래를 집행해 보는 것입니다. 타임체인은 신규 검증 노드가 따라올 수 있도록 12번째 블록이 11번째 블록 이후에 처리되었고 해당 순서대로 집행되어야 하는 점을 증명하는 형태로 검증 발자취를 남겨 놓습니다. 12번째 블록은 11번째 블록의 해시값을 반드시 포함하기 때문에 11번째 블록이 12번째 블록보다 먼저 만들어졌다는 논리가 절대적으로 성립합니다. 이러한 해시값의 타임체인은 논리적이고 단순명료한 - 물론 불규칙하고, 세밀하지는 않은 - 시계를 형성하여 네트워크 상의 모든 검증 노드들이 대역 외 정보 없이 독립적으로 검증할 수 있도록 합니다.

개방적이고 무허가성 환경에서 전역적인 접근 및 신뢰 가능한 시계를 구현한 것이 사토시의 최대 혁신입니다. 전역 스테이트는 전역 시계가 새로운 블록을 통해 최신화하기 전까지 변할 수 없기 때문에 확장성에 대한 공식은 간단합니다.

거래처리량[TPS] = 블록 크기[블록 당 거래기록 수] / 블록 시간 [블록 당 생성 소요 시간]

거래처리량을 늘리려면 블록 크기를 확장시키거나 블록 소요 시간을 줄여야 합니다. 블록 크기 확장은 블록 채굴 탈중앙화에 악영향을 미치고, 블록 소요 시간 감소는 체인 포크 가능성을 증가시킵니다.

시간과 스테이트가 결부되어 있기 때문에 위 공식에 예외는 없습니다.

무선 통신 사례로 돌아가서 CDMA 기술과 비교해 보겠습니다. CDMA에서는 라디오 타워들이 수신할 수 있는 주파수의 대역폭이 정해져 있는데, 비트코인 블록 채굴자들이 처리할 수 있는 블록 크기가 고정되어 있는 점과 유사합니다. CDMA의 확장성 향상이란 더 고차원적인 암호화 방식을 통해 제한된 대역폭에서 더 많은 휴대전화 통화가 가능하도록 하는 것입니다. 비트코인에서 성능 향상을 위해 구상되어 적용된 세그윗(SegWit), 라이트닝 채널(Lightning Channel), 슈노어 서명(Schnorr signature)과 같은 고차원적인 암호화 방식들이 이와 유사합니다.

비트코인은 1MB 블록크기, 600초 블록 시간, 250 바이트 최소 거래 용량 등의 특징을 가지고 있어 처리량을 이론상 최대치로 산정해보면 7 TPS로 계산됩니다. 이는 스패너보다 약 7,000배 적은 거래처리량과 약 3,600 배 정도 느린 TTF(6개 블록 확인이 이루어져야 불가역적인 완결성이 확률적으로 보장됨)을 의미합니다.

다만, 개선의 여지는 확실히 있어 보입니다.

지분증명 합의 알고리즘(PoS) + 타임체인 = 더 빠른 시계

비트코인의 성장은 합의 알고리즘 연구의 르네상스를 가져왔습니다. CAP Theorem에 의하면, 네트워크 분할 시 분산 데이터베이스 체계는 일관성(네트워크 중단)과 가용성(네트워크 포크) 중에 선택해야 한다고 합니다. 사토시의 알고리즘은 나카모토 합의방식군(群) 중 첫 무허가성, 비잔틴결함방지(BFT) 합의 알고리즘이며 다른 동류의 합의 알고리즘과 마찬가지로 일관성 대신 가용성을 선택했습니다. 나카모토 합의 군에는 여러 합의 알고리즘이 있습니다.

Leslie Lamport의 팩소스 알고리즘은 가용성보다 일관성을 우선시한 고전적 합의알고리즘 군의 첫째였습니다. 다른 고전적 합의 알고리즘과 마찬가지로 팩소스 참여 노드는 스테이트 최신화 시 모든 참여 노드와 서로 동기식으로 소통하여야 합니다. 이때의 소통 복잡성은 O(n^2)(n = 검증 노드 개수) 공식을 따르며, 각 스테이트 최신화 별 소요시간은 검증 노드가 증가할수록 기하급수적으로 증가합니다.

Jae Kwon과 Ethan Buchman은 20년동안 축적된 고전적 합의 알고리즘 연구와 담보부 지분증명(BPoS)이라는 암호경제학적 인센티브 구조를 선구적으로 접목시켜 검증 노드 개수를 안전하게 제한하였습니다. 이들 연구 결과를 통해 최초로 고성능, 무허가성 BFT 합의 알고리즘인 텐더민트(Tendermint)가 고전적 합의알고리즘 군에 추가되었습니다.

나카모토 합의 방식과 유사하게 텐더민트도 시간과 스테이트가 결부되어 있어 블록 크기 확장 혹은 블록 시간 단축을 통해서만 처리량이 증가할 수 있습니다. 비트코인이 2009년에 처음 출시됐을 때는 10분이라는 블록 시간이 합리적이었습니다. 하지만 대역폭은 기하급수적으로 확장되어 왔으며, 이에 따라 텐더민트는 블록 시간을 계속 줄일 수 있게 되어 현재 몇 초 수준으로 되었습니다.

텐더민트는 일관성을 선호하기 때문에 포크는 불가능하며, 블록 시간은 주어진 검증 노드 개수에서 네트워크 처리량 병목 상태에서의 성능 한도 내에서 단축될 수 있습니다. 오늘날 텐더민트는 검증 노드 개수를 안전하게 100개로 제한함으로써 부진한 대역폭을 가진 노드를 필터링 하면서 더 큰 블록 크기를 실현하고 있습니다.

텐더민트는 실제로 사용되고 있습니다. 코스모스 허브(첫 출시된 텐더민트 적용 사례)는 6초의 블록 시간150kb의 블록 크기로 운영되고 있어 최대 100TPS(거래당 250 byte로 가정)의 처리량이 가능합니다. 아직 출시된지 몇 개월 안되었지만 금방 성장할 것으로 판단됩니다. 이론상으로, 5초의 블록 시간과 5MB의 블록 크기를 갖춘 텐더민트 네트워크는 검열 저항성 및 무허가성을 최소한으로 타협(비트코인과 비교했을 때)하며 4,000TPS(TPS: 570배, TTF:720배)를 달성할 수 있습니다.

안타깝게도 고전적 합의 알고리즘은 동기식이기 때문에 스패너의 방법론을 적용하면 네트워크의 검열 저항성과 무허가성에 악영향을 미치게 됩니다. 블록은 용량이 높아지면 네트워크 전파, 검증 과정에 더 많은 시간이 소요되기 때문에 블록 시간을 단축하는 데에 한계가 있습니다. 시계가 최신화되는 속도를 높이려면 검증 노드의 수는 획기적으로 줄어야 하며 모두 같은 광섬유 네트워크에 연결되어 있어야 합니다. 하지만, 이런 경우 검증 노드 담합 가능성이 증가하고 신규 검증 노드 진입장벽이 높아지며 해당 광섬유 네트워크 운영자가 중앙화적 통제를 가질 수 있습니다.

다음에서 다룰 이보다 발전된 형태의 블록체인 합의 방식은 시간과 스테이트를 분리함에 있어 중요한 진보를 이루어 거래처리량을 증폭시킬 수 있었으나, 이를 위해 큰 대가를 지불하는 것은 불가피합니다.

샤딩 + 타임체인 = 독립적 시계

텐더민트는 BPoS를 통해 검증 노드 개수와 검열 저항성 간의 정비례 관계를 끊어냄으로써 네트워크 시계 최신화 속도를 600초에서 5초로 단축시키며 획기적으로 성능을 개선시켰습니다. 그러나 여전히 시간이 최신화되지 않는 한 전역 스테이트 또한 바뀔 수 없으며 일관적으로 유지됩니다.

위 문제를 완화할 수 있는 방안 중 하나는 글로벌 스테이트를 독립적인(자체적으로 시간을 유지한다는 의미에서의 독립성) 시계를 갖춘 여러 개의 샤드(조각)로 샤딩하는 것입니다. 샤드들이 서로 교류할 필요가 없는 한 각 샤드의 성능은 변함없이 유지되며 조각들의 종합 처리량은 샤드 수가 늘어날수록 선형으로 증가합니다. 코스모스는 다수의 독립적인 블록체인 네트워크가 평행적으로 존재하며, 네트워크 간 교류가 가능하지만 주로 국지적으로 거래가 이루어지는 체계를 목표로 하고 있습니다. 각 네트워크가 4,000TPS 성능으로 운영되고 총 13개 네트워크가 있다고 가정하면 코스모스는 52,000TPS로 스패너를 처리량 기준으로 앞지르게 됩니다. 그러나 이러한 접근법은 2가지 문제점을 가지고 있습니다.

  1. PoS 블록체인의 보안은 스테이킹된 토큰 33%의 인수 비용 및 무효 거래 처리 비용으로 산정됩니다. 토큰 유통이 단일 네트워크가 아닌 13개의 별개 네트워크에서 이루어진다면 한 네트워크에서 33%의 토큰을 인수하는 비용이 상당히 줄어듭니다. 이는 안전성이 떨어지며, 보안이 네트워크 가치와 직결되는 블록체인의 가치 제안(Value Proposition)을 심각하게 위협하는 요소입니다.
  2. 네트워크간 거래 TTF는 네트워크 내 거래에 비해 4배 이상 지연됩니다. 네트워크들이 상호 간 시계를 동기화하기 위해 소통하고, 거래 대상 토큰들을 각 네트워크에서 소각하기 전 거래 성공 여부를 확인해야 하기 때문입니다.

코스모스가 자체적으로 보안을 관리하는 다수의 주체적 네트워크 체계를 꿈꾸는 반면, 이더리움 2.0, 폴카도트, 알고랜드, 디피니티, 니어 프로토콜 등은 ‘공유 보안 문제’(위의 #1)를 해결하고자 체계를 구축하고 있습니다. 각 팀의 접근법에는 뉘앙스적인 차이는 있으나, 공통적으로 네트워크 전반적으로 사용 가능한 시계를 제공하면서 검증 노드들을 샤드들에 걸쳐 안전하게 ‘셔플(Shuffle)’하여 공동 보안 풀(Common Security Pool)을 구축하는 단일 비콘(Beacon) 체인 구조에 기반하고 있습니다. 코스모스와 마찬가지로 처리량을 향상시키려면 단순히 샤드들을 추가하면 됩니다.

Sharding

이미지: 이더리움 2.0의 단일 체인과 스테이트 샤딩

안타깝게도 네트워크 간 거래의 높은 TTF 문제(위의 #2)는 여전히 유효합니다. 비콘 체인이 전역 시계를 제공하기는 하나 각 샤드에서 시계를 일정 기간마다 비콘 체인과 동기화하는 것이기 때문에 연속적이지는 않습니다 . '가' 샤드의 김모씨가 '나' 샤드의 박모씨에게 토큰을 전송한다고 했을 때 '가' 샤드의 검증 노드들이 김모씨의 토큰을 소각했다는 증명을 제시해야지만 '나' 샤드의 검증 노드들이 대응되는 금액의 토큰을 박모씨를 위해 생성합니다. 이더리움 2.0의 현 설계에서 위 과정은 샤드 내 블록 시간의 60배인 6분이 소요됩니다.

샤딩이 도움이 될 수는 있으나, 각 샤드 내부의 시간과 스테이트 최신화는 여전히 결부되어 있기 때문에 근본적인 확장의 한계가 존재합니다. 각 샤드는 블록 크기와 시간과 관련해서 텐더민트와 동일한 한계점들을 갖습니다.

샤딩은 TDMA의 몇몇 특성들과 비견될 수 있습니다. 셀 타워가 대역폭을 별개의 주파수와 시간 슬롯들로 나눈 것과 같이 스테이트는 자체적으로 시계를 갖춘 샤드들로 분리되어 있습니다. 위와 같은 방식이 장점은 많으나 샤드 간 거래 지연이 발생하는 것과 같이 블록체인의 잠재력을 완전히 활용하고 있지는 않습니다.

하지만 무허가성 환경에서 시간과 스테이트의 최신화를 분리할 수 있다면 어떨까요?

시간과 스테이트의 분리

여태까지 사토시가 블록체인 네트워크에서 타임체인 데이터 구조를 통해 어떻게 무신뢰성 시계를 구현하였는지, Kwon과 Buchman이 팩소스에 BPoS를 적용하여 어떻게 안전하게 검증 노드 수를 제한하고 처리량 및 텐더민트 네트워크 시계 속도를 향상시켰는지, 네트워크를 자체적으로 시계를 갖춘 여러 샤드들로 샤딩했을 때 어떻게 처리량이 급진적으로(샤드 간 거래를 최소화한다는 가정 하에) 증가하는지를 살펴보았습니다. 각 개선 방안들을 봤을 때 시간과 스테이트의 최신화가 계속 결부되어 있어 시간의 최신화가 있어야지만 스테이트가 최신화되며, 검열 저항성을 갖춘, 무허가성 컴퓨팅 네트워크의 TPS와 TTF의 근본적인 한계점이 위 특성에 기인한다는 점을 도출할 수 있었습니다.

시간과 스테이트를 분리하려면 신속, 정확하면서 최소한의 신뢰를 필요로 하는 전역 시계가 필요합니다. 이와 같은 시계가 있으면 스테이트 최신화는 스패너처럼 연속적이고 비동기식으로 진행될 수 있습니다. 참여자들이 전역 시계에 모두 동의하고 거래에 타임스탬프가 매겨지면 거래 기록은 네트워크에 연속적으로 전파될 수 있습니다.

솔라나는 자체 스마트 컨트렉트 플랫폼을 위해 해시 기반 타임 체인과 스테이터스 최신화 합의 알고리즘을 분리하여 신뢰 소요를 최소화한 시계를 구축하였습니다. 모든 블록마다 해시를 연결하여 체인을 형성하는 것 대신 솔라나 네트워크의 검증 노드들은 블록 내의 해시들 자체를 계속적으로 해시합니다. 위 방식, 기록증명 합의알고리즘(PoH)은 전역적으로 접근 가능하고, 최소화의 신뢰만을 필요로 하며, 세분화된(granular) 타임체인을 구축하여 네트워크상의 모든 노드들이 동기화할 수 있도록 합니다. PoH의 구체적 구동 원리는 본 에세이의 범위를 벗어나며 더 구체적인 사항은 솔라나의 Solana’s PoH documentation을 참고하길 바랍니다.

Seperating Time and State

이미지: PoH가 표준화된 타임 스탬프를 블록체인 상으로 엮는 방법

이러한 독립적인 타임체인은 리더(합의 알고리즘으로 선택되어 블록을 생성할 수 있는 노드)가 타임스탬프된 거래 기록을 받은 후 실시간으로 네트워크에 전파할 수 있도록 합니다. 타임스탬프를 통해 블록 채굴자가 임의로 지정한 순서가 아닌 표준 순서를 알 수 있습니다. 네트워크 전체가 거래 순서에 합의할 수 있기 때문에 이중지불 시도의 식별 및 해결은 획기적으로 쉬워집니다.

모든게 뒤바뀌는 순간입니다.

검증 노드들이 6-600초 마다 시간의 흐름에 대해 합의하도록 강요하는 대신에 솔라나 네트워크는 노드들이 스테이트 최신화를 실시간으로 서로에게 연속적으로 전파할 수 있도록 합니다. 각 검증 노드의 블록 확인(Confirmation)을 기다려야 하는 여타 블록체인과 달리 솔라나는 비트토렌트에서 영감 받은 터바인이라는 새로운 팬아웃(Fan-out) 메커니즘을 활용하여 소통 복잡도가 O(n^2) 대신 O(log(n))로 유지될 수 있도록 합니다. 이를 통해 솔라나는 단일 글로벌 스테이트에서 샤딩 없이도 빠른 완결 속도와 50,000TPS 이상을 달성할 수 있습니다.

이는 검증 노드 풀 규모가 텐더민트와 100-1,000개 정도 차이는 나지만 체인 포크가 허용된다는 의미입니다. 따라서 체인 포크가 발생할 때마다 시스템이 단일 체인으로 빠르게 통합될 수 있도록 공격적인 포크 관리 정책이 요구되며, 이는 비동기식 운영과 안정적인 가용성을 위해 필요한 트레이드오프입니다.

무선 통신과의 접점을 더 살펴보자면 PoH가 블록체인에 가져올 변혁은 TDMA가 셀률러 네트워크에 가져온 것과 유사합니다. 솔라나의 1,000개 검증 노드를 라디오 타워에 대입하여 각자의 동기화된 시계를 활용하여 대역폭을 개별 타임 슬롯으로 나눈다고 생각해보겠습니다. 발송자는 PoH 해시를 서명된 거래에 첨부하여 지속적으로 내보내고, 검증 노드는 위 정보를 받아 이웃 노드들에 전파합니다, 전파된 거래 기록에 PoH 해시가 있기 때문에 거래 순서는 즉각적으로 파악될 수 있습니다. 전역 시계에 따라 리더가 교체되며 각 리더는 집행할 정렬된 목록을 선정하여 해당 ‘기재 사실(entry)’을 네트워크에 가십 프로토콜로 전파합니다. 검증 노드들은 각 ‘기재 사실’에 대하여 투표하며 전체 검증 노드의 3 분의 2가 동의했음을 확인하면 거래를 완결합니다.

네트워크 전반적으로 대량의 거래 건을 같은 순서로 연속적으로 처리하고 있으나, 개별 검증 노드는 독립적으로 운영되고 있습니다. 이는 다른 체인과 두드러지지는 않지만 중요한 차이점입니다. 솔라나의 검증 노드는 네트워크 상황 및 합의 상태와 관계없이 항상 운영됩니다. 새로운 설계에 기인한 여타 부차적인 이슈들(급격한 체인 성장, 새로운 프로그래밍 모델, 타임체인의 무편향성, 병렬성)은 있으나 본 에세이의 범위를 벗어나며, 솔라나 가이드 문서에서 다루고 있습니다. 솔라나의 테스트넷은 5개 대륙에 위치한 200개 검증 노드로 운영된다는 조건에서 평균 1.5초의 TTF와 50,000TPS까지도 구현하고 있습니다. 유의미한 탈중앙화를 달성했음에도 불구하고 스패너와 비견될만한 성능입니다. 최소한의 신뢰와 무허가성을 갖춘 솔라나의 ‘세계 컴퓨터’가 위와 같은 수준의 성능을 구현할 수 있는 이유는 시간과 스테이트를 분리했기 때문입니다. 솔라나 네트워크의 전역 시계가 스패너와 마찬가지로 노드끼리 소통할 필요 없이 자체적으로 스테이트를 최신화할 수 있도록 합니다.

확장성의 재해석

크립토 커뮤니티에서 지겹도록 확장성, 합의 알고리즘 모델들을 제시해 왔으나 앞서 얘기했던 시계 문제에 대해 구체적으로 다룬 적은 없었습니다. 다년간의 PoS 연구는 텐더민트 + BPoS 합의 체계가 최선의 조합인 것으로 결론지었으며, 다양한 샤딩 관련 기획들은 비콘 체인 + 스테이트 샤딩 설계로 귀결되었습니다. 이러한 지식의 축적을 통해 일관성보다 가용성을 우선시하는 비(非)샤딩 체계 상에서 최상의 성능을 구현할 수 있는 방안은 비동기식 스테이트 운영이 가능한 세분화된 타임체인이라는 결론을 도출할 수 있었습니다.

솔라나 팀은 전역적으로 접근 가능한 시계를 제시함으로써 다른 방법으로는 활용이 불가능했을 40년+ 축적된 분산 체계 분야 연구를 레버리지 할 수 있었습니다. 1981년에 개발된 낙관적 병행 수행 제어(Optimistic Concurrency Control)는 대규모 전산 체계에 다년간 적용되어 왔으나 시간과 스테이트가 결부되어 있으면 활용이 불가능합니다. 비록 Nvidia에서 2007년 CUDA 개발 환경을 출시하기 전까지는 그래픽 카드에만 활용되긴 했으나, 병렬적 GPU 프로세싱(GPU Parallel processing)도 1995년도부터 존재해 왔습니다. 그러나 블록체인 기반 체계들은 현재 보수적인 관점을 견지하여 진행되는 거래에 해당하는 스테이트를 제외하고는 모두 고착시켜 놓기 때문에 병렬적 GPU 프로세싱도 제한적으로만 활용되어져 왔습니다.

시간의 흐름에 대한 이해도는 허가성 및 무허가성 환경에 있는 분산 체계의 성능에 중대한 영향을 미칩니다. ‘시간’이 가장 중요하며, PoH의 형태로 시간의 흐름를 암호화하는 새로운 방식을 통해 무허가성 체계들도 검증된, 중앙화된 클라우드 전산 체계의 성능을 구현할 수 있습니다.

본 에세이에 대한 의견을 개진해주신 Anatoly Yakovenko Zaki Manian에게 감사의 말씀을 전합니다.

지원·파트너십·협력 문의는 여기를 클릭해주세요.

문의하기