Sui.

Publication

Partagez vos connaissances.

article banner.
MiniBob.
Apr 30, 2025
Article

Comment créer une DApp complexe sur Sui Move ?

Cours #2 : Approfondissement de la programmation Move — Création de dApps complexes sur Sui

Maintenant que vous avez compris les bases de la programmation de Move et déployé votre premier contrat intelligent, il est temps de passer à la vitesse supérieure. Dans cet article, nous verrons comment créer des applications décentralisées (DApps) plus complexes à l'aide de Move on the Sui blockchain.


Étape 1 : Maîtriser les concepts avancés de Sui Move

Avant de plonger dans le codage, revenons sur certaines fonctionnalités avancées de Move qui le rendent particulièrement adapté à la création de dApps sécurisées et évolutives :

####1. Programmation axée sur les ressources Move traite les actifs numériques comme desressources, en veillant à ce qu'ils ne puissent pas être dupliqués, supprimés involontairement ou utilisés à mauvais escient (https://docs.sui.io/learn/resource-oriented-programming). Ceci est réalisé grâce à des règles de propriété strictes et à la sécurité des types. Par exemple :

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);  
    }  
}  

Dans cet exemple, la Tokenressource est créée et transférée de manière sécurisée. Les ressources de Move sont immuables par défaut, sauf si elles sont explicitement marquées comme mutables, ce qui ajoute une couche de sécurité supplémentaire.

####2. Modules et encapsulation Les modules de Move agissent comme des unités fonctionnelles autonomes, permettant une meilleure organisation et une meilleure réutilisation. Par exemple, vous pouvez séparer la logique de création de jetons de la logique de transfert dans des modules distincts (https://examples.sui.io/modules). Cette modularité garantit un code plus propre et une maintenance plus facile.

####3. Conception centrée sur l'objet UIDSui Move introduit unmodèle centré sur l'objet, où chaque ressource possède un identifiant unique au monde (). Cela permet un référencement direct et une interaction avec les objets, ce qui facilite la gestion des transitions d'état complexes (https://docs.sui.io/objects).


Étape 2 : Rédaction d'un contrat intelligent modulaire

Créons un contrat intelligent plus avancé qui illustre ces concepts. Nous allons créer une place de marché NFT simple où les utilisateurs pourront créer et échanger des NFT.

####Définissez la ressource NFT Commencez par définir une ressource NFT dans un module 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));  
    }  
}  

Ici, la NFTressource inclut des propriétés telles que nameetprice. La mint_nftfonction crée un nouveau NFT, tout en list_for_salepermettant aux utilisateurs de répertorier leurs NFT à vendre.

####Compiler et déploier Utilisez la CLI Sui pour compiler et déployer votre contrat. Écrivez un script de déploiement pour automatiser ce processus :

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

Cela permettra d'empaqueter et de déployer votre module sur le Sui Devnet (https://docs.sui.io/cli).


Étape 3 : Création d'une interface React pour votre place de marché

Une fois votre contrat intelligent déployé, connectons-le à une interface React.

####Configurer le projet Initialisez un projet React si ce n'est pas déjà fait :

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

####Intégrer à Sui Wallet Utilisez la @mysten/sui.jsbibliothèque pour interagir avec la blockchain 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);  
}  

####Afficher les données NFT Récupérez et affichez les données NFT dans votre application 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>  
    );  
}  

Étape 4 : Améliorer la sécurité et les performances

####1. Transactions sécurisées Assurez-vous que toutes les transactions sont validées à la fois en chaîne et hors chaîne. Utilisez des bibliothèques telles que @mysten/sui.jspour vérifier les reçus de transactions :

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

####2. Optimisez les frais de gaz Associez-vous à des services tels que** Shami Gas Station** pour proposer des transactions sans gaz et améliorer ainsi l'expérience utilisateur. Vous pouvez également effectuer des transactions par lots pour réduire les coûts (https://docs.sui.io/gas-optimization).

####3. Tirez parti de l'évolutivité de Sui L'architecture de Sui prend en charge un débit élevé et une faible latence, ce qui la rend idéale pour les DApps à forte utilisation. Testez votre application dans des conditions de charge simulées pour vous assurer que les performances restent constantes (https://performance.sui.io).


Étape 5 : Test et débogage

Les tests sont essentiels pour éviter les vulnérabilités. Utilisez des outils tels que** Sui Explorer** pour surveiller les transactions et résoudre les problèmes. En outre, rédigez des tests unitaires pour vos modules 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);  
}  

Exécutez vos tests à l'aide de la CLI Sui :

sui move test  

Étape 6 : Interagir avec la communauté

La création de dApps ne se limite pas au codage, c'est aussi une question de collaboration. Partagez vos progrès sur des plateformes telles que** GitHub, Discord** ou** Twitter**. Participez à des hackathons et à des défis pour développeurs organisés par la Sui Foundation pour affiner vos compétences et gagner en visibilité (https://sui.peera.ai/).


Conclusion

En maîtrisant les concepts avancés de Move, en rédigeant des contrats intelligents modulaires et en créant des interfaces intuitives, vous êtes sur la bonne voie pour devenir un développeur dApp compétent sur la blockchain Sui. N'oubliez pas de donner la priorité à la sécurité, d'optimiser les performances et de vous engager auprès de la communauté pour maximiser votre impact.

Restez connectés pour** Course #3**, où nous explorerons des cas d'utilisation concrets et des techniques avancées pour faire évoluer vos DApps sur Sui !


Si vous souhaitez des éclaircissements supplémentaires ou des ressources supplémentaires, n'hésitez pas à demander !

  • Sui
  • Architecture
  • Move
3
Partager
Commentaires
.

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

291Publications418Réponses
Sui.X.Peera.

Gagne ta part de 1000 Sui

Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

Campagne de RécompensesMai
Nous utilisons des cookies pour vous assurer la meilleure expérience sur notre site Web.
Plus d'infos