Anthony Papavassiliou
Ultra
Published in
7 min readSep 24, 2020

--

L’équipe blockchain d’Ultra a connu des mois à la fois extrêmement chargés et passionnants, avec comme objectif principal de tester et optimiser le code de base de l’Ultra Blockchain.

EOSIO est un excellent logiciel open source que nous avons le privilège d’utiliser comme base de la blockchain d’Ultra.

Comme nous en avons discuté dans un de nos articles précédents, de nombreuses améliorations et mises à jour ont été apportées par notre équipe à la version vanilla d’EOSIO. Ces changements devaient être réalisés car ils ont été effectués dans le but de fournir des solutions prêtes pour le marché de masse qu’EOSIO ne peut pas fournir, telles que la création de compte gratuite et une puissante gestion des ressources utilisateur qui rend possible des transactions blockchain sans aucune friction.

Nous voulons un système qui puisse résister à toute épreuve et cela a nécessité de la recherche et des analyses approfondies.

Fournir la meilleure technologie grâce à des tests rigoureux

Pour garantir que ces fonctionnalités soient correctement implémentées et intégrées, nous devons effectuer des tests internes approfondis. Ce benchmarking permet de nous assurer que ce que nous finissons par utiliser est à l’épreuve du feu et nous donne la confiance nécessaire pour continuer à déployer une plateforme fiable et sécuritaire.

Les méthodologies habituelles de benchmarking des déploiements EOSIO se sont avérées insuffisantes pour nos besoins. Les outils à notre disposition ne nous ont tout simplement pas permis de produire suffisamment de transactions sur le réseau pour remplir notre nouveau mécanisme de file d’attente, ce qui ne nous permettait pas de saturer le réseau. Nous avions besoin d’outils à la hauteur, nous les avons donc construits.

La première de ces innovations est un plugin compatible EOSIO et dédié au benchmarking qui nous permet d’effectuer des transactions à un rythme sans précédent. Nous pouvons transmettre les données sur notre chaîne plus rapidement que n’importe quel concurrent n’a pu le faire jusqu’à présent, ce qui entraîne des facteurs de stress uniques qui nous permettent de simuler des applications du monde réel. Nous avons porté ce plugin sur EOSIO Vanilla pour nous permettre de comparer des pommes avec des pommes entre les deux déploiements. Notre objectif était d’effectuer les mêmes benchmarks sur le même matériel pour EOSIO et la blockchain d’Ultra afin que nous puissions évaluer avec précision comment notre code se compare à la concurrence.

Aux côtés de notre recherche dédiée aux benchmarks, nous avons également implémenté des API personnalisées qui nous permettent de préparer puis d’effectuer des transactions qui génèrent automatiquement des comptes de test, définissent leurs soldes et gèrent le staking des ressources pour chaque compte (CPU / NET vs Ultra Power). L’automatisation de ces fonctionnalités fournit une base précise sur laquelle nous pouvons effectuer nos tests et évaluer le comportement de notre réseau en prévision de la sortie de notre plateforme gaming en fin d’année.

Additionnellement, nous avons élaboré un moyen de générer des rapports basés sur les benchmarks que nous avons effectués pour différents types de fonctionnalités. Cela nous a permis de partager ces données en interne et de prendre des décisions intelligentes sur les améliorations techniques à apporter. Cela a été extrêmement utile pour déceler et corriger les comportements inattendus que nous avons rencontrés pendant le processus de test.

Une fois ces tests terminés, nous avons été en mesure de sélectionner scientifiquement les exigences optimales pour l’infrastructure de nos producteurs de blocs, ce qui nous permet de transmettre en toute confiance une quantité énorme de transactions sur le réseau d’Ultra. Cela nous a également permis d’examiner en profondeur les changements que nous avons apportés afin qu’il n’y ait pas de surprises qui pourraient avoir échappé à notre radar en raison des modifications importantes que nous avons apportées aux protocoles système d’origine.

Méthodologie

Pour chaque test, nous créons une nouvelle chaîne sur une série de serveurs haute capacité directement sous le contrôle d’Ultra. Ensuite, en utilisant nos API personnalisées pour les créer et les gérer, nous avons configuré 100 000 comptes avec diverses configurations de distribution des ressources (staking).

Nous avons testé trois types de distribution des ressources: normale, uniforme et exponentielle. Ces trois types couvrent la plage de configurations réseau que nous sommes susceptibles de rencontrer ainsi que les cas extrêmes possibles.

Chaque distribution a trois versions d’inadéquation entre le staking et la demande en ressources. Cela nous donne neuf cycles de tests (trois distributions avec trois versions), pour lesquels nous préparons des transactions.

