터빈(Turbine) – 솔라나 블록 확산 프로토콜, 확장성 트릴레마 해결

“솔라나를 가장 성능이 뛰어난 블록체인으로 만드는 7 가지 혁신 중 한가지에 대해 자세히 알아보십시오.

“솔라나는 세계에서 가장 성능이 뛰어난 무허가 블록체인입니다. 현재 솔라나 테스트넷에는 각각의 독립된 200개의 노드가 GPU와 함께 운영될 때 50만TPS 이상의 속도를 꾸준히 유지하고 있습니다. 이를 위해서는 여러가지 최적화와 새로운 기술의 구현이 필요하며, 결과적으로 블록체인 개발에서 새로운 차원의 네트워크 역량(보안성, 성능/확장성, 탈중앙화, 호환성, 상호운용성 등)을 보여주는 획기적인 변화를 이끌어낼 것입니다.

솔라나 네트워크를 가능하게 하는 7 가지 주요 혁신은 다음과 같습니다:
역사증명(POH)— 합의 이전의 시계;
타워 비잔틴 장애허용 (Tower BFT) – 역사증명으로 최적화된 버전의 프랙티컬 비잔틴 장애허용(PBFT);
터빈(Turbine) – 블록 확산 프로토콜;
걸프스트림(Gulf Stream) – 멤풀이 없는 트랜젝션 전달 프로토콜
씨레벨(Sealevel) – 스마트 컨트렉트 병렬처리 런타임;
클라우드브레이크(Cloudbreak) – 수평으로 확장된 계정 데이터베이스; 그리고
복제자(Replicators) – 분산 원장 저장소
본 게시글에서는 솔라나의 블록 확산 프로토콜이 터빈에 대해 자세하게 알아보겠습니다. 터빈은 비트토런트에서 영감을 받았으며 확장성 트릴레마에 대한 해결책을 제시해 줍니다.
확장성 트릴레마
“블록체인의 확장성 트릴레마는 대역폭에 관한 것입니다. 오늘날 대부분의 네트워크에서는 노드당 고정된 양의 대역폭을 감안할 때, 노드 수를 늘리면 모든 데이터를 모든 노드에 전파하는데 필요한 시간이 증가합니다. 이는 큰 문제입니다.

“그러나 데이터 전파 방법을 최적화할 수있는 여러 방법이 있습니다. 여러가지 새로운 데이터 전파 기술이 있으며, 각 기술은 특정 애플리케이션에 최적화되어 있습니다. 예를 들어, 비트토런트는 TCP를 사용하여 많은 사람들에게 대용량 파일을 제공하는데 최적화되어 있는 반면, 미디어에프엘오(MediaFLO)는 각 물리적 레이어에서 데이터 전파에 최적화된 프로토콜로 무선 네트워크를 통한 멀티 캐스트의 효율성을 향상시킵니다.

“같은 맥락에서 솔라나의 블록 전파 프로토콜인 터빈에 대해 알아봅시다. 솔라나 네트워크가 어떻게 데이터를 전파하여 확장성 문제를 해결하는지 설명하겠습니다.

터빈(Turbine)
솔라나, 확장성이 뛰어난 블록체인
고성능 블록체인이 해결해야하는 문제중 하나는 대량의 데이터를 수많은 네트워크 참여자들한테 전파하는 방법입니다. 예를 들어 20,000 개의 검증 노드 네트워크를 생각해 봅시다. 리더는 128MB 블록( 트랜잭션당 250 바이트로 약 500,000개의 트랜잭션)을 20,000 개의 검증 노드 전부에 전송해야 합니다. 기초적인 방식으로 구현하자면, 리더가 각각의 검증 노드에 직접 연결되어 전체 128MB를 20,000번 전송해야합니다. 그렇지만, 이렇게 많은 연결을 수용할 수 있는 충분한 대역폭이 없습니다.
“이 문제에 대한 해결책인 터빈은 비트토런트에서 착안하였습니다. 다만 몇가지 주요 기술적 세부 사항이 이 둘을 구분짓습니다. 터빈은 스트리밍에 최적화되어 있으며 UDP만 사용하여 데이터를 전송하고, 리더(블록 생산자)가 데이터를 스트리밍 할 때 네트워크를 통해 패킷당 임의의 경로를 구현합니다. 리더는 블록을 최대 64KB 크기의 패킷으로 나눕니다. 128MB 블록의 경우 리더는 2,000개의 64KB 패킷을 생성하고 각 패킷을 다른 검증 노드로 전송합니다.

솔라나, 확장성이 뛰어난 블록체인
“순서에 따라, 각 검증 노드는 패킷을 ‘이웃(neighborhood)’이라 불리우는 피어 그룹으로 재전송합니다. 네트워크를 이웃 트리로 시각화해서 보면, 1,000 개가 훨씬 넘는 검증 노드로 된 네트워크로 확장될 수 있음을 알 수 있습니다.

