Wallet
Apakah itu wallet?
Dompet kripto (wallet) adalah dompet digital yang digunakan untuk berinteraksi dengan blockchain. Ini memungkinkan Anda untuk menandatangani, memverifikasi, dan mengirim transaksi. Ada banyak solusi wallet kripto yang ada di pasaran, mulai dari aplikasi web yang mudah digunakan hingga solusi keamanan perangkat keras yang lebih kompleks.
Social Login di Solana
Web3Auth mengizinkan pengguna untuk sign in menggunakan akun yang sudah ada dari Web2 OAuth Providers (Facebook, Google, Twitter, dan lainnya.) ke dalam aplikasi Web3. Ini menyediakan interface dan flow yang sangat memudahkan untuk user overview dengan pendekatkan untuk mengelola asset dan identitas user. Ini menghilangkan hambatan teknis dan mengurangi kurva pembelajaran untuk kepemilikan digital untuk semua pengguna dengan menyediakan pembungkus di sekitar manajemen kunci pribadi.
Panduan Integrasi
Tutorial ini akan memandu Anda tentang contoh dasar untuk mengintegrasikan social login di dapp Anda.
Instal Dependensi
Untuk mulai menggunakan wallet dengan dapp, Anda dapat menginstal @toruslabs/solana-embed
.Anda dapat menggunakan pengelola paket populer seperti yarn dan npm untuk mengunduhnya.
yarn add @toruslabs/solana-embed
npm install --save @toruslabs/solana-embed
Import SDK dan initialize
Dalam cuplikan kode di bawah ini, kami membuat instance dari solana-embed dan kemudian menginisialisasinya dengan lingkungan pengujian yang menggunakan solana testnet. Anda dapat melewati opsi konfigurasi lain saat menginisialisasi antarmuka wallet. Anda dapat merujuk ke solana-embed.
Rerensi untuk solana-embed api-reference untuk membaca lebih lanjut.
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
});
Trigger user login
Cukup panggil torus.login()
untuk trigger login di mana pun yang masuk akal dalam siklus flow aplikasi Anda. Memanggil metode login tanpa parameter apa pun akan membuka modal bagi pengguna untuk memilih semua login yang didukung.
Setelah berhasil login, metode ini akan mengembalikan array dari public key. Elemen pertama dari array adalah public key dari wallet saat ini.
(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];
Menggunakan torus instance untuk mengambil detil akun user
Instance torus menyediakan antarmuka untuk interaksi seperti menandatangani transaksi dan pesan dalam status masuk. Itu juga dapat memberi kami antarmuka untuk mengakses informasi login pengguna seperti email pengguna, gambar profil, dll. (tergantung pada metode login)
(async () => {
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
})();
const userInfo = await torus.getUserInfo(); // user profile info (email address etc)
Menggunakan Torus Solana API untuk sign sebuah pesan.
Untuk mengirim pesan untuk ditandatangani pengguna, aplikasi web harus menyediakan string yang disandikan UTF-8 sebagai Uint8Array.
Setiap kali pengguna ingin menandatangani pesan, wallet akan membuka jendela konfirmasi.
(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);
Mirip, kamu juga bisa menggunakan signTransaction dan signAllTransactions
di torus instance untuk signing single atau multiple transaksi.
Menggunakan torus Solana API untuk mengirim transaksi.
Untuk mengirim transaksi, seseorang hanya perlu memanggil metode sendTransaction
pada instance torus dan meneruskan Transaction
.
Wallet akan membuka jendela konfirmasi. Setelah disetujui, SDK menandatangani dan mengirimkan transaksi ke 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);
Topup
Untuk saat ini, API hanya mendukung topup dari 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) >",
});
Logout
Untuk logout user, bisa dilakukan dengan memanggil fungsi logout
di torus wallet instance.
(async () => {
await torus.logout();
})();
await torus.logout();