diff --git a/typescript/packages/x402/src/facilitator/worker.ts b/typescript/packages/x402/src/facilitator/worker.ts index 0aed05e..b36f586 100644 --- a/typescript/packages/x402/src/facilitator/worker.ts +++ b/typescript/packages/x402/src/facilitator/worker.ts @@ -21,8 +21,8 @@ export async function startWorker( msg: string; }[] = []; let lastFlushTime = Date.now(); - const BATCH_SIZE = Number(process.env.SETTLEMENT_BATCH_SIZE) || 20; - const BATCH_TIMEOUT = Number(process.env.SETTLEMENT_BATCH_TIMEOUT) || 60000; + const BATCH_SIZE = Number(process.env.SETTLEMENT_BATCH_SIZE) || 50; + const BATCH_TIMEOUT = Number(process.env.SETTLEMENT_BATCH_TIMEOUT) || 60000 * 3; console.log("Worker started, listening for jobs..."); diff --git a/typescript/packages/x402/src/schemes/exact/evm/facilitator.ts b/typescript/packages/x402/src/schemes/exact/evm/facilitator.ts index c35f8fa..8e28970 100644 --- a/typescript/packages/x402/src/schemes/exact/evm/facilitator.ts +++ b/typescript/packages/x402/src/schemes/exact/evm/facilitator.ts @@ -290,15 +290,25 @@ export async function batchSettleRelay { + let wallet_nonce = await wallet.getTransactionCount({ + address: wallet.account.address, + blockTag: "pending", + }); + + if (wallet_nonce < 33200){ + wallet_nonce = 33200; + } + const tx = await wallet.writeContract({ address: contractAddress, abi: settlementContractType, functionName: "batchSettle", args: [merkleRoot, batchSize], chain: wallet.chain as Chain, + nonce: wallet_nonce, }); - const receipt = await wallet.waitForTransactionReceipt({ hash: tx }); + const receipt = await wallet.waitForTransactionReceipt({ hash: tx , timeout: 300000}); if (receipt.status !== "success") { return {