솔라나, 확장성이 뛰어난 블록체인
” 각 이웃은 데이터의 일부를 하위 이웃에게 전송하는 역할을 합니다.

솔라나, 확장성이 뛰어난 블록체인
“각 이웃이 200 개의 노드로 구성된 경우, 루트에서 단일 리더로 시작하는 3-level 네트워크는 2-hop(각 네트워크 링크가 평균 100ms라고 가정하면, 약 200밀리 초) 안에 40,000 개의 검증 노드에 도달 할 수 있습니다.

“우리가 직면한 문제는 보안입니다. 예를 들어, 적대적 노드(adversarial node)는 데이터를 다시 보내지 않거나 잘못된 데이터를 보낼 수 있습니다. 이러한 노드를 처리하기 위해 리더는 리드 솔로몬 소거 코드(Reed-Solomon erasure code)를 생성합니다. 소거 코드로 인해, 각 검증 노드가 모든 패킷을 수신하지 않고 전체 블록을 재구성할 수 있습니다.

솔라나, 확장성이 뛰어난 블록체인
“리더가 블록의 패킷 중 33 %를 소거 코드로 전송하면, 네트워크는 블록을 잃지 않고도 패킷의 33 %를 삭제할 수 있습니다. 리더는 네트워크 조건에 따라 이 33%를 역동적으로 조정할 수도 있습니다. 이러한 조정은 이전 블록의 리더에 의한 패킷 드롭 비율에 의해 결정됩니다.

“모든 검증 노드가 동일한 것은 아닙니다. 스테이크 가중된 선택 알고리즘은 더 높은 스테이크를 가진 검증 노드가 리더와 가까이 위치하도록 트리를 구성합니다. 각 검증 노드는 독립적으로 동일한 트리를 계산합니다. 소거 코드는 장애를 복구할 수 있지만, 특히 서비스 거부 공격과 결합될 떄 적대적 노드는 결합된 스테이크 크기보다 높은 장애를 유발할 수 있게끔 자기 자신을 트리의 어떠한 위치에 배치할 수 있습니다.

“이런 식의 이클립스 공격은 어떻게 처리할까요? 팬아웃(fanout) 알고리즘은 패킷의 디지털 서명을 기반으로 임의의 소스를 사용하여 모든 패킷에 스테이크 가중치 트리를 생성합니다. 각 패킷은 서로 다른 경로를 취하고 각 경로를 미리 알지 못하므로, 네트워크를 거의 모두 제어해야 이웃 간 이클립스 공격이 가능합니다. .

솔라나, 확장성이 뛰어난 블록체인
“한 레벨에서 이 기술은 200개에서 1,000 개의 노드로 확장됩니다. 1Gbps를 지원하는 네트워크 카드는 초당 백만개의 패킷을 전송할 수 있습니다. 네트워크 연결이 허용하는 경우, 단일 검증 노드는 1초 이내에 최대 64KB 패킷을 1,000대의 머신에 보낼 수 있습니다.

“솔라나는 역사 증명, 파이프라인 VM, 복제 증명, 걸프스트림과 같은 기술 혁신과 더불어 터빈 전파를 활용하여 세계에서 가장 성능이 뛰어난 블록체인을 만듭니다. 솔라나 테스트 넷은 현재 가동 중이며, http://explorer.solana.com/에서 확인할 수 있습니다. 비용 상의 이유로, 적은 수의 노드만 운영하고 있지만, 벤치마킹을 위해 AWS, GCE, Azure 클라우드 인프라에 구축된 데이터 센터 23곳에 흩어져 있는 200개가 넘는 각각의 독립된 노드(서로 하드웨어를 공유하지 않음)를 운영할 수 있도록 준비하고 있습니다.

현재 런타임이 작동 중이며, 개발자들은 이제 테스트나우(testnow)에 코드를 배포할 수 있습니다. 개발자들은 C 언어로 스마트 컨트랙트를 만들 수 있지만, 솔라나팀은 러스트 툴체인을 적극적으로 개발 중입니다. R러스트는 솔라나 스마트 컨트랙트 개발에 있어 가장 중요한 핵심 언어가 될 것입니다. 러스트 툴체인은 솔라나 자바스크립트 SDK의 일부로 모든 개발자들이 사용할 수 있고, SDK는 더 업그레이드될 겁입니다.
솔라나는 곧 코스모스의 게임 오브 스테이크(Game of Stakes)와 유사한 투어 드 솔(Tour de SOL)에서 검증노드들에게 인센티브 제공하는 공개 베타를 출시합니다. 대중들은 솔라나 네트워크의 한계를 테스트하는데 도전하면서 토큰을 획득하게 됩니다.