Move.

Пост

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

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

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

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

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

Ответы

3
BigDev.
Aug 15 2025, 16:53

В языке Sui Move нативная функция — это функция, которую вы объявляете в модуле Move, но фактический код которой находится за пределами базовой системы. Обычно она написана на Rust для виртуальной машины Sui и обрабатывает низкоуровневые задачи, такие как криптография или системные операции, которыми высокоуровневый синтаксис Move не может управлять напрямую. Вы можете вызывать эти функции непосредственно из кода Move в других модулях или скриптах, как и обычные функции Move, при условии, что они помечены как общедоступные и вы правильно импортируете модуль, чтобы кошельки и другие контракты могли использовать их без особых ограничений. Например, sui: :hash: :keccak256 — это встроенная функция, которую можно вызывать для хеширования данных. Она доступна в транзакциях или контрактах при условии, что вы правильно на нее ссылаетесь. Загвоздка в том, что они предопределены в фреймворке Sui, поэтому вы не можете создавать собственные нативные функции в Move; вы ограничены тем, что предоставляет система, а их поведение зависит от реализации Rust. Подробнее о том, как работают нативные функции в Move и как их использовать

2
Комментарии
.
mssoni.
Apr 11 2025, 08:43

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

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

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

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

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

270Посты616Ответы
Sui.X.Peera.

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

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

Посты с вознаграждением