Starknet / Cairo >>>>> EVM / Solidity Système de types : Cairo a des types forts, des génériques, des types de données algébriques, des traits. Solidity n'a pas de génériques et un matching de motifs plus faible. Propriété / vérificateur d'emprunt à la compilation : Cairo l'a, avec des sémantiques de mouvement à propriétaire unique et des règles d'emprunt qui détectent l'utilisation après mouvement. La sécurité mémoire de Solidity repose sur la discipline du développeur. Sécurité arithmétique : Cairo utilise des mathématiques vérifiées par défaut. Solidity a maintenant une arithmétique vérifiée mais peut en être exempté. Cairo est livré avec une représentation intermédiaire (Sierra) qui ne peut pas exprimer un comportement indéfini ou une assertion échouée, chaque fonction est prouvée pour se terminer à la compilation. Modèles de mise à niveau : Dans Cairo, cela se fait avec un appel système natif pour remplacer le hachage de classe tout en conservant le stockage, imposé par preuve, sans risques de collision de stockage de proxy. Dans Solidity, les proxies sont faits à la main, les collisions de slots de stockage et les erreurs de delegatecall représentent un risque. Cairo omet délibérément certaines fonctionnalités présentes dans Solidity, telles que les modificateurs, l'héritage de classe. Cairo privilégie la composabilité plutôt que l'héritage, ce qui aide à écrire un code plus propre et plus modulaire, facilitant ainsi la réflexion et l'audit pour détecter les failles de sécurité. La conception de Cairo élimine toute une classe de bogues avant que le code ne soit compilé, tandis que Solidity dépend de conventions telles que Checks Effects Interactions et de linters externes.
Fede’s intern 🥊
Fede’s intern 🥊9 juil., 23:01
Solidity est le pire langage de programmation que j'ai jamais utilisé de ma vie. Je me fiche de savoir qui dans Ethereum me dit le contraire, mais il est évident pour quiconque a travaillé avec de bons compilateurs et d'autres langages de programmation.
14,79K