Drag horizontally inside any chart to zoom. Block range controls and zoom are synchronized across all charts.
Posting cost: cost_wei(t_post) = l1GasUsed * (baseFee_t_post + priorityFee) + numBlobs_t_post * 131072 * blobBaseFee_t_post
Feedforward term: FF_t = alpha_gas * (baseFee_(t-d_ff) + priorityFee) + alpha_blob * blobBaseFee_(t-d_ff)
Derivative filter: de_t = epsilon_t - epsilon_(t-1), de_f_t = beta*de_f_(t-1) + (1-beta)*de_t
Feedback state: D_t = targetVault - vault_(t-d_fb), epsilon_t = D_t / targetVault, I_t = clamp(I_(t-1) + epsilon_t, Imin, Imax)
Fee law: P_t = max(pFloor, Kp*epsilon_t*(maxFee-minFee)); fee_t = clamp(FF_t + P_t + Ki*I_t*(maxFee-minFee) + Kd*de_f_t*(maxFee-minFee), minFee, maxFee)
EIP-1559 mode: error_t = clamp((targetVault - vault_t) / targetVault, -8, 1); fee_(t+1) = clamp(fee_t * (1 + error_t / denom), minFee, maxFee)
Arbitrum-style surplus pricer: surplus_t = vault_t - targetVault; desired'_t = -surplus_t / equilUnits; actual'_t = (surplus_t - surplus_(t-1)) / unitsAllocated; price_(t+1) = max(0, price_t + (desired'_t - actual'_t) * unitsAllocated / (equilUnits / inertia + unitsAllocated)); fee_t = clamp(price_t, minFee, maxFee)
blob model = fixed: numBlobs_t = fixedBlobsblob model = dynamic: numBlobs_t = max(minBlobs, ceil((batchOverhead + (l2GasPerProposal_t / txGas) * txBytes) / (compressionRatio * 131072 * blobUtilization)))auto alpha uses base throughput and selected blob model: alpha_gas = l1GasUsed / l2GasPerProposal_base, alpha_blob = (numBlobs_base * 131072) / l2GasPerProposal_baseEIP-1559 mode updates only on posting blocks and starts from minFeelow=0.7x, base=1.0x, high=1.4x(i + 1) % postEveryBlocks == 0; revenue settles to vault at post time