{
  "blocked": null,
  "sources": [
    {
      "url": "https://gist.github.com/dicethedev/0ef000b2e9d7624621a95ab11753a3bc",
      "author": "dicethedev",
      "date": "2026-06-03T15:48:00Z",
      "holds": "NoiseAMMStrategy.sol, one revision cb7cf1c21bf14233e5afb3faaebc6ef6ec4f08c3. Full dynamic fee contract with afterSwap; no rank or score claim. Author from gist owner; timestamp and raw revision from https://api.github.com/users/dicethedev/gists?per_page=100."
    },
    {
      "url": "https://medium.com/@crypto_algebra/amm-fee-challenge-notes-from-our-run-on-optimization-arena-4e980dbbd699",
      "author": "Algebra",
      "date": "2026-03-27",
      "holds": "Entrant prose write-up; claims peak rank 9/654 and rank 12 at writing. No Solidity implementation, estimator equations or tuned constants published in the article."
    },
    {
      "url": "https://hackmd.io/6i1LNsRGRJ27YqTHjfO04A",
      "author": null,
      "date": null,
      "holds": "Uniswap Dynamic Fee Strategy theory note: asymmetric fees, reflected mispricing process and proposed analytic/RL best responses. No submitted policy, Solidity file, rank or score established by this note."
    }
  ],
  "mechanisms": [
    {
      "name": "Noise Volatility Plus: inventory-skewed trade/flow/volatility fee",
      "rule": "Exact integer arithmetic, all fee quantities in bps. R=floor(X*1e18/Y); R0 uses initial reserves. I=min(10000,floor(abs(R-R0)*10000/R0)), or 0 if either initial or current reserve is zero. M=min(10000,floor(abs(R-Rprev)*10000/Rprev)), or 0 if either ratio is zero. V=min(10000,floor((floor(amountX*10000/X)+floor(amountY*10000/Y))/2)), treating a zero-reserve component as 0. E=floor((5*Eprev+M)/6). S=1 on direction change, otherwise min(12,Sprev+1). G=timestamp-lastTimestamp when positive, else 1. D=35+floor(122*I/10000)+floor(9*E/100)+floor(7*V/100)+8*(S-1)+[G>5]*2*min(G,25)+[V>145 or M>125]*21+[V>330 or M>270]*23. If D<Dprev, replace D by floor((2*Dprev+D)/3); then cap at 122. K=floor(52*I/10000). If R>R0, bid=D+K and ask=discount(D,13+K); if R<R0, ask=D+K and bid=discount(D,13+K); otherwise both=D. discount(f,d)=16 if d>=f, otherwise f-d. Floor both sides at 16 and convert via bpsToWad/clampFee. Initial fees 35/35. Slots 0,1 initial X,Y; 2,3 previous X,Y (written); 4 Dprev; 5 timestamp; 6 direction bit and streak; 7 Rprev; 8 Eprev. Initialization sets previous reserves equal to initial reserves, Dprev=35, timestamp=0, streak=0, Rprev=R0, Eprev=0. No explicit arb/retail label or external fair-price estimator occurs in this source.",
      "quote": "uint256 private constant BASE_FEE_BPS = 35;",
      "url": "https://gist.githubusercontent.com/dicethedev/0ef000b2e9d7624621a95ab11753a3bc/raw/cb7cf1c21bf14233e5afb3faaebc6ef6ec4f08c3/NoiseAMMStrategy.sol",
      "board": null
    },
    {
      "name": "Algebra: environment estimates plus immediate asymmetric protection",
      "rule": "The author describes estimates of volatility, retail flow, arbitrage probability and normalizer behavior; immediate price signals set directional protection. Fees increase toward the external price after retail displaces the pool. Within-step ordering is handled probabilistically. No formula, state layout, coefficients, thresholds, decay or estimator initialization disclosed.",
      "quote": "Arbitrage could only be the first trade in a block.",
      "url": "https://medium.com/@crypto_algebra/amm-fee-challenge-notes-from-our-run-on-optimization-arena-4e980dbbd699",
      "board": {
        "peak_rank": 9,
        "participants": 654,
        "rank_at_writing": 12,
        "score": null,
        "status": "author claim, not independently verified"
      }
    },
    {
      "name": "HackMD: proposed asymmetric best-response pricing (theory only)",
      "rule": "Controls gamma_plus=1-f_plus for trader buys and gamma_minus=1-f_minus for trader sells. Proposes optimizing expected total edge over the pair, either through first-order conditions assuming a mispricing distribution, or a DQN/PPO agent with continuous fee-pair actions and realized edge reward. No implemented state, constants or evaluated policy given.",
      "quote": "optimal liquidity provision often requires asymmetric pricing to manage inventory or respond to directional volatility.",
      "url": "https://hackmd.io/6i1LNsRGRJ27YqTHjfO04A",
      "board": null
    }
  ],
  "files": [
    {
      "url": "https://gist.githubusercontent.com/dicethedev/0ef000b2e9d7624621a95ab11753a3bc/raw/cb7cf1c21bf14233e5afb3faaebc6ef6ec4f08c3/NoiseAMMStrategy.sol",
      "sha256": "9f7abe2656f2a04fec61f3191cb817fc06c1c444511017d9ea646134859000c3",
      "valid": true,
      "validation": "amm-match validate: Strategy 'Noise Volatility Plus' validated successfully!",
      "d32": -147.17996286976586,
      "paired32": {
        "n": 32,
        "mean_diff": -147.17996286976586,
        "se": 6.324947049325078,
        "worst": [
          {
            "seed": 900025,
            "d": -235.4149055503808
          },
          {
            "seed": 900013,
            "d": -210.7768643150937
          },
          {
            "seed": 900029,
            "d": -203.5820829621565
          },
          {
            "seed": 900004,
            "d": -199.34485202212755
          },
          {
            "seed": 900028,
            "d": -196.25396976894035
          }
        ]
      },
      "oog": 0,
      "gas32": {
        "max_ok": 117425,
        "oog": 0,
        "afterInitialize_max_ok": 161253,
        "raw": [
          {
            "role": "Submission",
            "callback": "afterInitialize",
            "calls": 32,
            "ok": 32,
            "max_ok_gas": 161253,
            "sum_ok_gas": 5160096,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "afterSwap",
            "calls": 168559,
            "ok": 168559,
            "max_ok_gas": 117425,
            "sum_ok_gas": 11011560506,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "getName",
            "calls": 32,
            "ok": 32,
            "max_ok_gas": 21543,
            "sum_ok_gas": 689376,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          }
        ]
      }
    }
  ],
  "top3": [
    {
      "sha256": "9f7abe2656f2a04fec61f3191cb817fc06c1c444511017d9ea646134859000c3",
      "url": "https://gist.githubusercontent.com/dicethedev/0ef000b2e9d7624621a95ab11753a3bc/raw/cb7cf1c21bf14233e5afb3faaebc6ef6ec4f08c3/NoiseAMMStrategy.sol",
      "paired": {
        "n": 256,
        "mean_diff": -142.66111552699903,
        "se": 2.1642875468927034,
        "worst": [
          {
            "seed": 901169,
            "d": -294.8720385305972
          },
          {
            "seed": 901124,
            "d": -270.8454634227371
          },
          {
            "seed": 901241,
            "d": -258.243503439503
          },
          {
            "seed": 901095,
            "d": -257.8361172114463
          },
          {
            "seed": 901105,
            "d": -236.67495937942346
          }
        ]
      },
      "retail_edge_delta": -53.72315855290897,
      "arb_edge_delta": -88.93795697409006,
      "retail_edge_delta_se": 0.6257164369107481,
      "arb_edge_delta_se": 2.342533783186587,
      "gas": {
        "max_ok": 117507,
        "oog": 0,
        "afterInitialize_max_ok": 161253,
        "raw": [
          {
            "role": "Submission",
            "callback": "afterInitialize",
            "calls": 256,
            "ok": 256,
            "max_ok_gas": 161253,
            "sum_ok_gas": 41280768,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "afterSwap",
            "calls": 1372791,
            "ok": 1372791,
            "max_ok_gas": 117507,
            "sum_ok_gas": 89657257244,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "getName",
            "calls": 256,
            "ok": 256,
            "max_ok_gas": 21543,
            "sum_ok_gas": 5515008,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          }
        ]
      },
      "mechanism": "Noise Volatility Plus: inventory-skewed trade/flow/volatility fee",
      "valid": true
    }
  ],
  "code": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {AMMStrategyBase} from \"./AMMStrategyBase.sol\";\nimport {TradeInfo} from \"./IAMMStrategy.sol\";\n\n/// @title Noise Volatility Plus Strategy\n/// @notice Dynamic AMM fee strategy tuned for volatility protection with controlled retail capture.\ncontract Strategy is AMMStrategyBase {\n    uint256 private constant LOCAL_WAD = 1e18;\n    uint256 private constant BPS_DENOMINATOR = 10_000;\n\n    uint256 private constant BASE_FEE_BPS = 35;\n    uint256 private constant MIN_FEE_BPS = 16;\n    uint256 private constant MAX_TARGET_FEE_BPS = 122;\n\n    uint256 private constant INVENTORY_WEIGHT = 122;\n    uint256 private constant FLOW_WEIGHT = 8;\n    uint256 private constant VOLUME_WEIGHT = 7;\n    uint256 private constant VOL_WEIGHT = 9;\n    uint256 private constant GAP_WEIGHT = 2;\n    uint256 private constant REBALANCE_DISCOUNT_BPS = 13;\n\n    /// @notice Initialize the strategy with starting reserves.\n    function afterInitialize(uint256 initialX, uint256 initialY)\n        external\n        override\n        returns (uint256 bidFee, uint256 askFee)\n    {\n        slots[0] = initialX;\n        slots[1] = initialY;\n        slots[2] = initialX;\n        slots[3] = initialY;\n        slots[4] = BASE_FEE_BPS;\n        slots[5] = 0;\n        slots[6] = 0;\n        slots[7] = _ratio(initialX, initialY);\n        slots[8] = 0;\n\n        uint256 fee = bpsToWad(BASE_FEE_BPS);\n        return (fee, fee);\n    }\n\n    /// @notice Called after each trade to update bid and ask fees.\n    function afterSwap(TradeInfo calldata trade)\n        external\n        override\n        returns (uint256 bidFee, uint256 askFee)\n    {\n        uint256 previousFeeBps = slots[4] == 0 ? BASE_FEE_BPS : slots[4];\n        uint256 gap = trade.timestamp > slots[5] ? trade.timestamp - slots[5] : 1;\n        (uint256 dynamicBps, uint256 imbalanceBps, uint256 volEmaBps) =\n            _nextDynamicFeeBps(trade, previousFeeBps, gap);\n\n        (uint256 bidBps, uint256 askBps) = _skewFees(dynamicBps, imbalanceBps, trade.reserveX, trade.reserveY);\n\n        slots[2] = trade.reserveX;\n        slots[3] = trade.reserveY;\n        slots[4] = dynamicBps;\n        slots[5] = trade.timestamp;\n        slots[7] = _ratio(trade.reserveX, trade.reserveY);\n        slots[8] = volEmaBps;\n\n        return (clampFee(bpsToWad(bidBps)), clampFee(bpsToWad(askBps)));\n    }\n\n    /// @notice Get the strategy name for display.\n    function getName() external pure override returns (string memory) {\n        return \"Noise Volatility Plus\";\n    }\n\n    function _nextDynamicFeeBps(TradeInfo calldata trade, uint256 previousFeeBps, uint256 gap)\n        private\n        returns (uint256 dynamicBps, uint256 imbalanceBps, uint256 volEmaBps)\n    {\n        uint256 volumeBps = _tradeSizeBps(trade.amountX, trade.reserveX, trade.amountY, trade.reserveY);\n        uint256 ratioMoveBps = _ratioMoveBps(trade.reserveX, trade.reserveY);\n        volEmaBps = ((slots[8] * 5) + ratioMoveBps) / 6;\n\n        uint256 sameSidePressure = _updateFlowPressure(trade.isBuy);\n        imbalanceBps = _inventoryImbalanceBps(trade.reserveX, trade.reserveY);\n\n        dynamicBps = BASE_FEE_BPS;\n        dynamicBps += (imbalanceBps * INVENTORY_WEIGHT) / BPS_DENOMINATOR;\n        dynamicBps += (volEmaBps * VOL_WEIGHT) / 100;\n        dynamicBps += (volumeBps * VOLUME_WEIGHT) / 100;\n\n        if (sameSidePressure > 1) {\n            dynamicBps += (sameSidePressure - 1) * FLOW_WEIGHT;\n        }\n\n        if (gap > 5) {\n            uint256 cappedGap = gap > 25 ? 25 : gap;\n            dynamicBps += cappedGap * GAP_WEIGHT;\n        }\n\n        if (volumeBps > 145 || ratioMoveBps > 125) {\n            dynamicBps += 21;\n        }\n        if (volumeBps > 330 || ratioMoveBps > 270) {\n            dynamicBps += 23;\n        }\n\n        if (dynamicBps < previousFeeBps) {\n            dynamicBps = ((previousFeeBps * 2) + dynamicBps) / 3;\n        }\n\n        if (dynamicBps > MAX_TARGET_FEE_BPS) {\n            dynamicBps = MAX_TARGET_FEE_BPS;\n        }\n    }\n\n    function _skewFees(uint256 dynamicBps, uint256 imbalanceBps, uint256 reserveX, uint256 reserveY)\n        private\n        view\n        returns (uint256 bidBps, uint256 askBps)\n    {\n        bidBps = dynamicBps;\n        askBps = dynamicBps;\n\n        uint256 initialX = slots[0];\n        uint256 initialY = slots[1];\n        if (initialX == 0 || initialY == 0 || reserveX == 0 || reserveY == 0) {\n            return (_floorFee(bidBps), _floorFee(askBps));\n        }\n\n        uint256 currentRatio = (reserveX * LOCAL_WAD) / reserveY;\n        uint256 targetRatio = (initialX * LOCAL_WAD) / initialY;\n        uint256 skew = (imbalanceBps * 52) / BPS_DENOMINATOR;\n\n        if (currentRatio > targetRatio) {\n            bidBps += skew;\n            askBps = _discount(askBps, REBALANCE_DISCOUNT_BPS + skew);\n        } else if (currentRatio < targetRatio) {\n            askBps += skew;\n            bidBps = _discount(bidBps, REBALANCE_DISCOUNT_BPS + skew);\n        }\n\n        return (_floorFee(bidBps), _floorFee(askBps));\n    }\n\n    function _updateFlowPressure(bool isBuy) private returns (uint256 pressure) {\n        uint256 encoded = slots[6];\n        bool previousIsBuy = encoded >> 255 == 1;\n        uint256 streak = encoded & type(uint128).max;\n\n        if (streak == 0 || previousIsBuy != isBuy) {\n            streak = 1;\n        } else if (streak < 12) {\n            streak += 1;\n        }\n\n        slots[6] = (isBuy ? (uint256(1) << 255) : 0) | streak;\n        return streak;\n    }\n\n    function _inventoryImbalanceBps(uint256 reserveX, uint256 reserveY) private view returns (uint256) {\n        uint256 initialX = slots[0];\n        uint256 initialY = slots[1];\n        if (initialX == 0 || initialY == 0 || reserveX == 0 || reserveY == 0) {\n            return 0;\n        }\n\n        uint256 currentRatio = (reserveX * LOCAL_WAD) / reserveY;\n        uint256 targetRatio = (initialX * LOCAL_WAD) / initialY;\n        uint256 diff = currentRatio > targetRatio ? currentRatio - targetRatio : targetRatio - currentRatio;\n\n        uint256 imbalance = (diff * BPS_DENOMINATOR) / targetRatio;\n        return imbalance > BPS_DENOMINATOR ? BPS_DENOMINATOR : imbalance;\n    }\n\n    function _ratioMoveBps(uint256 reserveX, uint256 reserveY) private view returns (uint256) {\n        uint256 previousRatio = slots[7];\n        uint256 currentRatio = _ratio(reserveX, reserveY);\n        if (previousRatio == 0 || currentRatio == 0) {\n            return 0;\n        }\n\n        uint256 diff = currentRatio > previousRatio\n            ? currentRatio - previousRatio\n            : previousRatio - currentRatio;\n        uint256 moveBps = (diff * BPS_DENOMINATOR) / previousRatio;\n\n        return moveBps > BPS_DENOMINATOR ? BPS_DENOMINATOR : moveBps;\n    }\n\n    function _ratio(uint256 reserveX, uint256 reserveY) private pure returns (uint256) {\n        if (reserveX == 0 || reserveY == 0) {\n            return 0;\n        }\n\n        return (reserveX * LOCAL_WAD) / reserveY;\n    }\n\n    function _tradeSizeBps(uint256 amountX, uint256 reserveX, uint256 amountY, uint256 reserveY)\n        private\n        pure\n        returns (uint256)\n    {\n        uint256 xBps = reserveX == 0 ? 0 : (amountX * BPS_DENOMINATOR) / reserveX;\n        uint256 yBps = reserveY == 0 ? 0 : (amountY * BPS_DENOMINATOR) / reserveY;\n        uint256 sizeBps = (xBps + yBps) / 2;\n\n        return sizeBps > BPS_DENOMINATOR ? BPS_DENOMINATOR : sizeBps;\n    }\n\n    function _discount(uint256 feeBps, uint256 discountBps) private pure returns (uint256) {\n        if (discountBps >= feeBps) {\n            return MIN_FEE_BPS;\n        }\n\n        return feeBps - discountBps;\n    }\n\n    function _floorFee(uint256 feeBps) private pure returns (uint256) {\n        if (feeBps < MIN_FEE_BPS) {\n            return MIN_FEE_BPS;\n        }\n\n        return feeBps;\n    }\n}\n",
  "sha256": "9f7abe2656f2a04fec61f3191cb817fc06c1c444511017d9ea646134859000c3",
  "notes": {
    "search_date": "2026-11-09",
    "searched": [
      "Exact strings AMMStrategyBase, afterSwap(TradeInfo and amm-challenge, with site filters for gist.github.com, gist.githubusercontent.com, gitlab.com, codeberg.org and huggingface.co.",
      "Paste/blog searches on hackmd.io, medium.com, pastebin.com, paste.ee, paste.rs, rentry.co and substack.com; broad exact-string searches excluding GitHub repositories and IMD mirrors.",
      "Fetched dicethedev gist list through GitHub public API and pinned the sole Solidity gist revision; inspected only source data, never executed author scripts."
    ],
    "not_found": [
      "No additional qualifying entrant Solidity strategy located outside the fork network. top3 therefore contains one file, not three invented entries.",
      "No qualifying strategy located on GitLab, Codeberg or Hugging Face using these web queries; this is a search result, not proof of absence. Codeberg requests through the web tool were robots-blocked.",
      "No score/rank or board identity found for Noise Volatility Plus. No evidence this gist was submitted to the board.",
      "Official tutorial Spread After Big Trades and ammvisualizer.com Baseline-30bps are examples, not located entrant solutions, and excluded from candidate ranking.",
      "No new top-10-quality public code found; the only located entrant-style file substantially loses to RS2."
    ],
    "measurement": {
      "simulator_commit": "6b6921f8d463314aa7c96234e1be25a25245f704",
      "wheel_sha256": "aedb68280aca34c110968f00148387c95885207913fb2cf19a1ab4c5cfd6887a",
      "setup": "Supplied setup script run once; wheel hash verified; StarterStrategy validate passed.",
      "method_url": "https://api.imd.fun/artifacts/33f54e81f3372088e9eced52c0174f310ac348af98ef5727b73785c088679194",
      "reference_url": "https://api.imd.fun/artifacts/19f2ec857df536e8ab62ab1da89ec6623332521ce46849f15bccff402c63e1e5",
      "reference_sha256": "f24b6ca198b744c380842c3a17964a6dc21f311bb04984b26733afa3fee8eaf2",
      "screen_seeds": [
        900000,
        900031
      ],
      "followup_seeds": [
        901000,
        901255
      ],
      "comparison": "Each arm separately vs VanillaStrategy; run_batch(candidate,Vanilla,configs,8) and run_batch(RS2,Vanilla,configs,8), chunks of 20. No tuning and no seeds >=5000000. default_rng(seed) draws size U(19,21), rate U(.6,1), sigma U(.000882,.001008), in that order; 10000 steps, price seed=seed, retail seed=seed+1. Paired SE uses sample std(ddof=1)/sqrt(n); worst lists five lowest per-seed differences.",
      "decomposition": "Supplied harness reconstructs each step arb edge from previous spot/fees and true fair price; retail=total-arb. Initial fee adjusted to .0035 for Noise and .0004 for RS2. max_ok reports afterSwap; initialization maximum reported separately. gas_stats reset per chunk and summed/maximized per arm; any halt invalidates.",
      "reconciliation_max_abs": 1.1368683772161603e-13,
      "reference_gas32": {
        "max_ok": 197184,
        "oog": 0,
        "afterInitialize_max_ok": 243099,
        "raw": [
          {
            "role": "Submission",
            "callback": "afterInitialize",
            "calls": 32,
            "ok": 32,
            "max_ok_gas": 243099,
            "sum_ok_gas": 7779168,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "afterSwap",
            "calls": 334336,
            "ok": 334336,
            "max_ok_gas": 197184,
            "sum_ok_gas": 39335592284,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "getName",
            "calls": 32,
            "ok": 32,
            "max_ok_gas": 21607,
            "sum_ok_gas": 691424,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          }
        ]
      },
      "reference_gas256": {
        "max_ok": 202386,
        "oog": 0,
        "afterInitialize_max_ok": 243099,
        "raw": [
          {
            "role": "Submission",
            "callback": "afterInitialize",
            "calls": 256,
            "ok": 256,
            "max_ok_gas": 243099,
            "sum_ok_gas": 62233344,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "afterSwap",
            "calls": 2678625,
            "ok": 2678625,
            "max_ok_gas": 202386,
            "sum_ok_gas": 315113268856,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "getName",
            "calls": 256,
            "ok": 256,
            "max_ok_gas": 21607,
            "sum_ok_gas": 5531392,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          }
        ]
      },
      "candidate_mean_edge32": 395.1852126857666,
      "reference_mean_edge32": 542.3651755555325,
      "candidate_mean_edge256": 391.0740437122926,
      "reference_mean_edge256": 533.7351592392916,
      "calibration": {
        "n": 1000,
        "mean_edge": 525.5258821780834,
        "gas": [
          {
            "role": "Baseline",
            "callback": "afterInitialize",
            "calls": 1000,
            "ok": 1000,
            "max_ok_gas": 21796,
            "sum_ok_gas": 21796000,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Baseline",
            "callback": "afterSwap",
            "calls": 10741746,
            "ok": 10741746,
            "max_ok_gas": 22592,
            "sum_ok_gas": 242365461576,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Baseline",
            "callback": "getName",
            "calls": 1000,
            "ok": 1000,
            "max_ok_gas": 21526,
            "sum_ok_gas": 21526000,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "afterInitialize",
            "calls": 1000,
            "ok": 1000,
            "max_ok_gas": 185532,
            "sum_ok_gas": 185532000,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "afterSwap",
            "calls": 10445223,
            "ok": 10445223,
            "max_ok_gas": 151647,
            "sum_ok_gas": 811927105393,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          },
          {
            "role": "Submission",
            "callback": "getName",
            "calls": 1000,
            "ok": 1000,
            "max_ok_gas": 21530,
            "sum_ok_gas": 21530000,
            "oog": 0,
            "revert": 0,
            "other_halt": 0,
            "tx_error": 0,
            "bad_return": 0
          }
        ],
        "url": "https://raw.githubusercontent.com/ChengHua926/amm-challenge/d34a5199c59a4c44d5336a25f1436b4ae1f21104/contracts/src/Strategy.sol",
        "seeds": [
          0,
          999
        ]
      }
    },
    "source_limits": "Algebra and HackMD are contextual prose/theory, not measured code. Algebra Medium page was readable with the web tool; a separate direct curl returned HTTP 403. No current board standings inferred from historical author claims."
  }
}