Sui.

Publicación

Comparte tu conocimiento.

article banner.
MiniBob.
Apr 30, 2025
Artículo

¿Cómo crear una dApp compleja en Sui Move?

Curso #2: Sumérjase en la programación en movimiento: creación de dApps complejas en Sui

Ahora que ha comprendido los conceptos básicos de la programación de Move y ha implementado su primer contrato inteligente, es hora de llevar sus habilidades al siguiente nivel. En este artículo, exploraremos cómo crear aplicaciones descentralizadas (dApps) más complejas utilizando Move on the Sui blockchain.


Paso 1: Dominar los conceptos avanzados de movimiento Sui

Antes de sumergirnos en la codificación, repasemos algunas funciones avanzadas de Move que lo hacen especialmente adecuado para crear dApps seguras y escalables:

####1. Programación orientada a los recursos Move trata los activos digitales comorecursos, asegurándose de que no puedan duplicarse, eliminarse involuntariamente o utilizarse indebidamente (https://docs.sui.io/learn/resource-oriented-programming). Esto se logra mediante estrictas normas de propiedad y seguridad tipográfica. Por ejemplo:

module examples::token {  
    use sui::object::{Self, UID};  
    use sui::transfer;  

    struct Token has key, store {  
        id: UID,  
        value: u64,  
    }  

    public fun mint(ctx: &mut TxContext, value: u64): Token {  
        Token {  
            id: object::new(ctx),  
            value,  
        }  
    }  

    public fun transfer_token(token: Token, recipient: address) {  
        transfer::public_transfer(token, recipient);  
    }  
}  

En este ejemplo, el Tokenrecurso se crea y se transfiere de forma segura. Los recursos de Move son inmutables de forma predeterminada, a menos que se marquen explícitamente como mutables, lo que añade una capa adicional de seguridad.

####2. Módulos y encapsulación Los módulos de Move actúan como unidades de funcionalidad independientes, lo que permite una mejor organización y reutilización. Por ejemplo, puedes separar la lógica de creación de tokens de la lógica de transferencia en distintos módulos (https://examples.sui.io/modules). Esta modularidad garantiza un código más limpio y un mantenimiento más sencillo.

####3. Diseño centrado en objetos UIDSui Move presenta unmodelo centrado en objetos, en el que cada recurso tiene un identificador único a nivel mundial (). Esto permite la referencia directa y la interacción con los objetos, lo que facilita la gestión de transiciones de estado complejas (https://docs.sui.io/objects).


Paso 2: Redacción de un contrato inteligente modular

Vamos a crear un contrato inteligente más avanzado que demuestre estos conceptos. Crearemos un mercado de NFT sencillo en el que los usuarios puedan acuñar e intercambiar NFT.

####Defina el recurso de NFT Empieza por definir un recurso NFT dentro de un módulo Move:

module examples::nft_marketplace {  
    use sui::object::{Self, UID};  
    use sui::transfer;  

    struct NFT has key, store {  
        id: UID,  
        name: String,  
        price: u64,  
    }  

    public fun mint_nft(ctx: &mut TxContext, name: String, price: u64): NFT {  
        NFT {  
            id: object::new(ctx),  
            name,  
            price,  
        }  
    }  

    public fun list_for_sale(nft: NFT, price: u64, ctx: &mut TxContext) {  
        nft.price = price;  
        transfer::public_transfer(nft, tx_context::sender(ctx));  
    }  
}  

En este caso, el NFTrecurso incluye propiedades como nameyprice. La mint_nftfunción crea un nuevo NFT y list_for_salepermite a los usuarios poner sus NFT a la venta.

####Compilar e implementar Utilice la CLI de Sui para compilar e implementar su contrato. Escriba un script de implementación para automatizar este proceso:

sui move build  
sui client publish --gas-budget 10000  

