Polkadot est un réseau multichaîne dans lequel une relay chain apporte une sécurité partagée à des chaînes connectées, les parachains, qui communiquent grâce à un format de message commun (XCM). Un projet peut déployer des smart contracts sur une parachain qui les prend en charge, ou développer sa propre logique de runtime. Le périmètre d'audit diffère fortement entre ces deux options.
Développer sur Polkadot
Les chaînes sont construites avec le Polkadot SDK (anciennement Substrate) en Rust, la logique étant organisée en pallets FRAME qui composent le runtime de la chaîne. Les smart contracts peuvent être écrits en ink!, un langage fondé sur Rust et compilé en WebAssembly, sur les chaînes qui le prennent en charge, ou en Solidity sur les parachains compatibles EVM. Les messages XCM transportent actifs et instructions entre chaînes.
- Langages : Rust pour les runtimes et les contrats ink!, Solidity sur les parachains compatibles EVM
- Outils : le Polkadot SDK, cargo-contract pour ink!, les frameworks EVM standard le cas échéant
- Le modèle d'exécution dépend de la chaîne de déploiement
Ce que regardent les auditeurs
- Les pallets du runtime : poids et benchmarks, paniques, stockage non borné, vérification de l'origine des appels
- La configuration XCM : origines et actifs de confiance, barrières, paiement des frais, réserves d'actifs
- Les mises à jour du runtime et les migrations de stockage susceptibles de corrompre l'état existant
- Les contrats ink! : arithmétique, appels inter-contrats, paramètres de réentrance, mécanismes de mise à jour
- Les risques propres à l'EVM lorsque les contrats tournent sur une parachain compatible
Avant de demander des devis
- Précisez si vous livrez des pallets, un runtime complet, des contrats ink! ou Solidity, et la chaîne visée
- Indiquez la version du SDK ou d'ink! et, le cas échéant, la configuration du runtime
- Décrivez les flux entre chaînes et les actifs concernés
- Fournissez tests et benchmarks des pallets, et expliquez la gouvernance des mises à jour