Wallet
Was ist eine Brieftasche?
Eine Krypto-Wallet ist eine digitale Geldbörse, die zur Interaktion mit der Blockchain verwendet wird. Es ermöglicht Ihnen, Transaktionen zu signieren, zu verifizieren und zu senden. Es gibt viele Krypto-Wallet-Lösungen auf dem Markt, die von einfach zu bedienenden Web-Apps bis hin zu komplexeren Hardware-Sicherheitslösungen reichen.
Soziale Logins auf Solana
Web3Auth ermöglicht es Benutzern, sich mit ihren bestehenden Web2-OAuth-Anbietern (Facebook, Google, Twitter usw.) bei Web3-Dapps anzumelden. Es bietet einen benutzerfreundlichen und nicht verwahrungsfreien Ansatz zur Verwaltung von Vermögenswerten und Identität. Es beseitigt technische Barrieren und reduziert die Lernkurve für den digitalen Besitz für alle Benutzer, indem es einen Wrapper für die Verwaltung privater Schlüssel bereitstellt.
Integrationsleitfaden
Dieses Tutorial führt Sie durch ein einfaches Beispiel zur Integration von Social Logins in Ihre DApp.
Abhängigkeiten installieren
Um die Brieftasche mit einer DApp zu verwenden, können Sie @toruslabs/solana-embed
installieren. Sie können gängige Paketmanager wie Garn und npm verwenden, um sie herunterzuladen.
yarn add @toruslabs/solana-embed
npm install --save @toruslabs/solana-embed
Importieren Sie das SDK und initialisieren Sie es
Im folgenden Codeausschnitt erstellen wir eine Instanz von solana-embed und initialisieren sie dann mit einer Testumgebung, die solana testnet verwendet. Sie können andere Konfigurationsoptionen übergeben, während Sie die Wallet-Schnittstelle initialisieren. Weitere Informationen dazu finden Sie unter solana-embed api-reference.
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
});
Benutzeranmeldung auslösen
Rufen Sie einfach torus.login()
auf, um eine Anmeldung auszulösen, wo immer es in Ihrem Anwendungslebenszyklus sinnvoll ist. Beim Aufrufen der Anmeldemethode ohne Parameter wird ein Modal geöffnet, in dem der Benutzer alle unterstützten Anmeldungen auswählen kann.
Nach erfolgreicher Anmeldung gibt die Methode ein Array öffentlicher Schlüssel zurück. Das erste Element des Arrays ist der aktuelle öffentliche Schlüssel der Brieftasche
(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];
Verwenden der Torus-Instanz zum Abrufen von Benutzerkontodetails
Die Torus-Instanz bietet eine Schnittstelle für Interaktionen wie das Signieren von Transaktionen und Nachrichten im eingeloggten Zustand. Es kann uns auch eine Schnittstelle für den Zugriff auf Benutzeranmeldeinformationen wie die E-Mail-Adresse, das Profilbild usw. des Benutzers bereitstellen (abhängig von der Anmeldemethode).
(async () => {
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
})();
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
Verwenden der Torus Solana-API zum Signieren einer Nachricht.
Um eine Nachricht zum Signieren durch den Benutzer zu senden, muss die Webanwendung eine UTF-8-codierte Zeichenfolge als Uint8Array bereitstellen.
Jedes Mal, wenn ein Benutzer eine Nachricht signieren möchte, öffnet das Wallet ein Bestätigungsfenster.
(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);
In ähnlicher Weise können Sie auch die Methoden signTransaction und „signAllTransactions“ auf der Torus-Instanz zum Signieren einzelner bzw. mehrerer Transaktionen verwenden.
Verwenden der Torus Solana-API zum Senden einer Transaktion
Um eine Transaktion zu senden, muss man einfach die Methode „sendTransaction“ auf der Torus-Instanz aufrufen und die „Transaktion“ übergeben.
Das Wallet öffnet ein Bestätigungsfenster. Nach der Genehmigung signiert das SDK und sendet die Transaktion an die Kette.
(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);
Aufladungen
Derzeit unterstützt die API Aufladungen von 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) >",
});
Ausloggen
Um den Benutzer abzumelden, müssen Sie lediglich die „Logout“-Funktion in der Torus-Wallet-Instanz aufrufen.
(async () => {
await torus.logout();
})();
await torus.logout();