ウォレット
ウォレットとは?
クリプト ウォレットは、ブロックチェーンとやり取りするために使用されるデジタル ウォレットです。これにより、トランザクションに署名、検証、および送信できます。マーケットには、使いやすいWebアプリからより複雑なハードウェアセキュリティソリューションに至るまで、多くのクリプトウォレットソリューションが存在します。
Solanaのソーシャルログイン
Web3Authを使用すると、ユーザーは既存のWeb2 OAuthプロバイダー(Facebook, Google, Twitter etc.)を使用してWeb3 dappsにサインインできます。これは資産とIDを管理するための、ユーザーフレンドリーで非管理的なアプローチを提供します。 秘密鍵管理のラッパーを提供することで、技術的な障壁を取り除き、すべてのユーザーのデジタル所有権の学習曲線を短縮します。
インテグレーションガイド
このチュートリアルでは、ソーシャルログインをdappに統合するための基本的な例について説明します。
依存関係のインストール
dappでウォレットの使用を開始するには、@toruslabs/solana-embed
をインストールします。yarnやnpmなどの一般的なパッケージマネージャーを使用してダウンロードできます。
yarn add @toruslabs/solana-embed
npm install --save @toruslabs/solana-embed
SDKをインポートして初期化する
以下のコード スニペットでは、solana-embed のインスタンスを作成し、それをsolana testnetを使用するテスト環境で初期化しています。ウォレット インターフェイスの初期化中に、他の構成オプションを渡すことができます。詳細については、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
});
ユーザーログインのトリガー
torus.login()
を呼び出すだけで、アプリケーションのライフサイクルで意味のある場所でログインをトリガーできます。パラメータなしでloginメソッドを呼び出すと、ユーザーがサポートされているすべてのログインを選択するためのモーダルが開きます。
ログインが成功すると、メソッドは公開鍵の配列を返します。配列の最初の要素は、現在のウォレットの公開鍵です。
(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];
Torusインスタンスを使用してユーザーアカウントの詳細を取得する
torusインスタンスは、ログイン状態でのトランザクションやメッセージへの署名などの対話のためのインターフェイスを提供します。また、ユーザーの電子メール、プロフィール画像などのユーザーログイン情報にアクセスするためのインターフェイスを提供することもできます(ログイン方法によって異なります)。
(async () => {
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
})();
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
Torus Solana APIを使用してメッセージに署名します。
ユーザーが署名するようにメッセージを送信するには、WebアプリケーションはUint8ArrayとしてUTF-8でエンコードされた文字列を提供する必要があります。
ユーザーがメッセージに署名するたびに、ウォレットは確認ウィンドウを開きます。
(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);
同様に、signAllTransactions
メソッドを使用し、またtorusインスタンスでsignTransaction メソッドを使用して、それぞれ単一または複数のトランザクションに署名することもできます。
torus Solana APIを使用してトランザクションを送信
トランザクションを送信するには、torusインスタンスでsendTransaction
メソッドを呼び出し、Transaction
を渡すだけです。
ウォレットが確認ウィンドウを開きます。承認後、SDKはトランザクションに署名してチェーンに送信します。
(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
現在、API は Moonpay からのtopupをサポートしています。
(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) >",
});
ログアウト
ユーザーをログアウトするには、torus ウォレット インスタンスでlogout
関数を呼び出すだけです。
(async () => {
await torus.logout();
})();
await torus.logout();