Contratos Inteligentes
Los contratos de Aptos se escriben usando Move, un lenguaje de próxima generación para programación segura, en sandbox y formalmente verificada que se utiliza para múltiples cadenas. Move permite a los desarrolladores escribir programas que gestionan y transfieren activos de manera flexible mientras proporcionan seguridad y protecciones contra ataques a esos activos.
📖 Aprende Move
Sección titulada «📖 Aprende Move» ¿Por qué Move? Aprende por qué Aptos usa el Lenguaje Move
Crear Paquete Comienza aprendiendo cómo crear un paquete Move
Objetos Aprende cómo usar el estándar de Objetos en Aptos para crear primitivos componibles y flexibles en la cadena
👨💻 Ejemplos de Move
Sección titulada «👨💻 Ejemplos de Move» Ejemplos de Move en Aptos 30+ ejemplos sobre cómo desarrollar 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 publicar 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 Desarrolladores de Aptos para preguntas y respuestas sobre Move.
Plugins de IDE para Move
Sección titulada «Plugins de IDE para Move»- Aptos Move Analyzer para Visual Studio.
- Plugin de lenguaje Move para IDEs de JetBrains: Soporta resaltado de sintaxis, navegación de código, renombrado, formateo, verificaciones de tipo y generación de código.
Recursos Externos
Sección titulada «Recursos Externos»- Aptos Move by Example
- Teach yourself Move on Aptos.
- Formal Verification, the Move Language, and the Move Prover
- Pontem Move Playground
- Colección de recursos Move anidables
Tenemos un nuevo compilador de Move en Aptos que soporta Move 2. Ve esta página para más información.