You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aptos Move合约部署:构造函数初始化及Aptos CLI调用方法

Aptos Move合约部署构造函数及参数初始化指南

1. 部署阶段调用的构造函数

在Aptos Move中,合约部署时会自动触发模块内的**init函数**,它是合约初始化的入口,需满足以下要求:

  • 归属目标部署模块
  • 函数签名需包含&signer类型参数(代表合约发布者账户),可按需添加其他参数
  • 必须标记为public(script),确保部署时能被Aptos框架自动调用

2. 初始化合约级别字符串值

合约级别字符串指模块顶层的storage存储变量,需在init函数中完成初始化,步骤如下:

  1. 在模块顶层定义storage修饰的字符串变量
  2. 在init函数中通过发布者的signer账户,将目标字符串写入存储

示例代码:

module my_addr::my_module {
    use std::string::String;
    use aptos_framework::account;

    // 合约级存储字符串变量
    storage my_contract_str: String;

    // 部署时执行的初始化函数
    public(script) fun init(account: &signer) {
        // 初始化固定字符串值
        let init_str = String::utf8(b"Hello Aptos");
        // 将值写入合约存储
        my_contract_str::write(account, init_str);
    }

    // 用于验证的读取函数
    public fun get_contract_str(): String {
        my_contract_str::read()
    }
}

若需动态传入字符串初始化,只需修改init函数签名,添加String类型参数即可。

3. 通过aptos move publish携带参数调用构造函数

当init函数需要外部传入参数时,可通过--args参数在发布命令中传递值:

步骤1:修改init函数支持外部参数

调整函数签名,添加字符串参数:

public(script) fun init(account: &signer, init_str: String) {
    my_contract_str::write(account, init_str);
}

步骤2:执行发布命令并传递参数

使用aptos move publish时,通过--args string:<你的字符串>格式传递参数:

aptos move publish --package-dir ./your-package-dir --named-addresses my_addr=0x<你的账户地址> --args string:"My Custom Initial String"

参数说明:

  • --package-dir:指定Move合约包所在目录
  • --named-addresses:将模块内的命名地址绑定到你的发布账户地址
  • --args:支持传递多个参数,格式为类型:值,多参数用空格分隔(如--args string:"First" u64:123)

验证初始化结果

部署完成后,可调用读取函数确认字符串是否正确初始化:

aptos move run --function-id 0x<你的账户地址>::my_module::get_contract_str --account 0x<你的账户地址>

内容的提问来源于stack exchange,提问作者Tahlil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:26:05