Créer une dApp avec Next.js
This is a continuation of the getting started guide. By the end of this guide, you should be able to build a simple Nextjs dApp that interacts with the token faucet smart contracts discussed in the getting started guide
Prérequis
- Compréhension de base de Typescript et Nextjs
- npm et npx installés sur votre machine
- Se familiariser avec le projet de tutoriel du robinet à jetons dans le Guide de Démarrage guide.
- Installer le extension wallet
- Installer docker et docker-compose
Créez un projet de dApp en utilisant le modèle Next.js
Cela créera un nouveau répertoire alephium-nextjs-tutorial
et initialisera un projet Next.js d'exemple à l'intérieur de ce répertoire.
Lancez un réseau de développement local
Allez dans le répertoire alephium-nextjs-tutorial/docker
et exécutez
Cela démarrera à la fois le nœud complet Alephium et le explorer backend sur
devnet
. Le backend de l'explorateur est nécessaire pour que l'extension de portefeuille fonctionne.
Maintenant, vous pouvez compile, test and deploy vos contrats de faucet de jetons comme décrit dans le guide de démarrage.
Assurez-vous que le contrat est déployé avant de passer à l'étape suivante.
Interagissez avec le faucet de jetons avec l'application Nextjs
Accédez au répertoire racine du projet et exécutez:
Ouvrez http://localhost:3000 avec votre navigateur pour voir l'application de faucet de jetons.
Comme illustré ci-dessus, l'application de faucet de jetons affiche un bouton Connect Alephium
avant d'être connectée à un portefeuille. Cliquez sur le bouton et choisissez l'option Extension Wallet
pour ouvrir le portefeuille d'extension. WalletConnect
sera bientôt pris en charge.
Examinez l'écran d'approbation du portefeuille d'extension et cliquez sur
Connect
, l'application de faucet de jetons sera connectée au portefeuille d'extension.
Saisissez le nombre de jetons à retirer (maximum 2), puis cliquez sur le bouton Send Me Token
button. Examinez les détails de la transaction et cliquez sur
Confirm
.
Félicitations, vous venez de transférer des jetons depuis le faucet de jetons vers votre compte !
Mise en œuvre
Le but du projet nextjs template est de démontrer comment interagir avec la blockchain Alephium depuis une application Next.js.
L'authentification peut être réalisée en quelques lignes à l'aide du composant @alephium/web3-react:
<AlephiumWalletProvider>
crée un
contexte React et le transmet à travers l'arborescence des composants de l'application. Ce contexte contient le
SignerProvider
ui est une pièce essentielle d'information pour interagir avec la blockchain Alephium, comme la signature de transactions, etc.
Une fois que l'utilisateur est connecté au portefeuille, nous pouvons interagir avec la blockchain Alephium en utilisant un ensemble de hooks React fournis par @alephium/web3-react. Par exemple, obtenir le portefeuille actuellement connecté, le solde et l'état de la transaction, etc.
Lorsqu'un utilisateur effectue une transaction, vous pouvez mettre à jour le solde de l'utilisateur en utilisantupdateBalanceForTx
.
Voici un exemple simple :
// Le hook useBalance renvoie deux valeurs :
// 1. balance : le solde actuel
// 2. updateBalanceForTx : utilisé pour mettre à jour le solde lorsque l'utilisateur effectue une transaction.
const { balance, updateBalanceForTx } = useBalance()
const withdrawCallback = useCallback(async () => {
const result = await withdraw(...)
updateBalanceForTx(result.txId)
}, [updateBalanceForTx])
Pour plus de détails d'implémentation, veuillez consulter le code.
En savoir plus
- Le modèle Nextjs est déployé sur le testnet et disponible à l'adresse https://alephium.github.io/nextjs-template
- Pour en savoir plus sur l'écosystème, veuillez visiter l'aperçu de l'écosystème.
- Pour en savoir plus sur le kit de développement web3, veuillez consulter le guide du SDK web3.
- Pour en savoir plus sur le langage Ralph, veuillez consulter le guide de Ralph.