Scopri di più sull'aggiornamento v1.16 di Solana, l'ultimo aggiornamento del client di convalida Solana Labs

Di cosa parla questo articolo?
La rete di validatori di Solana ha raggiunto con successo una super-maggioranza nell'adozione della versione 1.16, l'ultimo aggiornamento del client di validazione di Solana Labs. Dopo un periodo esaustivo di auditing, rafforzato dagli sforzi dedicati di volontari e nodi canary, questa pietra miliare è il culmine di quasi dieci mesi di rigoroso sviluppo.
Nelle sezioni seguenti, approfondiremo il modo in cui è stata testata la v1.16 e il feature gate system di Solana; un framework che regola il modo in cui le nuove funzionalità vengono gradualmente introdotte nella rete. Poi passeremo alle nuove funzionalità implementate nella v1.16.
Come è stata testata la versione v1.16
La versione v1.16 è stata sottoposta a rigorosi test negli ultimi mesi. La versione v1.16 è in esecuzione su testnet dal 7 giugno 2023 ed è stata sottoposta a numerosi stress test. Inoltre, un piccolo sottoinsieme di nodi volontari è stato aggiornato alla versione v1.16 a partire dal 23 agosto 2023. Questi volontari sono stati in grado di identificare e risolvere vari problemi, come l'avvio lento dei nodi RPC e guasti di protezione generali. Solana Labs ha anche distribuito diversi nodi canary su mainnet-beta. Ciò è stato fatto per monitorare la stabilità dei nodi v1.16 in condizioni reali. Per vedere l'attività passata e i progressi compiuti da questi nodi canary, visita il canale #canaries-monitoring nel Discord di Solana Tech.
Per catturare casi limite o condizioni di gara poco frequenti, sono stati utilizzati più fuzzer di runtime per eseguire transazioni parzialmente randomizzate. Queste transazioni sono state eseguite su diverse versioni di runtime per garantire prestazioni coerenti. Anche la versione v1.16 è stata ampiamente verificata da Halborn. I report di verifica vengono pubblicati in questo repository man mano che diventano disponibili nel tempo.
Cancelli di funzionalità
È importante notare che alcune delle funzionalità che discuteremo nelle sezioni seguenti non sono attualmente attive. Invece, le funzionalità vengono lentamente implementate utilizzando un sistema di feature gate. Le funzionalità vengono attivate in determinate epoche in base alla priorità relativa e all'ordine in cui sono state attivate su altre reti. La pianificazione dell'attivazione dei feature gate è stata finora ad hoc in base a un elenco di criteri, che puoi trovare qui. In sostanza, questi gate dovrebbero essere attivati prima su tesnet, seguiti da devnet e infine su mainnet-beta. Per attivare una funzionalità, un ingegnere con la coppia di chiavi di attivazione richiesta invia una transazione che viene elaborata e rende la funzionalità attiva nell'epoca successiva. Deve essere attivato solo un feature gate alla volta per rete per garantire prestazioni adeguate. È importante notare che alcune funzionalità potrebbero richiedere un periodo di "soak", che potrebbe ritardare l'attivazione di gate con priorità inferiore.
Questo sistema di feature gate è in atto per garantire che le modifiche che rompono il consenso non facciano sì che un validatore che esegue una versione più recente si stacchi dalla catena canonica e continui a produrre blocchi. Ad esempio, un validatore v1.14 non è a conoscenza delle nuove funzionalità v1.16 e potrebbe bloccare la rete quando sorgono controversie. Un commit unito questa settimana alla base di codice di Solana incoraggia tutte le modifiche che rompono il consenso ad avere un Solana Improvement Document (SIMD). Il modello di problema del feature gate includerà ora una richiesta al SIMD del problema. Ciò aiuta a standardizzare il processo di sviluppo e fornisce una maggiore trasparenza tramite la documentazione delle nuove modifiche.
Trasferimenti riservati
Confidential Transfers, una funzionalità introdotta da Token2022, utilizza prove a conoscenza zero per crittografare i saldi e gli importi delle transazioni dei token SPL. L'obiettivo principale di questa funzionalità è migliorare la privacy degli utenti attraverso una rinomata enfasi sulla riservatezza piuttosto che sull'anonimato.
I trasferimenti riservati sfruttano la crittografia Twisted ElGamal per operazioni matematiche sugli importi crittografati. Questi trasferimenti vengono convalidati utilizzando i protocolli Sigma, una categoria specializzata di prove a conoscenza zero in cui una parte (il dimostratore) può dimostrare a un'altra parte (il verificatore) di essere a conoscenza di un certo segreto senza effettivamente rivelare il segreto stesso. Assicurati di leggere il nostro articolo Cos'è Token2022? per un'analisi più approfondita delle complessità dei trasferimenti riservati.
Una bella funzionalità che accompagna il lancio di Confidential Transfers è l'aggiunta del supporto Command Line Interface (CLI). Il comando create-token è stato esteso per includere un flag --enable-confidential-transfers, che consente agli utenti di coniare token con trasferimenti riservati abilitati. Inoltre, è stato aggiunto il comando update-confidential-transfer-settings per abilitare modifiche dinamiche alle configurazioni di trasferimento riservato per un dato mint. Ciò consente di aggiornare la chiave dell'auditor e le impostazioni di approvazione.

