Rapport d’avancées techniques (Décembre 2020)

Texte original publié en Décembre 2020, traduit en Janvier 2021.

De nombreuses avancées ont été réalisées depuis le dernier rapport, nous souhaitons donc vous fournir les dernières mises à jour.
Voici un bref résumé de quelques étapes importantes franchies en 2020, suivi de détails particuliers sur le travail effectué au cours des derniers mois:

Lancement de Cryptopayment.link :

N’achetez pas de la crypto, gagnez-la! Le moyen le plus simple pour les freelances, les influenceurs, les propriétaires de petites entreprises et les sociétés de location de commencer à accepter la crypto dans le cadre de leur activité.

Apprenez-en plus à ce sujet dans cet article.

Vote de la courbe d’émission de Nimiq 2.0:

En préparation de Nimiq 2.0, et sur la base des nombreuses demandes de la communauté pour examiner cette question, nous avons suivi un processus minutieux qui a commencé par le partage de nos réflexions et suggestions sur ce sujet. Nous en avons ensuite discuté avec la communauté et organisé une AMA (Ask Me Anything). Par la suite, nous avons communiqué sur le fonctionnement du processus de vote et avons construit un outil de vote basé sur la blockchain Nimiq. Le premier vote s’est conclu le 18 mai 2020 par « OUI » sur un ajustement de la courbe d’offre NIM. Voir les résultats ici.

Le deuxième vote s’est conclu le le 8 juin 2020 et proposait le choix d’une courbe d’émission parmi trois courbes proposées par la Team NIMIQ.

C’est au final la courbe « BLEUE » qui a été sélectionnée.

Voir les résultats ici.

Travail sur l’anonymat (zero knowledge proof) et les « nano nœuds » (nano nodes) :


L’une des grandes forces de Nimiq sont les nano nœuds et la façon dont ils permettent à quiconque de se synchroniser et de se connecter à la blockchain à partir d’un navigateur ordinaire ou mobile en quelques secondes.

La nano-synchronisation dans Nimiq 1.0 fonctionnait en tirant parti de deux technologies: les « clients légers » et le NiPoPoW.

Nimiq 2.0 tirera parti des ZPK (zkSNARK pour être précis) pour se synchroniser en quelques secondes tout en réduisant la quantité de données qu’un utilisateur doit télécharger

Nous avons écrit une explication approfondie pour tous ceux qui sont intéressés, qui peut être trouvée dans deux articles de blog ici et ici.

Sortie du « réseau de démonstration » de Albatross:

L’équipe Blockchain s’est concentrée cette année sur le lancement du nouvel algorithme de consensus Proof-Of-Stake inventé par Nimiq, appelé Albatross. L’un des premiers jalons de cet objectif majeur a été la publication du « réseau de démonstration » et du site informatif qui l’accompagne. Sur ce site, les utilisateurs peuvent voir un réseau réel de serveurs virtuels fonctionnant à partir de différents endroits du monde et atteignant plus de 1000 TPS avec une moyenne de 1 seconde confirmations.

Sortie du site informatif Nimiq OASIS :

Au fur et à mesure que les travaux sur OASIS avancent, nous avons créé cette page sur notre site Web dans le but de fournir une source d’informations sûr aux personnes intéressées à intégrer et à écrire sur OASIS.

Sortie de Fastspot:

La première version de Fastspot est sortie, permettant les tout premiers swaps euro-crypto non-dépositaire. Le service est actuellement en version bêta fermée, nous avons partagé une démonstration vidéo du fonctionnement du swap et de l’apparence de cette fonctionnalité.

Sortie du site Fastspot:

Propulsé par OASIS, Fastspot est un service conçu par Nimiq qui permet aux utilisateurs d’effectuer des échanges directes d’actifs monétaires, cryptographiques et plus généralement d’actifs externes à la blockchain. Le site permettra aux utilisateurs d’utiliser le service et de mieux comprendre ce que sont ses avantages et ce qui reste à venir.

Détails de l’avancement des derniers mois


Les progrès sont répartis entre les sous-équipes de l’équipe Nimiq.

Équipe Front-end

Responsable de l’équipe: Sören, Développement: Matheo, Daniel et Sven.

Support du BTC:

