第一个应用 #
我们的第一个应用程序将非常简单,但对于了解我们如何在 Aptos 区块链上移动和存储数字资产(资源)非常重要。
在这个模块中,我们将制作一个资源消息,其中将包含一条消息,用户将能够在区块链上存储和更新该消息。
测试:
由于我们的测试在帐户范围之外运行,因此我们需要创建要在我们的测试中使用的帐户。#[test]
注释为我们提供了声明这些帐户的选项。我们使用管理员帐户并将其设置为随机帐户地址 (@0x123
)。该函数接受此签名者(帐户)并使用内置函数创建它以创建用于测试的帐户。
module my_addrx::Message
{
use std::string::{String,Self};
use std::signer;
use aptos_framework::account;
struct Message has key
{
my_message : String
}
public entry fun create_message(account: &signer, msg: String) acquires Message{
let signer_address = signer::address_of(account);
if(!exists<Message>(signer_address)) //If the resource does not exits corresponding to a given address
{
let message = Message {
my_message : msg //first create a resouce
};
move_to(account,message); //move that resouce to the account
}
else //If the resource exits corresponding to a given address
{
let message = borrow_global_mut<Message>(signer_address); //get the resouce
message.my_message=msg; //update the resouce
}
}
#[test(admin = @0x123)]
public entry fun test_flow(admin: signer) acquires Message
{
account::create_account_for_test(signer::address_of(&admin));
create_message(&admin,string::utf8(b"This is my message"));
create_message(&admin,string::utf8(b"I changed my message"));
let message=borrow_global<Message>(signer::address_of(&admin));
assert!(message.my_message==string::utf8(b"I changed my message"),10);
}
}