Skip to content

chore: remove UniswapX v4 from main - #378

Open
gretzke wants to merge 1 commit into
mainfrom
remove-v4
Open

chore: remove UniswapX v4 from main#378
gretzke wants to merge 1 commit into
mainfrom
remove-v4

Conversation

@gretzke

@gretzke gretzke commented Aug 24, 2026

Copy link
Copy Markdown

UniswapX v4 was never deployed to any mainnet and is in no tagged release. It is not in use, so it comes off main and moves to a backup branch.

Backup branch

The full v4 history and code stay on archive/uniswapx-v4, at commit fd6022568ebeb761008fcc68d5b5a417e0e0a815. That is the state of main before this PR, so nothing is lost. To read a removed file:

git show archive/uniswapx-v4:src/v4/resolvers/HybridAuctionResolver.sol

What this removes

  • All of src/v4/ and all of test/v4/.
  • script/DeployV4QuoterAndTokenTransferHook.s.sol.
  • src/sample-executors/V4UniversalRouterExecutor.sol and its test. This one is UniswapX v4, not Uniswap AMM v4. It imports src/v4/interfaces/IReactor.sol and src/v4/base/ReactorStructs.sol.
  • Four gas snapshots whose only producer contract lived under test/v4/: ReactorTest.json, DCALibGasTest.json, PriorityAuctionResolverTest.json and UnifiedReactorTest.json. The last one arrived with the v4 feature commit (feat: UniswapX V4; DCA Hook聽#331) and its producer contract was later renamed to ReactorTest, so it was already orphaned.

What this edits

test/util/PermitSignature.sol is shared with the v1, v2 and v3 tests. This PR removes the four v4 imports, the v4 type hashes, and the signOrder overloads for PriorityOrderV2, OrderInfoV2, MockOrder and HybridOrder. Everything the surviving tests use stays. _domainSeparatorV4 also stays, because the v4 in that name is the EIP-712 domain version, not UniswapX v4.

Verification

forge build passes with no errors. forge test gives 429 passed and 1 failed. The failure is ERC20ETHIntegrationTest.setUp with vm.getCode: no matching artifact found. It reproduces on unmodified main, so this PR does not cause it.

No surviving file under src, test or script, and neither foundry.toml nor remappings.txt, still refers to a removed path or symbol.

Left alone on purpose

playbook/ is untouched. Almost every v4 mention there is the Uniswap AMM PoolManager rather than UniswapX v4. One line in playbook/chains/robinhood.md does point at the removed HybridAuctionResolver, but that file is a dated rollout runbook kept as a record of what was true at the time.

Separate issue found while doing this

.github/workflows/audit-agent.yml points the Nethermind quick scan at src/v4/**, which stops existing after this PR. I left the file untouched, because the scan path is not the real problem. The file has a duplicated - name: Quick Scan key that makes the YAML invalid, and every run has failed after 0 seconds for at least the last two weeks. Fixing the YAML and picking a new scan path both need a decision from whoever owns that integration, so neither belongs in a deletion PR.

v4 was never deployed to any mainnet and is in no tagged release. The code
is preserved on the archive/uniswapx-v4 branch.

Removes src/v4, test/v4, the v4 quoter deploy script, the v4 sample executor
and its test, and four orphaned gas snapshots. Drops the v4-only imports and
signing helpers from test/util/PermitSignature.sol.
@gretzke
gretzke requested a review from codyborn August 24, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants