Portefeuille
Qu'est-ce qu'un portefeuille ?
Un portefeuille de crypto-monnaie est un portefeuille numérique utilisé pour interagir avec la blockchain. Il vous permet de signer, de vérifier et d'envoyer des transactions. Il existe de nombreuses solutions de portefeuille de crypto-monnaies sur le marché, allant des applications web simples à utiliser aux solutions de sécurité matérielle plus complexes.
Connexions Sociales sur Solana
Web3Auth permet aux utilisateurs de se connecter en utilisant leurs fournisseurs Web2 OAuth existants (Facebook, Google, Twitter, etc.) dans des applications Web3. Il offre une approche facile à utiliser et non-custodial de la gestion des actifs et de l'identité. Il supprime les obstacles techniques et réduit la courbe d'apprentissage de la propriété numérique pour tous les utilisateurs en fournissant un cadre à la gestion des clés privées.
Guide d'Intégration
Ce tutoriel vous guidera à travers un exemple de base pour intégrer les connexions sociales dans votre application.
Installation des Dépendances
Pour commencer à utiliser le portefeuille avec une dapp, vous pouvez installer @toruslabs/solana-embed
. Vous pouvez utiliser des gestionnaires de paquets connus comme yarn et npm pour les télécharger.
yarn add @toruslabs/solana-embed
npm install --save @toruslabs/solana-embed
Importer le SDK et l'initialiser
Dans l'extrait de code ci-dessous, nous créons une instance de solana-embed et l'initialisons avec l'environnement de test qui utilise le tesnet de Solana. Vous pouvez passer d'autres options de configuration lors de l'initialisation de l'interface du portefeuille. Vous pouvez vous référer à solana-embed api-reference pour en savoir plus.
import { clusterApi, Connection } from "@solana/web3.js";
import Torus from "@toruslabs/solana-embed";
(async () => {
const torus = new Torus();
await torus.init({
buildEnv: "testing", // uses solana-testing.tor.us (which uses testnet)
enableLogging: true, // default : false
showTorusButton: true, // default: true
});
})();
const torus = new Torus();
await torus.init({
buildEnv: "testing", // uses solana-testing.tor.us (which uses testnet)
enableLogging: true, // default : false
showTorusButton: true, // default: true
});
Déclencher la connexion de l'utilisateur
Il suffit d'appeler torus.login()
pour déclencher une connexion à n'importe quel moment du cycle de vie de votre application. L'appel de la méthode de connexion sans aucun paramètre ouvrira une modale permettant à l'utilisateur de sélectionner toutes les connexions prises en charge.
Une fois la connexion réussie, la méthode renvoie un tableau de clés publiques. Le premier élément du tableau est la clé publique du portefeuille actuel.
(async () => {
const publicKeys = await torus.login(); // return array of public key in base 58
const publicKey = publicKeys[0];
})();
const publicKeys = await torus.login(); // return array of public key in base 58
const publicKey = publicKeys[0];
Utilisation de l'instance torus pour récupérer les détails du compte utilisateur
L'instance torus fournit une interface pour des interactions telles que la signature de transactions et de messages lorsque l'on est connecté. Il peut également nous fournir une interface permettant d'accéder aux informations de connexion de l'utilisateur, telles que son adresse électronique, son image de profil, etc. (selon la méthode de connexion utilisée)
(async () => {
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
})();
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
Utilisation de l'API Solana de Torus pour signer un message.
Afin d'envoyer un message à signer par l'utilisateur, l'application web doit fournir une chaîne de caractères codée en UTF-8 sous forme de Uint8Array.
Chaque fois qu'un utilisateur veut signer un message, le portefeuille ouvre une fenêtre de confirmation.
(async () => {
const msg = Buffer.from("Test Signing Message ", "utf8");
const signed_message = await torus.signMessage(msg);
})();
const msg = Buffer.from("Test Signing Message ", "utf8");
const signed_message = await torus.signMessage(msg);
De même, vous pouvez aussi utiliser les méthodes signTransaction et signAllTransactions
de l'instance torus pour respectivement la signature des transactions uniques et multiples.
Utilisation de l'API Solana de Torus pour envoyer une transaction.
Pour envoyer une transaction, il suffit d'appeler la méthode sendTransaction
de l'instance torus et de lui passer la Transaction
.
Le portefeuille ouvre une fenêtre de confirmation. Après approbation, le SDK signe et envoie la transaction à la blockchain.
(async () => {
const network = "";
const connection = new Connection(network);
const blockhash = (await conn.getRecentBlockhash("finalized")).blockhash;
const destPublicKey = "<destination public key>";
const transactionInstruction = SystemProgram.transfer({
fromPubkey: new PublicKey(publicKey),
toPubkey: new PublicKey(destPublicKey),
lamports: 0.1 * LAMPORTS_PER_SOL,
});
const transaction = new Transaction({
recentBlockhash: blockhash,
feePayer: new PublicKey(publicKey),
}).add(transactionInstruction);
const res = await torus.sendTransaction(transaction);
})();
const transactionInstruction = SystemProgram.transfer({
fromPubkey: new PublicKey(publicKey),
toPubkey: new PublicKey(destPublicKey),
lamports: 0.1 * LAMPORTS_PER_SOL,
});
const transaction = new Transaction({
recentBlockhash: blockhash,
feePayer: new PublicKey(publicKey),
}).add(transactionInstruction);
const res = await torus.sendTransaction(transaction);
Top-ups
Actuellement, l'API prend en charge les topups de Moonpay.
(async () => {
const paymentStatus = await torus.initateTopup("moonpay");
// topup with custom address
const paymentStatus = torus.initateTopup("moonpay", {
selectedAddress: "< Recipient's Solana Public Key(base58) >",
});
})();
const paymentStatus = await torus.initateTopup("moonpay");
// topup with custom address
const paymentStatus = torus.initateTopup("moonpay", {
selectedAddress: "< Recipient's Solana Public Key(base58) >",
});
Déconnexion
Pour déconnecter l'utilisateur, il suffit d'appeler la fonction logout
de l'instance du portefeuille torus.
(async () => {
await torus.logout();
})();
await torus.logout();