Le support du BTC récemment publié a pris la plupart des mois d’août et de septembre pour être mis en œuvre. Comme NIM et BTC fonctionnent très différemment et que Nimiq est beaucoup plus convivial pour les développeurs, l’intégration BTC était plus difficile. Un exemple spécifique est la façon dont le portefeuille interroge le solde de BTC par rapport à Nimiq. Pour BTC, il est nécessaire d’obtenir toutes les sorties non dépensées sur toutes les adresses utilisées et de calculer le solde, tandis que dans Nimiq, l’interrogation du solde ce fait en une seule requête vers le réseau. La mise en œuvre finale tire parti du réseau Electrum alimentant le portefeuille Electrum. L’équipe front-end a fini par lire le code source de diverses bibliothèques et API de rétro-ingénierie car la documentation était limitée et il n’y avait pas de centre de développement Bitcoin. Il est intéressant de noter que le travail effectué ne prend en charge que les dernières adresses segwit (segwit natif), ce qui réduit considérablement les frais généraux, rend la mise en œuvre pérenne et minimise les frais de réseau Bitcoin. Cette décision est fortement étayée par le fait que BTC core utilise désormais le segwit natif par défaut également.

Polissage de l’API Fastspot:

Une première version de l’API Fastspot était déjà prête au moment où les développeurs Front-end ont commencé à implémenter le swap dans le portefeuille Nimiq. Cependant, l’utilisation intensive de l’API en la connectant au Wallet a révélé des améliorations en termes de documentation et d’utilisation générale. En conséquence, l’API est maintenant beaucoup plus conviviale pour les développeurs, la documentation est en constante rédaction en fonction des leçons apprises. Nous travaillons à la publication de l’API Fastspot et d’une première bibliothèque cliente prochainement. Restez à l’écoute.

Intégration du swap:

Après l’ajout du support du BTC dans le portefeuille, L’équipe Front-end s’est concentré sur l’intégration du swap basé sur Fastspot. Cette nouvelle fonctionnalité a apporté beaucoup de détails, des contraintes, de nouveaux cas de figure et une implémentation d’interface utilisateur poussée dont nous avions besoin pour nous assurer qu’elle fonctionnerait sur tous les appareils. Nous sommes très fiers des résultats finaux que vous pouvez découvrir et utiliser dès maintenant dans le portefeuille Nimiq.

Nouvelles langues:

L’équipe Frontend, avec l’aide de traducteurs communautaires, a publié le portefeuille en 3 nouvelles langues: russe, allemand et espagnol.

La boutique de bons d’achat « Bitcou » :

L’équipe Frontend a aidé le développeur derrière Miqslist et Nimiq Video Game Store à donner vie à une nouvelle boutique: le Nimiq Voucher Store, une boutique alimentée par les coupons de Bitcou. Cette boutique vous permettra d’utiliser votre NIM pour acheter dans un grand nombre de magasins à travers le monde.

Prochains objectifs :

L’équipe Front-end travaille à la sortie du swap fiat vers crypto. En parallèle, ils travaillent également à la création d’un widget Fastspot qui permettra aux projets tiers d’intégrer facilement Fastspot dans leurs applications et sites Web. Pendant que ces tâches se finalisent, des travaux sont déjà en cours pour ajouter l’ETH à Fastspot.

Équipe Blockchain

Responsable de l’équipe: Philipp Recherche: Bruno et Pascal, Développement: Janosch, Sebastian, Jeffrey et Sergio

Blocs de point de contrôle

L’équipe blockchain a travaillé sur une nouvelle hiérarchie de blocs pour Albatross:

  1. Blocs électoraux
  2. Blocs de point de contrôle
  3. Micro blocs

La conception précédente d’Albatross impliquait deux types de blocs: des micro-blocs qui contiennent des transactions et des macro-blocs qui fournissent la finalité et déterminent un nouvel ensemble de validateurs. «Finalité» signifie que les transactions ne peuvent plus être modifiées ou annulées. Il est souhaitable que les transactions atteignent rapidement leur finalité afin de fournir une garantie au destinataire. D’un autre côté, changer le jeu de validateurs trop fréquemment est problématique car cela ralentit le processus de synchronisation de deux manières: il est coûteux en calcul de créer de nouveaux blocs électoraux et tous les blocs électoraux doivent être téléchargés pour une synchronisation complète, donc plus de blocs signifie plus de temps pour la synchronisation.

