Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sdk/packages/simplex/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperbridge/simplex",
"version": "0.5.9",
"version": "0.5.10",
"license": "Apache-2.0",
"description": "IntentGateway simplex package for hyperbridge",
"main": "dist/index.js",
Expand Down
15 changes: 14 additions & 1 deletion sdk/packages/simplex/src/funding/vault/VaultFundingPlanner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,20 @@ export class VaultFundingPlanner implements FundingVenue {
const callData = encodeERC7821ExecuteBatch(calls)

if (this.userOpSender?.canSponsor(chain)) {
const result = await this.userOpSender.trySendSponsored({ chain, callData })
// The bundler echoes input gas limits for these ops instead of simulating, so
// pass measured fixed limits. Verification efficiency `used / (verif + pmVerif)`
// must clear rundler's 0.4 floor — the Circle paymaster verification (~75k) is
// the dominant term, account validation only ~24k.
const result = await this.userOpSender.trySendSponsored({
chain,
callData,
gas: {
verificationGasLimit: 60_000n,
callGasLimit: 350_000n * BigInt(calls.length) + 100_000n,
preVerificationGas: 150_000n,
},
paymasterVerificationGasLimit: 140_000n,
})
if (result) return { txHash: result.txHash, sponsored: true }
logger.warn({ chain }, "Sponsored batch unavailable, sending native tx")
}
Expand Down
4 changes: 2 additions & 2 deletions sdk/packages/simplex/src/services/UserOpSender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,8 @@ export class UserOpSender {
}
: undefined

// Explicit limits skip estimation (needed for the not-yet-delegated EIP-7702
// case, where there is no account code to simulate).
// Explicit limits skip estimation — the bundler echoes the input limits for
// these ops rather than simulating, so callers pass measured fixed limits.
const { verificationGasLimit, callGasLimit, preVerificationGas } =
gas ??
(await this.estimateGas({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export async function buildCirclePaymasterData(
return {
paymaster: paymasterAddress,
paymasterData,
paymasterVerificationGasLimit: VERIFICATION_GAS_LIMIT_CIRCLE,
paymasterVerificationGasLimit,
paymasterPostOpGasLimit: POST_OP_GAS_LIMIT,
}
}
Loading