Maison > Périphériques technologiques > Industrie informatique > Code de solidité de qualité avec Openzeppelin et amis

Code de solidité de qualité avec Openzeppelin et amis

William Shakespeare
Libérer: 2025-02-16 11:20:10
original
339 Les gens l'ont consulté

Openzeppelin: un outil puissant pour assurer la sécurité des contrats intelligents Ethereum

Quality Solidity Code with OpenZeppelin and Friends

Points de base

  • Openzeppelin fournit aux développeurs Ethereum un jeu d'outils précieux qui comprend des modèles de code de solidité sécurisés et fiables et des modules de contrat intelligents, qui est devenu la norme de l'industrie et peut être facilement déployé par truffe.
  • La bibliothèque Openzeppelin contient une variété de contrats pour la publication de jetons sur la plate-forme Ethereum, y compris les jetons ERC20, ERC721 et ERC827. Il propose également un ensemble de contrats de financement participatif pour les offres de jetons initiaux (ICO), avec diverses fonctionnalités telles que les achats record, la livraison de jetons et le transfert des fonds ETH.
  • Zeppelinos est une plate-forme d'outil et de service décentralisée pour développer et gérer des applications de contrat intelligentes sécurisées. Il promet de permettre aux développeurs de sélectionner la variabilité de leur code déployé via le mode de mise à niveau, abordant ainsi l'immuabilité inhérente aux contrats intelligents déployés sur Ethereum.
  • Le cadre de truffes est l'environnement de développement, le cadre de test et le pipeline d'actifs d'Ethereum. Il comprend des boîtes à truffes, c'est-à-dire la plaque de chauffeur qui contient du code JavaScript frontal, des contrats de solidité et des utilitaires de workflow. Tokenmarket et consensys sont également des outils bien connus pour gérer les ventes de jetons et fournir les meilleures pratiques du contrat intelligent Ethereum.

L'informatique d'Ethereum doit être reproduite sur tous les nœuds du réseau, donc son informatique est coûteux et inefficace (en fait, la documentation du développeur GitHub d'Ethereum indique que nous ne devons pas nous attendre à ce que le pouvoir informatique d'Ethereum dépasse 1999 en 1999. Téléphone mobile).

Par conséquent, la sécurité de la machine virtuelle Ethereum (EVM), c'est-à-dire la sécurité des contrats intelligents déployés sur la blockchain Ethereum, est crucial. Toutes les erreurs peuvent provoquer des pertes économiques réelles, qu'elle soit causée par de mauvais codes de contrat ou des pertes causées par les pirates exploitant des vulnérabilités contractuelles telles que le tristement célèbre hack DAO qui a conduit à la part de la communauté et a donné naissance à la blockchain classique Ethereum.

Turing l'exhaustivité et une gamme d'autres décisions de conception rendent Ethereum plus puissant et plus complexe, mais en paient également le prix. La richesse d'Ethereum le rend plus vulnérable aux erreurs et au piratage.

Ce qui est pire, c'est que les contrats intelligents déployés sur Ethereum ne peuvent pas être modifiés. La blockchain est une structure de données immuable.

Cet article explore la sécurité des contrats intelligents et l'écosystème des outils et des bibliothèques qui nous aident à rédiger des contrats intelligents sécurisés.

Jetons un coup d'œil à des mises à niveau d'outils incroyables que nous pouvons utiliser tout de suite pour profiter des meilleures pratiques fournies par l'environnement Solidity.

AIDS

L'un des outils les plus cool pour les développeurs Ethereum est la bibliothèque Openzeppelin. Il s'agit d'un cadre qui contient de nombreux modèles de code de solidité sécurisés et fiables et modules de contrat intelligents. Les auteurs eux-mêmes sont des auditeurs et des consultants de Solidity, où vous pouvez lire des rapports d'audit tiers sur ces modules. Manuel Araoz de Zeppelin Solutions, une entreprise basée en Argentine, décrit les principaux modèles et considérations de sécurité de la solidité.

