Starknet Quantum Leap: De grandes améliorations de débit sont arrivées !

Initialement publié en anglais par StarkWare le 5 juillet, 2023

Starknet est sur le point de franchir la barrière des transactions par seconde (TPS).

TL;DR

  • Starknet alpha V0.12.0 a été déployé sur le testnet.

  • Cette version a permis une augmentation remarquable de plus de 10 fois du débit grâce à la mise en œuvre du Séquenceur en Rust, résultat d'une collaboration étroite entre StarkWare et LambdaClass.

  • Les transactions n'affichent plus le statut "PENDING", offrant ainsi une meilleure expérience utilisateur.

  • Un nouvel appel système a été introduit pour permettre la récupération facile des hachages de blocs précédents.

  • Starknet alpha V0.12.0 prendra en charge une nouvelle syntaxe Cairo axée sur la sécurité.

  • La mise à jour du réseau vers cette version fera l'objet d'un vote communautaire, garantissant une participation et des contributions étendues.

Introduction

Nous sommes ravis d'annoncer la sortie de Starknet Alpha V0.12.0. Cette version marque une étape importante qui ouvre la voie à une grande avancée en termes de performances et de scalabilité améliorées. Elle représente une nouvelle étape dans le parcours de Starknet pour mettre à l'échelle Ethereum, en mettant l'accent sur le débit et la latence. Pour relever ces défis, nous nous sommes concentrés sur le Séquenceur de Starknet, car une grande partie de la limite de débit est déterminée par ses performances.

Le développement de Starknet Alpha V0.12.0 est le résultat d'une collaboration productive et agréable d'un an entre LambdaClass et StarkWare. Nous sommes fiers de construire Starknet avec l'équipe de LambdaClass.

Cette version, étant une version majeure, fera l'objet d'un vote communautaire. Nous invitons la communauté à façonner l'avenir de Starknet.

Performances - Le débit est là !

Cette version met l'accent sur les performances, et plus précisément sur l'amélioration du débit, ce qui se traduit par une augmentation significative de 10 fois. Le débit est passé d'une moyenne de 30 000 étapes Cairo par seconde (CSPS) sur la version 0.11.0, à un impressionnant 220 000 CSPS dans cette dernière version. Cette réalisation remarquable résulte d'optimisations ciblées qui renforcent l'efficacité du Séquenceur de Starknet, comme nous l'avons déjà partagé dans notre feuille de route des performances. Trois éléments clés ont contribué à cette amélioration des performances de Starknet : Cairo-rs, Blockifier et Papyrus, et tous bénéficient de la puissance de Rust.

La première amélioration apportée au Séquenceur est l'intégration de Cairo-rs, un exécuteur Cairo hautement efficace écrit en Rust et développé par LambdaClass. En tirant parti de la puissance de Rust, Cairo-rs a amélioré l'exécution des contrats Cairo, ce traduisant par une expérience plus fluide pour les utilisateurs.

De plus, l'introduction du Blockifier, une logique d'exécution de bloc basée sur Rust, a joué un rôle crucial dans l'amélioration du débit. En optimisant le temps d'exécution des transactions, cette implémentation a réduit efficacement les temps d'attente et atténué la congestion du réseau. L'inclusion de Papyrus, une solution de stockage local, a contribué à la gestion efficace de l'état local du Séquenceur. Cette amélioration a également optimisé les performances globales du système et sa réactivité.

Ce n'est que la première étape

Les optimisations du séquenceur dans cette version sont loin d'être la fin de la route vers des améliorations de performances.

Cairo_native

Starknet intégrera le compilateur cairo_native de LambdaClass, ce qui permettra l'exécution des contrats Cairo de manière plus efficace. En permettant l'exécution des contrats en "code natif", tel que Rust, plutôt qu'en les exécutant dans l'environnement Cairo, nous anticipons une plus grande efficacité et de meilleures performances pour Starknet.

Parallélisation

Le séquenceur Pythonic précédent de Starknet a introduit la parallélisation des transactions, ce qui a considérablement amélioré ses performances. Cependant, il est important de noter que l'implémentation initiale du séquenceur en Rust, incluse dans la version V0.12.0, n'inclut pas encore de parallélisation. Les efforts de développement en cours visent à paralléliser l'exécution des transactions au sein du bloc, dans l'esprit du block-STM. S'inspirant des démonstrations réussies de l'implémentation Pythonic, cette optimisation améliorera encore le débit de Starknet, lui permettant de gérer efficacement des volumes de transactions croissants.

Plus de transactions en attente

Dans les versions précédentes, le statut PENDING désignait des blocs valides exécutés par le séquenceur mais qui n'étaient pas encore complets, indiquant que des transactions supplémentaires pouvaient encore être ajoutées. Cependant, dans cette dernière version, le statut PENDING a été remplacé par ACCEPTED_ON_L2, reflétant le statut de finalité des transactions. Ce changement simplifie le processus de confirmation des transactions et offre aux utilisateurs une expérience plus fluide.

Get_block_hash syscall

Une autre nouveauté de Starknet Alpha V0.12.0 est l'introduction de l'appel système get_block_hash. Ce nouvel appel système permet aux développeurs de récupérer le hachage d'un bloc spécifique de Starknet dans la plage [first_v0_12_0_block, current_block-10]. La signature de cet appel système est fn get_block_hash(u64 block_number) -> felt252.

Le message d'erreur associé à ce scénario est : Block number out of range.

Pour mettre en œuvre ce changement, le système d'exploitation écrira, au début de chaque bloc, une correspondance sous address= 0x1 avec current_block **- 10** comme clé et son hachage correspondant comme valeur.

