La différence entre les modèles de programmation Solana et ETH

Avancé5/22/2024, 7:43:04 PM
Cet article compare les modèles de programmation de contrats intelligents de Solana et d'Ethereum. Les programmes on-chain de Solana sont similaires aux contrats intelligents d'Ethereum, mais Solana offre un environnement d'exécution différent grâce à son modèle de compte unique et son approche de découplage des données. Le modèle de compte de Solana sépare le code et le stockage des données, renforçant la sécurité. Solana utilise principalement le langage Rust pour le développement de contrats intelligents, offrant des performances et une sécurité élevées mais avec une courbe d'apprentissage abrupte. Ethereum, quant à lui, utilise principalement Solidity, offrant une expérience de développement plus simple et plus mature. Malgré les défis de développement avec Solana, sa haute capacité de traitement, ses coûts réduits et sa scalabilité en font un choix idéal pour le développement de dApps haute performance.

Solana est une plateforme blockchain haute performance conçue pour prendre en charge les dApps, connue pour sa vitesse et sa scalabilité obtenues grâce à des mécanismes de consensus uniques et des conceptions architecturales. Cet article présentera brièvement les fonctionnalités du modèle de programmation de contrats intelligents de Solana, en le comparant à Ethereum pour le contexte.

Contrats intelligents et programmes sur chaîne :

Les programmes s'exécutant sur Ethereum sont connus sous le nom de contrats intelligents, qui sont une série de code (fonctions) et de données (état) situés à une adresse spécifique sur le réseau Ethereum. Les contrats intelligents sont également des comptes Ethereum, appelés comptes de contrat. Ils ont des soldes, peuvent être la cible de transactions, mais ne peuvent pas être contrôlés par des individus. Ils sont déployés sur le réseau pour s'exécuter en tant que programmes.

En revanche, le code exécutable s'exécutant sur Solana est appelé programmes On-Chain, qui interprètent les instructions envoyées avec chaque transaction. Ces programmes peuvent être déployés directement au cœur du réseau en tant que programmes natifs ou publiés par n'importe qui en tant que programmes SPL.

Instructions : les instructions sont des termes uniques pour les programmes on-chain de Solana. Elles consistent en des instructions qui exécutent des opérations spécifiques, formant l'unité d'exécution la plus petite pour les transactions Solana. Chaque transaction Solana contient une ou plusieurs instructions spécifiant les opérations à effectuer, y compris l'appel de programmes on-chain spécifiques, le passage de comptes, de listes d'entrées et la fourniture de tableaux d'octets. Les instructions ont des limites de calcul, il convient donc d'optimiser les programmes on-chain pour utiliser moins d'unités de calcul ou diviser les opérations coûteuses en plusieurs instructions.

Programmes natifs: ceux-ci fournissent les fonctionnalités essentielles requises par les nœuds validateurs. Le plus célèbre est le Programme Système, responsable de la gestion de la création de nouveaux comptes et du transfert de SOL entre deux comptes.

Les programmes SPL: ceux-ci définissent une série d'activités on-chain, notamment la création de jetons, l'échange, le prêt, la création de pools de mise en jeu, le maintien de services de résolution de noms de domaine on-chain, et plus encore. Parmi eux, le programme SPL Token est utilisé pour les opérations de jetons, tandis que des programmes comme le programme de compte de jetons associé sont couramment utilisés pour écrire d'autres programmes personnalisés.

Vous l'appelez contrats intelligents, je l'appelle programmes on-chain. Des noms différents, mais tous deux font référence à du code s'exécutant sur la blockchain. Tout comme Zhang San, Li Si et Wang Ma Zi sont tous des noms, la qualité de l'un devrait également être évaluée en fonction d'autres aspects.

Modèle de compte, Découplage des données:

Tout comme Ethereum, Solana est également une blockchain basée sur un modèle de compte, mais Solana propose un modèle de compte différent d'Ethereum, stockant les données d'une manière différente.

