Programmes

N'importe quel développeur peut écrire et déployer des programmes sur la blockchain Solana. Les programmes (connus sous le nom de contrats intelligents sur d'autres protocoles) servent de base à l'activité sur la blockchain, permettant tout, partant de la DeFi et des NFTs jusqu'aux médias sociaux tout en passant par les jeux.

Faits

Fiche d'Information

  • Les programmes traitent les instructions des utilisateurs finaux mais aussi d'autres programmes
  • Tous les programmes sont stateless (sans état): toutes les données avec lesquelles ils interagissent sont stockées dans des comptes séparés qui sont transmis par des instructions.
  • Les programmes eux-mêmes sont stockés dans des comptes marqués comme executable
  • Tous les programmes appartiennent au BPF Loaderopen in new window et sont exécutés par le Solana Runtimeopen in new window
  • Les développeurs écrivent le plus souvent des programmes en Rust ou en C++, mais ils peuvent choisir n'importe quel langage qui cible le backend BPFopen in new window de LLVMopen in new window
  • Tous les programmes ont un point d'entrée unique où le traitement des instructions a lieu (i.e. process_instruction); et dont les paramètres incluent toujours:
    • program_id: pubkey
    • accounts: array,
    • instruction_data: byte array

Examen plus approfondi

Contrairement à la plupart des autres blockchains, Solana sépare complètement le code des données. Toutes les données avec lesquelles les programmes interagissent sont stockées dans des comptes séparés et sont transmises, en tant que références, via des instructions. Ce modèle permet à un seul programme générique de fonctionner sur plusieurs comptes sans nécessiter de déploiements supplémentaires. Des exemples communs de ce modèle sont observés dans les programmes natifs et les programmes SPL.

Programmes Natifs & La Bibliothèque des Programmes de Solana (SPL)

Solana est équipé d'un certain nombre de programmes qui servent d'éléments de base pour les interactions sur la blockchain. Ces programmes sont divisés en Programmes Natifsopen in new window et en Programmes de la Bibliothèque des Programmes de Solana (SPL)open in new window.

Les Programmes Natifs fournissent les fonctions de base nécessaires au fonctionnement des validateurs. Parmi ces programmes, le plus connu est le Programme Système (System Program)open in new window qui est responsable de l'administration des nouveaux comptes et de transférer des SOL entre deux parties.

Les programmes de la Bibliothèque des Programmes de Solana (SPL) prennent en charge d'autres activités au sein de la blockchain, telles que, par exemple, la création de jetons, l'échange de jetons ainsi ou encore le prêt de jetons, ainsi que la création de pools de staking et le maintien on-chain du service de noms de domaine. Le Programme de Jeton SPL (SPL Token Program)open in new window peut être invoqué directement via l'interface CLI, tandis que d'autres, comme le Programme de Compte de Jeton Associé (Associated Token Account Program)open in new window sont généralement utilisés par d'autres programmes.

Ecrire des programmes

Les programmes sont le plus souvent développés avec Rust ou C++, mais peuvent être développés avec n'importe quel langage qui cible le backend BPF de LLVM. Les initiatives récentes de Neon Labsopen in new window et Solangopen in new window permettent la compatibilité EVMopen in new window et permettent donc aux développeurs d'écrire des programmes en Solidity.

La plupart des programmes Rust suivent l'architecture suivante :

FichierDescription
lib.rsRegistre des modules
entrypoint.rsPoint d'entrée du programme
instruction.rsAPI du programme, (dé)sérialisation des instructions
processor.rsLogique du programme
state.rsObjets du programme, (dé)sérialisation des états
error.rsErreurs spécifiques au programme

Récemment, Anchoropen in new window est devenu le framework le plus populaire pour le développement de programmes. Anchor est un framework, semblable à Ruby on Rails, qui réduit le boilerplate (code passe-partout) et facilite la (dé)sérialisation pour les programmes développés en Rust.

Les programmes sont généralement développés et testés dans les environnements appelés Localhost et Devnet avant d'être déployés sur le Testnet ou le Mainnet. Solana supporte les environnements suivants :

Environnement du clusterURL de Connexion RPC
Mainnet-betahttps://api.mainnet-beta.solana.com
Testnethttps://api.testnet.solana.com
Devnethttps://api.devnet.solana.com
LocalhostDefault port: 8899 (e.g. http://localhost:8899, http://192.168.1.88:8899)

Une fois déployés dans un environnement, les clients peuvent interagir avec les programmes de la blockchain via les Connexions RPCopen in new window du cluster correspondant.

Déployer des programmes

Les développeurs peuvent déployer leurs programmes via le CLIopen in new window:

solana program deploy <PROGRAM_FILEPATH>

Lorsqu'un programme est déployé, il est compilé en un objet partagé ELF (ELF shared object)open in new window (contenant le bytecode du BPF) et téléchargé sur le cluster Solana. Les programmes vivent dans des comptes (comme à peu près tout ce qui se trouve sur Solana), sauf que ceux-ci sont marqués comme executable et assigné au BPF Loader. L'adresse de ce compte est appelée program_id et est utilisée pour référencer le programme dans toutes les transactions futures.

Solana supporte plusieurs BPF Loaders, dont le dernier en date est le Upgradable BPF Loaderopen in new window. Le BPF Loader est chargé de gérer les comptes du programme et de les rendre accessibles aux clients via le program_id. Tous les programmes ont un point d'entrée unique où le traitement des instructions a lieu (i.e. process_instruction) et dont les paramètres incluent toujours:

  • program_id: pubkey
  • accounts: array,
  • instruction_data: byte array

Une fois invoqués, les programmes sont exécutés par le Runtime de Solana.

Autres Ressources

Last Updated: