Solana est une blockchain à haut débit conçue pour une faible latence et l'exécution parallèle des transactions. Ses smart contracts, appelés programmes, suivent un modèle très différent de l'EVM : l'expérience acquise sur Ethereum ne se transpose pas directement. Choisir Solana, c'est travailler avec des spécialistes Rust et prévoir un audit centré sur la façon dont les comptes sont transmis et validés.
Développer sur Solana
Les programmes sont sans état : les données vivent dans des comptes distincts que chaque transaction doit lister explicitement, et le programme doit vérifier que chaque compte reçu est bien celui qu'il attend. Les programmes s'appellent entre eux par des invocations inter-programmes et contrôlent des comptes dérivés de leur propre adresse (program derived addresses, ou PDA). Ils sont évolutifs par défaut grâce à une autorité de mise à jour, qui peut être conservée, transférée ou supprimée.
- Langage : Rust, compilé pour l'environnement d'exécution Solana
- Framework : Anchor, qui génère une grande partie du code de validation des comptes
- Tokens : les programmes de tokens SPL, dont le programme plus récent à extensions
- Non compatible EVM
Ce que regardent les auditeurs
- La validation des comptes : vérification du propriétaire et du signataire, confusion de types entre comptes, substitution d'un compte légitime par celui d'un attaquant
- Les PDA : conception des seeds, gestion du bump, collisions entre types de comptes
- Les invocations inter-programmes : appel du bon identifiant de programme et privilèges transmis
- L'arithmétique et la précision sur les montants, avec des arrondis en faveur du protocole
- L'autorité de mise à jour, la fermeture et la réinitialisation de comptes, les limites de calcul sur les opérations lourdes
Avant de demander des devis
- Précisez si le programme utilise Anchor ou Rust natif, et la version d'Anchor
- Décrivez chaque instruction avec les comptes attendus et leurs contraintes
- Fournissez des tests couvrant les cas d'échec, pas seulement les parcours nominaux
- Indiquez qui détient l'autorité de mise à jour et si le programme sera rendu immuable