Sur Solana, les comptes peuvent contenir des informations sur le portefeuille et d'autres données. Les champs définis par un compte incluent les Lamports (le solde du compte), le Propriétaire (le propriétaire du compte), Exécutable (s'il s'agit d'un compte exécutable) et Données (les données stockées dans le compte). Chaque compte spécifie un programme comme propriétaire pour différencier l'état du programme qu'il stocke. Ces programmes sur chaîne sont en lecture seule ou sans état : les comptes de programme (comptes exécutables) stockent uniquement le bytecode BPF et ne stockent aucun état. Les programmes stockent leur état dans d'autres comptes indépendants (comptes non exécutables). Le modèle de programmation de Solana dissocie le code et les données.

D'autre part, les comptes Ethereum servent principalement de références à l'état de l'EVM (machine virtuelle Ethereum). Les contrats intelligents sur Ethereum contiennent à la fois la logique du code et le besoin de stocker des données utilisateur. Cela est souvent considéré comme un défaut de conception hérité de l'histoire de l'EVM.

Ne sous-estimez pas cette distinction ! Les contrats intelligents Solana sont fondamentalement plus difficiles à attaquer que les blockchains avec des modèles de programmation couplés, comme Ethereum :

Dans Ethereum, le “propriétaire” d'un contrat intelligent est une variable globale qui correspond directement à chaque contrat intelligent. Par conséquent, l'appel d'une certaine fonction pourrait directement modifier le “propriétaire” du contrat.

Cependant, sur Solana, le "propriétaire" d'un smart contract est lié aux données associées à un compte, plutôt qu'à une variable globale. Un compte peut avoir plusieurs propriétaires, au lieu d'une association un à un. Pour qu'un attaquant exploite une faille de sécurité dans un smart contract, il doit non seulement identifier la fonction problématique, mais aussi préparer les comptes "corrects" pour appeler cette fonction. Cette étape n'est pas facile car les smart contracts Solana impliquent généralement de multiples comptes d'entrée et gèrent leurs relations à travers des contraintes (comme account1.owner==account2.key). Le processus allant de la « préparation des bons comptes » au « lancement de l’attaque » est suffisant pour que les moniteurs de sécurité détectent de manière proactive les transactions suspectes impliquant la création de « faux » comptes liés à des contrats intelligents avant qu’une attaque ne se produise.

Les contrats intelligents d'Ethereum sont comme un coffre-fort avec un seul mot de passe unique. Une fois que vous avez ce mot de passe, vous obtenez la propriété complète. Ceux de Solana, en revanche, sont comme un coffre-fort avec de nombreux mots de passe. Pour y accéder, vous devez non seulement obtenir les mots de passe, mais aussi comprendre les identifiants correspondants avant de pouvoir ouvrir la porte.

Langage de programmation

Rust est le langage de programmation principal pour le développement de contrats intelligents sur Solana. Ses performances et ses fonctionnalités de sécurité le rendent adapté à l'environnement à haut risque de la blockchain et des contrats intelligents. Solana prend également en charge C, C++, et d'autres langages (bien que moins courants). Les SDK Rust et C officiels sont fournis pour soutenir le développement de programmes on-chain. Les développeurs peuvent utiliser des outils pour compiler des programmes en bytecode Berkeley Packet Filter (fichiers avec une extension .so) et les déployer sur la blockchain Solana. La logique des contrats intelligents est ensuite exécutée à travers l'exécution parallèle des contrats intelligents de Sealevel.

Cependant, en raison de la courbe d'apprentissage élevée du langage Rust et de son manque de personnalisation pour le développement blockchain, de nombreuses exigences se traduisent par un code redondant et une réinvention de la roue. Pour simplifier le développement, de nombreux projets en production utilisent le framework Anchor créé par la collaboration de Backpack et Armani. De plus, plusieurs nouveaux langages de programmation spécifiquement adaptés au développement blockchain, tels que Cairo (Starknet) et Move (Sui, Aptos), sont basés sur Rust.

De nombreux projets en production utilisent le framework Anchor.

