hello_blockchain.move contains a simple module for setting the value of a message resource. Else, you can copy the following into a new file inside sources directory called hello_blockchain.move.
module hello_blockchain::message {use std::error;use std::signer;use std::string;use aptos_framework::account;use aptos_framework::event;//:!:>resourcestructMessageHolder has key { message: string::String, message_change_events: event::EventHandle<MessageChangeEvent>, }//<:!:resourcestructMessageChangeEvent has drop, store { 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, message_change_events: account::new_event_handle<MessageChangeEvent>(&account), }) } else {let old_message_holder = borrow_global_mut<MessageHolder>(account_addr);let from_message = old_message_holder.message; event::emit_event(&mut old_message_holder.message_change_events, MessageChangeEvent { 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 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 ); }}
You will also need to add the following to Move.toml.
Now you need to setup your config.yaml file. This file is used to configure the movement CLI and will setup a private key for your environment. Choose testnet during setup!