Layer 1 Solutions: On-Chain Scalability
핵심 범위:
Lecture 02의 중심 질문은 다음과 같다.
모든 노드가 모든 트랜잭션(Transaction)을 처리하고 모든 데이터를 저장해야 한다면, 이 작업을 여러 그룹으로 나눠 병렬 처리할 수 없을까?
강의에서는 이를 샤딩(Sharding)의 출발점으로 설명한다. 트랜잭션 처리를 여러 샤드(Shard)로 나누고 병렬 실행하면 수평적 확장(Horizontal Scaling)이 가능하다.
전통적인 블록체인에서는:
Every Node
↓
Process All Transactions
↓
Store All Data
↓
Maintain Total Ordering
즉, 모든 노드가:
이 구조는 노드가 늘어난다고 해서 처리량(Throughput)이 그대로 증가하지 않는 원인이 된다.
샤딩은 하나의 큰 작업 공간을 여러 개의 작은 파티션(Partition)으로 나누는 방식이다.
Without Sharding
TX1
TX2
TX3
TX4
↓
One Processing Group
With Sharding
TX1, TX2 → Shard 1
TX3, TX4 → Shard 2
Shard 1 || Shard 2
Parallel
핵심은:
트랜잭션 처리를 여러 샤드로 분할하고 병렬 실행한다.
강의에서는 MongoDB를 예로 든다.
샤딩이 필요한 대표적인 상황:
효과:
Better Parallelization
→ Higher Throughput
Smaller Search Space per Shard
→ Faster Response
즉, 여러 샤드가 요청을 병렬로 처리하므로 전체 처리량이 높아지고, 각 샤드가 검색해야 할 데이터 범위는 줄어든다.
샤드 키(Shard Key)는 특정 데이터나 요청을 어느 샤드로 보낼지 결정하는 인덱스 필드(Index Field)다.
예:
Address ending 01 → Shard 1
Address ending 02 → Shard 2
...
Address ending 09 → Shard 9
강의에서는 사용자의 주소 마지막 몇 자리를 샤드 키로 사용하는 예를 든다.
전통 시스템은 일반적으로:
을 가정한다.
블록체인은:
을 고려해야 한다.
따라서 데이터베이스 샤딩보다 보안 문제가 훨씬 어렵다.
가장 단순한 방식은 각 샤드에 독립적인 검증자(Validator) 그룹을 배치하고 각자 체인을 운영하는 것이다.
문제는 두 가지다.
샤드가 s개라면 검증자가 나뉘므로 각 샤드의 검증자 집합은 작아진다.
강의에서는 s개의 샤드로 분할하면 무작위 검증자 할당이 없을 경우 보안이 약 s배 감소할 수 있다고 설명한다.
서로 다른 샤드에 있는 사용자끼리 바로 트랜잭션하기 어렵다.
보안 문제를 줄이기 위해 검증자가 원하는 샤드를 선택하게 하지 않고 무작위로 배정한다.
이렇게 하면 공격자가 자신의 악성 노드를 특정 샤드에 집중시키기 어려워진다.
장점:
하지만 샤드 자체가 여전히 작은 공격 목표(Smaller Target)이므로 완전한 해결책은 아니다.
따라서 검증자를 주기적으로 무작위 재배치(Random Shuffle / Rotation)해야 한다.
이를 위해 랜덤 비콘 체인(Random Beacon Chain)이 필요하다.
여러 참가자가 공동으로 랜덤값을 생성한다.
요구되는 특성:
검증 가능한 랜덤 함수(Verifiable Random Function, VRF)는 공개키 기반 키드 해시(Public-Key Version of a Keyed Cryptographic Hash)로 설명된다.
Beacon Chain
/ | \
/ | \
Shard 1 Shard 2 Shard 3
간단히 기억:
Shard Chain = Execution
Beacon Chain = Coordination
Beacon Chain이 각 샤드의 최신 상태를 알아야 하므로 샤드 검증자는 주기적으로 새 블록 정보를 Beacon Chain에 제출한다.
이를 체인 링크(Chain-Link) 또는 크로스 링크(Cross-Link)라고 표현한다.
Shard
↓
Entire Block
↓
Beacon Chain
이 경우:
Transaction Sharding Only
상태(Global State)는 Beacon Chain 수준에 존재한다.
따라서 Cross-Shard Transaction은 Beacon Chain에서 동기적으로(Synchronously) 실행될 수 있다.
Shard
↓
Block Header
↓
Beacon Chain
이 경우:
Transaction & State Sharding
Transaction과 State 모두 샤딩된다. Beacon Chain에 완전한 Global State가 존재하지 않으므로 Cross-Shard Transaction은 Beacon Chain의 중계(Relay)를 받아 각 Shard에서 비동기적으로(Asynchronously) 처리된다.
| Cross-Link | Sharding Type | Cross-Shard 처리 |
|---|---|---|
| Entire Block | Transaction Sharding Only | Synchronous |
| Block Header | Transaction & State Sharding | Asynchronous |
State Sharding에서는 서로 다른 샤드의 작업이 동시에 끝난다는 보장이 없다.
예:
Shard 1: Train Ticket
Shard 2: Hotel Reservation
원하는 결과:
Train ✓ + Hotel ✓
또는
Train ✗ + Hotel ✗
허용하면 안 되는 결과:
Train ✓
Hotel ✗
여기서 필요한 개념이 원자성(Atomicity)이다.
Atomicity = 전부 성공하거나 전부 실패하는 보장(All-or-Nothing Guarantee)
강의의 Transaction Sharding 사례에서 Beacon Chain Validator는:
을 수행한다.
Shard가 s개라면 Beacon Validator는 모든 Shard의 Raw Block을 저장한다.
따라서:
s배 증가할 수 있다.
하지만 모든 Shard Block을 다시 실행하지는 않는다.
실제 무거운 연산은 Shard Committee가 수행하고, Beacon Validator는 주로 Coordination, Proof Verification, Commitment Verification을 담당한다.
강의의 Transaction Sharding 사례에서는 모든 상태가 Beacon Chain 수준에 집계되므로 데이터 가용성(Data Availability) 문제가 비교적 단순하다.
각 Shard에서 PBFT가 블록의 정확성을 보장한다.
샤드가 악성으로 변하면 사용자는 Beacon Chain에서 해당 Shard Validator에게 상태 전이 증명(State Transition Proof)을 요구하며 Challenge할 수 있다.
Beacon Chain도 하나의 블록체인이므로 샤드 수를 무한히 늘릴 수 없다.
강의의 예시:
Node Performance ×4
→ Per-Shard Throughput ×4
→ Supported Shards ≈ ×4
→ Total Improvement ≈ 16×
이를 이차 샤딩(Quadratic Sharding)이라고 부른다.
상호작용식 계산 증명(Interactive Proof of Computation)이다.
Result Submitted
↓
Challenge Period
↓
Someone Challenges
↓
Submit Evidence
Challenge Period 안에 누구나 계산 무결성(Computation Integrity)을 의심할 수 있다.
결과 계산자는 정해진 시간 안에 증거(Evidence)를 제출해야 하며, 응답하지 못하면 Fraud의 증거로 사용할 수 있다.
비상호작용식 암호학적 계산 증명(Non-Interactive Cryptographic Proof of Computation)이다.
개념적으로:
f1(f2(f3(...fk(x)))) = y
라는 결과에 대해 공개 검증 가능한 증명(Publicly Verifiable Proof) π를 함께 제시한다.
| 항목 | Fraud Proof | SNARK |
|---|---|---|
| 방식 | Interactive | Non-Interactive |
| 기본 구조 | Challenge → Response | Result + Proof |
| Challenge Period | 필요 | 핵심 메커니즘 아님 |
| 핵심 아이디어 | 잘못됐으면 Challenge | 처음부터 증명 첨부 |
대표적인 Transaction Sharding 사례다.
동작 순서:
1. Identity Establishment
→ PoW
2. Assign Shard Committee
→ RANDAO
3. Intra-Committee Consensus
→ PBFT
4. Final Consensus Broadcast
→ Commit Entire Block
5. Generate Next Epoch Randomness
Cross-Link가 Entire Block이므로:
Transaction Sharding Only
이다.
NearProtocol은:
를 사용한다.
따라서:
Transaction & State Sharding
에 해당한다.
| Elastico / Zilliqa | NearProtocol |
|---|---|
| PoW | Stake 기반 |
| RANDAO | VRF |
| PBFT | Threshold PoS + TxFlow |
| Entire Block | Block Header |
| Transaction Sharding | Transaction + State Sharding |
강의에서 설명한 구성:
역할:
강의에서는 블록체인 상호운용성(Blockchain Interoperability)을 상태 샤딩(State Sharding)과 비슷한 구조로 설명한다.
| State Sharding | Cosmos | Polkadot |
|---|---|---|
| Beacon Chain | Cosmos Hub | Relay Chain |
| Shard Chain | Cosmos Zone | Para Chain |
| Cross-Shard TX | IBC | Cross-Chain TX |
Cosmos Hub
/ \
/ \
Zone 1 Zone 2
각 Zone은 독립적인 블록체인이다.
Zone 간 통신은 블록체인 간 통신(Inter-Blockchain Communication, IBC)을 이용한다.
각 Zone은 Tendermint Consensus를 사용하거나 다른 Consensus를 사용한 뒤 Tendermint와 연결할 수 있다.
Parachain은 플러거블 합의(Pluggable Consensus) 구조로 설명된다.
강의에서는 Cosmos/Tendermint의 최종성을 확률적 체인(Probabilistic Chain)과 비교한다.
Longest-Chain 방식에서는 시간이 지나면서 해당 체인이 Canonical Chain일 확률이 높아진다.
Tendermint에서는 합의가 끝난 블록이 결정적 최종성(Deterministic Finality)을 갖는 방식으로 소개된다.
Light Client는 전체 블록을 저장하지 않고 Block Header 중심으로 검증한다.
주요 정보:
이 정보를 이용해 이후 Header를 검증한다.
Hub는 여러 Zone을 연결하고 각 Zone의 Block Header를 추적한다.
Cross-Zone Transfer는 다음과 같은 구조로 이해할 수 있다.
Zone 1
Lock Coins
↓
Proof
↓
Hub
↓
Zone 2
CometBFT
↓
Consensus
Cosmos SDK
↓
Framework
Your Module
↓
Custom Business Logic
다음 블록에 합의하고 노드를 동기화한다.
다음 기능을 처리하는 블록체인 프레임워크다.
개발자가 정의하는 사용자 비즈니스 규칙이다.
예:
1. Start
↓
Use a Working Chain Scaffold
2. Add
↓
Define Custom Rule
3. Connect
↓
Wire Rule into App
4. Run
↓
Start Local Node
5. Test
↓
Send Transaction
Query Result
사용자가 체인에 무엇을 하라고 요청하는가?
블록 처리 후 체인이 무엇을 기억하는가?
사용자가 나중에 무엇을 읽을 수 있는가?
Message
↓
State Change
↓
Query
type MsgCreateOrder struct {
Creator string
Symbol string
Amount uint64
}
예시:
Creator = alice
Symbol = ATOM
Amount = 10
Keeper에서는:
if msg.Amount == 0 {
return ErrInvalidAmount
}
으로 입력을 검증한다.
정상이라면 Order를 생성하고 State에 저장한다.
Define
↓
Write
↓
Expose
↓
Connect
| 단계 | 역할 | 구성 |
|---|---|---|
| Define | 요청과 데이터 정의 | Proto |
| Write | 비즈니스 규칙을 State에 적용 | Keeper |
| Expose | Action/Query 외부 제공 | MsgServer + Query |
| Connect | 실행 중인 App과 연결 | app.go |
Register
↓
Store
↓
Run
↓
Reach
| 단계 | 의미 | 구성 |
|---|---|---|
| Register | App에 Module 등록 | module manager |
| Store | State 저장공간 연결 | keeper + store |
| Run | Startup/Lifecycle에 포함 | genesis + order |
| Reach | Client가 TX/Query 접근 | app.go + CLI |
| 개념 | 반드시 기억할 내용 |
|---|---|
| Sharding | TX 처리를 나누고 병렬 실행 |
| Shard Key | TX/Data가 갈 Shard 결정 |
| Blockchain Sharding | Byzantine + Sybil 고려 필요 |
| Random Assignment | 악성 Validator 집중 방지 |
| Random Rotation | 특정 Shard 장기 공격 방지 |
| VRF | Private Key로 계산, Public Key로 검증 |
| Beacon Chain | Randomness + Cross-Shard Coordination |
| Shard Chain | Execution + BFT |
| Entire Block Cross-Link | Transaction Sharding Only |
| Block Header Cross-Link | Transaction + State Sharding |
| Cross-Shard Atomicity | All-or-Nothing |
| Fraud Proof | Interactive Challenge |
| SNARK | Non-Interactive Proof |
| Elastico/Zilliqa | PoW + RANDAO + PBFT |
| Near | Stake VRF + Threshold PoS + TxFlow |
| Cosmos Hub | Beacon Chain과 유사 |
| Cosmos Zone | Shard Chain과 유사 |
| IBC | Cross-Chain Communication |
| CometBFT | Consensus |
| Cosmos SDK | Framework |
| Custom Module | Business Logic |
Blockchain Scalability Problem
│
│ Every node processes everything
↓
Sharding
│
├── Partition TX Processing
├── Parallel Execution
└── Shard Key
│
↓
Security Problem
│
├── Byzantine Failure
├── Sybil Identity
└── Smaller Validator Set
│
↓
Random Validator Assignment
│
├── Random Beacon
├── VRF
└── Validator Rotation
│
↓
Beacon Chain
/ \
Shard 1 Shard 2
│ │
BFT BFT
\ /
Cross-Shard TX
│
├── Entire Block
│ → Transaction Sharding
│
└── Block Header
→ Transaction + State Sharding
│
↓
Asynchronous TX
│
↓
Atomicity
│
↓
State Validity
/ \
Fraud Proof SNARK
────────────────────────────────
Blockchain Interoperability
≈ State Sharding
Beacon Chain → Cosmos Hub → Polkadot Relay Chain
Shard Chain → Cosmos Zone → Polkadot Para Chain
Cosmos
│
├── CometBFT → Consensus
├── Cosmos SDK → Framework
└── Module → Custom Logic
Lecture 02는 하나의 블록체인이 모든 작업을 처리하는 구조를 여러 샤드(Shard)로 분할해 병렬화하고, 그 과정에서 생기는 샤드 보안, 검증자 배치, Cross-Shard Transaction, Atomicity, State Validity 문제를 해결하는 방법을 다룬다. 후반부에서는 이 구조를 Cosmos와 Polkadot 같은 Blockchain Interoperability와 연결해 설명한다.