@cfxdevkit/core / TransactionBatcher
Class: TransactionBatcher
Defined in: packages/core/src/wallet/batching/batcher.ts:62
Transaction Batcher
Batches multiple transactions for efficient execution. Reduces gas costs and network congestion by grouping related operations.
Use Cases:
- Batch NFT minting
- Multi-send operations
- Batch token approvals
- Gas optimization for high-frequency operations
Example
const batcher = new TransactionBatcher({
maxBatchSize: 10,
autoExecuteTimeout: 5000
});
// Add transactions to batch
batcher.addTransaction({
to: '0xRecipient1...',
value: parseEther('1.0'),
chain: 'evm'
});
batcher.addTransaction({
to: '0xRecipient2...',
value: parseEther('2.0'),
chain: 'evm'
});
// Execute batch
const result = await batcher.executeBatch('evm', signer);
console.log(`Executed ${result.successCount} transactions`);Constructors
Constructor
new TransactionBatcher(
options?):TransactionBatcher
Defined in: packages/core/src/wallet/batching/batcher.ts:68
Parameters
options?
BatcherOptions = {}
Returns
TransactionBatcher
Methods
addTransaction()
addTransaction(
tx):string
Defined in: packages/core/src/wallet/batching/batcher.ts:82
Add transaction to batch
Parameters
tx
Omit<BatchTransaction, "id" | "addedAt">
Transaction to add
Returns
string
Transaction ID
clearBatch()
clearBatch(
chain?):void
Defined in: packages/core/src/wallet/batching/batcher.ts:240
Clear all pending transactions
Parameters
chain?
Chain to clear, or undefined to clear both
Returns
void
executeBatch()
executeBatch(
chain,signer?):Promise<BatchResult>
Defined in: packages/core/src/wallet/batching/batcher.ts:174
Execute batch of transactions
Note: This is a simplified implementation. In production, you would:
- Use multicall contracts for actual batching
- Handle gas estimation
- Implement retry logic
- Support different batching strategies (sequential, parallel, etc.)
Parameters
chain
Chain to execute on
signer?
(tx) => Promise<string>
Function to sign and send transactions
Returns
Promise<BatchResult>
Batch execution result
getBatchStats()
getBatchStats(
chain):object
Defined in: packages/core/src/wallet/batching/batcher.ts:146
Get batch statistics
Parameters
chain
Chain type
Returns
object
Batch statistics
avgGasLimit
avgGasLimit:
bigint
count
count:
number=batch.length
oldestTransaction
oldestTransaction:
Date
totalValue
totalValue:
bigint
getOptions()
getOptions():
Required<BatcherOptions>
Defined in: packages/core/src/wallet/batching/batcher.ts:284
Get batcher configuration
Returns
Required<BatcherOptions>
getPendingTransactions()
getPendingTransactions(
chain):BatchTransaction[]
Defined in: packages/core/src/wallet/batching/batcher.ts:136
Get pending transactions for a chain
Parameters
chain
Chain type
Returns
Array of pending transactions
removeTransaction()
removeTransaction(
transactionId,chain):boolean
Defined in: packages/core/src/wallet/batching/batcher.ts:118
Remove transaction from batch
Parameters
transactionId
string
Transaction ID
chain
Chain type
Returns
boolean
true if removed, false if not found
updateOptions()
updateOptions(
options):void
Defined in: packages/core/src/wallet/batching/batcher.ts:291
Update batcher configuration
Parameters
options
Partial<BatcherOptions>
Returns
void