Tous les termes

Glossaire

Solidity

Langage dominant pour écrire des smart contracts sur Ethereum et les chaînes EVM.

Solidity est un langage typé statiquement, orienté contrat, compilé vers du bytecode EVM. C'est le langage dans lequel l'écrasante majorité du code DeFi, NFT et de gouvernance on-chain est écrite.

En sécurité, Solidity a un historique qu'il faut connaître :

  • Les versions pré-0.8 avaient un overflow et underflow silencieux des entiers. La plupart des exploits majeurs de reentrancy et d'arithmétique entre 2016 et 2020 ont eu lieu sur ces versions.
  • 0.8.x a introduit des vérifications d'overflow nativement mais a gardé beaucoup de footguns : tx.origin, call avec calldata arbitraire, proxies basés sur delegatecall, selfdestruct (aujourd'hui retiré).
  • Les versions récentes (0.8.20+) ont fait évoluer les layouts de stockage, le comportement de l'optimiseur, et les immutables d'une façon qui a causé de vrais incidents quand des bibliothèques ont été upgradées sans précaution.

Bien lire du Solidity est une compétence distincte de bien en écrire. Les auditeurs passent leur carrière à apprendre à voir ce qui n'est pas dans le code, checks manquants, modificateurs manquants, reverts manquants.

Voir aussi

Termes liés.

Services

Comment nous travaillons sur ce sujet.

Par secteur

Là où ça apparaît.

À lire

Sur le blog.

Besoin de régler ça concrètement ? Parlons-en.