Smart Contracts
Los contratos en Aptos se escriben utilizando Move, un lenguaje de próxima generación diseñado para una programación segura, en entorno de sandbox y formalmente verificada, que se utiliza en múltiples cadenas. Move permite a los desarrolladores escribir programas que gestionan y transfieren assets de forma flexible, proporcionando seguridad y protección contra ataques a esos activos.
Aprende Move
Sección titulada «Aprende Move» ¿Por qué Move? Aprende por qué Aptos utiliza el lenguaje Move
Crear un Package Empieza aprendiendo cómo crear un Package de Move
Objetos Aprende a usar el estándar de Objetos en Aptos para crear primitivas composables y flexibles on-chain
Ejemplos de Move
Sección titulada «Ejemplos de Move» Ejemplos de Aptos Move Más de 30 ejemplos sobre cómo desarrollar con Move en Aptos
Tutorial de Move Cubre los fundamentos de la programación con Move
Tu primer Módulo Move Un ejemplo de cómo hacer publish de tu primer módulo Move
Aquí tienes un ejemplo de hello_blockchain en Move:
module hello_blockchain::message { use std::error; use std::signer; use std::string; use aptos_framework::event;
//:!:>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 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 ); }}Recursos para Desarrolladores
Sección titulada «Recursos para Desarrolladores»FAQ y Discusiones
Sección titulada «FAQ y Discusiones»- Discusiones de Aptos Dev para Q&A sobre Move.
Plugins de IDE para Move
Sección titulada «Plugins de IDE para Move»- Extensión Move on Aptos para VSCode y OpenVSX.
- Plugin del lenguaje Move para IDEs de JetBrains
Recursos Externos
Sección titulada «Recursos Externos»- Aptos Move by Example
- Teach yourself Move on Aptos (Aprende Move en Aptos por tu cuenta).
- Formal Verification, the Move Language, and the Move Prover (Verificación formal, el lenguaje Move y el Move Prover).
- Pontem Move Playground
- Collection of nestable Move resources (Colección de recursos de Move anidables).
Tenemos un nuevo compilador de Move on Aptos que soporta Move 2. Consulta esta página para más información.