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