Tutorials and Examples
Basic Wallet Operations
Create a Wallet
This tutorial demonstrates how to create a new wallet using the
TMAWalletClient
.
import { TMAWalletClient } from '@tmawallet/sdk'; (async () => { const tmaWallet = new TMAWalletClient('your_project_public_token'); await tmaWallet.init(); if (!tmaWallet.isBundleExists) { await tmaWallet.createBundle(); } console.log('Wallet address:', tmaWallet.walletAddress); })();
Restore a Wallet
This tutorial shows how to restore a wallet by retrieving an existing bundle from Telegram's cloud storage.
import { TMAWalletClient } from '@tmawallet/sdk'; (async () => { const tmaWallet = new TMAWalletClient('your_project_public_token'); await tmaWallet.init(); if (tmaWallet.isBundleExists) { console.log('Restored wallet address:', tmaWallet.walletAddress); } else { console.log('No existing wallet found.'); } })();
Make a Transaction
Example of using TMAWallet to sign a transaction on the Ethereum blockchain.
import { TMAWalletClient } from '@tmawallet/sdk'; import { ethers } from 'ethers'; (async () => { const tmaWallet = new TMAWalletClient('your_project_public_token'); await tmaWallet.init(); if (tmaWallet.isBundleExists) { const wallet = new ethers.Wallet(tmaWallet.privateKey); const provider = ethers.getDefaultProvider('ropsten'); const signer = wallet.connect(provider); const tx = { to: 'recipient_address', value: ethers.utils.parseEther('0.01'), gasLimit: 21000, }; const transactionResponse = await signer.sendTransaction(tx); console.log('Transaction Hash:', transactionResponse.hash); } else { console.log('No wallet found to make a transaction.'); } })();
Telegram Cloud Integration
Using TelegramCloudStorage: Learn how to store and retrieve data using
TelegramCloudStorage
for wallet management.import { TelegramCloudStorage } from '@tmawallet/sdk'; (async () => { const storage = new TelegramCloudStorage(); await storage.setItem('test_key', 'test_value'); const value = await storage.getItem('test_key'); console.log('Stored Value:', value); })();
Advanced Usage
Managing Bundles: A detailed guide on using
ClientBundleController
andWalletBundleController
to create, retrieve, and clear bundles.import { ClientBundleController, WalletBundleController } from '@tmawallet/sdk'; import { TelegramCloudStorage } from '@tmawallet/sdk'; (async () => { const storage = new TelegramCloudStorage(); const clientBundleController = new ClientBundleController(storage); const walletBundleController = new WalletBundleController(storage); // Create a new client bundle const newBundle = await clientBundleController.createNewBundle(); console.log('New client bundle created:', newBundle); // Retrieve the existing bundle const existingBundle = await clientBundleController.getClientBundle(); console.log('Existing bundle:', existingBundle); // Clear the client bundle await clientBundleController.clearClientBundle(); console.log('Client bundle cleared'); })();
Handling User Sessions: Best practices for managing sessions and key security across different user devices.
Session Persistence: Use Telegram's cloud storage to persist session data, ensuring that users can access their wallets across devices.
Key Security: Avoid storing sensitive keys locally. Instead, leverage MPC and TelegramCloudStorage to manage keys securely.
Session Expiry: Implement session expiry mechanisms to ensure that inactive sessions are securely terminated, reducing the risk of unauthorized access.
Last updated