Exploration Solana Smart Contract modèle de programmation

DébutantJun 11, 2024
Solana est une plate-forme blockchain haute performance conçue pour support les dApps. Il est connu pour sa rapidité et son évolutivité, obtenues grâce à un mécanisme de consensus et une conception architecturale uniques. Cet article utilise Ethereum comme objet de comparaison pour présenter brièvement les caractéristiques du modèle de programmation de contrats intelligents Solana.
Exploration Solana Smart Contract modèle de programmation

Transférer le titre original '小学生也能看懂 !Solana 的编程模型,究竟和 ETH 有啥区别 ?'

Solana est une plate-forme blockchain haute performance conçue pour support les dApps. Il est connu pour sa rapidité et son évolutivité, obtenues grâce à un mécanisme de consensus et une conception architecturale uniques. Cet article utilise Ethereum comme objet de comparaison pour présenter brièvement les caractéristiques du modèle de programmation de contrats intelligents Solana.

Programmes natifs : il s’agit de programmes qui fournissent les fonctionnalités nécessaires à la validation des nœuds. Le plus notable est le programme système, qui est responsable de la gestion de la création de nouveaux comptes et du transfert de SOL entre deux comptes.Programmes SPL : Ceux-ci définissent une série d’activités on-chain, y compris la création, la plateforme d’échange et le prêt de jetons, ainsi que la création de pools de jalonnement et la maintenance de services de résolution de noms de domaine on-chain. Parmi ceux-ci, le programme SPL Jeton est utilisé pour les opérations de jeton, tandis que le programme de compte Jeton associé est couramment utilisé pour écrire d’autres programmes personnalisés. Vous les appelez smart contracts, je les appelle des programmes on-chain. Termes différents, mais ils font tous deux référence au code exécuté sur la blockchain. Tout comme Alice, Bob et John sont tous des noms, et leurs qualités réelles doivent être évaluées par d’autres aspects.

Semblable à Ethereum, Solana est également une blockchain basée sur un modèle compte, mais Solana fournit un modèle de compte différent de celui de Ethereum et stocke les données de différentes manières.

Dans Solana, les comptes peuvent enregistrer des informations de portefeuille et d’autres données. Les champs définis par le compte incluent Lamports (solde du compte), Propriétaire (propriétaire compte), Exécutable (s’il s’agit d’un compte exécutable) et Données (données stockées dans le compte). Chaque compte désigne un programme en tant que propriétaire afin de distinguer le programme pour lequel le compte est utilisé en tant que magasin d’état. Ces programmes off-chain sont en lecture seule ou sans état : le programme compte (compte exécutable) ne stocke que des bytecode BPF et ne stocke aucun état. Le programme stockera l’état dans d’autres comptes indépendants (comptes non exécutables). C’est-à-dire que le modèle de programmation de Solana dissocie le code et les données.

Le Ethereum compte fait principalement référence à l’État EVM. Son contrat intelligent a non seulement une logique de code, mais doit également stocker les données des utilisateurs. Ceci est souvent considéré comme un défaut de conception hérité de l’histoire de l’EVM.

Ne sous-estimez pas cette distinction ! Solana smart contracts sont fondamentalement plus difficiles à attaquer que les blockchains avec un modèle de programmation couplé comme Ethereum.

Dans Ethereum, un « propriétaire » de contrat intelligent est une variable globale qui correspond un à un avec le contrat intelligent. Par conséquent, l’appel d’une fonction peut modifier directement le « propriétaire » du contrat.

Dans Solana, cependant, le « propriétaire » d’un contrat intelligent est une donnée associée à un compte plutôt qu’à une variable globale. Un compte peut avoir plusieurs propriétaires, plutôt qu’une association un-à-un. Pour qu’un attaquant puisse exploiter une faille de sécurité dans un contrat intelligent, il doit non seulement trouver la fonction problématique, mais aussi préparer les « bons » comptes pour appeler cette fonction. Cette étape n’est pas facile, car Solana smart contracts impliquent généralement plusieurs comptes d’entrée et gèrent leurs relations à l’aide de contraintes (telles que account1.owner == account2.key). Le processus allant de la « préparation des bons comptes » au « lancement d’une attaque » donne au personnel de surveillance de la sécurité suffisamment de temps pour détecter de manière proactive les transactions suspectes liées à la création de « faux » comptes associés au contrat intelligent avant que l’attaque ne se produise.

