Passa al contenuto principale

BTC Restaking (Babylon)

Il modulo x/babylon integra QoreChain con il Babylon Protocol per ereditare le garanzie di finalità basate sulla proof-of-work di Bitcoin. Attraverso il restaking di BTC, QoreChain acquisisce un livello di finalità secondario supportato dall'hashrate di Bitcoin — senza richiedere alcuna modifica al protocollo Bitcoin stesso.

Panoramica

Il Babylon Protocol consente alle chain proof-of-stake di sfruttare la sicurezza di Bitcoin attraverso un meccanismo di timestamping e checkpointing. L'integrazione di QoreChain funziona come segue:

  1. Gli staker di BTC bloccano Bitcoin in transazioni di staking Babylon e registrano le loro posizioni su QoreChain.
  2. I checkpoint delle epoche di QoreChain vengono periodicamente inoltrati a Babylon, che li registra con timestamp su Bitcoin.
  3. Ereditarietà della finalità: Una volta che un'epoca di QoreChain è inserita in un checkpoint su Bitcoin, lo stato coperto da quell'epoca eredita le garanzie di finalità basate sulla proof-of-work di Bitcoin.

Questo fornisce una difesa contro attacchi long-range ed equivocazione che è ancorata all'hashrate accumulato di Bitcoin anziché fare affidamento esclusivamente sul set di validatori di QoreChain.

Posizioni di staking BTC

Gli utenti possono registrare posizioni di staking BTC su QoreChain inviando una transazione MsgBTCRestake che fa riferimento a una transazione di staking Bitcoin.

Requisiti di registrazione

ParametroValoreDescrizione
Stake minimo100.000 satoshi (0,001 BTC)BTC minimo richiesto per posizione di staking
Periodo di unbonding144 blocchi BTC (~1 giorno)Periodo di attesa prima che i BTC in staking possano essere prelevati
Intervallo di checkpointOgni 10 epoche di QoreChainFrequenza con cui lo stato viene inserito in checkpoint su Babylon

Struttura della posizione di staking

Ogni posizione di staking BTC traccia il seguente stato on-chain:

CampoDescrizione
staker_addressIndirizzo QoreChain dello staker (qor1...)
btc_tx_hashHash della transazione Bitcoin della transazione di staking
amount_satoshisQuantità di BTC in staking in satoshi
statusStato del ciclo di vita della posizione: active, unbonding o withdrawn
staked_atTimestamp della registrazione della posizione
unbonding_heightAltezza del blocco in cui è stato avviato l'unbonding (se applicabile)
validator_addrIndirizzo del validatore QoreChain a cui è delegato questo stake

Flusso di registrazione

  1. Crea la transazione di staking BTC — Sulla rete Bitcoin, crea la transazione di staking BTC.
  2. Invia MsgBTCRestake su QoreChain — Su QoreChain, invia MsgBTCRestake con btc_tx_hash, amount e validator.
  3. Posizione registrata — La posizione viene registrata on-chain come "active".

Checkpoint delle epoche

I root di stato delle epoche di QoreChain vengono periodicamente inseriti in checkpoint su Bitcoin attraverso la chain di relay Babylon.

Flusso di checkpoint

  1. Invia il checkpoint — Un validatore QoreChain invia MsgSubmitBTCCheckpoint contenente il numero dell'epoca, l'hash del blocco BTC, l'altezza del blocco BTC e il root di stato di QoreChain.
  2. Relay IBC — I dati del checkpoint vengono inoltrati alla chain Babylon tramite IBC.
  3. Timestamping su Bitcoin — Babylon include il checkpoint in una transazione Bitcoin, ancorando lo stato di QoreChain alla blockchain di Bitcoin.
  4. Conferma — Una volta confermata la transazione Bitcoin, la finalità ritorna attraverso Babylon a QoreChain.
  5. Finalizzazione — Lo stato del checkpoint passa da pending a confirmed a finalized.