Pour améliorer ces deux points en même temps, l’équipe blockchain a remplacé les blocs macro par des blocs de points de contrôle et des blocs électoraux. Les blocs de points de contrôle ne fournissent que la finalité tandis que les blocs d’élection déterminent également un nouvel ensemble de validateurs. Les blocs de points de contrôle seront construits environ toutes les 5 minutes et ainsi les transactions atteindront rapidement leur finalité. Les blocs électoraux seront construits environ toutes les 12 heures et ouvriront ainsi la voie à une synchronisation rapide.

L’arborescence de l’historique

Ce point a été l’objectif de Pascal ces derniers mois. Lorsque les nœuds Nimiq téléchargent l’historique de la blockchain, ils s’intéressent aux changements d’état tout en évitant de synchroniser tous les micro-blocs qui entraîneraient des volumes de téléchargement élevées. La nouvelle arborescence d’historique permet aux nœuds de télécharger des morceaux vérifiables à partir de pairs. Actuellement, le hachage de bloc est une arborescence qui inclut les hachages de transaction. Le nouvel arbre d’historique est une structure arborescente qui contient tous les changements d’état qui font partie du bloc d’élection. Un nœud n’a alors besoin que d’un bloc d’élection et le chemin dans l’arborescence pour prouver qu’une transaction en fait partie; vous ne téléchargez donc que des morceaux et une preuve cryptographique. L’arbre d’historique utilise MMR (Merkle Mountain Ranges) et est une structure de données ajoutée uniquement, mais ajoutée de manière efficace et rapide. Étant une technologie de pointe, il n’y avait pas de bibliothèque disponible sur laquelle puiser. Au lieu de cela, l’équipe a dû implémenter elle-même les MMR et a ainsi contribué au monde de la crypto-monnaie open source.

Synchronisation de l’historique

Ce point fait également partie du travail de Pascal. Comme indiqué précédemment, l’arborescence de l’historique est une structure de données qui contient l’historique de la blockchain. Le processus de synchronisation de l’historique télécharge des blocs et des données à partir de l’arborescence de l’historique. Pour optimiser davantage cette opération, Pascal a créé un moyen efficace de télécharger toutes les structures de données plus petites qui composent l’arborescence de l’historique. La synchronisation de l’historique est effectuée de manière ordonnée, d’abord les blocs d’élection, puis les blocs de point de contrôle.

Tendermint and Handel

Ce point vous est présenté par Sebastian et Bruno. Comme vous le savez peut-être, Tendermint est un protocole BFT (Byzantine Fault Tolerance) pour obtenir un consensus. Auparavant, l’équipe a commencé par utiliser pBFT, mais a ensuite décidé d’opter pour Tendermint car pBFT avait certaines limites lorsqu’il était utilisé dans une blockchain. Parallèlement au passage à Tendermint, Haendel a également dû être adapté. Comme l’explique Janosch dans cette vidéo, Handel est un protocole d’agrégation de signatures qui, comme son nom l’indique, agrège et diffuse les signatures. Comme Nimiq 2.0 aura 512 validateurs, les avoir tous communiquant entre eux n’est pas efficace. La solution consiste à regrouper les validateurs afin que les messages soient partagés entre les groupes, où chaque groupe regroupe déjà les signatures des validateurs au sein de ce groupe avant de les partager avec d’autres groupes. Cette méthode réduit l’utilisation de la bande passante et améliore la vitesse de propagation. Et en plus de cela, Handel est un protocole générique qui aidera également à optimiser les changements de vue dans Nimiq 2.0.

LibP2P

Sergio et Janosch se sont associés pour ce travail. Depuis août, ils remplacent soigneusement l’implémentation réseau actuelle de Nimiq 1.0 par LibP2P. Cela profite du gros travail effectué par Protocol Labs sur LibP2P. Ils utilisent l’implémentation Rust de LibP2P et, comme ce n’est pas fait sur mesure pour Nimiq, ils adaptent le score des pairs pour répondre à nos besoins. Une grande partie de cette tâche est effectuée, telle que l’achèvement de l’interface réseau, maintenant le processus d’intégration a commencé.