Openzeppelin est devenu la norme de l'industrie pour le code de solidité open source réutilisable et sécurisé (MIT), facilement déployé avec la truffe. Il se compose de contrats intelligents qui peuvent être facilement importés et utilisés dans nos contrats une fois installés via NPM.

Quality Solidity Code with OpenZeppelin and Friends

Truffle Framework publie un tutoriel sur la façon d'utiliser Openzeppelin avec truffe et ganache.

Ces contrats sont destinés à être importés et leurs méthodes sont également censées être couvertes au besoin. Le fichier lui-même ne doit pas être modifié.

Mode ICO

La bibliothèque Openzeppelin contient un ensemble de contrats pour la publication de jetons sur la plate-forme Ethereum - pour les jetons ERC20, y compris les contrats BasicToken, BurableTokens, CappageTokens (jetons à menthes avec des capuchons fixes), Intabletokens, Pausabletokens (les transferts de jetons peuvent être suspendus). Il y a également des jetons (un contrat qui peut progressivement libérer son équilibre de jeton comme un plan d'acquisition typique, avec des périodes de falaise et des périodes d'acquisition) et ainsi de suite.

Il existe également des contrats pour les jetons ERC721 (ou des jetons uniques irremplaçables du type cryptokitties).

comprend également le contrat de jeton ERC827, qui est utilisé pour envoyer des données lors du trading de jetons.

Il existe également des contrats de financement participatif - contrats pour les offres de jetons initiaux. Ces contrats peuvent enregistrer les achats, livrer / émettre des jetons aux acheteurs et transmettre des fonds ETH. Il existe également certaines fonctionnalités pour vérifier et traiter les achats de jetons.

FinalizableCrowDSALE Le contrat permet l'exécution d'une certaine logique après la vente. PostDeliveryCrowdsale permet à les retraits d'être gelés jusqu'à la fin du crowdfunding. REFNDABLECROWDSALE est une extension du contrat de crowdsale qui ajoute des objectifs de financement et la possibilité que les utilisateurs puissent obtenir un remboursement si l'objectif n'est pas atteint.

Le contrat destructible peut être détruit par le propriétaire et tous les fonds sont envoyés au propriétaire. Certains contrats sont également utilisés pour réaliser la pauseabilité des sous-traits.

Openzeppelin fournit de nombreux sida et utilitaires pour ICO- pour exemple, un contrat qui peut récupérer les jetons ERC20 envoyés à une adresse ICO au lieu d'ETH. Un contrat héritable permet le transfert de propriété à un autre propriétaire dans certaines circonstances. Le contrat propriétaire a une adresse de propriétaire et fournit une autorisation / autorisation de base et un transfert de propriété.

Les contrats RBAC fournissent un utilitaire de contrôle d'accès basé sur les rôles. Nous pouvons attribuer différents rôles à différentes adresses, et il n'y a pas de limite sur le nombre de rôles.

Zeppelin fournit également un exemple de projet de truffes de startup de financement participatif qui n'a pas été audité, il est donc préférable de l'utiliser comme apprêt pour utiliser Openzeppelin. Il est facile de démarrer rapidement le financement participatif et les jetons.

zeppelinos

Quality Solidity Code with OpenZeppelin and Friends

Zeppelinos est un outil et une plate-forme de service open source et décentralisés construits sur EVM pour développer et gérer en toute sécurité les applications de contrat intelligentes.

En fait, il s'agit de la couche middleware au-dessus de l'EVM, qui va plus loin que le cadre Openzeppelin actuel. Les solutions Zeppelin promettent ici de permettre aux développeurs de sélectionner la variabilité de leur code déployé via le mode de mise à niveau. Ceux qui rédigent des contrats intelligents pour les EVM savent qu'un problème / restriction est l'immuabilité des contrats déployés: une fois que vous entrez dans la blockchain, le contrat ne peut pas être modifié. C'est l'une des raisons pour lesquelles la promesse de Zeppelinos est si attrayante.

