Skip to main content

Gas and cost model

Note: Verification and Kernel-routing costs are measured on a local Nitro devnode where L1 data costs are zero. L1 data costs are projected from Arbitrum mainnet pricing. Treat the L1 numbers as estimates until re-measured on Sepolia and then mainnet.

Per-transaction costs

OperationGasNotes
ML-DSA-65 verification (Stylus)374,000Core cryptographic operation
Full PQ UserOp (ETH transfer)751,312End-to-end including Kernel routing
Equivalent ECDSA UserOp202,816Baseline for comparison
PQ overhead vs ECDSA3.7×Total UserOp ratio

About half of the PQ UserOp cost is cryptographic verification; the other half is the ERC-4337 / ERC-7579 / Kernel plumbing that any non-trivial validator pays.

Cost projection on Arbitrum mainnet

ComponentEstimateNotes
L2 execution (~751K gas)~$0.04At 0.05 gwei L2 gas price
L1 data posting (~5.5 KB calldata)$2–8Dominant cost; varies with L1 gas price
Total per PQ transaction$2–8Within the $10 design target

L1 data is the dominant cost driver. A 3,309-byte ML-DSA signature plus a 1,952-byte public key in calldata is roughly two orders of magnitude more expensive than the L2 execution cost.

One-time setup costs

OperationGasNotes
Install PQ validator module~1,570,000Kernel.installModule(TYPE_VALIDATOR, pqValidator, initData)
Grant selector access~346,000Kernel.grantAccess(pqValidationId, execute.selector, true)

Both setup operations are ECDSA-signed UserOps from the account's root validator. PQ security takes effect for transactions submitted after this setup.

Data sizes

PropertyECDSAML-DSA-65Ratio
Signature65 B3,309 B51×
Public key64 B1,952 B31×
WASM binary (gzipped)7.8 KBStylus limit: 24 KB compressed

The calldata weight of every PQ UserOp is roughly 5–6 KB once the signature, public key, gas fields, and the rest of the UserOp envelope are included.

Measured breakdown

From end-to-end traces on a local Nitro devnode:

Component Gas (measured)
──────────────────────────────────────────────────────
ML-DSA verification (Stylus) 374,000
Kernel routing + module dispatch ~377,000
──────────────────────────────────────────────────────
PQ UserOp total (ETH transfer) 751,312

For comparison:
ECDSA UserOp (same operation) 202,816

Product implications

  • Average users on Arbitrum mainnet will see $2–8 per PQ transaction at today's L1 gas prices. Acceptable for moving assets; unacceptable for high-frequency interactions.
  • Hot wallets / day-to-day spending are better served by a non-root ECDSA validator with PQ as a gate on selected high-value selectors.
  • Vault / cold storage is a natural fit — low transaction count, high asset value per transaction.
  • Future cost trajectory is driven mostly by L1 calldata pricing (EIP-4844 blobs and follow-ons). Stylus execution cost is already near a floor for this workload.

Cost-reduction levers not yet applied

  • Calldata compression — at least 2× to be had on the signature side with bit-packed encodings, at the cost of an off-chain decompression step.
  • Rollup-level UserOp batching — a shared verifier could amortize plumbing costs across many users.
  • Blob calldata — once EIP-4844 blob calldata is consumable from L2s and the bundler ecosystem supports it for UserOps, PQ signatures can ride in blob space at a fraction of current L1 cost.