Ethereum smart contracts sont comme un coffre-fort qui utilise un mot de passe unique ; une fois que vous obtenez ce mot de passe, vous en devenez pleinement propriétaire. En revanche, les smart contracts de Solana 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 déterminer quel mot de passe correspond à quelle serrure pour l’ouvrir.

Langage de programmation

Rust est le langage de programmation principal pour le développement de smart contracts sur Solana. En raison de ses performances et de ses caractéristiques de sécurité, il convient à l’environnement à haut risque de la blockchain et des smart contracts. Solana prend également en charge C, C ++ et (très exceptionnellement) d’autres langages. Le SDK officiel pour Rust et C est fourni pour support le développement de programmes on-chain. Les développeurs peuvent utiliser des outils pour compiler le programme en bytecode Berkley Packet Filter (BPF) (le fichier a une extension .so), puis le déployer sur la chaîne Solana et exécuter la logique du contrat intelligent via le runtime de contrat intelligent parallèle Sealevel.

Étant donné que le langage Rust lui-même est difficile à utiliser et n’est pas personnalisé pour le développement de la blockchain, de nombreuses exigences nécessitent de réinventer la roue et le code redondant. (De nombreux projets en production utilisent le framework Anchor créé par le co-créateur de Backpack, Armani, pour simplifier le développement) De nombreux langages de programmation nouvellement créés dédiés au développement de la blockchain sont basés sur Rust, tels que Cairo (Starknet), Move (Sui, Aptos).

De nombreux projets en production utilisent le framework Anchor

Ethereum smart contracts sont principalement développés en langage Solidity (la syntaxe est similaire à javascript, et le fichier de code a une extension .sol). En raison de la syntaxe relativement simple et des outils de développement plus matures (Hardhat framework, Remix IDE...), nous pensons généralement que l’expérience de développement d’Ethereum est plus simple et plus rafraîchissante, tandis que le développement de Solana est plus difficile à démarrer. Ainsi, même si Solana est très populaire maintenant, le nombre de développeurs sur Ethereum est toujours bien supérieur à celui de Solana.

Dans certaines conditions routières, les voitures de course haut de gamme ne sont pas aussi rapides que les voitures modifiées. Rust est comme une voiture de course de haut niveau, ce qui garantit efficacement les performances et la sécurité de Solana. Cependant, il n’est pas conçu pour développer cette piste pour les programmes off-chain, mais provoque plutôt une augmentation de la difficulté de conduite (développement). L’utilisation d’une chaîne publique basée sur Rust et le développement d’un langage personnalisé pour la chaîne équivalent à modifier la voiture de course pour la rendre plus adaptée aux conditions routières. Solana est désavantagé ici.

Résumé

Le modèle de programmation des contrats intelligents de Solana est innovant. Il offre une approche sans état du développement de contrats intelligents, en utilisant Rust comme langage de programmation principal et une architecture qui sépare la logique de l’état. Cela fournit aux développeurs un environnement robuste pour la création et le déploiement de smart contracts, garantissant la sécurité et les performances, bien que cela pose une difficulté de développement plus élevée. Solana se concentre sur un débit élevé, un faible coût et une évolutivité, ce qui en fait le choix idéal pour les développeurs qui cherchent actuellement à créer des dApps hautes performances.

