구름 깨기 솔라나

클라우드브레이크 — 솔라나의 수평으로 확장된 상태 데이터 아키텍처

Solana는 세계에서 가장 성능이 뛰어난 권한없는 블록 체인입니다. Solana Testnet의 현재 반복에서 물리적으로 고유한 200개의 노드 네트워크는 GPU로 실행할 때 초당 50,000개 이상의 트랜잭션의 지속적인 처리량을 지원합니다. 이를 달성하려면 몇 가지 최적화 와 새로운 기술을 구현해야 하며, 그 결과 블록 체인 개발의 새로운 단계를 알리는 네트워크 용량의 돌파구가 됩니다.

“솔라나는 세계에서 가장 성능이 좋은 무허가형 블록체인입니다. 현재 솔라나 테스트넷는 각기 독립된 200 개의 노드로 구성된 네트워크로, GPU로 실행할 때 50TPS 이상의 트랜잭션 처리량을 지원합니다. 이를 위해서는 여러가지 최적화와 새로운 기술의 구현이 필요하며, 결과적으로 블록체인 개발에서 새로운 차원의 네트워크 역량(보안성, 성능/확장성, 탈중앙화, 호환성, 상호운용성 등)을 보여주는 획기적인 변화를 이끌어낼 것입니다.

솔라나 네트워크를 가능하게하는 7 가지 주요 혁신은 다음과 같습니다:
역사 증명(POH)— 합의 이전의 시계;
타워 비잔틴 장애 허용(Tower BFT) – PoH 기반 최적화된 버전의 프랙티컬 비잔틴 장애허용;
터빈(Turbine) – 블록 확산 프로토콜;
걸프스트림(Gulf Stream) – 멤풀이 없는 트랜젝션 전달 프로토콜
씨레벨(Sealevel) – 스마트 컨트렉트 병렬처리 런타임;
클라우드브레이크(Cloudbreak) – 수평으로 확장된 계정 데이터베이스; 그리고
복제자(Replicators) – 분산 원장 저장소
“이 블로그에서는 솔라나의 수평으로 확장된 상태 아키텍처인 클라우드브레이크에 대해 살펴보겠습니다.

개요: RAM, SSDs, 그리고 스레드
“샤딩없이 블록체인을 확장할 때는 계산 능력만 증가시키는 것으로는 충분하지 않습니다. 계정을 추적하는 데 사용되는 메모리에 크기와 액세스 속도 측면에서 병목 현상이 발생합니다. 예를 들자면, 일반적으로 여러 블록체인에서 사용하는 로컬 데이터베이스 엔진인 LevelDB는 단일 시스템에서 약 5,000TPS 이상을 지원할 수 없습니다. 이는 가상 머신이 데이터베이스 추상화를 통해 계정 상태에 대한 동시 읽기 및 쓰기 액세스를 이용할 수 없기 때문입니다.

“원시적인 솔루션은 글로벌 스테이트를 램에 유지하는 것입니다. 그러나 가정용/개인용 컴퓨터에 글로벌 스테이트를 저장하기에 충분한 RAM이 있을 것으로 기대하는것은 바람직하지 않습니다. 남은 옵션은 SSD를 사용하는 것입니다. SSD는 바이트당 비용을 30배 이상 줄이지만, RAM보다 1000배 느립니다. 아래는 현존하는 가장 빠른 SSD중 하나인 Samsung SSD의 데이터시트입니다.

Samsung SSD 데이터시트
“단일 지출 거래는 2개의 계정을 읽고 그중 하나에 기록해야합니다. 계정 키는 암호화 퍼블릭키이며, 완전히 임의적이고 실제 데이터 로컬리티가 없습니다. 사용자 월렛에는 많은 계정 주소가 있으며 각 주소의 비트는 다른 주소와 전혀 관련이 없습니다. 계정 간에는 로컬리티가 없기 때문에, 서로 가깝게 메모리에 저장하는 것은 불가능합니다.

“초당 최대 15,000개의 읽기를 지원하는 단일 SSD를 사용하는 계정 데이터베이스의 단일 스레드 구현은 최대 7,500 TPS를 지원합니다. 최신 SSD는 32 개의 동시 스레드를 지원하므로, 초당 370,000 개의 읽기 또는 초당 약 185,000 개의 트랜잭션을 지원합니다.

클라우드브레이크(Cloudbreak)
“솔라나 설계 원칙은 하드웨어를 벗어나 100 % 활용이 가능한 소프트웨어를 설계하는 것입니다.

