Compilateur : M. Huai, directeur du département de recherche sur les investissements du Club Web3 de l’Université de Wuhan
Présentation
Après une analyse approfondie d’informations telles que le référentiel Github de Solidity, la feuille de route de Solidity, les conversations de la communauté sur Twitter, les demandes de tirage actives et les problèmes, cet article se penche sur l’avenir de Solidity.
Le principal langage de programmation de contrats intelligents est sur le point d’être publié avec les mises à niveau 0.9.0 et 1.0.0, qui introduiront plusieurs améliorations très attendues.
L’objectif de cet article est de présenter aux lecteurs les derniers développements et améliorations de Solidity, qui sont basés sur les commentaires de la communauté et les débats en cours. Bien que l’information pertinente fournie ne soit pas concluante, elle révèle des orientations potentielles pour le progrès technologique.
1. Intégration révolutionnaire de require() avec Custom Error
Méthode courante (0.8.x) :
On s’attend à ce qu’il se produise à la version 0.9.0 ou 1.0.0 :
Plutôt que d’utiliser un grand nombre de conditions if pour générer une erreur avec des informations de chaîne ou une erreur personnalisée, l’utilisation d’une combinaison de require() et d’erreur personnalisée rendra le programme plus clair et permettra d’économiser de l’essence.
2. Optimisation de la représentation interne (IR) : efficacité de la mise en production
Le processus de représentation interne (IR) dans Solidity joue un rôle clé dans la conversion du code source des contrats intelligents en instructions exécutables pour la machine virtuelle ETH (EVM).
La représentation interne rationalise et standardise le code complexe, ce qui rend le processus de conversion du code en langage machine plus efficace. Les améliorations à venir de Solidity vers la version 0.9.0 sont conçues pour rendre ce processus de compilation plus rapide et plus efficace, réduisant ainsi les coûts et augmentant la productivité des développeurs.
3. Amélioration de la gestion des erreurs : clarification et simplification du code
On s’attend à ce que les futures mises à jour améliorent la gestion des erreurs dans Solidity, ce qui se traduira par des messages d’erreur plus simples et un débogage plus facile.
Cette amélioration est particulièrement utile pour les développeurs travaillant avec des contrats complexes, car elle permet de gagner du temps et de minimiser les erreurs potentielles.
4. Arithmétique en virgule fixe : haute précision et haute performance
[Note du traducteur : Un nombre à virgule fixe est un type de données utilisé par les ordinateurs pour représenter des nombres décimaux correspondant à des nombres à virgule flottante, et ses chiffres entiers et ses décimales sont des valeurs fixes, ils sont donc plus sûrs que les nombres à virgule flottante.] À l’heure actuelle, Solidity n’a pas de types de données intégrés qui représentent des décimales, et les développeurs ont souvent besoin de multiplier les données d’origine par un grand nombre pour réserver manuellement les décimales, et garder un œil sur le problème de la virgule décimale dans les opérations ultérieures, ce qui est assez gênant. 】
À ce stade, les bibliothèques externes telles que ABDKMath64x64 et DSMath utilisent Solidity pour implémenter des nombres à virgule fixe.
La mise à jour 0.9.0 devrait intégrer l’arithmétique à virgule fixe native et ne plus nécessiter de bibliothèques externes. Cela simplifiera grandement les calculs décimaux.
5. EVM Object Format (EOF) : créer un bytecode de contrat intelligent
La prochaine mise à niveau EOF de Solidity se prépare à introduire un bytecode structuré et versionné pour les contrats intelligents.
Cette amélioration devrait faciliter la mise en œuvre des futures mises à jour des contrats, maintenir la rétrocompatibilité et permettre une analyse plus efficace pendant la phase de compilation.
Bien que cela ne change pas l’expérience de codage direct pour les développeurs de contrats intelligents, la sortie du compilateur sera plus économe en gaz.
6. Stockage transitoire : traitement des données ad hoc et efficace
La nouvelle fonctionnalité de Solidity, Transient Storage, propose un moyen de sauvegarder temporairement les données pendant l’exécution du contrat sans les enregistrer de manière permanente sur la blockchain. Cette approche devrait être plus efficace en termes de consommation de gaz.
Un stockage transitoire similaire au code ci-dessous est susceptible d’être trouvé dans Solidity 0.9.0 ou Solidity 1.0.0.
7. Protection de réentrée intégrée en mode natif
Avant la version 0.8.0, la bibliothèque SafeMath était un outil couramment utilisé par les développeurs pour les opérations arithmétiques afin d’éviter les problèmes de dépassement de capacité et de dépassement de limite inférieure. Avec la sortie de Solidity 0.8.0, ces contrôles de sécurité sont intégrés directement dans le langage.
De même, la version 0.9.0 ou 1.0.0 de Solidity devrait intégrer nativement la protection contre la ré-entrée. Cette fonctionnalité est conçue pour simplifier le processus de mise en œuvre des protocoles de sécurité afin d’empêcher les attaques de réentrée.
Vous verrez quelque chose comme ceci :
8. Dispositions d’héritage et de stockage refactorisées
Dans Solidity, l’héritage crée un nouveau contrat qui reprend les propriétés et les fonctionnalités d’un contrat existant. La mise à jour prévue vise à améliorer la linéarisation des dispositions d’héritage et de stockage, améliorant ainsi la prévisibilité et l’organisation de l’architecture contractuelle. Cela peut améliorer l’efficacité de l’utilisation du stockage et réduire la confusion dans les scénarios d’héritage multiple.
Par exemple, un enfant de contrat qui hérite de ParentA et ParentB aura une disposition de stockage optimisée et un stockage variable continu, ce qui réduira le coût des opérations de stockage.
9. Amélioration des indicateurs de compilation et des options de configuration
Le développement de Solidity inclut l’extension de la portée des indicateurs de compilation et des paramètres de configuration, offrant aux développeurs un haut degré de contrôle sur le processus de compilation. Ces améliorations peuvent conduire à des déploiements contractuels plus personnalisés avec un contrôle précis de l’optimisation du gaz, des contrôles de sécurité et des capacités de débogage.
De nouveaux indicateurs de compilation peuvent permettre aux développeurs d’activer ou de désactiver des optimisations ou des contrôles de sécurité spécifiques :
Par exemple, un nouvel indicateur de compilation, --enable-loop-optimization, se concentrera sur l’optimisation des boucles pour améliorer l’efficacité du gaz, et un nouvel indicateur de compilation, --strict-security-checks, introduira une analyse de sécurité sévère lors de la compilation
10. Amélioration des outils de débogage et des messages d’erreur
L’outil de débogage amélioré contient des messages d’erreur plus détaillés et peut simplifier considérablement le processus de développement, en particulier pour les structures contractuelles complexes. Des messages d’erreur améliorés peuvent aider les développeurs à mieux comprendre les problèmes dans leur code, et des outils de débogage avancés peuvent aider les développeurs à trouver et à résoudre les problèmes plus efficacement.
11. Prise en charge des types et structures de données avancés
L’introduction de types de données et de structures complexes dans Solidity peut inspirer de nouvelles possibilités de conception de contrats et de fonctionnalités. Il peut s’agir de la prise en charge de types numériques plus complexes, de structures de données améliorées ou de méthodes améliorées pour gérer de grands ensembles de données dans les contrats.
Solidity peut introduire une nouvelle structure de données, telle que TreeMap, qui organise les données de manière triée pour une récupération efficace. Cela peut être utile dans les contrats où les données doivent être triées ou triées, comme dans les systèmes de vote. [Note du traducteur : Semblable à l’arbre rouge et noir.] Une autre avancée pourrait être de prendre en charge des types de nombres plus complexes, tels que les nombres à virgule fixe, qui peuvent effectuer des opérations mathématiques précises directement dans le contrat.
12. Présentation des génériques et des modèles
Les génériques et les modèles dans Solidity rendront possible un code plus adaptable et réutilisable. Par exemple, vous pouvez créer une fonction générique pour gérer différents types d’actifs (tels que les jetons ERC20, les NFT, etc.) de manière standardisée sans avoir à réécrire la fonction pour chaque type d’actif spécifique. Cela améliorera l’efficacité de la conception et du développement des contrats, car une seule fonction peut être appliquée à une variété de scénarios.
Perspectives d’avenir : la route vers la solidité 1.0.0
Sur diverses plateformes telles que Github, Twitter, Ethresearch et Reddit, il y a beaucoup de discussions au sein de la communauté Solidity sur le développement de la version 0.9.0.
L’un des points centraux du débat est le dévoilement :
S’agit-il d’une transition simple et prudente vers Solidity 1.0.0 pour déclarer la pleine maturité du langage, ou s’agit-il d’une progression progressive vers une version plus avancée avec la version 0.9.0 d’abord ?
Influencés par les commentaires de la communauté et les idées créatives, les débuts attendus de Solidity 1.0.0 coïncideront probablement avec une mise à jour majeure de ETH Workshop, reflétant la croissance et la stabilité de l’écosystème dans son ensemble.
L’évolution des systèmes de type : amélioration de la flexibilité et de la sécurité. On s’attend à ce qu’il y ait un système de type mise à niveau qui s’inspire des langages de programmation fonctionnels tels que Haskell ou Scala. Cette évolution vise à accroître la sécurité et la flexibilité du développement des contrats.
Prise en charge native intégrée d’Oracle : Simplifiez les interactions avec les données externes. Les plans incluent l’intégration de la prise en charge intégrée des oracles décentralisés dans Solidity, facilitant ainsi des interactions plus sécurisées et directes avec des sources de données externes.
Améliorer la gestion de l’état : Améliorer l’interaction avec la blockchain. Des améliorations des capacités de gestion des états sont en cours de discussion, et des éléments tels que les canaux d’état ou les sidechains peuvent être introduits en tant que structures intégrées conçues pour optimiser les interactions sur la blockchain et réduire les frais de gaz.
Approche modulaire de la conception des contrats : améliorer la réutilisation. Le passage à une architecture contractuelle modulaire est envisagé, permettant l’utilisation de composants remplaçables. Cela simplifie considérablement le processus de développement et améliore l’opérabilité du code.
Intégrer des outils de vérification formelle : assurer la fiabilité des contrats. On s’attend à ce que les outils de vérification formelle soient intégrés directement dans Solidity, une initiative qui vise à garantir que les contrats sont conformes à des normes et à des comportements spécifiques, réduisant ainsi la probabilité d’erreurs et de vulnérabilités.
Développez des capacités inter-chaînes : Réalisez l’interopérabilité entre les blockchains. Les futures mises à jour pourraient introduire des fonctionnalités natives de compatibilité inter-chaînes, permettant aux contrats Solidity de fonctionner sans problème sur une variété de protocoles blockchain.
Mettez en œuvre des mesures avancées de confidentialité : Améliorez la sécurité des données. Des plans sont en cours pour intégrer des outils avancés de protection de la vie privée, tels que les preuves à divulgation nulle de connaissance ou le chiffrement homomorphe, directement dans le langage afin d’améliorer la sécurité des données et la confidentialité des utilisateurs.
Cryptographie quantique : se préparer aux défis futurs. Compte tenu des capacités émergentes de l’informatique quantique, les gens envisagent de mettre en œuvre des méthodes de cryptographie résistantes au quantique pour protéger ETH contrats contre les menaces futures potentielles.
Conclusion
Alors que vous explorez les voies potentielles vers Solidity, cet article combine des informations sur la communauté et les développements actuels avec des projections de la communauté pour vous donner une compréhension globale du sujet. Bien que nous ayons exploré les possibilités des versions 0.9.0 et 1.0.0, la trajectoire réelle et l’ensemble des fonctionnalités sont susceptibles de changer au fur et à mesure que Solidity poursuit son parcours de développement. Restez à l’écoute pour voir comment ces conversations et concepts prennent vie dans le monde en constante évolution de la programmation de contrats intelligents.
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
Quelles sont les améliorations de la nouvelle version du langage de contrat intelligent Solidity ?
Auteur : Adam Boudjemaa
Compilateur : M. Huai, directeur du département de recherche sur les investissements du Club Web3 de l’Université de Wuhan
Présentation
Après une analyse approfondie d’informations telles que le référentiel Github de Solidity, la feuille de route de Solidity, les conversations de la communauté sur Twitter, les demandes de tirage actives et les problèmes, cet article se penche sur l’avenir de Solidity.
Le principal langage de programmation de contrats intelligents est sur le point d’être publié avec les mises à niveau 0.9.0 et 1.0.0, qui introduiront plusieurs améliorations très attendues.
L’objectif de cet article est de présenter aux lecteurs les derniers développements et améliorations de Solidity, qui sont basés sur les commentaires de la communauté et les débats en cours. Bien que l’information pertinente fournie ne soit pas concluante, elle révèle des orientations potentielles pour le progrès technologique.
1. Intégration révolutionnaire de require() avec Custom Error
Méthode courante (0.8.x) :
On s’attend à ce qu’il se produise à la version 0.9.0 ou 1.0.0 :
Plutôt que d’utiliser un grand nombre de conditions if pour générer une erreur avec des informations de chaîne ou une erreur personnalisée, l’utilisation d’une combinaison de require() et d’erreur personnalisée rendra le programme plus clair et permettra d’économiser de l’essence.
2. Optimisation de la représentation interne (IR) : efficacité de la mise en production
Le processus de représentation interne (IR) dans Solidity joue un rôle clé dans la conversion du code source des contrats intelligents en instructions exécutables pour la machine virtuelle ETH (EVM).
La représentation interne rationalise et standardise le code complexe, ce qui rend le processus de conversion du code en langage machine plus efficace. Les améliorations à venir de Solidity vers la version 0.9.0 sont conçues pour rendre ce processus de compilation plus rapide et plus efficace, réduisant ainsi les coûts et augmentant la productivité des développeurs.
3. Amélioration de la gestion des erreurs : clarification et simplification du code
On s’attend à ce que les futures mises à jour améliorent la gestion des erreurs dans Solidity, ce qui se traduira par des messages d’erreur plus simples et un débogage plus facile.
Cette amélioration est particulièrement utile pour les développeurs travaillant avec des contrats complexes, car elle permet de gagner du temps et de minimiser les erreurs potentielles.
4. Arithmétique en virgule fixe : haute précision et haute performance
[Note du traducteur : Un nombre à virgule fixe est un type de données utilisé par les ordinateurs pour représenter des nombres décimaux correspondant à des nombres à virgule flottante, et ses chiffres entiers et ses décimales sont des valeurs fixes, ils sont donc plus sûrs que les nombres à virgule flottante.] À l’heure actuelle, Solidity n’a pas de types de données intégrés qui représentent des décimales, et les développeurs ont souvent besoin de multiplier les données d’origine par un grand nombre pour réserver manuellement les décimales, et garder un œil sur le problème de la virgule décimale dans les opérations ultérieures, ce qui est assez gênant. 】
À ce stade, les bibliothèques externes telles que ABDKMath64x64 et DSMath utilisent Solidity pour implémenter des nombres à virgule fixe.
La mise à jour 0.9.0 devrait intégrer l’arithmétique à virgule fixe native et ne plus nécessiter de bibliothèques externes. Cela simplifiera grandement les calculs décimaux.
5. EVM Object Format (EOF) : créer un bytecode de contrat intelligent
La prochaine mise à niveau EOF de Solidity se prépare à introduire un bytecode structuré et versionné pour les contrats intelligents.
Cette amélioration devrait faciliter la mise en œuvre des futures mises à jour des contrats, maintenir la rétrocompatibilité et permettre une analyse plus efficace pendant la phase de compilation.
Bien que cela ne change pas l’expérience de codage direct pour les développeurs de contrats intelligents, la sortie du compilateur sera plus économe en gaz.
6. Stockage transitoire : traitement des données ad hoc et efficace
La nouvelle fonctionnalité de Solidity, Transient Storage, propose un moyen de sauvegarder temporairement les données pendant l’exécution du contrat sans les enregistrer de manière permanente sur la blockchain. Cette approche devrait être plus efficace en termes de consommation de gaz.
Un stockage transitoire similaire au code ci-dessous est susceptible d’être trouvé dans Solidity 0.9.0 ou Solidity 1.0.0.
7. Protection de réentrée intégrée en mode natif
Avant la version 0.8.0, la bibliothèque SafeMath était un outil couramment utilisé par les développeurs pour les opérations arithmétiques afin d’éviter les problèmes de dépassement de capacité et de dépassement de limite inférieure. Avec la sortie de Solidity 0.8.0, ces contrôles de sécurité sont intégrés directement dans le langage.
De même, la version 0.9.0 ou 1.0.0 de Solidity devrait intégrer nativement la protection contre la ré-entrée. Cette fonctionnalité est conçue pour simplifier le processus de mise en œuvre des protocoles de sécurité afin d’empêcher les attaques de réentrée.
Vous verrez quelque chose comme ceci :
8. Dispositions d’héritage et de stockage refactorisées
Dans Solidity, l’héritage crée un nouveau contrat qui reprend les propriétés et les fonctionnalités d’un contrat existant. La mise à jour prévue vise à améliorer la linéarisation des dispositions d’héritage et de stockage, améliorant ainsi la prévisibilité et l’organisation de l’architecture contractuelle. Cela peut améliorer l’efficacité de l’utilisation du stockage et réduire la confusion dans les scénarios d’héritage multiple.
Par exemple, un enfant de contrat qui hérite de ParentA et ParentB aura une disposition de stockage optimisée et un stockage variable continu, ce qui réduira le coût des opérations de stockage.
9. Amélioration des indicateurs de compilation et des options de configuration
Le développement de Solidity inclut l’extension de la portée des indicateurs de compilation et des paramètres de configuration, offrant aux développeurs un haut degré de contrôle sur le processus de compilation. Ces améliorations peuvent conduire à des déploiements contractuels plus personnalisés avec un contrôle précis de l’optimisation du gaz, des contrôles de sécurité et des capacités de débogage.
De nouveaux indicateurs de compilation peuvent permettre aux développeurs d’activer ou de désactiver des optimisations ou des contrôles de sécurité spécifiques :
Par exemple, un nouvel indicateur de compilation, --enable-loop-optimization, se concentrera sur l’optimisation des boucles pour améliorer l’efficacité du gaz, et un nouvel indicateur de compilation, --strict-security-checks, introduira une analyse de sécurité sévère lors de la compilation
10. Amélioration des outils de débogage et des messages d’erreur
L’outil de débogage amélioré contient des messages d’erreur plus détaillés et peut simplifier considérablement le processus de développement, en particulier pour les structures contractuelles complexes. Des messages d’erreur améliorés peuvent aider les développeurs à mieux comprendre les problèmes dans leur code, et des outils de débogage avancés peuvent aider les développeurs à trouver et à résoudre les problèmes plus efficacement.
11. Prise en charge des types et structures de données avancés
L’introduction de types de données et de structures complexes dans Solidity peut inspirer de nouvelles possibilités de conception de contrats et de fonctionnalités. Il peut s’agir de la prise en charge de types numériques plus complexes, de structures de données améliorées ou de méthodes améliorées pour gérer de grands ensembles de données dans les contrats.
Solidity peut introduire une nouvelle structure de données, telle que TreeMap, qui organise les données de manière triée pour une récupération efficace. Cela peut être utile dans les contrats où les données doivent être triées ou triées, comme dans les systèmes de vote. [Note du traducteur : Semblable à l’arbre rouge et noir.] Une autre avancée pourrait être de prendre en charge des types de nombres plus complexes, tels que les nombres à virgule fixe, qui peuvent effectuer des opérations mathématiques précises directement dans le contrat.
12. Présentation des génériques et des modèles
Les génériques et les modèles dans Solidity rendront possible un code plus adaptable et réutilisable. Par exemple, vous pouvez créer une fonction générique pour gérer différents types d’actifs (tels que les jetons ERC20, les NFT, etc.) de manière standardisée sans avoir à réécrire la fonction pour chaque type d’actif spécifique. Cela améliorera l’efficacité de la conception et du développement des contrats, car une seule fonction peut être appliquée à une variété de scénarios.
Perspectives d’avenir : la route vers la solidité 1.0.0
Sur diverses plateformes telles que Github, Twitter, Ethresearch et Reddit, il y a beaucoup de discussions au sein de la communauté Solidity sur le développement de la version 0.9.0.
L’un des points centraux du débat est le dévoilement :
S’agit-il d’une transition simple et prudente vers Solidity 1.0.0 pour déclarer la pleine maturité du langage, ou s’agit-il d’une progression progressive vers une version plus avancée avec la version 0.9.0 d’abord ?
Influencés par les commentaires de la communauté et les idées créatives, les débuts attendus de Solidity 1.0.0 coïncideront probablement avec une mise à jour majeure de ETH Workshop, reflétant la croissance et la stabilité de l’écosystème dans son ensemble.
L’évolution des systèmes de type : amélioration de la flexibilité et de la sécurité. On s’attend à ce qu’il y ait un système de type mise à niveau qui s’inspire des langages de programmation fonctionnels tels que Haskell ou Scala. Cette évolution vise à accroître la sécurité et la flexibilité du développement des contrats.
Prise en charge native intégrée d’Oracle : Simplifiez les interactions avec les données externes. Les plans incluent l’intégration de la prise en charge intégrée des oracles décentralisés dans Solidity, facilitant ainsi des interactions plus sécurisées et directes avec des sources de données externes.
Améliorer la gestion de l’état : Améliorer l’interaction avec la blockchain. Des améliorations des capacités de gestion des états sont en cours de discussion, et des éléments tels que les canaux d’état ou les sidechains peuvent être introduits en tant que structures intégrées conçues pour optimiser les interactions sur la blockchain et réduire les frais de gaz.
Approche modulaire de la conception des contrats : améliorer la réutilisation. Le passage à une architecture contractuelle modulaire est envisagé, permettant l’utilisation de composants remplaçables. Cela simplifie considérablement le processus de développement et améliore l’opérabilité du code.
Intégrer des outils de vérification formelle : assurer la fiabilité des contrats. On s’attend à ce que les outils de vérification formelle soient intégrés directement dans Solidity, une initiative qui vise à garantir que les contrats sont conformes à des normes et à des comportements spécifiques, réduisant ainsi la probabilité d’erreurs et de vulnérabilités.
Développez des capacités inter-chaînes : Réalisez l’interopérabilité entre les blockchains. Les futures mises à jour pourraient introduire des fonctionnalités natives de compatibilité inter-chaînes, permettant aux contrats Solidity de fonctionner sans problème sur une variété de protocoles blockchain.
Mettez en œuvre des mesures avancées de confidentialité : Améliorez la sécurité des données. Des plans sont en cours pour intégrer des outils avancés de protection de la vie privée, tels que les preuves à divulgation nulle de connaissance ou le chiffrement homomorphe, directement dans le langage afin d’améliorer la sécurité des données et la confidentialité des utilisateurs.
Cryptographie quantique : se préparer aux défis futurs. Compte tenu des capacités émergentes de l’informatique quantique, les gens envisagent de mettre en œuvre des méthodes de cryptographie résistantes au quantique pour protéger ETH contrats contre les menaces futures potentielles.
Conclusion
Alors que vous explorez les voies potentielles vers Solidity, cet article combine des informations sur la communauté et les développements actuels avec des projections de la communauté pour vous donner une compréhension globale du sujet. Bien que nous ayons exploré les possibilités des versions 0.9.0 et 1.0.0, la trajectoire réelle et l’ensemble des fonctionnalités sont susceptibles de changer au fur et à mesure que Solidity poursuit son parcours de développement. Restez à l’écoute pour voir comment ces conversations et concepts prennent vie dans le monde en constante évolution de la programmation de contrats intelligents.