Jusqu'à présent, afin de "mettre à jour" le contrat, deux contrats doivent être déployés - l'un comme proxy avec une interface et l'autre comme implémentation. La fonction du proxy sera appelée et la demande sera transmise à l'implémentation. Ensuite, si des modifications sont nécessaires, basculez l'implémentation dans le proxy (repositionnant une autre implémentation et ayant la possibilité de désactiver l'implémentation d'origine avec la fonction de suicide), et la nouvelle implémentation sera activée de manière transparente.

Nous attendons avec impatience la future adoption de Zeppelinos par la communauté. Zeppelin Solutions a mentionné certains participants non triviaux tels que OpenBazaar, District0x, Storj.io, et ils utilisent des Zeppelinos.

Quality Solidity Code with OpenZeppelin and Friends

Boîtes à truffes

Le cadre de truffes est l'environnement de développement, le cadre de test et le pipeline d'actifs d'Ethereum. Il s'agit de l'ensemble d'outils le plus complet et de l'ensemble d'outils le plus utilisé parmi les développeurs Ethereum. L'écosystème de Truffle comprend de nombreuses boîtes à truffes - les Coilers qui incluent le code JavaScript frontal, les contrats de solidité et les services publics de flux de travail tels que les projets WebPack avec leurs ensembles d'outils, tels que la migration, les tests, la construction de pipelines, etc. Les boîtes à truffes peuvent inclure un DAPP complet de démarrage.

Certaines boîtes officiellement soutenues incluent:

  • DRIZZLE: Un ensemble de bibliothèques frontales basées sur React / Redux pour faciliter la création de DAPP frontaux.
  • REACT BOX: Une application simple pour interagir avec les contrats intelligents en commençant par une application frontale React.
  • React Auth Box: fournit un ensemble de composants requis pour l'authentification pris en charge par les contrats intelligents.
  • react-uport: cette boîte d'authentification relie le frontal au système d'authentification Uport Blockchain.
  • Il existe également la boîte de modèle de projet WebPack mentionnée ci-dessus.

Les boîtes créées par la communauté apportent également un passe-partout au contrat d'intégration de l'application mobile / IM, ou fournissent une baillare Angular et Vue.js, etc.

Ces boîtes sont intégrées à la truffe, nous pouvons donc les démarrer en exécutant des commandes comme Truffle Unbox React - cela téléchargera la boîte React et installer ses dépendances localement.

tokenmarket

Tokenmarket est une autre entreprise qui a publié des contrats de solidité et des outils pour gérer les ventes de jetons / ICOS. Il s'agit d'une société limitée enregistrée à Gibraltar et engagée dans les activités de conseil d'ICO. Il a remporté le prix du "meilleur consultant ICO" au Crypto World de Berlin 2018.

Le référentiel ICO de Tokenmarket

sur GitHub indique que l'un de ses objectifs / principes de conception consiste à utiliser ou à construire des contrats Openzeppelin existants, l'appelant l'étalon-or pour les contrats de solidité. Par conséquent, la plupart de la base de code ICO de Tokenmarket est basée sur la base de code d'Openzeppelin, puis s'y construit (en héritant d'une manière orientée objet).

Tokenmarket périodiquement (essayant) de se synchroniser avec sa base de code en amont Openzeppelin. Cependant, il ajoute également plus de contenu, tel que:

  • Contrat Amltoken: cela donne au propriétaire la possibilité de récupérer le jeton du participant avant la libération du jeton si le participant ne réussit pas après un long processus de LMA.
  • portefeuille Gnosis: Fondamentalement, il s'agit d'un portefeuille multi-signe, obligeant plusieurs participants à atteindre un consensus sur certaines transactions.
  • Émission centralisée de contrats de jetons.
  • KYCCROWDSALE: Un contrat que seuls les investisseurs non anonymes sont autorisés à participer.
  • Contrat de financement participatif redémarré: cela restaurera le financement participatif antérieur et permettra des modifications à certains paramètres.
  • Prix d'étape: ce contrat offre des prix basés sur les étapes et des transactions pré-ICO.

