# v2ramp free sell simulation (auditor2, 10 Oct 2026, board #636)
Script: /opt/crew/work/auditor2/v2sim.py (eth_call on rpcpool, no wallet, no money).
Method: (1) fresh holder gets token balance by state override, token.transfer(pair, amt) must succeed; (2) pair token balance overridden to include amt, pair.swap(out = constant-product with 0.3% fee) must succeed; (3) control: same swap asking 2x out must revert (proves the sim is not vacuous).
A swap passing the exact 0.3% K check means the pair received the full amount: no transfer tax/skim on the sell leg.

## v2ramp (v2 pairs)
| pair (age) | WETH reserve | sold | exp WETH | transfer | swap | control |
|---|---|---|---|---|---|---|
| facacd34..9efb Nova Cat (6 min, FRESH) | 2.10 | ~0.1 ETH worth | 0.0431 | ok | ok | reverts | **PASS** |
| a1f105bd.. (the "2.24x" pair, hours old) | 1.2e-6 | 1% supply | 1.1e-7 | ok | ok | reverts | mechanically PASS, pool empty |
| 33bc7255.. Froggo (48 min) | 1.9e-6 | | | ok | ok | reverts | mechanically PASS, pool empty |
| da7e60e2.. (3.35x winner, hours old) | 9e-7 | | | ok | ok | reverts | mechanically PASS, pool empty |
| 3d43e399.. Crazy Panda (18 min) | 1.05e-6 | | | ok | ok | reverts | mechanically PASS, pool empty |
| 9ced1701.. Meme Wizard (31 min) | 1.4e-5 | | | ok | ok | reverts | mechanically PASS, pool empty |
| 3d1ce0a7.. Moon Bear (36 min) | 3.9e-7 | | | ok | ok | reverts | mechanically PASS, pool empty |
Findings:
1. Sell leg is mechanically sellable on all 7 v2 pairs: token transfers into the pair, no tax, no blacklist. => No honeypot/skim. Verdict **PASS** for the sell mechanism.
2. NEW and important: every v2ramp pair older than ~15-20 min has its WETH drained to ~1e-6 (from 1.0 seed). Even the pairs that paper-exited at 2.6x were empty 18 min later. Liquidity is removed or fully dumped after the first minutes. Paper exit at +300 s(+12 s) is inside the live window (reserves there 1.3-2.0 WETH per the Sync data), so the result stands only if we are out before the drain. A late/failed sell = total loss. The sim cannot say WHEN the drain starts: post-exit drain time (first Sync with WETH<0.3) should be added to the test as a column. This is the real risk, not a honeypot.
3. The "no-seller pair" asked for: not separately identifiable by the sim; the 2.24x cluster a1f105 passes mechanically like the others.

## h100 / h3k (v4, sellsim jsonl, +60 s after init, 1% of supply via UniversalRouter)
- h3k: 144 trades, 102 sell_ok (71%); failures on pull exits (pool pulled) and tp.
- h100: 62 of 62 simulated trades sell_ok = **false**, revert data empty "0x" (hooks ending ...0144). h3k reverts carry data 0x4713c18b. This is NOT proof of a block: empty revert may be hook-type incompatibility with the sim (hook needs hookData or other path). But 0/62 means the h100 paper P&L (1.9-2.6x exits) is unproven on sellability. Checking real outside sells on h100 pools (job h100s.py) - result below if finished.
## Verdict
- v2ramp: sell mechanism PASS. Not setting verified=true yet: needs tx.from from dataeng and the drain-time column; Ben's real $5 test (#631) on a FRESH pair (< 10 min old, reserve > 1 WETH) is still the proof of fills.
- h100: FIX/HOLD - sellsim 0/62; need either an outside-sell count in h100 pools or a real $5 sell test.
