
Explorer l'expérience utilisateur des différents ZKRollup du point de vue des développeurs
TechFlow SélectionTechFlow Sélection

Explorer l'expérience utilisateur des différents ZKRollup du point de vue des développeurs
Cet article explore en profondeur l'expérience utilisateur des différentes ZKRollup du point de vue des développeurs, à travers une approche fondée sur les données, depuis la perspective d'un ingénieur Solidity.
Auteur : Yiping, IOSG Ventures
TL;DR
Starknet a lancé son Alpha Mainnet le 29 novembre 2022.
Scroll a lancé son Goerli Alpha Testnet le 27 février 2023.
zkSync a lancé le zkSync Era Mainnet le 24 mars 2023.
Polygon a lancé sa version bêta du zkEVM Mainnet le 27 mars 2023.
Avec tous ces nombreux ZK Rollups désormais disponibles, en tant que développeur Solidity, vous pourriez vous demander :
-
Lequel offre la meilleure expérience de développement adaptée à vos besoins ?
-
Lequel fournit le meilleur support aux développeurs dont vous avez besoin ?
-
Si vous envisagez de créer votre projet, lequel serait le plus adapté ?
Alors que les ZK Rollups arrivent progressivement sur le marché, c’est le moment idéal pour étudier l’expérience de développement offerte par chaque solution. Étant donné que tous prônent leur compatibilité avec l'EVM, notre exploration de l'expérience développeur s'effectuera du point de vue d'un ingénieur Solidity, et nous approfondirons ces questions à travers des réponses fondées sur des données concrètes.
Comparaison de l’ouverture du code source des ZK Rollup
L’open source améliore l’expérience des développeurs en favorisant la qualité, la sécurité et la collaboration. Grâce à sa transparence, les développeurs du monde entier peuvent détecter et corriger des bogues ou failles de sécurité, ce qui permet une amélioration continue du logiciel. GitHub agit comme une plateforme d’apprentissage, offrant un accès à divers styles de codage, technologies avancées et normes industrielles, enrichissant ainsi le parcours du développeur. Les développeurs peuvent également adapter le code selon leurs besoins spécifiques. L’open source encourage la collaboration et l’innovation grâce à une communauté diversifiée, stimulant ainsi l’évolution du projet.
Les projets rendent généralement leur code open source après avoir atteint des jalons clés, souvent lorsque le code atteint au moins la version alpha. Un code encore en phase de développement intense n’est pas adapté à l’open source car il ne peut pas fournir les bénéfices attendus tels que l’amélioration de la qualité, de la sécurité ou de l’apprentissage collaboratif. Par conséquent, la quantité de code open source est souvent liée au stade de développement du projet.
Tous les ZK Rollup ont investi considérablement dans leurs dépôts GitHub, bien que ce qu'ils proposent varie.

Choix des langages de programmation
Rust est devenu le langage privilégié pour construire des compilateurs, des nœuds, des chaînes d’outils, des outils CLI et des machines virtuelles dans de nombreux projets.

