Votre Premier NFT
Ce tutoriel décrit comment créer et transférer des actifs non-fongibles sur la blockchain Aptos. Le tutoriel contient des exemples de codes opérationnels dans le SDK TypeScript, SDK Python, et SDK Rust.
Étape 1 : Choisir un SDK
Section intitulée « Étape 1 : Choisir un SDK »Installez votre SDK préféré dans la liste ci-dessous :
Étape 2 : Installer la CLI
Section intitulée « Étape 2 : Installer la CLI »Installez le binaire pré-compilé pour la CLI Aptos.
Étape 3 : Exécuter l’exemple
Section intitulée « Étape 3 : Exécuter l’exemple »TypeScript
Section intitulée « TypeScript »Clonez le repo aptos-ts-sdk
et construisez-le :
git clone https://github.com/aptos-labs/aptos-ts-sdk.gitcd aptos-ts-sdkpnpm installpnpm build
Naviguez vers le répertoire des exemples TypeScript :
cd examples/typescript/
Installez les dépendances nécessaires :
pnpm install
Exécutez l’exemple TypeScript simple_nft
:
pnpm run simple_nft
Clonez le repo aptos-python-sdk
:
git clone https://github.com/aptos-labs/aptos-python-sdk.gitcd aptos-python-sdk
Installez les dépendances nécessaires :
curl -sSL https://install.python-poetry.org | python3poetry install
Exécutez l’exemple Python simple_nft
:
poetry run python -m examples.simple_nft
Clonez le repo aptos-rust-sdk
:
git clone https://github.com/aptos-labs/aptos-rust-sdk.gitcd aptos-rust-sdk
Exécutez l’exemple Rust simple_nft
:
cargo run --example simple_nft
Étape 4 : Comprendre le code
Section intitulée « Étape 4 : Comprendre le code »Initialiser les clients et comptes
Section intitulée « Initialiser les clients et comptes »Tout d’abord, nous initialisons les objets Aptos et Account :
// Créer une instance Aptos pour interagir avec la blockchainconst aptos = new Aptos();
// Créer des comptes pour Alice et Bobconst alice = Account.generate();const bob = Account.generate();
console.log("Adresse d'Alice :", alice.accountAddress.toString());console.log("Adresse de Bob :", bob.accountAddress.toString());
Financer les comptes
Section intitulée « Financer les comptes »Avant de pouvoir créer et transférer des NFT, nous devons financer les comptes avec des APT testnet :
// Financer le compte d'Aliceawait aptos.fundAccount({ accountAddress: alice.accountAddress, amount: 100_000_000, // 1 APT = 100_000_000 Octas});
// Financer le compte de Bobawait aptos.fundAccount({ accountAddress: bob.accountAddress, amount: 100_000_000,});
Créer une collection
Section intitulée « Créer une collection »Avant de créer des NFT individuels, nous devons créer une collection. Une collection agit comme un conteneur pour des NFT connexes :
// Créer une transaction pour créer une collectionconst createCollectionTransaction = await aptos.createCollectionTransaction({ creator: alice, description: "Collection de démonstration d'Alice", name: "Collection d'Alice", uri: "https://aptos.dev",});
// Signer et soumettre la transactionconst committedTxn = await aptos.signAndSubmitTransaction({ signer: alice, transaction: createCollectionTransaction,});
// Attendre que la transaction soit confirméeawait aptos.waitForTransaction({ transactionHash: committedTxn.hash });console.log("Collection créée !");
Créer un NFT
Section intitulée « Créer un NFT »Maintenant que nous avons une collection, nous pouvons créer un NFT à l’intérieur :
// Créer une transaction pour créer un NFTconst createNftTransaction = await aptos.mintDigitalAssetTransaction({ creator: alice, collection: "Collection d'Alice", description: "Premier NFT d'Alice", name: "NFT d'Alice", uri: "https://aptos.dev/img/nft.jpeg",});
// Signer et soumettre la transactionconst nftTxn = await aptos.signAndSubmitTransaction({ signer: alice, transaction: createNftTransaction,});
// Attendre que la transaction soit confirméeawait aptos.waitForTransaction({ transactionHash: nftTxn.hash });console.log("NFT créé !");
Lire les données NFT
Section intitulée « Lire les données NFT »Nous pouvons maintenant lire les données de notre NFT nouvellement créé :
// Obtenir les collections d'Aliceconst alicesCollections = await aptos.getAccountCollections({ accountAddress: alice.accountAddress,});console.log("Collections d'Alice :", alicesCollections);
// Obtenir les NFT d'Aliceconst alicesNfts = await aptos.getAccountOwnedTokens({ accountAddress: alice.accountAddress,});console.log("NFT d'Alice :", alicesNfts);
Transférer un NFT
Section intitulée « Transférer un NFT »Maintenant transférons le NFT d’Alice à Bob :
// Obtenir l'adresse du NFT depuis les NFT d'Aliceconst nftAddress = alicesNfts[0].token_data_id;
// Créer une transaction de transfertconst transferTransaction = await aptos.transferDigitalAssetTransaction({ sender: alice, digitalAssetAddress: nftAddress, recipient: bob.accountAddress,});
// Signer et soumettre la transactionconst transferTxn = await aptos.signAndSubmitTransaction({ signer: alice, transaction: transferTransaction,});
// Attendre que la transaction soit confirméeawait aptos.waitForTransaction({ transactionHash: transferTxn.hash });console.log("NFT transféré à Bob !");
Vérifier la propriété
Section intitulée « Vérifier la propriété »Enfin, vérifions que Bob possède maintenant le NFT :
// Obtenir les NFT de Bobconst bobsNfts = await aptos.getAccountOwnedTokens({ accountAddress: bob.accountAddress,});console.log("NFT de Bob :", bobsNfts);
// Obtenir les NFT d'Alice (devrait être vide maintenant)const alicesNftsAfterTransfer = await aptos.getAccountOwnedTokens({ accountAddress: alice.accountAddress,});console.log("NFT d'Alice après transfert :", alicesNftsAfterTransfer);
Étape 5 : Comprendre les Digital Assets
Section intitulée « Étape 5 : Comprendre les Digital Assets »Métadonnées NFT
Section intitulée « Métadonnées NFT »Chaque NFT (Digital Asset) sur Aptos contient les métadonnées suivantes :
- Nom : Le nom du NFT
- Description : Une description du NFT
- URI : Un lien vers le media associé (image, vidéo, etc.)
- Collection : La collection à laquelle appartient ce NFT
Collections
Section intitulée « Collections »Les collections servent de conteneurs pour des NFT connexes et contiennent :
- Nom : Nom de la collection
- Description : Description de la collection
- URI : URI pour les métadonnées de la collection
- Créateur : L’adresse qui a créé la collection
Propriétés des Digital Assets
Section intitulée « Propriétés des Digital Assets »Les Digital Assets sur Aptos ont plusieurs propriétés importantes :
- Unicité : Chaque Digital Asset a une adresse unique sur la blockchain
- Propriété : La propriété est suivie on-chain et peut être vérifiée
- Transférabilité : Les NFT peuvent être transférés entre comptes
- Métadonnées mutables : Les créateurs peuvent configurer si les métadonnées peuvent être modifiées
Étape 6 : Concepts avancés
Section intitulée « Étape 6 : Concepts avancés »Propriétés personnalisées
Section intitulée « Propriétés personnalisées »Vous pouvez ajouter des propriétés personnalisées à vos NFT :
const createNftWithProperties = await aptos.mintDigitalAssetTransaction({ creator: alice, collection: "Collection d'Alice", description: "NFT avec propriétés personnalisées", name: "NFT Spécial", uri: "https://aptos.dev/img/special-nft.jpeg", propertyKeys: ["power", "rarity", "level"], propertyTypes: ["u64", "string", "u8"], propertyValues: [100, "legendary", 5],});
Contrôle de la mutabilité
Section intitulée « Contrôle de la mutabilité »Vous pouvez contrôler quels aspects de votre NFT peuvent être modifiés :
const createImmutableNft = await aptos.mintDigitalAssetTransaction({ creator: alice, collection: "Collection d'Alice", description: "NFT immuable", name: "NFT Permanent", uri: "https://aptos.dev/img/permanent-nft.jpeg", // Contrôler quelles métadonnées peuvent être modifiées mutableDescription: false, mutableName: false, mutableUri: false, mutableProperties: false,});
Burning (Destruction) de NFT
Section intitulée « Burning (Destruction) de NFT »Vous pouvez détruire définitivement un NFT :
const burnTransaction = await aptos.burnDigitalAssetTransaction({ creator: alice, digitalAssetAddress: nftAddress,});
await aptos.signAndSubmitTransaction({ signer: alice, transaction: burnTransaction,});
Étape 7 : Bonnes pratiques
Section intitulée « Étape 7 : Bonnes pratiques »Métadonnées
Section intitulée « Métadonnées »- Stockez les images et médias dans un stockage décentralisé comme IPFS
- Utilisez des formats de métadonnées standards (par exemple, JSON)
- Incluez des descriptions riches et des attributs
Sécurité
Section intitulée « Sécurité »- Validez toujours les entrées lors de la création de NFT
- Considérez soigneusement les permissions de mutabilité
- Testez sur testnet avant le déploiement en mainnet
Coûts de gaz
Section intitulée « Coûts de gaz »- Les coûts de gaz varient selon la complexité du NFT
- Les NFT avec plus de propriétés coûtent plus de gaz
- Considérez le groupement d’opérations quand c’est possible
Félicitations !
Section intitulée « Félicitations ! »Vous avez maintenant appris les bases de la création et gestion de NFT sur Aptos ! Vous pouvez maintenant :
- Créer des collections NFT
- Créer des NFT individuels avec métadonnées
- Transférer des NFT entre comptes
- Lire et vérifier la propriété de NFT
- Ajouter des propriétés personnalisées
- Contrôler la mutabilité
Prochaines étapes
Section intitulée « Prochaines étapes »- Explorez les Digital Assets avancés
- Apprenez sur les standards de tokens
- Créez une marketplace NFT
- Intégrez des NFT dans des applications front-end