역사증명(Proof of History): 블록체인을 위한 시계

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

솔라나 네트워크를 가능하게하는 7 가지 주요 혁신기술은 다음과 같습니다:
역사증명(Proof of History)— 합의 이전의 시계;
타워 비잔틴 장애허용(Tower BFT) – 역사증명으로 최적화된 버전의 프랙티컬 비잔틴 장애허용(PBFT);
터빈 – 블록 확산 프로토콜;
걸프스트림 – 멤풀이 없는 트랜젝션 전달 프로토콜;
씨레벨 – 스마트 컨트렉트 병렬처리 실행시간;
클라우드브레이크 – 수평으로 확장된 계정 데이터베이스; 그리고
복제자 – 분산 원장 저장소(분할된 데이터를 저장하는 노드)
“탈중앙화 시스템의 난제중 하나는 정해진 시간 내 동의를 얻어내는 것입니다. 사실, 몇몇 사람들은 비트코인의 작업증명 알고리즘의 가장 중요한 특징은 그 블록체인에서 분산 시스템 시계로 작동하는 것이라고 주장합니다. 솔라나는 역사증명이 해결책을 제공한다고 생각하며, 이를 기반으로 블록체인을 구현했습니다.

“다른 분산 네트워크들은 신뢰기반, 중앙화된 타이밍 솔루션으로 이 문제를 해결했습니다. 예를 들어 구글의 스패너(Spanner)는 데이터 센터간 동기화된 원자 시계를 사용합니다. 구글 엔지니어는 이 시계들을 고도로 정밀하게 연동하고 지속적으로 유지합니다.

“이 문제는 블록체인과 같은 적대적(adversarial) 시스템에서는 더욱 복잡합니다. 네트워크의 노드는 외부 시간 소스나 메시지에 나타나는 타임 스탬프를 신뢰할 수 없습니다. 해쉬그래프의 경우, “”중앙값”” 타임 스탬프를 사용하여이 문제를 해결합니다. 각각의 네트워크 메시지는 압도적인 과반수의 노드에 의해 서명되며 타임스탬프가 주어집니다. 해쉬그래프는 메세지의 중간값 타임스탬프를 “”공정한”” 순서라고 부릅니다. 각 메시지는 네트워크의 압도적인 과반수의 노드에 전달되며, 충분한 서명을 받은 후에야 전체 네트워크로 전달됩니다. 이 과정은 생각하시는 것처럼 정말 느립니다.

“메시지로 인코딩된 타임스탬프를 단순히 신뢰할 수 있다면 어떨까요? 방대한 양의 분산 시스템 최적화가 손쉬어집니다. 예시:

““동기화된 시계는 분산 알고리즘의 성능을 향상하는 데 사용될 수 있기에 흥미롭습니다. 동기화된 시계로 인해, 통신을 로컬 컴퓨테이션으로 대체하는 것이 가능합니다.”

— 리스코브, B. 분산시스템에서 동기화된 시계의 실사용 사례
“솔라나의 경우 이는 높은 처리량과 고성능을 가진 블록체인을 의미합니다

역사증명(PoH)
타임스탬프를 신뢰하는 대신, 특정 이벤트 전후에 메세지가 생겼음을 증명해낼 수 있다면 어떨까요? 뉴욕타임즈 표지 사진을 찍게 되면, 해당 신문이 출판된 후 사진이 찍혔다거나, 혹은 그 신문이 출판하는 내용에 영향을 줄 수 있다는 증거를 제시하게 됩니다. 역사증명을 사용해, 특정 시점에 이벤트가 발생했음을 증명하는 기록을 구현할 수 있습니다.
역사증명 타임스탬프
역사증명 타임스탬프
“역사증명은 고주파의 검증가능지연함수(Verifiable Delay Function)입니다. VDF는 평가를 위한 특정 수의 순차적 단계를 필요로하지만, 효율적이며 공개적으로 검증될 수있는 고유한 결과를 만듭니다.

솔라나는 특히, 연속적으로 이전 출력값을 다음 입력값으로 사용함으로써 자체 저항성이 더 강해지는 연속 프리이미지 저항 해시를 사용하여 구현합니다. 주기적으로 횟수와 현재 출력값을 기록합니다.
“SHA256 해시 함수의 경우, 2¹²⁸ 코어를 사용하는 무차별 암호 대입 공격없이 병렬처리는 불가능합니다.

“그런 다음, 생성되는 각 카운터 사이에 시간이 흘렀음을 확인하였고, 각 카운터에 기록된 순서가 실제 시간과 동일하다는 것도 확인하였습니다.

