Elements 22.1.1 : Optimisez votre nœud pour le matériel moins performant
Elements Liquid Network

Elements 22.1.1 : Optimisez votre nœud pour le matériel moins performant

Blockstream Team

La communauté Liquid demande depuis longtemps un client Elements optimisé pour une meilleure compatibilité avec les nœuds roulant sur de petits ordinateurs moins performant. Elements 21.1.1 est une première étape en ce sens. Cette version optimise les en-têtes de bloc de Liquid, et nous prévoyons d'optimiser encore davantage l'efficacité du code dans les prochaines versions.

Avec la version 21.1.1, nos mesures internes montrent une réduction de plus de 50 % de l'utilisation de la mémoire lors de l'exécution de liquidv1. En réduisant certains des champs d'en-tête les plus volumineux, nous avons pu réduire la demande en espace mémoire. Grâce à ces nouvelles optimisations, nous sommes convaincus que les utilisateurs peuvent désormais exploiter simultanément l'ensemble de la pile Bitcoin (c'est-à-dire Bitcoin, Core Lightning et les nœuds Liquid) avec une puissance à peine supérieure à celle d'un Raspberry Pi de 8 Go.

La mise à jour d’Elements 22.1.1 contient également des corrections mineures :

  • Correction des messages d'aide pour getsidechaininfo RPC et testproposedblock
  • Obfuscation des champs RPC de la chaîne principale dans les journaux
  • Permettre le déploiement de réseaux Regtest avec des peg-ins de type Pay-to-Witness-Script-Hash (P2WSH)
  • Correction d'un soupassement de capacité lorsque les blocs précèdent les en-têtes

L'équipe a également apporté plusieurs modifications aux actifs via le elements-qt, notamment en faisant en sorte que l'option "utiliser le solde disponible" conserve un actif sélectionné, au lieu de revenir par défaut au L-BTC.

Pour en savoir plus sur cette version, consultez la liste complète des modifications et dites-nous ce que vous aimez ou ce que nous pourrions améliorer en nous contactant sur la page Développeurs de la communauté Build On L2 (BOL2).

Optimiser Elements (tout est dans l'en-tête)

Voici en détail les optimisations qui ont permis la réduction de la charge mémoire dans les éléments 21.1.1.

Tous les en-têtes de bloc (métadonnées de bloc) dans Elements sont conservés en mémoire en permanence, de par le comportement hérité de Bitcoin Core. Dans Bitcoin, ces en-têtes sont relativement petits, donc ils n'ont pas beaucoup d'effet, mais dans Elements, l'en-tête est beaucoup plus volumineux en raison de la rapidité du “bloc time” (une minute), de DynaFed et des informations de signature. Actuellement, la chaîne de blocs Liquid (liquidv1) contient environ trois fois plus de blocs que Bitcoin.

Avec les nouveaux paramètres trim_headers (voir PR #1190), nous avons supprimé certains des champs d'en-tête les plus volumineux afin de réduire l'encombrement global de la mémoire, mais seulement après qu'un temps de bloc suffisant se soit écoulé. Cela a un effet particulier pendant le téléchargement du bloc initial (IBD) car normalement (mode Bitcoin et non-trim_headers), les en-têtes et les blocs sont téléchargés indépendamment, avec la seule exigence que les en-têtes soient avant les blocs, de sorte que les blocs puissent être validés lorsqu'ils arrivent ; ce n'est pas vraiment une option pour le mode trim_headers, parce que soit a) vous les enlevez et ne pouvez pas valider le bloc, soit b) vous ne les enlevez pas et utilisez autant de mémoire qu'avant. Notre solution consiste à télécharger les en-têtes et les blocs en "lockstep", ce qui signifie que les en-têtes ne peuvent pas prendre trop d'avance sur les blocs comme c'était le cas auparavant.

En supprimant certains de ces champs inutiles conservés en mémoire, nous avons pu réduire l’espace requis. Les données sur le disque restent toutefois inchangées, permettant d’utiliser ou non cette fonction.

Consommation de mémoire après la synchronisation (IBD) avec des tests exécutés sur une VM de 8 Go de RAM et 4 Go de Swap.

Rejoignez BOL2 et suggérez nous des améliorations

La plateforme Elements est gratuite et open-source permettant à chacun de mettre en place sa propre solution de sidechain au-dessus de Bitcoin. Depuis sa sortie initiale, nous avons ajouté de nouveaux opcodes et des fonctionnalités telles que Confidential Transactions et Issued Assets. Certaines de ces mises à jour d'Elements ont même été appliquées Bitcoin, notamment OP_CSV et Segregated Witness (SegWit). Simplicity, un langage de contrat intelligent de nouvelle génération dont la sortie est prévue dans le courant de l'année sur Liquid, est une autre mise à jour possible pour Bitcoin à l'avenir.

Nous souhaitons perpétuer cet héritage et accueillons avec plaisir les commentaires de la communauté Bitcoin sur les nouveaux opcodes et les nouvelles fonctionnalités à ajouter à Liquid. La plateforme communautaire Build On L2 (BOL2) est le meilleur moyen de contacter l'équipe d'ingénieurs et de collaborer avec d'autres utilisateurs de Liquid pour discuter de nouvelles idées et de nouveaux projets.

Plus tard dans la journée, Pablo Greco, responsable de l'ingénierie chez Liquid, animera un AMA en direct sur BOL2 et répondra à toutes les questions de la communauté sur la version 22.1.1.

Nous nous réjouissons de répondre à vos questions et de discuter avec vous !

If you have specific preferences, please, mark the topic(s) you would like to read: