Módulo Aptos
🚀 Su primer módulo Aptos en M1 usando Movement CLI
Instalar la CLI de movimiento
Copiar
bash <(curl -fsSL https://raw.githubusercontent.com/movemntdev/M1/main/scripts/install.sh) --latest
Inicializa tu entorno
Inicialice su perfil de movimiento para el desarrollo de su paquete.
Copiar
movement aptos move init --name hello_blockchain
Si generó su proyecto usando la plantilla movemntdev/movement-hack , debería tener un proyecto con la siguiente estructura.
Copiar
.gitignore
/.movement
config.yaml
/ sources
hello_blockchain.move
hello_blockchain_test.move
Move.toml
hello_blockchain.move
contiene un módulo simple para establecer el valor de un recurso de mensaje. De lo contrario, puede copiar lo siguiente en un nuevo archivo dentro del directorio de fuentes llamado hello_blockchain.move
.
Copiar
module hello_blockchain::message {
use std::error;
use std::signer;
use std::string;
use aptos_framework::account;
use aptos_framework::event;
//:!:>resource
struct MessageHolder has key {
message: string::String,
message_change_events: event::EventHandle<MessageChangeEvent>,
}
//<:!:resource
struct MessageChangeEvent has drop, store {
from_message: string::String,
to_message: string::String,
}
/// There is no message present
const 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
);
}
}
También deberá agregar lo siguiente a Move.toml
.
Copiar
[package]
name = "{{ crate_name }}"
version = "0.0.0"
[dependencies]
AptosFramework = {git = "https://github.com/aptos-labs/aptos-core.git", subdir = "aptos-move/framework/aptos-framework", rev = "main"}
[addresses]
# hello_blockchain = "_"
std = "0x1"
Ahora necesitas configurar tu config.yaml
archivo. Este archivo se utiliza para configurar la movement
CLI y configurará una clave privada para su entorno. ¡Elija testnet
durante la configuración!
Copiar
movement aptos init
Ejecute las pruebas con la movement
CLI.
Copiar
movement aptos move test --named-addresses hello_blockchain=default
Si su prueba pasó, ahora puede publicar su módulo en la testnet.
Copiar
movement aptos move publish --named-addresses hello_blockchain=default
Asegúrese de aceptar la transacción en el mensaje. Ahora puede verificar el estado de su transacción usando la movement
CLI.
Luego, puede ejecutar el módulo en la red de prueba. Vas a configurar el mensaje en " hello!
".
Copiar
movement aptos move run --function-id default::message::set_message --args string:hello!
Asegúrese de verificar los recursos de la cuenta que utilizó para publicar el módulo. Deberías ver un MessageHolder
recurso.
Copiar
movement aptos account list --query resources --account default
Ahora puedes consultar el mensaje de la cuenta.
Copiar
movement aptos move run --function-id default::message::get_message --args address:default
¡Felicidades! ¡Acaba de escribir, publicar y ejecutar su primer módulo Move en la red de prueba!
Sin embargo, a medida que sus flujos de trabajo se vuelven más complejos, es posible que también desee considerar nuestro cliente JavaScript.
Last updated