如何在Move模块中调用Aptos链上已发布模块函数:导入与依赖配置
在自研Move模块中调用Aptos已发布模块的方法
1. 在Move模块中导入目标函数
直接在你的模块代码顶部用use语句声明要导入的模块及函数,格式为:use <模块部署地址>::<模块名>::<目标函数/类型>;
示例代码
module my_project::my_module { // 导入Aptos官方0x1地址下coin模块的transfer函数 use 0x1::coin::transfer; // 一次性导入多个函数/类型可以用大括号 use 0x1::coin::{transfer, balance_of, Coin}; public fun execute_transfer(sender: &signer, receiver: address, amount: u64) { // 直接调用导入的transfer函数 transfer(sender, receiver, amount); } }
- 若调用第三方已发布模块,替换
<模块部署地址>为该模块在链上的实际地址即可。 - 如需导入整个模块的所有内容,可使用
use <地址>::<模块名>::*;,但不推荐,会增加编译冗余。
2. 在Move.toml中添加依赖声明
Move编译时需要依赖模块的源码,因此必须在项目根目录的Move.toml中声明依赖,根据依赖类型分两种情况:
情况1:依赖Aptos官方框架模块
在[dependencies]区块下添加官方框架的依赖,推荐指定具体版本分支或commit哈希避免兼容性问题:
[dependencies] AptosFramework = { git = "https://github.com/aptos-labs/aptos-core", subdir = "aptos-move/framework/aptos-framework", rev = "main" # 可替换为具体版本号如v1.10.0 }
同时可指定模块的链上部署地址,确保与导入语句中的地址一致:
[dependencies.AptosFramework] git = "https://github.com/aptos-labs/aptos-core" subdir = "aptos-move/framework/aptos-framework" rev = "main" address = "0x1"
情况2:依赖第三方自定义模块
如果依赖的是第三方发布在Git仓库的模块,同样在[dependencies]中声明,替换为对应仓库信息:
[dependencies] ThirdPartyModule = { git = "https://github.com/xxx/third-party-move-project", subdir = "move/modules/xxx-module", # 模块源码所在子目录 rev = "v1.0.0" # 第三方模块的版本标签或commit }
如果是本地开发的依赖模块,可用path代替git指定本地路径:
[dependencies] LocalDependency = { path = "../local-move-module" }
内容的提问来源于stack exchange,提问作者Anto
相关产品推荐
相关产品推荐

