Advanced Examples
Advanced examples and patterns for Azoth SDK
Gas Optimization
Batching Transactions
If you need to perform multiple operations, consider batching them to minimize gas costs:
import { ethers } from 'ethers';
import { AzothSDK } from '@azothpay/sdk';
async function optimizedOperations(signer: ethers.Signer) {
const azoth = AzothSDK.create(signer, 'polygon', 'USDT');
// Instead of multiple separate transactions:
// await azoth.deposit(100);
// await azoth.subscribe(creator1, 10);
// await azoth.subscribe(creator2, 5);
// Batch the operations in your UI/UX flow
// First deposit enough tokens for everything
const depositTx = await azoth.deposit(115); // 100 + 10 + 5
await depositTx.wait();
// Then do the subscriptions
const [tx1, tx2] = await Promise.all([
azoth.subscribe(creator1, 10),
azoth.subscribe(creator2, 5)
]);
await Promise.all([tx1.wait(), tx2.wait()]);
}Using Permit2 for Deposits
The Azoth SDK supports using Permit2 for approving and depositing tokens in a single transaction, which saves gas:
Working with Custom Contract Versions
The Azoth SDK supports multiple contract versions for each network and token.
Specifying a Contract Version
Working with Custom Contracts
You can also specify custom contract and token addresses:
Multiple Network Support
Working with Multiple Networks Simultaneously
For applications that need to work with multiple networks, you can create multiple SDK instances:
Dynamically Switching Networks
For applications that need to switch networks dynamically:
Relayer Services
To fully leverage BySig methods, you'll need a relayer service to submit the signed transactions to the blockchain.
Building a Simple Relayer
Here's a basic example of how to build a simple relayer service using Node.js and Express:
Error Handling and Recovery
Common Errors and Solutions
"Insufficient allowance"
Token approval needed
Call the token's approve method before depositing
"Insufficient balance"
User doesn't have enough tokens
Inform user to get more tokens
"Transaction underpriced"
Gas price too low
Increase gas price or wait for network congestion to decrease
"Nonce too low"
Transaction with same nonce already processed
Reset nonce or use the next available nonce
"Deadline expired"
BySig transaction submitted after deadline
Generate a new signature with a future deadline
Implementing Robust Error Handling
Transaction Monitoring and Recovery
For critical operations, implement transaction monitoring and recovery:
Performance Optimization
Caching Strategies
These advanced techniques will help you build robust applications that leverage the full power of the Azoth SDK while ensuring optimal performance and user experience.
Last updated