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

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

Solana 네트워크를 가능하게 하는 7가지 주요 혁신이 있습니다.

이 블로그 게시물에서는 솔라나(Solana)의 수평 으로 확장된 상태 아키텍처인 Cloudbreak를 살펴보겠습니다.

개요: RAM, SSD 및 스레드

샤딩 없이 블록 체인을 확장할 때 계산만 확장하는 것만으로는 충분하지 않습니다. 계정을 빠르게 추적하는 데 사용되는 메모리는 크기와 액세스 속도 모두에서 병목 현상이 됩니다. 예를 들어, 많은 현대 체인이 사용하는 로컬 데이터베이스 엔진인 LevelDB는 단일 컴퓨터에서 약 5,000TPS 이상을 지원할 수 없다는 것을 일반적으로 이해합니다. 가상 시스템이 데이터베이스 추상화를 통해 계정 상태에 대한 동시 읽기 및 쓰기 액세스를 악용할 수 없기 때문입니다.

순진한 해결책은 RAM의 글로벌 상태를 유지하는 것입니다. 그러나 소비자 등급 의 컴퓨터가 글로벌 상태를 저장할 충분한 RAM을 갖도록 기대하는 것은 합리적이지 않습니다. 다음 옵션은 SSD를 사용하는 것입니다. SSD는 바이트당 비용을 30배 이상 줄이지만 RAM보다 1000배 느립니다. 다음은 시장에서 가장 빠른 SSD 중 하나 인 최신 삼성 SSD의 데이터 시트입니다.

삼성 SSD 데이터 시트

단일 지출 트랜잭션은 2개의 계정을 읽고 1에 기록해야 합니다. 계정 키는 암호화 된 공개 키이며 완전히 임의이며 실제 데이터 지역이 없습니다. 사용자의 지갑에는 많은 계정 주소가 있으며 각 주소의 비트는 다른 주소와 완전히 관련이 없습니다. 계정 간에 는 지역이 없기 때문에 서로 가까워질 수 있도록 메모리에 배치하는 것은 불가능합니다.

초당 최대 15,000개의 고유 읽기를 사용하는 단일 SSD를 사용하는 계정 데이터베이스의 순진한 단일 스레드 구현은 초당 최대 7,500개의 트랜잭션을 지원합니다. 따라서 최신 SSD는 32개의 동시 스레드를 지원하므로 초당 370,000개의 읽기 또는 초당 약 185,000개의 트랜잭션을 지원할 수 있습니다.

클라우드 브레이크

Solana의 기본 설계 원칙은 100개의 사용률을 허용하도록 하드웨어에서 벗어난 소프트웨어를 설계하는 것입니다.

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

먼저 메모리 매핑 파일을 활용합니다. 메모리 매핑된 파일은 바이트가 프로세스의 가상 주소 공간에 매핑되는 파일입니다. 파일이 매핑되면 다른 메모리처럼 작동합니다. 커널은 RAM에 캐시된 메모리의 일부 또는 없음을 유지할 수 있지만 실제 메모리의 양은 RAM이 아닌 디스크 크기에 따라 제한됩니다. 읽기 및 쓰기는 여전히 디스크의 성능에 의해 바인딩됩니다.

두 번째 중요한 설계 고려 사항은 순차 작업이 임의 작업보다 훨씬 빠르다는 것입니다. 이는 SSD뿐만 아니라 전체 가상 메모리 스택에 대해도 마찬가지입니다. CPU는 순차적으로 액세스되는 메모리를 미리 가져오는 데 뛰어나며 운영 체제는 순차적인 페이지 오류를 처리하는 데 매우 적합합니다. 이 동작을 악용하기 위해 계정 데이터 구조를 다음과 같이 대략 중단합니다.

  1. 계정 및 포크 인덱스는 RAM에 저장됩니다.
  2. 계정은 최대 4MB 크기의 메모리 매핑 파일에 저장됩니다.
  3. 각 메모리 맵은 제안된 단일 포크의 계정만 저장합니다.
  4. 지도는 가능한 한 많은 SSD에 무작위로 분포되어 있습니다.
  5. 쓰기 시맨틱이 사용됩니다.
  6. 쓰기는 동일한 포크에 대한 임의의 메모리 맵에 추가됩니다.
  7. 각 쓰기가 완료되면 인덱스가 업데이트됩니다.

