blockulator

A scenario is a calculation protocols really run (daily interest, a loan, a bonding curve) repeated N times in each library's own number format. Each result is compared with the same loop in 300-digit arithmetic, and the score is how many digits are still correct. After 10,000 days of daily compounding, BL19 keeps 67.4 digits, BL127 34.8 and Solady 14.8.

Floating pointFixed point
scenario · median digitsBL19QuadBL12764.64SoladySolmatePRB SDPRB UDsnekBalancerOZUniswapMakerAaveMorphoFraxEuler
Daily compound interest67.429.934.815.614.814.814.814.814.814.814.814.823.3————
Compound interest in one pow67.430.434.815.214.214.213.013.014.215.2———————
Square-root bonding curve70.230.440.621.320.120.120.120.120.118.120.1——————
exp(ln(x)) round trip71.328.938.815.014.114.112.912.914.114.0———————
Amortising loan64.625.731.212.011.911.911.911.911.911.911.911.9—————
Running geometric mean71.333.138.518.917.617.616.916.917.617.6———————
Black-Scholes d1 along a price path68.030.137.018.217.317.316.816.817.317.7———————
Cumulative product of small factors69.029.934.815.514.214.214.214.214.214.214.214.2—————
Annual compounding at 10% for 10,000 years67.429.735.616.821.321.321.321.321.321.321.321.327.4————
Per-second accrual71.224.829.810.19.09.08.08.09.09.4——18.3————
Continuous accrual71.233.237.218.118.018.017.717.718.017.9———1.21.2——
An option walking out of the money66.228.025.26.64.54.54.5—4.54.5———————
Decay, the share released59.922.226.77.57.27.25.9—7.27.2———————
An adaptive rate after an idle period71.333.829.610.59.29.29.29.29.29.2—————1.22.4

Median correct digits at N = 10,000 over each scenario's inputs, each capped at what the library's format holds at that size (BL19 71.3, binary128 34.0, a fixed-point library its last place). A dash means the library has no model for the scenario or reverted on every input. Per-second accrual is BL127's lowest score because a per-second rate rounded to 2−128 holds about 29 digits; against the rate as stored, BL127 keeps 40. BL127Lib returns the same words as BL127, so it is not shown. Hover a cell for detail; the ladder has every N from 1.

BL127's and BL19's deployed contracts checked live on Sepolia: 1,913 results at block 12,017,732, 0 mismatches. The other libraries' results reproduce locally with make ladder. 2026-10-29, runner 0x7683126a…. Re-run: uv run scripts/ladder/livecap.py