※ 직관적 해석 주의
공부하면서 해석해본 글입니다. 틀린 부분이 있다면 댓글로 말씀해주시면 감사드리겠으며, 반영하여 수정하겠습니다.
Ledger(원장, 장부)
clients가 서명한 거래들이 포함된 entries 리스트.
이론상 제네시스 블록까지 추적할 수 있지만 실제 있는 validators의 ledger는 저장을 줄이기 위해 새로운 블록들만 가질 수 있다.
오래된 블록은 설계상 미래 블록들 검증(validation)에 필요하지 않기 때문.
validator(검증인)
새로운 블록을 생성하는 솔라나 네트워크 cluster에 전체적으로 참가하는 참가자.
ledger에 추가된 거래를 검증한다. 새로 생성된 블록의 무결성을 검증하는 노드.
cluster
단일 ledger를 관리하는 validators set.
솔라나 서버 네트워크 클러스터 : mainnet beta, devnet, testnet
client
솔라나 서버 네트워크 cluster에 액세스하는 컴퓨터 프로그램.
leader
원장에 entry를 추가할 때 validator 역할.
entry(항목)
ledger의 entry : tick = transactions entry
tick
wallclock 지속시간을 추정하는 ledger의 entry.
transactions entry
병렬로 실행될 수 있는 트랜잭션 set.
confirmation time
리더가 tick entry를 생성하고 confirmed block을 생성하는 사이의 wallclock 지속시간.
confirmation block
supermajority(=클러스터의 2/3)의 ledger votes를 받은 블록.
ledger vote(원장 투표)
주어진 tick 높이에서 validator 상태의 해시.
수신한 블록이 검증됐다는 validator의 확인, 잠금 기간(lockout period) 동안 충돌하는 블록(≒fork)에 투표하지 않겠다는 약속으로 구성.
*lockout : validator가 다른 fork 에 투표할 수 없는 기간.
fork
공통 항목에서 파생되었지만 분기된 원장.
loader
다른 온체인 프로그램의 binary encoding을 해석할 수 있는 능력을 가진 프로그램.
lockout
검증인이 다른 fork에 투표할 수 없는 기간.
native token
클러스터 상의 노드에 의해 수행된 작업을 추적하는 데 사용되는 토큰.
node
클러스터에 참여하는 컴퓨터.
node count
클러스터에 참여하는 validators의 수
PoH(Proof of History; 역사 증명)
증명이 생성되기 전에 일부 데이터가 존재했고 이전 증명 전에 정확한 시간이 경과했음을 증명하는 증명 스택.
VDF처럼, PoH는 생성에 걸린 시간보다 짧은 시간 내에 검증될 수 있다.
*블로그를 참고해 따로 알아본 내용 : 쉽게 말하면 PoH는 어떠한 사건이 특정 순간에 일어났음을 증명하는 내역을 기록하는 것.
네트워크에 표시되는 메시지들이 타임스탬프를 받아올 때 충분한 수의 서명이 메시지에 모이면 다시 네트워크 전체로 전파하는 과정이 매우 느리게 이루어지는데, 특정 메시지가 이벤트 전후에 발생했음을 증명할 수 있으면 이 과정이 훨씬 빠르게 이루어질 수 있게 된다.
VDF(Verifiable delay function; 검증 가능한 지연 기능)
실행했다는 증거를 생성하는, 실행 시간이 일정하게 걸리는 함수. 생성에 걸린 시간보다 짧은 시간 내에 검증될 수 있다.
keypair
계정 접근을 위한 공개키(public key) 및 해당 개인키(private key)
lamport
값이 0.000000001 sol 인 소액의 native token.
*lamport를 사용하는 이유 : 소수점을 그대로 두고 계산을 하다 보면 자료형의 범위 등의 문제로 계산이 부정확해지는 경우가 있는데, 돈이 오가는 거래에서는 약간의 오차라도 발생하면 직접적인 금액의 손실로 이어질 수 있다. 그렇기에 매우 작은 소수점의 수를 단위화 하면 정수 범위에서 계산할 수 있기 때문에 정수 범위에서 오차 없이 계산한 뒤 다시 소수로 바꿔주는 방식으로 계산을 수행한다.
leader schedule
slot에 매핑된 validator 공개키의 시퀀스. 클러스터는 리더 스케줄을 보고 어떤 validator가 그 시점의 리더인지 확인한다.
slot
각 리더가 트랜잭션을 수집하고 블록을 생성하는 기간.
종합적으로 슬롯들은 logical clock을 생성한다. 슬롯은 겹치지 않고 순차적으로 정렬되며, PoH와 거의 동일한 실제 시간으로 구성된다.
block
투표로 처리되는 원장의 연속적인 항목 집합. 리더 한명은 슬롯당 최대 한 개의 블록만 생성 가능.
epoch
리더 스케줄이 유효한 시간(≒슬롯 수).
control plane(제어 평면)
클러스터의 모든 노드를 연결하는 가십 네트워크.
(가십 네트워크는 소문 퍼뜨리는 느낌의 네트워크라고 생각하면 되겠다)
data plane(데이터 평면)
entry들을 효율적으로 검증하고 합의를 얻는 데 사용되는 멀티캐스트 네트워크.
*멀티캐스트 : 한번의 송신으로 여러 컴퓨터에 동시에 전송하는 것.
cooldown period(쿨다운 기간; 쿨타임)
stake 후 epoch 몇개가 비활성화되어 점차 인출이 가능하게 된다. 이 기간동안 stake는 'deactivating'으로 간주된다.
warmup period(워밍업 기간)
stake 후 몇 epoch가 위임돼(delegated) 점진적으로 효력이 발생한다. 이 기간 동안 stake는 'activating'으로 간주된다.
CPI(Cross-Program invocation; 프로그램 간 호출)
한 스마트 컨트랙트 프로그램에서 다른 스마트 컨트랙트 프로그램을 호출하는 것.
drone
사용자의 개인키에 대한 관리자 역할을 하는 오프체인 서비스. 일반적으로 트랜잭션을 검증하고 서명하는 역할을 한다.
finality(완결성)
지분의 2/3를 나타내는 노드들이 공통 루트를 가질 때.
stake
악의적인 validator의 동작이 입증될 수 있는 경우 토큰은 클러스터에 몰수된다.
root
validator에서 최대 lockout에 도달한 블록 또는 슬롯. validator의 모든 활성 fork의 조상인 가장 높은 블록이다.
루트의 모든 조상 블록도 전이적으로 루트다. 루트의 조상도 아니고 자손도 아닌 블록들은 합의 고려 대상에서 제외되며 폐기될 수 있다.
runtime
프로그램 실행을 담당하는 validator의 구성 요소.
Sealevel
솔라나의 병렬 스마트 컨트랙트 runtime.
shred(조각)
블록의 일부. validators 간에 전송되는 가장 작은 단위다.
signature(서명)
R(32bytes)과 S(32bytes)의 64바이트 ed25519 서명.
*요구사항 : R은 작은 차수가 아닌 패킹된 Edwards point. S는 0 <= S < L 인 스칼라.
이 요구사항은 서명 유연성이 보장되지 않는다. 각 거래에는 fee account에 대한 서명이 하나 이상 있어야 한다.
따라서 트랜잭션의 첫번째 서명은 트랜잭션 id로 처리될 수 있다.
fee account(수수료 계정)
원장에 거래를 포함하는 비용을 지불하는 계정. 트랜잭션의 첫번째 계정이다.
트랜잭션 비용을 지불하면 계정 잔액이 줄어들기 때문에 트랜잭션에서 읽기-쓰기(쓰기 가능)로 선언돼야 한다.
genesis config
제네시스 블록(=체인의 첫번째 블록)에 대한 원장을 준비하는 구성 파일.
hash
바이트 시퀀스의 디지털 지문.
inflation
검증에 대한 보상과 Solana의 지속적인 개발에 대한 자금 조달에 사용되는 토큰 공급의 증가.
instruction(지시)
프로그램에서 실행 논리의 가장 작은 연속 단위.
instruction은 호출하는 프로그램, 읽거나 수정 작업을 하려는 계정, 프로그램에 대한 보조 입력 역할을 하는 추가 데이터를 지정한다.
client는 여러 instruction을 트랜잭션에 포함할 수 있다. instruction에는 하나 이상의 cpi(프로그램 간 호출)가 포함될 수 있다.
vote credit(투표 크레딧)
validators에 대한 보상 집계. validator가 root에 도달하면 투표 계정의 validator에게 부여된다.
point
보상 제도의 가중 크레딧.
(해석 미흡 가능성 ↑) validator 보상 제도에서, redemption(상환, 환매, 현금화) 중 stake에 지불해야하는 포인트는 얻은 투표 크레딧과 stake 된 lamport 양의 곱이다.
program derived account(PDA; 프로그램 파생 계정)
소유자가 프로그램이어서 다른 계정처럼 프라이빗키로 제어되지 않는 계정.
program id
프로그램을 포함하는 계정의 공개키.
SPL(Solana Program Library)
토큰 생성, 사용 등의 작업을 용이하게 하는 spl-token 같은 솔라나의 프로그램 라이브러리.
sysvar
시스템 계정. 현재 tick height(=원장의 n번째 tick), 보상 포인트 값 등의 클러스터 상태 정보를 제공한다.
프로그램은 sysvar 계정(공개키)을 통하거나 syscall을 통해 쿼리해서 sysvar에 접근할 수 있다.
transaction(거래)
하나 이상의 keypairs를 사용해 client가 서명하고, 원자적으로(atomically) 실행되고, 성공이나 실패로만 실행되는 하나 이상의 instruction.
transaction confirmations
거래가 원장에 승인된 후의 confirmed block 수. 트랜잭션은 블록이 루트가 되면 완료된다.
- 유효한 클러스터를 가리키는지 확인할 수 있는 클라이언트 종류
요구하는 ledger verification(원장 검증) 수 : thin client < light client < validators
'Solana > Documentation' 카테고리의 다른 글
[Solana] 1. 솔라나 설치 및 종이 지갑 생성 - CLI 사용을 위한 세팅 (0) | 2021.10.13 |
---|---|
[Solana] 솔라나 CLI 사용법 메모 (0) | 2021.10.13 |
[Solana] 스테이킹 계정 구조 + 워밍업 예제 (0) | 2021.10.13 |
[Solana] 스테이킹하기 위한 지갑과 validator 선택 (0) | 2021.10.12 |
[Solana] 배경지식 - 지갑(wallet), epoch, voting fee (0) | 2021.10.08 |