# ρ*: the measured exchange rate between calldata and execution, and the door it chooses

> Canonical: https://blazephoenix.xyz/learn/rho-star-gas-economics
> License: CC BY 4.0 (attribution + link) · © 2026 BlazePhoenix
> Updated: 2026-08-26



The Router exposes more than one way in: entries that accept a pre-computed route in calldata, and an entry that derives the route inside the executing transaction. Which is cheaper? The question sounds like it needs a benchmark per chain per route per market mood. It does not. It reduces to one scalar, because the cost of an EVM transaction is affine and separable.

> equation: cost=21000+bytes&#183;pbyte+gas&#183;pgas — Two terms, two prices, no cross-terms: no mechanism in the EVM touches both. Transient storage only moves storage costs, access lists only cold-access costs, compression only bytes. The whole calldata-versus-execution trade is therefore a comparison between one measured slope and one live price.

## ρ*, measured

Define ρ* as the execution gas one byte of calldata buys on this engine: how much execution the in-frame solve spends to avoid carrying the route as data. Measured with the public EquationBench harness in the release profile, ρ* runs 66.9 gas per byte on single-leg routes to 105.5 on four- and five-leg routes — whole transaction, not a micro-benchmark. The spread by route shape is itself information: bigger routes amortise the solve better per byte avoided.

Against ρ* stands each chain's byte price, and the engine does not take that number from documentation or a feed. It is read live from the chain's own fee predeploys — the OP-Stack gas-price oracle, Arbitrum's ArbGasInfo — with no key and no third party. The cost model is priced by the same class of on-chain measurement the engine prices everything else with.

## The rule, and what it says today

One comparison decides the door. Where the byte price is below ρ*, the calldata surface is the cheap door; where it is above, the in-frame solve is. On today's major L2s the data term of a swap is small — 0.9% of cost on Base, 3.4% on Arbitrum, 14% on Optimism at prices read live in August 2026 — which means execution is where the money goes. That is worth internalising, because a decade of folklore says the opposite: calldata golf mattered in 2021, and post-4844 it is noise on these chains. Nearly all of a swap's cost is execution — which is exactly where this engine's measured per-leg efficiency compounds.

The folklore fails hardest in the other direction. On ZK rollups that still pay data availability at calldata prices, the byte price is not small — it dominates. Measured on one such chain, the inequality flips outright: the in-frame solve, which carries almost no calldata, was 14 times cheaper end to end than the calldata door, on a real receipt where the L1 data fee was 98% of the total cost. The phrase after 4844, data is free is false precisely where it is most expensive to believe.

## Doors as a cost model made into an interface

This is why the Router's multiple entry surfaces are not a convenience feature. They are the affine cost model, made into an interface: one engine, one set of guarantees, and a measured scalar that says which door, per chain and per route shape. The calldata door can be trust-free because of monotone-input design — every caller-supplied field can tighten protection and never loosen it — so the route can be computed off-chain, by anyone, for free, without moving any trust off-chain with it.

And the choice is checkable by the reader, which is the house standard. ρ* comes from a public harness; the byte prices come from predeploys any wallet can call. Nothing in the paragraph above requires believing us — it requires one comparison between two numbers you can fetch yourself.

**Verify it yourself:** git clone https://github.com/blazephoenixxyz-crypto/Blaze-Phoenix-Dex && cd Blaze-Phoenix-Dex && forge test --match-path test/EquationBench.t.sol -vv  # ρ* per route shape; then read a live byte price: cast call 0x420000000000000000000000000000000000000F 'l1BaseFee()(uint256)' --rpc-url https://mainnet.base.org

Related: https://blazephoenix.xyz/learn/two-entry-points-calldata-trust · https://blazephoenix.xyz/learn/the-on-chain-engine · https://blazephoenix.xyz/learn/metrological-design · https://blazephoenix.xyz/learn/multihop-composition-limits