EVM est Turing-complete, donc tous ces différents contrats ne peuvent même pas vider sa pleine fonctionnalité à distance, malgré le lot de code dans le référentiel dont nous discutons ici. Si le système (Ethereum) peut survivre et continuer à être compétitif, et qu'il y a suffisamment de personnes sur le réseau, nous pouvons nous attendre à une plus grande polyvalence des problèmes que ces contrats de blockchain tentent de résoudre.

consensys

CONSENSY Ventures est une entreprise suisse de capital-risque qui se positionne comme une entreprise de capital-risque dans l'espace décentralisé, en particulier dans l'espace Ethereum. En plus des autres ressources qu'ils fournissent aux entreprises protégées, elles ont compilé une brève compilation des meilleures pratiques du contrat intelligent Ethereum. Bien que ce ne soit pas un code strictement, il contient toujours de nombreux exemples des avantages et des inconvénients du code de solidité.

Il se concentre sur les meilleures pratiques de sécurité des contrats intelligents de Solidity.

La liste complète des sujets dépasse le cadre de cet article, car la ressource est très complète et même un rappel en lecture pour les développeurs de contrats intelligents à garder à l'esprit lors de la rédaction d'un logiciel pour les EVM. Cela est particulièrement vrai si quelqu'un écrit un programme à partir de zéro (sans compter sur le code prêt et prouvé comme Openzeppelin).

Certains articles impliquent des appels externes, en évitant les modifications d'état après les appels externes, en gérant les erreurs dans les appels externes, en hiérarchiser le traction plutôt La création d'équilibre, la distinction entre les fonctions et les événements, les considérations de succession multiples, les avertissements sur les dépendances d'horodatage et la jouabilité de ces structures (par exemple, en utilisant des blocs) - et de nombreuses autres astuces de ce type, avec beaucoup d'exemples de code.

sont alors des avertissements spécifiques aux jetons, des avertissements liés aux normes de jeton, des techniques d'ingénierie logicielle, des outils de sécurité - pour l'analyse statique, les tests, les vérificateurs de code, etc.

Ils ont également énuméré les attaques connues, y compris celles appelant du code externe et des contrats, des fonctions qui peuvent être appelées à plusieurs reprises dans ce cas, des problèmes de rentrée, des conditions de course croisée, où ils ont analysé une série de problèmes, certains de ces problèmes se manifestent Dans l'incident de piratage DAO.

Ils ont en outre mentionné les dépendances de tri des transactions, les dépendances d'horodatage, le débordement entier et le sous-flux, différents types de possibilités / points d'attaque DOS, tels que l'utilisation du DOS limité en blocs, puis l'envoi de l'éther de force au contrat; Attaques obsolètes. Assurez-vous de lire leur documentation.

Conclusion

Dans cette introduction à l'écosystème, nous introduisons certaines des ressources disponibles pour les contrats intelligents qui sont bien écrits sur les machines virtuelles Ethereum qui peuvent être utilisées pour la production. Cela comprend la réutilisation du code vérifié et vérifié (Openzeppelin réclame plus de 4 milliards de dollars de crypto-monnaie sur son contrat) et d'apprendre à écrire votre propre logiciel sécurisé et prêt pour la production.

Nous sommes très sûrs que cette liste n'est pas complète. Avons-nous manqué quelque chose qui mérite d'être mentionné? S'il vous plaît dites-nous!

Des questions fréquemment posées sur la solidité et Openzeppelin

Quelle est la principale utilisation d'Openzeppelin dans la solidité?

