Passa al contenuto principale

Architettura Multilayer

QoreChain implementa un'architettura gerarchica a 4 livelli tramite il modulo x/multilayer. La main chain funge da radice di regolamento e di fiducia, mentre i livelli sussidiari (sidechain, paychain e rollup) gestiscono carichi di lavoro specializzati con diversi compromessi tra prestazioni e sicurezza.


Panoramica del sistema

La gerarchia a 4 livelli mostrata di seguito illustra la main chain come radice di regolamento e di fiducia, con tre tipi di livello sussidiario che ancorano le proprie state root ad essa tramite gli Hierarchical Commitment Schemes (HCS).

+---------------------------+
| MAIN CHAIN |
| (Settlement + Routing) |
| Full CPoS consensus |
| PQC-secured (Dilithium-5)|
| QCAI routing engine |
+------+------+------+------+
| | |
+------------+ | +------------+
| | |
+---------v--------+ +-------v--------+ +---------v---------+
| SIDECHAINS | | PAYCHAINS | | ROLLUPS |
| (Compute) | | (MicroTX) | | (App-Specific) |
| 3-10 validators | | 500ms blocks | | 4 settlement |
| 1,000 QOR min | | 100 QOR min | | modes |
| Max: 10 | | Max: 50 | | 10,000 QOR min |
+------------------+ +----------------+ | Max: 100 |
+-------------------+

Tipi di livello

Main Chain

La main chain è la radice di fiducia per l'intero ecosistema QoreChain.

ProprietàValore
ConsensoFull Triple-Pool CPoS (vedi Meccanismo di consenso)
SicurezzaProtetta con PQC tramite firme Dilithium-5
RuoloLivello di regolamento, archiviazione degli state anchor, QCAI routing engine, radice di fiducia
Tempo di blocco~5 secondi

Tutti i livelli sussidiari ancorano periodicamente le proprie state root alla main chain tramite gli Hierarchical Commitment Schemes (HCS).

Sidechain

Le sidechain gestiscono operazioni a forte intensità di calcolo come protocolli DeFi, motori di gioco ed elaborazione di dati IoT.

ParametroValore
Validatori minimi3
Validatori massimi10
Stake minimo del creatore1,000 QOR
Sidechain attive massime10
Domini di destinazioneDeFi, Gaming, IoT

Paychain

Le paychain sono ottimizzate per microtransazioni ad alta frequenza con latenza minima.

ParametroValore
Tempo di blocco target500 ms
Paychain attive massime50
Stake minimo del creatore100 QOR
Domini di destinazionePagamenti, streaming, micro-transazioni

Rollup

I rollup sono chain specifiche per applicazione distribuite tramite il Rollup Development Kit (x/rdk). Si registrano come tipo di livello rollup all'interno del modulo multilayer.

ParametroValore
Modalità di regolamento4 (optimistic, zk, based, sovereign)
Rollup attivi massimi100
Stake minimo del creatore10,000 QOR
Tipo di livellorollup
Domini di destinazioneDeFi, Gaming, NFT, Enterprise

Il deployment e la configurazione dei rollup sono trattati in dettaglio nel Rollup Development Kit.


Routing delle transazioni QCAI

Il router QCAI valuta tutti i livelli attivi per ogni transazione in ingresso e seleziona la destinazione ottimale utilizzando un modello di punteggio ponderato a 4 fattori.

Formula di punteggio

Ogni livello candidato riceve un punteggio composito (più alto è meglio):

Score = w_congestion * (1 - Congestion) + w_capability * Capability + w_cost * (1 - Cost) + w_latency * (1 - Latency)
FattorePesoDescrizione
Congestion0.30Livello di carico attuale (invertito: minore congestione = punteggio più alto)
Capability0.40Quanto bene il livello soddisfa i requisiti della transazione
Cost0.20Moltiplicatore delle commissioni rispetto alla main chain (invertito: costo inferiore = punteggio più alto)
Latency0.10Tempo previsto fino alla finalità (invertito: latenza inferiore = punteggio più alto)

Soglia di confidenza

Il router richiede un punteggio di confidenza minimo di 0.6 prima di instradare una transazione verso un livello sussidiario. Se nessun livello soddisfa questa soglia, la transazione viene inviata per impostazione predefinita alla main chain.

Il mittente della transazione può fornire un suggerimento di livello preferito. Se il livello preferito raggiunge un punteggio pari almeno all'80% della soglia di confidenza (ossia 0.48), viene accettato come destinazione del routing.

Euristiche del payload

Quando i metadati dettagliati della transazione non sono disponibili, il router utilizza la dimensione del payload come segnale di classificazione:

Dimensione del payloadLivello preferitoMotivazione
< 256 bytesPaychainProbabilmente un semplice trasferimento o una microtransazione
256 - 1,024 bytesMain ChainComplessità di transazione standard
> 1,024 bytesSidechainProbabilmente un'interazione complessa con un contratto

Hierarchical Commitment Schemes (HCS)

I livelli sussidiari sottopongono periodicamente il proprio stato alla main chain tramite state anchor. Ogni anchor contiene una prova crittografica dello stato della chain sussidiaria a una determinata altezza.

Contenuto dell'anchor

