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.