Struttura del checkpoint

CampoDescrizione
epoch_numNumero dell'epoca di QoreChain in fase di checkpoint
btc_block_hashHash del blocco Bitcoin contenente il checkpoint
btc_block_heightAltezza del blocco Bitcoin
state_rootRoot di stato di QoreChain al confine dell'epoca
submitted_atTimestamp dell'invio del checkpoint
statusStato del checkpoint: pending, confirmed o finalized

Snapshot delle epoche

A ogni confine di checkpoint, uno snapshot dell'epoca cattura lo stato aggregato della rete:

CampoDescrizione
total_stakedTotale BTC in staking su tutte le posizioni (satoshi)
active_positionsNumero di posizioni di staking attive
validator_countNumero di validatori con deleghe supportate da BTC
block_heightAltezza del blocco di QoreChain allo snapshot

Livello di finalità secondario

L'integrazione con Babylon fornisce una garanzia di finalità secondaria che integra la finalità di consenso nativa di QoreChain:

Livello di finalitàFonteVelocitàSicurezza
PrimarioMotore di Consenso QoreChain~5 secondiSupportato da stake QOR + firme PQC
SecondarioBabylon + Bitcoin~60 minutiSupportato dall'hashrate cumulativo di Bitcoin

Il livello secondario è particolarmente prezioso per:

  • Prevenzione degli attacchi long-range: Anche se un attaccante accumulasse uno stake significativo in QOR, non potrebbe riscrivere la storia che è stata inserita in checkpoint su Bitcoin.
  • Sicurezza del bridge cross-chain: Le operazioni del bridge che coinvolgono valori elevati possono attendere la finalità a livello Bitcoin prima di rilasciare i fondi.
  • Fiducia istituzionale: Il timestamp Bitcoin fornisce una prova verificabile in modo indipendente della storia dello stato di QoreChain.

Configurazione

ParametroPredefinitoDescrizione
enabledfalseInterruttore principale per le funzionalità di restaking BTC
min_stake_amount100.000 satoshiBTC minimo per posizione di staking
unbonding_period144 blocchi BTCDurata dell'unbonding denominata in BTC
checkpoint_interval10 epocheEpoche tra i checkpoint Babylon
babylon_chain_idbbn-1Chain ID della rete Babylon connessa

Eventi

Il modulo emette i seguenti eventi on-chain:

Tipo di eventoAttributiDescrizione
btc_restakestaker, btc_tx_hash, amount, validatorNuova posizione di staking BTC registrata
btc_unbondstaker, amountPosizione di staking BTC entrata in unbonding
btc_checkpointepoch, checkpoint_idCheckpoint dell'epoca inviato a Babylon
babylon_epoch_completeepochEpoca Babylon finalizzata con timestamp Bitcoin

Endpoint API

REST

MetodoEndpointDescrizione
GET/babylon/v1/staking/{address}Ottiene le posizioni di staking BTC per un indirizzo
GET/babylon/v1/checkpoint/{epoch}Ottiene i dati del checkpoint per un'epoca specifica
GET/babylon/v1/paramsOttiene i parametri di configurazione del modulo

JSON-RPC

MetodoParametriDescrizione
qor_getBTCStakingPositionaddress (string)Restituisce la posizione di staking BTC per il dato indirizzo QoreChain

Comandi CLI

Comandi di query

# Query BTC restaking configuration
qorechaind query babylon config

# Query a staking position by address
qorechaind query babylon position <staker-address>

Comandi di transazione

# Register a BTC restaking position
qorechaind tx babylon restake \
--btc-tx-hash <hash> \
--amount-satoshis <amount> \
--validator <qorvaloper1...> \
--from <key-name>

# Submit a BTC checkpoint
qorechaind tx babylon submit-checkpoint \
--epoch <epoch-number> \
--btc-block-hash <hash> \
--btc-block-height <height> \
--state-root <root> \
--from <key-name>