Documentation technique
La documentation technique est cruciale pour l’expérience des développeurs. Ces ressources comblent efficacement l’écart entre la complexité des solutions Layer 2 et l’écosystème de développement compatible EVM (Machine Virtuelle Ethereum).
Les différents projets offrent des structures et contenus de documentation légèrement différents.
zkSync propose une documentation détaillée et des exemples de référence pour ses fonctionnalités phares telles que l’Account Abstraction (AA) et la communication bidirectionnelle entre Layer 1 et Layer 2.
Voici quelques axes d’amélioration possibles :
-
Inclure nom du fichier et chemin d’accès : Au début de chaque bloc de code, indiquer le nom du fichier et son emplacement. Cela aide les utilisateurs à savoir où trouver ou placer le code.
-
Afficher les résultats des commandes CLI : Lorsque des instructions CLI sont fournies, inclure un exemple de sortie. Cela permet aux utilisateurs de savoir à quoi s’attendre et de vérifier qu’ils ont correctement exécuté la commande.
-
Limiter la longueur des lignes de code : Définir une longueur maximale pour les lignes de code. Cela garantit une lecture aisée sans nécessiter de défilement horizontal.
-
Utiliser des exemples réels : Plutôt que d’utiliser des espaces réservés ou « xxx », fournir des adresses de contrats ou des clés d’exemples. Cela donne aux utilisateurs une meilleure idée du type de données à utiliser.
-
Fournir une vue projet pour les tutoriels complexes : Pour les tutoriels plus avancés, intégrer une vue du projet en marge. En naviguant dans le tutoriel, mettre en évidence les sections de code correspondantes.
-
Exemples interactifs : Inclure des exemples interactifs pour faciliter la prise en main rapide. Il peut s’agir d’un espace jouet où les utilisateurs peuvent modifier et exécuter des extraits de code, ou d’un environnement de développement cloud.
-
Structurer la documentation : Veiller à ce que la documentation soit bien organisée et facile à naviguer. Utiliser des titres clairs et une table des matières.
-
Mettre à jour régulièrement : À mesure que le projet évolue, veiller à maintenir la documentation à jour. Cela peut impliquer de remplacer des captures d’écran, de réviser les exemples de code ou de réécrire certaines parties pour refléter de nouvelles fonctionnalités ou changements.

Communauté et contributions d’équipe
Le nombre de contributeurs reflète l’engagement de la communauté open source. La fréquence des mises à jour et le niveau d’interaction sont essentiels pour maintenir une documentation actualisée et complète.

Un plus grand nombre de contributeurs indique une communauté open source plus active. La plupart des projets atteignent leur pic de fréquence de mise à jour juste après leur lancement.


Expérience de codage
L’expérience de codage dépend de la chaîne d’outils, de l’environnement d’édition et des frameworks utilisés.
La chaîne d’outils conditionne la facilité de configuration d’un environnement de développement local, de débogage et d’exécution du code.
L’expérience d’édition influence la rapidité de codage. Un bon éditeur doit offrir une coloration syntaxique claire, la définition des termes et la complétion automatique.
Les frameworks fournissent un environnement structuré qui accélère considérablement le processus de développement. Ils intègrent des fonctionnalités préconfigurées et des bibliothèques réutilisables, permettant aux développeurs d’écrire efficacement des contrats intelligents sans tout recoder depuis zéro.

Le support d’outils similaires à Remix peut aider les développeurs à démarrer rapidement sans avoir à configurer un environnement local. Actuellement, cette expérience de développement cloud-native est uniquement disponible pour les contrats intelligents backend. Elle nécessite encore des améliorations pour s’adapter pleinement au développement Dapp, incluant à la fois contrats intelligents et interface frontend.

Warp présente de mauvaises performances. Kakarot sera la seule solution compatible EVM sur StarkNet. Kakarot offre une expérience de développement Solidity très fluide, entièrement compatible avec tous les outils existants d’Ethereum tels que les compilateurs, Remix et Hardhat.
Kakarot fournit une EVM écrite en Cairo. En tant qu’EVM, Kakarot peut exécuter des programmes en bytecode EVM, permettant ainsi aux contrats intelligents Ethereum de fonctionner sur StarkNet.

