Cos'è un Canale Privato?
Un canale privato è una rete di pagamento off-chain ancorata a Solana. Gli utenti depositano token SPL in un programma di escrow on-chain, quindi effettuano transazioni off-chain tramite un gateway ad alta velocità e senza costi per trasferimento. Il regolamento su Solana Mainnet avviene tramite una prova Sparse Merkle Tree, garantendo che i fondi siano sempre riscattabili e che il doppio pagamento sia impossibile.
A differenza del flusso di pagamento nativo di Solana, i trasferimenti all'interno di un canale non compaiono on-chain finché un utente non effettua un prelievo. La rete del canale gestisce una propria pipeline di transazioni (dedup -> sig verify -> sequencer -> executor -> settler) che elabora le transazioni indipendentemente dal tempo di blocco di Solana.
Partecipanti
Admin dell'Istanza
L'admin distribuisce il PDA Instance tramite CreateInstance e controlla quali mint di token SPL vengono accettati (AllowMint / BlockMint). L'admin assegna e revoca gli operatori tramite AddOperator / RemoveOperator, e può trasferire i diritti di amministrazione tramite SetNewAdmin. Esiste un solo admin per istanza. Il trasferimento dei diritti di amministrazione è irreversibile in un unico passaggio: l'admin corrente non può rivendicare il ruolo senza la cooperazione del nuovo admin.
Operatori
Gli operatori vengono assegnati dall'admin. Detengono un PDA Operator e sono gli unici account autorizzati a chiamare ReleaseFunds (per regolare i prelievi su Mainnet) e ResetSmtRoot (per ruotare lo Sparse Merkle Tree). Gli operatori bypassano tutti i controlli di proprietà nel gateway e hanno accesso a tutti i metodi JSON-RPC, inclusi getBlock, getTransaction e simulateTransaction. Ruolo JWT: "operator". Gli operatori devono essere assegnati direttamente nel database; non è prevista alcuna escalation self-service. Consulta la
guida agli Operatori per i dettagli su distribuzione e
configurazione.
Utenti
Gli utenti si registrano autonomamente tramite il Servizio di Autenticazione. Ruolo JWT: "user". Gli utenti possono chiamare Deposit direttamente sull'Escrow Program e avviare prelievi tramite l'istruzione WithdrawFunds lato canale sul Withdraw Program. L'accesso al gateway è limitato ai propri wallet verificati; non possono chiamare getBlock, getTransaction o simulateTransaction.
Ciclo di Vita del Canale
- Creazione dell'istanza - L'admin chiama
CreateInstance, creando il PDAInstancee configurando i mint consentiti. - Deposito - Gli utenti depositano token SPL nell'escrow tramite l'istruzione
Deposit. I token vengono trasferiti nell'associated token account dell'istanza. - Trasferimenti off-chain - Gli utenti inviano trasferimenti tramite il gateway. I trasferimenti vengono sequenziati ed eseguiti sulla rete del canale senza coinvolgere Mainnet.
- Avvio del prelievo - Un utente chiama
WithdrawFundssul Withdraw Program (lato canale) per bruciare il proprio saldo e segnalare un prelievo. - Regolamento su Mainnet - Un operatore fornisce una prova di esclusione SMT valida e
chiama
ReleaseFundssull'Escrow Program (Mainnet), rilasciando i token al wallet dell'utente. - Rotazione dell'albero - Quando lo SMT si avvicina alla capacità massima (65.536 foglie), l'operatore chiama
ResetSmtRootper ruotare l'albero e avviare un nuovo epoch.
Trasferimento
Prelievo
Quando Utilizzare i Canali Privati
Utilizza i canali privati quando la tua applicazione necessita di:
- Throughput off-chain - il volume dei trasferimenti saturerebbe i TPS di Solana o hai bisogno di conferme in tempi inferiori al secondo
- Privacy - le identità delle controparti e gli importi dei trasferimenti non devono comparire on-chain
- Zero commissioni per trasferimento - trasferimenti frequenti in cui il costo in SOL per transazione è proibitivo
Utilizza invece i trasferimenti SPL nativi quando:
- La componibilità on-chain è necessaria (DeFi, swap, prestiti; altri programmi devono poter osservare o agire sul trasferimento)
- Il regolamento con trasferimento singolo è accettabile e la privacy non è un requisito
- Nessuna infrastruttura gateway è disponibile o operativamente realizzabile
Is this page helpful?