Skip to Content

@cfxdevkit/core


@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?

ChainType

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

ChainType

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

ChainType

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

ChainType

Chain type

Returns

BatchTransaction[]

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

ChainType

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