Openzeppelin est une bibliothèque pour un développement de contrats intelligents sécurisé. Il fournit des implémentations de normes telles que ERC20 et ERC721, que vous pouvez déployer en tel quel, ou évoluer vers vos besoins, ainsi que des composants de solidité pour la construction de contrats personnalisés et des systèmes décentralisés plus complexes. Openzeppelin aide à protéger les projets de blockchain contre les menaces communes en fournissant un code testé et communautaire.

Comment Openzeppelin assure-t-il la sécurité des contrats intelligents?

Openzeppelin assure la sécurité des contrats intelligents en fournissant une base de code testée, réutilisable et sécurisée. La bibliothèque des contrats Openzeppelin est la solution la plus utilisée dans le développement de contrats intelligents Ethereum. Il est conçu pour être une ressource de code sûre et fiable que les développeurs peuvent réutiliser, réduisant ainsi la portée des vulnérabilités potentielles dans un seul contrat intelligent.

Comment mettre à niveau mon contrat intelligent à l'aide d'Openzeppelin?

Openzeppelin fournit des plugins de mise à niveau que vous pouvez utiliser pour mettre à niveau les contrats intelligents. Ces plugins offrent un moyen facile et sécurisé de mettre à niveau les contrats intelligents au fil du temps pour ajouter de nouvelles fonctionnalités ou corriger les bogues. Ces plugins sont conçus pour fonctionner avec des environnements de développement truffes et hardés.

Quel est le rôle de Truffle dans Openzeppelin?

La truffe est l'environnement de développement, le cadre de test et le pipeline d'actifs d'Ethereum. Il joue un rôle crucial dans Openzeppelin en fournissant un environnement de test pour les contrats intelligents. La suite d'outils de Truffle aide les développeurs à créer, compiler, déployer et tester des contrats intelligents dans un environnement unifié.

Comment utiliser Openzeppelin avec la truffe?

Pour utiliser Openzeppelin avec truffe, vous devez installer les deux dans votre projet. Une fois l'installation terminée, vous pouvez importer le contrat Openzeppelin dans votre propre contrat et le développer en fonction de vos besoins. La truffe sera utilisée pour compiler et déployer votre contrat.

Quels sont les avantages de l'utilisation d'Openzeppelin pour mon projet de solidité?

Openzeppelin fournit une pierre angulaire de stabilité et de sécurité pour votre projet de solidité. Il fournit une base de code testée, réutilisable et sécurisée qui peut aider à protéger vos projets contre les menaces communes. Il fournit également des outils pour mettre à niveau les contrats intelligents, vous permettant d'ajouter de nouvelles fonctionnalités ou de corriger les bogues au fil du temps.

Comment contribuer à la communauté Openzeppelin?

La communauté Openzeppelin se félicite de la contribution des développeurs. Vous pouvez contribuer en signalant des bogues, en suggérant de nouvelles fonctionnalités ou en écrivant du code. Toutes les contributions seront auditées par la communauté et contribueront à améliorer la sécurité et les fonctionnalités d'Openzeppelin.

Puis-je utiliser Openzeppelin pour d'autres projets de blockchain autres que Ethereum?

Alors qu'Openzeppelin est principalement conçu pour être utilisé dans Ethereum, bon nombre de ses principes et bibliothèques peuvent être appliqués à d'autres projets de blockchain. Cependant, les détails de mise en œuvre spécifiques peuvent varier en fonction de la plate-forme blockchain que vous utilisez.

Comment Openzeppelin gère-t-il les normes ERC20 et ERC721?

Openzeppelin fournit des implémentations des normes ERC20 et ERC721 que vous pouvez déployer telles quelles ou évoluer à vos besoins. Ces implémentations sont sûres et fiables, et sont testées et auditées par la communauté.

Quelles sont les alternatives pour Openzeppelin développées par Solidity?

Bien que Openzeppelin soit un choix populaire pour le développement de la solidité, d'autres bibliothèques et cadres sont disponibles. Il s'agit notamment de la truffe, du hardhat et de l'éther.js. Chacun a ses propres forces et faiblesses, et le meilleur choix dépend de vos besoins et préférences spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal