Skip to main content

Rollup Development Kit

The x/rdk module provides a comprehensive Rollup Development Kit (RDK) that allows developers to deploy application-specific rollups on QoreChain. It supports four settlement paradigms, multiple sequencer modes, pluggable data availability backends, and AI-assisted configuration optimization.


Settlement Paradigms

QoreChain RDK supports four distinct settlement modes — optimistic, zk, based, and sovereign — each with different trust assumptions, finality characteristics, and proof requirements.

Optimistic Settlement

Optimistic rollups assume transactions are valid by default and rely on fraud proofs for dispute resolution.

  • Proof system: Interactive fraud proofs
  • Challenge window: 7 days (604,800 seconds), configurable per rollup
  • Challenge bond: 1,000 QOR (1,000,000,000 uqor) — required to submit a fraud proof challenge
  • Finality: Delayed until the challenge window expires with no valid challenge
  • Auto-finalization: The EndBlocker automatically finalizes batches once the challenge window has passed without dispute

Batch lifecycle:

Submitted → [challenge window expires] → Finalized
Submitted → [fraud proof submitted] → Challenged → Rejected

ZK (Zero-Knowledge) Settlement

ZK rollups provide cryptographic validity proofs that guarantee state transition correctness.

  • Proof system: SNARK (Groth16, PLONK) or STARK (transparent, no trusted setup)
  • Finality: Instant on proof verification — no challenge window required
  • Max proof size: 1 MB (1,048,576 bytes)
  • Recursion depth: Configurable proof aggregation depth (default: 1)
  • Maturity: In the current release, ZK settlement uses stub verification that accepts any non-empty proof. Full SNARK/STARK proof verification is a planned upgrade and should be treated as not yet production-hardened.

Batch lifecycle:

Submitted + valid proof → Finalized (instant)

Based Settlement

Based rollups delegate transaction sequencing to L1 (QoreChain) proposers, inheriting the host chain's liveness and censorship resistance guarantees.

  • Proof system: None required — L1 proposers are the source of truth
  • Sequencer: Must use based sequencer mode (enforced by validation)
  • Finality: 2-block confirmation on QoreChain
  • Inclusion delay: Configurable blocks before forced inclusion of rollup transactions
  • Priority fee sharing: Configurable percentage of priority fees paid to L1 proposers

Batch lifecycle:

Submitted → [2 L1 blocks] → Finalized (auto)

Sovereign Settlement

Sovereign rollups operate with independent consensus and self-sequence their transactions. They anchor state to QoreChain for verifiability but do not depend on the host chain for finality.

  • Proof system: None
  • Finality: Independent — determined by the rollup's own consensus
  • State anchoring: State roots are posted to QoreChain for transparency and verifiability, but are not enforced
  • Auto-finalization: None — sovereign rollups manage their own finality

Proof System Compatibility

Settlement ModeFraud ProofsSNARKSTARKNone
OptimisticRequired------
ZK--SupportedSupported--
Based------Required
Sovereign------Required

STARK and full ZK proof verification are still maturing; see the ZK Settlement maturity note above.


Preset Profiles

The RDK ships five preset profiles that provide turnkey rollup configurations optimized for common use cases. Each preset bundles a settlement paradigm, sequencer mode, data availability backend, gas model, and VM tuned for its target domain:

ProfileSettlement (proof)SequencerDAGas modelVMTarget use case
defizk (SNARK)dedicatednativeEIP-1559EVMTrading, lending, and AMM-style applications
gamingbasedbasednativeflatcustomHigh-throughput, low-latency game state and in-game economies
nftoptimistic (fraud)dedicatednative (Celestia DA planned)standardCosmWasmNFT minting, marketplaces, and digital collectibles
enterprisebasedbasednativesubsidizedEVMPermissioned and consortium deployments with sponsored fees
customfully parameterizedfully parameterizedfully parameterizedfully parameterizedfully parameterizedEvery field is user-defined

The custom profile leaves every field for you to set. The exact values bundled into each preset can evolve as the RDK matures; query the live configuration with qorechaind query rdk config (or RdkClient.params() from @qorechain/rdk) for the authoritative per-preset parameters, and note that based settlement always pairs with the based sequencer mode.


Sequencer Modes

The sequencer determines who orders transactions within a rollup block.

Dedicated Sequencer

