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.movecontiene 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.yamlarchivo. Este archivo se utiliza para configurar la movementCLI y configurar谩 una clave privada para su entorno. 隆Elija testnetdurante la configuraci贸n!

Copiar

movement aptos init

Ejecute las pruebas con la movementCLI.

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 movementCLI.

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 MessageHolderrecurso.

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