Les contrats intelligents Ethereum sont principalement développés en utilisant le langage Solidity, qui a une syntaxe similaire à JavaScript, les fichiers de code ayant une extension .sol. En raison de sa syntaxe relativement simple et des outils de développement plus matures (comme le framework Hardhat et l'IDE Remix), Ethereum est généralement considéré comme offrant une expérience de développement plus simple et plus agréable par rapport à Solana, qui a une courbe d'apprentissage plus élevée. Malgré la popularité actuelle de Solana, le nombre de développeurs sur Ethereum reste bien plus important que sur Solana.

Dans des circonstances spécifiques, une voiture de course de haut niveau sera plus performante qu’une voiture modifiée. Rust, comme une voiture de course haut de gamme, assure efficacement les performances et la sécurité de Solana. Cependant, il n’est pas intrinsèquement conçu pour le développement de programmes on-chain, ce qui augmente en fait le niveau de difficulté de la conduite (développement). Les chaînes publiques qui adoptent des langages basés sur Rust et personnalisés pour le développement on-chain peuvent être comparées à la modification de cette voiture de course pour mieux s’adapter aux conditions routières. Solana est désavantagé à cet égard.

Conclusion

Le modèle de programmation de contrat intelligent de Solana est innovant. Il propose une approche sans état pour le développement de contrats intelligents, avec Rust comme langage de programmation principal et une architecture qui sépare la logique de l'état. Cela offre aux développeurs un environnement puissant pour la construction et le déploiement de contrats intelligents, garantissant sécurité et performances, bien que cela implique une difficulté de développement plus grande. Solana se concentre sur le haut débit, les coûts réduits et la scalabilité, en en faisant le choix idéal pour les développeurs cherchant à créer des dApps haute performance.

Déclaration :

  1. Cet article est reproduit à partir de [ panews] , titre original "Ma grand-mère peut aussi comprendre : Quelle est la différence entre le modèle de programmation de Solana et ETH ?", les droits d'auteur appartiennent à l'auteur original [Foresight News,Alex Liu] si vous avez des objections à la reproduction, veuillez contacterÉquipe Gate Learn, l'équipe le traitera dès que possible selon les procédures pertinentes.

  2. Avertissement : Les points de vue et opinions exprimés dans cet article ne représentent que les opinions personnelles de l'auteur et ne constituent aucun conseil en investissement.

  3. D'autres versions linguistiques de l'article sont traduites par l'équipe Gate Learn, non mentionnées dansGate, l'article traduit ne peut pas être reproduit, distribué ou plagié.

La différence entre les modèles de programmation Solana et ETH

Avancé5/22/2024, 7:43:04 PM
Cet article compare les modèles de programmation de contrats intelligents de Solana et d'Ethereum. Les programmes on-chain de Solana sont similaires aux contrats intelligents d'Ethereum, mais Solana offre un environnement d'exécution différent grâce à son modèle de compte unique et son approche de découplage des données. Le modèle de compte de Solana sépare le code et le stockage des données, renforçant la sécurité. Solana utilise principalement le langage Rust pour le développement de contrats intelligents, offrant des performances et une sécurité élevées mais avec une courbe d'apprentissage abrupte. Ethereum, quant à lui, utilise principalement Solidity, offrant une expérience de développement plus simple et plus mature. Malgré les défis de développement avec Solana, sa haute capacité de traitement, ses coûts réduits et sa scalabilité en font un choix idéal pour le développement de dApps haute performance.

Solana est une plateforme blockchain haute performance conçue pour prendre en charge les dApps, connue pour sa vitesse et sa scalabilité obtenues grâce à des mécanismes de consensus uniques et des conceptions architecturales. Cet article présentera brièvement les fonctionnalités du modèle de programmation de contrats intelligents de Solana, en le comparant à Ethereum pour le contexte.

Contrats intelligents et programmes sur chaîne :

Les programmes s'exécutant sur Ethereum sont connus sous le nom de contrats intelligents, qui sont une série de code (fonctions) et de données (état) situés à une adresse spécifique sur le réseau Ethereum. Les contrats intelligents sont également des comptes Ethereum, appelés comptes de contrat. Ils ont des soldes, peuvent être la cible de transactions, mais ne peuvent pas être contrôlés par des individus. Ils sont déployés sur le réseau pour s'exécuter en tant que programmes.

En revanche, le code exécutable s'exécutant sur Solana est appelé programmes On-Chain, qui interprètent les instructions envoyées avec chaque transaction. Ces programmes peuvent être déployés directement au cœur du réseau en tant que programmes natifs ou publiés par n'importe qui en tant que programmes SPL.

Instructions : les instructions sont des termes uniques pour les programmes on-chain de Solana. Elles consistent en des instructions qui exécutent des opérations spécifiques, formant l'unité d'exécution la plus petite pour les transactions Solana. Chaque transaction Solana contient une ou plusieurs instructions spécifiant les opérations à effectuer, y compris l'appel de programmes on-chain spécifiques, le passage de comptes, de listes d'entrées et la fourniture de tableaux d'octets. Les instructions ont des limites de calcul, il convient donc d'optimiser les programmes on-chain pour utiliser moins d'unités de calcul ou diviser les opérations coûteuses en plusieurs instructions.

Programmes natifs: ceux-ci fournissent les fonctionnalités essentielles requises par les nœuds validateurs. Le plus célèbre est le Programme Système, responsable de la gestion de la création de nouveaux comptes et du transfert de SOL entre deux comptes.

Les programmes SPL: ceux-ci définissent une série d'activités on-chain, notamment la création de jetons, l'échange, le prêt, la création de pools de mise en jeu, le maintien de services de résolution de noms de domaine on-chain, et plus encore. Parmi eux, le programme SPL Token est utilisé pour les opérations de jetons, tandis que des programmes comme le programme de compte de jetons associé sont couramment utilisés pour écrire d'autres programmes personnalisés.

Vous l'appelez contrats intelligents, je l'appelle programmes on-chain. Des noms différents, mais tous deux font référence à du code s'exécutant sur la blockchain. Tout comme Zhang San, Li Si et Wang Ma Zi sont tous des noms, la qualité de l'un devrait également être évaluée en fonction d'autres aspects.

Modèle de compte, Découplage des données:

Tout comme Ethereum, Solana est également une blockchain basée sur un modèle de compte, mais Solana propose un modèle de compte différent d'Ethereum, stockant les données d'une manière différente.

Sur Solana, les comptes peuvent contenir des informations sur le portefeuille et d'autres données. Les champs définis par un compte incluent les Lamports (le solde du compte), le Propriétaire (le propriétaire du compte), Exécutable (s'il s'agit d'un compte exécutable) et Données (les données stockées dans le compte). Chaque compte spécifie un programme comme propriétaire pour différencier l'état du programme qu'il stocke. Ces programmes sur chaîne sont en lecture seule ou sans état : les comptes de programme (comptes exécutables) stockent uniquement le bytecode BPF et ne stockent aucun état. Les programmes stockent leur état dans d'autres comptes indépendants (comptes non exécutables). Le modèle de programmation de Solana dissocie le code et les données.

