The Elysium build keeps Numpay’s architecture (see System architecture) and changes only the chain-specific layer: chain config, USDC address and the bundler/paymaster provider.

Same wallet on every chain

A Kernel address is computed from the factory address, the validator and its init data (the EOA address) and the salt (index). Kernel v3.3, the ECDSA validator and the meta factory are deployed at the same addresses on Elysium as on Base, so the same key derives the same address on both chains. The smoke test checks this on every run.

One file of chain config per repo

Everything chain-specific lives in src/config/chain.ts in both the app and the backend, and the two must match:
src/config/chain.ts

Pimlico as bundler and paymaster

The ZeroDev SDK still builds and signs Kernel user operations. Pimlico only relays them (bundler) and pays for them (verifying paymaster).
src/lib/pimlico.ts
src/hooks/use-create-kernel.ts

A sponsored send on Elysium

Claimable wallets on Elysium

Claimable wallets work the same way. The backend’s Kernel client for sweeps also uses Pimlico (PIMLICO_API_KEY), and reads balances from Elysium’s USDC:
The testnet backend must read the Elysium USDC contract on chain 99801, and must use its own database. A claimable wallet swept on the wrong chain would show a zero balance and its key would be deleted.

Gas costs (measured on testnet)

All of it is paid by Numpay through Pimlico.

What’s different from Base