ウォレット

ウォレットとは?

クリプト ウォレットは、ブロックチェーンとやり取りするために使用されるデジタル ウォレットです。これにより、トランザクションに署名、検証、および送信できます。マーケットには、使いやすいWebアプリからより複雑なハードウェアセキュリティソリューションに至るまで、多くのクリプトウォレットソリューションが存在します。

Solanaのソーシャルログイン

Web3Authopen in new windowを使用すると、ユーザーは既存のWeb2 OAuthプロバイダー(Facebook, Google, Twitter etc.)を使用してWeb3 dappsにサインインできます。これは資産とIDを管理するための、ユーザーフレンドリーで非管理的open in new windowなアプローチを提供します。 秘密鍵管理のラッパーを提供することで、技術的な障壁を取り除き、すべてのユーザーのデジタル所有権の学習曲線を短縮します。

インテグレーションガイド

このチュートリアルでは、ソーシャルログインをdappに統合するための基本的な例について説明します。

依存関係のインストール

dappでウォレットの使用を開始するには、@toruslabs/solana-embedをインストールします。yarnやnpmなどの一般的なパッケージマネージャーを使用してダウンロードできます。

yarn add @toruslabs/solana-embed
npm install --save @toruslabs/solana-embed

SDKをインポートして初期化する

以下のコード スニペットでは、solana-embed のインスタンスを作成し、それをsolana testnetを使用するテスト環境で初期化しています。ウォレット インターフェイスの初期化中に、他の構成オプションを渡すことができます。詳細については、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
  });
})();

ユーザーログインのトリガー

torus.login()を呼び出すだけで、アプリケーションのライフサイクルで意味のある場所でログインをトリガーできます。パラメータなしでloginメソッドを呼び出すと、ユーザーがサポートされているすべてのログインを選択するためのモーダルが開きます。

ログインが成功すると、メソッドは公開鍵の配列を返します。配列の最初の要素は、現在のウォレットの公開鍵です。

Press </> button to view full source
(async () => {
  const publicKeys = await torus.login(); // return array of public key in base 58
  const publicKey = publicKeys[0];
})();

Torusインスタンスを使用してユーザーアカウントの詳細を取得する

torusインスタンスは、ログイン状態でのトランザクションやメッセージへの署名など​​の対話のためのインターフェイスを提供します。また、ユーザーの電子メール、プロフィール画像などのユーザーログイン情報にアクセスするためのインターフェイスを提供することもできます(ログイン方法によって異なります)。

Press </> button to view full source
(async () => {
  const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
})();

Torus Solana APIを使用してメッセージに署名します。

ユーザーが署名するようにメッセージを送信するには、WebアプリケーションはUint8ArrayとしてUTF-8でエンコードされた文字列を提供する必要があります。

ユーザーがメッセージに署名するたびに、ウォレットは確認ウィンドウを開きます。

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

同様に、signAllTransactions メソッドを使用し、またtorusインスタンスでsignTransactionopen in new window メソッドを使用して、それぞれ単一または複数のトランザクションに署名することもできます。

torus Solana APIを使用してトランザクションを送信

トランザクションを送信するには、torusインスタンスでsendTransactionメソッドを呼び出し、Transaction を渡すだけです。

ウォレットが確認ウィンドウを開きます。承認後、SDKはトランザクションに署名してチェーンに送信します。

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);
})();

Top-ups​

現在、API は Moonpay からのtopupをサポートしています。

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) >",
  });
})();

ログアウト

ユーザーをログアウトするには、torus ウォレット インスタンスでlogout関数を呼び出すだけです。

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

その他参考資料

Last Updated:
Contributors: PokoPoko2ry