OASIS

Philipp a notamment préparé l’implémentation d’OASIS (Open Asset Swap Interaction Scheme) pour un cas d’utilisation que nous avons remarqué pourrait être très intéressant: utiliser OASIS pour les plates-formes OTC. En général, cela inclut OASIS permettant aux bureaux OTC d’authentifier et de fixer des frais et des limites spécifiques pour leurs clients. Les tâches suivantes comprennent l’intégration du compte bancaire séquestre officiel TEN31 (WEG Bank), la mise en place de l’infrastructure de production et la rédaction d’une documentation très détaillée pour être prêt pour les audits des autorités allemandes. Le sujet de la documentation est extrêmement important car OASIS utilise une entité réglementée, à savoir la banque TEN31. Pour se conformer à la réglementation, il n’y a pas de changements nécessaires dans le code, mais en fait dans la documentation et les processus. L’effort final de configuration d’OASIS réside dans le temps de disponibilité / disponibilité extrêmement élevé du service pour garantir le bon fonctionnement des swaps atomiques. Cela comprendra des tests avec l’infrastructure réelle une fois prêts.

Amélioration du Serveur RPC

Janosch a travaillé sur cette tâche spécifique. La dernière version du serveur RPC prend désormais en charge les « WebSocket », ce qui permet aux événements d’être poussés et d’arriver via des abonnements au lieu d’interroger, ce qui se traduit par une plus grande efficacité. Le travail est toujours en cours et a une faible priorité puisque l’accent actuel est mis sur le Testnet « Albatross Aurora » .


Nettoyage du code et suppression du code de la version 1.0

L’idée initiale de l’équipe Blockchain était de permettre au client de communiquer avec les nœuds 1.0 et 2.0 à des fins de transition, mais en août, cela s’est avéré non viable et a abouti à la publication d’un nouveau plan de transition. La conclusion est que le code de Nimiq 1.0 dans Albatross est désormais inutile et peut être supprimé pour rendre la base de code plus propre et allégée.


Refactoriser le modèle observable pour utiliser des flux

Toute l’équipe blockchain a changé sa façon de coder Nimiq 2.0. Nimiq 1.0 a été initialement écrit en JavaScript qui est piloté par les événements. La mise en œuvre initiale de Rust suivait la même approche. Mais Rust a des structures plus efficaces appelées «flux» qui évitent «l’enfer des événements», rationalisent le code et facilitent le débogage. Ils suivent le schéma « producteur ➜ flux ➜ consommateur » – « recevoir un micro-bloc ➜ l’ajouter à vos données, voir si vous êtes le prochain validateur ➜ répondre au réseau ». Cela se traduit par un processus propre et linéaire, rendant le code plus simple et la maintenance plus facile tout en permettant également d’implémenter des fonctionnalités plus avancées qui n’étaient pas possibles avec le modèle observable. La plupart des efforts sont déjà faits et d’autres mises à jour dans ce sens seront effectuées à la volée chaque fois que d’autres parties du code sont modifiées.

Conclusion

Certaines tâches ont été plus difficiles que prévu. Travailler avec une technologie de pointe innovante est comparable à tirer sur une cible mouvante et nous met au défi d’inconnues inconnues auxquelles nous nous attaquons au fur et à mesure qu’elles se révèlent. Cela a entraîné des retards inattendus, mais beaucoup de progrès ont été réalisés. L’équipe Nimiq reste concentrée sur la livraison de la prochaine version de Nimiq et des nouveaux produits passionnants construits autour de Nimiq OASIS. Comme toujours, nous apprécions d’avoir une si grande communauté de notre côté qui nous accompagne dans ce voyage. Allez Nimiq!

Pura Vida,

Team Nimiq

DISCLAIMER: Aucune des déclarations ne doit être considérée comme une approbation ou une recommandation pour Nimiq, une crypto-monnaie ou un produit d'investissement. Ni les informations, ni les opinions contenues dans ce document ne constituent une sollicitation ou une offre par les créateurs ou participants d'acheter ou de vendre des titres ou d'autres instruments financiers ou de fournir des conseils ou des services d'investissement.