Esto empaquetará e implementará su módulo en Sui Devnet (https://docs.sui.io/cli).


Paso 3: Creación de una interfaz de React para su mercado

Con tu contrato inteligente implementado, conectémoslo a una interfaz de React.

####Configura el proyecto Inicializa un proyecto de React si aún no lo has hecho:

npx create-react-app nft-marketplace  
cd nft-marketplace  
npm install @mysten/sui.js  

####Intégrese con Sui Wallet Usa la @mysten/sui.jsbiblioteca para interactuar con la cadena de bloques de Sui:

import { JsonRpcProvider, SuiClient } from '@mysten/sui.js';  

const provider = new SuiClient({ url: 'https://fullnode.devnet.sui.io' });  

async function fetchNFTs(ownerAddress) {  
    const objects = await provider.getObjectsOwnedByAddress(ownerAddress);  
    console.log('User NFTs:', objects);  
}  

####Mostrar datos NFT Obtén y muestra datos de NFT en tu aplicación React:

function NFTList({ ownerAddress }) {  
    const [nfts, setNFTs] = useState([]);  

    useEffect(() => {  
        async function loadNFTs() {  
            const response = await provider.getObjectsOwnedByAddress(ownerAddress);  
            setNFTs(response.data);  
        }  
        loadNFTs();  
    }, [ownerAddress]);  

    return (  
        <div>  
            {nfts.map((nft) => (  
                <div key={nft.objectId}>  
                    <p>{nft.name}</p>  
                    <p>Price: {nft.price} SUI</p>  
                </div>  
            ))}  
        </div>  
    );  
}  

Paso 4: Mejorar la seguridad y el rendimiento

####1. Transacciones seguras Asegúrese de que todas las transacciones estén validadas tanto dentro como fuera de la cadena. Utilice bibliotecas como @mysten/sui.jspara verificar los recibos de las transacciones:

async function verifyTransaction(txDigest) {  
    const result = await provider.getTransaction({ digest: txDigest });  
    console.log('Transaction Verified:', result);  
}  

2. Optimice las tarifas de gas*

Asóciese con servicios como** Gasolinera Shami** para ofrecer transacciones sin gas y mejorar la experiencia del usuario. También puede agrupar las transacciones para reducir los costos (https://docs.sui.io/gas-optimization).

####3. Aproveche la escalabilidad de Sui La arquitectura de Sui admite un alto rendimiento y una baja latencia, lo que la hace ideal para las dApps con un uso intensivo. Pruebe su aplicación en condiciones de carga simuladas para garantizar que el rendimiento se mantenga constante (https://performance.sui.io).


Paso 5: Pruebas y depuración

Las pruebas son fundamentales para evitar vulnerabilidades. Usa herramientas como** Sui Explorer** para supervisar las transacciones y solucionar los problemas. Además, escribe pruebas unitarias para tus módulos Move:

#[test]  
fun test_mint_nft() {  
    use sui::test_scenario;  
    let ctx = &mut test_scenario::ctx();  
    let nft = examples::nft_marketplace::mint_nft(ctx, "Test NFT", 100);  
    assert!(nft.price == 100, 0);  
}  

Ejecute sus pruebas con la CLI de Sui:

sui move test  

Paso 6: Interactuar con la comunidad

La creación de dApps no se basa solo en la codificación, sino también en la colaboración. Comparte tu progreso en plataformas como** GitHub, Discord** o** Twitter**. Participa en hackatones y desafíos para desarrolladores organizados por la Fundación Sui para perfeccionar tus habilidades y ganar visibilidad.


Conclusión

Si dominas los conceptos avanzados de Move, escribes contratos inteligentes modulares y creas interfaces intuitivas, estás en camino de convertirte en un desarrollador de dApps competente en la cadena de bloques Sui. Recuerda priorizar la seguridad, optimizar el rendimiento e interactuar con la comunidad para maximizar tu impacto.

¡Estén atentos al** Curso #3**, donde exploraremos casos de uso reales y técnicas avanzadas para escalar sus DApps en Sui!


Si desea más aclaraciones o recursos adicionales, ¡no dude en preguntar!

  • Sui
  • Architecture
  • Move
3
Cuota
Comentarios
.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

291Publicaciones418Respuestas
Sui.X.Peera.

Gana tu parte de 1000 Sui

Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.

Campaña de RecompensasMayo
Usamos cookies para asegurarnos de que obtenga la mejor experiencia en nuestro sitio web.
Más información