Skip to content

[sdk, simplex, docs]: Hyperbridge's bundlers by default, priced for rundler - #1386

Merged
seunlanlege merged 4 commits into
mainfrom
simplex-default-bundlers
Oct 10, 2026
Merged

seunlanlege merged 4 commits into
mainfrom
simplex-default-bundlers

Conversation

@seunlanlege

@seunlanlege seunlanlege commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Simplex and the SDK now use the ERC-4337 bundlers Hyperbridge runs, and price UserOperations at fees those bundlers will actually bundle. Hyperbridge runs bundlers on Ethereum, BSC, Polygon, Base and Arbitrum, and on BSC Chapel and Polygon Amoy for testnet. Since today's governance batch, the SimplexPaymaster only sponsors bundles sent by them.

SDK. Each chain in the chain registry carries its Hyperbridge bundler as bundlerUrl. EvmChain.bundlerUrl returns the bundler the chain was given, or else that one, so an IntentGateway on a supported chain needs no bundler URL. A URL passed to EvmChain.create or fromParams still wins.

Fees. The bundlers run rundler. Rundler accepts an op paying half the base fee, but only bundles one whose max fee covers the pending base fee plus 27%, plus its priority fee. The SDK and simplex added only 10%, so on Ethereum, Base, Arbitrum and Polygon a fill was accepted and then skipped until it expired. Fees now come from the bundler's rundler_getUserOperationGasPrice suggestion, raised by the configured bumps, with rundler_maxPriorityFeePerGas as the fallback. Fill estimates and simplex's sponsored sends both price this way. The Pimlico and Alchemy pricing paths are removed, along with BundlerMethod.PIMLICO_GET_USER_OPERATION_GAS_PRICE and PimlicoGasPriceEstimate.

Simplex. bundlerUrl is gone from the config. Fills always go through the Hyperbridge bundler for the chain. A chain without one can only be watched: simplex refuses to start, add it, or switch it to filling unless it is watch-only, and the dashboard's chain editor refuses it too. The wizards and the Chains panel only offer chains with a bundler, so the testnet list is BSC Chapel and Polygon Amoy.

Existing configs keep working. A bundlerUrl left in [[chains]] is ignored and dropped on the next save. A config filling on a chain without a Hyperbridge bundler, such as Sepolia, fails to start until that chain is marked watch-only.

For library users, chains.add no longer takes bundlerUrl and chains.setBundlerUrl is gone. The simplex init bundler question and /api/setup/validate-bundler are removed. The testnet swap E2E drops its bundler env vars.

Versions: SDK 3.0.1, simplex and simplex-desktop 0.17.1.

The SDK fee, bundler and fill-estimate tests pass, and the SDK type-check is clean. The full simplex suite passes apart from the six suites that need live RPC or Binance credentials, and its type-check shows no new errors.

…Url from the config

Simplex submits every fill through the ERC-4337 bundler Hyperbridge runs
for the chain (Ethereum, BSC, Polygon, Base, Arbitrum, BSC Chapel and
Polygon Amoy), resolved from the chain id. A chain without one can only
be watched: the bundler preflight and PUT /api/chains refuse it unless
it is watch-only.

A bundlerUrl in an older config is ignored and no longer written back.
ChainInput.bundlerUrl, chains.setBundlerUrl, the init bundler step and
/api/setup/validate-bundler are removed, and the wizards offer only
chains with a Hyperbridge bundler. Simplex and simplex-desktop 0.18.0.
…ts chain

The SDK's chain registry now carries the bundler Hyperbridge runs for
each chain (ChainConfigData.bundlerUrl). EvmChain.bundlerUrl returns the
bundler it was given, or else that one, so an IntentGateway on Ethereum,
BSC, Polygon, Base, Arbitrum, BSC Chapel or Polygon Amoy needs no bundler
URL. A URL passed to EvmChain.create or fromParams still wins.

Simplex keeps its own copy of the list because the dashboard bundles it
without the SDK; a test checks the two match. The testnet swap E2E drops
its bundler env vars. The SDK goes to 3.0.1.
Rundler only bundles an op whose max fee covers the pending base fee
raised by its overhead (27% by default) plus its priority fee. The SDK
and simplex raised the max fee by 10% of the base fee, so on Ethereum,
Base, Arbitrum and Polygon fills were accepted by Hyperbridge's bundlers
and then skipped until they expired.

rundlerUserOperationFees now uses the fees the bundler suggests through
rundler_getUserOperationGasPrice, raised by the configured bumps, and
falls back to rundler_maxPriorityFeePerGas where it is not served. Fill
estimates and simplex's sponsored sends both use it. The Pimlico and
Alchemy pricing paths are removed.
@seunlanlege seunlanlege changed the title [simplex, docs]: fill through Hyperbridge's bundlers and drop bundlerUrl from the config [sdk, simplex, docs]: Hyperbridge's bundlers by default, priced for rundler Oct 10, 2026
@seunlanlege
seunlanlege merged commit 6ef9d6c into main Oct 10, 2026
19 checks passed
@seunlanlege
seunlanlege deleted the simplex-default-bundlers branch October 10, 2026 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants