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, якщо вони позначені як загальнодоступні, і ви імпортуєте модуль належним чином, щоб гаманці та інші контракти могли використовувати їх без особливих обмежень. Наприклад, щось на зразок 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.