Saltearse al contenido

Crear Paquete (Move)

  1. aptos move init

    En un nuevo directorio de proyecto, inicializa un paquete Move ejecutando:

    Ventana de terminal
    aptos move init --name <NOMBRE_DEL_PROYECTO>

    Ahora deberías tener un proyecto Move que se ve así:

    • Directoryscripts/
    • Directorysources/
    • Directorytests/
    • Move.toml
  2. Actualizar Move.toml

    En Move.toml, completa la siguiente información clave:

    1. name: nombre de tu paquete
    2. version: versión del paquete (por defecto es "0.0.0")
    3. addresses: Describe a qué dirección se desplegará el módulo. Estas son direcciones nombradas que se pueden usar como alias. En el ejemplo de abajo, usaremos hello_blockchain como la dirección nombrada.
    4. dependencies: Probablemente querrás usar AptosFramework y otras Dependencias de Terceros

    Abajo hay un ejemplo

    [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"
  3. Agregar al directorio sources

    Agrega tu código en el directorio sources. Aquí tenemos un ejemplo 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;
    //:!:>resource
    struct 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 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,
    })
    } 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
    );
    }
    }