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 社区成长而获得奖励。