<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Revert</title>
        <link>https://paragraph.com/@revertfinance</link>
        <description>Actionable analytics for liquidity providers in AMM protocols</description>
        <lastBuildDate>Wed, 11 Nov 2026 15:27:37 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Revert</title>
            <url>https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/ea41dd23e4b6486e440272ffd774ea068f4b8f56423aba0b568b9fa8187603d5.png</url>
            <link>https://paragraph.com/@revertfinance</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Ekubo now live on Revert]]></title>
            <link>https://paragraph.com/@revertfinance/ekubo-now-live-on-revert</link>
            <guid>Wev2k5rBn74rDN6MvShF</guid>
            <pubDate>Mon, 24 Aug 2026 19:18:39 GMT</pubDate>
            <description><![CDATA[Revert now supports Ekubo on Ethereum mainnet, giving liquidity providers the analytics and position management tools needed to track PnL, compare pools, and manage super-concentrated positions.]]></description>
            <content:encoded><![CDATA[<p><strong>Revert now supports Ekubo concentrated-liquidity positions on Ethereum mainnet. </strong>Ekubo LPs can discover pools, track performance, and create or manage positions from the same interface.</p><h2 level="2" id="h-what-makes-ekubo-different">What makes Ekubo different</h2><p>Ekubo is a next-generation AMM built around what it calls “super-concentrated liquidity.” Its ticks are one-hundredth of a basis point—100 times finer than the convention used by most concentrated-liquidity AMMs. This gives liquidity providers unusually precise control over where their capital is deployed. Pool creators can also choose each pool’s fee and tick spacing instead of selecting from a small set of predefined configurations. Learn more about providing liquidity on Ekubo. (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ekubo.org/products/liquidity/">https://docs.ekubo.org/products/liquidity/</a>)<br><br>Underneath the markets is a highly optimized singleton Core contract. Every pool settles through the same Core, while flash accounting defers token transfers until the end of an interaction and settles only the net amounts. Ekubo’s extension system can introduce functionality such as TWAMMs, MEV capture, boosted fees, and oracle pools without requiring another copy of the underlying AMM. Read about Ekubo’s architecture. (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ekubo.org/concepts/architecture/">https://docs.ekubo.org/concepts/architecture/</a>)</p><p>That precision and flexibility give LPs more ways to express a market-making strategy—but they also make analytics and position management especially important.</p><p><strong>A purpose-built tooling for Ekubo LPs</strong></p><p>Concentrated liquidity gives LPs precise control over where their capital works. It also makes good tooling essential: returns depend on the range you choose, how price moves through it, the fees a pool generates, and how actively you manage the position.</p><p>Revert brings those decisions into one place. You can compare pools before deploying capital, follow a live position after you enter, and act without leaving the dashboard.</p><p><strong>What's live today</strong></p><p><strong>Pool discovery.</strong> Filter Discover to Ekubo and compare pools using liquidity, volume, fees, fee APR, and liquidity-distribution data.</p><p><strong>Position analytics.</strong> Track your Ekubo positions with PnL versus HODL, fee APR, divergence loss, current token balances, uncollected fees, and position history.</p><p><strong>Create and manage positions.</strong> Open a new position, add or withdraw liquidity, collect or compound fees, and change your range directly from Revert.</p><p><strong>Built for focused execution</strong></p><p>Position actions run through a dedicated EkuboUtils contract on Ethereum. When an action needs to rebalance tokens, the integration uses a 0x-only swap path with tightly scoped approvals. The deployed contract is verified on Etherscan:</p><p><a target="_blank" rel="noopener noreferrer" class="dont-break-out notion-link-token notion-focusable-token notion-enable-hover" href="https://etherscan.io/address/0x4Cf798c93280E2103Ae1186B4D4AB7E9CE93df9f#code">0x4Cf798c93280E2103Ae1186B4D4AB7E9CE93df9f</a></p><p>At launch, Revert supports Ekubo's standard concentrated-liquidity pools without extensions on Ethereum mainnet.</p><p><strong>Getting started</strong></p><p>Connect your wallet at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://revert.finance">revert.finance</a>, then open <a target="_blank" rel="noopener noreferrer" class="dont-break-out notion-link-token notion-focusable-token notion-enable-hover" href="https://revert.finance/#/discover?exchanges=ekubo&amp;page=1">Ekubo pools in Discover</a>. Your supported positions will also appear automatically on your dashboard.</p><p>Ekubo brings a new concentrated-liquidity design to Ethereum. Revert gives its LPs the analytics and controls to use it with more context.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <enclosure url="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/189ca4cc11879ea3b926a1bc6bc0483808ee87e5d7b8754cc4cd1af4ab9ca64f.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Finding the best AMM for LPs after fee-switches]]></title>
            <link>https://paragraph.com/@revertfinance/finding-the-best-amm-for-lps-after-fee-switches</link>
            <guid>fqxeouHDDCPyssjcJVWr</guid>
            <pubDate>Wed, 29 Jul 2026 20:59:04 GMT</pubDate>
            <description><![CDATA[A detailed comparison of fee returns for passive ETH/USDC liquidity positions across Base's five largest pools on Uniswap, Aerodrome, and PancakeSwap.]]></description>
            <content:encoded><![CDATA[<p>Uniswap's fee switch is on across the board on Uniswap v3 (though now also on Uniswap v4). The protocol takes a share of every LP's swap fees before they are ever credited to the position: 25% on the 0.05% tier and 16.7% on the 0.3%, the two Uniswap pools in this study. We measured what that took from the LPs who were already in those pools, position by position, in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://paragraph.com/@revertfinance/what-the-uniswap-fee-switch-actually-costs-lps">our previous piece</a>.</p><p>That answers what the fee costs existing LPs. It does not answer the question an LP asks next, which is "what is the best venue to LP at today?". A protocol take only means something next to what the pool pays before it, and on Base the same pair trades across venues whose fee mechanics have important differences: fixed fees, dynamic fees, emissions paid instead of fees, emissions paid on top of them. So we measured all of it, net of every venue's cut.</p><p>This is a like-for-like measurement of what a synthetic ETH/USDC liquidity position would have earned in each of the five largest WETH/USDC pools on Base: Uniswap v3's 0.05% and 0.3% pools, two Aerodrome Slipstream pools, and PancakeSwap v3's 0.01% pool. Same position size, same price ranges, same price path, never rebalanced, so what differs between the results is the pool rather than the LP running it.</p><p>Which pools, and why those. WETH/USDC trades on Base in dozens of them. These five cleared $23.5B between them over the last 90 days, <strong>94.7%</strong> of the volume among the WETH/USDC pools on that network.</p><p>What each pool charges in swap fees is less obvious than it sounds. On Uniswap v3 and PancakeSwap v3 the fee is a constant of the pool: a 0.05% pool charges 0.05% on every swap, for its whole life. Aerodrome Slipstream pools set the fee per swap through a configurable fee module, so no single number describes one, and the two Aerodrome pools here did not behave alike. Over these 90 days the fee volume actually paid was <strong>0.0110%</strong> in one of them and <strong>0.0439%</strong> in the other: same pair, same venue, four times the rate.</p><p>Swap fees are also not the only way these pools pay, and the three venues do not pay on the same terms. On Uniswap, swap fees are the whole of it. On Aerodrome, liquidity can be staked in a gauge, which takes 100% of the position's swap fees and pays AERO emissions instead: fees or emissions, never both. On PancakeSwap, the position can be deposited in the MasterChefV3 farm, which pays CAKE and leaves the swap fees with the position, forwarding them to the staker on collect. Fees and emissions. So a staked position means a different trade at each venue, and every row below says which. <br><br>No venue's marketing would write this piece. It is not an argument that one pool is better; it is a measurement of what dynamic fees, competing liquidity, and professional market makers do to a passive LP's revenue, and it is illustrative of the different factors at play.</p><p><strong>Window:</strong> 90 days to July 25, 2026 <br><strong>Network:</strong> Base <br><strong>Pools:</strong> five WETH/USDC pools across three venues  <br><strong>Position:</strong> $10,000 at four widths, never rebalanced<br><strong>Snapshot:</strong> July 25, 2026</p><h2 level="2" id="h-scope">Scope</h2><p><strong>Fee income for identical hypothetical positions.</strong> A $10,000 position at four widths (1.20x, 1.52x, 2.46x, and full range, where width is the ratio of upper to lower price bound), centered at each window's opening price and never touched. Every bound sits on the tick grid that is mintable on all five pools, whose spacings are 10, 60, 100, 50 and 1, so each simulated position is one you could actually open in any of them.</p><p><strong>Not total return.</strong> Divergence loss is common to identical ranges on the same pair over the same price path, so it cancels out of a venue comparison and fee income is the entire difference. Your own return includes it. The fee APRs here are net of each venue's protocol take and nothing else.</p><p><strong>Not LP skill, though other LPs still matter.</strong> Synthetic positions remove <em>our</em> LP's judgment from the measurement, as would be the case when comparing the real historic positions in each pool. What the synthetic positions earn still depends on how much other liquidity was active around the price at each moment, because that is what a fee share is. So what this measures is what each pool happened to offer one more passive dollar during these specific windows, not a fixed property of any venue. Run it over a different period, or against a different amount of competing liquidity, and the answer changes. </p><h2 level="2" id="h-method">Method</h2><p>Everything comes from raw on-chain events, processed by identical code for all three venues: every swap in the window (12.2 million of them) and every liquidity addition and removal in each pool's entire life (140.5 million events, 121 million of those in the first Aerodrome pool), which together reconstruct each pool's tick-by-tick liquidity map at every moment. Each swap is then walked step by step through that map the way the pool contract executes it, splitting at every initialized tick, with fees credited to the liquidity active in each step.</p><p>The fee is not assumed anywhere. Given exact pool state, the input a swap's observed price movement would require at zero fee is computable, and whatever the trader actually paid above that is the fee the pool charged. This recovers Aerodrome's dynamic fee swap by swap, through configuration changes and any discounts, without needing a published rate at all.</p><p>Emissions are measured two ways. Where a position's own tick bounds can be read straight off the pool's reward accumulator, the reading is exact, and that covers <strong>22 of the 36</strong> emissions figures here. The other <strong>14</strong> are integrated from the reward rate and the exact time the range held the price, which is a sampled estimate rather than an exact reading.</p><h2 level="2" id="h-what-each-pool-charged">What each pool charged</h2><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/3aa209e41ea4318517cf92dad63b011da52f6a93e211024be779dcef14cc355f.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAATCAIAAAB+9pigAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEWUlEQVR4nLVVTWzbZBh2G1e4IU7jxPFvHMdxbCdxm9hJnDROmiVNmzZp0qQ/6crWrj8SY520ThsSG1JBAgkuBQm0TtyYOCCkSZX4uwyEkNCQxt9OO8BlSIgjB7jswgU5n+myCugJ6dGr5/3sz+/7Pu/7fYYgD4Hx0umdy2F9XCvPKtlTcrZo1FpqoaqVZ7XyrFqoRoxiQNUhlw/yEMcA4/R/A4I8REBN//jb73d+ePDdz79+/dPD21989fCPR8D+8ujPz+4/+OTu9x98/iUT11g1xcQTFulxQoqfHADGaTcraNWGVm3oU5bVqg0lX8rMNuMTVcWs6FP2en19u76+XVpcnVnbmlnbKrSWsvW2k+JODgBieMMSyvAoI6CM4GYtoAwPiJsVnBQ3hDMowzspDtgeEXrbqX44fGQfoSEHRhFSfCQgugjOTfIuAIJzkXy/66YF2yW44097cNOCi+DI0Gg0XgxLWSlq8hED8bNWBd6wZOVIsCgVRKkg4mcRv83Rk9z+FSfFuekQxogeJgxgS9QbBlDg8XrhJ0Cf9MI/bLF78P8BAhU8BtqDy2cTxGvB5YMQL4xTCMla77h8kMsHcuw7EP9eARvXIoXSxMbqxMaZ8TNdvdNMLbRSC61otaJ3mlqzoTUbeqeZXpgfX+lyukHHkqF0zsdJvpDMjqWtMxHX8FB0JCDKSrGcXZww2sXMfDZdP2qy4gvJzFiKGdOZMd3oLohmUWs2YlPTymRFPlWJTU3rnSYhqx5GJGQ1nDVD6Vyq1VLKlWi1Ei1XlXJFnZ6JFErjK93i2ml1eia3tBTOmo97YFUNeywgXmgYt5WBPTYHtqdDn0RWwy0Z/1bJExLb13Yy3Vb72sW5q8/OXNryRhQrgAOjSDUxOlcrbqyQasKBWVrDOO1XYjBOA24lgfoh1H+shw7Mnq5BjAyN5zwhAXI8DTlQ6KkRCEbtChA/Ozo3e+XWm5v7e6/fee/VT9+9cmv/nfsf3rh3WNxY3dzfe/H2wfLe5Rv3DkP5PDSMOzDKgVFDOIOQgV5CNEIGoGG8sXux9tyl3PIaQLKxaK3DOB1Q01RMJ2MaGU1whimYJc4wO9d3uy89f/DNR+fffu3g24+333jFPPvMW3cP67s7E5vr2ZVleiwzsbn+wvs3OcOMlCaV6vTKy9eL61uxyaZaa6u1tlSs2QEwXnKS7CBGAkCo37JDXgdG+ZWoNyL7lRgmRKAhDyZESHVU69Qz3fnqhbVorcIkE4Vzy4Vzy3NXz09eOGspg/psuDBbIjFjMvHEkazgjgPSD2IkSvMIEQBaA3fAbSUx4CYRPzMSEGGMGnCTMEb1bkwF3INOigPcniIlXyJkFeMlb1gKJg0lX8J4CbhKviRmTG9YwXjZG5bEjMmqKZThYZx2Uhwb145ubDcrMHHtKFGy90ErAMrw4LAEk1kxYwaTBuDBpBFMZnvcELScmDEFLUfKqpgxSVm1R+vJn1q/C8b3L1nHCc44wJxbAAAAAElFTkSuQmCC" nextheight="700" nextwidth="1200" class="paragraph-editor-image"><figcaption>What each pool actually charged per swap: Aerodrome sets the fee per swap, the others are fixed tiers</figcaption></figure><p>The first Aerodrome pool's fee spent most of the window between 0.006% and 0.03%, volume-weighted at 0.0110% overall, well below every static tier here except PancakeSwap's. Spot reads of its <code>fee()</code> function ranged as high as 0.2%, but volume concentrates where fees are low, given lower fee means greater arbitrage opportunities, so the rate volume actually paid is much lower than any snapshot suggests. The configuration itself changed mid-window, on-chain, on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/tx/0xafd35d984398b540ae8b74d619bcae0d3f55be6140e4517b63b3e7a5672d7e21">May 8</a> and again on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/tx/0x5fdca268734b56c016b6b5ebb8cc5f1cdb5c2b36f4ef6d6fe09be44384e56e7c">July 9</a>. The July change is the step visible in the chart: volume-weighted, that pool became roughly three times more expensive over the final 14 days, 0.028% against 0.0110% for the window as a whole.</p><p>The second Aerodrome pool ran at 0.0439% volume-weighted, four times the first, and the comparison between them is the most useful thing in this chart. It took a quarter of the first pool's volume, $2.65B against $9.66B, and collected <strong>more</strong> gross fees doing it, $1.16M against $1.06M.</p><h2 level="2" id="h-the-results">The results</h2><p>Net fee APR for the same $10,000 position, after what each venue keeps (25% on the Uniswap 0.05% pool, 16.7% on the Uniswap 0.3% pool, 33% on PancakeSwap, and on Aerodrome a cut on unstaked positions only, 5% in the 0.01% pool and 10% falling to 5% partway through the window in the 0.04% pool, applied per swap from its on-chain history), with fees valued at each swap's price. Staked rows say what staking pays at that venue: on Aerodrome the gauge takes all swap fees and pays AERO instead, on PancakeSwap the farm pays CAKE and the position keeps its fees. The best figure in each width is highlighted.</p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/830cba439337970014476a209ac8fc88399587bee79faeeff0b8a0c101e0fed1.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAPCAIAAAAK4lpAAAAACXBIWXMAAAsTAAALEwEAmpwYAAADAElEQVR4nJVUy27TQBS9TeI4ceyxPWOPxzPxJLGdhDybPtwHpZQKQVVBBWy6YFGkSv0MVmxZsGCBhAQ/wALW/BE/UTR2m6SlCCEdW2euZubMuXfmApgEnKDOpNWMDd4yeBucAOruX2GS/wPoNmp3H708PTk7P3x1evz6jPbGgHzAIXgsR6i4GuZ/k4CB79jIwHfHcwdUD2WFCY2JMhU6k1a7a4jckOiYUaK4iM0oaYhY+XMCdQKTqH9B8jQsBemyAAYcuvGgTHjJZSWXAQoWi5F3C4bo2HHfjvuAAkN0cHeoMwlOYLX7Xn8EHqtQEYymNSYXAis2C9lY8FUa3AvDieZG+V7+3TCJ2qI/AYdC3XXjgRUlqjZO0JptFjkk6VB5LQqmPjtwSIJIYpHYJgmY166v4N8EqTHJR2uKG5ikQ6uZgo4Bs2RzBxwGBvZ7oyUBAwNl/sG6uzu1s7GzPfEP1sj+apk3i/LAraLV3RqTcrZZcNqfmFECug3Ib80ywAx02++NlS0dzwUCb3/mbI+tzYGdjdzdST6c2NmYHq4DVYdaFqiyqDndKDhJh1cCTtDd2iuuuJsObqbIoZqMKs1mAU1GmozAC9QRdHxnDfzeSPG6a8tug7fzSxFE0w0lYBJb9lRwIYC8atzUIlFp8mosFZcFomrauZ2lulsLW3Q0BUCtF/e/Xv44ev8GAJ5/vPhy+V0c74BJPl1+O/5wDtBQa5UO5WhjC80yY7xuDKdolqFZVk2HgFR51KSbDkoWo9EQTL8UivjkEM+moLnVbpKcHGpC3c72s4cqeFWDultiEd078nYfu9m+s3Y/2Hvq7z5pDNfQJCuxSJ0AecsmLn6+fffr80rIoWyzZGzxBOoOGF5//QHYAeg27YwsnqrCXKfIv36fVGH+Vr28MfzRhcTxTnp6oJwZWPWSIofIK1NxNWcenAtUKK9QvoI5YFbCYTEERUSZ8ryF8KXXj1R+r0uy0F4mc14I6EzqTNaY1JioMVkLW0VEZ7LKogILgeUW9C/8BpAscaTJbngrAAAAAElFTkSuQmCC" nextheight="562" nextwidth="1216" class="paragraph-editor-image"><figcaption></figcaption></figure><p>The 90-day window opened at an ETH price of <strong>$2,348</strong> and closed at <strong>$1,865</strong>, so these positions were centered high and the price fell through them.</p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/b96b3840b5687d602dffd81cb5e71192c9dccd5206dac9ef036d65eb10b67975.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAPCAIAAAAK4lpAAAAACXBIWXMAAAsTAAALEwEAmpwYAAADnklEQVR4nI2UX2hbVRzHf2lvkt6c3Nybc5Pcmz83997eJDdZmibNzR+TtlnSuSTLOtutFMVuUIooUzs7xnTFOev+iNMJrpaK/1CYWhBB2UNBX3xxUHRPspf5MBEffFBBEKbgw5HTbpWNuRZ+/Lj3x/n9Puf7O79zABhOy5Xq+yeztWZhpFNsdqp7xnP1VqnZyY+0cvVWvt7uG9oFTi+wwn+G8HYNWMGl6OGsJadzwYwlZ3JyJi+ls8Fb3towIZZCapxTEy7FQIrR5Q/RZM63LYAQTgTTOdHcIcRSnBrndNOjJz3rXjBMu6zY/EG7HF03hQvF3KrR5Q8Cw4GD3wbAzhtDtcrouNVsC4Z5dw57Z2ccvJYrFVud1GBNy5fkVIZitgTg4arVGU0P1sPpga125JXKFavZNivDA7taZqXmVoytAAgzkgp8gDZ0w29hgVsfCIMnYPMG77eYAjixO3D7xLZjiNYFzg8Id8shh6YCg4AT7wdgpPAdURYDEoH3372U25AogqMbOAHsPnYgFmhm+cIIyBGacm8AwnTmNkNOzOhh1G8JhZ3g5IGXKAlhuxQGrwyMyybIz5VPJXERsPjg4qPCsFk9/jKjJYHl/xdAFfAiODH4ZJeVEkcS0bGxzMwcAAMeFrrcAILLirPZFNtXsuMIOU7OTy8OnX3okctPZo8cbL/2vi3cS+ft3gBPALAwak59fWC1fPLgvg9nyif37n5lMXnocS+nnR98Nd5o9D3VrL40qox1KsfO2gSZPPHbJ1e/PffPm+3lyfmfrh258gNtHcJUK5XrozU3ryH9EdjniwvkFFkilw999fTEp0ffIiQxNZ2WHyBnyJnfV4/dON159+GFX37dt3QJerzk8B8fra0t/Pl6e3nyxI/fz165vn4265cGOPAHWUWlpUV5U4H7WesFMv/XRfL51Orh/SvPLBNiTs2YgQI5Qc79/eXc9RdbSxMXCTnwzmfg4MnszZWr352++caetyfnf742t3YDBM+l2gfvza6Mf/xY48JEc+no9BffsH0FOmAUgiUsm0akEGpUencP+Yt5Pl9llJgDR1KRimjl9PZOnM9w+TJrZoCXjFBJzuSV9nBosMj255xmFjhRD1haohzcW43US2y2Xyg3bitgBaccRb1xZ0TlIjHR2OHVTZeseNS4W487NBWFNKylvFrSKYXdYd2jm44ofZScvggrRaHbTbeJMPQgYHrAJoBHokGwA/ICwv8CbHfUM4ABtMkAAAAASUVORK5CYII=" nextheight="750" nextwidth="1560" class="paragraph-editor-image"><figcaption>90-day window: what the same $10k position earned at four widths, net of every venue take</figcaption></figure><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/4d0e763d0f9116e89cefc4e2b36af976d9a87624ab86bcdfa1203975986ffcaa.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAASCAIAAAC1qksFAAAACXBIWXMAAAsTAAALEwEAmpwYAAADl0lEQVR4nKVVS4skRRCO7np3dtYjuzrr/a7q6nr1c+je2UFx3XFZFkFxQBZEvAm64M2rruzVi4vevHkTf4Q/Yi/+DQ8ieFiprp6e7sH1gfBVEBlkxZeRX0UUACKAyNBLZS/V01L2UjWYcNTp4vD/0T6iur734OLRuw/e/6B57fLy6vH5w7cB6/sd+No5+MeRf0WACEtdyUkEK8TRZODFkpPI0YSkBQqyYZANvBhHEznKh8FkGGRynMtRjoLsJoukdQfdLw/OEYHDmA6ICiD1Gv90NN3sU3tX0Ah0s02qmaBQQGQfPyZQrMwIG4WmmMYyTTCNgRh/BzxS4txfbkCh47ykRQ3K2K5XkhMIlm+Us5b1mEDWEoOWllkTmhtGRcZZuwPrr4REBk7iVEvAulXNtSgHrLvNiqXOwElGaXG7AhG7Co6GcihiV8UxiBR4BSQC6BUEoqolebDcANbtakHzChCJ1ncE00NebBSzUwKJMJEvLjK+Stk8ZvNYXEzYPBFmGegUGAU4DYRTVURVNP1RWgIiWpLLwQQEzchrljocdbRkeqNzR8BXqX5/JZ+XwixDZ8Xo3kK5qJWLmq9SJvE7e0LAK8Mgi9ZbwPq4aMZ5BaIarbeC6YtWaFXz2wRdBVyRsGnIFe3ZW1tnfJ1wRSItcq5ITq4IEdEK7WoBmLYVeCkgYlfzVgM71JL8tgZgWEzk912n77l912GSoLWR3+bqqS047Sa7MgZBU7wsXZ8D0q1ioaclSCQ9u8sZ7rATv9XvqAKgBhPYYJktbLPnWJ3tOXbfc9hJ1PeuhwceAacxif/sj++++v35ez9++vXL75+8+PKjnz//9uUPVz998sWv3zz97TlY1l627jUmzqX5UmwW/KTkJqVQNWI146Y1N61BGQE1QDdONMAj461tdnXJV2nwzuvm/Tt8neSPHw7nhTwv3TfuAtr19oGAi6vhbCvVZ8J0ycUVajZSs5WmKy4ugLqgdx17dEWSxqmuGZfAEOLmsp1CT6F+wRtu+uGbxcePdnuOCbIazc9RsxHLBT+doWbTcbDhVGq2YrkASTmpQNAGXtz1gVHOu85yq9WwmH72y7MnL56CcXpFwGJg0Q74Goclaq2o3uAw0VjcfbItuiSC1vYNo56KjAgQsze2QN+BmKBbvbHVo/Y+olvtICNGa3XrL6b33hndjKBbnylntON64MUDL975oeSE3VKw9j5n+p3zn/4HfwL+o44t0LbS1wAAAABJRU5ErkJggg==" nextheight="562" nextwidth="980" class="paragraph-editor-image"><figcaption></figcaption></figure><p>This window opened at <strong>$1,579</strong> and closed at <strong>$1,865</strong>: centered low, with the price rising through the ranges, which is why every narrow number here is larger than its 90-day counterpart.</p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/068ea438d7e17aef7d6c3197c6241616fd19dc9ab4536e21b555eea4e0d99c7d.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAPCAIAAAAK4lpAAAAACXBIWXMAAAsTAAALEwEAmpwYAAADeElEQVR4nI2UTWzbZBjHnyaO49h+4484tpM4tuskjpumznebNE60pqQN3ZptVIgJqRQ2ccgA0Q40tolJRSoHPobE0CRuoKEJicNAHDhy44Q4TZoqcUNiB8SJCaSJiUxvWtSpfKTSX48s63me3/P+/fgFIJDu1lr9p2a8J8rHepXFXn151W13a91e3uu47W6xvZRrLgApAMUfiBGPKqD4kDYZd8tKzlXzZSVfUPJFGT/vxfKe+JTD6GlWz4Q0i9asCSmGi5F0JAAXz6g5V7Sn+JTD6mnWtMNmFpl22LI5K0uoGkgxQk2OpLHxFKunJiQVCAQkdwQAwU3Ot+ZWVkuLS5yVPVwTeswWigeS091apdvLNlpGsao40xgzFsB7jVJvZarRjuWKY7JpITpbLy0uZeaahYVuZs5jNGscgBF9UQ2QPMbT0CgiCWfiOMpEERCUcQAk+eXEfs1BpXToTSCW3Pf9UMI/kw+1AkbEK4HnGo3GiFTMgJAA5KgXLQAXBb9AlVJ0Jc8UvDEd/xXglzVAAlAMcBEIiWjeRrU5VGlBkPMJGoQioMTdrY7UadY238Jg7m+XuOiBY/8JQBJICh/JNCeXJ0hFaM+4m63Y8glnY5BA9k/P3XXEin3WW7t9TlpoV16+il3aOxYjAqcENQOYyP9/AwUEdqt6+c+z98JEsr692r3xjHf1vdSZdSc6O3xj+MJn76x/+0r3xumtu7u9a58ABIIRE3wRCAjJtVm6apr9DV/cwlvAyRiM9dgiYADPXKhceXj+lxM3N9dun1v5dPD+w2H6zEY2Whm++tf2H98M7lw59kH/7d8fHP/oFvjRz8/uXtzYab97+uTnz3s7r/c//gIUA6gAkDRAGCZ4ABoYfv+U2ESeulC8PLx4/8Phl09//eLxm+cPAK8N3/z1q8GdS53rp3bujwABbjj47dYP328/uNa53r90b/el734EJLSST7aqJ9WVqtiZUZabzvqA0G3822KIpIhq1tIqSqtmLjalahGVGoSWIkXNSdTFsmsseUJxmi3VKTsPnGzFanLOjXcaaqNKTc+QtgsoYsglzSjw88VEpx50c3ShCXIcXwRA8UFVZ6w0qekokRatKd60Q2oyrGcYM00aOh0zBcPhDScoJ9iEiUw7kMSXEhlJUEoS/CwQDJ6SYoCgISAAq4CfA18Qd2fERxwrvTOWpngmAAAAAElFTkSuQmCC" nextheight="750" nextwidth="1560" class="paragraph-editor-image"><figcaption>30-day window: what the same $10k position earned at four widths, net of every venue take</figcaption></figure><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/410ddeace63356097a2cbceaa59bfc6241599904abfa7e2af9c92ef2839526f2.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAASCAIAAAC1qksFAAAACXBIWXMAAAsTAAALEwEAmpwYAAADn0lEQVR4nKVVSY/jRBR+WRyn2nGVHcep8hbHsVPxnjhL7zMtpNH0HEbDoB7EBbGMOI1A4oI4IdFCnDggBBzmggTiAAfu/AZ+BwfEiX/QyO2eTieiWYT0+em9crm+eu9VfQaQNJA07HLichbnyHCxy9vMqcbh/6N8kHpw+vClV157+a13woOT+6++fvLobD0D69v+zZF/RSBpLepIToAsT/FD2eWSEyh+qPNE9jj2Jh03IH6o+DH2QuxN1CBS/Fj2+PZaSN12rgka1GoZDiACkvIC/7C1et9oUusyodIvF+0yUOjlK3ObQDUnpj9T2BhTn9AAUx809nfAWjeIRqtDUPo0zlg6A6wNZivJ9pA1tGYLwJsERPMNlphG3qMhMzKN8nIG1m8FUmU3cKcrwLqVFvo4AdQ106nInB1r2OfJdgYIOwSPMPEQdlTs1xAFkQDqQqd3G4HihaPFPmDdiGf6OAbUdYtdZLg7lmfni61T1BX8obwMUc7FOBDjQF7GYjyW5iHoFBoEBBXEza4gdcfyqp32edL1I0Aq5WmL2iKze2VC6gYByrn5YE+7M5XmIdlPjdNV76TonRQo58LYq+wGgUhULxzvHYOkOfmSxTmIxF8dImMgOYGTr7YJqgzaKW9xv51yaV76O7NwZ8bbKZeXSTvlGyWSNNkNrHQOCmVxrngTkDQzLVrU7jijv+hBjZmCP2w6dtMdNB1bGI9K6w/LtWpKCUHd6oHmR26xCwo14hmdZID18OCuyJyONWKTbLsHQJng2XXTqJtGwzKajlnZpmMJrtMKfcHdFA+RYG8ymO8C1mmcE58D0dkkk5Pom4ufnl/8WDfNq7ZVHwhBhBcruViiKBOjTJoW8nSOkilKpkB6QBnobEMwBAX3hn68C4CpE/UHEUDLdJO2bivLbHjvznaJ2kGmzI/wdF9Klu0gI8UhLo7kZNUO0hp1an0LOjeuRacHOtv94Ozu+Zvmg72TT96Yv/fYeXRw77On7uPj6Onp4v0nQPSyMGuCyZQsjklx2MmWKJmT4rDiEEYxLo462RLQi2OKNRDUpjv49I/n579/dfbds88vvn33l/O3f/7w64sfnnz/7KNfv/j4ty9rbLNEIMjQlEoI8hWuw+alReoaVdsaagnh2pJ12FCvtr8m6BmNvlm/BPSMet9s9M0GtaqRet+sdS8lqMvWQlapTakoN8Lb5FpkpVx33BKlb48ke1SFyPIqXzTcyvlP/4M/AYmamYx5ssT9AAAAAElFTkSuQmCC" nextheight="562" nextwidth="980" class="paragraph-editor-image"><figcaption></figcaption></figure><p>This window opened at <strong>$1,806</strong> and closed at <strong>$1,865</strong>, the quietest of the three for price.</p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/eab73a59da2a10f31bfd19308805479d894df03c144e33ff8d2e552de46074b8.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAPCAIAAAAK4lpAAAAACXBIWXMAAAsTAAALEwEAmpwYAAADRUlEQVR4nJWUz2vbZhjHn9iKbFmWJb1WpNeWLKuyLCmOoyi2Eyez4tbJ7KRpU3C3hLK2tFDabW1hpGzD3WEblLEcRunG2h5a6Mh+FFbYoIfB2HHXwXYr7LJ/YOwQKOwwqvEm6VK6ZM7ge3gP3+f58Hyf930BKE73JmaOHR8NXqwcWqjOLUzNL3nN9kT7sDXR8Jptv9kpNVpAixAXdsSi/QriAqMdyHoVpeThckUpjyllXyZnf8gt43JlS0LBZXUrqRcZzUxo5oCUIcWctC8Any3ikofsYaHgJnUradgpw+EMO2XavOlQWAMpQ+HcprRktpDUCwMSBooDmt8HgOIPvDBTX1wan+vwpvN8DfNMLHEBaF73JqrtBWd6Ju/XFHeEYPoChGB6fGFxeLqZKfl93AlxaHJqfK5TrDfGWu1iPWA1sx+ARQNSFniZBMoPbcfKSXvmy206/7GJSj8AJ5FASY1MAAwCLh3FubhmkXw46XntgvyX51kzsCgiq5BIAT0IkAAZo1lHW+paK+cABnc6culN7dHlvycAlB5Vm29O94IPT83fOTP1fgcFs+7piwTAy/+j1x4ABQSmV3k3vBp+HH578ofLh66vdO997Zx6dXsCBkFMhKgAvByV8O6Z9AW84b395+rv1558/tI3546sX/okDO1XCGCAz4CEIzk11XCjppGdPw7xp/d4C8ykgeEhIe5J3QKs+r2/rvzxQfjl8sMLi5+9vvY4tE6cNdLljdO/Xfr57tkfVzu3X168fbN17RZQie2LhJSooYEkCWNTIGUgzgHNkUFjIlA8Oe8AUrEr/tXwrY218Kvlh+ePrF+8/iS0Tpxxh2phL3xv47vLj95p3Tj2URge/fQ+RNlfuz+tPXjw2i+91o1u9/7NlS++BzmTFUs5q5qcdCknTzk2DtoRnCNvk0CQgrBjalV8sG7MNaSan6o2KK1AI83O1lHFy3cC0R9hR6sxqwS8UtYC1Z/Ulw5mgxpbmYyN1IBL82IhlbGSfglX/WjOiBgOoM2FQVyIYZ01LVrTOdVC5rBg2AzOpfQia1h0Xk9kDDHvCnk3JqtJ1eAMm8ppUVkdFNS4YkCEIWIR2Q3NkcXwCsQE8oUw5NP9G/jRrewlfG/9AAAAAElFTkSuQmCC" nextheight="750" nextwidth="1560" class="paragraph-editor-image"><figcaption>14-day window: what the same $10k position earned at four widths, net of every venue take</figcaption></figure><p>Read the three tables as three separate entries rather than one position watched over time: each window's positions are freshly centered at that window's opening price, so differences between windows carry entry timing and market path as much as venue. Fees are valued as they accrue; valuing the accumulated fee tokens at end-of-window prices instead moves APRs by up to 1.95 percentage points, the extreme case being the 30-day narrow position in the pool with the highest realized fee. Both conventions are in the published results.</p><p>Four things stand out. <strong>No venue won.</strong> That is why this piece does not end by naming one. </p><ul><li><p><strong>The pool decides, not the venue.</strong> What you take home is the best instrument the venue offers: swap fees on Uniswap, fees or AERO on Aerodrome, fees plus CAKE on PancakeSwap. On that measure the 0.04% Aerodrome pool took the 30-day window and three of the four 90-day cells, PancakeSwap took the 14-day window and the 90-day narrow range, and <strong>neither Uniswap pool won any of the twelve</strong>. Strip the staked rows out and compare swap fees alone and the picture inverts: the 0.04% Aerodrome pool takes eleven of twelve, PancakeSwap's 6.5% in the 90-day narrow cell is the lowest of the five, and Uniswap's 0.3% pool wins that one cell at 8.0%. Which comparison you run decides who wins, so the tables mark what an LP takes home. The other Aerodrome pool, the one that traded 5.8 times the Uniswap 0.05% pool's volume and collected more fee dollars than it, was the <strong>worst of the five</strong> over 30 days and second worst over 90.</p></li><li><p><strong>The volume, fee dollars and TVL numbers are each half an argument.</strong> Uniswap's 0.3% pool collected $18.3M in fees over the window, twenty-two times what the 0.05% pool collected, and paid a $10,000 position about what that pool paid, because the position is one twenty-fifth of the slice there. PancakeSwap is the mirror image: the thinnest book of the five, where the same position is about twice the slice it would be in Uniswap's 0.05% pool, and the smallest fee pot, $348k, a third of which the protocol keeps. It finishes last. Neither pool's volume number tells you what it paid: the one with the most fee dollars and the one with the thinnest book came within four tenths of a point of each other.</p></li><li><p><strong>Staking is a different instrument at each venue, and the ranking is not settled by it.</strong> On Aerodrome, emissions valued as they accrued beat that pool's own unstaked fees at every width in every window, which is the whole point of a gauge; against the other venues they win some widths and lose others, and which ones depends on how AERO is valued. On PancakeSwap that is not an issue: the farm pays CAKE and leaves the swap fees with the position, so staking there is additive: over the 90 days a staked position is simply the unstaked one plus 1.1 to 5.7 points, </p></li></ul><p>Emissions are paid in a token whose price moves, and that is an important price risk staker LPs are exposed to. AERO fell about 11% across the 90 days. Valuing each day's accrual on the day it accrued gives the staked figures above; valuing the same tokens at the window's close costs the 90-day staked figures up to 1.1 points and the 30-day ones up to 5.8, and it changes the answer to whether staking beat holding the fees: over the last 14 days the 0.01% pool's staked position goes from ahead of its own unstaked fees at every width to behind them at every width, and the 0.04% pool's lead over its own fees shrinks to 1.25 points at the narrow width and a twentieth of a point at full range. Fee income is not risk-free either, since it accrues in the two assets you already hold, but staking swaps part of that for exposure to a third one.</p><p>Those figures assume the AERO sits unclaimed until the end, which is the worst case in a window where it fell 11%. <strong>Auto-compounding </strong>it would have improved these returns even above what is shown in the tables and charts: harvesting converts each day's rewards at that day's price, so the price going down stops eating the revenue, and the harvested amount earns fees alongside the original capital. <strong>That is what we automate at </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance"><strong>Revert,</strong></a><strong> and worth considering if you are a staker.</strong></p><h2 level="2" id="h-ignoring-protocol-fees">Ignoring protocol fees</h2><p>Every number above is net of what the venue keeps, and the venues keep very different amounts: a quarter of LP fees in the Uniswap 0.05% pool, a sixth in the 0.3% pool, <strong>a third on PancakeSwap</strong>, and on Aerodrome a cut on unstaked positions only. That cut is not a constant either, and it is somewhat confusing: their own docs claims it is between <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/aerodrome-finance/slipstream/blob/main/SPECIFICATION.md">10% and 50% for unstaked liquidity</a>, however in practice the 0.01% pool charged 5% throughout, while the 0.04% pool charged <strong>10% until 20 May and 5% after</strong>, which works out to 5.6% of the fees the pool collected over the window. PancakeSwap's is the largest cut of the five and it is not a published number we took on trust: its <code>slot0.feeProtocol</code> reads 3300 per side against a 10,000 denominator, which is neither Uniswap's 1/n encoding nor a percentage, so we measured it from the protocol-fee fields its own Swap events carry. It comes to 0.330000 of every fee paid, identical across twelve sample regions spanning the window. </p><p>Add every venue's protocol fee back and compare fee income only, with no staking and no emissions on either side, and the order changes completely:</p><table class="paragraph-table" style="min-width: 125px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p><strong>90 days, fee income gross of every venue take</strong></p></th><th colspan="1" rowspan="1"><p><strong>narrow</strong></p></th><th colspan="1" rowspan="1"><p><strong>mid</strong></p></th><th colspan="1" rowspan="1"><p><strong>wide</strong></p></th><th colspan="1" rowspan="1"><p><strong>full</strong></p></th></tr><tr><td colspan="1" rowspan="1"><p>Uniswap 0.05%</p></td><td colspan="1" rowspan="1"><p><strong>10.1%</strong></p></td><td colspan="1" rowspan="1"><p><strong>9.4%</strong></p></td><td colspan="1" rowspan="1"><p><strong>16.4%</strong></p></td><td colspan="1" rowspan="1"><p><strong>3.3%</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p>PancakeSwap 0.01%</p></td><td colspan="1" rowspan="1"><p>9.7%</p></td><td colspan="1" rowspan="1"><p>8.3%</p></td><td colspan="1" rowspan="1"><p>13.5%</p></td><td colspan="1" rowspan="1"><p>2.7%</p></td></tr><tr><td colspan="1" rowspan="1"><p>Uniswap 0.3%</p></td><td colspan="1" rowspan="1"><p>9.6%</p></td><td colspan="1" rowspan="1"><p>8.4%</p></td><td colspan="1" rowspan="1"><p>14.4%</p></td><td colspan="1" rowspan="1"><p>2.9%</p></td></tr><tr><td colspan="1" rowspan="1"><p>Aerodrome 0.04% dynamic</p></td><td colspan="1" rowspan="1"><p>8.5%</p></td><td colspan="1" rowspan="1"><p>8.0%</p></td><td colspan="1" rowspan="1"><p>14.0%</p></td><td colspan="1" rowspan="1"><p>2.8%</p></td></tr><tr><td colspan="1" rowspan="1"><p>Aerodrome 0.01% dynamic</p></td><td colspan="1" rowspan="1"><p>6.9%</p></td><td colspan="1" rowspan="1"><p>6.4%</p></td><td colspan="1" rowspan="1"><p>9.6%</p></td><td colspan="1" rowspan="1"><p>2.0%</p></td></tr></tbody></table><p>Gross of the protocol fee, Uniswap's 0.05% pool earns the most at every width, and PancakeSwap moves off the bottom: second at the narrowest width, third at the next, fourth at the two widest. </p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/38ee8895318837470a02b4778f70de2fc256bd124b0f4b113b0af83fe14e5921.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAOCAIAAADBvonlAAAACXBIWXMAAAsTAAALEwEAmpwYAAADYUlEQVR4nJWUS2wTRxjHv7A29trrfc8+bWfZ9drr2Nh52SHNGnAoIbxECSEkJEFQlCJAHBC0IKReqhyoWlXpoSolHBAcUuUUoYiH2gOHIKiEekS8qQgICSQQCLhwWDTZIB4SNEh/jUY738z/+775zQKQrOoU824107ok7y61y67Z2GKX3Zy7xGhscVorebcaVmuBk7FiAjAS0OgzBDEhrBnIKfCZnJDJIScvOjnRyUlOETl5Pp3l01nasGkjTdXaATkOJIsV5bHZnAyifDzVZJcrklMg4wsCcpxAWkDWA7JOyBqOeO8gSbFy8YWNsURqHq/NzYBkWbctW223mlp4M4OPe1f0BxuEsGGK6TrOTJO6OTcDGgGn4M4yfrLSzPzjiopAMrMt+nSkf1vASEEl8f+hzFuFFQNEBSc0JwMa4V4zMtAyHv0Fnxk8f/NlVjJQzKQ7sd7qB4avkVVACsTQpytAmA1OBMQATYM4Y0OQGBVOAoYGRsT5cj6dElDUs7X3b3ZcaossDjVr1T8PfPHTcUAqXv1Yi0BAOb3th/rhZnUpEAJEWa17S6RcCUakdXWDMWRCkANSBFGt4TWgqHurr91uv7hm7dbisLvh8m8Dl++Dz9ts0e8b1LAyCEyfvd3r98bajqb3rSoOL975+FHd3u+VQMLrfj7WNJpatsz4pv7L8T8WHT4GAA+/+u9mdWrw3Mge79sVk4d7L9yYMeCAn7l27sMKZODprtSgt/7Jic7RQ97vK89s3D59J7ProBJKeJueny+PDz09svn6tp5/T68aP+8b3KpODZz6ZefLvZ2nf+y7dAt4SdcKerweSAGCb+jyMfUr6La3et0vTnYc2++NLJ/oGnow7ew5qAQTXs/Lv5vHdrw4svnq110XJlac/AsbrLt7p31qYHJk96v9K8/+3P/PNAj0aPno485rQ73fdZzqK/3a23vxStBpwEBjE1GhZctWW0yrpK2u0KV8uKEUMJwAp6b11qRaTHZUYq0L59flQ04RGGRqpSQqxBeVuWoD4WRC2UZgkCLnUnwpUSgpPRUia0XKFZB1/FYgJoSUZKTWIhLxsGHSWorSraiaiKjJaK1N6Pr85AJKtQKsPo+ValgJI4cwF5jOqARhFkI0zpJigaLwAwxJEBaAiPg/gtfa4snxQ3AMDQAAAABJRU5ErkJggg==" nextheight="700" nextwidth="1560" class="paragraph-editor-image"><figcaption>Fee income before any venue took its cut: Uniswap's 0.05% pool earns the most at every width once the takes are added back</figcaption></figure><h2 level="2" id="h-what-to-do-with-this"><br><br>What to do with this</h2><p><strong>There is no one-venue that really comes out ont op.</strong> These five pools competed for your liquidity over the same 90 days and no single one of them was the answer. Which pool paid you the most depends on the window and on whether you staked taking on the implied price risk. On swap fees alone the 0.04% Aerodrome pool takes eleven of twelve cells; allow staking and PancakeSwap's fees-plus-CAKE takes the 14-day window outright. One pool changed its fee twice inside the window, and another halved its cut. At the tightest width over the last 14 days, three of the five finish within three quarters of a point of each other.</p><p>So the job is not picking a venue. It is monitoring the different factors, and moving when they change:</p><ul><li><p><strong>the realized fee rate</strong>, not the label. A dynamic-fee pool has a fee history rather than a fee, and the two Aerodrome pools here ran 0.0110% and 0.0439% on the same pair over the same window.</p></li><li><p><strong>how much of the tick is yours</strong> at the moments fees are paid. That is the other half of every result above, and it is why the pool with the most fee dollars did not pay a $10,000 position the most. Short-lived ultra-concentrated liquidity it not good for more passive LPs.</p></li><li><p><strong>what the venue keeps</strong>, from a 5% cut on Aerodrome to a quarter on Uniswap's 0.05% pool and a third on PancakeSwap. It is also mutable: one of these pools halved its cut inside the window.</p></li><li><p><strong>whether staking is additive or a swap.</strong> On PancakeSwap the farm pays CAKE and leaves your fees alone. On Aerodrome the gauge takes all of them and pays AERO, which is a real trade with a reward-token risk attached. And how exposed you are to the reward token's price risk.</p></li></ul><p>All four move. <strong>None of them is visible from a TVL number or a headline APR</strong>, and by the time a pool reaches a leaderboard the flow has usually already arrived.</p><p>Check what your own positions actually earned, after each venue's cut, from your <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">Revert</a> dashboard.</p><p><br><br><br><br></p><h1 level="1" id="h-appendix">Appendix</h1><h2 level="2" id="h-fees-and-volume">Fees and volume</h2><p>Volume follows execution price, and at 0.0110% the first Aerodrome pool was very cheap to trade in. Then it stopped being so cheap. Its fee module was reconfigured on July 9, the realized rate went from 0.8 bips to 2.9 over the following week, and volume fell <strong>65%</strong>, from $88M a day to $30M. Over the same days the other four pools moved by -14%, -2%, -4% and +21%, so that decline is far larger than anything else happening in the pair, and it is consistent with flow responding to the fee. </p><p>Part of that relationship is mechanical rather than a matter of trader preference. A pool's fee is the threshold an arbitrageur has to clear, so the cheaper the pool, the smaller the price divergence that is already worth trading against. Lower the fee and you get more arbitrage volume, mechanically, with no change in anyone's demand for the pair.</p><p>What is measured here is the fee series, the volumes, and the pool's response to its own fee change.</p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/39f6382fc6c436c0af1db55ed20829e1b73e1e590e24c8fe8cbdbfa0384cbd70.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAATCAIAAAB+9pigAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEzklEQVR4nI1VS28bVRSe1g4dLL/GmfG987BnPPbYHo87Hj/G79hO7caOM44d59E0dePEKa0j1bTqu4hFYIUQCCGCkJBYdAOiG3YgUSF1j6hAqlh0w6Zs+ANsWKDxpCaYClU6Gp2ro3u+77vnu3cQxOnGWGHpwkCpNAJqMVqsKpXG9vW7K3vD7Wu3U2db6llNKlQRp3sqzDj5KoEgTjcdUZ7/+df3T55++tU3v/z+x0cPvv7xt+ePnz4z8kdPfn389BkjJTFWoCMKLSW8MdXFC68KcBIDLj6Ua60q1Wa+tZ7VVgrjPNdaVRvtUndTbbTVRlsbXPbGVG9M1TEiip32vWgBzTj8H03ICSewQE+ipsVrTSPURrvQWpVKtURNM5L0YjugFoVciY4oRi8TBo39NpJ1MH4QlEBQskDPSwBQQMdrTRcfQqyz+vo/Z43o1CBiI5DXcTNOWqDneHC82tm6cnD42f33P0YJGrHOHq/qDc04aad9E3AUMMbXCAv0oIBB7G4gydqN4UkMTBH05/MXb9z97qef3z38fPfmvXP716Z06ABSqQaC0nF2KEGbMYgSFEpQiJ2AUTm7tVod9oAkmzF4nKN/rnzxzv2HPzz+5MuHD759NLj1lkH3XwqMoc3glEHWhEErxYoLZ+qj3ez5bnlvqz7atbo9vJgtbK+ZMHIGpyYB5Ux6sbu5f72zN8w3146XZnDqaAb+VN7Fh/SFfhRRpbOk3RhSMcVKsVaKJUIiCmgH9IX8OUVrAkk2YRAFjEFI32WdRU45ENRlTHEaQFcgJSxuDwro8t5Wsb8BJBkl6IlPTOOE8sl2wPJSNrXeMlQahIwcJeijswX0tIvMOMlI8XC1ZrQ+2gD0DROn20kf5ZNRQAFazG6sF7bXdRKAYVIppbPIZTNESDRhELG/5CoYAEmhNG+j2KkBTkhBX9QBOMSKOUiOYk9jPqG8t1Xb73O5YmppmVaSlb1eYXuNSSVfWJGeHrJFl6bfSdMsMBLd+1YMcRInnW5AiyAsi/NNMw4ZXma4OMPFvf4kZCS9RIssn2ACcbXbbowunXJRugn1Di8UCLmSX8q4SCGcqIQTFW8oxYvZsFrtvHGrqF1onr/a7I+ESp3NVGLNLhAVneMs+ZqLRJwE4sQRp9tGsrMewU2GcvWVpeGQC6SgL4pR/BGADXppKa00uoXuxXRr63StM9+74s/VoBiHYpxNFoAkw2A0NlenIon5wWWl1S30eqWdbaF8Jr+2weWK4YUKm01HlxaE+VJ9tLv7wYGstRb6A3dQ0gECajG3fJ6JpiEvQl4ko0pqqZMsNee09XR1uby4Ue/0c7UuF8/nz64sr16qdvtrOzc7m1d7o4M7732xOXx7dO9wY3B/ZefOYn8UzNf3PzzsHbzTfvM2EYyOFVCsWtYyleXi4sacdi6cqMiJBSoUY6QkzoUxMoCRgfFp6O+SE/IOwNkJrxPy+gN1ynrCDnAm7ACcixQCwTwvZMRA3sPGA4GsHbDj/4GUaOwMYFS2UawFeqiIEpmrGgZFnG5SjFER2XhIZnCKPp3EfIIZ161so3zeWFq339gUhCCCcHRconRPh6MYK+gKLNATUIs+JeNTMt5Y2htLS6Xa5B5MDDdZHrf51HLsn39KKEH/DTmXHzHBm2fmAAAAAElFTkSuQmCC" nextheight="700" nextwidth="1200" class="paragraph-editor-image"><figcaption>Weekly volume across the five pools</figcaption></figure><p>PancakeSwap volume numbers highlight an import caveat, because the cheapest fee did not get the most volume. It charges the same one-bip fee the first Aerodrome pool averaged over the window, and it had about a third of that pool's volume. The difference is what a trade pays besides the fee. Price impact is set by the liquidity standing at the price, and Aerodrome's book at the price is about four times deeper, much of it  short-lived positions, posted at the active tick. </p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/53741a36a4f505f4c420f58ef4b08870c8e045d80c55b0157142c694c6dcec2f.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAUCAIAAABj86gYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGDUlEQVR4nJWVe0xbdRTHf6PtbVfa29vXbXvb23a9bS+vdnSsgOOhQ+lKYYBIW1v6YN3AgVt0RCZMKN3AOtxaxujYoIwJF2Rj2RQzNTqdxkdifCSaaHTOxESN/23GaKKZ0Z9pFVD/msnnnpyc5OZ7fud3zu8AgKCY3kzQVlX+ZoK24uZC0lJC0BaWjAAICnjYv+CL/zcAQeXmQqO9grLfRW3dpt9SRpdXU/YKqbkoV2tE9SaBzoTqTbl6I0rRXEK3AVdzVFqAyu9YgC8GEmWOQs1SaHIU5AYZwcLVLFyNELpcLcUldFzCwCepjeqMRQgdG9ewcQ0QSO9cAAM8XEyYgUzBkclEGh3gSzcQBi5hAIgYyAi2Sg944iyS1d+kGQT/gP8f/iPAx9XKPKGE5MrlHFyRiciULCkOEB5LIEAwCeBtBAgPcFiAxQZsPmBzARsBGziAxQEsBLB5ABEAhJuJ8wSAhwKeaP3CAILmqEj/9FQonW5MHrs/lWycSLTMnL4/neqYPd61OB5JH907l9iTHu0+P7Hn/LR7/lxg8Wxg6Vxg5ZLv8gXP5Yuti3MtZ9MeZsa3OBueGXMNHuDLNgFUmU09KwBw9QOH+73xqHugNzQy2DrQG3zqsGc42jIc8yeeboxFHxx90j081JJIuscSnpGYN37EMxr3Tp52nxjzjMbdw0PBeMx9OOqJH/HHhxzdnZiORnDt34fIfKhcYd4sNxfxKVOu0cw30nwjjZnMctosM5sklD5jabOYplE6H80rwgqtaF4hSudhdB5K5wtNtJAuFOb/FSzgUyaACDN5r5UI4OpgbCh4JOY+1OePDbiHDwcTx3yJp3fPptvGjrcfjwcmU7s/vhG4cjU4PfUgcyF45aqPWfLNMW2z8750OnDqtH96OnhpxfsME56ZcUZjEsLMla6dgIcBmaIkstMe2VkSrre3N9p8zvJwo9VdWxqot3gd9lBDcZtra6Rlc5urNFBn89TYfY4S7302r7OkzbnF5ygJuEq8jlKPw+apLQ276IYqRKXPkanWBXJQIlC6L2TfHy7b77d2tZG7gtrdYX2nj4yENJ0hTWeQ7Ggn2js0nWFNR5jsalfvD2v27ibbIrpISN3Rrtjl39TxQH5HSNP5kLp7p9ILEAlA1rqIK8Dl+fBRCHtW6YMwCuFA1h6HMAnhUfgL883tF7/++fwNmLoJJ3+Bp299dvXnazPffZS89dXEH6+f+T49fu2tE998MfEj0/0CabChSuM/SiRSGGtdpjoX7ayjamtlleVETbWsukJcbZfuKFXWl0tqbZizEG/ejDkLxM48RYNV7CxQebZjTgvmtEgbSoQ1efxKCnMWSBsK+ZVGIJQAwepUAh7GlqvSzQNL955ccKTm7zm5eNc4sy2xXHWSqRhbsKcYywxjmVsqvrBgZRasDGN9dqn44pxl4ZJt6aJtmbEwy7blC8XL85al5S3PrWy98pQxyRFpgABfFWCLEHLTrS9H4df98PoT8IsheCMGr/fDbwfg54Pwo3H46nk49Sk8dhMOQngQwqHf4MgfMPoTHPkNDv8Koz/Akdtw+DY8+h1MfQvP3Pz94CtKbQEiX58DDKAKqrJ1a12rpbnGUmctcljp7Rb63mK6ykxtowwVpKVKW7rdUFZFlVUZq6q1NXcry6r1xbWFGRwWe31xWV1R+X2Gyh3a7S5dcaU6+1SI1udgo3LT4sQKk7ryUOqMf/aMf+qUf/acl7mYej5+/cPHP3jn0CfvD7x57eC7b/d98F7fG28PMm8e63/pXP3SStP8gjM5Xpcca02dDFy+FHr5pY7XXm6aTGXmQEKuPhWZOVDW9+5p7uus64409exz7ut0PdLV1POwK3qodeqUZ+pU62SqMTHqnjjhSY03JxPNqcmmI7GWA12tPfvquyL1XZHmR/c2Pnagobenpb+3cleYTxhYcvV6F7EUpJjKF+nNqD6zWzBjHkbRIr1JSBqEKlJEaEUaPUpo+Up1rlKTg+FAIM5WQJLJ8e8XO+uv8dcqXOsiIFNxCR1LQXJUeo5KmyXjIIQus2EyfgYgUwGZEkiy3PHC+RMPVOy5sjafCAAAAABJRU5ErkJggg==" nextheight="960" nextwidth="1560" class="paragraph-editor-image"><figcaption></figcaption></figure><h2 level="2" id="h-why-volumenet-lp-fee-rate-is-not-the-whole-story">Why Volume*Net LP Fee rate is not the whole story</h2><p>What an LP position earns is the product of exactly two things: the fee dollars the pool paid out to liquidity on each swap, and the slice of the active tick your position was at the moments the swaps happened.</p><p>A swap only pays the liquidity standing in the tick it is trading through, so your fee income is your liquidity divided by the liquidity in that active tick, summed over every step of every swap. Liquidity parked in ranges the price never reaches earns nothing and dilutes nobody. So the quantity that matters is not the pool's average liquidity or its TVL, it is how large a slice you were of the active tick at the moments fees were actually paid.</p><p>So the question is not why one pool's fees were low. It is who you are splitting them with. Aerodrome pools have a considerable amount of volume, however for normal LPs much of its diluted by an equally considerable amount of "short lived liquidity", or "bots" that reposition very extremely narrow-range liquidity every few blocks.</p><p>Because arbitrage volume will increase or decrease along with liquidity this ultra concentrated liquidity will actually have a more important impact in diluting reward revenue. This is something we have <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@revert_finance/onetickdao-eth-and-the-narrow-rangers-f9a376f7f0c9">studied previously </a>in the context for Uniswapv3 staker rewards.  If Aerodrome were to prevent this type of strategy it should have a big positive impact on regular staked LPs performance.<br><br>The five pool addresses in this study: Uniswap v3 0.05% <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0xd0b53d9277642d899df5c87a3966a349a798f224">0xd0b53d92</a>, Uniswap v3 0.3% <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x6c561b446416e1a00e8e93e221854d6ea4171372">0x6c561b44</a>, Aerodrome Slipstream 0.01% <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0xb2cc224c1c9fee385f8ad6a55b4d94e92359dc59">0xb2cc224c</a>, Aerodrome Slipstream 0.04% <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x3fe04a59ebd38cf06080a6f60a98d124eb59392a">0x3fe04a59</a>, PancakeSwap v3 0.01% <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x72ab388e2e2f6facef59e3c3fa2c4e29011c2d38">0x72ab388e</a>, all on Base.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/919b2b4e7d5153eaf5a11cedfcfd08ce997b346872e71e7193f171f3d2fba7cb.svg" length="0" type="image/svg"/>
        </item>
        <item>
            <title><![CDATA[What the Uniswap fee switch actually costs LPs]]></title>
            <link>https://paragraph.com/@revertfinance/what-the-uniswap-fee-switch-actually-costs-lps</link>
            <guid>X35wtW3Q1znjeWIs3Fle</guid>
            <pubDate>Fri, 24 Jul 2026 17:34:15 GMT</pubDate>
            <description><![CDATA[An on-chain analysis of over 8,000 Uniswap v3 positions reveals that the protocol fee switch reduces median LP net APR from 4.5% to 1.5%, flipping 10% of previously profitable positions into a loss.]]></description>
            <content:encoded><![CDATA[<p>Uniswap's protocol fee has been collecting on the big mainnet v3 pools since December 27, 2025, and on all v3 pools on Arbitrum and Base since March 6, 2026. Everything below is about v3: v2 has its own fee and v4's is a separate governance track, still in progress. Plenty has been written about what that means for UNI. Almost nothing has been written about what it means for the people providing the liquidity. We measured it, position by position, with no estimates: every number below is reconstructed from on-chain state.</p><p>The comparison that answers the question runs between two complete scenarios. In one, the fee never exists and LPs keep every fee dollar. In the other, the fee runs for each position's entire life. Real positions live in between: their pre-activation fees were untaxed, and their post-activation fees arrived already net of the protocol's cut, because the pool contract deducts the protocol share before crediting LPs. We build both scenarios from actual accounting: where the fee already ran, we add its take back; where it had not started, we subtract it. This is accounting, not equilibrium: nothing here models LPs changing behavior because of the fee.</p><h2 level="2" id="h-what-governance-activated">What governance activated</h2><ol><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.uniswap.org/unification"><strong>UNIfication</strong></a> (passed late 2025) turned on protocol fees for v2 and a first wave of mainnet v3 pools, those where Uniswap held 90%+ market share. The v3 rates: <strong>0.01% and 0.05% pools give up one quarter of LP fees; 0.30% and 1% pools give up one sixth.</strong> The mainnet pools here activated December 27, 2025.</p></li><li><p><strong>The </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gov.uniswap.org/t/temp-check-protocol-fee-expansion-eight-more-chains-and-remaining-mainnet-v3-pools/26035"><strong>Protocol Fee Expansion</strong></a> (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vote.uniswapfoundation.org/proposals/94">Vote 1</a>, executed March 6, 2026; <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vote.uniswapfoundation.org/proposals/95">Vote 2</a>, executed March 8, 2026) extended the same per-tier rates to all remaining mainnet v3 pools and all v3 pools on eight more chains, including Arbitrum and Base, which activated March 6, 2026.</p></li><li><p><strong>v4 protocol fees</strong> are a separate track, with votes underway since mid-July. Excluded throughout.</p></li></ol><h2 level="2" id="h-a-fee-haircut-is-not-a-return-haircut">A fee haircut is not a return haircut</h2><p>Your net return as an LP is fees earned minus divergence loss. Divergence loss is a loss by construction: zero at best, when price is exactly at your entry, and growing the further price moves away. Fees are the only reason LPing (sometimes) beats holding. The protocol fee applies only to the fees side, so the relative damage to your net return is the haircut multiplied by how fee-dependent your position is.</p><p>A position that earned $100k in fees against $10k of divergence loss nets $90k. A 16.7% fee haircut takes $16.7k, which is 18.5% of net. Mild.</p><p>A position that earned $100k in fees against $80k of divergence loss nets $20k. The same haircut takes the same $16.7k, which is 83% of net. Brutal.</p><p>Measured across the cohort below: the median profitable position gives up 28% of its net return to a 17-25% fee haircut.</p><h2 level="2" id="h-the-data">The data</h2><p>Scope: Ethereum mainnet, Arbitrum and Base, every Uniswap v3 pool pairing ETH with USDC or USDT holding at least $100k TVL. That is 20 pools, of which 18 contain qualifying positions.</p><p>Inside those pools we measure one fixed set of positions. We call it the cohort, and every number in this post describes it unless stated otherwise. A position is in the cohort if it:</p><ul><li><p>is still open and has never had a withdrawal</p></li><li><p>has at least $1,000 deposited</p></li><li><p>is at least 30 days old</p></li><li><p>has earned fees at all (price never entering a position's range means nothing accrued and nothing for the fee to take)</p></li></ul><p><strong>8,053 positions qualify.</strong> Profitability throughout is measured against HODL, APRs are lifetime figures, and everything is a snapshot as of July 24, 2026. Everyone else in these pools pays the fee too but is not counted here: closed positions, every LP who ever withdrew (which covers rebalancing vaults and just-in-time liquidity), and sub-$1k positions.</p><p>The fee split is exact for every position, with no estimation anywhere:</p><ul><li><p><strong>4,238 positions were minted after their pool activated.</strong> All their fees are post-fee reality by construction.</p></li><li><p><strong>3,815 positions predate activation.</strong> For each one we reconstructed its full fee state at its pool's exact activation block from archive data: the position's fee checkpoints and owed balances, plus the pool's fee-growth accumulators, which together give the precise fees earned up to the activation boundary. Post-activation fees are the recorded lifetime totals minus that reconstruction.</p></li></ul><h2 level="2" id="h-the-results">The results</h2><table class="paragraph-table" style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><br></th><th colspan="1" rowspan="1"><p>No fee</p></th><th colspan="1" rowspan="1"><p>Fee always on</p></th></tr><tr><td colspan="1" rowspan="1"><p>Median net APR</p></td><td colspan="1" rowspan="1"><p>+4.5%</p></td><td colspan="1" rowspan="1"><p><strong>+1.5%</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p>Net profitable vs HODL</p></td><td colspan="1" rowspan="1"><p>59.8%</p></td><td colspan="1" rowspan="1"><p><strong>53.7%</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p>Positions flipped unprofitable by the fee</p></td><td colspan="1" rowspan="1"><br></td><td colspan="1" rowspan="1"><p><strong>491</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p>Protocol take over these positions' observed lifetimes</p></td><td colspan="1" rowspan="1"><br></td><td colspan="1" rowspan="1"><p><strong>$6.8M of $30.0M gross fees</strong></p></td></tr></tbody></table><p><em>[Lifetime net APR distribution, no-fee scenario vs fee always on: chart_results_hist.png]</em></p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/4847b920d5af083fef4176bb47229b360ab40d9d17f48ed24fd7236f7a4d0521.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAASCAIAAAC1qksFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEo0lEQVR4nGNgEZHkk1YMSc1JLKyIzCr0iUt2CYmq7JoYmJxh5RXoFhpj7x8WlJIZkVlg4OARmVXoEhrDICCGiZgFJSAMFhFJZMTAICAmrqZd3jUhr6G1dsLU1Mr6pJKqzKqmpJKqpNIan/iU9Mr6uPzSzKqGgOSMzKqG8Mx8QXlVZRMrdStHaW0jOX1TGW1jKS09MTVtZRNrKS09dAugFI8wAzs/AzsfiASx+aAiPMJ80op80gpCSqqC8qrSWgaCCsoQTwspqYKlFEXVNcRUtSTUdKS1DKS19LkkZNEtYBAQs/IKjMgsAAVRfIpLaExQSmZYZq5PfIpXbFJ4Zr5LaEx4Zr6MtrGQkqq+qRufpAKDgAgkWFhEJJ1DY2PySotbu4taukIzcvmkFZEDCmqBT3xK67T5XbMXV3dPzqxqqOya6BOfomRooWhgJqdjLKGmI6NtzCspzyAgkhfS4GkZLSyjxi0iyyICsoBTWJpfRllaS19aywDNdKQggsUVk6A4k6A4lMuLHI2ikJCsb5qxZdPF+RVrk8LKOcSlocHLKwYiwQxQbPOKQjyHsIAYxCUhy8DOP2XGuiuXPjbUzbj54b+TYyQDO59FVKhBgLemm5OOt4dJaICyjbVBgKe4tg7EDhIsYBYWF5VS37f/ztpjF468frXlzLVNRy+bhPq5ecS6+sbqmDnbu4c5ekfJ6pgIKCjzSMmT5gMOUWlmYbEwx7Qj155tOnd1963789fu23PhXtGCCYLyqnI6JsIKapLqujLaxuJq2kyC4gSCiENUGoktxSIiwSEqxSwsHuWcve3s9VX7Ts9ds3/JzqOrNp048vyFgb8HAzMvckRiiWRkozlEpRkERFmFJDnEpTnEpRkERNiFpEA6OYRa62bf+vd/wYYDy3ceX77z+IINB/afvjfl1CZxbZCrsbqVAcPhEgxswsEhWVL6eoyc4twCsgam7g11M+zcQxP9i2+8+bn72n24BQu3H9m08+KmG1fDGvIY+cQhiQqnBWCHiwjLqJVmdT9983/3yTvb1l84dOrx+Tsfnr75//L3/1tf/u2+82D9gQsQ0yFo5fYTyzccW/viiEGANwOrELeULC4LJBjYeVQ1rBfO33vn///1xy8dOvvo3ItP28/dXL731NrD5+avP7Bw+5EFGw5sO3UN2YKlO49v3Xtl/t4DnfsWCCgoMXCKMAtKgMIZ5huoBSIyGrGZFZcefDn1+O2CDQcWbDgwZ/2+2at2Q0IDHibLdx5ff+QisgXLdx5fsvPokaOP1pw5t+DGTqvYQCFlZWiZxs4PLU1ldUxO3X998+2fpXuOz1y1C03/clS0/fjNdYdRQglix569tw6cuH/hzZflF0+XzZ7mk5pl4uEPypsMAmJy+mYGLt7iatqyOiZS2sZWXiGqZnayOiYQZOUVomBoBeXqm8WnVgYXFUprG8nqmKia2dn5h0PYkpp65i6B9p5hmkaOtp7h7rFJ4YWl0loGoCDikpAVV9NWNDCT0tKT1tKX0tIDle+qWhCGnL4puCADlWVCSqASG1Roy6kw8AiCk7wEg4AoGIHKK2ZhcVBByyMIKeq5xKUBOK/bw2AyxC8AAAAASUVORK5CYII=" nextheight="1350" nextwidth="2400" class="paragraph-editor-image"><figcaption></figcaption></figure><p>Per position, the median cost is 3.5 points of net APR. That is each position measured against itself, which is why it differs from the 3.0-point gap between the two medians above: the positions earning the most fees take the biggest cuts. The median profitable position gives up 28% of its net return. The fee flips 491 positions, one in ten of everything that would be profitable without it.</p><p>Separately from the scenario comparison: <strong>the protocol has actually collected about $3.6M from these positions since activation.</strong> That figure is realized revenue, not a model; $2.5M of it came from positions that straddle activation and $1.1M from positions created after the fee switch. </p><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/8bbe8512da080439f24f4e3b56ec31af3008e82b23f5944ddffe8e8610678287.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAIAAACMdijuAAAACXBIWXMAAAsTAAALEwEAmpwYAAADKklEQVR4nIXTXWscVRgH8Gd2Xs7JJjszZ3fOzJmXZV+y7uxL0rrJzna3cbPpEhe3zTYmwVZoQouKGklaK5h2lwRqo6IXimDohQEVBC/7VXrvJxDBi4KIIHhkdpKSC4Pw4+F/njNwmHnmAOimRN24mxcNO25nMPOkpB13s5NePuEVJOpK1MUsLVF3gmVEw44eViwPs3RUhSQDYp0LdFOxvEp7ic3U5pb7ubkGyfvFZnu20620l8zyhUKwMLPYNYrVl7s9Z6ZmVy+WX1k0/EohaOXqzdnFJYW5QEyRsEjs1OkBxIoRhoiDU66sO6LKEHEV4qCUK2kMp9wJw5N1W9ZtlHQQcWCSgqwBTgLSQdYBJQFTmEyBpoGujxmgp8IaHSDopmR7Vn8h1WuQ5Xnav2T1m7TXTC4H7LUWfbVh9VrkSt3qNUk3IN0A1Ys48KM6Dj4OCmqletHpVN2FC27nSmb1crq/lL0+ZWSBUIA4jbfKW78/2PwtdOvXvdvPh9v88H3+SWSbPz4btvnjscMovMcP7/LhzrOf+cY/fIPzLc5vcb4ZmnHa4WuBaonFbO2rldrXg6jOfTOoH63Wj1bnvw3rqbUzOdpaC56s1482Lh0PWg/f/b52/F3j+MfGDz8FJ5hVDb9VOAPNQrIlxagSo6KQUiQTSaYsGEg0FdHEkoUkUxIMJJlItpSoKTMpRgESAOrYFMQQgAKSCFPhCqZACMfAABKWWMiW9gel/RV/dK241/dHK6WD6/7waml/EOXSwSBcHgzC/uiaP1qpPHrdH17N7bTzu538bie308l+0J3+sF2+sfpR8eH90t798gOdvhSOOpzB5fLbf43u/DF668/R7efDd/4+uMs/3eWf/Z/P7/EvXtjlX37MH9375Sm/yfmbnN/hs94iqCqAZoqeS9fnzzLfqJ8jiFg3TsILdD1gN+e9Xmcjv7U2vbk+vZkwcuO/iFgiYVhz4rqHVDsKSsLBmoM1D2sOUm05YcvjjoCpgChIyXMhDdTJiEDoyUUTkmwincdeDnu5eGYau9koT3h5HPbDLZmlsZtV7AxyM6LpCCn235JMInYkumj/Aggt9f0sWYmcAAAAAElFTkSuQmCC" nextheight="880" nextwidth="2400" class="paragraph-editor-image"><figcaption></figcaption></figure><p><em>[The cohort's $30.0M in gross fees split two ways: scenario vs reality: chart_results_money.png]</em></p><h2 level="2" id="h-where-it-costs-the-most">Where it costs the most</h2><figure float="none" class="paragraph-figure paragraph-figure-none"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/470f42a1eab3a0dfa042977e3bd4bae06b902fbc3039c5bda9a030117860e9c0.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAdCAIAAABE/PnQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD00lEQVR4nJVW7ZKrKBBtnUSvGkEFBNSIo9GYOzs7VffPvv+T7VajMTr5mNoUZRkQT/c5pxsBwhSYjsrG5QUw5anak7XLC5cXvqp/qQaYCrRxuHZE6YjCl7XD9E4e30SJW4IEIvZqQJB4yrz/+UeNfxPTq/FLjX9l3ci6UQ4fef+bmpO+fKXtWY1frLvkwwdtetaN1PTsdAGaAxEvASKGSYTpZjbmOPCGQSwgZEA4JGKepDkwCUzhDc3nyacAIYMsd+URmZFHh+kZ7waZ4n3AcCzRIIZ6ENkjgEmDNm3P1JwCbTBlzPoaVyx3tAIhIFtFSjgmhwB3b7xlb69zUFYrX5ugMGHZ+NoAFVN0flyL/Dd0JfB8BSBcWgCROEm2FDEFXEMmQZSIcVsI2Zuq3lQFTLmqWkmXQkjBt3GswhTZOebv0KkN8KRQJnE7U1uAiEGQOHy24Pe4ou3AVcqCLtInaCVkKyNlEi2QCLzOFNlXz0RlMiia6NhiIE8FTL240t0fOBb4WGL1WLE3UeTw4prBlA5TCL48tN4T3WcgINNAZm43S1NYi9QQpg4viOmoORFzwll8+0t+IobyYlk8Woq3N9MfT9VBgRbyVL1TtaesWZ8CcJV9uN07VNeMv7loqkGurxRZ6n1lfG08WWM7UvUPDYCwgJqSfcKlQhetWVqKfNYgTCGTnqwPx84Rxczgj/VJLD9ojUer6+22kpWvTdL0O3nEPVMbeCVDCoTvSQ2yAHb3GKpofTVxMAMGCfgUQjSrI8qobF9r4NIik8O+7UBe3bKpAwVZDmzRYHGVbS+uLH11axVwF/6eVFp8wlhAcu2AG5EtwKaSQ8vmMiLsGa8LDeLEjyuVfcCpwD74LYNMQrLOAEnXLq9AFHO7/rkOBJDcEs0fNVSkcVNoh2OXtkPS9FhrzPbC1xhEAJFeXAHL5wwWmKVUNyL71A4CMY9NF5YNLmMqzwD4Gy0lHZ3iCK3BUlhOCyw0jSLfetG6dTDlK7PDQuPzWRY+y4BBSP2oyg8D1BqMXmlgD2qkYemmUx5MHerOk7UVWUk6huczFNbX32DIxMD1cF3HMZXRplXcNRO0KWbAZ+8+ogio5HHvNS002440GXSp1gebY4E5ris+vPOrPbedyHJ9X8y4uhb5WTOZjiSk1X6bTB8Ts/hTVdqvLpojV89eYr8enjgyyXEptDcIMAdu7TCxZ8Okk6fvxjQJu2CnStaP8vyZ9D0bR9aPZBjSYUg7e8VxSYcLG0fSnYPKHEy/l++kPcfG7Iv6l67S7gxcQUAeDAD496ff+hnc8H9+/wF0LrId3b8kSAAAAABJRU5ErkJggg==" nextheight="2138" nextwidth="2400" class="paragraph-editor-image"><figcaption></figcaption></figure><p><em>[Median lifetime net APR by width, fee tier, and network, before and after the fee: chart_where_dumbbell.png]</em></p><p>By range width (width is the ratio of a position's upper price bound to its lower one; a 1.8x range on ETH/USDC runs, for example, from $1,500 to $2,700; full range means the position's ticks span the entire usable range for its fee tier):</p><table class="paragraph-table" style="min-width: 100px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Width</p></th><th colspan="1" rowspan="1"><p>No fee</p></th><th colspan="1" rowspan="1"><p>Fee always on</p></th><th colspan="1" rowspan="1"><p>Flipped</p></th></tr><tr><td colspan="1" rowspan="1"><p>Narrow (&lt;1.3x)</p></td><td colspan="1" rowspan="1"><p>-17.8%</p></td><td colspan="1" rowspan="1"><p>-20.8%</p></td><td colspan="1" rowspan="1"><p>96</p></td></tr><tr><td colspan="1" rowspan="1"><p>Middle (1.3-1.8x)</p></td><td colspan="1" rowspan="1"><p>+7.9%</p></td><td colspan="1" rowspan="1"><p>+3.3%</p></td><td colspan="1" rowspan="1"><p>175</p></td></tr><tr><td colspan="1" rowspan="1"><p>Wide (1.8x+)</p></td><td colspan="1" rowspan="1"><p>+9.6%</p></td><td colspan="1" rowspan="1"><p>+6.3%</p></td><td colspan="1" rowspan="1"><p>199</p></td></tr><tr><td colspan="1" rowspan="1"><p>Full range</p></td><td colspan="1" rowspan="1"><p>+2.2%</p></td><td colspan="1" rowspan="1"><p>+1.3%</p></td><td colspan="1" rowspan="1"><p>21</p></td></tr></tbody></table><p>Splitting each width by fee tier:</p><table class="paragraph-table" style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Median net APR, no fee / fee always on</p></th><th colspan="1" rowspan="1"><p>0.01%/0.05% pools (25% cut)</p></th><th colspan="1" rowspan="1"><p>0.3%/1% pools (16.7% cut)</p></th></tr><tr><td colspan="1" rowspan="1"><p>Narrow</p></td><td colspan="1" rowspan="1"><p>-22.5% / -25.6%</p></td><td colspan="1" rowspan="1"><p>-11.4% / -14.6%</p></td></tr><tr><td colspan="1" rowspan="1"><p>Middle</p></td><td colspan="1" rowspan="1"><p>+4.2% / <strong>0.0%</strong></p></td><td colspan="1" rowspan="1"><p>+11.7% / +7.3%</p></td></tr><tr><td colspan="1" rowspan="1"><p>Wide</p></td><td colspan="1" rowspan="1"><p>+8.7% / +4.7%</p></td><td colspan="1" rowspan="1"><p>+10.9% / +7.9%</p></td></tr><tr><td colspan="1" rowspan="1"><p>Full range</p></td><td colspan="1" rowspan="1"><p>+2.4% / +1.0%</p></td><td colspan="1" rowspan="1"><p>+2.1% / +1.4%</p></td></tr></tbody></table><p>Wide ranges stay clearly positive under the fee on both tiers. Middle widths take the deepest cut, fee-dependent enough to feel the haircut, not wide enough to earn through it, and on the 25% tier their median under the fee is exactly zero. Narrow ranges lose money in both scenarios: the fees they earn do not come close to covering the divergence loss a tight range accumulates, with or without a protocol cut.</p><p>By position age:</p><table class="paragraph-table" style="min-width: 125px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Age</p></th><th colspan="1" rowspan="1"><p>n</p></th><th colspan="1" rowspan="1"><p>No fee</p></th><th colspan="1" rowspan="1"><p>Fee always on</p></th><th colspan="1" rowspan="1"><p>Flipped</p></th></tr><tr><td colspan="1" rowspan="1"><p>30-90 days</p></td><td colspan="1" rowspan="1"><p>2,592</p></td><td colspan="1" rowspan="1"><p>+9.7%</p></td><td colspan="1" rowspan="1"><p>+4.9%</p></td><td colspan="1" rowspan="1"><p>252</p></td></tr><tr><td colspan="1" rowspan="1"><p>90-180 days</p></td><td colspan="1" rowspan="1"><p>2,429</p></td><td colspan="1" rowspan="1"><p>+14.7%</p></td><td colspan="1" rowspan="1"><p>+10.7%</p></td><td colspan="1" rowspan="1"><p>108</p></td></tr><tr><td colspan="1" rowspan="1"><p>180 days-1 year</p></td><td colspan="1" rowspan="1"><p>2,350</p></td><td colspan="1" rowspan="1"><p>-26.2%</p></td><td colspan="1" rowspan="1"><p>-28.5%</p></td><td colspan="1" rowspan="1"><p>81</p></td></tr><tr><td colspan="1" rowspan="1"><p>1 year+</p></td><td colspan="1" rowspan="1"><p>682</p></td><td colspan="1" rowspan="1"><p>+9.1%</p></td><td colspan="1" rowspan="1"><p>+5.4%</p></td><td colspan="1" rowspan="1"><p>50</p></td></tr></tbody></table><p>Read the age rows for what they are: entry-date cohorts. The 180-days-to-1-year bucket is deeply underwater in both scenarios because of when it entered, not because of the fee: those positions were opened between late July 2025 and late January 2026, a window containing ETH's August highs above $4,300, and ETH has roughly halved since. Their median divergence loss is 24% of deposits against 6% in fees, so the market path swamps everything else. The fee's own effect is the gap between the two columns, and it stays in a narrow band (2.3 to 4.8 points) across every age. What does move with age is the flips: over half of all flipped positions (252 of 491) are in the youngest bucket, where cushions are thinnest and a quarter of the fees is the difference between positive and negative.</p><p>Two aggregate medians cross zero under the fee: <strong>the 0.01%/0.05% tier goes from +2.2% to -1.1%</strong>, and <strong>Arbitrum goes from +1.1% to -2.3%.</strong> On the highest-rate tier and the chain most concentrated in it (92% of Arbitrum's cohort is on 0.05% pools), the median position's lifetime economics go negative under the fee. Base goes +7.9% to +4.5%; mainnet +5.0% to +2.6%.</p><h2 level="2" id="h-by-pool">By pool</h2><table class="paragraph-table" style="min-width: 175px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Pool</p></th><th colspan="1" rowspan="1"><p>Positions</p></th><th colspan="1" rowspan="1"><p>No fee</p></th><th colspan="1" rowspan="1"><p>Fee on</p></th><th colspan="1" rowspan="1"><p>Flipped</p></th><th colspan="1" rowspan="1"><p>Lifetime take</p></th><th colspan="1" rowspan="1"><p>Collected so far</p></th></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/arbitrum/uniswapv3/0xc6962004f452be9203591991d15f6b388e09e8d0">WETH/USDC 0.05% (Arbitrum)</a></p></td><td colspan="1" rowspan="1"><p>2,447</p></td><td colspan="1" rowspan="1"><p>+0.8%</p></td><td colspan="1" rowspan="1"><p><strong>-2.7%</strong></p></td><td colspan="1" rowspan="1"><p>158</p></td><td colspan="1" rowspan="1"><p>$498k</p></td><td colspan="1" rowspan="1"><p>$184k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/base/uniswapv3/0x6c561b446416e1a00e8e93e221854d6ea4171372">WETH/USDC 0.3% (Base)</a></p></td><td colspan="1" rowspan="1"><p>1,832</p></td><td colspan="1" rowspan="1"><p>+10.5%</p></td><td colspan="1" rowspan="1"><p>+6.9%</p></td><td colspan="1" rowspan="1"><p>116</p></td><td colspan="1" rowspan="1"><p>$231k</p></td><td colspan="1" rowspan="1"><p>$185k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/mainnet/uniswapv3/0x4e68ccd3e89f51c3074ca5072bbac773960dfa36">WETH/USDT 0.3% (mainnet)</a></p></td><td colspan="1" rowspan="1"><p>1,114</p></td><td colspan="1" rowspan="1"><p>+3.9%</p></td><td colspan="1" rowspan="1"><p>+1.6%</p></td><td colspan="1" rowspan="1"><p>56</p></td><td colspan="1" rowspan="1"><p>$618k</p></td><td colspan="1" rowspan="1"><p>$435k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/mainnet/uniswapv3/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640">USDC/WETH 0.05% (mainnet)</a></p></td><td colspan="1" rowspan="1"><p>687</p></td><td colspan="1" rowspan="1"><p>+9.1%</p></td><td colspan="1" rowspan="1"><p>+5.3%</p></td><td colspan="1" rowspan="1"><p>51</p></td><td colspan="1" rowspan="1"><p>$4.39M</p></td><td colspan="1" rowspan="1"><p>$2.35M</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/arbitrum/uniswapv3/0x641c00a822e8b671738d32a431a4fb6074e5c79d">WETH/USDT 0.05% (Arbitrum)</a></p></td><td colspan="1" rowspan="1"><p>522</p></td><td colspan="1" rowspan="1"><p>+0.4%</p></td><td colspan="1" rowspan="1"><p><strong>-3.6%</strong></p></td><td colspan="1" rowspan="1"><p>39</p></td><td colspan="1" rowspan="1"><p>$119k</p></td><td colspan="1" rowspan="1"><p>$38k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/base/uniswapv3/0xd0b53d9277642d899df5c87a3966a349a798f224">WETH/USDC 0.05% (Base)</a></p></td><td colspan="1" rowspan="1"><p>513</p></td><td colspan="1" rowspan="1"><p>-4.1%</p></td><td colspan="1" rowspan="1"><p>-7.4%</p></td><td colspan="1" rowspan="1"><p>22</p></td><td colspan="1" rowspan="1"><p>$115k</p></td><td colspan="1" rowspan="1"><p>$37k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/mainnet/uniswapv3/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8">USDC/WETH 0.3% (mainnet)</a></p></td><td colspan="1" rowspan="1"><p>273</p></td><td colspan="1" rowspan="1"><p>+5.9%</p></td><td colspan="1" rowspan="1"><p>+3.6%</p></td><td colspan="1" rowspan="1"><p>14</p></td><td colspan="1" rowspan="1"><p>$478k</p></td><td colspan="1" rowspan="1"><p>$163k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/arbitrum/uniswapv3/0xc473e2aee3441bf9240be85eb122abb059a3b57c">WETH/USDC 0.3% (Arbitrum)</a></p></td><td colspan="1" rowspan="1"><p>217</p></td><td colspan="1" rowspan="1"><p>+9.2%</p></td><td colspan="1" rowspan="1"><p>+5.9%</p></td><td colspan="1" rowspan="1"><p>4</p></td><td colspan="1" rowspan="1"><p>$29k</p></td><td colspan="1" rowspan="1"><p>$15k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/mainnet/uniswapv3/0x11b815efb8f581194ae79006d24e0d814b7697f6">WETH/USDT 0.05% (mainnet)</a></p></td><td colspan="1" rowspan="1"><p>122</p></td><td colspan="1" rowspan="1"><p>-0.5%</p></td><td colspan="1" rowspan="1"><p>-4.3%</p></td><td colspan="1" rowspan="1"><p>9</p></td><td colspan="1" rowspan="1"><p>$216k</p></td><td colspan="1" rowspan="1"><p>$129k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/mainnet/uniswapv3/0xe0554a476a092703abdb3ef35c80e0d76d32939f">USDC/WETH 0.01% (mainnet)</a></p></td><td colspan="1" rowspan="1"><p>108</p></td><td colspan="1" rowspan="1"><p>+2.2%</p></td><td colspan="1" rowspan="1"><p>-1.5%</p></td><td colspan="1" rowspan="1"><p>11</p></td><td colspan="1" rowspan="1"><p>$36k</p></td><td colspan="1" rowspan="1"><p>$19k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/mainnet/uniswapv3/0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b">WETH/USDT 0.01% (mainnet)</a></p></td><td colspan="1" rowspan="1"><p>98</p></td><td colspan="1" rowspan="1"><p>+2.2%</p></td><td colspan="1" rowspan="1"><p>-0.5%</p></td><td colspan="1" rowspan="1"><p>6</p></td><td colspan="1" rowspan="1"><p>$52k</p></td><td colspan="1" rowspan="1"><p>$15k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/arbitrum/uniswapv3/0xc82819f72a9e77e2c0c3a69b3196478f44303cf4">WETH/USDT 0.3% (Arbitrum)</a></p></td><td colspan="1" rowspan="1"><p>32</p></td><td colspan="1" rowspan="1"><p>-5.8%</p></td><td colspan="1" rowspan="1"><p>-9.5%</p></td><td colspan="1" rowspan="1"><p>1</p></td><td colspan="1" rowspan="1"><p>$3k</p></td><td colspan="1" rowspan="1"><p>$1k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/arbitrum/uniswapv3/0xc31e54c7a869b9fcbecc14363cf510d1c41fa443">WETH/USDC 0.05% (Arbitrum, USDC.e)</a></p></td><td colspan="1" rowspan="1"><p>23</p></td><td colspan="1" rowspan="1"><p>+4.6%</p></td><td colspan="1" rowspan="1"><p>+0.1%</p></td><td colspan="1" rowspan="1"><p>3</p></td><td colspan="1" rowspan="1"><p>$12k</p></td><td colspan="1" rowspan="1"><p>$508</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/arbitrum/uniswapv3/0x6f38e884725a116c9c7fbf208e79fe8828a2595f">WETH/USDC 0.01% (Arbitrum)</a></p></td><td colspan="1" rowspan="1"><p>21</p></td><td colspan="1" rowspan="1"><p>-37.8%</p></td><td colspan="1" rowspan="1"><p>-39.3%</p></td><td colspan="1" rowspan="1"><p>1</p></td><td colspan="1" rowspan="1"><p>$1.6k</p></td><td colspan="1" rowspan="1"><p>$122</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/base/uniswapv3/0xb4cb800910b228ed3d0834cf79d697127bbb00e5">WETH/USDC 0.01% (Base)</a></p></td><td colspan="1" rowspan="1"><p>18</p></td><td colspan="1" rowspan="1"><p>-33.1%</p></td><td colspan="1" rowspan="1"><p>-36.0%</p></td><td colspan="1" rowspan="1"><p>0</p></td><td colspan="1" rowspan="1"><p>$1.1k</p></td><td colspan="1" rowspan="1"><p>$92</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/base/uniswapv3/0x0b1c2dcbbfa744ebd3fc17ff1a96a1e1eb4b2d69">WETH/USDC 1% (Base)</a></p></td><td colspan="1" rowspan="1"><p>11</p></td><td colspan="1" rowspan="1"><p>+19.2%</p></td><td colspan="1" rowspan="1"><p>+14.3%</p></td><td colspan="1" rowspan="1"><p>0</p></td><td colspan="1" rowspan="1"><p>$9k</p></td><td colspan="1" rowspan="1"><p>$7k</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/base/uniswapv3/0xce1d8c90a5f0ef28fe0f457e5ad615215899319a">WETH/USDT 0.3% (Base)</a></p></td><td colspan="1" rowspan="1"><p>10</p></td><td colspan="1" rowspan="1"><p>-13.7%</p></td><td colspan="1" rowspan="1"><p>-15.6%</p></td><td colspan="1" rowspan="1"><p>0</p></td><td colspan="1" rowspan="1"><p>$205</p></td><td colspan="1" rowspan="1"><p>$145</p></td></tr><tr><td colspan="1" rowspan="1"><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/pool/mainnet/uniswapv3/0xc5af84701f98fa483ece78af83f11b6c38aca71d">WETH/USDT 1% (mainnet)</a></p></td><td colspan="1" rowspan="1"><p>5</p></td><td colspan="1" rowspan="1"><p>+10.9%</p></td><td colspan="1" rowspan="1"><p>+6.9%</p></td><td colspan="1" rowspan="1"><p>0</p></td><td colspan="1" rowspan="1"><p>$13k</p></td><td colspan="1" rowspan="1"><p>$1k</p></td></tr></tbody></table><p>The mainnet USDC/WETH 0.05% pool dominates the dollars: $4.4M of the cohort's $6.8M lifetime take, and $2.3M of the $3.6M collected so far.</p><h2 level="2" id="h-cross-checking-against-on-chain-receipts">Cross-checking against on-chain receipts</h2><p>The protocol's revenue is independently visible on-chain: every sweep emits a `CollectProtocol` event, and whatever has accrued since the last sweep is held in each pool's `protocolFees` slot. Summing both across the 20 pools from each pool's activation block through July 24 gives <strong>$13.4M</strong>, all but a few thousand dollars of it already swept to each chain's TokenJar, Uniswap's fee-collection contract. Collection is continuous: the first sweeps happened within two days of activation, and every pool was swept within the last day.</p><p>The cohort's $3.6M realized take is 27% of that, and in every pool it is below both the pool-wide total and the cohort's share of TVL.</p><table class="paragraph-table" style="min-width: 125px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Pool</p></th><th colspan="1" rowspan="1"><p>Protocol revenue on-chain</p></th><th colspan="1" rowspan="1"><p>Cohort take</p></th><th colspan="1" rowspan="1"><p>Cohort share of revenue</p></th><th colspan="1" rowspan="1"><p>Cohort share of pool TVL</p></th></tr><tr><td colspan="1" rowspan="1"><p>WETH/USDC 0.3% (Base)</p></td><td colspan="1" rowspan="1"><p>$4.66M</p></td><td colspan="1" rowspan="1"><p>$185k</p></td><td colspan="1" rowspan="1"><p>4.0%</p></td><td colspan="1" rowspan="1"><p>21%</p></td></tr><tr><td colspan="1" rowspan="1"><p>USDC/WETH 0.05% (mainnet)</p></td><td colspan="1" rowspan="1"><p>$3.12M</p></td><td colspan="1" rowspan="1"><p>$2.35M</p></td><td colspan="1" rowspan="1"><p>75.3%</p></td><td colspan="1" rowspan="1"><p>82%</p></td></tr><tr><td colspan="1" rowspan="1"><p>WETH/USDT 0.3% (mainnet)</p></td><td colspan="1" rowspan="1"><p>$2.63M</p></td><td colspan="1" rowspan="1"><p>$435k</p></td><td colspan="1" rowspan="1"><p>16.5%</p></td><td colspan="1" rowspan="1"><p>54%</p></td></tr><tr><td colspan="1" rowspan="1"><p>WETH/USDC 0.05% (Arbitrum)</p></td><td colspan="1" rowspan="1"><p>$1.05M</p></td><td colspan="1" rowspan="1"><p>$184k</p></td><td colspan="1" rowspan="1"><p>17.5%</p></td><td colspan="1" rowspan="1"><p>60%</p></td></tr><tr><td colspan="1" rowspan="1"><p>USDC/WETH 0.3% (mainnet)</p></td><td colspan="1" rowspan="1"><p>$472k</p></td><td colspan="1" rowspan="1"><p>$163k</p></td><td colspan="1" rowspan="1"><p>34.6%</p></td><td colspan="1" rowspan="1"><p>76%</p></td></tr><tr><td colspan="1" rowspan="1"><p>WETH/USDT 0.05% (mainnet)</p></td><td colspan="1" rowspan="1"><p>$426k</p></td><td colspan="1" rowspan="1"><p>$129k</p></td><td colspan="1" rowspan="1"><p>30.2%</p></td><td colspan="1" rowspan="1"><p>78%</p></td></tr><tr><td colspan="1" rowspan="1"><p>WETH/USDC 0.05% (Base)</p></td><td colspan="1" rowspan="1"><p>$347k</p></td><td colspan="1" rowspan="1"><p>$37k</p></td><td colspan="1" rowspan="1"><p>10.7%</p></td><td colspan="1" rowspan="1"><p>36%</p></td></tr><tr><td colspan="1" rowspan="1"><p>13 smaller pools</p></td><td colspan="1" rowspan="1"><p>$659k</p></td><td colspan="1" rowspan="1"><p>$98k</p></td><td colspan="1" rowspan="1"><p>14.8%</p></td><td colspan="1" rowspan="1"><p>51%</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Total</strong></p></td><td colspan="1" rowspan="1"><p><strong>$13.4M</strong></p></td><td colspan="1" rowspan="1"><p><strong>$3.6M</strong></p></td><td colspan="1" rowspan="1"><p><strong>26.8%</strong></p></td><td colspan="1" rowspan="1"><p>53%</p></td></tr></tbody></table><p>The two extremes tell the same story from opposite ends. The mainnet USDC/WETH 0.05% pool is dominated by large passive positions, our cohort holds 82% of its TVL, and accordingly pays 75% of its protocol fee. The Base 0.3% pool is the busiest revenue source of all 20, but its fee flow comes overwhelmingly from tight, frequently recycled positions that the never-withdrawn filter excludes, so the cohort's 21% of TVL pays only 4% of the take. TVL shares come from our pool snapshots and are used only for this plausibility check. The per-pool `CollectProtocol` tally and the script that produced it are in the published dataset.</p><h2 level="2" id="h-what-to-do-with-this">What to do with this</h2><p>The fee is part of the terrain now. For the most common strategy, LPing to beat holding, fees have to out-earn divergence loss, and on these pools a sixth to a quarter of them goes to the protocol first. Wide ranges clear that bar most often, on both tiers. Middle and tight ranges on the 25% tier are where lifetime economics stop working at the median. Your dashboard shows net APR (fees and divergence loss together) for every position. And a note on the backtester: it replays observed on-chain fee growth, which on fee-on pools is already net of the protocol's cut, so do not apply any additional haircut to its results.</p><p>Check it out <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">Revert</a></p><h2 level="2" id="h-check-the-data-yourself">Check the data yourself</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gist.github.com/revservox/b5a710c617d0b3b2102193f00de13ca2">One CSV row per position</a>: the boundary-reconstructed fee split, both scenarios, explicit profitability booleans, unrounded values, and a revert.finance link per row so every input can be checked against its live page. The bundle includes the per-pool activation table (block, transaction, timestamp), the boundary reconstruction script, and the on-chain cross-check: a per-pool `CollectProtocol` tally with the script that produced it. Snapshot: July 24, 2026.</p><br>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <category>uniswap amm feeswitch</category>
        </item>
        <item>
            <title><![CDATA[Revert is live on Robinhood Chain]]></title>
            <link>https://paragraph.com/@revertfinance/revert-is-live-on-robinhood-chain</link>
            <guid>xvsfSSW7fgyv1RqCTzEi</guid>
            <pubDate>Tue, 21 Jul 2026 00:17:03 GMT</pubDate>
            <description><![CDATA[Revert now supports Robinhood Chain, bringing full Uniswap v3 position tracking, management, and pool discovery to the new L2 network's unique crypto and tokenized equity pools.]]></description>
            <content:encoded><![CDATA[<p>Revert now supports Robinhood Chain. If you're LPing on Uniswap v3 there, your positions show up on your dashboard like on any other network: full metrics, position management, and pool discovery from day one.</p><h3 level="3" id="h-a-new-chain-and-a-new-kind-of-pool"><strong>A new chain, and a new kind of pool</strong></h3><p>Robinhood Chain went live on mainnet on July 1st: an Arbitrum-stack L2 settling to Ethereum, built around tokenized US equities and ETFs trading around the clock. That makes it an unusual place to provide liquidity. Alongside the familiar crypto pairs, there's an emerging set of pools around tokenized real-world assets, and liquidity there is still forming.</p><p>Early markets are where informed LPs do best: ranges are unpriced, competition is thin, and fee tiers haven't settled. They're also where discipline matters most. New pools mean thin books, volatile spreads, and token risk that hasn't been tested. The tooling for judging that tradeoff is exactly what we ship.</p><h3 level="3" id="h-whats-live-today"><strong>What's live today</strong></h3><p><strong>Position tracking.</strong> Every Uniswap v3 position on Robinhood Chain, with the metrics you know from other networks: PnL vs HODL, fee APR, divergence loss, real-time fees. Choose your benchmark (HODL, ETH, or USD) per position.</p><p><strong>Create and manage positions.</strong> Open new v3 positions, add and withdraw liquidity, and manage ranges directly from the dashboard.</p><p><strong>Top positions.</strong> Browse the largest and best-performing v3 positions on the network to scout ranges, fee tiers, and strategies that are actually working, especially useful while these pools are young and reference points are scarce.</p><p><strong>Price simulation.</strong> On any live position, simulate the effect of price moves before they happen: asset distribution and divergence loss at any target price you set.</p><h3 level="3" id="h-getting-started"><strong>Getting started</strong></h3><p>Connect your wallet at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">revert.finance</a>, switch to Robinhood Chain, and your positions are there. Or start from <a target="_blank" rel="noopener noreferrer" class="dont-break-out notion-link-token notion-focusable-token notion-enable-hover" href="https://revert.finance/#/discover">Create Position</a> to open your first one.</p><p>More to come on this network. We'll keep it boring and announce things when they ship.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <enclosure url="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/7b05783ecc834bd52e980fbda56eb4a5c26f4656de2cf79ff018f1dccc1a34a3.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Hardening Auto-Range for Lend Vaults]]></title>
            <link>https://paragraph.com/@revertfinance/hardening-auto-range-for-lend-vaults</link>
            <guid>ScpM0RFz03CRbKjVwyMW</guid>
            <pubDate>Thu, 09 Jul 2026 17:41:16 GMT</pubDate>
            <description><![CDATA[TL;DR A security researcher privately reported an issue in the Auto-Range V3 contract on Ethereum mainnet, Arbitrum, and Base. The researcher has asked to remain anonymous. Thank you, you know who you are. No user funds were at risk at any time, and no positions were affected. We paused Auto-Range executions on those three chains on June 27, deployed fixed contracts on July 5, and completed the migration on [DATE]. If you had Auto-Range active on a Uniswap v3 position on mainnet, Arbitrum, or...]]></description>
            <content:encoded><![CDATA[<div data-type="x402Embed"></div><p><strong>TL;DR</strong></p><ul><li><p>A security researcher privately reported an issue in the Auto-Range V3 contract for UniswapV3 on Ethereum mainnet, Arbitrum, and Base. The researcher has asked to remain anonymous. Thank you, you know who you are.</p></li><li><p>No user funds were at risk at any time, and no positions were affected.</p></li><li><p>We paused Auto-Range executions on those three chains, deployed fixed contracts on July 5, and completed the migration on July 11th.</p></li><li><p><strong>If you had Auto-Range active on a Uniswap v3 position on mainnet, Arbitrum, or Base, you need to re-activate it once.</strong> Open the position page and follow the prompt. Configurations on the old contract do not carry over.</p></li><li><p>Auto-Range on Polygon, Optimism, and BNB, and all Aerodrome automations, were not affected.</p></li></ul><h2 id="h-what-you-need-to-do" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What you need to do</h2><p>Uniswapv3 Auto-Range configurations live inside the contract that executes them. Since the fix required deploying a replacement contract, <strong><em>your old configuration cannot follow automatically: re-creating it is a one-time action only you can take.</em></strong></p><ol><li><p>Open your position on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">revert.finance</a>.</p></li><li><p>If the position had Auto-Range on the old contract, you will see a prompt to activate Auto-Range again. Set your range trigger as before and confirm.</p></li><li><p>Optional hygiene: revoke the NFT approval you granted to the old contract address. The old contract can no longer touch vault positions and is no longer operated by us, but there is no reason to leave stale approvals around.</p></li></ol><p>That's it. Fees, positions, and everything else are untouched.</p><h2 id="h-what-happened" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What happened</h2><p>Last week a security researcher reached out through our security contact with a finding in the Auto-Range V3 contract for UniswapV3. </p><p>No user funds were at risk. The issue was not exploitable by the public: the code path in question was only callable by our own permissioned operator account, the same account that already executes your automations within the limits you configure.</p><p>What the issue did was quietly increase how much trust that operator account required. And that is exactly the direction we never want to move in.</p><p>Revert Lend is built around one invariant: anything that touches a position held as collateral must pass through the vault's health checks. That is a promise enforced by code, not by us behaving well. Auto-Range integrates with the vault as a "transformer", so borrowers can rebalance collateral in place, and the vault wraps every such transform in a collateral check before and after.</p><p>The researcher found that the old Auto-Range contract also accepted direct operator execution on positions owned by the vault, skipping the vault wrapper. Your own configuration limits, like slippage caps and reward caps, still applied on that path. What went missing was the vault-level solvency check, and with it the guarantee that even a compromised operator key could not move Lend collateral outside vault rules.</p><p>In practice, safety on that path depended on trusting the operator account. Users never signed up for that trust, and we don't want it. So we treated this with the same urgency as a fund-loss bug.</p><h2 id="h-the-fix" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The fix</h2><p>Our contracts are not upgradeable, on purpose. A fix therefore means a new deployment and a migration, not a silent patch.</p><p>The contract change itself is small and public (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/revert-finance/lend/pull/60">revert-finance/lend PR #60</a>): direct <code>execute</code> and <code>autoCompound</code> calls now revert when the target NFT is owned by a configured vault. The vault path, where the health checks live, becomes the only way to transform collateral. Regression tests cover the edge cases, including old NFTs that retain a stale approval after a range move.</p><p>The operational timeline:</p><table><colgroup><col><col></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Date</p></th><th colspan="1" rowspan="1"><p>Action</p></th></tr><tr><td colspan="1" rowspan="1"><p>June 27</p></td><td colspan="1" rowspan="1"><p>Operator bot stopped executing on the old contracts on mainnet, Arbitrum, and Base</p></td></tr><tr><td colspan="1" rowspan="1"><p>July 5</p></td><td colspan="1" rowspan="1"><p>Fixed contracts deployed on all three chains, ownership transferred to the chain multisigs</p></td></tr><tr><td colspan="1" rowspan="1"><p>July 5 + 48h</p></td><td colspan="1" rowspan="1"><p>Vault allowlisting of the new contracts executed through the Arbitrum and Base timelocks</p></td></tr><tr><td colspan="1" rowspan="1"><p>[DATE]</p></td><td colspan="1" rowspan="1"><p>Old contracts removed from the vault allowlists on all three chains</p></td></tr></tbody></table><p><br>New contract addresses, verified on the block explorers:<br></p><table><colgroup><col><col><col></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Chain</p></th><th colspan="1" rowspan="1"><p>Old Auto-Range V3</p></th><th colspan="1" rowspan="1"><p>Fixed Auto-Range V3</p></th></tr><tr><td colspan="1" rowspan="1"><p>Ethereum</p></td><td colspan="1" rowspan="1"><p><code>0x88481E2Fbc98d4a251655B0F1A4422555EA72d9E</code></p></td><td colspan="1" rowspan="1"><p><code>0x9bac2bae9ed87a56c20fdad502b6f0fe1ed4591b</code></p></td></tr><tr><td colspan="1" rowspan="1"><p>Arbitrum</p></td><td colspan="1" rowspan="1"><p><code>0x5ff2195BA28d2544AeD91e30e5f74B87d4F158dE</code></p></td><td colspan="1" rowspan="1"><p><code>0x4b3a32dc12626cbd0ddbd11481722dcc6e6caf30</code></p></td></tr><tr><td colspan="1" rowspan="1"><p>Base</p></td><td colspan="1" rowspan="1"><p><code>0xA8549424B20a514Eb9e7a829ec013065Bef9Dc1D</code></p></td><td colspan="1" rowspan="1"><p><code>0xa387ad72dacc3c884e601ef946bdef739d72a372</code></p></td></tr></tbody></table><p><br>Between June 27 and the redeploy, Auto-Range executions on these three chains were paused. If your position crossed its trigger during that window, it was not rebalanced. We prefer a paused automation over one running on a contract we have open questions about, every time.</p><h2 id="h-trust-is-the-actual-bug" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Trust is the actual bug</h2><p>The lesson we took from this finding is not "add a check". It's that trust in privileged accounts creeps in silently, and it has to be hunted deliberately.</p><p>The operator account was designed to be low-trust: it can only execute automations users opted into, within limits users configured, and the contracts enforce those limits. This issue widened what trusting the operator meant without anyone deciding it should. The fix restores the boundary: a compromised operator key is once again bounded by contract code, including for Lend collateral.</p><p>We applied the same standard to our own admin keys while we were at it:</p><p>Vault administration on Arbitrum and Base already sits behind 48-hour timelocks, and the entire migration above ran through them. No shortcuts, including for our own security fix.</p><h2 id="h-thanks" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Thanks</h2><p>Our thanks again to the researcher who reported this and chose to stay anonymous. Reports like this one are how trust assumptions get found before they matter.</p><p>Thanks to <strong>PeckShield</strong> for reviewing this fix prior to deployment.</p><p>If you believe you've found a security issue in any Revert contract or system, contact us at hi [@] revert.finance. We take every report seriously and we will not be weird about it.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Aerodrome Lend Relaunches on Base]]></title>
            <link>https://paragraph.com/@revertfinance/aerodrome-lend-relaunches-on-base</link>
            <guid>n7BhMcUcZHeqfz1Rbqjm</guid>
            <pubDate>Mon, 08 Jun 2026 22:23:11 GMT</pubDate>
            <description><![CDATA[Revert Lend support for Aerodrome is live again. Concentrated liquidity providers on Base can once more use their Aerodrome positions as collateral to borrow USDC, while continuing to earn AERO rewards.A Quick Word on the RelaunchShortly after our initial launch in January, an exploit affected the newly deployed Aerodrome vault. We paused the vault within hours, and no user funds were impacted; the affected capital was entirely our own. You can read the full details in our post-mortem. Rather...]]></description>
            <content:encoded><![CDATA[<p>Revert Lend support for Aerodrome is live again. Concentrated liquidity providers on Base can once more use their Aerodrome positions as collateral to borrow USDC, while continuing to earn AERO rewards.</p><h2 id="h-a-quick-word-on-the-relaunch" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">A Quick Word on the Relaunch</h2><p>Shortly after our initial launch in January, an exploit affected the newly deployed Aerodrome vault. We paused the vault within hours, and no user funds were impacted; the affected capital was entirely our own. You can read the full details in our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://paragraph.com/@revertfinance/post%E2%80%91mortem-aerodrome-lend-vault-incident-on-base">post-mortem</a>.</p><p>Rather than patching the original code, we rebuilt the Aerodrome integration from the ground up. The rewritten contracts were put through a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/revert-finance/lend/blob/aerodrome-slipstream/report_cli_cantina_efb6f308_f13b_4110_aff8_0d67181608dd_revert_finance.pdf">public security competition on Cantina,</a> where independent researchers reviewed the code with no high-severity issues identified, and every reported finding has been fixed.</p><h2 id="h-what-changed-under-the-hood" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Changed Under the Hood</h2><p>The rewrite hardens the invariants that matter most for a lending vault built on staked LP positions:</p><ul><li><p><strong>Vault-enforced collateral integrity.</strong> Every execution path that can touch a collateralized position now settles through the vault's health checks. Positions with active debt can no longer be modified in any way that reduces collateral value outside the vault's control, which was the root cause of the January incident.</p></li><li><p><strong>Validated reward swaps.</strong> AERO reward compounding routes through pools validated against on-chain TWAPs with strict price-deviation limits, protecting compounders from manipulation and excessive slippage.</p></li></ul><h2 id="h-market-parameters" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Market Parameters</h2><p>The vault relaunches with the following market parameters:</p><ul><li><p><strong>Lending asset:</strong> USDC</p></li><li><p><strong>Collateral factors:</strong> 85% for USDC, 77.5% for WETH and cbBTC pairs</p></li><li><p><strong>Global limits:</strong> 1M USDC lend cap, 1M USDC debt cap, with 100k USDC daily growth limits</p></li><li><p><strong>Reserve factor:</strong> 10%, with 5% reserve protection</p></li></ul><h2 id="h-what-you-can-do-with-it" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What You Can Do With It</h2><p>This is the same lending engine that has been running on Revert Lend on Arbitrum, now wired into Aerodrome's gauge system on Base.</p><p><strong>Earn lending yield on idle USDC.</strong> Deposit USDC into the vault and earn interest paid by borrowers. Rates adjust dynamically with utilization, and lenders can withdraw at any time subject to available liquidity.</p><p><strong>Borrow against your LP positions.</strong> Deposit an Aerodrome position and stake it into its gauge, and it keeps earning AERO emissions while doubling as collateral. Borrow USDC against it for working capital without closing the position, exiting the pool, or giving up your rewards.</p><p><strong>Lever up in one transaction.</strong> Borrow, swap, and add liquidity atomically to scale your exposure to a pool without bringing in fresh capital. Unwinding works the same way in reverse: remove liquidity, swap, and repay in a single transaction.</p><p><strong>Manage positions without repaying first.</strong> Change ranges, withdraw a portion of liquidity, or rebalance directly on a collateralized position. The vault checks loan health on every operation, so you keep full flexibility as long as the loan stays healthy.</p><h2 id="h-auto-compounding-done-properly" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Auto-Compounding, Done Properly</h2><p>Staked Aerodrome positions earn AERO emissions, but emissions left unclaimed do nothing for you. Compounding them by hand means claiming, swapping to the right token ratio for your range, and re-adding liquidity, over and over, with gas and timing working against you.</p><p>The Revert autocompounder does the whole loop automatically:</p><ul><li><p>Claims accrued AERO from the gauge</p></li><li><p>Swaps it into your position's tokens at the ratio your current range actually needs, through TWAP-validated pools with strict slippage protection</p></li><li><p>Adds the proceeds back as liquidity and restakes, so the new liquidity immediately earns emissions too</p></li></ul><p>The effect compounds in both senses. Your position grows continuously instead of in occasional manual lumps, and on leveraged positions the compounded rewards increase your collateral value, improving loan health over time rather than letting interest erode it.</p><h2 id="h-analytics-for-every-decision" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Analytics for Every Decision</h2><p>Revert started as an analytics tool, and everything above sits on top of it:</p><ul><li><p><strong>Pool discovery.</strong> Compare Aerodrome pools by volume, TVL, emissions, and historical fee and reward APRs to find where liquidity is actually paid.</p></li><li><p><strong>Position-level performance.</strong> Every position gets a full breakdown: fee and reward earnings, PnL versus holding, divergence loss, and APR over time, so you know whether a strategy is really working.</p></li><li><p><strong>Loan monitoring.</strong> Collateral value, debt, and loan health are tracked continuously, so leveraged LPs can see exactly how much headroom they have before acting.</p></li></ul><h2 id="h-getting-started" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Getting Started</h2><p>Head to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">revert.finance</a>, connect your wallet, and deposit your Aerodrome position to unlock lending, leverage, and auto-compounding. If you are new to the pool side, browse the Aerodrome pool analytics first and start from a position that fits your risk.</p><h2 id="h-contracts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Contracts</h2><p>All Revert Lend Aerodrome contracts are deployed on Base:</p><p>Contract</p><p>Address</p><p>Lend Vault (rlUSDC)</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x1EF7C181188687e20A9750714f1b9DE6F70f17C0">0x1EF7C181188687e20A9750714f1b9DE6F70f17C0</a></p><p>GaugeManager</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0xc171F8c6ED8253151DE50ab839E3A468028113F2">0xc171F8c6ED8253151DE50ab839E3A468028113F2</a></p><p>AutoRange</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0xEB6127DcFB1E4107Dc1F3111151f779920c213Dd">0xEB6127DcFB1E4107Dc1F3111151f779920c213Dd</a></p><p>AutoExit</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0xc35e20379C3267B5f63E569c25959031aC588203">0xc35e20379C3267B5f63E569c25959031aC588203</a></p><p>LeverageTransformer</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0xF4fCBaB7D092A0b46438DBBaa21333f7F07137EC">0xF4fCBaB7D092A0b46438DBBaa21333f7F07137EC</a></p><p>V3Utils</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x2309A5aE06e86986a6f27b81a53cC31Fc1B55b0a">0x2309A5aE06e86986a6f27b81a53cC31Fc1B55b0a</a></p><p>V3Oracle</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x82722327E45E86a0F2107746F423f612139b0952">0x82722327E45E86a0F2107746F423f612139b0952</a></p><p>InterestRateModel</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x9E29b74336A0D698AD600b3e52729bFda85e0564">0x9E29b74336A0D698AD600b3e52729bFda85e0564</a></p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <category>aerodrome</category>
            <category>revert-lend</category>
            <category>base</category>
            <enclosure url="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/681a9e27c516b197c8cd0f68e4cda1e31ff14783174bfbf9755fb9d61de9e948.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[PancakeSwap is back (on Revert)]]></title>
            <link>https://paragraph.com/@revertfinance/pancakeswap-is-back-on-revert</link>
            <guid>b9wW3U0MmlbMK9SKtBC4</guid>
            <pubDate>Mon, 18 May 2026 18:31:09 GMT</pubDate>
            <description><![CDATA[PancakeSwap v3 on BNB Chain is again tracked end-to-end on Revert after more than two years offline. Alongside the relaunch, we're adding fresh coverage for PancakeSwap v3 on Base and PancakeSwap v3 on Arbitrum. PancakeSwap currently carries roughly $2.2B in TVL and ~$87B in monthly volume. The bulk is on BNB, with around $3.6B on Base and $513M on Arbitrum, both growing. With these three integrations live, Revert now covers the bulk of PancakeSwap's concentrated-liquidity surface. The BNB ga...]]></description>
            <content:encoded><![CDATA[<p>PancakeSwap v3 on BNB Chain is again tracked end-to-end on Revert after more than two years offline. Alongside the relaunch, we're adding fresh coverage for PancakeSwap v3 on Base and PancakeSwap v3 on Arbitrum.</p><p>PancakeSwap currently carries roughly <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dune.com/pancakeswap/pancakeswap-dex">$2.2B in TVL and ~$87B in monthly volume</a>. The bulk is on BNB, with around $3.6B on Base and $513M on Arbitrum, both growing. With these three integrations live, Revert now covers the bulk of PancakeSwap's concentrated-liquidity surface.</p><p> The BNB gap came down to one thing: our subgraph stalled at ~70% sync and never caught up to BSC's event throughput. We routed that specific workload onto <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.envio.dev/blog/revert-finance-pancakeswap-bnb-hyperindex">Envio's HyperIndex</a>, and the full historical sync (over 1.7B events) finished in ten days. <br><br>With indexing solved and historical state fully reconstructed, PancakeSwap positions across all three networks are now tracked inside Revert with the same analytics stack used across the rest of the platform.</p><p><strong> What you get</strong></p><p>- Full analytics on existing and historical positions<br>- Surfaced in Discover when you're scoping a new position to open<br>- The same automation suite you know and love<br>- Top Positions tracking</p><p>Returning BNB users: positions are already backfilled. New positions on Base and Arbitrum start tracking from mint.<br><br><strong>Try it</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://revert.finance">revert.finance</a> → connect → your PancakeSwap v3 positions on BNB, Base, and Arbitrum will appear alongside the rest.</p><p>Tracking is up across all three networks today. <br>Revert Lend on PancakeSwap is what's next.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <enclosure url="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/ef65ee59f6a21d33e61afd58f6c4d86edecb98369a138d5605ce3a2703e4fac8.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Post‑Mortem: Aerodrome Lend Vault Incident on Base]]></title>
            <link>https://paragraph.com/@revertfinance/post‑mortem-aerodrome-lend-vault-incident-on-base</link>
            <guid>8oVVrMOsLf9kf021Zdqk</guid>
            <pubDate>Fri, 30 Jan 2026 21:56:41 GMT</pubDate>
            <description><![CDATA[Date: January 30, 2026 Network: Base Status: Aerodrome Lend is currently paused (new deposits/borrows disabled) On January 29, 2026 we announced support for Aerodrome concentrated liquidity positions on Base: https://paragraph.com/@revertfinance/revert-lend-now-supports-aerodrome-on-base A few hours later, we received and verified a report of an exploit affecting the newly deployed Aerodrome Lend vault. We immediately disabled new deposits and new borrows via our emergency multisig and commun...]]></description>
            <content:encoded><![CDATA[<p><strong>Date:</strong> January 30, 2026<br><strong>Network:</strong> Base<br><strong>Status:</strong> Aerodrome Lend is currently <strong>paused</strong> (new deposits/borrows disabled)</p><p>On January 29, 2026 we announced support for Aerodrome concentrated liquidity positions on Base:<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://paragraph.com/@revertfinance/revert-lend-now-supports-aerodrome-on-base">https://paragraph.com/@revertfinance/revert-lend-now-supports-aerodrome-on-base</a></p><p>A few hours later, we received and verified a report of an exploit affecting the <strong>newly deployed Aerodrome Lend vault</strong>. We immediately <strong>disabled new deposits and new borrows</strong> via our emergency multisig and communicated the pause publicly:<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/revertfinance/status/2017087480772600157">https://x.com/revertfinance/status/2017087480772600157</a></p><hr><h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR</h2><ul><li><p><strong>All user funds are safe.</strong></p></li><li><p>The <strong>USDC in the affected vault was 100% Revert team capital</strong> (no third‑party user deposits were in the pool at the time).</p></li><li><p><strong>Only the Aerodrome Lend vault on Base was affected.</strong> No other Revert vaults/products were impacted.</p></li><li><p>This deployment had <strong>three independent audits</strong> (Cantina, PeckShield, HYDN). We are implementing fixes and will not re‑enable Aerodrome Lend without <strong>additional independent review/audit</strong> of the changes.</p></li></ul><hr><h2 id="h-impact" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Impact</h2><ul><li><p><strong>Loss:</strong> ~50,101.744193 USDC (protocol‑owned / Revert team funds)</p></li><li><p><strong>User impact:</strong> none (no user funds in the affected pool)</p></li><li><p><strong>Affected component:</strong> Aerodrome Lend vault integration (Base)</p></li></ul><h3 id="h-onchain-transactions-base" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Onchain transactions (Base)</h3><table style="min-width: 244px"><colgroup><col><col style="width: 144px"><col><col><col></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>#</p></th><th colspan="1" rowspan="1" colwidth="144"><p>Tx</p></th><th colspan="1" rowspan="1"><p>Block</p></th><th colspan="1" rowspan="1"><p>Time (UTC)</p></th><th colspan="1" rowspan="1"><p>Amount</p></th></tr><tr><td colspan="1" rowspan="1"><p>1</p></td><td colspan="1" rowspan="1" colwidth="144"><p>https://basescan.org/tx/0x10429eaeb479f9149854e4aeb978a35ac02d9688f6e22371712b3878c63a64ab</p></td><td colspan="1" rowspan="1"><p>41475479</p></td><td colspan="1" rowspan="1"><p>02:31</p></td><td colspan="1" rowspan="1"><p>49,000 USDC</p></td></tr><tr><td colspan="1" rowspan="1"><p>2</p></td><td colspan="1" rowspan="1" colwidth="144"><p>https://basescan.org/tx/0xe7f8405d3f10d431ce1958942dcf877cf1dcbea4f2a2a918fa8499d778295ee3</p></td><td colspan="1" rowspan="1"><p>41477209</p></td><td colspan="1" rowspan="1"><p>03:29</p></td><td colspan="1" rowspan="1"><p>1,101.744193 USDC</p></td></tr></tbody></table><p>A second exploit transaction occurred ~58 minutes after the first, from a different address.</p><hr><h2 id="h-timeline-utc" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Timeline (UTC)</h2><ul><li><p><strong>Jan 29, 2026:</strong> Aerodrome support announced (launch post linked above)</p></li><li><p><strong>Jan 30, 2026 ~02:31:</strong> Exploit transaction #1</p></li><li><p><strong>Jan 30, 2026 ~03:29:</strong> Exploit transaction #2</p></li><li><p><strong>Shortly after verification:</strong> New deposits and borrows disabled via emergency multisig; Aerodrome Lend paused</p></li><li><p><strong>Jan 30, 2026 14:14:21:</strong> Onchain recovery outreach sent to the address thatcontrol the exploited funds.</p></li></ul><hr><h2 id="h-what-happened-technical-overview" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What happened (technical overview)</h2><p>Aerodrome Lend allows Aerodrome Slipstream concentrated liquidity positions (NFTs) to be used as <strong>collateral</strong> in a lending vault, while optionally being <strong>staked</strong> for gauge rewards and autocompounding.</p><p>This incident was caused by an <strong>end‑to‑end invariant gap</strong> across multiple contracts involved in that flow. </p><p>The <strong>staking/automation layer</strong> (used to stake positions and execute position-management operations) included a pathway that allowed the position owner to execute operations that could materially change the position, even when that position was flagged as a vault-collateralized position.</p><p>In short, the attacker was able to <strong>withdraw liquidity from a collateralized (and staked) LP position</strong> while leaving the vault with an NFT that still existed but no longer represented the expected collateral value for the outstanding loan.</p><h3 id="h-attack-flow-simplified" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Attack flow (simplified)</h3><ol><li><p>Flash‑loan funds were used to mint an Aerodrome Slipstream LP position (NFT).</p></li><li><p>The attacker deposited the NFT into the Aerodrome Lend vault as collateral.</p></li><li><p>The attacker borrowed USDC against that collateral.</p></li><li><p>The position was staked through the vault’s staking/manager flow.</p></li><li><p>The attacker used a GaugeManager execution path (via a utility contract) that temporarily unstakes the NFT and executes position‑management instructions.</p></li><li><p>That execution path did not enforce the constraints required for <strong>positions backing active debt</strong>, allowing liquidity to be withdrawn and routed to the attacker.</p></li><li><p>The flash loan was repaid and the borrowed USDC became profit.</p></li></ol><hr><h2 id="h-root-cause" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Root cause</h2><p>The root cause was a missing safety constraint in the staking/management layer: a collateralized position with active debt could still be modified through an execution path in a way that <strong>reduced its collateral value</strong> without the vault preventing the action at the time it happened.</p><hr><h2 id="h-immediate-response" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Immediate response</h2><ul><li><p>Verified the report and confirmed the issue onchain.</p></li><li><p>Disabled <strong>new deposits and new borrows</strong> for the Aerodrome Lend vault via emergency multisig.</p></li><li><p>Communicated the pause publicly and began remediation.</p></li></ul><hr><h2 id="h-remediation-and-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Remediation &amp; next steps</h2><p>Aerodrome Lend will remain <strong>paused</strong> while we:</p><ul><li><p>implement fixes to ensure collateralized positions cannot be modified in ways that break collateral backing,</p></li><li><p>complete additional internal review and testing of the Aerodrome integration and surrounding flows,</p></li><li><p>commission <strong>additional independent security review/audit</strong> specifically focused on the incident root cause and the final remediation.</p></li></ul><p>We will publish follow‑up updates as we complete these steps. Aerodrome Lend will not be re‑enabled until the fixes are deployed and the additional independent review/audit is complete.</p><hr><h2 id="h-contracts-involved" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Contracts involved</h2><table style="min-width: 75px"><colgroup><col><col><col></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Contract</p></th><th colspan="1" rowspan="1"><p>Address</p></th><th colspan="1" rowspan="1"><p>Role</p></th></tr><tr><td colspan="1" rowspan="1"><p>Revert Lend Vault</p></td><td colspan="1" rowspan="1"><p><code>0x22CE292d882C7799183949509B011512352454cB</code></p></td><td colspan="1" rowspan="1"><p>Lending vault</p></td></tr><tr><td colspan="1" rowspan="1"><p>GaugeManager</p></td><td colspan="1" rowspan="1"><p><code>0x66a2481b784Cf26103441cA6067F997f90d3E129</code></p></td><td colspan="1" rowspan="1"><p>Gauge staking manager</p></td></tr><tr><td colspan="1" rowspan="1"><p>V3Utils</p></td><td colspan="1" rowspan="1"><p><code>0x7D1F9FC22bed0798cda3fdb18b14a96fc838B9E1</code></p></td><td colspan="1" rowspan="1"><p>Position utility contract</p></td></tr><tr><td colspan="1" rowspan="1"><p>Aerodrome Gauge</p></td><td colspan="1" rowspan="1"><p><code>0xfd548a1C01f1547b305313e4D42BD9C714EFdF6a</code></p></td><td colspan="1" rowspan="1"><p>LP staking gauge cont</p></td></tr><tr><td colspan="1" rowspan="1"><p>Morpho</p></td><td colspan="1" rowspan="1"><p><code>0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb</code></p></td><td colspan="1" rowspan="1"><p>Flash loan provider</p></td></tr></tbody></table><hr><h2 id="h-security-reviews-audits" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Security reviews / audits</h2><p>Prior to launch, the Revert Lend deployment and supporting components underwent <strong>three independent audits/reviews</strong>:</p><ul><li><p><strong>Cantina</strong>:<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cantina.xyz/portfolio/cfb5a6a0-0061-4f14-ab5a-195ed6b7816d">https://cantina.xyz/portfolio/cfb5a6a0-0061-4f14-ab5a-195ed6b7816d</a></p></li><li><p><strong>PeckShield</strong>:<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/peckshield/publications/blob/master/audit_reports/PeckShield-Audit-Report-Revert-v4Utils-v1.0.pdf">https://github.com/peckshield/publications/blob/master/audit_reports/PeckShield-Audit-Report-Revert-v4Utils-v1.0.pdf</a></p></li><li><p><strong>HYDN</strong>:<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/hydnsec/audits/blob/main/Revert%20Finance%20-%20Lend/HYDN%20-%20Revert%20Finance%20Lend%20-%20aero%20-%20Audit.pdf">https://github.com/hydnsec/audits/blob/main/Revert%20Finance%20-%20Lend/HYDN%20-%20Revert%20Finance%20Lend%20-%20aero%20-%20Audit.pdf</a></p></li></ul><p>Audits reduce risk, but they are not a guarantee. We take responsibility for this incident and are adding additional review/audit before re‑enabling Aerodrome Lend.</p><p>After the incident, <strong>HYDN Security</strong> proactively reached out and assisted our team during incident response and remediation planning.</p><hr><h2 id="h-thank-you-reporting" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Thank you / reporting</h2><p>Thank you to the reporter who raised the issue quickly. If you believe you have found a vulnerability, please disclose it responsibly via the security contact listed in our documentation.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Revert Lend Now Supports Aerodrome on Base

]]></title>
            <link>https://paragraph.com/@revertfinance/revert-lend-now-supports-aerodrome-on-base</link>
            <guid>romzqnGvfelpYFhCT93b</guid>
            <pubDate>Thu, 29 Jan 2026 22:19:18 GMT</pubDate>
            <description><![CDATA[We're excited to announce that Revert Lend is now live for Aerodrome concentrated liquidity positions on Base. This expansion brings the full power of Revert's lending protocol to Aerodrome LPs, enabling new ways to maximize capital efficiency while earning AERO rewards.Aerodrome LPs on Base can now:Borrow against LP positions – Use your Aerodrome concentrated liquidity positions as collateral to borrow USDC while continuing to earn trading fees and AERO rewardsLeverage your positions – Ampli...]]></description>
            <content:encoded><![CDATA[<h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"></h2><h2 id="h-were-excited-to-announce-that-revert-lend-is-now-live-for-aerodrome-concentrated-liquidity-positions-on-base-this-expansion-brings-the-full-power-of-reverts-lending-protocol-to-aerodrome-lps-enabling-new-ways-to-maximize-capital-efficiency-while-earning-aero-rewards" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">We're excited to announce that&nbsp;<strong>Revert Lend</strong>&nbsp;is now live for Aerodrome concentrated liquidity positions on Base. This expansion brings the full power of Revert's lending protocol to Aerodrome LPs, enabling new ways to maximize capital efficiency while earning AERO rewards.</h2><p>Aerodrome LPs on Base can now:</p><ul><li><p><strong>Borrow against LP positions</strong>&nbsp;– Use your Aerodrome concentrated liquidity positions as collateral to borrow USDC while continuing to earn trading fees and AERO rewards</p></li><li><p><strong>Leverage your positions</strong>&nbsp;– Amplify your LP exposure by borrowing, swapping, and adding to your position atomically</p></li><li><p><strong>Autocompound AERO rewards</strong>&nbsp;– Automatically compound your AERO emissions back into your LP position to maximize returns</p></li><li><p><strong>Stake with one click</strong>&nbsp;– Deposit positions into Aerodrome gauges through our Revert-Staker to earn AERO rewards while maintaining access to all Revert features</p></li></ul><h2 id="h-why-this-matters" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Why This Matters</strong></h2><p>Concentrated liquidity positions on Aerodrome represent significant capital. Until now, this capital was locked—earning fees and AERO rewards, but otherwise idle.</p><p>With Revert Lend, you can put that capital to work:</p><ol><li><p><strong>Deposit your Aerodrome LP position</strong>&nbsp;as collateral</p></li><li><p><strong>Borrow USDC</strong>&nbsp;at competitive rates</p></li><li><p><strong>Leverage up</strong>&nbsp;to amplify your exposure and yield</p></li><li><p><strong>Keep earning</strong>&nbsp;trading fees and AERO rewards on your position</p></li><li><p><strong>Autocompound</strong>&nbsp;your AERO rewards to amplify returns</p></li></ol><p>All without giving up control of your position.</p><h2 id="h-leverage" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Leverage</strong></h2><p>For LPs looking to amplify their exposure, Revert Lend enables one-click leverage. Borrow against your position, swap into your desired tokens, and add liquidity—all in a single atomic transaction.</p><p>This means you can:</p><ul><li><p>Increase your position size without additional capital</p></li><li><p>Amplify fee earnings and AERO rewards</p></li><li><p>Deleverage just as easily when you want to reduce exposure</p></li></ul><p>The leverage flow handles the complexity of borrowing, swapping, and redepositing, giving you a streamlined way to scale your positions.</p><h2 id="h-aero-autocompounding" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>AERO Autocompounding</strong></h2><p>One of the most requested features from our users: automatic compounding of AERO rewards. Instead of manually claiming AERO, swapping it, and redepositing liquidity, Revert handles this for you.</p><p>The autocompounder:</p><ul><li><p>Collects your earned AERO rewards</p></li><li><p>Swaps them optimally into your position's token pair</p></li><li><p>Redeposits as concentrated liquidity in your existing range</p></li></ul><p>This turns your gauge rewards into compounding yield without any manual intervention.</p><h2 id="h-how-it-works" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>How It Works</strong></h2><ol><li><p>Navigate to your position on&nbsp;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://revert.finance"><strong>revert.finance</strong></a></p></li><li><p>Stake with Revert-Staker to unlock lending and automation features</p></li><li><p>Enable autocompounding, leverage up, and/or use your position as collateral</p></li></ol><h2 id="h-security" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Security</strong></h2><p>Revert Lend for Aerodrome has undergone comprehensive audits by&nbsp;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cantina.xyz/portfolio/cfb5a6a0-0061-4f14-ab5a-195ed6b7816d"><strong>Cantina</strong></a>,&nbsp;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/peckshield/publications/blob/master/audit_reports/PeckShield-Audit-Report-Revert-v4Utils-v1.0.pdf"><strong>PeckShield</strong></a>, and&nbsp;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/hydnsec/audits/blob/main/Revert%20Finance%20-%20Lend/HYDN%20-%20Revert%20Finance%20Lend%20-%20aero%20-%20Audit.pdf"><strong>Hydn</strong></a>. </p><h2 id="h-get-started" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Get Started</strong></h2><p>Aerodrome LP positions are now eligible for Revert Lend on Base. Visit&nbsp;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://revert.finance"><strong>revert.finance</strong></a>&nbsp;to start borrowing against your positions, leveraging up, and activating AERO autocompounding.</p><hr><br>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <enclosure url="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/91b5b944c4d48d20be69e7f68029a192ad6988e9c8a7173ddaabe7efba0db45c.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Revert Now Supports Uniswap v4 on Ethereum Mainnet and Unichain]]></title>
            <link>https://paragraph.com/@revertfinance/revert-now-supports-uniswap-v4-on-ethereum-mainnet-and-unichain</link>
            <guid>04TFGmduHB86hKVFV5C2</guid>
            <pubDate>Mon, 01 Dec 2025 18:20:45 GMT</pubDate>
            <description><![CDATA[Today we’re rolling Uniswap v4 integration on Ethereum Mainnet and Unichain. This launch announcement is simple: the analytics you already know and love, now for Uniswap V4. Every V4 position comes with the full Revert metrics stack, with Hook integrations coming soon. LPs can now analyze v4 positions, backtest ranges, and manage them directly in Revert. When creating positions, v4 pools appear alongside every other supported market, with the same performance metrics, charts, and historical d...]]></description>
            <content:encoded><![CDATA[<p>Today we’re rolling <strong>Uniswap v4 integration on Ethereum Mainnet and Unichain</strong>. </p><p>This launch announcement is simple: <strong>the analytics you already know and love, now for Uniswap V4</strong>. Every V4 position comes with the full Revert metrics stack, with Hook integrations coming soon.</p><p>LPs can now analyze v4 positions, backtest ranges, and manage them directly in Revert.  When creating positions, v4 pools appear alongside every other supported market, with the same performance metrics, charts, and historical data users already rely on.</p><p>This launch also includes <strong>V4Utils</strong>, our dedicated suite of <strong>on-chain utilities for Uniswap v4 LPs</strong>. The toolset covers the core actions LPs use constantly: <strong>Move Range</strong>, <strong>Swap-and-Mint</strong>, <strong>Decrease-and-Swap</strong>, <strong>Collect-and-Swap</strong>, and other streamlined zaps that collapse multi-step v4 workflows into clean, atomic transactions.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/d6429b8009dc8a814375dd0f5670510ac997d81372cc57469152241e96236290.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAdCAIAAABE/PnQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFp0lEQVR4nJ1W6Y7kSBGOch2+yk7bmXZedrl8VJWPOrq6qrt3p3t7lplhAM0OwyK0IF4AAUKIAcSiESt+wUPxg4eAV4G/hdJVM9ta5miQPqUiwpnxhSMywoaA7Nvie035XcYumXvzafq7J7M/zNALaT+J0bd5+JiYV2i0dfsbNNp6+vkR37B06plSR+fcv8bWXoTXMrixrRUMgyIqVrTY2kUVsWUY7XxvE9JNkl66/kJ38oGR6s40nKwtlA/0ZGhMhnqCwnkgWsPNlGpMbDcncmn5xdCYjKyU8KXId4gsBk4O4DKYxSA5BCF4IYw9MMZ2nPKzJUQUTA9sHwj1m7ofMSU7AdiBLhM0nw24OFp6hKHZzJpm4BIwvSCf0aJSj1wBgCXkHGikVhbBlINg/YcV/erW+NFFSDYoqsDAMPDADMDGCiZWliFSqx0qmBiGAegYrBBQBIVQriYCSAwajpPljs9aVq9o2chmg5IC/LBHBWAKLushCk53zInAjZTsdsJRPlIe8UZFEbghOBhcCT0vJlUdLVpa1FFR0bKhReWlM1a2cb1m85bNGrFYiWotqjWrVqxseLVi8zZutzpNvn6tuzBfr64EQEKTiSHTHmbHuHqIah4b82ws8iGRGuYjLAaEj9nUoKkRp0OWaJjrRKr9/+39LhSBI4rl/vz2MZ+1KhwzACPoe+yjJ8+ajz8xWAo6OhkJN/hE/PVJ8Jsb0Lud7/d+InAFyRdJcx6WtS1SlUcn0DCbtDtRrYN8MSBCFdMMDJbiorLjrE+4yvIHvb8hGIssyOcoKUc0VlcCAjDDEc9QUlgyH/EJeBRQNKJxVNReUlpsoipvvs61gdX9eQ+B2u2Gmkc7k98+4rsbf3s2ggEGQKAF3QYKdgC21+0hql1sD3gEKICMQxV3T99BAKbf6UEXkf/Fr16cv/ys/clzmHH88lq7nQMKgZCBX7TtZnlraV4IDgFMe7sCCAXSCZJ3bfFWgjfkKASwvV8+enb46tnht9/6189/cHj1/PD7R//+xeU/f2zVV0+fPvv0M92OY71MzTK1pDQibmJmCgGUvqXsJ4K7vWPjy3/87PPDX54f/vj54dX3D1++UMKfnx5+DVlsX8npHvUmEawSlRaMT/B9QOSdKdIwG0ZyGMkRFkORDK+b/nWtKVTaJ7V2o+TexaJLFAdHAGbd4a6TPdojrLt77y6yFiU4r/msFdWZmC0NfwIj6oaZSFsxqZlc+FEBOh1h0SfcpLHBpnfm0nsb4pQiwwXd1TAbRapFB5EYssSSucEnKCv7RMA4ULPlWCrVdH7n179XH/RUo1XRbCmanSVyjYg+kX0iAfOemhAS1B09lqebZU4ImGtEDKOuK+/TaPOPH65uv1NdPxoXy74oNF7oySJsdqTejvMGyOQIc1q5xdKczp2idYpWj+eK+/0Do5tFvI84E+U4TAEx1VCIAY55tWWLM10USvU4IOblTb574Od1jyTgSWV37jHsel7sTAt7WrrFwisrNVOPddNsBeNOgLoLmgUDVxnvM+lOb4AkLWvZbnFZWyJTxTQDzWOsbEi+0DA/+TIDW2RhXrtxMYzkh7N/twZJvWk/umVlo451k7mH6Nnt4/nFtcmnYHTjWkd+Ol8+eJg052q+3sf7GwJc1HG7l81O1FvZ7JLlftLu09VF3Oyy9WW+ucrWF/nZVbq6kO0OF/WHvzPfIBjy2EzSkUwGPB7y2JATK07HSWbGUyfJnThz4syNCzcubJGrtrhnfl4TUNjQ3or5lQx2hX89s/ZTmCOYe7DwYOFA40Liqr8KHZ2+bvf0fiKwmPlFGX25j149sH7a9BuibSmsQ1iFsI5g7cPOg8IHI+wCv3fsXxMMIvqni/Xff7j62wv8cgNsAIUJmQW5qZDZak2Ogf+vOP54eQkYDHSqYFMg4i3wpIrl/4CX/Ac+lt7+HY/byQAAAABJRU5ErkJggg==" nextheight="1367" nextwidth="1508" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>&nbsp;The V4Utils contracts have been <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/peckshield/publications/tree/master/audit_reports/PeckShield-Audit-Report-Revert-v4Utils-v1.0.pdf"><strong>audited by Peckshield</strong></a>.</p><p> Contract addresses:</p><ul><li><p><strong>V4Utils address Ethereum Mainnet</strong>: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xe162e02ed718f94ac70336fba69ff86f2918436d">0xE162E02eD718F94ac70336fBA69Ff86F2918436d</a></p></li><li><p><strong>V4Utils address Unichain</strong>: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://uniscan.xyz/address/0x84b41aea9fe0d7a840d699d840c5fd78f20efe65">0x84b41aea9fe0d7a840d699d840c5fd78f20efe65</a></p></li></ul><p><strong>Support for other Ethereum L2s coming soon.</strong><br><strong>Support for hooks, if you are a hook developer, please reach out.</strong></p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
            <enclosure url="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/9f5f243c42087962342e5acbcf2eb0de3a86063cfe9355cf11f9d3d839a2e56a.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Revert Lend is Live on Ethereum Mainnet
]]></title>
            <link>https://paragraph.com/@revertfinance/revert-lend-is-live-on-ethereum-mainnet</link>
            <guid>pY6euiNU4rtoMeSsDYMI</guid>
            <pubDate>Wed, 23 Jul 2025 21:14:14 GMT</pubDate>
            <description><![CDATA[Revert Lend on Ethereum MainnetWe’re excited to announce the launch of Revert Lend on Ethereum Mainnet. With this launch, Ethereum users can now supply collateral and borrow against their Uniswap V3 LP positions — unlocking capital efficiency and enabling leveraged strategies or external liquidity use. Supported collateral assets and factors on Mainnet: • USDC — 80.75% collateral factor • USDT — 80.75% • WETH — 73.63% • WBTC — 73.63% Revert Lend allows LPs to borrow against their positions, e...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/c2b8dc06e9c2497101e8080b624c6d59265de945913bf0aba7a9a399b30a2b74.png" alt="Revert Lend on Ethereum Mainnet" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Revert Lend on Ethereum Mainnet</figcaption></figure><p>We’re excited to announce the launch of <strong>Revert Lend on Ethereum Mainnet</strong>.</p><p>With this launch, Ethereum users can now supply collateral and borrow against their <strong>Uniswap V3 LP positions</strong> — unlocking capital efficiency and enabling leveraged strategies or external liquidity use.</p><p><strong>Supported collateral assets and factors on Mainnet:</strong></p><p>• <strong>USDC</strong> — 80.75% collateral factor</p><p>• <strong>USDT</strong> — 80.75%</p><p>• <strong>WETH</strong> — 73.63%</p><p>• <strong>WBTC</strong> — 73.63%</p><p>Revert Lend allows LPs to borrow against their positions, either to <strong>leverage up</strong> or to <strong>extract capital</strong>. Supported positions include pairs like <strong>WETH/USDC</strong>, <strong>WETH/USDT</strong>, and <strong>WBTC/ETH</strong> across all UniV3 fee tiers.</p><p><strong>Key Contracts</strong></p><ul><li><p><strong>LeverageTransformer</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xbAEA7f73569456096fCf38AE34242c52CA227b1e#code">0xbAEA7f73569456096fCf38AE34242c52CA227b1e</a></p></li><li><p><strong>FlashloanLiquidator</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xa44080F20464de260e25F35A69d6BDa50f2cc79D#code">0xa44080F20464de260e25F35A69d6BDa50f2cc79D</a></p></li><li><p><strong>V3Vault</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xa2754543f69dC036764bBfad16d2A74F5cD15667#code">0xa2754543f69dC036764bBfad16d2A74F5cD15667</a></p></li><li><p><strong>V3Oracle</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xe0151d335A6C4AB0600Ae4000a9CAAf7b236072f#code">0xe0151d335A6C4AB0600Ae4000a9CAAf7b236072f</a></p></li><li><p><strong>InterestRateModel</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xb50daFe03fEe68595Ab2bAaD3c16F899421F063B#code">0xb50daFe03fEe68595Ab2bAaD3c16F899421F063B</a></p></li></ul><p><strong>Start lending now:</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/lending">https://revert.finance/#/lending</a></p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Revert Lend is Live on Base
]]></title>
            <link>https://paragraph.com/@revertfinance/revert-lend-is-live-on-base</link>
            <guid>yiZD6GwCRGngbmfB5czq</guid>
            <pubDate>Mon, 07 Jul 2025 22:06:04 GMT</pubDate>
            <description><![CDATA[We’re excited to announce the launch of Revert Lend on Base 🟦 You can now supply WETH (77.5%), USDC (85%), or cbBTC (77.5%) as collateral to borrow against your Uniswap V3 LP positions on Base. Use the borrowed funds to leverage up your LPs or deploy capital elsewhere. Revert Lend has already become the largest holder of Uniswap V3 liquidity on Arbitrum. Now we’re bringing the same power to Base. To bootstrap lending, Revert Points will be distributed to USDC lenders on Base. Full details to...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/4604bc8aa3498d962740f864a5992843bcd271344a7f8dcb893c39ce1f3c0e91.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>We’re excited to announce the launch of <strong>Revert Lend on Base</strong> 🟦</p><p>You can now supply <strong>WETH (77.5%)</strong>, <strong>USDC (85%)</strong>, or <strong>cbBTC (77.5%)</strong> as collateral to borrow against your <strong>Uniswap V3 LP positions</strong> on Base. Use the borrowed funds to <strong>leverage up your LPs</strong> or deploy capital elsewhere.</p><p>Revert Lend has already become the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/revertfinance/status/1934676545291079792">largest holder of Uniswap V3 liquidity on Arbitrum</a>. Now we’re bringing the same power to Base.</p><p>To bootstrap lending, <strong>Revert Points will be distributed to USDC lenders</strong> on Base. Full details to be announced shortly.</p><ul><li><p><strong>Start lending:</strong> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/lending">revert.finance/#/lending</a></p></li><li><p><strong>Docs:</strong> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.revert.finance/revert/revert-lend">docs.revert.finance</a></p></li><li><p><strong>Vault address:</strong> 0x36aeae0e411a1e28372e0d66f02e57744ebe7599</p></li><li><p><strong>Liquidator repo:</strong> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/revert-finance/liquidator-js">github.com/revert-finance/liquidator-js</a></p></li></ul>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Run your own Revert Lend liquidation bot]]></title>
            <link>https://paragraph.com/@revertfinance/run-your-own-revert-lend-liquidation-bot</link>
            <guid>JoOCi4yEJeC1eXehY2ww</guid>
            <pubDate>Mon, 14 Oct 2024 21:40:42 GMT</pubDate>
            <description><![CDATA[We are pleased to publish an open-sourced liquidation bot for Revert Lend. This reference implementation is available for the community to use, modify, and improve. Our goal is to enhance decentralization and strengthen the resilience of the Revert Lend protocol by encouraging broader participation in liquidation activities. Repository: https://github.com/revert-finance/liquidator-js While we will continue to operate our own liquidation bots as a backstop, we believe that a decentralized netw...]]></description>
            <content:encoded><![CDATA[<p>We are pleased to publish an open-sourced liquidation bot for Revert Lend. This reference implementation is available for the community to use, modify, and improve. Our goal is to enhance decentralization and strengthen the resilience of the Revert Lend protocol by encouraging broader participation in liquidation activities.</p><p><strong>Repository:</strong> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/revert-finance/liquidator-js">https://github.com/revert-finance/liquidator-js</a></p><p>While we will continue to operate our own liquidation bots as a backstop, we believe that a decentralized network of operators is vital for the health and robustness of the DeFi ecosystem. By open-sourcing our bot, we aim to provide a reference implementation that others can build upon.</p><p>Liquidation fees on Revert Lend range between 2% and 8%, offering an incentive for participants who help maintain the protocol’s stability.</p><p><strong>About the Bot</strong></p><p>This bot is designed to monitor active positions on the Revert Lend protocol and execute liquidations when certain conditions are met. It employs a combination of real-time event monitoring and periodic checks to stay updated on the state of positions and market conditions.</p><p><strong>Key Features:</strong></p><p>• <strong>WebSocket Monitoring:</strong> Listens to real-time events from the Revert Lend contracts to update positions as they change.</p><p>• <strong>Periodic Position Checks:</strong> Regularly scans all positions to ensure no liquidation opportunities are missed.</p><p>• <strong>Flashloan Liquidations:</strong> Executes liquidations using flashloans, requiring no upfront capital in the asset being liquidated.</p><p>• <strong>Optional Non-Flashloan Liquidations:</strong> Supports liquidations without flashloans if the operator holds the necessary assets and has approved the V3Vault contract.</p><p>We invite everyone interested to join us in strengthening the <strong>Revert Lend</strong> ecosystem. By running your own liquidation bot, you not only contribute to the stability and decentralization of the protocol but also have the opportunity to earn liquidation fees ranging from 2% to 8%. Whether you’re a developer looking to dive into the code or an operator ready to set up your own bot, your participation is valuable.</p><p>Together, we can build a more resilient and robust DeFi environment. If you have any questions or need assistance getting started, feel free to reach out to our team or open an issue on the repository. Let’s collaborate to enhance the security and decentralization of Revert Lend.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Why the future needs AMMs]]></title>
            <link>https://paragraph.com/@revertfinance/why-the-future-needs-amms</link>
            <guid>I7LucAcM4OPBHfh4cbYx</guid>
            <pubDate>Wed, 21 Feb 2024 23:40:02 GMT</pubDate>
            <description><![CDATA[The future demands a hyper-financialized world where decentralized markets trade a plethora of crypto tokens. These tokens represent everything from fractionalized art and real-state rights, to a myriad of fully digital assets, from in-game virtual currencies to shares in the profits of an actually decentralized, actually autonomous, organization. The only way we are getting there is if markets can be spun up as easily as we create the tokens themselves. If we have to engage with some trading...]]></description>
            <content:encoded><![CDATA[<p>The future demands a hyper-financialized world where decentralized markets trade a plethora of crypto tokens. These tokens represent everything from fractionalized art and real-state rights, to a myriad of fully digital assets, from in-game virtual currencies to shares in the profits of an actually decentralized, actually autonomous, organization. The only way we are getting there is if markets can be spun up as easily as we create the tokens themselves. If we have to engage with some trading firm every time we want to make a market for fractionalized royalties of some new VR experience, then that market will probably never exist.</p><h3 id="h-worse-is-better" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Worse is better</h3><p>AMMs could be worse than centralized limit order books markets in any capacity you wanted to measure, and they would still win because they enable the instant, frictionless creation of markets by anyone just holding some amount of assets.</p><p>No sophisticated HFT systems need to be spun up. No special SLAs have to be drafted and signed. Instead, AMMs offer fair, algorithmically determined prices that directly respond to market demand.</p><h3 id="h-rfqs-are-just-binance-in-the-end" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">RFQs are just Binance in the end</h3><p>Some folks will try to tell you that RFQ systems have a place in this future, and maybe they do, but today most of the quotes on RFQs are arbitraging prices between centralized exchanges (CEXes) and the slippage limit of your on-chain order. They are, in large part, an intermediary between an on-chain swapper and liquidity or expected volume at some centralized exchange. I’m not trying to be critical; they provide a valuable service to traders when they can provide a better price than what is otherwise available on-chain. However, a centrally operated trading system will not get us to the future we are heading for.</p><p>If we compare today the liquidity sources where most of the trades happening over the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://explorer.0xprotocol.org/liquiditySources">0x protocol</a> end up, we can see that AMMs account for around 70% of the volume versus 30% for RFQs. If you account for the fact that RFQ systems existed on-chain well before Uniswap v1, you can understand where the trend is going.</p><p>And all of this is just getting started. A vast majority of today&apos;s crypto assets remain outside the decentralized finance ecosystem, often stored on centralized exchanges or, at best, in cold wallets, not leveraging the potential of permissionless innovation in non-custodial financial services. What do you think AMMs look like when there is 1T in assets in DeFi protocols? What about 10T? You are not sufficiently excited about AMMs.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Introducing Auto-Exit and Auto-Range
]]></title>
            <link>https://paragraph.com/@revertfinance/introducing-auto-exit-and-auto-range</link>
            <guid>XAFNswHVTnNNb08ML6c8</guid>
            <pubDate>Tue, 25 Jul 2023 18:05:03 GMT</pubDate>
            <description><![CDATA[Hello LPs! We are thrilled to introduce two transformative features to the Revert toolkit, enhancing your LP experience on Uniswap v3: Auto-Exit and Auto-Range. These features have been meticulously crafted to streamline your liquidity provision and protect your investments. Firstly, let&apos;s explore Auto-Exit.Auto-Exit configuration panelAs a Uniswap v3 liquidity provider (LP), have you ever wished you could automate your liquidity withdrawal when the price hits a certain value? With Auto-...]]></description>
            <content:encoded><![CDATA[<p>Hello LPs! We are thrilled to introduce two transformative features to the Revert toolkit, enhancing your LP experience on Uniswap v3: Auto-Exit and Auto-Range. These features have been meticulously crafted to streamline your liquidity provision and protect your investments.</p><p>Firstly, let&apos;s explore Auto-Exit.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/965460959df1c511f36b2b65a2b718bdc862757eac3d9191501cd2496902b207.png" alt="Auto-Exit configuration panel" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Auto-Exit configuration panel</figcaption></figure><p>As a Uniswap v3 liquidity provider (LP), have you ever wished you could automate your liquidity withdrawal when the price hits a certain value? With Auto-Exit, this is now possible. Auto-Exit lets you pre-configure a position so that the liquidity is automatically withdrawn when the pool price reaches a predetermined value. Moreover, you can optionally configure the system to swap from one token to the other on withdrawal, providing a safety net for your investments akin to a stop-loss order.</p><p>Next up is Auto-Range.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/633b6f20d0124b0d0294866a52add39efa46bdda160fc83a5a0a4900d3cd2dec.png" alt="Auto-Range configuration panel" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Auto-Range configuration panel</figcaption></figure><p>Auto-Range automates the process of rebalancing your liquidity positions. When the token price moves and your position goes out-of-range by your selected percentage, Auto-Range springs into action. The system then automatically rebalances your position, by withdrawing the liquidity and recreating it with the same range width but centered around the current price, ensuring your liquidity stays in-range and collecting fees always.</p><p>Tracking PnL across rebalanced positions can be tricky, and of course it’s important to remember that, depending on your investment strategy, divergence loss is a crucial part of the PnL equation. Measuring each rebalanced position separately might be deceptive with regard to the actual divergence loss that becomes permanent on each rebalance operation. Taking this into account, coming very soon, your Revert dashboard will aggregate auto-range positions into one, providing you proper analytics for these multi-position strategies.</p><p><strong>How do automated actions work</strong></p><p>To activate the automated actions LPs authorize the Auto-Exit or Auto-Range contracts to act as an Operator for their positions.  Upon this authorization, Revert bots start monitoring the activated position. These bots execute the prescribed operations - withdrawal of liquidity or rebalancing - when the predefined conditions are met.</p><p>To support the automation, a fee of 0.25% of the position value is levied for each operation executed by the bots. However, it is crucial to note that if the gas cost for an operation exceeds this fee, the bots will not perform the operation. The UI will display a message indicating if the position is close to the lower limit threshold given the current gas costs.</p><p>The security of these operations is of utmost importance, and we have taken rigorous measures to ensure the reliability of our new offerings. Both the Auto-Exit and Auto-Range contracts have undergone rigorous auditing by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hydnsec.com/">Hydn</a>, with an audit report that can be read <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/hydnsec/audits/blob/main/Revert%20Finance%20-%20Exit%20Auto%20%20%26%20Move%20Range/Revert_Finance_Audit_Report_%20Auto-Exit_Auto-Move_Range.pdf">here</a>.</p><p>We anticipate that these innovative additions to the Revert toolkit will greatly benefit LPs by providing advanced automation and risk management capabilities. Give them a try from your <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">position dashboard</a>.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Evmos Blast Off: Milestones in Our Cosmic Journey
]]></title>
            <link>https://paragraph.com/@revertfinance/evmos-blast-off-milestones-in-our-cosmic-journey</link>
            <guid>bEffEzepiMea4BBX9Dya</guid>
            <pubDate>Fri, 12 May 2023 16:26:37 GMT</pubDate>
            <description><![CDATA[Evmos, a proof-of-stake blockchain built on the Cosmos SDK, offers full Ethereum compatibility. Within this ecosystem, Forge, a CLMM DEX forked from Uniswap v3, recently launched on Evmos. This followed the Evmos DAO&apos;s approval of a grant proposal for Revert&apos;s integration with Forge. In the context of our roadmap with the awarded grant for the Forge integration, we&apos;re excited to share that we&apos;ve managed to complete the first three milestones of our plan. These achievements...]]></description>
            <content:encoded><![CDATA[<p>Evmos, a proof-of-stake blockchain built on the Cosmos SDK, offers full Ethereum compatibility. Within this ecosystem, Forge, a CLMM DEX forked from Uniswap v3, recently launched on Evmos. This followed the Evmos DAO&apos;s approval of a grant proposal for Revert&apos;s integration with Forge.</p><p>In the context of our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.mintscan.io/evmos/proposals/143">roadmap with the awarded grant</a> for the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forge.trade/">Forge</a> integration, we&apos;re excited to share that we&apos;ve managed to complete the first three milestones of our plan. These achievements highlight our commitment to providing enhanced tools, services, and integration to the EVMOS/Forge community as described below.</p><h2 id="h-milestone-1-liquidity-incentives-tools" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Milestone 1: Liquidity Incentives Tools</h2><p>Our first milestone was centered around the deployment of liquidity incentive tools. We successfully launched the vested <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://escan.live/address/0x3eb0fffa1470cdd3725b9eb29aded2736144b078">v3 staker contract</a> on EVMOS. This advancement allows anyone to stake positions and create incentive programs for Forge pools, boosting community engagement and increasing liquidity.</p><p>The vested v3 staker <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://v3staker.revert.finance/#/running-incentives/evmos">frontend</a>, another part of this milestone, is now operational. This user-friendly interface makes it easier for anyone to permissionlessly <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://v3staker.revert.finance/#/create-incentive">create incentives programs</a> for Forge pools, and for LPs to stake their positions and be awarded rewards in the respective liquidity incentives program.</p><p>The completion of this milestone holds particular significance due to the impending launch of an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="">incentives program</a>, aptly codenamed &apos;Inferno&apos;, on Forge. This strategic initiative is designed to attract liquidity, offering potentially lucrative opportunities for Liquidity Providers (LPs) in this emergent exchange.</p><h2 id="h-milestone-2-analytics-and-top-positions-indexing" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Milestone 2: Analytics and Top Positions Indexing</h2><p>Next, we focused on giving liquidity providers (LPs) the tools needed to track their investments efficiently. We have launched Forge analytics <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/forgeDEX/status/1656738185878339585?s=20">for existing positions</a>, providing LPs with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/forge-position/evmos/973">real-time data</a> on profit and loss, annual percentage rate, fees, and more. This information empowers Forge LPs to make informed decisions about their investments.</p><p>Moreover, we introduced indexing of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/top-positions/evmos">top positions</a>. This feature allows users to browse and explore the catalog of existing positions across Forge pools. We believe this will be an invaluable tool for those interested in understanding market trends and gaining insights from top performers.</p><h2 id="h-milestone-3-position-management-and-auto-compounder" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Milestone 3: Position Management and Auto-compounder</h2><p>In our third milestone, we have rolled out advanced features for position management. The introduction of an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/initiator?fee&amp;network=evmos&amp;token0&amp;token1">initiator/backtester for Forge</a> pools allows users to backtest and create new positions using the revert interface. This tool is crucial for strategic decision-making, enabling users to gauge potential outcomes before making a move.</p><p>We also launched the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://escan.live/address/0x769249dce2065e677699a94b9c0bb46f079a90ac">v3utils contract</a> and frontend, offering utilities for LPs such as swap and mint, moving ranges, and more. These tools further simplify the position management process.</p><p>Our auto-compounder contract and protocol, including auto-compounding bots, were also successfully deployed and are currently running. This feature helps LPs optimize their APYs by automatically reinvesting their fees at the optimal times..</p><h2 id="h-milestone-4-keplr-integration-pending" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Milestone 4: Keplr Integration (Pending)</h2><p>Our final milestone, the integration with Keplr wallet, is still in progress. This integration is anticipated to expand the accessibility of our platform, offering users a secure, user-friendly, and versatile wallet for managing their assets.</p><p>We understand the importance of this integration and will be working with the Forge team to make it happen. We aim to complete this milestone within the next four months.</p><p>We&apos;re proud of the strides we&apos;ve made over the last few weeks and are excited for what&apos;s still to come. We remain committed to our roadmap and will continue to strive to provide our community with the best tools and services possible.</p><p>Stay tuned for more updates as we progress toward our final milestone. As always, we appreciate your support and patience as we continue to improve and expand our platform.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[V3Utils is back!]]></title>
            <link>https://paragraph.com/@revertfinance/v3utils-is-back</link>
            <guid>a5WoH9EInIKi1oPMzIby</guid>
            <pubDate>Tue, 21 Mar 2023 22:25:19 GMT</pubDate>
            <description><![CDATA[We are delighted to announce that our V3Utils contract has undergone a comprehensive audit by Peckshield, resulting in its redeployment with enhanced security measures. The audit successfully identified and addressed two low-severity issues and one informational issue. For those who are interested, the full audit report is available here. Let’s do a quick review of the functionality provided by the V3Utis contract that is now available on the app: Swap and Increase liquidity: Takes any amount...]]></description>
            <content:encoded><![CDATA[<p>We are delighted to announce that our V3Utils contract has undergone a comprehensive audit by Peckshield, resulting in its redeployment with enhanced security measures. The audit successfully identified and addressed two low-severity issues and one informational issue. For those who are interested, the full audit report is available <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/peckshield/publications/blob/master/audit_reports/PeckShield-Audit-Report-Revert-V3utils-v1.0.pdf">here</a>.</p><p>Let’s do a quick review of the functionality provided by the V3Utis contract that is now available on the app:</p><p><strong>Swap and Increase liquidity:</strong> Takes any amount of token0, token1, or a third arbitrary token and a Uniswap v3 position NFT. It will swap the tokens into the correct amounts according to parameters passed given the position range, pool price, 0x quotes, and max slippage parameters, perform any required swaps, add the swapped tokens into the Uniswap position and return the NFT to the user.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/d6dca6bed705bd252a80533ead90f0cf38e70ffa35620e5688d5816614832cd0.webp" alt="Swap and Increase liquidity" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Swap and Increase liquidity</figcaption></figure><p><strong>Decrease liquidity and swap:</strong> Is the inverse operation, given a Uniswap position NFT and a desired output token, which does not require to be any of the underlying assets, it will decrease liquidity by the amount indicated by the user and perform the swap as defined by the 0x API, and max slippage parameters, and finally return to the calling user the output of the swap(s) as well as the position NFT. It can be performed by any amount of liquidity contained by the position.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/8fd27acdbc1c361421f36bb48f2a99716f2c5dd3356c2efcb9a1fc1b4e818ad0.webp" alt="Decrease liquidity and swap" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Decrease liquidity and swap</figcaption></figure><p><strong>Collect fees and swap:</strong> This one, similarly, allows users to collect any amount of uncollected fees on their Uniswap v3 position and atomically swap them into any token. Returning, at the end of the operation, the output of the swaps as well as position NFT with the underlying liquidity untouched.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/a80fb0efae0fa7ef6478f0f0a02935b20ffd2d619c327174904a0c2a79f36b05.webp" alt="Collect fees and swap" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Collect fees and swap</figcaption></figure><p>Our team is dedicated to providing the best user experience, and we have responded to users&apos; requests by developing two additional functions.</p><p><strong>Swap and Mint:</strong> Similar to “Swap and increase liquidity”, it will take any amount of token0 and token1, or a third arbitrary token, and will perform the required swaps to create a position on the selected pool for a position range, it will then return the newly minted position to the user.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/7cd9b9993223dd17e19c66349c9dbd23b5b42e1c990a43598d476efe6ab138fe.jpg" alt="Swap and Mint" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Swap and Mint</figcaption></figure><p><strong>Move range:</strong> Allows LPs to exit from an existing position into another position in the same pool by atomically withdrawing existing liquidity and uncollected fees, swapping the withdrawn tokens into the correct allocation given the newly selected range, depositing the tokens and minting a new position which is then sent back to the user.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/1c6c99521d1b014348607283885b6fc84d82c5187627681e1445dbb4dbc4b13a.jpg" alt="Move Range" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Move Range</figcaption></figure><p>We are currently testing the integration of these new functionalities on the frontend, and they will be shipped soon. Stay tuned!</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[An attack on V3Utils]]></title>
            <link>https://paragraph.com/@revertfinance/an-attack-on-v3utils</link>
            <guid>qtS5NCgl0NbOOQHC8fMD</guid>
            <pubDate>Sun, 26 Feb 2023 15:06:22 GMT</pubDate>
            <description><![CDATA[TLDR: On February 18th 2023, a total of just under $30K USD was stolen from users of our recently released “Atomic swaps into V3 positions” feature implemented via our V3Utils contract. Immediately after being notified, we quickly updated the site to prevent other users from being exposed and diagnosed how the exploit took place. ALL AFFECTED USERS HAVE NOW BEEN RESTITUTED FULL TOKEN BALANCES VIA AIRDROPS FROM THE FOLLOWING ACCOUNT ON EACH RESPECTIVE NETWORK. Mainnet: https://etherscan.io/add...]]></description>
            <content:encoded><![CDATA[<p><strong>TLDR:</strong> On February 18th 2023, a total of just under $30K USD was stolen from users of our recently released “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/revertfinance.eth/WenyNv6UJkt8veWRZGBKetONP6tssMxbi5lh9J3zwYw">Atomic swaps into V3 positions</a>” feature implemented via our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://0x531110418d8591c92e9cbbfc722db8ffb604fafd">V3Utils</a> contract. Immediately after being notified, we quickly updated the site to prevent other users from being exposed and diagnosed how the exploit took place. <strong>ALL AFFECTED USERS HAVE NOW BEEN RESTITUTED FULL TOKEN BALANCES VIA AIRDROPS FROM THE FOLLOWING ACCOUNT ON EACH RESPECTIVE NETWORK.</strong></p><p>Mainnet: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0x94f9FBdf13f19C86D6d07ae500D10e199BC61c4A#tokentxns">https://etherscan.io/address/0x94f9FBdf13f19C86D6d07ae500D10e199BC61c4A#tokentxns</a></p><p>Optimism: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimistic.etherscan.io/address/0x94f9FBdf13f19C86D6d07ae500D10e199BC61c4A#tokentxns">https://optimistic.etherscan.io/address/0x94f9FBdf13f19C86D6d07ae500D10e199BC61c4A#tokentxns</a></p><p>Polygon: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://polygonscan.com/address/0x94f9fbdf13f19c86d6d07ae500d10e199bc61c4a#tokentxns">https://polygonscan.com/address/0x94f9fbdf13f19c86d6d07ae500d10e199bc61c4a#tokentxns</a></p><p>Arbitrum: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbiscan.io/address/0x94f9FBdf13f19C86D6d07ae500D10e199BC61c4A#tokentxns">https://arbiscan.io/address/0x94f9FBdf13f19C86D6d07ae500D10e199BC61c4A#tokentxns </a></p><p>This post aims to explain what happened, provide transparency into affected accounts, and to provide accountability - ensuring verifiable refunding for all affected users -, and an increased commitment of security over fast iteration in our operations and product releases.</p><h2 id="h-how-it-all-went-down" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How it all went down.</h2><p>At 2:56 AM CST on the eve of Saturday, February 18th, one of our users posted on our Discord server the following message:</p><p><em>“WARNING: I just had my polygon USDC stolen after approving it via revert&apos;s single token add liquidity feature. I have contacted one of the developers about it and waiting to hear back.”</em></p><p>About half an hour later another user posted a similar message. The whole team being in the same time zone (CST), this was not noticed until 6:46 AM when I woke up and reached for my phone. I alerted the team right away.</p><p>We immediately disabled the new “Atomic swap into Uniswap v3 positions” functionality from the site.  This feature had been released earlier in the week, and was what being reported as being used by the affected users. If this were an ongoing attack, disabling the Atomic Swap feature would prevent any new users from being harmed.</p><p>After disabling the Atomic Swap feature, we started investigating. Inspecting the transactions, it became evident that they did involve our V3Utils contract, and that there was an interaction with a suspicious, unverified, and recently deployed contract. We decided at this point it was best to alert all possible users who might have approved allowances for the exploited contract.  At 7:39 AM CST we posted a Tweet and a Discord message notifying all the members with the possible vulnerable contract addresses and urging everyone to revoke any approved balances.</p><div data-type="twitter" tweetId="1626939693643489282" tweetData="{&quot;__typename&quot;:&quot;Tweet&quot;,&quot;in_reply_to_screen_name&quot;:&quot;revertfinance&quot;,&quot;in_reply_to_status_id_str&quot;:&quot;1626939407126376448&quot;,&quot;in_reply_to_user_id_str&quot;:&quot;1351396188097040386&quot;,&quot;lang&quot;:&quot;ht&quot;,&quot;favorite_count&quot;:7,&quot;created_at&quot;:&quot;2023-02-18T13:40:24.000Z&quot;,&quot;display_text_range&quot;:[0,209],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1626939693643489282&quot;,&quot;text&quot;:&quot;mainnet: 0x531110418d8591c92e9cbbfc722db8ffb604fafd\npolygon: 0x8c925768c793e00c095135b8656d6014ee2d07bb\noptimism:\n0x2A017f2Fb369F4CA061B8D8A922Bb05100e8f8C3\narbitrum: 0x95a8cc9ab71b26bdacbe6a7ccf519456edc2a164&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;1351396188097040386&quot;,&quot;name&quot;:&quot;revert&quot;,&quot;screen_name&quot;:&quot;revertfinance&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1626939693643489282&quot;],&quot;editable_until_msecs&quot;:&quot;1676729424000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;conversation_count&quot;:1,&quot;news_action_type&quot;:&quot;conversation&quot;,&quot;parent&quot;:{&quot;lang&quot;:&quot;en&quot;,&quot;reply_count&quot;:4,&quot;retweet_count&quot;:36,&quot;favorite_count&quot;:63,&quot;possibly_sensitive&quot;:false,&quot;created_at&quot;:&quot;2023-02-18T13:39:16.000Z&quot;,&quot;display_text_range&quot;:[0,210],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[{&quot;display_url&quot;:&quot;revoke.cash&quot;,&quot;expanded_url&quot;:&quot;https://revoke.cash/&quot;,&quot;indices&quot;:[162,185],&quot;url&quot;:&quot;https://t.co/oJrOO9zjUN&quot;}],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1626939407126376448&quot;,&quot;text&quot;:&quot;We have gotten reports from 2 users about an attack involving approvals to our v3utils contract. We are investigating and will report further.\nWe recommend using https://t.co/oJrOO9zjUN for following addresses:&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;1351396188097040386&quot;,&quot;name&quot;:&quot;revert&quot;,&quot;screen_name&quot;:&quot;revertfinance&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://pbs.twimg.com/profile_images/1351400877295341571/fjCCya7g_normal.png&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1626939407126376448&quot;],&quot;editable_until_msecs&quot;:&quot;1676729356000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false}"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/revertfinance">
              <img alt="User Avatar" class="twitter-avatar" src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/revertfinance" class="twitter-displayname">revert</a>
              <p><a target="_blank" href="https://twitter.com/revertfinance" class="twitter-username">@revertfinance</a></p>
    
            </div>
            <a href="https://twitter.com/revertfinance/status/1626939693643489282" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      mainnet: 0x531110418d8591c92e9cbbfc722db8ffb604fafd<br />polygon: 0x8c925768c793e00c095135b8656d6014ee2d07bb<br />optimism:<br />0x2A017f2Fb369F4CA061B8D8A922Bb05100e8f8C3<br />arbitrum: 0x95a8cc9ab71b26bdacbe6a7ccf519456edc2a164
      
      
       
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/revertfinance/status/1626939693643489282" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            7
          </a>
          <a target="_blank" href="https://twitter.com/revertfinance/status/1626939693643489282"><p>7:40 AM • Feb 18, 2023</p></a>
        </div>
    
  </div> 
  </div><p>As  part of the team focused on working with users to answer questions about the revoke process, the rest of the team worked to diagnose the exploit while also writing code to identify and mitigate any other accounts that  could be potentially be at risk (given previously authorized allowances).</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tenderly.co/">Tenderly</a> proved to be an invaluable tool for understanding the exploit. Using Tenderly, our team was able to identify the attack vector:</p><ul><li><p>The V3Utils contract relies on an external aggregator to do the swaps. Our frontend calls this API with the tokens and amounts intended for swapping, and the API returns the swap parameters sent to the V3Utils contract.</p></li><li><p>There are two important values included in this API response, the contract which works as a router for the swaps, and the contract to approve the tokens for the actual swap. Because these values are dynamic and can be changed at any time with new versions of the aggregator, we had decided not to hard code them in our contracts which was designed to be ownerless and immutable.</p></li><li><p>By inspecting the reported transactions it became clear that the swapRouter parameter was used as the vector for attack. The swap function was called using a token contract (like USDC) as the router parameter, which allowed the attacker to execute arbitrary code against that contract with our own V3Utils as the caller.</p></li><li><p>This means that any previously authorized allowances to the V3Utils contract were vulnerable to being drained. Because our frontend only prompts for approval of the amounts to be used as deposits the remaining allowances mostly remain at zero and so not vulnerable. In some cases, however, accounts approved amounts larger than what was swapped leaving them open to be drained by these malicious transactions.</p></li></ul><p>At 8:46 AM, once we verified the exploit was tied to the V3Utils contract, we once again  pushed a notification to all Discord members -  explaining the diagnosis of the exploit and urging everyone again to check and revoke any allowances to the affected contracts.  We relayed the same information via our official Twitter and Telegram  accounts.</p><div data-type="twitter" tweetId="1626956900276510721" tweetData="{&quot;__typename&quot;:&quot;Tweet&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;favorite_count&quot;:25,&quot;possibly_sensitive&quot;:false,&quot;created_at&quot;:&quot;2023-02-18T14:48:47.000Z&quot;,&quot;display_text_range&quot;:[0,175],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[],&quot;media&quot;:[{&quot;display_url&quot;:&quot;pic.x.com/bZ8yMSKjea&quot;,&quot;expanded_url&quot;:&quot;https://x.com/revertfinance/status/1626956900276510721/photo/1&quot;,&quot;indices&quot;:[176,199],&quot;url&quot;:&quot;https://t.co/bZ8yMSKjea&quot;}]},&quot;id_str&quot;:&quot;1626956900276510721&quot;,&quot;text&quot;:&quot;We have confirmed that this was an exploit to our v3utils contract used in the new \&quot;atomic swap into v3 position\&quot; functionality. Here is an inital explanation of what happened https://t.co/bZ8yMSKjea&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;1351396188097040386&quot;,&quot;name&quot;:&quot;revert&quot;,&quot;screen_name&quot;:&quot;revertfinance&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1626956900276510721&quot;],&quot;editable_until_msecs&quot;:&quot;1676733527000&quot;,&quot;is_edit_eligible&quot;:true,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;mediaDetails&quot;:[{&quot;display_url&quot;:&quot;pic.x.com/bZ8yMSKjea&quot;,&quot;expanded_url&quot;:&quot;https://x.com/revertfinance/status/1626956900276510721/photo/1&quot;,&quot;ext_media_availability&quot;:{&quot;status&quot;:&quot;Available&quot;},&quot;indices&quot;:[176,199],&quot;media_url_https&quot;:&quot;https://pbs.twimg.com/media/FpQci59aIAEj5tK.png&quot;,&quot;original_info&quot;:{&quot;height&quot;:394,&quot;width&quot;:881,&quot;focus_rects&quot;:[{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:704,&quot;h&quot;:394},{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:394,&quot;h&quot;:394},{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:346,&quot;h&quot;:394},{&quot;x&quot;:12,&quot;y&quot;:0,&quot;w&quot;:197,&quot;h&quot;:394},{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:881,&quot;h&quot;:394}]},&quot;sizes&quot;:{&quot;large&quot;:{&quot;h&quot;:394,&quot;resize&quot;:&quot;fit&quot;,&quot;w&quot;:881},&quot;medium&quot;:{&quot;h&quot;:394,&quot;resize&quot;:&quot;fit&quot;,&quot;w&quot;:881},&quot;small&quot;:{&quot;h&quot;:304,&quot;resize&quot;:&quot;fit&quot;,&quot;w&quot;:680},&quot;thumb&quot;:{&quot;h&quot;:150,&quot;resize&quot;:&quot;crop&quot;,&quot;w&quot;:150}},&quot;type&quot;:&quot;photo&quot;,&quot;url&quot;:&quot;https://t.co/bZ8yMSKjea&quot;}],&quot;photos&quot;:[{&quot;backgroundColor&quot;:{&quot;red&quot;:204,&quot;green&quot;:214,&quot;blue&quot;:221},&quot;cropCandidates&quot;:[{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:704,&quot;h&quot;:394},{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:394,&quot;h&quot;:394},{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:346,&quot;h&quot;:394},{&quot;x&quot;:12,&quot;y&quot;:0,&quot;w&quot;:197,&quot;h&quot;:394},{&quot;x&quot;:0,&quot;y&quot;:0,&quot;w&quot;:881,&quot;h&quot;:394}],&quot;expandedUrl&quot;:&quot;https://x.com/revertfinance/status/1626956900276510721/photo/1&quot;,&quot;url&quot;:&quot;https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/3c893c6ae315e49e3345610db9b97a344a0065987f98c16360630a91b4681224.png&quot;,&quot;width&quot;:881,&quot;height&quot;:394}],&quot;conversation_count&quot;:0,&quot;news_action_type&quot;:&quot;conversation&quot;,&quot;quoted_tweet&quot;:{&quot;lang&quot;:&quot;en&quot;,&quot;reply_count&quot;:4,&quot;retweet_count&quot;:36,&quot;favorite_count&quot;:63,&quot;possibly_sensitive&quot;:false,&quot;created_at&quot;:&quot;2023-02-18T13:39:16.000Z&quot;,&quot;display_text_range&quot;:[0,210],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[{&quot;display_url&quot;:&quot;revoke.cash&quot;,&quot;expanded_url&quot;:&quot;https://revoke.cash/&quot;,&quot;indices&quot;:[162,185],&quot;url&quot;:&quot;https://t.co/oJrOO9zjUN&quot;}],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1626939407126376448&quot;,&quot;text&quot;:&quot;We have gotten reports from 2 users about an attack involving approvals to our v3utils contract. We are investigating and will report further.\nWe recommend using https://t.co/oJrOO9zjUN for following addresses:&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;1351396188097040386&quot;,&quot;name&quot;:&quot;revert&quot;,&quot;screen_name&quot;:&quot;revertfinance&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1626939407126376448&quot;],&quot;editable_until_msecs&quot;:&quot;1676729356000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false}"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/revertfinance">
              <img alt="User Avatar" class="twitter-avatar" src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/revertfinance" class="twitter-displayname">revert</a>
              <p><a target="_blank" href="https://twitter.com/revertfinance" class="twitter-username">@revertfinance</a></p>
    
            </div>
            <a href="https://twitter.com/revertfinance/status/1626956900276510721" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      We have confirmed that this was an exploit to our v3utils contract used in the new "atomic swap into v3 position" functionality. Here is an inital explanation of what happened 
      <div class="twitter-media"><img class="twitter-image" src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/3c893c6ae315e49e3345610db9b97a344a0065987f98c16360630a91b4681224.png" /></div>
      
      <div class="twitter-quoted">
        
  <div class="twitter-quoted twitter-embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/revertfinance">
              <img alt="User Avatar" class="twitter-avatar" src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/revertfinance" class="twitter-displayname">revert</a>
              <p><a target="_blank" href="https://twitter.com/revertfinance" class="twitter-username">@revertfinance</a></p>
    
            </div>
            <a href="https://twitter.com/revertfinance/status/1626939407126376448" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      We have gotten reports from 2 users about an attack involving approvals to our v3utils contract. We are investigating and will report further.<br />We recommend using <a class="twitter-content-link" href="https://t.co/oJrOO9zjUN" target="_blank">revoke.cash</a> for following addresses:
      
      
       
    </div>
    
  </div> 
  
    </div> 
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/revertfinance/status/1626956900276510721" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            25
          </a>
          <a target="_blank" href="https://twitter.com/revertfinance/status/1626956900276510721"><p>8:48 AM • Feb 18, 2023</p></a>
        </div>
    
  </div> 
  </div><p>At that point we had tallied up that there were allowances for the V3Utils contract the low hundreds of thousands of dollars. We urged everyone to echo our information on all channels possible and a lot of the community was there to help amplify the message. We added a bright orange banner to the top of the website that would display to the vulnerable accounts that their funds could be at risk.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/191ea51a6be2aeae733cb75bd8c41d346742df6d8e9d7248e982a56bbe35683d.png" alt="Banner on the site displaying for vulnerable accounts with link to the twitter revoke message" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Banner on the site displaying for vulnerable accounts with link to the twitter revoke message</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/2db51b67f779479aba72c274769df4cd3770c1f18fbf64f92c26f939d5659c6f.png" alt="Etherscan also acted quickly in marking the contracts as “requested for revoking” across all networks." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Etherscan also acted quickly in marking the contracts as “requested for revoking” across all networks.</figcaption></figure><p>Alerting our community of the situation was successful, we quickly started seeing allowances revoked, and a few minutes before 12pm we saw the single largest one was revoked.</p><div data-type="twitter" tweetId="1627007047169634305" tweetData="{&quot;__typename&quot;:&quot;Tweet&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;favorite_count&quot;:12,&quot;created_at&quot;:&quot;2023-02-18T18:08:03.000Z&quot;,&quot;display_text_range&quot;:[0,59],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1627007047169634305&quot;,&quot;text&quot;:&quot;The biggest open pending allowance has revoked permissions!&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;1351396188097040386&quot;,&quot;name&quot;:&quot;revert&quot;,&quot;screen_name&quot;:&quot;revertfinance&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1627007047169634305&quot;],&quot;editable_until_msecs&quot;:&quot;1676745483000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;conversation_count&quot;:1,&quot;news_action_type&quot;:&quot;conversation&quot;,&quot;quoted_tweet&quot;:{&quot;lang&quot;:&quot;en&quot;,&quot;reply_count&quot;:3,&quot;retweet_count&quot;:24,&quot;favorite_count&quot;:43,&quot;created_at&quot;:&quot;2023-02-18T16:20:26.000Z&quot;,&quot;display_text_range&quot;:[0,278],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1626979965727297536&quot;,&quot;text&quot;:&quot;Would help to spread the msg for accounts to revoke permissions for:\nmainnet: 0x531110418d8591c92e9cbbfc722db8ffb604fafd\npolygon: 0x8c925768c793e00c095135b8656d6014ee2d07bb\noptimism:\n0x2A017f2Fb369F4CA061B8D8A922Bb05100e8f8C3\narbitrum: 0x95a8cc9ab71b26bdacbe6a7ccf519456edc2a164&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;1351396188097040386&quot;,&quot;name&quot;:&quot;revert&quot;,&quot;screen_name&quot;:&quot;revertfinance&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1626979965727297536&quot;],&quot;editable_until_msecs&quot;:&quot;1676739026000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false}"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/revertfinance">
              <img alt="User Avatar" class="twitter-avatar" src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/revertfinance" class="twitter-displayname">revert</a>
              <p><a target="_blank" href="https://twitter.com/revertfinance" class="twitter-username">@revertfinance</a></p>
    
            </div>
            <a href="https://twitter.com/revertfinance/status/1627007047169634305" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      The biggest open pending allowance has revoked permissions!
      
      
      <div class="twitter-quoted">
        
  <div class="twitter-quoted twitter-embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/revertfinance">
              <img alt="User Avatar" class="twitter-avatar" src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/076f88dd904906e74a1cc09fecc9983342f196e3fc8f715283d9ce878da0a95f.png" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/revertfinance" class="twitter-displayname">revert</a>
              <p><a target="_blank" href="https://twitter.com/revertfinance" class="twitter-username">@revertfinance</a></p>
    
            </div>
            <a href="https://twitter.com/revertfinance/status/1626979965727297536" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      Would help to spread the msg for accounts to revoke permissions for:<br />mainnet: 0x531110418d8591c92e9cbbfc722db8ffb604fafd<br />polygon: 0x8c925768c793e00c095135b8656d6014ee2d07bb<br />optimism:<br />0x2A017f2Fb369F4CA061B8D8A922Bb05100e8f8C3<br />arbitrum: 0x95a8cc9ab71b26bdacbe6a7ccf519456edc2a164
      
      
       
    </div>
    
  </div> 
  
    </div> 
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/revertfinance/status/1627007047169634305" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            12
          </a>
          <a target="_blank" href="https://twitter.com/revertfinance/status/1627007047169634305"><p>12:08 PM • Feb 18, 2023</p></a>
        </div>
    
  </div> 
  </div><p>After these wave of revokals, the total vulnerable allowances were down to close to $30k USD, a considerable but much less catastrophic amount. We also knew that the total amount stolen from victims was also close to but under another $30k, with $25k being from a single user who had reported the attacks on mainnet.</p><h2 id="h-whitehatting-it" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Whitehatting it</h2><p>The following day, by midday Sunday, February 19th, there were still close to $20,000 USD of unrevoked permissions across all networks. We’d  taken every measure possible to  contact the possibly affected users, and  decided that focusing on deploying a way to whitehat vulnerable accounts would be the best possible thing to do. We deployed our own attacker contract and started running a bot that would monitor any transfers into the vulnerable accounts to execute the described attack ourselves for refunding the users. This worked and we were able to get small amounts of tokens before the attackers and were used as part of the refunding.</p><p>By the end of the weekend, only a few thousand dollars that users had not revoked remained at risk though ready to be captured by our counter measure bot.</p><h2 id="h-lessons-learned-and-moving-forward" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Lessons learned &amp; moving  forward</h2><p>First, we want to apologize to all of our users, particularly those that were a victim of this exploit. At Revert Finance, our mission aims to empower our users, AMM LPs, and ensuring the safety and security of the tools we provide is paramount to achieving that.</p><p>This exploit was disappointing, painful and frustrating for us, but more importantly for those affected – and does reflect the way we aim to operate here at Revert.</p><p>We sub-estimated the this contract could present for our users. Since it was not a contract that would hold user funds, we assessed incorrectly that it was less of a risk and hiring a full audit was not necessary.</p><p>This is contrary to our other deployed contracts, the auto-compounder which was <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/peckshield/publications/blob/master/audit_reports/PeckShield-Audit-Report-Revert-Compoundor-v1.0.pdf">audited by Peckshiend</a> before deployment and has a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://immunefi.com/bounty/revert/">running bounty for $100k on immunefy</a>, and the time-vested v3 staker where a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/peckshield/publications/blob/master/audit_reports/PeckShield-Audit-Report-Revert-v1.0.pdf">full audit was also conducted by PeckShield</a> before deployment.</p><p>Going forward, and before resuming functionality of the affected contract, all of our deployments will receive a proper external audit, but more importantly we will not make the same mistake of assuming any contract that handles user funds, even temporarily, is less of a risk. While the <strong><em>“move fast and break things”</em></strong> philosophy is tempting when you are simply providing analytics, when smart contracts are involved <strong><em>“move at a steady pace and be very mindful of the things”</em></strong> is the only sensible approach.</p><p>Finally we would like to express sincere gratitude to our users, and the different folks who reached out to us privately offering their help and support. We will not forget it.</p><p>---</p><h3 id="h-the-affected-accounts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">The affected accounts</h3><p>Below is a list of accounts with the amount of tokens that were withdrawn with the exploit, and the script we used to determine the amounts. Those same tokens and amounts have been now airdropped back as a refund from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0x94f9FBdf13f19C86D6d07ae500D10e199BC61c4A#tokentxns">this account</a> on each respective network. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gist.github.com/mariorz/49976ce76773de2758a6b6bc29855257#file-v3analysis-js">This script</a> we used to generate the list of attacked victims.</p><pre data-type="codeBlock" text="MAINNET 0x067D0F9089743271058D4Bf2a1a29f4E9C6fdd1b USDC 19305.581627
MAINNET 0x4107A0A4a50AC2c4cc8C5a3954Bc01ff134506b2 USDC 500
MAINNET 0x067D0F9089743271058D4Bf2a1a29f4E9C6fdd1b USDT 4106.316699

OPTIMISM 0xbB8694519BC68B337663F0BDbE79847b49000b6B OP 403.5786287699002
OPTIMISM 0xD5dE81E7e5E4F740a26Ebb254d6052e1D03B4787 OP 32.00000000000003
OPTIMISM 0xD5dE81E7e5E4F740a26Ebb254d6052e1D03B4787 USDC 228.935843
OPTIMISM 0x89425a801dbbacD4562638161198b6d3b85A314c WETH 0.06919111687156008
OPTIMISM 0x50EE407e77EBfD8A6b0F22AC74719f63C8a0A7Db USDC 36.736549
OPTIMISM 0x8cadb20A4811f363Dadb863A190708bEd26245F8 DAI 10
OPTIMISM 0x5C0843066F64aA0D9858611401cD2DD6F2e1f7E4 DAI 17
OPTIMISM 0x50EE407e77EBfD8A6b0F22AC74719f63C8a0A7Db WETH 0.003659440712231981OPTIMISM 0x5C0843066F64aA0D9858611401cD2DD6F2e1f7E4 PREMIA 22
OPTIMISM 0x50EE407e77EBfD8A6b0F22AC74719f63C8a0A7Db USDC 106.557557
OPTIMISM 0xD5dE81E7e5E4F740a26Ebb254d6052e1D03B4787 USDC 6
OPTIMISM 0xe48fE6012f97b6A13C0Ce5cEF314cAF66E972deB USDC 41.296177

POLYGON 0x4E23d9Bb84359e2a20D3aBC6985d6c55c37062D6 WMATIC 15
POLYGON 0xb9B69B3B969E8Fa9EcF9815b396A77fB53267ED1 WMATIC 3.5972237426468854
POLYGON 0x225170393fCD06F3295aDa2bF33002C8ec94b8E4 USDC 194.316778
POLYGON 0x8cadb20A4811f363Dadb863A190708bEd26245F8 WBTC 1e-8
POLYGON 0x859Bb79038C20F09A7Ad5726e036028f301d5de6 USDC 0.76822
POLYGON 0x0B82F6a646cD5C07da58EBDDBd8b21caBD9E3632 USDC 111.918734
POLYGON 0x31Df5f1437eC5fA7BE165a84ED9635e9b0f57536 USDC 373.40421
POLYGON 0xD2eDb935FE14C80747E782FA870116D5E1C1E744 USDC 158
POLYGON 0x225170393fCD06F3295aDa2bF33002C8ec94b8E4 USDC 922.439314
POLYGON 0xD2eDb935FE14C80747E782FA870116D5E1C1E744 USDC 664.599662
POLYGON 0x5593095740485D30cd2171Eb12a1F174A1Ccb085 USDC 165.702693
POLYGON 0xb7A3E33A76c359349a2aED0A7833DCDB3E2D8337 WMATIC 0.004956763791274464
POLYGON 0x637c25D0f2CCa040D025e4c5b0332e6146869C56 USDC 6.488701
POLYGON 0x637c25D0f2CCa040D025e4c5b0332e6146869C56 DAI 7.590931982602232
POLYGON 0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0 WBTC 0.00000679
POLYGON 0x8cadb20A4811f363Dadb863A190708bEd26245F8 USDC 0.7853
POLYGON 0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0 oMATIC 0.21822824027535612
POLYGON 0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0 USDC 0.02
POLYGON 0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0 WBTC 0.00046135

ARBITRUM 0xf6b9Cb280Ae3c5dd5eC22D7A1A2A7f5F0a1AE879 USDC 200
ARBITRUM 0x19D32180BC2210eA3b500553d3Db90ef248A38f3 WETH 0.08983629296701101
ARBITRUM 0x7C14D5dB2A4417901E45D2Ab7fE33D916d18F0e1 WETH 0.01
ARBITRUM 0x19D32180BC2210eA3b500553d3Db90ef248A38f3 WETH 0.005984559978510494
ARBITRUM 0x5A12D9cd39Bc86C510aDA067F662c7bf796f8De6 WETH 0.002690670523787123
"><code>MAINNET <span class="hljs-number">0x067D0F9089743271058D4Bf2a1a29f4E9C6fdd1b</span> USDC <span class="hljs-number">19305.581627</span>
MAINNET <span class="hljs-number">0x4107A0A4a50AC2c4cc8C5a3954Bc01ff134506b2</span> USDC <span class="hljs-number">500</span>
MAINNET <span class="hljs-number">0x067D0F9089743271058D4Bf2a1a29f4E9C6fdd1b</span> USDT <span class="hljs-number">4106.316699</span>

OPTIMISM <span class="hljs-number">0xbB8694519BC68B337663F0BDbE79847b49000b6B</span> OP <span class="hljs-number">403.5786287699002</span>
OPTIMISM <span class="hljs-number">0xD5dE81E7e5E4F740a26Ebb254d6052e1D03B4787</span> OP <span class="hljs-number">32.00000000000003</span>
OPTIMISM <span class="hljs-number">0xD5dE81E7e5E4F740a26Ebb254d6052e1D03B4787</span> USDC <span class="hljs-number">228.935843</span>
OPTIMISM <span class="hljs-number">0x89425a801dbbacD4562638161198b6d3b85A314c</span> WETH <span class="hljs-number">0</span><span class="hljs-number">.06919111687156008</span>
OPTIMISM <span class="hljs-number">0x50EE407e77EBfD8A6b0F22AC74719f63C8a0A7Db</span> USDC <span class="hljs-number">36.736549</span>
OPTIMISM <span class="hljs-number">0x8cadb20A4811f363Dadb863A190708bEd26245F8</span> DAI <span class="hljs-number">10</span>
OPTIMISM <span class="hljs-number">0x5C0843066F64aA0D9858611401cD2DD6F2e1f7E4</span> DAI <span class="hljs-number">17</span>
OPTIMISM <span class="hljs-number">0x50EE407e77EBfD8A6b0F22AC74719f63C8a0A7Db</span> WETH <span class="hljs-number">0</span>.003659440712231981OPTIMISM <span class="hljs-number">0x5C0843066F64aA0D9858611401cD2DD6F2e1f7E4</span> PREMIA <span class="hljs-number">22</span>
OPTIMISM <span class="hljs-number">0x50EE407e77EBfD8A6b0F22AC74719f63C8a0A7Db</span> USDC <span class="hljs-number">106.557557</span>
OPTIMISM <span class="hljs-number">0xD5dE81E7e5E4F740a26Ebb254d6052e1D03B4787</span> USDC <span class="hljs-number">6</span>
OPTIMISM <span class="hljs-number">0xe48fE6012f97b6A13C0Ce5cEF314cAF66E972deB</span> USDC <span class="hljs-number">41.296177</span>

POLYGON <span class="hljs-number">0x4E23d9Bb84359e2a20D3aBC6985d6c55c37062D6</span> WMATIC <span class="hljs-number">15</span>
POLYGON <span class="hljs-number">0xb9B69B3B969E8Fa9EcF9815b396A77fB53267ED1</span> WMATIC <span class="hljs-number">3.5972237426468854</span>
POLYGON <span class="hljs-number">0x225170393fCD06F3295aDa2bF33002C8ec94b8E4</span> USDC <span class="hljs-number">194.316778</span>
POLYGON <span class="hljs-number">0x8cadb20A4811f363Dadb863A190708bEd26245F8</span> WBTC <span class="hljs-number">1e-8</span>
POLYGON <span class="hljs-number">0x859Bb79038C20F09A7Ad5726e036028f301d5de6</span> USDC <span class="hljs-number">0</span><span class="hljs-number">.76822</span>
POLYGON <span class="hljs-number">0x0B82F6a646cD5C07da58EBDDBd8b21caBD9E3632</span> USDC <span class="hljs-number">111.918734</span>
POLYGON <span class="hljs-number">0x31Df5f1437eC5fA7BE165a84ED9635e9b0f57536</span> USDC <span class="hljs-number">373.40421</span>
POLYGON <span class="hljs-number">0xD2eDb935FE14C80747E782FA870116D5E1C1E744</span> USDC <span class="hljs-number">158</span>
POLYGON <span class="hljs-number">0x225170393fCD06F3295aDa2bF33002C8ec94b8E4</span> USDC <span class="hljs-number">922.439314</span>
POLYGON <span class="hljs-number">0xD2eDb935FE14C80747E782FA870116D5E1C1E744</span> USDC <span class="hljs-number">664.599662</span>
POLYGON <span class="hljs-number">0x5593095740485D30cd2171Eb12a1F174A1Ccb085</span> USDC <span class="hljs-number">165.702693</span>
POLYGON <span class="hljs-number">0xb7A3E33A76c359349a2aED0A7833DCDB3E2D8337</span> WMATIC <span class="hljs-number">0</span><span class="hljs-number">.004956763791274464</span>
POLYGON <span class="hljs-number">0x637c25D0f2CCa040D025e4c5b0332e6146869C56</span> USDC <span class="hljs-number">6.488701</span>
POLYGON <span class="hljs-number">0x637c25D0f2CCa040D025e4c5b0332e6146869C56</span> DAI <span class="hljs-number">7.590931982602232</span>
POLYGON <span class="hljs-number">0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0</span> WBTC <span class="hljs-number">0</span><span class="hljs-number">.00000679</span>
POLYGON <span class="hljs-number">0x8cadb20A4811f363Dadb863A190708bEd26245F8</span> USDC <span class="hljs-number">0</span><span class="hljs-number">.7853</span>
POLYGON <span class="hljs-number">0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0</span> oMATIC <span class="hljs-number">0</span><span class="hljs-number">.21822824027535612</span>
POLYGON <span class="hljs-number">0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0</span> USDC <span class="hljs-number">0</span><span class="hljs-number">.02</span>
POLYGON <span class="hljs-number">0xA0f7F9F79f619BD86849747Be69Fb7a257fF01C0</span> WBTC <span class="hljs-number">0</span><span class="hljs-number">.00046135</span>

ARBITRUM <span class="hljs-number">0xf6b9Cb280Ae3c5dd5eC22D7A1A2A7f5F0a1AE879</span> USDC <span class="hljs-number">200</span>
ARBITRUM <span class="hljs-number">0x19D32180BC2210eA3b500553d3Db90ef248A38f3</span> WETH <span class="hljs-number">0</span><span class="hljs-number">.08983629296701101</span>
ARBITRUM <span class="hljs-number">0x7C14D5dB2A4417901E45D2Ab7fE33D916d18F0e1</span> WETH <span class="hljs-number">0</span><span class="hljs-number">.01</span>
ARBITRUM <span class="hljs-number">0x19D32180BC2210eA3b500553d3Db90ef248A38f3</span> WETH <span class="hljs-number">0</span><span class="hljs-number">.005984559978510494</span>
ARBITRUM <span class="hljs-number">0x5A12D9cd39Bc86C510aDA067F662c7bf796f8De6</span> WETH <span class="hljs-number">0</span><span class="hljs-number">.002690670523787123</span>
</code></pre><h2 id="h-the-attackers" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Attackers</h2><p>On a post-mortem analysis we have determined that there were five EOA accounts involved in the attack. This information has been forwarded to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.chainalysis.com/">Chainalysis</a> for inclusion in their database.</p><p><strong>MAINNET: 0x38F887a0FE01b9e4960D5C727519408fA7f32F70</strong></p><p>The first funding transactions for this account comes from a multi-chain <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://%5Bhttps://etherscan.io/tx/0xeae5de4757fa646ed201535081eef3278e0632782d51a0f6e535ea7775ac0d63%5D">bridging from BNB chain</a>, where that account was originally <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bscscan.com/tx/0x30555a47fe66ecb180a4820800b92140d53b1c7744aa4f68756cbebaca0514cc">funded on August 30th, 2022 via tornado cash</a>.</p><p><strong>POLYGON: 0x31487bBD8c2E79465940CC07DEc049dC0845331B</strong></p><p>The first funding of this account was via a bridge called <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://anyswap.exchange/">AnySwap</a>, and this account was also <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bscscan.com/tx/0xc9d8b03613bab61efc007adb48e977a82913a260660536d74eeacf63cd45a270">funded via Tornado Cash</a> on the same date as the mainnet attacker account, August 30th. Given this, it seems apparent that at least this one and the mainnet accounts belong to the same attacker.</p><p><strong>OPTIMISM: 0xF93CEE8fdbC59BcA3A74A2F08d60a3e366E4768c</strong></p><p>This account appears to also have been first funded on BNB, but through a centralized non-custodial exchange called <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://fixedfloat.com/">FixedFloat</a> on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bscscan.com/tx/0x8ff78c1a66044512b795aa045f59b58f7c5107d429f9d515f774d1ef80e189cf">February 14th</a>. This same account also performed the same attack on the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbiscan.io/address/0xf93cee8fdbc59bca3a74a2f08d60a3e366e4768c">Arbitrum contract</a>.</p><p><strong>OPTIMISM: 0x9b6Bb041B79B83b2dF1839d51Cd654cc6444e852</strong></p><p>This account was originally funded on Optimism via the HOP bridge on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimistic.etherscan.io/tx/0x34ef5040b53db06fc867814a3f19a507d84e11837fc738b05a57589aa0123cb8">October 12th 2022</a> from Ethereum. On the Ethereum the account was originally <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/tx/0x4bd70cd482c39a4959ee4f8357c54aeee25738ccb0bda8458af9b7a7c809948b">funded on the same day (October 12th)</a> by account 0xbce37312886b43721bf488bda0f5d58871b310cf That account in turn was first <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/tx/0xff16ae91a7aa6310fbe5a1f853ac8a94db119768b2240fedb6c2ace464a5b78a">funded on June 7th 2021</a> by account 0xb7f830845e9f385372ae6fb160aa968908f5bfbc which has a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blockscan.com/address/0xb7f830845e9f385372ae6fb160aa968908f5bfbc">long history across several blockchains</a> due to the huge number of transactions Etherscan does allow to paginate that far back, but trackable for sure by inspecting the blockchain.</p><p><strong>OPTIMISM: 0x5504790a2426A312194270C7a7443a54AF9F75AE</strong></p><p>This account can be traced back to Ethereum where it originally <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimistic.etherscan.io/tx/0xd1b7ef5ef896f8acf93337f07913be8bf8314703518ce2fb5287645e2256a865">bridged from on December 13th 2022</a>. That account itself was originally <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/tx/0x5bf13b3ecc8dcdc413c90b53b01bf551fa9c7437a52aa561ee387ca401fae7ce">funded on the same day by account 0xc5e3605480fad6b9acb84585fb56860c835f6dd7</a>, that account was <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/tx/0x8db9158a440c93bbbef60b80a115dbb33da5ebdb95a1dced69dee2884eda9252">funded by account  0x077d360f11d220e4d5d831430c81c26c9be7c4a4 on December 02 2022</a>. That account has a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blockscan.com/address/0x077d360f11d220e4d5d831430c81c26c9be7c4a4">long history across chains</a> and the original funding is unavailable on ethersan.</p><p>Not included in the list above is our own bot 0x54ab50dd18305e4280e41af1923b38835363ecf1 which white hatted a small portion of funds on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimistic.etherscan.io/address/0x54ab50dd18305e4280e41af1923b38835363ecf1#tokentxns">Optimism</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://polygonscan.com/address/0x54ab50dd18305e4280e41af1923b38835363ecf1#tokentxns">Polygon</a>, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbiscan.io/address/0x54ab50dd18305e4280e41af1923b38835363ecf1#tokentxns">Arbitrum</a>.</p><p>If any of the above addresses was also performing white hatting service, please return the funds to this account: 0x54ab50dd18305e4280e41af1923b38835363ecf1 Keep 20%. No questions asked.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Atomic swaps into Uniswap v3 positions]]></title>
            <link>https://paragraph.com/@revertfinance/atomic-swaps-into-uniswap-v3-positions</link>
            <guid>pHOJnV2uBCeG7uzoA7ZE</guid>
            <pubDate>Mon, 13 Feb 2023 17:18:39 GMT</pubDate>
            <description><![CDATA[After talking with many Uniswap V3 LPs during 2022 one of the most often heard things were to the effect of:I have 5000 USDC and I want to add them to my ETH/OP position. To do that I end up doing two or even three swaps, some in opposing directions, and even after that, I am left with change and just give up.Indeed, that is a pain point we’ve felt as well, and have built a solution for. One of the challenges in adding liquidity to existing positions on Uniswap v3 is getting the assets you wa...]]></description>
            <content:encoded><![CDATA[<p>After talking with many Uniswap V3 LPs during 2022 one of the most often heard things were to the effect of:</p><blockquote><p><strong><em>I have 5000 USDC and I want to add them to my ETH/OP position. To do that I end up doing two or even three swaps, some in opposing directions, and even after that, I am left with change and just give up.</em></strong></p></blockquote><p>Indeed, that is a pain point we’ve felt as well, and have built a solution for.</p><p>One of the challenges in adding liquidity to existing positions on Uniswap v3 is getting the assets you want to add to the correct ratio required. This is because the price of the assets is constantly changing, and the correct ratio is dependent on the current price of the pool as well as the position range. And if you are swapping into the same pool with sufficient price impact, the calculations get even more tricky.</p><p>Using <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">Revert</a> you can now add liquidity to an existing position using any amounts of the underlying assets, or even any third arbitrary token. Revert will automatically compute the required amounts that need to be swapped for each of the token pair assets, get the best possible quote using the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.0x.org/introduction/welcome">0x API</a>, and atomically do the swap and add the liquidity to your positions.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/8adae83defec6d33f20931917d3c781f53d536c04d064d29e6a995f514722b60.jpg" alt="Swap and add liquidity" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Swap and add liquidity</figcaption></figure><p>We’ll conveniently do the same in the way out if you want do “withdraw and swap” or “collect fees and swap” for any mounts into either one of the assets or again an arbitrary third token.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/d621c1cdbc9c5d0f77e87f3ab4a57d3fce50f74dbf80e6087878e44692a60794.jpg" alt="Decrease liquidity and swap" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Decrease liquidity and swap</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://img.paragraph.com/cdn-cgi/image/format=auto/https://storage.googleapis.com/papyrus_images/302e7a338cc6b2027b68736c021ae755449bc2e396044ac4f38b76fab28f31aa.jpg" alt="Claim fees and swap" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Claim fees and swap</figcaption></figure><p>This all happens atomically on-chain, we are making use of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0x531110418d8591c92e9cbbfc722db8ffb604fafd">v3utils.sol</a>, a contract we have published for this purpose, and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://protocol.0x.org/en/latest/">0x protocol</a> to handle any required swaps, so for LPs can confidently use this functionality even when they are providing liquidity for relatively small pools.</p><h2 id="h-how-does-it-work" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How does it work?</h2><p>We have implemented three basic operations defined by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0x531110418d8591c92e9cbbfc722db8ffb604fafd#code">v3utils contract</a>.</p><p><strong>Swap and Increase liquidity:</strong> Takes any amount of token0, token1, or a third arbitrary token and a Uniswap v3 position NFT. It will swap the tokens into the correct amounts according to parameters passed given the position range, pool price, 0x quotes, and max slippage parameters, perform any required swaps, add the swapped tokens into the Uniswap position and return the NFT to the user.</p><p><strong>Decrease liquidity and swap:</strong> Is the inverse operation, given a Uniswap position NFT and a desired output token, which does not require to be any of the underlying assets, it will decrease liquidity by the amount indicated by the user and perform the swap as defined by the 0x API, and max slippage parameters, and finally return to the calling user the output of the swap(s) as well as the position NFT. It can be performed by any amount of liquidity contained by the position.</p><p><strong>Claim fees and swap:</strong> This one, similarly, allows users to collect any amount of uncollected fees on their Uniswap v3 position and atomically swap them into any arbitrary token. Returning, at the end of the operation, the output of the swaps as well as position NFT with the underlying liquidity untouched.</p><h2 id="h-coming-soon-swap-and-mint-atomically-swap-and-mint-a-position" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Coming Soon, Swap and Mint: Atomically swap and mint a position.</h2><p>And obvious missing piece here is this same idea of atomically swapping any asset into a determined Uniswap position, but instead of increasing liquidity on an existing position, create a new position that you don’t already hold. Fret not, we are on it, testing, and expect to ship it out in a few more days fully integrated to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance/#/initiator">revert initiator</a>.</p><h2 id="h-available-now" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Available now</h2><p>The features described above are already available on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://revert.finance">the site</a> and across all chains. We are looking forward to your comments and feedback as you try them out. Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/revertfinance">Twitter</a> or drop in on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/HXfxKHrRmf">our Discord</a> to stay updated.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
        <item>
            <title><![CDATA[Revert will run Compoundor bots going forward]]></title>
            <link>https://paragraph.com/@revertfinance/revert-will-run-compoundor-bots-going-forward</link>
            <guid>ls8KITsTXNURKWfEaeNx</guid>
            <pubDate>Tue, 24 Jan 2023 22:55:29 GMT</pubDate>
            <description><![CDATA[The Revert Compoundor protocol was designed to be trustless and with minimal governance required. It is however not decentralized. As explained in our whitepaper, there are four parameters controlled by a team multisig. Two of them maxTWAPTickDifference and TWAPSeconds relate to the Uniswap pricing oracle, and are a precautionary measure that prevents swapping of collected fees during high volatility periods. Another pair of variables totalRewardX64 and compounderRewardX64 determine the amoun...]]></description>
            <content:encoded><![CDATA[<p>The Revert Compoundor protocol was designed to be trustless and with minimal governance required. It is however not decentralized. As explained in our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@revert/BJcGIJQ35">whitepaper</a>, there are four parameters controlled by a team multisig. Two of them <strong><em>maxTWAPTickDifference</em></strong> <em>and </em><strong><em>TWAPSeconds</em></strong><em> relate to the Uniswap pricing oracle, and are a precautionary measure that prevents swapping of collected fees during high volatility periods.</em></p><p>Another pair of variables <strong><em>totalRewardX64</em></strong> <em>and </em><strong><em>compounderRewardX64</em></strong><em> determine the amount of fees the protocol charges and how much of that the protocol pays to the compoundor bots that execute the auto-compound function. These parameters have not been changed since the contract was deployed and are currently set at 2% for the </em><strong><em>totalRewardX64</em></strong><em> (this parameter can only be reduced and never increased) and 1% for the </em><strong><em>compounderRewardX64</em></strong><em> (this parameter can be decreased or increased, but it can never be greater than </em><strong><em>totalRewardX64</em></strong><em>). More clearly, this means that right now when a position is auto-compounded, 1% of the compounded fees go to the Compoundor protocol, and the other 1% goes to the people running the compoundor bots.</em></p><p>When we launched the Compoundor protocol our team was really the only one running auto-compounding bots, but we published and open sourced our bot implementation expecting other people might want to run them, learn from them, and perhaps accrue some profit by auto-compounding positions.</p><p>And indeed that did happen, to the point where we just kept our bots running as backstop in case other bots did not compound positions first, but that is a rare occurrence now.</p><p>On one hand this is great, we believe the resilience of the protocol is theoretically increased by compoundor bots running independently of ours. On the other hand there are some downsides to this.</p><p>First, in full honesty, we (Revert, the company) are leaving some revenue on the table by giving 1% to the bot operators for a task that we have to be prepared to do anyway.</p><p>Our stated mission is to build powerful analytics tools for liquidity providers in AMM procools while keeping them open and accessible to everyone, for this reason we have avoided doing things like paywalls and our roadmap includes revenue generating features that are aligned with our mission.</p><p>Going back to compoundor bots, a simple way to increase company revenue, <strong>without increasing costs for our users,</strong> is for us to take over the role of running them exclusively.</p><p>Additionally, as explained in our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@revert/BJcGIJQ35">whitepaper</a>, auto-compounding has diminishing returns. This is to say that the APY increase from auto-compounding most positions is not significantly increased if a position is auto-compounded 4000 times per year, instead of 400 times per year. While these excessive compoundings don’t represent an extra cost to the LPs, as the fee is 2% of what is compounded regardless of the compounding frequency, there are some externalities to consider:</p><ul><li><p>Unnecessary load on chains: as mentioned above, increasing the number of auto-compounds above a certain threshold does not significantly increase the APY for positions, but does result in more transactions being included in the respective network.</p></li><li><p>Unnecessary load in tracking positions: every collect and deposit transaction implies additional resources being spent in tracking the positions.</p></li><li><p>Excess balances mixed between positions: In some cases, because the uncollected fees and the positions being compounded have different ratios in token0 and token1, excess balances can be left in the contract assigned to the position owner. These balances are there to be used in future compoundings for positions from that same LP account, and if an account has more than one position that share an asset (like ETH), excess balances accrued from one position can be used to compound another position (owned by the same user). This can be avoided if Compoundor bots swap the accrued fees to the correct ratio, but this implies an extra gas cost that compoundor bots can decide to avoid.</p></li><li><p>UX confusion: Though the unnecessary compoundings do not imply any additional cost (gas or otherwise) to the LPs, we do get a lot of questions as to why positions are compounded with this seemingly excessive frequency.</p></li></ul><h2 id="h-the-changes-we-are-making-to-the-compoundor-parameters" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The changes we are making to the Compoundor parameters</h2><p>We will be leaving <strong>totalRewardX64</strong> as is, but will be setting <strong>compounderRewardX64</strong> to zero**.** What this means is that external compoundors are not incentivized to run the compoundor bots and that responsibility will be taken over by our team only.</p><p>The team will also run the bots so that we maximize APY improvement for positions, but also reducing the negative externalities mentioned above. Additionally, and not to minimize this, the revenue generated by the Compounder bots will be accrued fully by Revert.</p><h2 id="h-when-will-this-be-executed" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">When will this be executed?</h2><p>Any change to the Compoundor contract parameters requires a 24-hour time-lock to take effect, but we will also be allowing for a few more days, and notifying the folks we know running compoundor bots of these changes so that they can stop their bots, as otherwise they would be only paying gas costs without any revenue to make up for it.</p><h2 id="h-does-this-mean-that-revert-compoundor-is-becoming-more-centralized" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Does this mean that Revert Compoundor is becoming more centralized?</h2><p>The compoundor protocol is at the moment trustless and with minimal governance required, but it is not decentralized as the parameters, and the protocol revenue, is controlled by the team and not any form of DAO.</p><h2 id="h-what-comes-next" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What comes next?</h2><p>As we progress in executing on our roadmap, and a next version of the Compoundor, we will be releasing an additional set of features where it will perhaps become more important to decentralize governance of specific parameters and we will most likely do so.</p><h2 id="h-what-effects-will-this-have-on-lps-that-are-auto-compounding" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What effects will this have on LPs that are auto-compounding?</h2><p>The changes should be mostly unnoticeable for LPs. The Compounding APY will not be reduced even though they might notice less frequent compoundings for their positions. <strong>There are no new or additional costs for Revert users</strong>.</p><h2 id="h-compoundor-bot-runners-will-not-be-happy" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Compoundor bot runners will not be happy</h2><p>We understand this is not great news for folks who have been running Compoundor bots and we did not make this decision lightly. But we believe this change will help in keeping with our stated mission of building powerful tools for LPs in AMM protocols while keeping them open and accessible to everyone. Again, we believe as we execute on our roadmap throughout the year there will be new opportunities for external parties to help in protocol automation.</p>]]></content:encoded>
            <author>revertfinance@newsletter.paragraph.com (Revert)</author>
        </item>
    </channel>
</rss>