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

Web3Authopen in new window 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 verwahrungsfreienopen in new window 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-referenceopen in new window.

Press </> button to view full source
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
  });
})();

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

Press </> button to view full source
(async () => {
  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).

Press </> button to view full source
(async () => {
  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.

Press </> button to view full source
(async () => {
  const msg = Buffer.from("Test Signing Message ", "utf8");
  const signed_message = await torus.signMessage(msg);
})();

In ähnlicher Weise können Sie auch die Methoden signTransactionopen in new window 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.

Press </> button to view full source
(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);
})();

Aufladungen

Derzeit unterstützt die API Aufladungen von Moonpay.

Press </> button to view full source
(async () => {
  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.

Press </> button to view full source
(async () => {
  await torus.logout();
})();

Ressourcen

Last Updated:
Contributors: nyk