D'autre part, les comptes Ethereum servent principalement de références à l'état de l'EVM (machine virtuelle Ethereum). Les contrats intelligents sur Ethereum contiennent à la fois la logique du code et le besoin de stocker des données utilisateur. Cela est souvent considéré comme un défaut de conception hérité de l'histoire de l'EVM.

Ne sous-estimez pas cette distinction ! Les contrats intelligents Solana sont fondamentalement plus difficiles à attaquer que les blockchains avec des modèles de programmation couplés, comme Ethereum :

Dans Ethereum, le “propriétaire” d'un contrat intelligent est une variable globale qui correspond directement à chaque contrat intelligent. Par conséquent, l'appel d'une certaine fonction pourrait directement modifier le “propriétaire” du contrat.

Cependant, sur Solana, le "propriétaire" d'un smart contract est lié aux données associées à un compte, plutôt qu'à une variable globale. Un compte peut avoir plusieurs propriétaires, au lieu d'une association un à un. Pour qu'un attaquant exploite une faille de sécurité dans un smart contract, il doit non seulement identifier la fonction problématique, mais aussi préparer les comptes "corrects" pour appeler cette fonction. Cette étape n'est pas facile car les smart contracts Solana impliquent généralement de multiples comptes d'entrée et gèrent leurs relations à travers des contraintes (comme account1.owner==account2.key). Le processus allant de la « préparation des bons comptes » au « lancement de l’attaque » est suffisant pour que les moniteurs de sécurité détectent de manière proactive les transactions suspectes impliquant la création de « faux » comptes liés à des contrats intelligents avant qu’une attaque ne se produise.

