Move.

Пост

Поделитесь своими знаниями.

skywinder.
Apr 10, 2025
Экспертные Вопросы и Ответы

Что такое встроенная функция и можем ли мы вызвать ее напрямую?

Я наткнулся на термин «нативная функция» в Move, но не могу найти подробных сведений о нём. Я слышал, что они объявлены в Move, но определены извне, часто в Rust. Означает ли это, что это внутренние функции, которые нельзя напрямую вызывать кошельками или другими модулями?

  • Move CLI
  • Move
0
2
Поделиться
Комментарии
.

Ответы

2
mssoni.
Apr 11 2025, 08:43

Нативные функции в Move действительно объявлены в языке, но у них нет основного текста, поскольку они реализованы за пределами Move, обычно в Rust. Несмотря на это, если нативная функция является общедоступной, ее можно вызвать так же, как и любую другую функцию. Они предназначены не только для внутреннего использования. Их можно использовать при наличии необходимых разрешений и публичного доступа.

0
Комментарии
.
24p30p.
Jul 9 2025, 07:08

В Move нативная функция — это особый вид функций, которые вы объявляете в модуле Move, но на самом деле не пишете на самом языке Move — вместо этого она реализована в Rust на уровне среды выполнения. Эти функции обычно используются для высокопроизводительных операций или низкоуровневых задач, которые невозможно эффективно или безопасно выполнять в чистом Move, таких как хеширование, криптографические проверки или некоторые арифметические операции. Хотя вы можете использовать встроенные функции в своих модулях Move так же, как и обычные функции, вы не можете напрямую вызывать их из кошелька или транзакции, как обычная функция ввода. Они не доступны для прямого взаимодействия с пользователем; вместо этого они вызываются внутренним кодом модуля, который вы пишете при необходимости.

Если вы создаете модуль и вызываете в нем встроенную функцию, пользователи, взаимодействующие с вашим модулем (через транзакции или dApps), будут косвенно использовать эту встроенную функцию. Но сама нативная логика работает в виртуальной машине Move, обрабатывается в Rust и никоим образом не раскрывается напрямую.

Вот небольшой пример того, как можно объявить нативную функцию:

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

Это говорит компилятору Move о томsha256, что он существует, но фактическая реализация находится в Rust внутри виртуальной машины Sui. Если вы хотите узнать больше о встроенных функциях в Move и о том, как они связаны со средой выполнения Sui, ознакомьтесь с официальной документацией:

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

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

Это особенно полезно при написании чувствительных к производительности модулей, требующих криптографических операций или сложных математических вычислений.

0
Комментарии
.

Знаете ответ?

Пожалуйста, войдите в систему и поделитесь им.

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

148Посты240Ответы
Sui.X.Peera.

Заработай свою долю из 1000 Sui

Зарабатывай очки репутации и получай награды за помощь в развитии сообщества Sui.

Кампания вознагражденийИюль
Посты с вознаграждением