Integration Guides
Step-by-step guides for common integration scenarios.
User Wallet Integration
Add a wallet to your app to let users manage their gems:
javascript
// 1. Get user balance
const balance = await client.balance.get(userId);
// 2. Display balance
console.log(`MGEM: ${balance.mgem}, USDG: ${balance.usdg}`);
// 3. Handle transactions
const tx = await client.transactions.submit({
from: userId,
to: recipientId,
amount: 100,
token: 'MGEM'
});
// 4. Track transaction status
const status = await client.transactions.get(tx.tx_hash);Reward System
Reward users for actions in your app:
javascript
// When user completes action
const reward = await client.transactions.submit({
from: 'system',
to: userId,
amount: 50,
token: 'MGEM',
type: 'reward',
metadata: {
action: 'post_created',
postId: '12345'
}
});Trading System
Enable users to trade gems:
javascript
// User buys MGEM with USDG
const buyTx = await client.transactions.submit({
from: userId,
to: 'treasury',
amount: 10, // $10 USDG
token: 'USDG',
type: 'buy',
metadata: { mgem_amount: 667 } // ~0.015 per MGEM
});
// User sells MGEM for USDG
const sellTx = await client.transactions.submit({
from: userId,
to: 'treasury',
amount: 667,
token: 'MGEM',
type: 'sell',
metadata: { usdg_amount: 10 }
});Error Handling
javascript
try {
const tx = await client.transactions.submit({
from: userId,
to: recipientId,
amount: 100,
token: 'MGEM'
});
} catch (error) {
if (error.code === 'INSUFFICIENT_BALANCE') {
console.error('User has insufficient balance');
} else if (error.code === 'RATE_LIMIT') {
console.error('Rate limit exceeded, retry later');
} else {
console.error('Transaction failed:', error.message);
}
}Caching Best Practices
javascript
// Cache balance for 5 seconds
const balanceCache = new Map();
async function getBalance(userId) {
const cached = balanceCache.get(userId);
if (cached && Date.now() - cached.time < 5000) {
return cached.data;
}
const balance = await client.balance.get(userId);
balanceCache.set(userId, { data: balance, time: Date.now() });
return balance;
}Webhook Setup
Receive real-time transaction notifications:
bash
POST /api/webhooks/register
{
"url": "https://yourapp.com/webhooks/memenchain",
"events": ["transaction.confirmed", "transaction.failed"]
}
# Your webhook will receive:
{
"event": "transaction.confirmed",
"tx_hash": "0x...",
"from": "user123",
"to": "user456",
"amount": 100,
"token": "MGEM",
"timestamp": 1234567890
}