A single operator sequences all rollup transactions.

  • Operator: Single designated address
  • Latency: Lowest possible — single-party ordering
  • Trust: Requires trust in the sequencer operator for liveness and fair ordering

Shared Sequencer

A set of sequencers collectively order transactions.

  • Minimum set size: Configurable (default: 1)
  • Latency: Slightly higher due to multi-party coordination
  • Trust: Distributed across the sequencer set

Based Sequencer

QoreChain L1 proposers sequence rollup transactions.

  • Inclusion delay: Configurable blocks before forced inclusion (default: 10)
  • Priority fee share: Configurable percentage of priority fees paid to L1 proposers
  • Trust: Inherits QoreChain's validator set security and censorship resistance
  • Requirement: Based settlement mode requires the based sequencer (enforced at validation)

Data Availability Backends

Native DA

On-chain KV-store blob storage within QoreChain itself.

ParameterValue
Max blob size2 MB (2,097,152 bytes)
Retention period432,000 blocks (~30 days at 6-second blocks)
Auto-pruningExpired blobs are pruned in the EndBlocker — data is removed but commitment metadata is retained
CommitmentSHA-256 hash of blob data

Celestia DA

IBC-based data availability using Celestia's dedicated DA layer.

  • Status: Stubbed in the current release — returns an error if selected as the sole backend
  • Namespace support: Rollup-specific namespaces are supported in the blob schema
  • Planned: Full IBC integration with Celestia's blob submission and verification

Both (Redundant)

Stores blobs on both Native and Celestia backends simultaneously.

  • In the current release, only the native blob is actually stored; a warning is logged for the Celestia component.

Rollup Lifecycle

Pending → Active → Paused → Active → Stopped
↑ |
└──────────────────┘
(can resume from paused,
stopped is permanent)
StateDescription
PendingRollup registered but not yet activated
ActiveRollup is live and processing batches
PausedTemporarily halted by creator (can resume)
StoppedPermanently decommissioned — stake bond returned to creator

On creation, rollup status is set to Active immediately after stake escrow and layer registration succeed.


Batch Lifecycle

Settlement batches track the state progression of rollup state roots:

Submitted → Finalized (happy path)
Submitted → Challenged → Rejected (fraud detected)
StateDescription
SubmittedBatch posted to QoreChain, awaiting finalization
ChallengedFraud proof challenge submitted (optimistic only)
FinalizedBatch accepted as canonical
RejectedBatch invalidated by successful challenge

Auto-Finalization Rules

Settlement ModeFinalization Trigger
OptimisticChallenge window expires (~7 days) with no valid challenge
ZKInstant on valid proof submission
Based2 L1 blocks after submission
SovereignNone — managed by the rollup's own consensus

Auto-finalization is executed in the EndBlocker for optimistic and based rollups. ZK batches are finalized inline during batch submission.


Module Parameters

ParameterDefaultDescription
max_rollups100Maximum number of rollups that can be registered
min_stake_for_rollup10,000,000,000 uqor (10,000 QOR)Minimum stake required to create a rollup
rollup_creation_burn_rate0.01 (1%)Fraction of creation stake burned via x/burn
default_challenge_window604,800 seconds (7 days)Default optimistic challenge window
max_da_blob_size2,097,152 bytes (2 MB)Maximum data availability blob size
blob_retention_blocks432,000 (~30 days)Blocks before DA blobs are pruned
max_batches_per_block10Maximum settlement batches processed per block

Multilayer Integration

The RDK module integrates with x/multilayer for cross-layer state management:

Layer Registration

When a rollup is created, it is automatically registered as a sidechain layer via RegisterSidechain. The registration includes:

  • Layer ID (matches rollup ID)
  • Target block time and max transactions per block
  • Supported VM types and domains
  • Settlement interval

Registration is non-fatal: if x/multilayer registration fails, the rollup is still created and a warning is logged.

State Anchoring

Every settlement batch submitted to the RDK is anchored to x/multilayer via AnchorState. This records:

  • Layer ID and layer height (batch index)
  • State root
  • Transaction count

Anchoring is non-fatal: failures are logged but do not prevent batch processing.


Burn Integration

On rollup creation, 1% of the stake amount is burned via the x/burn module through the rollup_create burn channel. For example, creating a rollup with the minimum 10,000 QOR stake burns 100 QOR permanently. The remaining 9,900 QOR is held in escrow and returned when the rollup is stopped.