Avec l'appel système get_block_hash, les développeurs peuvent facilement récupérer les hachages de blocs, qui sont des composants essentiels pour la construction et la validation des preuves de stockage. Ces preuves permettent un accès efficace aux données inter-chaînes et renforcent la fiabilité des données de la blockchain sans avoir besoin de se fier à des oracles tiers. En obtenant le hachage de bloc via cet appel système, les développeurs peuvent référencer avec précision l'état d'un bloc spécifique, les transactions ou toute autre information consignée dans l'en-tête du bloc.

Cairo - Amélioration de la syntaxe du contrat

Dans cette version, nous avons apporté des améliorations significatives à la syntaxe du contrat intelligent. La nouvelle syntaxe met l'accent sur la sécurité et jettera les bases de l'extensibilité. La sécurité, dans ce contexte, signifie être plus explicite sur les composants externes du contrat (interface/stockage/événements), ce qui donne aux développeurs une meilleure idée de ce à quoi s'attendre lors de l'interaction avec le contrat. L'extensibilité, qui sera finalisée dans une version ultérieure, permettra aux contrats d'utiliser des composants provenant de bibliothèques externes. C'est une fonctionnalité clé de tout langage de contrat intelligent et cela résoudra un problème significatif dans la communauté de développeurs de Starknet. Pour une analyse approfondie de la motivation et des changements, reportez-vous a l’article de blog sur la feuille de route de Cairo et au post sur le forum communautaire.

Bien que la nouvelle version du compilateur inclue des modifications incompatibles, vous pouvez continuer à utiliser l'ancienne version du compilateur (v1.1.0) et déployer les contrats qui en résultent sur Starknet pendant les six prochains mois. Cela reflète notre nouveau protocole de mise à jour du compilateur pour les modifications incompatibles : suite aux nouvelles versions du compilateur, les contrats compilés par l'ancienne version du compilateur continueront d'être acceptés pendant au moins six mois, afin de permettre à la communauté de s'adapter. Bien entendu, une fois qu'un contrat Cairo (et non Cairo 0) est déclaré sur Starknet, il restera disponible pour le déploiement et l'interaction de manière indéfinie.

Que se passe-t-il ensuite ?

Objectifs à court terme : Version 0.12.1

À court terme, Starknet se concentre sur l'amélioration de l'expérience utilisateur et de la fiabilité des transactions. La prochaine version, 0.12.1, introduira une autre amélioration significative : l'inclusion des transactions échouées dans le bloc. Jusqu'à présent, les transactions échouées n'étaient pas incluses dans le bloc, et donc le séquenceur ne pouvait pas facturer de frais et avancer le nonce pour elles. Cela a créé des problèmes d'UX pour les développeurs. Ils ne pouvaient pas compter sur l'avancement du nonce, les obligeant à surveiller continuellement le statut des transactions avant d'en envoyer une nouvelle. Ce changement protège également le séquenceur des utilisateurs qui encombrent le système avec des transactions échouées sans les payer. Cette mise à jour vise à fournir aux utilisateurs une expérience plus fluide et plus transparente lors de l'interaction avec Starknet.

Vision à long terme : Débit, latence et coûts

En regardant vers l'avenir, la vision globale de Starknet est d'atteindre une scalabilité substantielle à la fois en termes d'échelle et de coût. La prochaine priorité à l'ordre du jour est de réduire considérablement les coûts des transactions.

En réduisant les coûts, Starknet vise à rendre les transactions plus abordables et inclusives, permettant ainsi une plus grande gamme d'utilisations et en donnant plus de pouvoir aux développeurs et aux utilisateurs. L'engagement en faveur de la réduction des coûts s'inscrit dans la mission de Starknet de fournir une infrastructure évolutive, flexible et rentable pour les applications décentralisées.

Vote - Starknet Alpha V0.12.0

La phase 1 de la gouvernance de Starknet se concentre sur les mises à jour majeures du protocole Starknet. Chaque mise à jour majeure de la version de Starknet est d'abord déployée sur Testnet, donnant à la communauté Starknet quelques jours pour examiner et tester la version mise à jour. Pendant cette période d'examen, une proposition Snapshot est ouverte, permettant à la communauté de voter sur l'approbation de la version mise à jour pour le déploiement sur le Mainnet.

Si la proposition obtient une majorité de votes 'OUI' pendant la période de vote, elle passe, et le Mainnet de Starknet sera mis à jour en conséquence.

Résumé

Starknet Alpha V0.12.0 se concentre sur l'amélioration des performances et de l'expérience utilisateur. La nouvelle version introduit une implémentation basée sur Rust du Séquenceur, améliorant le débit de 10X et réduisant la latence des transactions. Parmi les autres fonctionnalités, citons une nouvelle version du compilateur, la suppression du statut de transaction en attente et l'ajout d'un appel système de hachage de bloc.

Les développeurs de Starknet sont habilités à coder des solutions qui font la différence. Lancez-vous dans votre voyage de développement avec Cairo, consultez la documentation de Cairo, inscrivez-vous à Cairo Basecamp ou suivez les tutoriels. Vous souhaitez rester informé de toutes les mises à jour de versions ? Abonnez-vous à notre newsletter pour développeurs Starknet.

À propos de LambdaClass

LambdaClass est une entreprise centrée sur l'ingénierie avec 10 ans d'expérience dans l'industrie, travaillant sur des systèmes distribués, des compilateurs, l'apprentissage automatique et la cybersécurité. Tout au long de leur histoire, ils ont soutenu des projets qui offrent des défis techniques et qui font une différence dans le monde, choisissant des projets et des partenaires principalement sur la base d'objectifs et d'approches partagés avec leurs créateurs ou fondateurs.

Subscribe to Starknet France
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.