Construire une application de gestion de bibliothèque décentralisée avec Solidity | Rahul Agarwal | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Construire une application de gestion de bibliothèque décentralisée avec Solidity

teacher avatar Rahul Agarwal, Flutter Developer & Trainer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      INTRODUCTION DU COURS

      0:53

    • 2.

      Créer un nouveau projet de hardhat

      7:39

    • 3.

      Clés d'alchimie et de Metamask

      9:04

    • 4.

      Créer un contrat de bibliothèque

      6:54

    • 5.

      Fonctionnalité pour récupérer des livres

      12:45

    • 6.

      Créer un nouveau fichier de test

      13:14

    • 7.

      Test d'unité pour ajouter et récupérer des livres

      13:59

    • 8.

      Exécuter les tests

      5:05

    • 9.

      Rédaction du script de déploiement

      4:54

    • 10.

      Travailler sur le frontend js suivant

      9:46

    • 11.

      Fonctionnalité pour conneter MetaMask

      11:18

    • 12.

      Fonctionnalité pour ajouter un livre

      16:32

    • 13.

      Fonctionnalité pour récupérer des livres

      9:29

    • 14.

      Créer un composant de livre

      18:52

    • 15.

      Fonctionnalité pour changer l'état du livre

      5:10

    • 16.

      Testez l'application complète

      4:40

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

48

apprenants

1

projet

À propos de ce cours

La blockchain est une technologie clé derrière Web3. Il est le plus souvent associé au bitcoin de la crypto-monnaie et est la technologie qui la sous-tend . La blockchain du bitcoin est un grand livre public d'activité du réseau de bitcoin. Mais le bitcoin n'est pas la propriété d'une seule entreprise ou d'une personne et n'est pas émis par une autorité centrale comme une banque centrale. Il est plutôt décentralisé et le réseau est maintenu par un groupe mondial de personnes qui exécutent des ordinateurs spécialisés.

Dans ce cours, nous apprendrons à créer une application de gestion de bibliothèques personnelles décentralisée complète à partir de zéro. Nous utiliserons Solidity pour le contrat intelligent, le hardhat pour les tests et le déploiement, les js Ethers pour communiquer avec le contrat, Metamask pour signer la transaction, les js suivants pour le frontend et Alchemy en tant que fournisseur de nœuds de blockchain. À la fin du cours, vous comprendrez tous les concepts nécessaires pour postuler à un travail de développeur ou même construire votre propre application sur la blockchain Ethereum.

Notre pile

  • Solidité (Pour écrire notre contrat intelligent)

  • Hardat (cadre de construction, de test et de déploiement)

  • Réagir / Js suivants (Pour créer notre frontend)

  • Ethers (bibliothèque en ligne pour interagir avec la blockchain et notre contrat intelligent)

  • Alchimie (fournisseur de nœuds Ethereum)

Rencontrez votre enseignant·e

Teacher Profile Image

Rahul Agarwal

Flutter Developer & Trainer

Enseignant·e

Hello, I'm Rahul. I am skilled in building cross platform application using Flutter. I am freelance developer as well as conduct workshops to share my knowledge with the community.