CampoDescrizione
layer_idIdentificatore del livello sussidiario
layer_heightAltezza del blocco sulla chain sussidiaria
state_rootMerkle root dell'albero di stato della chain sussidiaria
validator_set_hashHash dell'insieme di validatori che ha firmato il commitment
pqc_aggregate_signatureFirma aggregata Dilithium-5 sui dati dell'anchor
transaction_countNumero di transazioni dall'ultimo anchor
compressed_state_proofProva compressa della transizione di stato

Invio dell'anchor

Gli anchor vengono inviati alla main chain tramite MsgAnchorState. Il keeper convalida l'anchor secondo i seguenti passaggi:

  1. Il livello esiste ed è attivo — Il keeper verifica che il livello esista nello stato e abbia attualmente stato active.
  2. Intervallo minimo tra anchor trascorso — Il keeper controlla che siano trascorsi almeno min_anchor_interval blocchi (predefinito: 100) dall'ultimo anchor per questo livello.
  3. Firma aggregata PQC — Il keeper garantisce che la firma aggregata PQC sia presente e valida per i dati dell'anchor.

Periodo di contestazione

Ogni anchor entra in un periodo di contestazione di 24 ore (86,400 secondi, configurabile per livello). Durante questo periodo, qualsiasi parte può contestare l'anchor inviando una prova di frode tramite MsgChallengeAnchor. Se la prova di frode è valida, l'anchor viene invalidato e lo stato della chain sussidiaria viene riportato all'anchor precedente.

Una volta scaduto il periodo di contestazione senza una contestazione andata a buon fine, l'anchor è considerato finalizzato.

Lettura degli anchor

A partire dalla versione della chain v3.1.80, gli anchor sono anche leggibili tramite il servizio di query multilayer. Due query espongono lo stato degli anchor sia su gRPC che su REST:

  • Anchor (/qorechain/multilayer/v1/anchor/{layer_id}) — restituisce l'ultimo state anchor finalizzato per un livello.
  • Anchors (/qorechain/multilayer/v1/anchors/{layer_id}) — restituisce la cronologia degli anchor per un livello.

Poiché ogni anchor porta una firma Dilithium-5 sul messaggio canonico layer_id || layer_height || state_root || validator_set_hash (verificata rispetto alla chiave PQC registrata del creatore del livello), un client può recuperare un anchor e verificarlo offline, senza fidarsi del nodo che lo serve. Questa è la primitiva on-chain alla base delle ricevute di regolamento quantum-safe del Rollup Development Kit.


Cross-Layer Fee Bundling (CLFB)

Il CLFB consente a un singolo pagamento di commissione sul livello di origine di coprire l'esecuzione attraverso più livelli in un percorso di transazione cross-layer.

Calcolo della commissione

avgMultiplier = sum(layer_multiplier_i) / num_layers
bundledFee = (totalGas / 1000) * avgMultiplier

Dove:

  • layer_multiplier_i è il moltiplicatore della commissione base per ciascun livello nel percorso della transazione (main chain = 1.0).
  • totalGas è il consumo totale di gas stimato attraverso tutti i livelli.
  • Il risultato è denominato in uqor con una commissione minima di 1 uqor.

Esempio

Una transazione cross-layer tocca tre livelli: main chain (moltiplicatore 1.0), una sidechain (moltiplicatore 0.5) e una paychain (moltiplicatore 0.1).

avgMultiplier = (1.0 + 0.5 + 0.1) / 3 = 0.533
bundledFee = (150,000 / 1000) * 0.533 = 80 uqor

Il CLFB può essere abilitato o disabilitato globalmente tramite il parametro cross_layer_fee_bundling, e i singoli livelli possono escludersi tramite il proprio flag di configurazione cross_layer_fee_bundling_enabled.


Ciclo di vita del livello

Ogni livello sussidiario attraversa un ciclo di vita ben definito:

Proposed --> Active --> Suspended --> Decommissioned
\ /
+-- Active <--+
StatoDescrizioneTransizioni consentite
ProposedIl livello è stato registrato ma non ancora attivatoActive, Decommissioned
ActiveIl livello è operativo e accetta transazioniSuspended, Decommissioned
SuspendedIl livello è temporaneamente in pausa (ad es. per manutenzione o per motivi di sicurezza)Active, Decommissioned
DecommissionedIl livello è definitivamente disattivato (stato terminale)Nessuna

Le transizioni di stato sono applicate dal keeper. Le transizioni non valide (ad es. da Decommissioned ad Active) vengono rifiutate.


Parametri

ParametroTipoPredefinitoDescrizione
max_sidechainsuint6410Numero massimo di sidechain attive
max_paychainsuint6450Numero massimo di paychain attive
min_anchor_intervaluint64100Blocchi minimi tra gli state anchor
max_anchor_intervaluint641,000Blocchi massimi tra gli state anchor (anchor forzato)
default_challenge_perioduint6486,400Periodo di contestazione predefinito in secondi (24 ore)
min_sidechain_stakestring1,000,000,000Stake minimo per creare una sidechain (1,000 QOR in uqor)
min_paychain_stakestring100,000,000Stake minimo per creare una paychain (100 QOR in uqor)
routing_enabledbooltrueAbilita il routing delle transazioni basato su QCAI
routing_confidence_thresholdstring0.6Confidenza minima per le decisioni di routing QCAI
cross_layer_fee_bundlingbooltrueAbilita il Cross-Layer Fee Bundling globale