걸프 스트림: 솔라나의 멤풀 없는 트랜잭션 포워딩 프로토콜

솔라나를 50,000 TPS의 블록체인 네트워크로 만들어준 8가지 핵심 기술 중 하나인 걸프 스트림에 대해 소개 드립니다

GM Chung
솔라나 한국
7 min readMay 15, 2020

--

솔라나는 세계 최고의 성능을 자랑하는 무허가형 블록체인입니다. 현재 진행 중인 솔라나의 테스트넷은 200개의 독립된 GPU 노드들로 구성되었으며, GPU를 통해 초당 50,000건의 트랜잭션을 처리하고 있습니다.

솔라나 네트워크를 가능하게 해준 8가지 주요 혁신들은 다음과 같습니다:

이번 블로그 포스팅을 통해 고성능 네트워크를 위한 솔라나의 멤풀 관리 솔루션 걸프 스트림(Gulf Stream)에 대해 살펴보도록 하겠습니다.

멤풀(Mempools)이란?

멤풀은 네트워크에 제출되었으나, 처리는 아직 되지 않은 트랜잭션 세트를 의미합니다. 비트코인이더리움의 멤풀은 각 링크를 통해 실시간으로 확인해 보실 수 있습니다.

30일 간의 바이트(Byte) 단위로 보는 비트코인 멤풀
30일 간 트랜잭션 수로 보는 이더리움 멤풀

비트코인과 이더리움의 경우, 일반적으로 처리되지 않은 트랜잭션의 수는 위 도표에 의하면 2만 건에서 10만 건 정도 쌓이게 됩니다. 멤풀의 사이즈는 — 처리되지 않은 트랜잭션 수로 봤을 때 — 블록의 빈 공간에 대한 수요와 공급에 달려있습니다. 요즘 날 블록체인의 경우, 멤풀이 커지기 시작하면 네트워크 전체에 심각한 병목현상이 발생하게 됩니다.

솔라나는 이 문제를 어떻게 해결할 수 있을까요? 솔라나 밸리데이터들은 네트워크의 성능을 올리지 않고도 10만 건 규모의 멤풀을 관리할 수 있습니다. 즉, 네트워크의 성능이 50,000 TPS 일 때, 10만 건 규모의 멤풀은 수 초 만에 처리됨을 의미합니다. 그렇기 때문에 솔라나는 세계 최고 성능의 무허가 블록체인이 될 수 있었습니다.

굉장히 놀랍지만, 이러한 간단한 분석은 많은 중요한 요소들을 염두에 두지 않았다는 점입니다…

비트코인과 이더리움의 멤풀은 가십 프로토콜(Gossip protocol)을 이용한 P2P 방식으로 무작위로 노드들에게 전달됩니다. 네트워크 상 노드들은 주기적으로 로컬 멤풀을 나타내는 블룸 필터(Bloom filter)를 생성하고, 네트워크의 다른 노드들로부터 생성된 필터와 매칭되지 않는 트랜잭션들을 (최소 비용과 같은 다른 여러 가지와 함께) 요청합니다. 단 하나의 트랜잭션이 나머지 네트워크에 전달되기 위해 최소 log(N) 번의 절차와, 대역폭, 메모리 그리고 필터링을 위해 필요한 연산력을 소모하게 됩니다.

벤치마크 클라이언트가 초당 10만 건의 트랜잭션을 생성하기 시작한다면 가십 프로토콜은 간단하게 압도될 것입니다. 모든 트랜잭션을 메모리에 담음과 동시에 기기 간 필터가 적용되기 시작하면, 필터 연산 비용은 감당할 수 없을 정도로 높아지게 됩니다. 리더들은 (블록 생성자들) 또한 같은 트랜잭션들을 블록에 재전송해야 합니다. 즉, 모든 트랜잭션들은 네트워크 전체에 적어도 두 번 전파되어야 한다는 의미입니다. 이런 방식은 효율적이지 않으며, 사용하기도 쉽지 않습니다.

걸프 스트림(Gulf Stream)을 소개합니다

