How did you integrate our partners, if any?

What are the key links to share? (Ex. demo video, GitHub, deck)

Github: https://github.com/RaymondAbiola/Impact-Rebated-Fees Slides: https://impact-rebated-fees.vercel.app/deck.html Project Link: https://impact-rebated-fees.vercel.app/ Demo Video: https://www.loom.com/share/920d6d2bf94d4078b7269a31e81ba8aa

Problem / Background: What inspired the idea? What problems are you solving?

A pool quotes one fee to everyone who touches it, but the flow it receives is not uniform. A small fraction of trades is responsible for most of what liquidity providers lose, and the rest of the market covers that cost through a fee kept high enough to absorb it.

What causes the loss is narrower than it first appears. If the price carries on moving in the same direction after a trade has settled, the pool was still quoting a stale number when that trader walked away, and it is about to be picked off again on the same mistake. Eventually the swap fees fail to cover this in most major pools.

Plenty of people have wanted to price that flow separately, including Uniswap, which has an open request for it. Every attempt so far tries to spot it in advance from volatility or a reference price, which is forecasting. That seemed backwards to me. At the moment of the trade there is genuinely nothing to see, because whatever the trader knew has not reached the price yet. A minute later it is obvious. So we let the swap happen, hold a deposit, and look back afterwards.

Impact: What makes this project unique? What impact will this make?

The goal is not new. What is new is where the decision sits. Every prior attempt prices a trade before it executes, using a forecast. This one lets the swap settle at the ordinary price and revisits it a minute later, when the answer is no longer a guess. Across the full nine cohort archive of Hook Incubator projects, nothing else settles a fee after the fact.

Getting there took one non obvious choice. The drift has to be measured from the price the swap left behind, not from the price the trader paid. Our first build used the latter and failed outright: across twenty six thousand replayed mainnet swaps it flagged fewer trades than random chance, because a trader's own price impact reverts and pulls everyone toward looking innocent. Moving the starting line removed that bias and the signal appeared.

On a week of real USDC ETH flow the measured effect is roughly a third more revenue for liquidity providers, with an expected cost of 0.71 basis points to a trader carrying no information. That combination is what makes tight fee tiers defensible on pairs currently too volatile to quote cheaply.

It also depends on nothing. No price feed, no keeper network, no off chain service, no partner integration. The pool's own recorded price is the entire input, so any pool can adopt it without inheriting someone else's uptime. The underlying pattern, holding a fee and settling it against what the market later did, is reusable well beyond this hook.

Challenges: What was challenging about building this project?

The hardest part was accepting that the first design did not work. I tested it offline against real mainnet swaps before writing any Solidity, and it came back worse than a coin flip. Working out why took longer than building it. The reference point I was measuring from carried a systematic bias, and the fix was separating a trade's own price impact from what the market did afterwards. Had I skipped that offline step, the broken version would have compiled, deployed, and passed every test I would have thought to write.

Deferred settlement is awkward on a chain. Nothing runs on its own, so a verdict sixty seconds later is not something a contract can schedule for itself. That forced a design where anyone can trigger settlement, a bounty makes it worth their while, and an expiry decides what happens when nobody ever bothers. Choosing which way to fail on an abandoned receipt took more thought than the classification did. Computing an average across a window the contract slept through also needed a cumulative counter rather than stored history, so that settlement cost stays flat however busy the pool has been.

Two bugs surfaced only after deploying. Forge routes hook deployment through the CREATE2 factory, so ownership quietly went to that factory rather than to me, leaving the admin functions unreachable. Separately, the hook sees the router as its caller rather than the trader, so refunds were being paid to a contract with no way to forward them. Neither showed up in tests. Both were obvious within a minute of reading live state back off the chain.

The last one was restraint. The parameter sweep contained settings with far better headline revenue, and I did not take them, because they charged ordinary traders three times as much.