Au cours d’un cycle, 1,7 million de transactions sont envoyées et réparties sur les 100 000 comptes. Ces transactions sont envoyées à une fréquence invariable, par ex. 10 000 transactions toutes les 500 ms. Nous utilisons des contrats “eosio.token” et des “transactions de transfert” car elles sont la norme de l’industrie.

Les résultats sont enregistrés et nous partageons les rapports en interne dans le cadre de notre discussion plus globale concernant la qualité, la préparation et la mise en œuvre de notre technologie.

Nous essayons d’adopter une approche holistique pour notre processus de benchmarking, afin de pouvoir confirmer la stabilité et l’intégrité de la version sur laquelle nous souhaitons construire notre Testnet (et Mainnet !) public.

Résultats

Le Mainnet d’EOS est actuellement le plus important déploiement d’EOSIO. Il existe des dizaines de producteurs de blocs de haute qualité qui ont développé d’excellents standards pour l’infrastructure de son réseau. Le Mainnet d’EOS atteint actuellement un maximum d’environ 4000 transactions par seconde.

Un audacieux groupe de producteurs de blocs a poussé le Jungle Testnet (EOS) à plus de 9100 TPS, mais a rencontré des problèmes de micro-forking. La même équipe a néanmons atteint un pic stable de 6977 TPS sur le même Testnet.

La blockchain d’Ultra fait mieux.

Résultats d’EOS Vanilla

À ce jour, nous parvenons à envoyer jusqu’à 10636 TPS sur un déploiement d’EOS Vanilla, à l’aide de notre puissant plugin de benchmarking EOSIO et en utilisant notre infrastructure spécialisée.

Résultats d’Ultra Blockchain

Pour l’Ultra Blockchain, avec notre nouveau mécanisme de mise en file d’attente et toutes les autres fonctionnalités que nous avons développées, nous parvenons à envoyer jusqu’à 11610 TPS. Nous expérimentons actuellement des configurations alternatives de paramètres et de matériel et nous espérons augmenter encore ce seuil.

Tests Additionnels

Bien sûr, le TPS de pointe n’est pas la seule mesure qui nous intéresse, car le TPS moyen en dit long sur la constance du débit. Le TPS moyen traduit assez directement la manière dont le réseau gère sa capacité et la garantie que votre transaction se déroule en un temps raisonnable quelle que soit la situation du réseau. Pour une utilisation à des fins professionnelles de notre réseau, nous comprenons que la constance est primordiale.

Vous pouvez voir ici le nombre de transactions qui peuvent être continuellement transmises à la fois pour EOSIO Vanilla et Ultra Blockchain. La blockchain d’Ultra a un comportement particulièrement consistant et s’avère excellente pour effectuer autant de transactions que le réseau peut gérer.

Résultats TPS Moyens

Pour le déploiement d’EOSIO Vanilla, nous avons évalué un TPS moyen de 6930. Ultra atteint quant à lui un TPS moyen de 9514, ce qui est nettement plus élevé. En d’autres termes, dans nos tests Ultra exécute en moyenne 31% de transactions en plus qu’EOSIO.

Assurer le succès des transactions

Un autre aspect de notre travail consiste à tester le réseau au fil du temps et à vérifier le nombre de transactions ayant échoué en fonction de l’incohérence entre la demande en ressources et les ressources stakées.

Ce dernier ensemble de tests est particulièrement important car toute transaction échouée a un impact direct sur les utilisateurs et les développeurs. Le déploiement d’Ultra montre actuellement entre 1% et 2% de transactions échouées, alors qu’EOSIO Vanilla affiche des chiffres beaucoup plus élevés avec des taux d’échec de 30% à 50%. Notre mécanisme de mise en file d’attente fonctionne très bien.

Nos conclusions

Nous avons étendu avec succès la pile logicielle EOSIO en fonction de nos besoins commerciaux. Parmis les fonctionnalités intégrées se trouvent:

  1. Des transactions gratuites pour les utilisateurs qui en ont besoin;
  2. Des transactions rapides pour nos développeurs;
  3. Un mécanisme de mise en file d’attente sécurisé qui peut empêcher le spam du réseau.

Nos benchmarks et tests approfondis ont montré que nos améliorations n’ont pas eu d’impact négatif sur la stabilité ou la vitesse du réseau.

La blockchain d’Ultra a un TPS de pointe plus élevé, un TPS moyen plus élevé et un débit plus constant, même avec une énorme quantité de transactions.

Notre vision d’Ultra est celle d’un réseau de classe entreprise, prêt pour le marché de masse, sur lequel les développeurs peuvent déployer leurs applications en toute confiance et que les utilisateurs peuvent utiliser facilement. Nous sommes vraiment enthousiasmés par les progrès que nous avons réalisés et nous avons hâte de lancer le Mainnet.

Si vous êtes un développeur de jeux et que vous souhaitez accéder à la blockchain Ultra, veuillez vous inscrire ici, nous vous contacterons.

--

--