Foresight News]. Tous les droits d’auteur appartiennent à l’auteur original [Alex Liu]. S’il y a des objections à cette réimpression, veuillez contacter l’équipe Gate Learn, et ils la traiteront rapidement.
  • Clause de non-responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l’auteur et ne constituent pas un conseil en investissement.
  • Les traductions de l’article dans d’autres langues sont effectuées par l’équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, de distribuer ou de plagier les articles traduits.
  • Exploration Solana Smart Contract modèle de programmation

    DébutantJun 11, 2024
    Solana est une plate-forme blockchain haute performance conçue pour support les dApps. Il est connu pour sa rapidité et son évolutivité, obtenues grâce à un mécanisme de consensus et une conception architecturale uniques. Cet article utilise Ethereum comme objet de comparaison pour présenter brièvement les caractéristiques du modèle de programmation de contrats intelligents Solana.
    Exploration Solana Smart Contract modèle de programmation

    Transférer le titre original '小学生也能看懂 !Solana 的编程模型,究竟和 ETH 有啥区别 ?'

    Solana est une plate-forme blockchain haute performance conçue pour support les dApps. Il est connu pour sa rapidité et son évolutivité, obtenues grâce à un mécanisme de consensus et une conception architecturale uniques. Cet article utilise Ethereum comme objet de comparaison pour présenter brièvement les caractéristiques du modèle de programmation de contrats intelligents Solana.

    Programmes natifs : il s’agit de programmes qui fournissent les fonctionnalités nécessaires à la validation des nœuds. Le plus notable est le programme système, qui est responsable de la gestion de la création de nouveaux comptes et du transfert de SOL entre deux comptes.Programmes SPL : Ceux-ci définissent une série d’activités on-chain, y compris la création, la plateforme d’échange et le prêt de jetons, ainsi que la création de pools de jalonnement et la maintenance de services de résolution de noms de domaine on-chain. Parmi ceux-ci, le programme SPL Jeton est utilisé pour les opérations de jeton, tandis que le programme de compte Jeton associé est couramment utilisé pour écrire d’autres programmes personnalisés. Vous les appelez smart contracts, je les appelle des programmes on-chain. Termes différents, mais ils font tous deux référence au code exécuté sur la blockchain. Tout comme Alice, Bob et John sont tous des noms, et leurs qualités réelles doivent être évaluées par d’autres aspects.

    Semblable à Ethereum, Solana est également une blockchain basée sur un modèle compte, mais Solana fournit un modèle de compte différent de celui de Ethereum et stocke les données de différentes manières.

    Dans Solana, les comptes peuvent enregistrer des informations de portefeuille et d’autres données. Les champs définis par le compte incluent Lamports (solde du compte), Propriétaire (propriétaire compte), Exécutable (s’il s’agit d’un compte exécutable) et Données (données stockées dans le compte). Chaque compte désigne un programme en tant que propriétaire afin de distinguer le programme pour lequel le compte est utilisé en tant que magasin d’état. Ces programmes off-chain sont en lecture seule ou sans état : le programme compte (compte exécutable) ne stocke que des bytecode BPF et ne stocke aucun état. Le programme stockera l’état dans d’autres comptes indépendants (comptes non exécutables). C’est-à-dire que le modèle de programmation de Solana dissocie le code et les données.

    Le Ethereum compte fait principalement référence à l’État EVM. Son contrat intelligent a non seulement une logique de code, mais doit également stocker les données des utilisateurs. Ceci est souvent considéré comme un défaut de conception hérité de l’histoire de l’EVM.

    Ne sous-estimez pas cette distinction ! Solana smart contracts sont fondamentalement plus difficiles à attaquer que les blockchains avec un modèle de programmation couplé comme Ethereum.

    Dans Ethereum, un « propriétaire » de contrat intelligent est une variable globale qui correspond un à un avec le contrat intelligent. Par conséquent, l’appel d’une fonction peut modifier directement le « propriétaire » du contrat.

    Dans Solana, cependant, le « propriétaire » d’un contrat intelligent est une donnée associée à un compte plutôt qu’à une variable globale. Un compte peut avoir plusieurs propriétaires, plutôt qu’une association un-à-un. Pour qu’un attaquant puisse exploiter une faille de sécurité dans un contrat intelligent, il doit non seulement trouver la fonction problématique, mais aussi préparer les « bons » comptes pour appeler cette fonction. Cette étape n’est pas facile, car Solana smart contracts impliquent généralement plusieurs comptes d’entrée et gèrent leurs relations à l’aide de contraintes (telles que account1.owner == account2.key). Le processus allant de la « préparation des bons comptes » au « lancement d’une attaque » donne au personnel de surveillance de la sécurité suffisamment de temps pour détecter de manière proactive les transactions suspectes liées à la création de « faux » comptes associés au contrat intelligent avant que l’attaque ne se produise.

    Ethereum smart contracts sont comme un coffre-fort qui utilise un mot de passe unique ; une fois que vous obtenez ce mot de passe, vous en devenez pleinement propriétaire. En revanche, les smart contracts de Solana 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 déterminer quel mot de passe correspond à quelle serrure pour l’ouvrir.

    Langage de programmation

    Rust est le langage de programmation principal pour le développement de smart contracts sur Solana. En raison de ses performances et de ses caractéristiques de sécurité, il convient à l’environnement à haut risque de la blockchain et des smart contracts. Solana prend également en charge C, C ++ et (très exceptionnellement) d’autres langages. Le SDK officiel pour Rust et C est fourni pour support le développement de programmes on-chain. Les développeurs peuvent utiliser des outils pour compiler le programme en bytecode Berkley Packet Filter (BPF) (le fichier a une extension .so), puis le déployer sur la chaîne Solana et exécuter la logique du contrat intelligent via le runtime de contrat intelligent parallèle Sealevel.

    Étant donné que le langage Rust lui-même est difficile à utiliser et n’est pas personnalisé pour le développement de la blockchain, de nombreuses exigences nécessitent de réinventer la roue et le code redondant. (De nombreux projets en production utilisent le framework Anchor créé par le co-créateur de Backpack, Armani, pour simplifier le développement) De nombreux langages de programmation nouvellement créés dédiés au développement de la blockchain sont basés sur Rust, tels que Cairo (Starknet), Move (Sui, Aptos).

    De nombreux projets en production utilisent le framework Anchor

    Ethereum smart contracts sont principalement développés en langage Solidity (la syntaxe est similaire à javascript, et le fichier de code a une extension .sol). En raison de la syntaxe relativement simple et des outils de développement plus matures (Hardhat framework, Remix IDE...), nous pensons généralement que l’expérience de développement d’Ethereum est plus simple et plus rafraîchissante, tandis que le développement de Solana est plus difficile à démarrer. Ainsi, même si Solana est très populaire maintenant, le nombre de développeurs sur Ethereum est toujours bien supérieur à celui de Solana.

    Dans certaines conditions routières, les voitures de course haut de gamme ne sont pas aussi rapides que les voitures modifiées. Rust est comme une voiture de course de haut niveau, ce qui garantit efficacement les performances et la sécurité de Solana. Cependant, il n’est pas conçu pour développer cette piste pour les programmes off-chain, mais provoque plutôt une augmentation de la difficulté de conduite (développement). L’utilisation d’une chaîne publique basée sur Rust et le développement d’un langage personnalisé pour la chaîne équivalent à modifier la voiture de course pour la rendre plus adaptée aux conditions routières. Solana est désavantagé ici.

    Résumé

    Le modèle de programmation des contrats intelligents de Solana est innovant. Il offre une approche sans état du développement de contrats intelligents, en utilisant Rust comme langage de programmation principal et une architecture qui sépare la logique de l’état. Cela fournit aux développeurs un environnement robuste pour la création et le déploiement de smart contracts, garantissant la sécurité et les performances, bien que cela pose une difficulté de développement plus élevée. Solana se concentre sur un débit élevé, un faible coût et une évolutivité, ce qui en fait le choix idéal pour les développeurs qui cherchent actuellement à créer des dApps hautes performances.

    Foresight News]. Tous les droits d’auteur appartiennent à l’auteur original [Alex Liu]. S’il y a des objections à cette réimpression, veuillez contacter l’équipe Gate Learn, et ils la traiteront rapidement.
  • Clause de non-responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l’auteur et ne constituent pas un conseil en investissement.
  • Les traductions de l’article dans d’autres langues sont effectuées par l’équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, de distribuer ou de plagier les articles traduits.
  • Lancez-vous
    Inscrivez-vous et obtenez un bon de
    100$
    !