솔라나 네트워크에서는 이 문제에 대한 해법으로 네트워크의 변방으로 트랜잭션 캐시를(Caching) 밀어내는 방법을 사용하며, 이를 걸프 스트림(Gulf Stream)이라 부릅니다. 모든 밸리데이터들이 다음 리더들을 알고 있기 때문에, 클라이언트들과 밸리데이터들은 트랜잭션들을 예정된 리더에게 앞서 전달할 수 있습니다. 이렇게 되면 밸리데이터들은 다가오는 트랜잭션들을 미리 처리하여 확정까지 걸리는 시간을 줄여주고, 리더의 변경도 더 빠르게 이뤄질 수 있으며, 확인되지 않은 트랜잭션 풀로 인한 메모리 압박에서 벗어날 수 있게 됩니다. 이러한 방법은 불확정적인(Non-deterministic) 리더를 갖는 네트워크에서는 사용할 수 없습니다.

그렇다면 정확히 어떻게 작동하는지 알아보도록 하겠습니다. 지갑과 같은 클라이언트가 특정 블록의 해시를 참조하는 트랜잭션에 서명을 하게 됩니다. 클라이언트는 가장 최근에 네트워크 상에서 완전히 확인된 블록 해시를 선택하게 됩니다. 블록들은 매 800 밀리 초마다 제안되고, 매번 추가되는 블록마다 언롤을 위해 기하급수적으로 늘어나는 타임아웃을 필요로 하게 됩니다. 솔라나의 기본 타임아웃커브를 사용하게 되면, 완전히 확정된 블록 해시들은 최악의 경우에도 32 블록만큼의 경과시간을 거치게 됩니다. 트랜잭션은 참조된 블록의 하위 블록들에서만 유효하게 되며, 해당 X 블록에서만 유효하게 됩니다. 해당 X 블록은 아직 확정되지 않았으므로, 솔라나는 블록 시간이 800 밀리초, 즉 24초라는 전제하에, 블록 해시가 32 블록 정도의 TTL(Time to live)을 가질 것으로 예상하고 있습니다.

트랜잭션이 한 밸리데이터에게 전달되면, 해당 밸리데이터는 이를 다가오는 다음 리더들에게 다시 전달합니다. 클라이언트는 트랜잭션이 밸리데이터들에 의해 확정되는 것을 지켜볼 수 있습니다. 클라이언트 입장에선 블록 해시는 정해진 시간 내에 만료되거나, 네트워크에서 확정되게 됩니다. 때문에 클라이언트는 실패, 실행 이지선다로 확정된 트랜잭션들에 서명을 할 수 있게 됩니다. 트랜잭션이 참조한 블록 해시가 만료된 만큼 네트워크가 롤백 포인트 너머로 진행이 되면, 클라이언트는 해당 트랜잭션의 무효하고 다시는 체인 상에서 실행되지 않는다는 보장을 받게 됩니다.

이런 구조는 근본적으로 몇 가지 긍정적인 측면을 지니고 있습니다. 첫째로, 부담이 적어진 밸리데이터들은 실패되는 트랜잭션을 모두 덜어내고 나머지 트랜잭션들을 앞서 실행할 수 있습니다. 둘째로, 리더들은 밸리데이터들이 전달하는 트랜잭션들을 스테이킹 가중치에 근거하여 우선적으로 처리할 수 있게 됩니다. 이렇다면 네트워크 성능은 서비스 거부 공격(DoS) 에도 큰 문제가 발생하지 않게 됩니다.

이렇게 블록체인 네트워크의 멤풀이 적을수록 정상적인 작동이 될 수 있다는 사실을 알 수 있게 됩니다. 제한된 트랜잭션 처리 능력을 지니는 네트워크들은 새로운 확장 솔루션을 적용해 끝도 없이 증가하는 멤풀 문제 해결을 위한 노력을 계속하고 있지만, 솔라나는 1세대 블록체인들의 문제점을 해결하고, 획기적인 트랜잭션 처리 성능을 실현하기 위해 역사 증명, 걸프 스트림, 그리고 씨레벨과 같이 최적화된 기술을 만들어냈습니다. 이를 통해 솔라나는 시작부터 세계적 스케일을 달성할 수 있는 속도를 지니고 있으며, 기업, 경제, 그리고 세계 모든 사람들을 위한 높은 성능의 탈중앙 인프라를 만들어내고자 합니다.

솔라나 공식 커뮤니티에 참여하세요

공식 홈페이지 | 텔레그램 | 디스코드 | 트위터

--

--