Tests
Les tests constituent un aspect fondamental du développement de contrats intelligents, assurant leur qualité, fonctionnalité et fiabilité. Ce processus consiste à valider que chaque fonctionnalité fonctionne comme prévu et à identifier les bogues ou problèmes à corriger avant déploiement. Grâce à des tests rigoureux, les développeurs peuvent être confiants que le logiciel fonctionnera correctement dans divers scénarios et conditions. Cette étape évite non seulement les pannes pouvant affecter l’expérience utilisateur, mais contribue aussi à préserver l’intégrité et la sécurité des contrats intelligents. Les tests permettent également d’identifier des possibilités d’optimisation, favorisant ainsi l’amélioration continue des contrats.
Tenderly est l’un des meilleurs outils de débogage pour le développement de contrats intelligents. Il propose des simulations d’exécution, un débogueur, un analyseur de gaz, des fonctionnalités de fork et des alertes pour aider les développeurs à mieux construire leurs Dapps. Toutefois, Tenderly ne prend actuellement en charge aucun ZK Rollup.
Nous espérons que, dans un avenir proche, davantage d’outils de développement et de débogage prenant en charge les ZK Rollups verront le jour, contribuant ainsi à faire avancer davantage la technologie blockchain et ses applications.
Déploiement
Le processus de déploiement joue un rôle crucial dans le cycle de vie du développement de contrats intelligents. De bons outils de déploiement offrent une expérience automatisée, cohérente et fiable, allant du développement jusqu’au déploiement sur la blockchain. Des outils performants allègent considérablement la charge des tâches manuelles, accélèrent les délais de livraison et réduisent les erreurs humaines.
Le déploiement sur StarkNet se divise en deux étapes : Declare et Deploy, ce qui nécessite un temps plus long.

