롤업 개발 키트
x/rdk 모듈은 개발자가 QoreChain 위에 애플리케이션별 롤업을 배포할 수 있도록 하는 포괄적인 롤업 개발 키트(RDK)를 제공합니다. 네 가지 정산 패러다임, 다중 시퀀서 모드, 플러그형 데이터 가용성 백엔드, 그리고 AI 보조 구성 최적화를 지원합니다.
정산 패러다임
QoreChain RDK는 optimistic, zk, based, sovereign의 네 가지 서로 다른 정산 모드를 지원하며, 각각 신뢰 가정, 최종성 특성, 증명 요구사항이 다릅니다.
Optimistic 정산
Optimistic 롤업은 트랜잭션이 기본적으로 유효하다고 가정하고 분쟁 해결을 위해 사기 증명(fraud proof)에 의존합니다.
- 증명 시스템: 대화형 사기 증명
- 이의 제기 기간(Challenge window): 7일(604,800초), 롤업별로 구성 가능
- 이의 제기 보증금(Challenge bond): 1,000 QOR(1,000,000,000 uqor) — 사기 증명 이의 제기를 제출하는 데 필요
- 최종성: 이의 제기 기간이 유효한 이의 제기 없이 만료될 때까지 지연됨
- 자동 최종화:
EndBlocker는 이의 제기 기간이 분쟁 없이 경과하면 배치를 자동으로 최종화합니다
배치 수명 주기:
Submitted → [challenge window expires] → Finalized
Submitted → [fraud proof submitted] → Challenged → Rejected
ZK(영지식) 정산
ZK 롤업은 상태 전이의 정확성을 보장하는 암호학적 유효성 증명을 제공합니다.
- 증명 시스템: SNARK(Groth16, PLONK) 또는 STARK(투명, 신뢰 설정 불필요)
- 최종성: 증명 검증 시 즉시 — 이의 제기 기간 불필요
- 최대 증명 크기: 1 MB(1,048,576 바이트)
- 재귀 깊이(Recursion depth): 구성 가능한 증명 집계 깊이(기본값: 1)
- 성숙도: 현재 릴리스에서 ZK 정산은 비어 있지 않은 증명을 모두 수락하는 스텁 검증을 사용합니다. 완전한 SNARK/STARK 증명 검증은 예정된 업그레이드이며 아직 프로덕션용으로 강화되지 않은 것으로 간주해야 합니다.
배치 수명 주기:
Submitted + valid proof → Finalized (instant)
Based 정산
Based 롤업은 트랜잭션 시퀀싱을 L1(QoreChain) 프로포저에게 위임하여 호스트 체인의 활성성(liveness) 및 검열 저항성 보장을 상속받습니다.
- 증명 시스템: 불필요 — L1 프로포저가 신뢰의 원천
- 시퀀서:
based시퀀서 모드를 사용해야 함(검증에 의해 강제) - 최종성: QoreChain에서 2블록 확인
- 포함 지연(Inclusion delay): 롤업 트랜잭션의 강제 포함 전 구성 가능한 블록 수
- 우선순위 수수료 공유: L1 프로포저에게 지급되는 우선순위 수수료의 구성 가능한 비율
배치 수명 주기:
Submitted → [2 L1 blocks] → Finalized (auto)
Sovereign 정산
Sovereign 롤업은 독립적인 합의로 작동하며 자체적으로 트랜잭션을 시퀀싱합니다. 검증 가능성을 위해 상태를 QoreChain에 앵커링하지만 최종성을 위해 호스트 체인에 의존하지는 않습니다.
- 증명 시스템: 없음
- 최종성: 독립적 — 롤업 자체 합의에 의해 결정됨
- 상태 앵커링: 상태 루트가 투명성과 검증 가능성을 위해 QoreChain에 게시되지만 강제되지는 않음
- 자동 최종화: 없음 — sovereign 롤업은 자체적으로 최종성을 관리
증명 시스템 호환성
| 정산 모드 | 사기 증명 | SNARK | STARK | 없음 |
|---|---|---|---|---|
| Optimistic | 필수 | -- | -- | -- |
| ZK | -- | 지원 | 지원 | -- |
| Based | -- | -- | -- | 필수 |
| Sovereign | -- | -- | -- | 필수 |
STARK 및 완전한 ZK 증명 검증은 아직 성숙 단계에 있습니다. 위의 ZK 정산 성숙도 참고 사항을 확인하세요.
사전 설정 프로파일
RDK는 일반적인 사용 사례에 최적화된 턴키 롤업 구성을 제공하는 5가지 사전 설정 프로파일을 함께 제공합니다. 각 사전 설정은 대상 도메인에 맞게 조정된 정산 패러다임, 시퀀서 모드, 데이터 가용성 백엔드, 가스 모델, VM을 번들로 제공합니다:
| 프로파일 | 정산(증명) | 시퀀서 | DA | 가스 모델 | VM | 대상 사용 사례 |
|---|---|---|---|---|---|---|
defi | zk (SNARK) | dedicated | native | EIP-1559 | EVM | 트레이딩, 대출, AMM 스타일 애플리케이션 |
gaming | based | based | native | flat | custom | 고처리량, 저지연 게임 상태 및 게임 내 경제 |
nft | optimistic (fraud) | dedicated | native (Celestia DA 예정) | standard | CosmWasm | NFT 발행, 마켓플레이스, 디지털 수집품 |
enterprise | based | based | native | subsidized | EVM | 수수료가 후원되는 허가형 및 컨소시엄 배포 |
custom | 완전 매개변수화 | 완전 매개변수화 | 완전 매개변수화 | 완전 매개변수화 | 완전 매개변수화 | 모든 필드를 사용자가 정의 |
custom 프로파일은 모든 필드를 사용자가 설정하도록 남겨둡니다. 각 사전 설정에 번들된 정확한 값은 RDK가 성숙함에 따라 변경될 수 있습니다. 권위 있는 사전 설정별 매개변수를 확인하려면 qorechaind query rdk config(또는 @qorechain/rdk의 RdkClient.params())로 라이브 구성을 쿼리하세요. 그리고 based 정산은 항상 based 시퀀서 모드와 짝을 이룬다는 점에 유의하세요.
시퀀서 모드
시퀀서는 롤업 블록 내에서 트랜잭션을 정렬하는 주체를 결정합니다.
Dedicated 시퀀서
단일 운영자가 모든 롤업 트랜잭션을 시퀀싱합니다.
- 운영자: 단일 지정 주소
- 지연 시간: 가능한 가장 낮음 — 단일 당사자 정렬
- 신뢰: 활성성 및 공정한 정렬을 위해 시퀀서 운영자에 대한 신뢰가 필요
Shared 시퀀서
시퀀서 집합이 공동으로 트랜잭션을 정렬합니다.
- 최소 집합 크기: 구성 가능(기본값: 1)
- 지연 시간: 다자간 조정으로 인해 약간 더 높음
- 신뢰: 시퀀서 집합 전반에 분산됨
Based 시퀀서
QoreChain L1 프로포저가 롤업 트랜잭션을 시퀀싱합니다.
- 포함 지연(Inclusion delay): 강제 포함 전 구성 가능한 블록 수(기본값: 10)
- 우선순위 수수료 공유: L1 프로포저에게 지급되는 우선순위 수수료의 구성 가능한 비율
- 신뢰: QoreChain의 검증자 집합 보안 및 검열 저항성을 상속
- 요구사항: Based 정산 모드는 based 시퀀서를 필요로 함(검증 시 강제)
데이터 가용성 백엔드
Native DA
QoreChain 자체 내의 온체인 KV 저장소 블롭 스토리지입니다.
| 매개변수 | 값 |
|---|---|
| 최대 블롭 크기 | 2 MB(2,097,152 바이트) |
| 보존 기간 | 432,000 블록(6초 블록 기준 ~30일) |
| 자동 가지치기 | 만료된 블롭은 EndBlocker에서 가지치기됨 — 데이터는 제거되지만 커밋먼트 메타데이터는 보존됨 |
| 커밋먼트 | 블롭 데이터의 SHA-256 해시 |
Celestia DA
Celestia의 전용 DA 레이어를 사용하는 IBC 기반 데이터 가용성입니다.
- 상태: 현재 릴리스에서 스텁 처리됨 — 단독 백엔드로 선택되면 오류 반환
- 네임스페이스 지원: 롤업별 네임스페이스가 블롭 스키마에서 지원됨
- 예정: Celestia의 블롭 제출 및 검증과의 완전한 IBC 통합
Both(중복)
Native 및 Celestia 백엔드 모두에 블롭을 동시에 저장합니다.
- 현재 릴리스에서는 native 블롭만 실제로 저장되며, Celestia 구성 요소에 대해서는 경고가 로깅됩니다.
롤업 수명 주기
Pending → Active → Paused → Active → Stopped
↑ |
└──────────────────┘
(can resume from paused,
stopped is permanent)
| 상태 | 설명 |
|---|---|
| Pending | 롤업이 등록되었지만 아직 활성화되지 않음 |
| Active | 롤업이 라이브 상태이며 배치를 처리 중 |
| Paused | 생성자에 의해 일시적으로 중단됨(재개 가능) |
| Stopped | 영구적으로 폐기됨 — 스테이크 보증금이 생성자에게 반환됨 |
생성 시, 롤업 상태는 스테이크 에스크로 및 레이어 등록이 성공한 직후 Active로 설정됩니다.
배치 수명 주기
정산 배치는 롤업 상태 루트의 상태 진행을 추적합니다:
Submitted → Finalized (happy path)
Submitted → Challenged → Rejected (fraud detected)
| 상태 | 설명 |
|---|---|
| Submitted | 배치가 QoreChain에 게시되어 최종화 대기 중 |
| Challenged | 사기 증명 이의 제기 제출됨(optimistic 전용) |
| Finalized | 배치가 정규(canonical)로 수락됨 |
| Rejected | 성공적인 이의 제기에 의해 배치가 무효화됨 |
자동 최종화 규칙
| 정산 모드 | 최종화 트리거 |
|---|---|
| Optimistic | 이의 제기 기간(~7일)이 유효한 이의 제기 없이 만료됨 |
| ZK | 유효한 증명 제출 시 즉시 |
| Based | 제출 후 2 L1 블록 |
| Sovereign | 없음 — 롤업 자체 합의에 의해 관리됨 |
자동 최종화는 optimistic 및 based 롤업의 경우 EndBlocker에서 실행됩니다. ZK 배치는 배치 제출 중 인라인으로 최종화됩니다.
모듈 매개변수
| 매개변수 | 기본값 | 설명 |
|---|---|---|
max_rollups | 100 | 등록할 수 있는 최대 롤업 수 |
min_stake_for_rollup | 10,000,000,000 uqor (10,000 QOR) | 롤업을 생성하는 데 필요한 최소 스테이크 |
rollup_creation_burn_rate | 0.01 (1%) | x/burn을 통해 소각되는 생성 스테이크의 비율 |
default_challenge_window | 604,800 seconds (7 days) | 기본 optimistic 이의 제기 기간 |
max_da_blob_size | 2,097,152 bytes (2 MB) | 최대 데이터 가용성 블롭 크기 |
blob_retention_blocks | 432,000 (~30 days) | DA 블롭이 가지치기되기 전의 블록 수 |
max_batches_per_block | 10 | 블록당 처리되는 최대 정산 배치 수 |
Multilayer 통합
RDK 모듈은 교차 레이어 상태 관리를 위해 x/multilayer와 통합됩니다:
레이어 등록
롤업이 생성되면 RegisterSidechain을 통해 사이드체인 레이어로 자동 등록됩니다. 등록에는 다음이 포함됩니다:
- 레이어 ID(롤업 ID와 일치)
- 목표 블록 시간 및 블록당 최대 트랜잭션 수
- 지원되는 VM 유형 및 도메인
- 정산 간격
등록은 **비치명적(non-fatal)**입니다: x/multilayer 등록이 실패해도 롤업은 여전히 생성되며 경고가 로깅됩니다.
상태 앵커링
RDK에 제출되는 모든 정산 배치는 AnchorState를 통해 x/multilayer에 앵커링됩니다. 이는 다음을 기록합니다:
- 레이어 ID 및 레이어 높이(배치 인덱스)
- 상태 루트
- 트랜잭션 수
앵커링은 **비치명적(non-fatal)**입니다: 실패는 로깅되지만 배치 처리를 막지는 않습니다.
Burn 통합
롤업 생성 시, **스테이크 금액의 1%**가 rollup_create 소각 채널을 통해 x/burn 모듈로 소각됩니다. 예를 들어, 최소 10,000 QOR 스테이크로 롤업을 생성하면 100 QOR가 영구적으로 소각됩니다. 나머지 9,900 QOR는 에스크로에 보관되며 롤업이 중지될 때 반환됩니다.