Voir le profil complet

Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. INTRODUCTION DU COURS: blockchain est la force motrice de la prochaine génération, également appelée arbre de verbes. La blockchain réinvente la façon dont les données sont stockées et gérées. L'arborescence Web englobe la décentralisation et est en cours de construction et de propriété par ses utilisateurs. Comme c'est le cas dans de nombreuses nouvelles opportunités pour les développeurs comme nous dans cette dominante. Dans ce cours, nous allons apprendre à créer une application complète de gestion des célébrités décentralisée à partir de zéro, nous utiliserons la solidarité pour le paradigme de développement de contrats intelligents pour test et déploiement a eu soif de communiquer avec le contrat, MetaMask pour signer la transaction, React JS pour le financement et alchimie est que la blockchain les fournira. À la fin du cours, vous comprendrez les concepts nécessaires pour postuler pour qu'ils placent un emploi ou même construire votre propre application sur la blockchain araméen sans perdre plus de temps. Inscrivez-vous maintenant et commençons. 2. Créez un nouveau projet de chapeau: Bonjour, bienvenue dans la toute première vidéo du cours, où nous allons apprendre à créer une application décentralisée de gestion de bibliothèque. Je ne perdrai donc pas votre temps à expliquer ce qu'est le Web trois, ce qu'est la décentralisation et tout. Si vous le souhaitez, vous pouvez Google par vous-même. Je vais simplement accéder de façon statique au programme du cours ou à la feuille de route du cours. Le cours est donc divisé en étapes D7. La première étape consistera à mettre en place l' environnement de développement. Ensuite, nous créerons un contrat intelligent. Ensuite, nous écrirons un test unitaire. Ensuite, nous déploierons un contrat intelligent. Après tout, les tests sont couronnés de succès. Ensuite, nous utiliserons un framework React connu sous le nom deux prochaines années pour construire un front-end. Ensuite, nous utiliserons des chaises Ethers sur le front-end pour interagir avec le contrat intelligent. Et enfin, nous allons tester l'ensemble de l'application si tout fonctionne bien ou non. Avant d'aller de l'avant, je voudrais juste m' assurer que vous avez installé Matter mask et que vous avez testé des intérêts universitaires dans votre compte. Je ne vais pas m' arranger avec, encore une fois. Veuillez regarder n'importe quel didacticiel et continuer le cours. Il n'y aura guère cinq minutes, c'est tout. Avant de travailler sur l'application, vous devez au moins connaître cette pile technologique. Donc, évidemment, nous utilisons une blockchain en titane. Et la solidité est ce langage de programmation pour rédiger des contrats intelligents. Ensuite, nous utiliserons le casque dur comme outil de déploiement. Puis porte-monnaie MetaMask. Alchimie est alors un fournisseur de nœuds cachés. Il vous indique qu'il s'agit d'un laboratoire pour communiquer avec le contrat intelligent, puis HTML, CSS et enfin React JS, ou vous pouvez dire Next JS. C'est ça. Commençons par l'environnement de développement. Commencez par créer un dossier. Le nom est la gestion des bibliothèques. Si vous voulez, vous pouvez le nommer n'importe quoi, puis y ajouter un terminal. Et pour installer Hearted, vous devez d'abord créer un package NPM en exécutant la commande et la machine virtuelle qui s'y trouve. Pourquoi ? Il initialisera un package NPM vide. C'est ça. Vous pouvez donc voir que ce fichier package.json est là. Ensuite, faire du style hardhead. Cette commande est NPM. Installez, tiret, tiret, enregistrez, tabutez, casquette et appuyez sur Entrée. D'accord. Les paquets de tête rigide sont la dépendance la plus difficile qui est installée. Pour ne pas créer un projet de casque dur, nous utiliserons cette commande, qui nous donnera une structure minimale, c' est-à-dire le casque NP. Appuyez ensuite sur Entrée. Sélectionnez ensuite le premier qui crée un exemple de projet B6 et appuyez à nouveau sur Entrée, puis à nouveau, Entrée, puis Entrée. C'est ça. Maintenant, peu de dossiers et de fichiers sont créés. L'exemple de projet vous demandera d' installer la tête dure par un truc plus dur, les terroristes et peu d'autres dépendances qui rendent la tête dure compatible avec le test échoueront et il a la célébrité à copier simplement cette ligne et collez-la et appuyez sur Entrée. Il téléchargera toutes les dépendances requises pour le projet. D'accord. Laissez les dépendances que j'ai installées avec succès. Il suffit maintenant d'ajouter VS Code Editor et d'y ajouter le dossier de votre projet. Ce sont les fiches factices que la tête dure nous fournit. Dans la vidéo suivante, nous inclurons les touches d'alchimie et de masque Meta dans le déploiement de la configuration Hardhead. Merci. 3. Les touches de l'alchemy et du Metamask: Bonjour. Un casque de sécurité nous donne donc peu de dossiers et de fichiers. Nous comprendrons tous ces éléments étape par étape. Mais d'abord, passons au fichier de conflit dur Dot js. Et assurez-vous que nous dirigeons notre réseau pour qu'il soit corrélé le réseau de test de l'itanium. Et pour que cela fonctionne, nous avons besoin d'une URL de nœud itanium précoce et d'une adresse de portefeuille. Vr utilisant bouclé et non voler Stone ou tout autre car dans Alchemy, ces réseaux sont dépréciés. Donc, le meilleur choix ne serait pas d'utiliser le réseau caudally. Comme j'ai déjà un compte dans Alchemy, je ne vais pas créer de nouveau compte, mais je vais simplement aller sur alchemy.com. Et je clique sur Connexion. Vous devez vous inscrire vous-même. C'est très simple. Il suffit de connecter votre compte Google et tout. Rien de fantaisiste. Et ensuite, après avoir créé un nouveau compte dans Alchimie, vous serez redirigé vers cet écran de tableau de bord. Ici, cliquez simplement sur le bouton Créer une application. Et maintenant, remplissons ces informations. Le nom de mon application sera Library Management, onglet. Alors la chaîne sera ennuyeuse, mais le réseau sera pieux. Et comme je l'ai dit, c'est déprécié, déprécié. Il est donc préférable d'utiliser simplement froidement le réseau , puis de cliquer sur Créer une application. Vous avez donc créé avec succès une application dans Alchemy. Maintenant, l'étape suivante consiste à obtenir la clé privée de MetaMask. Vous pouvez installer Meta mask en vous rendant sur la mascotte Madame sur votre site Web et en installant l' extension pour votre navigateur. Comme je l'ai déjà fait, vous pouvez simplement mettre en pause la vidéo et regarder la configuration d' un nouveau portefeuille et comment obtenir des mangeurs de test sur votre compte. Parce que pour que ça marche, faut faire un test. Un test comme celui-ci. C'est mon portefeuille. Et il suffit de vous connecter. Alors, vous pouvez voir que j'ai tout ce qu'il y a à faire. Mangez-vous et assurez-vous que vous êtes idiot. Vous sélectionnez le réseau oralement à partir des options. Ensuite, pour obtenir la clé privée, vous devez cliquer sur les détails du compte, exporter la clé privée et saisir votre mot de passe. C'est ça. Ensuite, vous obtiendrez votre clé privée. Et ceci, ce 0 x a d, c'est votre clé publique, ce qui n'est pas nécessaire pour le moment, mais au moins vous devriez savoir. Maintenant, vous devez installer quelques dépendances pour écrire ces clés. Parce que nous allons écrire l'URL d'alchimie et la clé privée MetaMask dans notre configuration de tête rigide. Et pour cela, nous allons installer et utiliser la dépendance appelée dot ENV car il n'est pas recommandé de transmettre ces informations sensibles directement dans notre code. Il suffit donc d'ajouter votre terminal et d'écrire npm install dot ENV. Mais aussi je suis en train d'installer Penn Zeplin ajoute un avion est dit bibliothèque de contrats modulaires, réutilisables et intelligents retournant solides. Il s'agit donc simplement d'un code pré-écrit que vous pouvez utiliser directement. Rien d'autre. Je vais juste écrire npm installer un accord direct Zeplin slash contrats, puis espace D, O, D E et V dot ENV. Il s'agit d'une autre dépendance. Cela signifie qu'il existe deux dépendances. Ensuite, nous allons simplement appuyer sur Entrée. C'est donc fait. Maintenant. Utilisez d'abord ce point ENV. Je vais créer un nouveau fichier dans le répertoire racine sous le nom point ENV. C'est comme ça. Vous pouvez voir qu'il se trouve dans le répertoire racine. Et puis, ici, je vais créer un très bien. Ou vous pouvez dire quelque chose qui va stocker la valeur. Alchemy URL est égal à ceci, et let g est égal à cela. N'oubliez pas qu'il n'y a rien qui soit directement une mine de charbon. Je suis en train de l'écrire. Maintenant, pour obtenir l'URL de l'alchimie, accédez simplement à votre application et cliquez sur la touche Afficher. Ensuite, vous verrez ce cookie HTTP simplement copié et collé dans votre URL d' alchimie comme celle-ci. Et puis pour obtenir la clé privée du portefeuille , ajoutez le masque de méthode. Ensuite, ici les détails du compte, exportez la clé privée et le mot de passe valide Dario et confirmez. Copiez cette clé et collez-la ici dans la clé privée violette. C'est ça. Enregistrez-le et fermez-le. Maintenant, nous voulons ces clés dans notre configuration de tête rigide. Pour cela, j'ai ouvert un fichier de configuration à tête dure. Et à l'intérieur des modules ou de l'exportation, n'est-ce pas ? Des réseaux, puis des accolades bouclées. Puis à l'intérieur, comme le nom du réseau, j'utilise girly. Puis encore des accolades bouclées. Ensuite, une propriété est URL, que nous utilisons ces données de fichier ENV point. Nous devons écrire l'URL d'alchimie ENV de processus. Et pour que cela fonctionne tout en haut, nous avons le premier besoin du paquet dot ENV. C'est la configuration point ENV comme celle-ci. De cette façon, nous pouvons accéder au fichier dot ENV. Ensuite, l'URL est fournie. Et le deuxième paramètre, nous devons envoyer ces comptes. C'est dans la NA, nous devons simplement écrire un point ENV, portefeuille à points, une clé privée. C'est ça. C'est tout pour la fertigation de la boîte à tête dure. Maintenant, notre projet pointe vers le réseau de bureaux de corrélation d'alchimie. Dans la prochaine vidéo, nous travaillerons à la création du contrat. Merci. 4. Créer un contrat de bibliothèque: Il est donc temps de travailler sur notre contrat intelligent. Créez un nouveau fichier dans le dossier Contracts et nommez-le Library dot soul. Ensuite, la première chose que nous devons faire n'importe quel contrat est la licence Delta et le détournement d' DVR solide et solide en utilisant le bon contrat et le nom du contrat. Nous allons donner le contrat nommé bibliothèque. Maintenant, je suis Wesley Library , j'ai des livres. La première chose que nous allons faire est donc de créer une structure de livre. C'est-à-dire qu'un livre aura quelques idées, nom comme ça. Il suffit d'écrire un livre. Ensuite. Il aura une pièce d'identité. Ensuite, le nom du livre. Alors oui, publiez. Alors, qui est l'Arthur ? Et enfin, que nous ayons fini de lire ce livre ou non, comme ça, parce que le concept sera que nous aurons notre propre bibliothèque où nous pourrons écrire. Ce livre est laissé à lire. J'ai déjà lu ce livre comme celui-ci. La structure est donc prête. Maintenant, je vais créer une variable de listes de livres, qui sera de type liste de livres. C'est-à-dire qu'il conservera la structure du livre. Ce sera privé et je vais juste le nommer chanteur. Ensuite, nous allons mapper cet ID de livre à l'adresse du portefeuille de l'utilisateur qui ajoute ce livre. Pour que plus tard, nous puissions directement récupérer ce que les utilisateurs réservent sans aucun problème. Je vais donc simplement écrire un mappage. Ensuite, vous terminez à 56 sera mappé à l'adresse, et il sera simplement réservé au propriétaire. Encore une fois, je dis qu' il s'agit d'un mappage de ID du livre avec l' adresse du portefeuille du propriétaire. C'est ça. Ensuite, la première fonction que nous allons créer est d'ajouter un livre. Il suffit donc d'ajouter du volume. Cette fonction sera alors une fonction externe. Il se souviendra de l'extérieur. Et il acceptera peu de valeurs comme le nom mammaire de chaîne vous dans 16 ans. Puis l'artère mammaire de corde. Puis un booléen de fini. Ces choses qu'il acceptera. Maintenant, pour ajouter un livre, nous devons avoir un numéro d'identification et il doit être unique. Le service n'utilisera tout simplement aucune dépendance externe pour le moment. Je vais juste donner à la pièce d'identité la longueur de nos livrets. C'est celui-là. Comme évidemment, après avoir ajouté un livre, il va continuer à s'incrémenter. Donc, ce sera toujours unique. Il suppose que la première chose, nous commencerons à 0, alors c'est que l'ID du livre sera 0, puis un, puis deux comme ça. Ensuite, dans la liste des livres, nous allons pousser la valeur de la structure. C'est-à-dire que le livre de structure va le pousser. Et la première chose qu'il faudra, c'est la carte d'identité. Alors nommez-le ici. Puis j'ai fini comme ça. Nous allons donc le pousser dedans. Ainsi, automatiquement la longueur passera de 0 à un. Ensuite, dans la cartographie aussi, je vais faire la cartographie du livre. identifiant appartient à l' expéditeur du message comme celui-ci. Ce livre appartient donc à celui qui appelle cette fonction. Et à la fin, j'aimerais émettre un événement. L'événement sera ajouté à un livre. Tout simplement. Il demandera le destinataire, le destinataire et le numéro de livre. Cela sera donc simplement connecté à cette blockchain. Tout ce que nous pouvons lire à l'extérieur est de l'information. Il suffit de le voir comme une fonction de connexion. Ajouter un événement de livre. Le destinataire sera expéditeur du message et le numéro de livre sera le numéro d'identification du livre. J'espère donc que vous avez compris qu'il s'agit d'un code très basique. Si vous venez d'un autre langage de programmation, vous comprendrez le concept. De toute évidence, ces choses sont nouvelles. Si vous avez encore des doutes, vous pouvez en savoir plus sur la cartographie et les événements. Et dans la vidéo suivante, nous allons travailler sur d'autres fonctionnalités de notre contrat intelligent. Merci. 5. Fonctionnalité pour récupérer les livres: Travaillons maintenant sur la fonctionnalité pour obtenir tous les livres de cet utilisateur particulier. Donc je le nommerais, il suffit d'obtenir une liste de livres. Il s'agira d'une réception privée. Je vais vous dire pourquoi. Il ne vous donnera les informations que j' utilise le mot-clé view et il retournera ce livre de trucs qui est comme celui-ci. Vous pensez peut-être pourquoi ce privé, parce que je veux juste passer des arguments comme Boolean terminé. Cela signifie que c'est si nous demandons les livres finis ou que nous n'avons pas lus. Ainsi, avec cette seule fonction, nous pouvons appeler ou implémenter deux fonctionnalités. Commençons à travailler. Vous comprendrez tout. D'accord ? La fonction l'orthographe est mal. D'accord ? Maintenant, la première chose que je ferais est de créer une variable, de la nommer. Il s'agira alors d'une nouvelle liste de livres. Et cette terre serait chanteuse, terre sombre comme celle-ci. Bon, donc maintenant, au début, nous allons compter le nombre de livres de cet utilisateur. Parce que dans cette liste de livres, il y aura beaucoup de livres d' utilisateurs différents. La première chose que nous devons parcourir ou parcourir cette liste pour trouver le propriétaire. C'est-à-dire définir les livres qui appartiennent à cet utilisateur. C'est pour ça. Il suffit de créer une boucle for. Ce sera quand je serai égal à 0. J'ai moins que la liste de livres, la liste de livres, le terrain I plus, comme ça. Ensuite, la première chose à vérifier est de savoir si le propriétaire du livre, c' est-à-dire que cet ID de livre appartient ou non à cet expéditeur de points de message. C'est le cas. Puisque nous savons que l'ID du livre commence à 0. C'est pourquoi nous avons commencé à partir de 0. Et nous avons demandé que le mappage soit là avec cette adresse, nous pouvons donc simplement vérifier s' il appartient à cet expéditeur. Et une autre condition que nous allons vérifier est la liste des livres. I. Fini égal à, égal à fini. Comme ça. Cela signifie simplement, ce qui signifie que ce point de liste de livres est terminé. C'est cette propriété. Qu'elle soit égale à la variable que nous envoyons, c'est ce booléen, qu'il soit égal ou non. Si c'est le cas, dans cette variable temporaire, simplement à cet emplacement du compteur, insérez cette valeur qui est une valeur comptable. Ensuite, incrémentez ce compteur comme ceci. D'accord ? Donc maintenant, il ne fait aucun doute que nous avons tous les livres appartenant à l'utilisateur dans cette variable, mais cette longueur est définie d'une plus grande taille, c' est-à-dire toute la liste des livres. C'est peut-être 100. Et il n'y aura que cinq livres. Pour économiser de la mémoire et de l'espace. Il va créer une autre variable. Autrement dit, il s'agit variables temporaires qui sont le résultat final. Et ce sera le cas, encore une fois. Une nouvelle zone de livres, mais cette fois-ci, la longueur de ce pays compte. Et j'utiliserai la boucle for pour simplement récupérer toutes les données de ces deux points distincts. Maintenant encore utilisé new int I est égal à 0. Je suis moins que le comptoir, je plus. Ici, simplement, dans le tableau de résultats. Copiez tout à partir de cette baie temporaire. C'est ça. C'est juste une simple copie. Et c'est finalement revenu. C'est comme ça. Encore une fois, je voudrais tout d'abord expliquer qu'il s'agit d'une fonction privée qui ne regarde que. Il ne fait rien dans la blockchain. Dans cette fonction, nous envoyons un paramètre appelé terminé, c'est-à-dire vrai ou faux. Nous allons donc envoyer. Ensuite. Tout d'abord, nous avons créé une variable du nom temporaire. Il s'agit d'un tableau vide. Avec cela, la taille de la matrice est égale à la taille du livret stable. Il pourrait s'agir, supposons, de 500. Ensuite, nous avons créé ce compteur qui commence à 0. Et il suffit de penser à cela. Combien de livres appartient-ils à l'utilisateur ? S'il est possédé et qu'il sera mis en œuvre. Et comme je le sais, ça commence à 0, c'est pourquoi, dans le cas temporaire, je l'envoie à la position 0. Ou bien comment nous allons envoyer une valeur à l'intérieur. Ensuite, si vous le souhaitez, vous pouvez également renvoyer le temporaire, mais la longueur est très élevée. Pour le supprimer, je viens de créer un nouveau tableau avec cette longueur de compteur, c' est-à-dire dix heures, par exemple. Et il suffit de copier tout à partir de deux jours temporaires, résultat, variable et renvoyer le résultat. Maintenant, le but de la rendre privée était d'utiliser ces deux-là parce que nous sommes en train de créer pour fonctionner. Tout d'abord, le nom de la fonction est terminé. livres. externe vue externe renvoie la mémoire du livre. Et il retournera simplement cette fonction qui est obtenir liste de livres avec la valeur finie à true. Et une autre fonction que nous allons créer et nommer, finir. livres. vue externe renvoie une structure de tableaux de livres. Et il retournera la même chose qui est, obtenir une liste de livres, mais définitivement la valeur avec faux. Donc, avec cette fonction, nous sommes capables d'écrire deux autres fonctions, sinon nous devons écrire un souhait, nous devrons peut-être écrire séparément, séparément. Ce sera, encore une fois, le code sera répété et tout. C'est donc très simple. Vous le comprendrez pas à pas ou, sinon suspendez la vidéo et essayez de comprendre la logique qui la sous-tend. Maintenant, la dernière fonctionnalité dont nous avons besoin est de définir cette valeur finale sur false. C'est-à-dire, du vrai au faux et tout. Parce que, de toute évidence, s'ils utilisent le livre lu, il pourrait vouloir le mettre à jour. Il suffit donc d'écrire la fonction. Puni. Ensuite, il s' agira d'une fonction externe. Maintenant, cette fonction demandera cet ID de livre et une valeur booléenne. Fini. Tout d'abord, nous allons vérifier si l'utilisateur est propriétaire de ce livre ou non, car il ne peut lire ou voir que ses propres livres. Ce numéro de livre appartient-il à l'expéditeur du point de message ? Ce truc sera ici comme ça. Ensuite, il suffit de réserver la liste. L'ID du livre, le point fini sera cette valeur. Et après cela, j'aimerais, encore une fois, faire un événement. Ainsi, tout comme le jeu d'événements terminé, il demandera un numéro de livre. Et la valeur booléenne. Ici. Émettons le set terminé. Et nous envoyons ce numéro de livre et la valeur finie. Donc, c'est tout. Pour notre bibliothèque, contrat intelligent. Nous avons tout écrit. Dans la vidéo suivante, nous allons écrire un test unitaire pour nous assurer que tout fonctionne correctement. Merci. 6. Créez un nouveau fichier de test: Bonjour, bon retour. Étant donné que la Blockchain est immuable, avant de déployer notre contrat intelligent, nous devons rédiger des tests unitaires pour nous assurer que toutes nos fonctions et variables de nos contrats fonctionnent correctement. Et renvoyer les valeurs correctes. Nous utiliserons le Mocha Chai à cette fin. Donc, à l'intérieur de ce dossier de test, créez un nouveau fichier et nommez-le Library dot test, désolé, library dot js. Maintenant, c'est vrai, le nécessaire qui importe et toute cette bibliothèque que nous utiliserons est Chai, c'est comme ça, nous devons écrire. Et ensuite, la prochaine chose que nous aurons besoin, c'est les mangeurs sont égaux à avoir besoin d'etos. Nous avons ces dépendances lorsque nous avons créé un nouveau projet dur. Créons donc notre bureau. Et nous allons rédiger un contrat de bibliothèque. Puis à l'intérieur. J'espère que vous savez comment écrire un test avec un casque de sécurité. Donc, avant d'exécuter les fonctionnalités et toutes les fonctionnalités, nous devons écrire des données ou des variables. Tout d'abord, certainement, nous devrions avoir notre contrat de bibliothèque et ainsi de suite. Écrivons ces variables. Ensuite, le propriétaire qui déploie le contrat. Cette deuxième bibliothèque de petites lettres sera comme un objet et une vérification de notre contrat. Et ce sera une usine, vous pouvez dire. Ensuite, nous devons d'abord ajouter des données fictives à notre bibliothèque. Nous allons donc juste écrire le nombre de livres finis est égal à cinq. Juste des données factices. Et secondaire, nous avons const num, livre fini, erreur d'orthographe. Lorsque le livre de niche est égal à trois. Ensuite, nous avons terminé la liste des livres inachevés et une autre liste de livres finis. Mark II utilise donc des crochets pour organiser la structure. Ce mot-clé est utilisé pour regrouper tous nos tests et nous pouvons passer en tant que Nest MLL. Nous pouvons l'imbriquer. Encore une fois, nous pouvons écrire ce graphique. Encore une fois, nous pouvons faire comme ça pour que nous puissions tout imbriquer. Ensuite, il y a un cuisinier informatique, ce sont les cas de test et tout ce que nous utiliserons plus tard. Ensuite, nous avons avant h, c'est un crochet. C'est-à-dire que nous avons cela. Nous avons cela avant chaque crochet également. C'est donc un crochet qui va courir avant tout le scribe et il fonctionne. Donc, en mots simples, tout ce que vous écrivez à l'intérieur de ce document BeforeEach sera exécuté lorsque nos cas de test sont construits sur quatre bureaux séparés. Bon, allons maintenant de l'avant. Commençons par avant chaque crochet. À l'intérieur, ils gagneront une fonction sinc. Maintenant, nous allons utiliser ce mot-clé de bibliothèque, c' est-à-dire la variable de bibliothèque. Et nous allons simplement écrire attendre des ethers, dot get, contrat usine. Et le nom de notre contrat est le suivant. Élaboration. Bon, alors nous aurons celui-là. Laissez la bibliothèque, qui vous attend, déployer le point de la bibliothèque. Encore une fois, attendez ça. Nous n'avons pas à écrire directement. Nous pouvons maintenant obtenir le signataire comme ça. Le propriétaire est égal à attendre. Commencez. Obtenez des signataires comme ça. OK. C'est juste, je suis juste en train de vérifier. J'ai tout. Tout est là. Maintenant. C'est la structure. Autrement dit, il y aura une liste de valeurs. La première valeur va entrer dans cette variable. C'est là le sens de cette déclaration. Initialisons maintenant ce chanteur non meublé à cette liste vide et à l' endroit le plus convivial de cette liste vide. Maintenant, ce que nous allons faire, c'est que nous ajouterons cinq données fictives dans cette liste de livres inachevée et trois données fictives dans cette liste de livres finie. Maintenant, pour cela, je vais utiliser une boucle for qui est loin plomb je suis égal à 0. J'ai moins que le nombre de livres inachevés, en plus. Comme ça, je vais simplement créer un objet livre. Object ou vous pouvez dire comme ça. Ensuite, il aura un nom. Il y aura un an. Il aura, aura une valeur de fini. Ce sera faux. Maintenant, obtenez des valeurs aléatoires de nom ici dans Arthur, car il va le parcourir en boucle. Je vais créer ici une fonction aléatoire de base. Comme ça. Fonction. Obtenez un entier aléatoire. Maintenant, je vais juste définir les chiffres minimum et maximum et tout et simplement renvoyer le plancher de points mathématiques. Ce n'est pas aléatoire. Multipliez par le maximum moins le minimum. Comme ça. Il s'agit d'une fonction engourdie très basique. Si vous utilisez des numéros plus complexes, si vous voulez des nombres plus complexes, vous devriez utiliser d' autres bibliothèques. Mais pour l'instant, cela va faire ce travail. Ce n'est qu'un objectif de test. Je vais simplement obtenir un entier aléatoire. J'ai besoin, est-ce de un à 10 mille ? Et je vais juste réussir à filer comme ça. Encore une fois, pour l'année. Il s'agira de n'importe quoi entre 1800 et 2022. Alors notre troisième serait juste ce nombre aléatoire. N'oubliez pas que c' est juste pour tester. Je veux que quelques données soient dedans de ce côté-ci. Maintenant, après cet objet de livre, je vais simplement écrire l'attente, la bibliothèque, le point, ajouter un livre et un livre. Livre, nom du point, livre, oreille à pois, crochet. Notre troisième livre est terminé. Ensuite, je vais pousser cette information en détail, cette liste inachevée. C'est cette valeur comptable comme celle-ci. Donc simplement, encore une fois, avant que h ne s' exécute avant chaque test défini, nous allons définir ici le total pour le test unitaire. Et avant chaque test, ce morceau de code sera exécuté. Nous sommes d'abord en train de déployer notre contrat, puis d'en obtenir l'exemple, puis d'ajouter une boîte factice. Maintenant, encore une fois, de la même manière, nous devons également ajouter des données pour ce livre fini. Après ce livre inachevé, encore une fois, nous écrirons un peu la même chose. Ce que je vais faire, c'est que je vais le copier, le coller ici. Ensuite, la première chose que je ferai c'est d'obtenir ce nombre de livres finis. Ici. Je suis égal à 0 de moins que le nombre de livres finis. Là encore, ce seront les livres et ici, la valeur de définition sera vraie. Ensuite, j'écrirai le point d' attente de la bibliothèque, ajouter le livre, le nom du point du livre. Ensuite, je vais envoyer cette information à cette liste de livres finis. C'est ça. Enfin, nous en avons fini avec ça avant chaque crochet. Dans la vidéo suivante, nous allons écrire le test unitaire pour ajouter un livre et obtenir tous les livres. Merci. 7. Test d'unité pour ajouter et récupérer des livres: Nous allons maintenant écrire notre premier test pour ajouter un livre. Après cela, avant chaque clause. Réécrivons pour décrire le groupe et ajouter un livre. Ce sera une fonction. Ensuite, à l'intérieur, utilisez-le. C'est ce qui vient également de la bibliothèque. Il s'agit des cas de test. Le premier cas de test sera, nous devrions nous rencontrer et réserver un événement. Il suffit de l'écrire. Si vous ne comprenez pas, alors à la fin du test, vous comprendrez ce que signifie cette ligne. Encore une fois, créons un livre aléatoire. Pour cela. Copier, cet objet livre. Ici. Tout va bien. Après cela, il suffit d'écrire attendez x dans, nouveau à l'intérieur tout de suite. Bibliothèque point, ajout, livre. Alors écrivez ces choses à l'intérieur. Il suffit de copier-coller si vous le souhaitez. Ensuite, cela émettra une valeur à émettre. Ensuite, notre instance de bibliothèque, c'est-à-dire l'instance de contrat. Cela émettra alors un événement appelé Ajouter un livre avec des arguments ou une adresse NOR. Ensuite, le nombre de livres finis et le nombre de livres finis comme celui-ci. Ce que j'entends par ce code, car à la fin de notre fonction de livre publicitaire dans ce contrat de bibliothèque, c'est ça, nous émettons ceci, n'est-ce pas ? est donc cet événement, qui est le destinataire, c' est-à-dire qui est le propriétaire du livre. Et cette pièce d'identité. Et puisque l'ID du livre correspond à la longueur de la liste des livres. Et dans notre, avant chaque livre, nous avons déjà inséré ce nombre de livres qui compte 53 dans la liste. Ce citron commence à 0. En termes simples, ce que je veux dire, c'est que nous avons déjà une tâche factice dans cette liste. Et ce sera la tâche de neuf que nous sommes, c'est-à-dire neuf livres, nous ajoutons, qui aura un numéro huit. Il y aura un index huit car dans la liste des e-mails, l'index commence à 0. Ce livre aura donc une carte d'identité huit. C'est ça. Comme ça. Ce livre aura une carte d'identité huit. Nous allons simplement vérifier si l'événement émettra ces informations ou non. C'est ça. Et pour vérifier l'égalité ou comparer les résultats attendus au résultat réel, nous pouvons utiliser Chai, ce qui nous donne trois affirmations, c'est-à-dire qu' il y en a un troisième et qu'il y en a un troisième. devrait aussi, mais nous n'utiliserons que s'attendre. Maintenant. Cela ajoute qu'un test de livre est effectué. Après cela, nous écrirons un autre test unitaire, qui consistera à obtenir des livres. Nous allons l'écrire. Ce sera encore une fonction. Le premier cas de test, en fait, nous devrions renvoyer le bon nombre de cas est correct. livres inachevés. Il y aura une fonction sinc. Maintenant, récupérons les livres de notre contrat. Ce sont des livres de chained. Cette blockchain sera un point d'instance de bibliothèque. Obtenez un livre inachevé qui est ici. Obtenez des livres inachevés comme celui-ci. Ensuite, ce que nous attendons, c' est livres de longueur de chaîne doivent être égaux au nombre de livres inachevés. Et ce que nous ferons , c'est que nous vérifierons également que les livres à l'intérieur de ce tableau sont égaux aux livres contenus dans cette liste de livres de leur contrat. Pour cela, nous devons créer une fonction qui vérifiera les livres et donc simplement les écrire. Le code que je vais écrire. La première fonction sera de vérifier un seul livre, d'accord ? Il faudra une chaîne de livres et un livre. Nous nous attendrons donc à ce que le nom du point de livre soit égal au nom du point blockchain. Ensuite, nous aurons une autre attente. livre. Dot ir dot two string sera égal à point blockchain, point à chaîne. Ensuite, nous nous attendrons à un livre. Notre troisième devrait être identique au point Blockchain Arthur. Et maintenant, nous aurons une autre fonction, vérifier la liste des livres. Il s'agira donc de livres de la chaîne et de la liste des livres. Attendons d'abord les livres de la chaîne. La longueur ne doit pas être égale à elle, elle n'est pas égale. Il n'est pas égal à 0. Ensuite, la longueur de la chaîne des livres est cette longueur est cette point de liste de livres. Ensuite, comme nous avons beaucoup de livres, c'est aussi dans ce domaine et nous aurons aussi beaucoup de livres. Nous devons donc parcourir chaque livre, puis vérifier. Donc, nous aurons une boucle de bar. Ensuite. Il commencera à partir de I égal à 0, je suis inférieur à la longueur de point de la liste des livres I plus. Il suffit donc d'écrire const. Book chain est incroyablement similaire à books from chain. Je suppose que 0 index premier indice comme celui-ci. Alors le livre sera une liste de livres, qui est ici qui n'est pas un test. Et ensuite, nous utiliserons ce vérifiable, qui vérifie un seul livre. Ceci, pour ce livre particulier, nous allons vérifier ce nom ou si le nom et l'auteur, Eric Color, ne sont pas comme ça sur la blockchain et le livre. Nous ne faisons donc que comparer les livres stockés dans ce contrat et les livres stockés dans la variable locale de ce test. C'est ça. Encore une fois, allez ici. Ce que je vais écrire cette liste de livres de vérification. Ensuite, j' enverrai simplement des livres de la chaîne. Et puis une liste de livres inachevée. Donc, il devrait nous donner une liste de livres inachevée de cette chaîne. Et puis des listes de livres inachevées d'ici qui sont dans ce test. De même, nous aurons une autre condition pour obtenir le bon nombre de livres finis. Ici. Ça va finir le livre, les livres. Ensuite, les livres de Jane sont égaux au nombre de finis. Ce sera des livres finis égaux. Et puis vérifiez les livrets, c'est des livres de Jane. Et ce livre fini liste, qu'il soit égal ou non. C'est donc ça. Nous avons créé avec succès un test unitaire pour ajouter un livre et même récupérer nos livres. Il s'agit d'aller chercher des livres inachevés et de récupérer les livres qui sont finis. C'est tout pour cette vidéo. voit lors de la prochaine session. Merci. 8. Faites les tests: Dans cette vidéo, nous allons simplement écrire notre cas de test final, puis exécuter tous nos tests et voir si c'est le cas, s'il fonctionne correctement ou non. Enfin, le test consistera à terminer un livre, c' est-à-dire un livre inachevé. Changeons ça pour qu'il soit fini. Revenons comme ça, ce gris. Ensuite, définissez la fonction finie. Ce cas de test, nous devrions vraiment définir l'événement terminé. Ensuite, écrivez notre fonction. Supposons que l'ID de livre soit égal à 0. C'est le premier livre. Puis j'ai jeté un coup d'œil. livre. Finish est égal à vrai. Ensuite, écrivez simplement attendez, attendez-vous. Ensuite, la fonction de jeu de points de bibliothèque terminée. Nous vous enverrons la pièce d'identité du livre. Et c'est la décimale que les gènes sont vrais. Ensuite, il va émettre. Il émet une fonction ou un événement appelé set. jeu de majuscules est terminé avec des arguments, des arguments, un ID de livre et une valeur vraie. Ainsi, lorsque nous appelons ce jeu terminé ici, vous pouvez voir qu'il émet un événement l'ID du livre et un booléen fini. C'est ça. C'est ce dont nous parlons ici. Nous allons vérifier s' il s'agit d'une réunion ou non. Maintenant, c'est l'heure. Nous effectuons notre test. Assurez-vous de sauvegarder tous vos fichiers. Ensuite, dans le répertoire de votre projet, ouvrez simplement votre terminal et à droite et px, hardhat, test et appuyez sur Entrée. N'oubliez pas que si vous obtenez une erreur ici après avoir terminé l'ajout ou après avoir corrigé cette erreur, utilisez NP x Hardhead Clean, puis lancez à nouveau le test. C'est de nouveau exécuter ce test. Notre contrat de bibliothèque hache certains problèmes. Vous pouvez le voir. D'accord. Allons vérifier. Nous avons quelques problèmes. Je reviendrai vers vous avec une solution. J'ai donc eu la solution. Les erreurs que j'ai commises étaient d' abord, c' est-à-dire qu'à la quatrième ligne, je devrais avoir ce casque, pas une bibliothèque de tests. Ces lettres devraient provenir de la bibliothèque Howard Head. Et une deuxième erreur était, Cette attente devrait venir de la bibliothèque des enfants, mais elle ne devrait pas être majuscule, elle devrait être une petite lettre qui est CHA, petite. Nous allons le sauver. Et encore une fois, je vais me procurer un nouveau terminal. Je vais lire et px. J'avais été propre. Ensuite, j'ajouterai que NP x avait eu un test. Voyons voir. Maintenant, tout fonctionne correctement ou non. Enfin, vous pouvez voir tous les cas de test qui s'affichent, accord, cela signifie que nous sommes prêts à partir. Dans le prochain module, nous téléchargerons notre contrat intelligent sur la blockchain. Merci. 9. Écrire le script de déploiement: Bonjour, bon retour. Dans cette vidéo, nous allons écrire ces scripts de déploiement pour notre contrat intelligent. Il suffit d'aller dans le dossier scripts et de créer un nouveau fichier du nom déploiement dot js. Commençons maintenant à y travailler. Demandons le paquet ethers à partir de la dépendance de la tête dure. Il suffit maintenant d'écrire ce morceau de code requis pour le déploiement. Tout d'abord, nous allons créer une usine à contrat. Et j'attends que les mangeurs obtiennent une usine contractuelle. Le nom est bibliothèque. Créez ensuite une instance qui est un contrat pour trade dot. Déploiement. Un contrat de poids est déployé. Nous allons juste attendre de assurer que le contrat est en cours de déploiement. Et après jour. Après cela, nous consolerons l'adresse du contrat de connexion, ce qui est très important. Nous utiliserons cette adresse de contrat plus tard dans le front end. Il suffit d'écrire l'adresse du contrat. Ensuite, nous allons écrire une autre fonction. Pour exécuter la fonction ci-dessus comme celle-ci. Ayez un bloc de capture d'essai. Nous voulons dire ensuite traiter cette sortie 0 si tout va bien. Et si nous avons un ajout, alors vous lisez le journal de points de la console, peut-être une erreur enregistrée. Et nous allons écrire la sortie du processus. Un. Nous pouvons modifier est l'ajout de bouton de sortie. Et enfin, nous allons écrire et courir ici, disons. Il s'agit donc du script de déploiement. Il suffit de tout sauver. Ensuite, il suffit de déployer un terminal ajouté dans le dossier racine. Et tapez simplement NP x. Heart avait exécuté des scripts. Déployez le point us. Le réseau est pieux et appuyez sur Entrée. Voyons si tout va bien, alors nous obtiendrons notre adresse de contrat. Comment notre contrat a été déployé avec succès. Il suffit de copier cette adresse et d'obtenir simplement une virgule, c'est-à-dire Command. Il suffit de l'enregistrer pour ne pas perdre cette information. Maintenant, si vous le souhaitez, vous pouvez également vérifier le contrat. Informations dans. Pieux. Les Ethers peuvent simplement accéder à ce site Web et simplement coller votre adresse de contrat et effectuer une recherche. Voyez-vous, nous avons ce contrat qui est en cours de téléchargement est déployé il y a 52 secondes. Vous pouvez simplement vérifier que oui, notre contrat a été déployé des jours réussis, aucun problème. C'est tout pour cette vidéo. Dans le prochain module, nous travaillerons sur le front end, puis interagirons avec notre contrat diploïde. Merci. 10. Travaillez sur le prochain front js: Bonjour. Dans ce module, nous travaillerons sur le front-end de notre application et nous utiliserons le prochain JS, qui est un framework de zone encore. Maintenant, dans le dossier du projet, il suffit d'écrire la commande npm. Créez la prochaine application. Ensuite, nous utiliserons également les vivants là-bas. Il suffit d'écrire tailwind css et je vais le nommer client et appuyer sur Entrée. Il créera une prochaine application JS de base. Ok, donc notre prochaine application de chaises a été créée avec succès. Pour interagir avec notre contrat intelligent déployé, nous aurons besoin de deux choses. Adresse du contrat et cette ABI. Pour obtenir l'ABI, il suffit de copier le fichier json point de bibliothèque, qui se trouve dans le dossier artefacts et Contracts, puis dans la bibliothèque. Ensuite, nous avons aussi ce fichier json point de bibliothèque. Ce client. Et ce client crée un nouveau dossier appelé ABI. Nouveau dossier ici, ABI. Et puis à l'intérieur de ce dossier, il suffit de coller ce fichier json point de bibliothèque. C'est-à-dire qu'il s'agit de l'ABI nécessaire pour la tâche, c'est-à-dire pour cette adresse de contrat. Il suffit de créer un nouveau fichier appelé config dot js dans le répertoire client. Directement, c'est à l'intérieur de cela créer un nouveau fichier appelé config dot js. Et à l'intérieur, il suffit d'écrire export, const tâche. Ou vous pouvez simplement dire non contractuel, vous pouvez simplement écrire un contrat. L'adresse est égale à, puis copiez directement cette adresse ici et enregistrez-la. Nous utiliserons cela plus tard. Maintenant, si vous le souhaitez, vous pouvez simplement l'enlever. L'adresse ici. C'est ça. Maintenant, nous aurons également besoin d'installer peu de dépendances pour notre prochain projet JS. Il suffit donc d'aller ce répertoire client dans le terminal, il s'agit d'un client CD. Il suffit d'écrire npm, installer des mangeurs, taper des composants de style et d'appuyer sur Entrée. Les mangeurs sont donc une interaction avec le contrat intelligent. Les types vérifieront les accessoires et voyons ce que j'ai fait. Je ne me suis pas quelque peu répandu. Combo. Les types de Nance vérifieront que les accessoires passent à vos composants, correspondront à vos conditions. Assurez-vous également que les données que vous recevez sont valides. Peut-être des types, c'est-à-dire juste pour s'assurer que les données envoyées au composant sont valides, puis ces composants de style nous permettent de créer des composants et d'y attacher des styles à l'aide de balise ES6, modèle littéraux, les styles qui renvoient des CSS. En termes simples, il s'agit d'un package tiers à l'aide duquel nous pouvons créer un composant sous la forme d'une variable JavaScript déjà coiffée de code CSS. Vous le comprendrez plus tard. Alors maintenant, il suffit de lancer, notre application est npm run dev. Bon, maintenant, passons simplement à ça. Il s'agit d'un hôte local et voyez notre prochaine application JS est écrite avec succès. C'est donc ça. Encore une fois, je vais faire quoi ? Je vais juste faire ça petit. C'est comme ça. L'adresse du contrat, juste les lettres de CamelCase que j'aime bien, j'aime bien ça. La prochaine chose que nous allons faire est de travailler sur le fichier d'index, qui se trouve à l'intérieur des pages. Ici. Nous avons ce fichier TypeScript de point d'index. Et je retirerai tout ici et je commencerai tout simplement à écrire à partir de zéro. La première chose que je vais vous faire rester et utiliser les gens de React. Ensuite, j'aurai une adresse contractuelle. Adresse de contrat du fichier de configuration, qui se trouve en dehors de celui-ci, c'est-à-dire ce fichier de configuration. Ensuite, j'importerai des paquets d' éthers, d'éthers. Ensuite, j'importerai notre ABA que cette bibliothèque de la bibliothèque oblique ABA dote json. Ensuite, j'importerai la page suivante à partir de la page suivante. Ensuite, je vais simplement déclarer la fenêtre principale. Pour que plus tard , il ne donne aucune erreur. C'est génial. Notre composant qui est à la maison exploré pour le retard. Maintenant que notre composant est rayonné, notre prochaine application est prête. Dans la vidéo suivante, nous allons travailler sur la façon de les connecter au portefeuille MetaMask dans notre application. Merci. 11. Fonctionnalité pour connecter MetaMask: Bonjour. Dans cette vidéo, nous allons travailler sur cette fonctionnalité pour connecter notre Liam valide c'est la masse molaire à notre application. Alors commençons par travailler sur la fonction et appelons-la connecter. Ou laissez-le. Enveloppons tout ça dedans. Essayez d'attraper. Block va simplement écrire console.log adder se connectant à mon thermostat. Et nous allons simplement écrire cela ajouté. Maintenant, nous allons d'abord obtenir l'objet du stade, qui est injecté dans notre navigateur. Ensuite, nous verrons si nous avons un TDM ou non. Si nous n'avons pas de TDM, nous écrirons simplement console.log. Vous pouvez masquer non détecté et revenir. Et si nous l'avons fait, alors nous vérifierons s'il est connecté au réseau approprié, est-à-dire le réseau Garlin ou non, recevra simplement la demande pour eux à mon tour, ce qui est connu comme aide à la chaîne. Et puis nous savons que nous savons que ID girly est 0, X5, c'est le cartilage et l'identification. Nous allons donc le comparer si Shane AD n'est pas égal à la chaîne AD corrélée. Dans ce cas, il suffit d'alerter que vous n'êtes pas connecté à un réseau et que vous revenez simplement d'ici. Et si c'est aussi bon, alors il suffit de faire en sorte que cela compte. Ceci est une demande. Cette demande et nous entendrons demander que mon troisième, appelé demande des comptes, comme ceci. Ensuite, nous devrions avoir un état variable ici. Je vais le nommer compte courant. Pour le modifier, je vais simplement définir le compte courant. J'espère que vous savez que vous indiquez Hook dans React. Cela signifie simplement qu'il s'agit d'une variable et que sa valeur initiale sera vide. Il s'agit d'une fonction qui sera utilisée pour attribuer une valeur à cette variable. C'est ça. Donc, comme ça, je copie cette fonction, puis je la mets ici et j' écris simplement des comptes. Le premier. Juste, comme ça, nous aurons plusieurs comptes dans MetaMask, il suffit d'obtenir le premier. C'est la fonction qui permet de connecter le portefeuille. Nous allons maintenant travailler sur la partie HTML. Il suffit de renvoyer une div. Donnons-lui quelques noms de classe de CSS. Flex, flex appelés objets. Si vous le souhaitez, vous pouvez simplement copier ce que cela signifie. Parce qu'il s'agit d'un code CSS à vent arrière, F3, F6 pour. Ensuite. C'est juste un style basique. C'est ça. Rien d'autre. 68508. Principalement maman sera à l'intérieur ce fond de rembourrage 20. Ensuite, prenez un autre cours. Il m'a donné le nom de la classe. Transition au-delà de la date. Quand il a donné. Puis sur l'échelle, quand 05, transition, durée 500. Facilité d'entrée, de sortie. Alors, pas à l'intérieur. En dehors de ça. Compte tenu de H2. Est-ce que les platines C x sont en gras, et B est le bas de la marge. Pour ajouter une marge, top 12. Et nommez-le. Gérez votre bibliothèque personnelle. Comme ça. Ensuite, vient notre portion, c'est-à-dire que nous allons vérifier si le compte courant est égal à vide, puis nous aurons un bouton sinon nous aurons autre chose. D'accord ? Voyons voir. S'il est vide, nous aurons un bouton. Le nom du bouton sera connecté. Laissez. Donnons maintenant un peu de style. Nom de classe. Texte, police supportée. En ajoutant mes trois. Paris x 12. Contexte. Un, C, 232, grande marge, bas. Puis à l'échelle 105, transition. Et dans l'événement OnClick, nous allons simplement écrire connect, bien la fonction IT. Nous allons lui attribuer ce n. s'ils sont déjà connectés. Ensuite, nous aurons une balise div, qui aura un avantage pour cela. Ensuite, portefeuille, portefeuille connecté et leur portefeuille adresse que ce compte courant. Et donnons-lui aussi un peu de style. Ensuite, excellez. Le jour 12, gérer le point. Nous allons le sauver. Je veux ajouter un C. Nous avons ce magnifique portefeuille plein bouton à col. Si je clique dessus, mon MetaMask apparaîtra. Et ma tâche est déjà connectée au réseau Golgi. Je vais simplement écrire ensuite, connecter et dire, bien c'est connecté, c'est mon adresse publique. Nous avons donc réussi à créer des stables. Nous avons travaillé avec succès sur la fonctionnalité permettant de connecter notre portefeuille My Thomas à l'application. Dans les prochaines vidéos, nous travaillerons sur le front-end et sur la fonctionnalité permettant d'ajouter et de supprimer des livres et tout. C'est donc ça. On se voit dans la vidéo suivante. 12. Fonctionnalité pour ajouter un livre: Bonjour. Dans cette vidéo, nous travaillerons sur une ferme qui permettra à l'utilisateur de soumettre un livre. Et je dirai que nous devons écrire une fonction qui va insérer ces informations dans cette blockchain. Si fort, commençons par la fonction. Pour que la fonction fonctionne. Tout d'abord, nous devrions avoir des états. Il s'agit de quelques variables. Vous pouvez dire const, nom du livre. Donc, lire définitivement le livre aura un nom. Et pour mettre à jour cette variable, nous avons ce nom de livre. Vous êtes resté au tout début. Il sera vide. Ensuite, nous aurons un auteur de livre. Et puis il aura pris fin. Le livre est en fonction de l'état d'utilisation. Encore une fois, ce sera le cas et ce livre aura un an. C'est une oreille riche, ce livre a été publié. Réservez ici. Vous indiquez MD. Et enfin, nous aurons terminé le livre. C'est très bien que ce livre est fini ou non. Ce livre est terminé. Donc, au tout début, ce sera non. Évidemment, lorsque nous ajoutons un livre, la valeur par défaut doit être connue. Alors travaillons sur leur fonction et nommons cela. Soumettez un livre. Ce sera une fonction sinc. Créons ensuite l'objet Book. Simulez. La clé sera nommée BlockName. Ensuite, votre patron. N'avons-nous pas besoin de le changer en entier, cette chaîne. C'est le plus encombrant. Ensuite, nous avons le troisième livre. Ensuite, nous avons fini la valeur. Si la valeur terminée du livre est oui, elle sera vraie ou fausse. Vous comprendrez cela de quoi je parle, car il s'agit d'une bibliothèque personnelle. Vous voudrez peut-être insérer un livre qui est déjà rouge, mais vous souhaitez l'ajouter dans la blockchain. C'est bon. Ensuite, faisons le bloc d'essayage. Essayez le bloc de capture. Nous avons console.log et nous soumettons un nouveau livre. Et puis écrivez à l' éditeur, apportez de la diarrhée. Et ce que nous allons faire, c'est d'abord que nous obtiendrons le stade de cette fenêtre. Ensuite, si nous avons l'objet KTM, écrivons const. Provider est égal à nouveaux fournisseurs de mangeurs. Fournisseur Web trois. Et nous allons passer cet objet Itanium. Ensuite, nous obtiendrons le signataire. Le signataire sera le point fournisseur, obtenir le signataire comme ceci. Ensuite, nous aurons une instance de contrat. bibliothèque. Le contrat est égal à un nouveau contrat, cette adresse de contrat, alors nous devrions avoir l'ABA, ABA, puis nous devons donner au signataire. Et maintenant, nous devons appeler la fonction ajouter un livre à partir d'eux. Hum, blockchain. Maintenant, laisser la transaction de bibliothèque est égale à attendre un contrat de laboratoire. Contrat de bibliothèque dot ajouter un livre. C'est le retour du contrat intelligent. Nous enverrons un livre, un nom de point, un livre, cet auriculaire. Notre livre. est fini comme ça. Ensuite, nous allons simplement consoler consigner cette transaction, c' est-à-dire la transaction de bibliothèque. Et si l'objet Tanium n' est pas disponible, ce qui ne sera pas le cas. Mais comme nous ne prendrons aucun risque, il écrira, nous l'écrirons. La vérification n'existe pas. C'est donc ça. Que c' est la fonction de soumission d'un livre. Nous allons simplement nommer cette fonction soumettre un livre. Nous allons maintenant travailler sur la partie HTML. Allons-y en dessous. Ici. C'est-à-dire, dans ce portefeuille connecté. Vous voulez que le formulaire s'affiche, car au début, l' utilisateur doit les connecter à un porte-monnaie de mosquée. Donc, en dessous de cela, nous aurons tout d' abord ce que je ferai, est envelopper cette chose dans une div. Dave, attends, je pense juste à ce qui peut être fait ? Oui. Donnez-lui juste une div. Fermez cette div. D'accord. Maintenant, après que ce portefeuille soit connecté, Dave, écrivons ce formulaire qui est rapide. Nouvelle div. Je vais lui donner quelques vents arrière, CSS. Ces choses seront du texte, de la police, caractères semi-gras, et seront Duan De marge, les quatre premiers. Voyons ensuite nos champs de saisie. La première entrée sera du texte de type entrée, puis le nom du livre sera le nom du livre. Et cette valeur sera la variable que nous avons mentionnée plus haut. Et OnChange. Ce que nous aurons. Quand on obtient la valeur. C'est tout ce qu'il y a là, nous allons définir le nom du livre. Nous allons simplement définir le nom du livre et passer une valeur de point, de point, de point. Comme ça. Donnons-lui aussi un peu de style. Je vais donc donner un nom de classe. Il ne va pas envoyer de texte à Excel à bord. Marge, marge inférieure, première. Comme ça. Ensuite, je lui donnerai un BR, tag. Saut de ligne. Et encore une fois, j' aurai un autre champ de saisie. Il suffit donc de le copier et de le coller ici. Est-ce que le style sera le même ? Seul l'espace réservé sera un livre. La valeur sera comptable et inchangée. Ce sera un livre. Comme ça. Encore une fois, j'aurai le même champ de saisie. Donc je ne fais que copier le BR, c'est aussi un saut de ligne. Ce troisième sera la valeur comptable sera l'oreille du livre. Inchangé, dit livre ici, comme ça. D'accord ? Il suffit ensuite d'avoir une étiquette BR, puis une étiquette. C'est tout simplement exact ? fini de lire ce livre ? Alors ? Nous en aurons, nous aurons la possibilité de sélectionner cette balise HTML sélectionnée. La valeur sera terminée. Ensuite, on change sera de la même façon. Comme tout ce que nous obtenons, nous le changerons pour finir le livre. Point E, point, point, point. À l'intérieur de cette balise de sélection, nous devrions avoir des options. La première option aura de la valeur. Oui, c'est ce que j' ai lu ce livre. Et la deuxième option, le saurons-nous ? C'est-à-dire que ce livre n'est évidemment pas juste pour lui. Obtenez. Maintenant, après cette étiquette, nous devrions avoir un bouton. Je ne fais que coller ce code parce que dans la dernière fois j'ai enregistré ce cours et j'ai eu une petite erreur. Vous pouvez donc voir qu'il s'agit d'un bouton avec un nom de classe de texte, Excel, police, gras BY trois, remplissage à x2. Puis arrière-plan, couleur désactivée, hachage F1, C, 232 , arrondi, grande marge, dix bas, marge gauche cinq. Puis survolez, redimensionnez. 105, puis transition. Durée 500, facilité d'entrée, de sortie. Et sur Click. J'attribue simplement la fonction de bouton d' envoi et je lui donne un nom du livre. C'est ça. Donc, si vous courez, vous pouvez simplement mettre en pause la vidéo et la noter. Ce n'est qu'une ligne de code. Enregistrez-le maintenant et accédez à votre application. Il suffit de cliquer sur le porte-monnaie Connect. Voir le formulaire est ici. Vous pouvez le nommer n'importe quoi. J'ai déjà un livre parce que, comme je vous l'ai dit, je l'ai fait que j'ai fait les tests. Alors apprenez le livre dur ou elle C'est vrai. Bill Gates. Je ne sais pas qu'il s' intéresse à ça ou non et l'a donné en 2019. Ajoutez ensuite un livre. Thomas va demander l'approbation. Il suffit de le confirmer. Voyons si dans la console nous recevons notre transaction ou non. Je suis juste en train de vérifier, c'est toujours en attente. C'est fini. Cliquez maintenant sur Inspecter. Et dans cette console, nous avons cet objet, qui est la transaction complète C. C'est donc tout pour cette vidéo. La fonctionnalité d'ajout d'un livre fonctionne parfaitement. Dans la vidéo suivante, nous allons travailler sur la façon de récupérer ces livres de la blockchain. Merci. 13. Fonctionnalité pour récupérer les livres: Nous allons maintenant travailler sur la fonctionnalité pour récupérer des livres de la blockchain. Tout d'abord, nous aurons besoin de certains États. Il suffit d'écrire des livres const. Fini et dit boîte. Terminé est égal à l'état d'utilisation. Il s'agira d'un tableau. De même, nous aurons une autre boîte. Et les livres finis et les produits finis. Ils utilisent la date. Encore une fois, il s'agit d'un tableau vide. Maintenant, travaillons avec la fonction située sous cette fonction de soumission du livre. Je vais écrire const, obtenir des livres est égal à un évier. Ensuite, je reçois un, de même, nous aurons un bloc d'essai de capture. S'il y a une erreur, je vais simplement consoler console.log. Dans cette section d'essai. Encore une fois, nous aurons cette ligne de code. Il suffit de copier ça en congé. Je vais juste copier à l'intérieur. Je vais retirer, ce qui n' est pas nécessaire. Je vais simplement supprimer ces deux lignes car nous aurons besoin du contrat de bibliothèque Itanium. L'instance de contrat à utiliser pour récupérer la fonction à partir de la blockchain. Maintenant, simplement, prenons des livres. Meublé est égal à attendre. Contrat de bibliothèque dot get. Allons vérifier maintenant. Obtenir des travaux finis. Obtiens des livres finis. Et de même, nous aurons laissé les livres non meublés, points contractuels ne seront pas achevés. Ensuite, nous allons simplement définir la valeur de l'État. C'est des livres finis. Le livre est terminé. Et les livres inachevés seront égaux à la liste provenant des livres inachevés. Donc, comme ça, nous avons également notre fonction de réservation. Maintenant, pour l'afficher en frontal, nous allons créer un composant séparé. Dans ce dossier Pages appelé Come on Nance, Gumbo, Nance. Et à l'intérieur, créez un fichier appelé Book JS. C'est ça. Il sera donc juste d'imaginer un livre séparé et séparé. Nous allons simplement donner une boucle for et elle retournera ce composant. Donc, ici, j'utiliserai un peu de style si vous le souhaitez. Encore une fois, je dis que vous pouvez faire vous-même ces propriétés que nous avons installées au début, ces dépendances, types de prop, puis importer images clés stylisées à partir de composants de style. Maintenant, voyons bien, peu de cadres clés de style. Et ça. Ensuite, à l'intérieur, nous aurons, vous pouvez simplement écrire ce code de la même manière parce que comme je le dis encore et encore, je ne me soucie pas du style. Juste pour fuir, juste pour avoir l'air décent. Au moins, je transforme ces styles. Échelle 0,5. Ensuite, lisez le pourcentage. Encore une fois, je vais simplement copier ces deux lignes. Collé. À l'échelle 1. Et ensuite, nous faisons une échelle. D'accord ? Ensuite, avec des composants de style poussière, j'aurai un conteneur. C'est donc juste que nous donnons directement un style à un composant. C'est ce qui concerne les dépendances de composants de style . Rester ça. Dave, notons ça. Animation un par un. Glisser 0,82 cube Bézier à l'intérieur. C'est vrai ? W 0,390.5750,5651. Affichez ensuite la grille. Ensuite, les colonnes du modèle de grille seront de 38 %, 20 %, cinq ans, pourcentage, 37 %. Ensuite, nous ajoutons deux REM, 0,181.625168, date REM, bordure, solide, un pixel. Bordure, rayon. Pour grosses cellules. Ligne, hauteur. Normal. Transition arrière du sol, 0,40 comme linéaire. Marge. Lumineux. Premièrement, je suis à 50 pixels. Afficher le bloc en ligne. C'est ça. C'est donc tout pour la partie coiffante. Si vous le souhaitez, vous pouvez simplement mettre en pause cette vidéo et la réécrire. Si je suis allé un peu vite. Dans la vidéo suivante, nous allons donc travailler sur le composant livre. Merci. 14. Créer un composant de livre: Créons maintenant ce composant de livre. En dessous de ce code. Disons que const book est égal à cela. Et dans ce composant, nous accepterons certains accessoires comme id, name. Ici sont punis, et une fonction qui sera Click book. est fini comme ça. Revenons. Revenons, alors ce conteneur, qui est déjà coiffé comme ça. C'est pourquoi nous utilisons ces composants de style de sorte que lorsque nous l'avons utilisé, déjà prédéfinis et fonctionnent comme s'il fonctionnait comme un composant. Vous pouvez voir, supposons une sorte de composant conteneur. Vous le nommez, vous le nommez conteneur et nous pouvons l'utiliser comme ceci. Maintenant, allons-y. C'est Dave, nom. Ensuite. Ensuite, nous avons ici. Ensuite, cette balise de span, nous dirons simplement si elle est terminée égale à, égale à pause. Si le livre n' est pas terminé, nous aurons quelque chose ou autre chose, sinon, nous aurons simplement un tag p. Ensuite, nous aurons un bouton. Ensuite, cette balise p plus tard. Donc ici, si nous avons cela, ils auront un bouton. Et donnons un peu de style au bouton. Police, gras, mariage à x, y, panne. Ash, F, F, 77, F. Ensuite, nous aurons Dexter White. Puis arrondi. Grande marge, cinq premiers. Notre échelle 105. Transition. Durée. 500 sont dans ce fardeau. Ensuite, dans ce bouton, ce que nous aurons, c'est que nous aurons également la méthode on click. C'est là, il est là. Allons faire un clic. Lorsque l'utilisateur clique sur un clic , cette fonction amusante sera exécutée, qui est fourni par Glick Book. Et nous devons envoyer la pièce d'identité. C'est un livre riche. Nous devons le supprimer et simplement le nommer. livre de niche comme celui-ci. Ce sera donc quand la propriété est fausse et si elle est vraie, alors nous pourrons simplement donner un paragraphe et lui donner un style. Police. Ball, gras, texte, hauteur 0 d, 71 E. Et il sera écrit livre terminé. Disons. Donc. Maintenant, après ce composant, nous aurons quelques types d'accessoires qui veilleront vraiment à ce que ces propriétés s' élèvent dans cet ordre. C'est le cas, nous avons certaines conditions qui devraient être remplies au début. est-à-dire que c'est la chose où c'est comme si on l' avait acquis comme ça. Type d'accessoire numéro de point, qui doit être numéroté et requis. C'est un nom. Types d'accessoires. Chaîne, point est requis. La chaîne de majuscules de type B chaîne de majuscules est nécessaire que ce que nous avons. Nous avons terminé notre talent. Nous venons donc de copier. Nous avons fini. Comme ça. C'est un chiffre. Enfin, nous allons simplement exporter le livre par défaut, comme celui-ci. Le composant livre est prêt. Maintenant, affichons ce livre dans la page d'index, ce qui ne signifie pas que les pages d'accueil l'affichent. Après ça. Nous avons ce bouton Ajouter. Ensuite, nous avons ce Dave. Nous avons ce débat à 132 heures après jour, après jour, Dave. Nous aurons une autre div qui contiendra la liste des livres. Donnons également un peu de style à cela. Flex, flex, colonne, justifier, centrer, les éléments se centrent comme ça. Encore une fois, nous aurons un nom de classe Dave. Ne sont pas du texte semi-gras, du texte volumineux, du centre, qui gère les quatre derniers. Et je vais nommer la liste des livres. OK ? Ensuite, nous aurons un bouton, puis nous aurons un bouton. Ensuite, nous aurons un bouton et il appellera obtenir des livres. Et ce bouton aura à nouveau des classes telles que Excel à bord, comme ceci. Et si vous êtes bon avec Tailwind CSS, vous pouvez également le modifier. Ce ne sont que des styles basiques. Puis arrondi, arrondi, en bas de la marge. Ensuite, notre échelle lorsque 05, durée de transition, 500 est en entrée, sortie. C'est donc le bouton. Et sous ce bouton, nous ferons notre logique. Tout simplement. Ce que nous allons faire, ce sont des livres inachevés. Ce pays. Si elle est supérieure à 0, nous aurons une div. Si la longueur est 0, alors nous l'aurons div, qui, au moment où je me dirige, il écrira simplement un livre inachevé. Et à l'intérieur, il y aura un certain nombre de livres. C'est-à-dire que des livres sont inachevés, pas des terres comme celle-ci. Et donnons un style de base à cela. Police. Texte semi-gras, centre, marge, bas. Pour la marge, les cinq premiers. Et si ce n'est pas le cas, nous aurons simplement une div vide. Comme ça. Je n'y montrerai aucun cap parce que ce sera le cas, ça n'a pas l'air bien. Ensuite, en dessous de cela, laissez-moi voir. En dessous de cela, nous allons avoir un autre div nom de classe qui sera flex. ligne flexible justifie le centre, les éléments au centre. Et ici, nous aurons comme ces livres, inachevés, une carte, comme celle-ci. Et ici, nous obtiendrons des livres simples. Et dans ce livre unique, nous appellerons la composante livre. Nous allons importer le double composant ici. Importez le livre Components comme celui-ci. Maintenant, cela va accepter certaines propriétés. Carnet de clés cet ID, ID, analyse int. On va juste dire livre. Nous nous assurons qu'il s'agit d'une pièce d'identité. C'est-à-dire qu'il s'agit d'un taux de nombre n. Supposons que l'éditeur parvienne plus tard. nom du point de livre Le nom du point de livre est égal à barres. Livre, l'oreille. cordes, comme ça, ça sont terribles. livre. Non. Puis c'est fini. livre. Dot, fini, point deux. ficelle. Cliquez ensuite sur livre. Terminé sera le clic de fonction , cliquez sur Livre meublé. Nous devons créer cette fonction. Supposons que que nous ayons cette composante livre. Ok, ici. Ce sera ça. Voyons voir. Y a-t-il un éditeur ? Nous allons simplement appeler ce composant Ce livre de clics est terminé. Ici. Cliquez sur OK, l'orthographe, je suppose, a fini C. Ok. Maintenant, ils fonctionnent correctement. Vous pouvez voir que nous devons également créer une fonction Flip Book terminée. Et pour ces lignes rouges et tout, si vous le souhaitez, vous pouvez simplement aller dans le fichier ts config dot JS, c'est ici. Et puis ici, changez la valeur stricte en false. Le quartier est faux, c'est tout. Si vous faites cela, ces lignes rouges et ces choses seront résolues. C, Ceux-ci sont maintenant résolus. C'est tout pour cette vidéo. Dans la vidéo suivante, nous travaillerons sous fonctionnalité pour changer la librairie à la fin. Merci. 15. Fonctionnalité à changer l'état du livre: Bon retour. Travaillons sur notre application. V4. Bien, pour attribuer cette fonction, c'est-à-dire obtenir des livres. Ce bouton. Le bouton ici, c'est qui est ça. Il suffit donc d'écrire sur clic et c'est un bon livre. De même, cela montrera tous les livres qui sont terminés. De même, nous devrons montrer des livres qui sont, qui sont , qui sont finis de cette façon. Ce sont des livres qui ne sont pas finis et nous devons montrer des livres qui sont finis. Donc, ce que je vais faire, c'est simplement copier ce bout de lignes. Supposons tout d'abord que je copierai ça et que je le collerai ici. Il s'agira d'écrire des livres. Des livres, c'est fini. Des livres, c'est fini. La longueur du point plutôt que la même chose et c' est vraiment fini, c'est tout. Et puis je ferai à nouveau la cartographie comme celle-ci. Il suffit donc de le copier et de le coller ci-dessous ici. Je vais faire cette cartographie avec des livres, finis, une carte à points. Et les livres seront terminés ces jours-ci. Et maintenant, nous allons travailler sur la fonction ici et nous allons la nommer. Livre, fini, copié et collé ici également. Ce sera la fonction que nous allons créer maintenant. Le livre du lac est terminé. Va là-haut. Fonction créative. Const comme ça. Un évier. Il acceptera les pièces d'identité, comme ça. D'accord ? Donc, encore une fois, nous aurons le try-catch et tout. De même, comme toujours, comme nous devons nous connecter au contrat intelligent, qui est déjà déployé, il suffit d'écrire console.log et de modifier état du livre. Il suffit d'imprimer également l'en-tête. Ensuite, dans ce bloc d'essai, nous aurons simplement, nous copierons à partir d'ici. Il suffit de copier ces lignes. Collez-le ici. Bon, nous avons le fournisseur. Ensuite, la transition de la bibliothèque sera, elle sera simplement réglée. ai fini comme ça, disons le journal des points de console. C'est donc la fonction. Et la plupart des fonctions sont quelque peu similaires. Rien d'aussi chic que ça. Nous appelons juste celui qui est prêt à finir ça ici. Celui-ci, il faut un ID de livre et un booléen fini. Nous allons donc simplement envoyer l'ID et le booléen, c'est tout. Enfin, nous avons écrit tous ces codes pour l'application. Je suis content que vous ayez regardé quelque chose maintenant, dans le prochain module, nous allons tester notre application si tout fonctionne correctement ou non. Et si nous obtenons une erreur, nous le résoudrons dès que possible. Merci. 16. Testez l'application complète: Bonjour. Dans cette vidéo, nous avons vraiment testé le fonctionnement de notre application. Nous avons cité les dernières vidéos, mais pour le moment, il est temps de vérifier si toutes les fonctionnalités fonctionnent ou non. Donc, la première chose que je ferai, c'est des gènes que du réseau de mes tomates de Gormley. Et puis je cliquerai sur Connect Wallet. Voyez-vous, vous n'êtes pas connecté pour l'appeler réseau, ce qui nous incite à changer de réseau. Cela fonctionne très bien. Allons à la choline. Ensuite, lorsque je clique sur Connect violet, MetaMask ajoute, puis ensuite et connecte. D'accord. Maintenant, nous avons ces livres. Si vous vous en souvenez, nous avons déjà ajouté un livre bleu plus tôt. Donc, si je clique sur Obtenir des livres , nous avons deux livres inachevés. Voyez, c'est l'un, apprenez l'arbre Web et l' autre est apprendre le chapeau dur. C'est donc très joli. Et aussi si j'écris apprendre, il y a une date d'échange qui est la prochaine. Js. Mark Zuckerberg et 2018. Supposons que si j'écris simplement dessus, si je le change par oui, voyons ce qui se passe. Des alertes peuvent se former. Voyons si la transaction est toujours en attente. Cela va prendre un certain temps. C'est fini. Maintenant, si je clique sur Obtenir des livres, voir que j'ai terminé mes livres. Mais je vais bien. Cette erreur. J'ai compris pourquoi il y en a deux parce que nous avons oublié de changer. Les livres finis seront donc de cette longueur. Disons que c'est une très petite erreur. C'est vrai, c'est corrigé. Les livres en ont fini un. Et si je clique sur ce livre fini, apprenez le casque dur. Une fois encore. En montrant ceci, puis je clique sur Confirmer. Le principal motif de ce cours était de comprendre les bases de la blockchain. La technologie n'est pas cette interface utilisateur. Si vous le souhaitez, vous pouvez utiliser n'importe quel outil d'interface utilisateur frontale et le rendre très beau. Parce que vous pensez peut-être que c'est très simple, mais l'essentiel est cette fonctionnalité. Maintenant, c'est la fonction de réglage de la dépense terminée. Ces dépenses. Maintenant, c'est fini. Si je clique sur Obtenir des livres. Vous voyez, c'est aussi dans la section finie et maintenant nous avons un livre inachevé et un livre fini. Donc, cette application complète fonctionne très bien. Et je pense que nous sommes fiers de nous-mêmes avoir créé une application décentralisée à partir de zéro. J'espère donc que vous avez apprécié le cours. Assurez-vous de regarder d'autres cours à moi aussi. Merci. Passez une belle journée.