Nouvelles fonctionnalités des Layer 2
Les solutions Layer 2 jouent un rôle crucial dans la résolution des défis liés à l’évolutivité, l’efficacité et l’expérience utilisateur. Bien que les ZK Rollups en soient encore à un stade précoce, ils montrent déjà un potentiel énorme pour débloquer de nouvelles possibilités pour les développeurs.
Grâce à des innovations révolutionnaires telles que la différence d’état (State-diff), la communication transparente entre Layer 1 et Layer 2, ou encore l’abstraction des comptes, les ZK Rollups permettent aux développeurs de créer des projets innovants, repoussant les limites du possible en matière de blockchain. Ces fonctionnalités avancées renforcent non seulement les capacités des applications décentralisées, mais ouvrent également la voie à une adoption généralisée de la technologie blockchain.
Différence d’état (State-diff)
StarkNet et zkSync Era utilisent la technologie de différence d’état, théoriquement capable de réduire les frais. En publiant uniquement les différences d’état plutôt que toutes les entrées des transactions, ils permettent une compression des données et une réduction des coûts de stockage. Cela bénéficiera particulièrement aux développeurs de jeux.
Polygon zkEVM publie toutes les entrées des transactions sur la chaîne, en comptant sur la baisse anticipée des coûts de stockage au cours des prochaines années.
Communication Layer 1 <> Layer 2
La plupart des ZK Rollups offrent une fonctionnalité de communication entre Layer 1 et Layer 2. Par exemple, zkSync Era fournit un exemple de gouvernance utilisant cette communication. Sur Layer 1, un contrat peut initier l’exécution d’un contrat sur Layer 2. Sur Layer 2, un contrat ne peut qu’envoyer des messages vers Layer 1. Nous pouvons ensuite traiter ces messages reçus sur Layer 1. De même, Polygon propose un exemple de code illustrant l’utilisation d’un pont NFT utilisant la communication inter-chaîne pour partager des informations entre L1 et L2.
Abstraction des comptes (Account Abstraction)
L’abstraction des comptes est une autre fonctionnalité passionnante. zkSync Era propose une AA native. Les comptes sur zkSync Era peuvent initier des transactions comme des EOA, mais peuvent également intégrer une logique arbitraire comme un contrat intelligent. Puisque zkSync implémente nativement l’AA, aucun contrat proxy supplémentaire n’est nécessaire. Même un EOA standard peut effectuer des transactions sans payer de frais de gaz, ce qui n’est pas possible avec uniquement EIP-4337. Polygon zkEVM et Scroll implémentent une AA compatible EVM. StarkNet travaille également sur l’abstraction des comptes, visant à réaliser une abstraction des signatures et du paiement.
Améliorations futures de l’expérience développeur
À travers cette étude, nous avons constaté que ces projets ZK Rollup s’efforcent activement d’améliorer leurs produits et leur soutien aux développeurs. Toutefois, étant donné que nous en sommes encore aux balbutiements des applications blockchain, avec une communauté de développeurs relativement restreinte, l’investissement dans l’amélioration de l’expérience développeur aidera incontestablement les projets à attirer les futurs talents et à façonner l’avenir de cette industrie.
Voici quelques recommandations courantes pour améliorer le soutien au cycle de développement :
1. Documentation :
-
Documentation de haute qualité : Une documentation complète, claire et régulièrement mise à jour est essentielle pour améliorer l’expérience développeur. Assurez-vous qu’elle soit exhaustive, compréhensible, accompagnée d’exemples, et mise à jour fréquemment.
-
Conception intuitive des API : Les API doivent être cohérentes, intuitives et bien documentées. Évaluez la conception selon la clarté, l’accessibilité de la documentation API, et la facilité à accomplir des tâches courantes.
-
Référence complète des API et journal des modifications : Fournissez une référence détaillée incluant fonctions, paramètres, valeurs de retour et codes d’erreur. Tenez un journal des modifications pour suivre les mises à jour, nouvelles fonctionnalités, correctifs de bogues et fonctionnalités obsolètes.
-
Études de cas : Présentez des exemples concrets d’utilisation du produit afin d’inspirer et d’éduquer les développeurs sur la manière efficace de résoudre des problèmes.
-
Expérience de prise en main fluide : Réduisez le temps nécessaire aux nouveaux développeurs en simplifiant la configuration de l’environnement, en expliquant clairement les concepts fondamentaux, et en facilitant la création d’applications basiques.
2. Accessibilité et efficacité :
-
Accessibilité des outils : Assurez-vous que les outils fournis soient conviviaux et intuitifs. Mesurez la facilité d’utilisation en évaluant le temps nécessaire aux développeurs pour accomplir des tâches courantes.
-
Messages d’erreur et support de débogage : Améliorez l’expérience développeur via des messages d’erreur utiles et un support robuste de débogage. Vous pouvez mesurer cela en provoquant intentionnellement des erreurs fréquentes, puis en vérifiant la pertinence de la réponse du système.
-
Intégration et compatibilité : Évaluez dans quelle mesure les outils ou plateformes s’intègrent avec d’autres outils couramment utilisés dans l’écosystème.
3. Transparence et mise à jour :
-
État du produit : Informer rapidement des problèmes opérationnels, des plans de maintenance et des interruptions de service permet aux développeurs de planifier efficacement leur travail.
Face à la progression rapide des technologies dans le domaine Web3, maintenir un haut niveau constant d’expérience développeur de manière évolutive et durable constitue un défi significatif pour les projets Web3.
Pour relever ce défi, nous recommandons aux projets d’explorer deux directions : exploiter l’IA pour renforcer l’automatisation et la productivité, réduisant ainsi la dépendance à une main-d’œuvre importante, et mobiliser la puissance de la communauté en incitant les contributions.
-
Assistance par IA : Générer et maintenir une volumineuse documentation peut nécessiter beaucoup de ressources. Les grands modèles linguistiques (LLM) pourraient aider à produire et maintenir une documentation de haute qualité. En outre, un bot Q/R piloté par l’IA pourrait fournir des réponses rapides et précises aux questions des développeurs, améliorant ainsi leur expérience.
-
Incentiver la participation communautaire : Pour encourager l’implication de la communauté, les projets peuvent proposer divers types d’incitations, financières et non financières. Par exemple, des programmes de bounty pourraient être étendus aux contributions dans le code, les tests de dépôts, l’amélioration de la documentation, les traductions et aux retours utilisateurs précieux, reflétant directement les besoins réels pouvant guider l’équipe du projet. Cette approche pourrait non seulement améliorer la qualité des ressources, mais aussi réduire les coûts de maintenance. Reconnaître publiquement les contributions via des canaux communautaires actifs (comme Discord, Substack, etc.) et valoriser les contributeurs.
En mettant l’accent sur une conception centrée sur le développeur et en combinant les efforts collectifs de la communauté, nous pouvons cultiver un écosystème dynamique et inclusif de développeurs dans le monde Web3 !
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