“32개의 스레드간에 동시 읽기 및 쓰기가 가능하도록 계정 데이터베이스를 구성하는 것은 어려운 일입니다. 레벨디비(LevelDB)와 같은 바닐라 오픈소스 데이터베이스는 블록체인에서 이러한 특정 문제를 최적화하지 않기 때문에 병목 현상을 일으킵니다. 솔라나는 이러한 문제를 해결하기 위해 기존 데이터베이스를 사용하지 않으며, 대신 운영 체제에서 사용하는 몇 가지 메커니즘을 사용합니다.

“먼저, 메모리 매핑 파일을 활용합니다. 메모리 매핑 파일은 바이트가 프로세스의 가상 주소 공간에 매핑되는 파일입니다. 파일이 매핑되면 다른 메모리처럼 동작합니다. 커널은 RAM에 캐 된 메모리의 일부를 유지하거나 혹은 아무것도 유지하지 않지만, 실제 메모리의 양은 RAM이 아닌 디스크의 크기에 의해 제한됩니다. 읽기 및 쓰기 성능은 여전히 디스크 성능에 의해 결정됩니다.

설계 시 두 번째로 중요한 고려 사항은 순차적 작업이 임의 작업보다 훨씬 빠르다는 것입니다. 이 부분은 SSD뿐만 아니라 전체 가상 메모리 스택에도 적용됩니다. CPU는 순차적으로 액세스되는 메모리를 프리 페치하는데 능숙하며, 운영 체제는 순차적 페이지 결함을 처리하는 데 능숙합니다. 이러한 점을 이용할 수 있도록, 계정 데이터 구조를 대략 다음과 같이 나눕니다:
“1. 계정 및 포크 인덱스는 RAM에 저장됩니다.

“2. 계정은 최대 4MB 크기의 메모리 매핑 파일에 저장됩니다.

“3. 각 메모리 맵은 단일 포크의 계정만 저장합니다.

“4. 맵은 가능한 많은 SSD에 무작위로 배포됩니다.

“5. Copy-on-write 시맨틱이 사용됩니다.

“6. Writes는 동일한 포크를 위한 임의적인 메모리 맵에 추가됩니다.

“7. 각 write이 완료된 후 인덱스가 업데이트됩니다.

“계정 업데이트는 copy-on-write이고 이것은 임의적인 SSD에 추가되므로, 솔라나는 동시 트랜잭션을 위해 여러 SSD에서 순차적 쓰기 및 쓰기의 수평적 확장이라는 이점을 얻습니다. 읽기는 여전히 임의적인 액세스이지만, 지정된 포크 상태 업데이트는 많은 SSD에 분산되므로 읽기도 결국 수평적으로 확장됩니다.

“클라우드브레이크는 또한 가비지 콜렉션 형식을 수행합니다. 롤백 이후에 포크가 완료되고 계정이 업데이트되며, 오래되고 더이상 유효하지 않은 계정이 가비지로 수집되고 메모리는 양도됩니다.

“이 아키텍처에는 적어도 하나 이상의 큰 이점이 있습니다. 특정 포크에 관한 상태 업데이트의 머클 루트를 계산하는 것은 SSD 전체에서 수평으로 확장되는 순차적 읽기로 수행 할 수 있습니다. 반면, 단점은 데이터의 일반성 상실입니다. 이것은 커스텀 레이아웃을 가진 커스텀 데이터 구조이기 때문에, 데이터 쿼리 및 조작에 있어 범용 데이터베이스 추상화를 적용할 수 없습니다. 우리는 모든 것을 처음부터 구축해야 했지만, 다행히도 이제 모두 완성되었습니다.

클라우드브레이크 벤치마킹하기
“계정 데이터베이스가 RAM에있는 동안, 사용 가능한 코어 수로 확장하는 동시에 RAM 액세스 시간과 일치하는 처리량을 볼 수 있습니다. 천만개의 계정에서, 데이터베이스는 더 이상 RAM에 맞지 않습니다. 그러나 단일 SSD에서 초당 1m의 읽기 또는 쓰기 성능을 유지합니다.

“인센티브가 주어지는 테스트넷 이벤트인 Tour de SOL에 대해 자세히 알아보십시오.

“솔라나의 클라우드브레이크는 역사증명, 씨레벨 그리고 타워 비잔틴 장애허용과 같은 혁신과 더불어 세계에서 가장 성능이 뛰어난 블록체인을 만듭니다. 솔라나의 테스트 넷이 현재 출시되었으며, http://explorer.solana.com/에서 확인할 수 있습니다. 비용 상의 이유로, 적은 수의 노드만 운영하고 있지만, 벤치마킹을 위해 AWS, GCE, Azure 클라우드 인프라에 구축된 데이터 센터 23곳에 흩어져 있는 200개가 넘는 각각의 독립된 노드(서로 하드웨어를 공유하지 않음)를 운영할 수 있도록 준비하고 있습니다.

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