“시간의 상한

역사증명 배열에 메시지 기록하기
“이전에 생성된 상태값에 데이터 해시값을 추가하는 방식으로 데이터가 역사증명 배열에 들어갑니다. 상태값, 입력 데이터 및 개수가 모두 게시됩니다. 입력값을 상태값 다음에 추가하면 이후 모든 출력값이 예측 불가능하게 변경됩니다. 여전히 병렬처리는 불가능하고, 해시 함수가 프리이미지 및 충돌 저항성을 가지고 있는 한 향후 원하는 해시값를 생성하는 입력값을 만드는 것이 불가능합니다. 또한, 동일한 해시값을 가진 대체 입력값을 만들 수도 없습니다. 상태값 다음에 데이터 해시값을 추가하는 두 번의 작업 사이에 시간이 지났음을 증명할 수 있습니다. 또한, 데이터 해시값이 상태값 뒤에 추가되기 전 쯤 데이터가 생성되었음을 증명할 수 있습니다. 뉴욕 타임즈에 기사화된 사건은 신문이 출간되기 전에 일어난 것과 동일한 이치입니다.

“시간의 하한

역사증명를 사용해 시간 하한 설정
역사증명에 입력하는 값은 역사증명 그 자체로부터 참조할 수 있습니다. 이러한 참조는 사용자 서명이있는 서명된 메시지의 일부로 삽입 될 수 있고, 사용자 프라이빗 키 없이는 수정될 수 없습니다. 이것은 뉴욕 타임즈 신문을 배경으로 사진을 찍는 것과 같습니다. 이 메시지에는 0xdeadc0de 해시가 포함되어 있으므로 카운트 510144806912가 만들어진 후 그 메시지가 생성되었음을 알 수 있습니다.
“그러나 그 메시지가 역사증명 배열에 다시 삽입되므로, 마치 뉴욕 타임스를 배경으로 사진을 찍고 다음 날 뉴욕 타임즈가 그 사진을 게시한 것과 같은 원리입니다. 이를 통해 우리는 사진 속 내용이 특정 날짜 전후에 존재했음을 알수 있습니다.

확인/검증
“기록 된 배열은 단일 CPU 코어에서만 생성 될 수 있지만 출력값은 병렬처리 방식으로 검증할 수 있습니다.

병렬 검증
“기록된 슬라이스는 생성하는 데 걸린 시간의 1/(코어 수) 만큼의 시간 안에 분리된 코어에서 처음부터 끝까지 검증될 수 있습니다. 따라서 최신 GPU에는 4000개의 코어가 있어서 1초 만에 검증할 수 있는 데이터를 0.025초 만에 확인할 수 있습니다.

ASICS
“모든 CPU가 다르고, 몇몇은 훨씬 빠르지 않습니까? SHA256 루프에 의해 생성된 “”시간””의 정확성을 실제로 어떻게 신뢰할까요?

“이 주제로 기사 한편을 작성할 수 있지만, 짧게 이야기하자면 일부 CPU가 다른 CPU보다 빠르다거나 ASIC이 네트워크에서 사용 가능한 CPU보다 빠를수도 있다는 것에 대해 신경 쓰지 않습니다. 가장 중요한 점은 ASIC가 얼마나 더 빨라질 수 있는지에는 한계가 있다는 것입니다.

“우리는 SHA256을 사용하고 있으며 비트코인의 영향으로 이 암호학 해시 함수의 실행속도를 높이는데 대한 많은 연구가 이루어졌습니다. 룩업테이블(Look Up Table)과 같이 더 큰 다이 면적(die area)을 사용하거나 시계 속도에 영향을 주지 않고 실행속도를 높이는 방식으로는 SHA 256의 속도를 높일 수 없습니다. 인텔과 AMD는 1.75 주기로 SHA256 전체 라운드를 처리하는 소비자 칩을 출시했습니다.

“이 때문에 솔라나팀은 커스텀된 ASIC이 1000배는 고사하고 100배 이상 더 빠르지 않으며, 아마도 네트워크 사용량의 30 % 이내의 성능일 것이라는 확신이 있습니다. 이 한계를 사용하는 프로토콜을 구축해, 공격자에게 제한적이며 쉽게 감지되는 서비스 거부 공격 기회를 허용합니다. 다음 기사에서 더 자세히 알아보세요!

코드
solana-labs/solana
솔라나 — 고성능 블록체인 github.com
“Rust와 CUDA에 익숙하고, 세계에서 가장 빠른 블록 체인을 만들고 싶다면 hello@solana.com으로 연락주세요.

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


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