Move.

Publicación

Comparte tu conocimiento.

skywinder.
Apr 10, 2025
P&R expertos

¿Qué es una función nativa? ¿Podemos llamarla directamente?

He encontrado el término «función nativa» en Move, pero no puedo encontrar información detallada al respecto. Escuché que se declaran en Move pero se definen externamente, a menudo en Rust. ¿Significa eso que son funciones internas a las que las carteras u otros módulos no pueden invocar directamente?

  • Move CLI
  • Move
0
2
Cuota
Comentarios
.

Respuestas

2
mssoni.
Apr 11 2025, 08:43

De hecho, las funciones nativas de Move se declaran dentro del lenguaje, pero no tienen un cuerpo porque se implementan fuera de Move, generalmente en Rust. A pesar de esto, si la función nativa es pública, puede llamarla como cualquier otra función. No están restringidas solo al uso interno. Puedes invocarlos siempre que dispongas de los permisos y el acceso público necesarios.

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

En Move, una función nativa es un tipo especial de función que se declara dentro de un módulo Move, pero que en realidad no se escribe en el propio lenguaje Move, sino que se implementa en Rust en el nivel de ejecución. Estas funciones suelen usarse para operaciones que requieren un alto rendimiento o para tareas de bajo nivel que no se pueden realizar de forma eficiente o segura en Move, como el hashing, las comprobaciones criptográficas o ciertas operaciones aritméticas. Si bien puedes usar funciones nativas dentro de tus módulos de Move de la misma manera que las funciones normales, no puedes llamarlas directamente desde un monedero o una transacción como una función de entrada normal. No están expuestos a la interacción directa del usuario, sino que se llaman internamente mediante el código del módulo que escribes cuando es necesario.

Si estás creando un módulo y llamas a una función nativa que contiene, los usuarios que interactúen con tu módulo (mediante transacciones o dApps) utilizarán indirectamente esa función nativa. Pero la lógica nativa en sí misma se ejecuta de forma oculta en la máquina virtual Move, se gestiona en Rust y no se expone directamente de ninguna manera.

Este es un pequeño ejemplo de cómo puedes declarar una función nativa:

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

Esto le indica al compilador Move que sha256existe, pero la implementación real se encuentra en Rust dentro de la máquina virtual Sui. Si quieres obtener más información sobre las funciones nativas de Move y cómo se relacionan con el tiempo de ejecución de Sui, consulta la documentación oficial:

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

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

Esto es especialmente útil cuando se escriben módulos sensibles al rendimiento que necesitan operaciones criptográficas o matemáticas avanzadas.

0
Comentarios
.

Sabes la respuesta?

Inicie sesión y compártalo.

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

148Publicaciones240Respuestas
Sui.X.Peera.

Gana tu parte de 1000 Sui

Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.

Campaña de RecompensasJulio