Miglior supporto runtime per le dimostrazioni a conoscenza zero
La versione v1.16 potenzia le capacità di conoscenza zero di Solana con un supporto runtime migliorato per calcoli a conoscenza zero, in particolare operazioni su curve ellittiche a 128 bit. La versione v1.16 introduce le chiamate di sistema alt_bn128, fondamentali per generare prove in modo efficiente.
alt_bn128 si riferisce a un'implementazione specifica di una curva ellittica utilizzata per operazioni crittografiche nota come curva Barreto-Naehrig (BN-128). BN-128 è un tipo specifico di curva ellittica pairing-friendly che consente l'implementazione efficiente di zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). Per inciso, una curva ellittica è considerata "pairing-friendly" se consente di eseguire determinati calcoli in modo più efficiente. Quindi, nel nostro caso, l'utilizzo della curva BN-128 rende il lavoro con matematica e dimostrazioni a conoscenza zero molto più veloce.
Syscall, o chiamata di sistema, viene utilizzata per richiedere servizi dal kernel del sistema operativo. Nel contesto di Solana, una syscall consente ai programmi in esecuzione nella Solana Virtual Machine (SVM) di interagire con risorse esterne.
Una syscall alt_bn128, quindi, è una chiamata che i programmi Solana possono usare per interagire con la curva BN-128 altamente efficiente. Ciò semplifica la verifica delle prove a conoscenza zero, offrendo migliori funzionalità di sicurezza e privacy su Solana. Di recente sono state aggiunte anche le syscall alt_bn128 g1 e g2, che consentono la compressione delle prove Groth16. Ciò è importante poiché questi tipi di prove occupano 256 byte di dati di istruzioni per prova e i programmi Solana privati (PSP) devono attualmente verificare due prove Groth16. Con la compressione g1 e g2, i byte richiesti per prova possono essere dimezzati a 128 byte, il che è fondamentale per l'efficienza dello spazio.
Inoltre, i contratti basati su Solidity presentano problemi di compatibilità con Solana se contengono chiamate ai seguenti contratti precompilati per operazioni su curve ellittiche:
bn256Add - Esegue l'addizione sulle operazioni della curva ellittica
bn256ScalarMult - Esegue la moltiplicazione scalare sulle operazioni di curva ellittica
bn256Pairing - Operazioni di accoppiamento di curve ellittiche per eseguire la verifica zkSNARKs entro il limite del gas del blocco
Queste operazioni sono standardizzate su Ethereum tramite EIP-196, EIP-197 ed EIP-198. L'introduzione delle syscall alt_bn128 rappresenta un passo significativo verso la riduzione del divario di compatibilità. I contratti Solidity che si basano su queste operazioni di curve ellittiche potrebbero ora trovare più facile la transizione o persino l'interoperabilità con Solana.
L'inclusione della syscall alt_bn128 nell'aggiornamento v1.16 di Solana segna un importante progresso nella capacità di Solana di gestire in modo efficiente e sicuro le dimostrazioni a conoscenza zero.