이더리움 | 솔라나 |
---|---|
pos | pos |
싱글스레드 | 병렬스레드 |
30 TPS | 300-500TPS |
블록체인 상의 기록되는 거래 내역을 검증하는 참여자
😊 staking한 SOL에 비례하여 트랜잭션 유효성 검증, 블록 생성 및 제안
솔라나 블록체인의 데이터의 무결성을 유지하기 위해 함께 작동하는 특정 검증인 집합
Testnet, Devnet, Mainnet
솔라나 블록체인의 시간 구분 단위로, 네트워크의 작업을 일정한 구간으로 나누기 위해 사용 -> 약 2일동안 지속
예시 ) A가 5% 정도의 지분을 가지면 5% 정도의 블록 생성 권한을 가진다 1부터 n까지 slot을 가질 수 있다
결과적으로 슬롯마다 블록이 생성되는 것이 원칙이지만, 실제 상황에 따라 슬롯마다 블록이 생성되지 않거나 여러 개의 블록이 동시에 생성되는 포크 상황이 발생
포크상황 : 병렬적으로 블록이 생성 유효성 떨어짐
수 많은 validator 중 블록 생성자는 어떻게 생성될까?
-> POS 합의 알고리즘 + POH의 개념 = Tower BFT
1. 스테이킹 : validator와 그들의 지지자들은 솔라나 토큰(SOL)을 스테이킹하여 네트워크에 참여한다. 스테이킹된 토큰은 validator의 보증금 역할을 하며, 그들의 리더 선출 확률에 영향을 준다.
2. 무작위 리더 선출 : 각 슬롯마다 네트워크는 validator 중에서 무작위로 리더를 선출한다. 선출 확률은 validator의 스테이크 비율에 비례하며, 이 과정에서 난수 생성 알고리즘이 사용된다.
3. 블록 제안 : 선출된 리더는 새로운 블록을 생성하고, 네트워크의 다른 validator들에게 제안한다. 이때 POH를 사용하여 블록에 고유한 타임스탬프가 부여된다.
4. 블록 검증 : 네트워크의 다른 validator들은 리더가 제안한 블록을 검증합니다. 검증 과정에는 POH와 Tower BFT합의 알고리즘이 사용 되며, 과반수 이상의 validator가 블록을 승인하면 합의가 이루어 집니다.
솔라나의 계정 데이터베이스, 계정과 공개키를 매핑한 수평적 데이터베이스
합의 프로세스에서 떨어져 있으며, 네트워크에서 일정한 간격으로 작은 세션의 상태를 아카이빙하여 필요한 데이터를 규칙적으로 저장하고 있는 지 확인
분산 시스템에서 여러개의 컴퓨터 혹은 노드 간의 동일한 결정을 내리기 위한 알고리즘
예시 ) 랜덤 뽑기, 가장 빠르게 수학 문제를 푼 사람
가장 많은 컴퓨팅 파워를 가진 노드가 블록을 생성할 확률이 높은 합의 알고리즘
(작업 가능량에 비례해서 블록 생성 권한을 부여)
가지고 있는 암호화페의 지분에 비례하여 참여자가 블록을 생성하는 권한을 부여하는 방식의 합의 알고리즘
pow | pos |
---|---|
새로운 블록을 생성하기 위해 많은 에너지를 소모 | 작업 증명에 비해 적은 전력을 소비 |
블록 생성 속도가 느려짐 | 비교적 빠른 블록 생성 속도 유지 |
분산성과 안전성 | 지분이 많은 소수의 참여자들에게 유리 |
두개의 이벤트 사이에 시간이 흘렀다는 것을 증명하여 시간과 순서를 기록함으로써, 빠른 블록 생성 속도를 가능하게 하는 알고리즘
-> 합의 알고리즘은 아니다.
분산화된 환경에서 시간을 맞추는 방법
어떠한 사건이 특정 순간에 일어났음을 증명하는 내역을 기록
😊 내가 남산타워를 배경으로 사진을 찍었다는 것은 남산 타워가 나와 사진을 찍는 것 이전 부터 존재 했다는 것을 의미 한다.
순차적 전상 저항 해시
솔라나에서 구현한 VDF 함수로, 이전의 출력값이 계속적으로 다음의 입력값으로 들어가는 것
솔라나의 궁극적인 합의 알고리즘
1. 시간 순서화 및 동기화 (PoH) | PoH는 해시 연쇄를 사용하여 시간 순서를 증명하며, 이를 통해 벨리데이터들이 트랜잭션 처리와 블록 생성에 대한 동기화를 달성할 수 있다. PoH는 Tower BFT의 핵심 기반이 되어, 높은 처리량과 짧은 지연 시간을 가능하게 한다.
리더 선출 (PoS) | 슬롯마다 새로운 리더가 무작위로 선출되어 블록을 생성하고 제안하는 역할을 담당한다. 리더 선출 확률은 해당 벨리데이터의 스테이크 비율에 비례한다. 이를 통해 PoS 합의 메커니즘을 활용하여 리더 선출이 이루어지고, 스테이크가 많은 벨리데이터일수록 리더로 선출될
확률이 높아진다.
합의 달성 (Tower BFT) | 과반수 이상의 벨리데이터가 블록을 승인하면 합의가 이루어진다. 이 과정에서 Tower BFT 합의 알고리즘이 사용되며, 네트워크 안정성을 확보하고 비잔틴 행위를 방지한다.
tx1,tx2,tx3을 가지고 block을 생성
block을 만들기 위해 timestamp 생성 ( tx data, hash 등등) => block data set
-> timestamp는 leader가 만듦 (POH를 사용)
-> 검증인들이 leader가 과정 검증
솔라나 블록 전파 프로토콜
예시 ) 네트워크에서 어떻게 대량의 데이터가 많은 피어에게 전파될 수 있을까?
네이버 후드 : 특정 검증인 set을 모아놓은 것
트랜잭션 간의 상태를 저장해야 할 경우 저장하는 방식, 데이터를 저장하는 공간의 개념
솔라나 상의 프로그램 실행, 송수금 등의 명령을 처리하는 단위
1. 하나 이상의 명령어 : 실행할 명령어를 나타냅니다. 하나의 트랜잭션에는 여러 개의 명령어를 포함할 수 있다.
2. 읽거나 쓸 계정의 배열 : 명령어에서 참조하는 계정 목록, 계정은 읽기 전용 또는 읽기/쓰기 권한이 부여될 수 있습니다.
3. 하나 이상의 서명 : 트랜잭션에 대한 서명 목록입니다. 각 서명은 특정 계정의 비밀키로 생성됩니다. 서명은 트랜잭션의 인증을 보장합니다.
트랜잭션의 유효성을 나타내는 암호화된 출력
데이터의 무결성, 인증, 부인 방지를 위한 암호 기술
✌ 디지털 서명은 암호화 기술과 수학적 해시 함수를 사용하여 생성됩니다.
데이터의 무결성을 보장하기 위해 디지털 서명은 데이터가 변경 되었는 지 여부를 확인하는 데 사용되며, 인증을 검증하기 위해 사용됩니다. 블록체인에서는 디지털 서명이 매우 중요한 역할을 수행하며 특히 트랜잭션 검증 및 블록 생성 과정에서 사용됩니다.
트랜잭션 처리 속도를 효율적으로 하기 위해 CPU 디자인을 토대로 구성한 기능
네트워크에 제출되었으나 아직 처리되지 않은 트랜잭션 세트
네트워크 변방으로 트랜잭션 캐시를 밀어내는 방법
모든 validator들은 다음 리더들을 알고있기 때문에 클라이언트들과 validator들은 트랜잭션들을 예정된 리더에게 앞서 전달 할 수 있습니다. 이렇게 되면 validator들은 다가오는 트랜잭션들을 미리 처리하여 확정까지 걸리는 시간을 줄여주고, 리더의 변경도 더 빠르게 이뤄질 수 있으며, 확인되지 않은 트랜잭션 풀로 인한 메모리 압박에서 벗어날 수 있게 됩니다. 이러한 방법은 불확정적인 리더를 갖는 네트워크에서는 사용할 수 없습니다.
블록체인의 각 트랜잭션 내에서 전송된 명령어를 해석하는 실행 가능한 코드
스마트 컨트랙트라고 불리는 개념으로, 누구나 상화 작용하고 실행할 수 있도록 블록체인에 직접 배포, 업데이트 할 수 있음
다른 온체인 프로그램과 마찬가지로 다른 프로그램/사용자에 의해 호출될 수 있다.
그러나 핵심 블록체인 및 클러스터 업데이트의 일부로만 업그레이드 될 수 있다.
이러한 네이티비 프로그램 업그레이드는 다양한 클러스터에 대한 버전 릴리즈를 통해 제어된다
프로그램간의 호출을 위한, 프로그램 Address(즉 데이터 저장 공간)
😊program id vs PDAs
Program id
PDAs
솔라나 상 Account들이 블록체인에 데이터를 저장하기 위해 지불해야 하는 비용
메인넷에 SOL비용 발생
블록체인에서 프로그램 코드의 실행과 관리를 담당하는 시스템
스마트 컨트랙트 및 트랜잭션 병렬 처리가 가능한 기능
참고자료
https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread
https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread-t5gv4udj
https://velog.io/@gil0127/JS-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%95%B5%EC%8B%AC-Event-Loop