🚀 QuickStart
This guide will help you quickly integrate UXUY Telegram Wallet into your decentralized application (telegram miniapp).
MetaMask Standard Wallet Integration (Beta)
Based on your request, I'll rephrase the content in the image using more professional open-source project terminology:
MetaMask Standard Wallet Integration (Beta)
We are pleased to announce the integration of MetaMask's standard wallet. Connection can now be established with a single line of code.
Current Status:
- Standard API mode support implemented
- Full MetaMask feature set not yet supported
- Incremental functionality enhancements planned
Code snippet for connection:
import { WalletTgSdk } from '@uxuycom/web3-tg-sdk'
new WalletTgSdk({
injected: true, // default: false, If `window.ethereum` does not exist, inject window.ethereum
metaData: {
name: 'UXUY Wallet', // if you want to use a custom name
icon: 'https://uxuy.com/logo.png', // if you want to use a custom icon
}
})
Prerequisites
- Node.js and npm installed
- Basic knowledge of JavaScript and Web3 development
Step 1: Install the SDK
Install the UXUY SDK using npm:
npm install @uxuycom/web3-tg-sdk
Step 2: Import and Initialize the SDK
In your JavaScript file, import and initialize the UXUY-Connect SDK:
import { WalletTgSdk } from '@uxuycom/web3-tg-sdk';
const { ethereum } = new WalletTgSdk();
Step 3: Connect to Wallet
Implement a function to connect to the UXUY Wallet:
async function connectWallet() {
try {
const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
console.log('Connected account:', accounts[0]);
return accounts[0];
} catch (error) {
console.error('Failed to connect wallet:', error);
}
}
Step 4: Get Chain ID and Get Account
Retrieve the current chain ID:
// Get the current chain ID
async function getChainId() {
try {
const chainId = await ethereum.request({ method: 'eth_chainId' });
console.log('Current chain ID:', chainId);
return chainId;
} catch (error) {
console.error('Failed to get chain ID:', error);
}
}
// Get the current address
async function getAccounts() {
try {
const accounts = await ethereum.request({ method: 'eth_accounts' });
console.log('Current address:', accounts[0]);
return accounts[0];
} catch (error) {
console.error('Failed to get address:', error);
}
}
Step 5: Send a Transaction
Implement a function to send a transaction:
async function sendTransaction(to, value) {
try {
const accounts = await ethereum.request({ method: 'eth_accounts' });
const transactionParameters = {
to: to,
from: accounts[0],
value: value, // Value in wei
// gasPrice: '0x09184e72a000', // Customize as needed
// gas: '0x5208', // 21000 gas limit
};
const txHash = await ethereum.request({
method: 'eth_sendTransaction',
params: [transactionParameters],
});
console.log('Transaction sent:', txHash);
return txHash;
} catch (error) {
console.error('Failed to send transaction:', error);
}
}
Step 6: Listen for Events
Set up event listeners for account and chain changes:
ethereum.on('accountsChanged', (accounts) => {
console.log('Active account changed:', accounts[0]);
});
ethereum.on('chainChanged', (chainId) => {
console.log('Network changed to:', chainId);
});
Example Usage
Here's a simple example of how to use these functions:
import { WalletTgSdk } from '@uxuycom/web3-tg-sdk';
const { ethereum } = new WalletTgSdk();
let address = null;
let chainId = null;
// Call this function when your DApp initializes
async function initializeWallet() {
// Check if the wallet is already connected
let accounts = await ethereum.request({ method: 'eth_accounts' });
if (!accounts[0]) {
await ethereum.request({ method: 'eth_requestAccounts' });
}
// Get the current account and chain ID
chainId = await ethereum.request({ method: 'eth_chainId' });
accounts = await ethereum.request({ method: 'eth_accounts' });
address = accounts[0];
// Set up event listeners for account and chain changes
ethereum.removeAllListeners();
ethereum.on('accountsChanged', (accounts) => {
address = accounts[0];
console.log('Active account changed:', accounts[0]);
});
ethereum.on('chainChanged', (changedChainId) => {
chainId = changedChainId
console.log('Network changed to:', changedChainId);
});
}
async function sendTransaction(to, value) {
const transactionParameters = {
to: to,
from: address,
value: value, // Value in wei
// gasPrice: '0x09184e72a000', // Customize as needed
// gas: '0x5208', // 21000 gas limit
};
const txHash = await ethereum.request({
method: 'eth_sendTransaction',
params: [transactionParameters],
});
const hash = await sendTransaction(to, value);
const receipt = await ethereum.request({
method: 'eth_getTransactionReceipt',
params: [hash],
})
return receipt;
}
// Call this function to send a transaction 0.001 ether to the address 0x0F9171aFF2dbd8c02Dd9cFEaBDB61fDd8D2675c5
sendTransaction("0x0F9171aFF2dbd8c02Dd9cFEaBDB61fDd8D2675c5", 0.001 * 10 ** 18);
Next Steps
- Implement error handling and user feedback in your UI
- Add support for switching chains using
wallet_switchEthereumChain
- Implement signing methods for more advanced functionality
For more detailed information, refer to the full UXUY Wallet Integration Guide.