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

Web3Authopen in new window 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 overviewopen in new window 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-referenceopen in new window untuk membaca lebih lanjut.

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

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.

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

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

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

Mirip, kamu juga bisa menggunakan signTransactionopen in new window 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.

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

Topup

Untuk saat ini, API hanya mendukung topup dari 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) >",
  });
})();

Logout

Untuk logout user, bisa dilakukan dengan memanggil fungsi logout di torus wallet instance.

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

Sumber

Last Updated:
Contributors: akangaziz