계정 업데이트는 쓰기 시 복사되고 임의의 SSD에 추가되므로 Solana는 동시 트랜잭션에 대해 여러 SSD에서 순차적 쓰기 및 쓰기의 수평 크기 조정의 이점을 받습니다. 읽기는 여전히 임의 액세스, 하지만 주어진된 포크 상태 업데이트 는 많은 SSD에 걸쳐 확산 되기 때문에, 읽기뿐만 아니라 수평으로 확장 결국.

Cloudbreak는 또한 가비지 수집의 한 형태를 수행합니다. 포크가 롤백을 넘어 종료되고 계정이 업데이트되면 이전 잘못된 계정이 가비지 수집되고 메모리가 포기됩니다.

이 아키텍처의 장점은 주어진 포크에 대한 상태 업데이트의 Merkle 루트를 계산하는 것이 SSD에서 수평으로 확장되는 순차적 읽기로 수행할 수 있다는 것입니다. 이 방법의 단점은 데이터에 대한 일반성의 손실입니다. 사용자 지정 레이아웃이 있는 사용자 지정 데이터 구조이므로 데이터를 쿼리하고 조작하기 위해 범용 데이터베이스 추상화를 사용할 수 없습니다. 우리는 처음부터 모든 것을 구축해야했습니다. 다행히도, 그것은 지금 완료.

벤치마킹 클라우드브레이크

계정 데이터베이스가 RAM에 있는 동안 사용 가능한 코어 수로 크기를 조정하면서 RAM 액세스 시간과 일치하는 처리량이 표시됩니다. 10m 계정에서 데이터베이스는 더 이상 RAM에 맞지 않습니다. 그러나 단일 SSD에서 초당 읽기 또는 쓰기에서 1m 에 가까운 성능을 여전히 볼 수 있습니다.

투르 드 솔(Tour de SOL)에 대해 자세히 알아보려면 솔라나(Solana)의 인센티브 테스트넷 이벤트에 대해 알아보십시오.

Solana는 클라우드브레이크를 활용하며, 역사 증명, 파이프라인 VM 및 타워 BFT와 같은 혁신과 함께 세계 최초의 웹 스케일 블록체인을 만듭니다. 솔라나 테스트넷은 오늘 생중계됩니다. 당신은 https://testnet.solana.com. 비용 상의 목적으로 소수의 노드만 실행하고 있습니다. 그러나 벤치마킹을 위해 AWS, GCE 및 Azure의 23개 데이터 센터에서 공유 하드웨어가 아닌 200개 이상의 물리적으로 고유한 노드로 많은 인스턴스에서 이를 분산했습니다.

런타임이 현재 작동중이며 개발자는 지금 testnow에 코드를 배포할 수 있습니다. 개발자는 오늘날 C에서 스마트 계약을 구축할 수 있으며 Rust 툴체인을 적극적으로 개발중입니다. Rust는 솔라나 스마트 계약 개발을 위한 주력 언어가 될 것입니다. Rust 툴체인은 Solana Javascript SDK의 일부로 공개적으로 사용할 수 있으며 소프트웨어 개발 키트에서 더욱 반복하고 있습니다.

Solana는 곧 투어 드 SOL을 통해 노드를 실행하도록 인센티브를 제공하는 공개 베타 인센티브를 시작할 예정이며, 이는 코스모스의 스테이크 게임과 유사하며, 이를 위해 토큰을 획득하면서 Solana 네트워크의 한계를 테스트하기 위해 대중에게 도전합니다.