Les contrats intelligents d'Ethereum sont comme un coffre-fort avec un seul mot de passe unique. Une fois que vous avez ce mot de passe, vous obtenez la propriété complète. Ceux de Solana, en revanche, sont comme un coffre-fort avec de nombreux mots de passe. Pour y accéder, vous devez non seulement obtenir les mots de passe, mais aussi comprendre les identifiants correspondants avant de pouvoir ouvrir la porte.

Langage de programmation

Rust est le langage de programmation principal pour le développement de contrats intelligents sur Solana. Ses performances et ses fonctionnalités de sécurité le rendent adapté à l'environnement à haut risque de la blockchain et des contrats intelligents. Solana prend également en charge C, C++, et d'autres langages (bien que moins courants). Les SDK Rust et C officiels sont fournis pour soutenir le développement de programmes on-chain. Les développeurs peuvent utiliser des outils pour compiler des programmes en bytecode Berkeley Packet Filter (fichiers avec une extension .so) et les déployer sur la blockchain Solana. La logique des contrats intelligents est ensuite exécutée à travers l'exécution parallèle des contrats intelligents de Sealevel.

Cependant, en raison de la courbe d'apprentissage élevée du langage Rust et de son manque de personnalisation pour le développement blockchain, de nombreuses exigences se traduisent par un code redondant et une réinvention de la roue. Pour simplifier le développement, de nombreux projets en production utilisent le framework Anchor créé par la collaboration de Backpack et Armani. De plus, plusieurs nouveaux langages de programmation spécifiquement adaptés au développement blockchain, tels que Cairo (Starknet) et Move (Sui, Aptos), sont basés sur Rust.

De nombreux projets en production utilisent le framework Anchor.

Les contrats intelligents Ethereum sont principalement développés en utilisant le langage Solidity, qui a une syntaxe similaire à JavaScript, les fichiers de code ayant une extension .sol. En raison de sa syntaxe relativement simple et des outils de développement plus matures (comme le framework Hardhat et l'IDE Remix), Ethereum est généralement considéré comme offrant une expérience de développement plus simple et plus agréable par rapport à Solana, qui a une courbe d'apprentissage plus élevée. Malgré la popularité actuelle de Solana, le nombre de développeurs sur Ethereum reste bien plus important que sur Solana.

Dans des circonstances spécifiques, une voiture de course de haut niveau sera plus performante qu’une voiture modifiée. Rust, comme une voiture de course haut de gamme, assure efficacement les performances et la sécurité de Solana. Cependant, il n’est pas intrinsèquement conçu pour le développement de programmes on-chain, ce qui augmente en fait le niveau de difficulté de la conduite (développement). Les chaînes publiques qui adoptent des langages basés sur Rust et personnalisés pour le développement on-chain peuvent être comparées à la modification de cette voiture de course pour mieux s’adapter aux conditions routières. Solana est désavantagé à cet égard.

Conclusion

Le modèle de programmation de contrat intelligent de Solana est innovant. Il propose une approche sans état pour le développement de contrats intelligents, avec Rust comme langage de programmation principal et une architecture qui sépare la logique de l'état. Cela offre aux développeurs un environnement puissant pour la construction et le déploiement de contrats intelligents, garantissant sécurité et performances, bien que cela implique une difficulté de développement plus grande. Solana se concentre sur le haut débit, les coûts réduits et la scalabilité, en en faisant le choix idéal pour les développeurs cherchant à créer des dApps haute performance.

Déclaration :

  1. Cet article est reproduit à partir de [ panews] , titre original "Ma grand-mère peut aussi comprendre : Quelle est la différence entre le modèle de programmation de Solana et ETH ?", les droits d'auteur appartiennent à l'auteur original [Foresight News,Alex Liu] si vous avez des objections à la reproduction, veuillez contacterÉquipe Gate Learn, l'équipe le traitera dès que possible selon les procédures pertinentes.

  2. Avertissement : Les points de vue et opinions exprimés dans cet article ne représentent que les opinions personnelles de l'auteur et ne constituent aucun conseil en investissement.

  3. D'autres versions linguistiques de l'article sont traduites par l'équipe Gate Learn, non mentionnées dansGate, l'article traduit ne peut pas être reproduit, distribué ou plagié.

Start Now
Sign up and get a
$100
Voucher!