创建包 (Move)
-
aptos move init
在一个新的项目目录中,通过运行以下命令初始化一个 Move 包:
Terminal window aptos move init --name <PROJECT_NAME>现在,您应该有一个 Move 项目,如下所示:
文件夹scripts/
- …
文件夹sources/
- …
文件夹tests/
- …
- Move.toml
-
更新 Move.toml
在
Move.toml
中,填写以下关键信息:name
: 您包的名称version
: 包的版本(默认是 “0.0.0”)addresses
: 描述模块将部署到哪个地址.这些是可以用作别名的命名地址.在下面的示例中,我们将使用hello_blockchain
作为命名地址.dependencies
: 您可能希望使用AptosFramework
和其他 第三方依赖
以下是一个示例
[package]name = "Examples"version = "0.0.0"[addresses]hello_blockchain = "_"[dependencies.AptosFramework]git = "https://github.com/aptos-labs/aptos-framework.git"rev = "mainnet"subdir = "aptos-framework" -
添加到 sources 目录
将您的代码添加到
sources
目录.这里我们有一个hello_blockchain.move
示例.hello_blockchain.move module hello_blockchain::message {use std::error;use std::signer;use std::string;use aptos_framework::event;#[test_only]use std::debug;//:!:>resourcestruct MessageHolder has key {message: string::String,}//<:!:resource#[event]struct MessageChange has drop, store {account: address,from_message: string::String,to_message: string::String,}/// There is no message presentconst ENO_MESSAGE: u64 = 0;#[view]public fun get_message(addr: address): string::String acquires MessageHolder {assert!(exists<MessageHolder>(addr), error::not_found(ENO_MESSAGE));borrow_global<MessageHolder>(addr).message}public entry fun set_message(account: signer, message: string::String)acquires MessageHolder {let account_addr = signer::address_of(&account);if (!exists<MessageHolder>(account_addr)) {move_to(&account, MessageHolder {message,})} else {let old_message_holder = borrow_global_mut<MessageHolder>(account_addr);let from_message = old_message_holder.message;event::emit(MessageChange {account: account_addr,from_message,to_message: copy message,});old_message_holder.message = message;}}#[test(account = @0x1)]public entry fun sender_can_set_message(account: signer) acquires MessageHolder {let msg: string::String = string::utf8(b"Running test for sender_can_set_message...");debug::print(&msg);let addr = signer::address_of(&account);aptos_framework::account::create_account_for_test(addr);set_message(account, string::utf8(b"Hello, Blockchain"));assert!(get_message(addr) == string::utf8(b"Hello, Blockchain"),ENO_MESSAGE);}}