Da tempo la community di Liquid ha espresso il desiderio di un node client Elements più leggero per una maggiore compatibilità con un hardware DIY off-the-shelf più conveniente. Elements 21.1.1 nasce proprio per mantenere questa promessa ottimizzando i block header di Liquid. Il nostro obiettivo rimane quello di migliorare ulteriormente l’efficienza del nodo con le prossime versioni.
Con la versione 21.1.1, i benchmark interni mostrano una riduzione di oltre il 50% della memoria utilizzata quando si ricorre a liquidv1. Snellendo alcuni dei campi degli header dalle dimensioni maggiori conservati nella memoria, siamo riusciti a ridurre l’overhead. Siamo sicuri che grazie alle nuove ottimizzazioni gli utenti potranno sfruttare al meglio l’intero stack Bitcoin (Bitcoin, Core Lightning e nodi Liquid) avendo al contempo un consumo di poco maggiore rispetto a un Raspberry Pi di 8GB.
Elements 22.1.1 include aggiornamenti alla manutenzione e piccoli accorgimenti quali:
- Correzione dei messaggi d’aiuto per getsidechaininfo RPC e testproposedblock
- Oscuramento dei campi RPC della mainchain nei log
- Utilizzo delle reti Regtest con peg-in Pay-to-Witness-Script-Hash (P2WSH)
- Correzione dell’underflow quando i block sono davanti a/in anticipo su gli header
Il team ha inoltre effettuato alcune modifiche agli asset attraverso elements-qt, tra cui consentire alla funzione “utilizza il saldo disponibile” di conservare un asset selezionato invece che tornare di default a L-BTC.
Per approfondire la nuova versione nel minimo dettaglio consulta il changelog/registro delle modifiche e facci sapere le tue opinioni o idee per apportare miglioramenti contattandoci sulla pagina Developers della community Build On L2 (BOL2).
Ottimizzare Elements (questione di Header)
Di seguito una descrizione più dettagliata delle ottimizzazioni che hanno consentito di ridurre l’overhead della memoria in Elements 21.1.1.
Come parte del funzionamento ereditato da Bitcoin Core, tutti i block header (block metadata) in Elements sono sempre conservati nella memoria. In Bitcoin, questi header sono piuttosto piccoli, pertanto non hanno particolare effetto. In Elements, invece, l’header è molto più grande per via di un block time più veloce, della durata di un minuto, DynaFed e informazioni sulla firma dei blocchi. Attualmente, la blockchain di Liquid (liquidv1) contiene circa 3x del numero di blocchi in Bitcoin.
Con in nuovi parametri trim_headers (confrontare PR #1190) abbiamo rimosso alcuni dei campi degli header di maggiori dimensioni per diminuire l’overhead di memoria complessivo ma solo dopo essere trascorso sufficiente block time, in quanto difficilmente vengono richiesti. Questo ha soprattutto effetto durante l’IBD (Initial Block Download), in quanto normalmente (Bitcoin e modalità non-trim_headers), gli header e i blocchi vengono scaricati indipendentemente, con il solo requisito che gli header siano avanti dei/in anticipo ai blocchi, così che questi ultimi possano essere validati una volta arrivati. Questa non è propriamente un’opzione per la modalità trim_headers, in quanto a) una volta tagliato/regolato non è possibile validare il blocco oppure b) non si effettua alcun taglio e si utilizza la stessa quantità di memoria di prima. La soluzione che proponiamo è quella di scaricare gli header e i blocchi più in “lockstep”, facendo sì che gli header non vadano troppo avanti dei blocchi come in passato.
Tagliando alcuni di questi campi non necessari dagli header conservati in memoria, siamo stati in grado di ridurre l’overhead. Tuttavia, i dati sul disco rimangono invariati, consentendo agli utenti di muoversi liberamente con o senza parametri.
Unisciti a BOL2 e richiedi nuove funzionalità
La piattaforma Elements rimane un download gratuito e open source per tutti coloro che intendono fondare la propria soluzione sidechain su Bitcoin. Dal suo lancio, abbiamo aggiunto nuovi opcode e funzionalità come Confidential Transactions e Issued Assets. Alcuni di questi upgrade a Elements sono anche stati implementati su Bitcoin, tra cui OP_CSV e Segregated Witness (SegWit). Simplicity, un linguaggio contrattuale smart di nuova generazione che verrà lanciato prossimamente su Liquid, rappresenta un altro possibile futuro upgrade a Bitcoin.
Dal momento che desideriamo portare avanti questa eredità, saremo lieti di ricevere dei feedback dalla community di Bitcoin per capire quali nuovi opcode e funzionalità aggiungere a Liquid. La community platform Build On L2 (BOL2) è la soluzione migliore per mettersi in contatto con l’engineering team e power user per discutere di idee e progetti.
Nel corso di questa giornata, Pablo Greco, Liquid Engineering Manager, presenterà una sessione AMA live dedicata a BOL2. Sarà un’occasione per rispondere a qualsiasi domanda da parte della community in merito al lancio della versione 22.1.1.
Non vediamo l’ora di conoscere le vostre domande e di confrontarci!