Move.

Publication

Partagez vos connaissances.

skywinder.
Apr 10, 2025
Questions et Réponses avec des Experts

Qu'est-ce qu'une fonction native et pouvons-nous les appeler directement ?

J'ai rencontré le terme « fonction native » dans Move mais je ne trouve pas d'informations détaillées à ce sujet. J'ai entendu dire qu'ils sont déclarés dans Move mais définis en externe, souvent dans Rust. Cela signifie-t-il qu'il s'agit de fonctions internes qui ne peuvent pas être appelées directement par des portefeuilles ou d'autres modules ?

  • Move CLI
  • Move
0
2
Partager
Commentaires
.

Réponses

2
mssoni.
Apr 11 2025, 08:43

Les fonctions natives de Move sont en effet déclarées dans le langage mais elles n'ont pas de corps car elles sont implémentées en dehors de Move, généralement dans Rust. Malgré cela, si la fonction native est publique, vous pouvez l'appeler comme n'importe quelle autre fonction. Ils ne sont pas réservés à un usage interne uniquement. Vous pouvez les invoquer tant que les autorisations nécessaires et l'accès public sont en place.

0
Commentaires
.
24p30p.
Jul 9 2025, 07:08

Dans Move, une fonction native est un type spécial de fonction que vous déclarez dans un module Move mais que vous n'écrivez pas dans le langage Move lui-même. Au lieu de cela, elle est implémentée dans Rust au niveau de l'exécution. Ces fonctions sont généralement utilisées pour des opérations gourmandes en performances ou des tâches de bas niveau qui ne peuvent pas être effectuées de manière efficace ou sécurisée dans Pure Move, comme le hachage, les contrôles cryptographiques ou certaines opérations arithmétiques. Bien que vous puissiez utiliser les fonctions natives de vos modules Move comme les fonctions habituelles, vous ne pouvez pas les appeler directement depuis un portefeuille ou une transaction comme une fonction de saisie normale. Ils ne sont pas exposés pour une interaction directe avec l'utilisateur ; ils sont plutôt appelés en interne par le code du module que vous écrivez en cas de besoin.

Si vous créez un module et que vous appelez une fonction native à l'intérieur de celui-ci, les utilisateurs qui interagissent avec votre module (via des transactions ou des DApps) utiliseront indirectement cette fonction native. Mais la logique native elle-même s'exécute sous le capot dans la machine virtuelle Move, gérée dans Rust, et n'est en aucun cas exposée directement.

Voici un petit exemple de la façon dont vous pouvez déclarer une fonction native :

native public fun sha256(data: vector<u8>): vector<u8>;

Cela indique au compilateur Move qu'sha256il existe, mais l'implémentation réelle se trouve dans Rust dans la machine virtuelle Sui. Si vous souhaitez en savoir plus sur les fonctions natives de Move et sur leur lien avec le runtime Sui, consultez la documentation officielle :

https://docs.sui.io/learn/move/native-functions

https://github.com/MystenLabs/sui/tree/main/crates/sui-move-natives

Cela est particulièrement utile lorsque vous écrivez des modules sensibles aux performances qui nécessitent des opérations cryptographiques ou des mathématiques avancées.

0
Commentaires
.

Connaissez-vous la réponse ?

Veuillez vous connecter et la partager.

Move is an executable bytecode language used to implement custom transactions and smart contracts.

148Publications240Réponses
Sui.X.Peera.

Gagne ta part de 1000 Sui

Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

Campagne de RécompensesJuillet