Overview

Maverick provides DeFi infrastructure in the form of a spot Decentralized Exchange (DEX) powered by an Automated Market Maker (AMM). The key innovation comes in the form of a Dynamic Distribution AMM that makes it possible to automate liquidity strategies.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F4729a68d 0881 4d05 a10f

Maverick was built with capital efficiency in mind. This makes it possible for the AMM to offer optimal pricing for trades to execute their swaps while still facilitating the value capture from fee revenue for liquidity providers.

Like most spot Dexes, liquidity providers deposit assets into liquidity pools and traders swap assets at prices set by the AMM. This allows LPs to collect fees from traders swapping against their liquidity.

Additionally, Maverick introduces a variety of built-in strategies that make it possible for liquidity providers to customize their positions without the intervention of a third party or metaprotocols that actively manage the liquidity.

The design of the Dynamic AMM introduces features such as:

  • Custom LP distributions – LPs are not restricted to staking their liquidity in a uniform price range.
  • Low LP maintenance – LPs do not have to worry about active maintenance and management of their liquidity positions. There is no need to introduce a third-party metaprotocol to automate the concentration of liquidity, and fees are compounded by the AMM itself.
  • Increased capital efficiency.

By automating the concentration of liquidity around price movements and making it seamless for LPs to manage the distribution of their liquidity positions, Maverick helps its users to maximize capital efficiency. LPs can select from a variety of liquidity shifting modes that do the work of monitoring prices and reconcentrating liquidity for them.

Liquidity Pools

Concentrated liquidity AMMs solved the problem of slippage for traders. However, their mechanism also forces LPs to constantly adjust and rebalance their positions as the price movies. This is time-consuming and carries increasing costs since LPs now have to monitor price movements and adjust their liquidity ranges accordingly, otherwise, they would lose out on yield from swap fees.

Similar to most AMMs, LPs supply liquidity to a pool on Maverick for traders to swap against. In return, they collect trading fees charged to traders for each of their swaps.

In each pool, there are two tokens. In general, an LP supplies quantities of both tokens, although in some cases they may provide only one (single-sided liquidity), and the actual ratio of the tokens depends on the distribution that the LP selects.

Maverick implements a concentrated liquidity AMM where liquidity is distributed using a series of bins that correspond to different price ranges in a pool.

  • Prices in a pool reflect the ratio between the two tokens in that pool.
  • The widths of the bins vary from pool to pool and are set by the LP who initially deploys the pool.
  • Liquidity providers add liquidity to particular bins in order to execute a particular liquidity strategy.
https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a6d010 5af7 4880 8214

The image above shows how liquidity is distributed across bins, with each bin corresponding to a price range for the token pair.

Only one bin in a pool is active at a time, which means that swaps are actively occurring at that price point using the liquidity in that bin. As trades occur and the ratio of assets in the pool changes, the price moves to a new bin, making that the new active bin.

  • LPs only collect fees when they own liquidity in the currently active bin.
  • LPs collect fees based on their pro-rata share of the current active bin.
  • Any fees earned are auto-compounded back into the pool. This way, the LP’s position in the pool grows proportionally.
  • When an LP exits their position, they redeem their proportional share from the bins in which they are staked.

In order to deploy a liquidity pool on Maverick, the deployer must choose a fee tier and select the pool’s bin width. The fee tier will determine what percentage of the value of their swap a trader will be charged for swapping with the pool. Because of this, there can be multiple pools with different fee tiers and widths deployed for the same trading pair.

Automated Liquidity Placement (ALP)

Maverick’s Automated Liquidity Placements sets out to solve the overhead problem where LPs need to constantly rebalance their positions to follow market prices. The AMM solves this problem by concentrating liquidity natively and dynamically in the pool, eliminating the requirement that LPs constantly reallocate their own liquidity. This makes it possible for traders to swap with very low slippage while also maximizing the fee revenue for LPs.

Maverick’s ALP mechanism uses traders’ swap orders as a signal of when to move the liquidity distribution. As traders swap and move the price, this is a reliable signal that the intrinsic value of the asset is moving as well. In this case, the liquidity distribution should likewise move to support the new price range.

ALP shifts liquidity in each pool according to a function of the trade inputs. By moving the distribution, the AMM ensures that there will always be a broad base of support around the desired price, meaning lower slippage for traders. This is equivalent to an AMM that automatically moves a constant slope of the price curve to track the price that has been determined by swaps.

How ALP Works

The image below shows an ALP-managed pool with liquidity concentrated around the current market price, similar to a well-allocated Uniswap V3 pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fe6a37 2f05 437b 9994

As more of the Y asset has been swapped out of the pool, the price has shifted, thereby moving the price away from the initial concentration of liquidity in the pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd78e26 6c37 4f46 a377

As a response to the price shift, Maverick’s ALP automatically shifts the concentrated liquidity in the pool towards the new price. This results in a dynamic flattening of the invariant curve near the market price, where the flatter section reflects an area of low slippage.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F804c4e2e 000d 471b a92d

Liquidity Modes

The Maverick AMM comes with 4 out-of-the-box liquidity modes for users to choose from. Each of these modes is designed to implement a particular liquidity strategy in order to manage positions and keep the pool’s liquidity active according to certain parameters.

All liquidity-shifting is performed natively by the Maverick AMM smart contract, which means that LPs using a movement mode never pay gas to move their liquidity.

Inside the pools, liquidity is moved based on the Time Weighted Average Price (TWAP), which may be different from the current price in a pool.

Mode Right

In Mode Right, liquidity is deposited into the pool and it will only follow the market price as it moves to the right of the current active bin.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8183e4 c0ce 4fb7 bac6

Movements to the right correspond to an increase in the price of one of the two assets in the pool (the “base” asset) as their ratio is changed by trading activity. This allows LPs to execute an active liquidity strategy that takes advantage of upward price trajectories.

In Mode Right, LPs can add liquidity to the bin directly to the left of the current active bin. They can also add liquidity to the current active bin, but this would increase the risk of impermanent loss.

If and when the price moves to the right and leaves the current active bin – effectively swapping through all of the right assets in that bin – the LP’s liquidity is automatically moved one bin to the right to keep up with the overall movement.

The goal of this strategy is to generate fees and profit from upward price action while minimizing impermanent loss. This way LPs can use Mode Right to make a bet on the value of one asset increasing relative to the other. If their bet is correct, they can follow the price to the right and capture fees as it moves.

To be more precise, this strategy relies on the fact that price movements are rarely linear. Instead, the price of an asset bounces and experiences a range of micro-adjustments even as it moves and follows a clear direction. Even if the overall trend is to the right, the price line should frequently dip back to the left due to market corrections or arbitrage opportunities. All of this right-left movement generates trading fees for the LP, and since they are primarily exposed to only one asset in the pair their impermanent loss will be limited.

It is worth noting that Mode Right only follows prices in one direction. If the market trends reversed, this could cause the price to move to the left. When that occurs, the AMM will leave the LP bins where they are. This could cause the LP to be swapped completely for the underperforming asset (i.e. the asset on the right, the quote asset) and expose them to impermanent loss.

Example

Imagine a USDC-ETH pool, with $ETH being the asset on the right of the liquidity graph (i.e., the “base” asset) and USDC being the asset on the left (i.e., the “quote” asset). In a market where $ETH was performing well, we would expect more traders to be interested in swapping $USDC for $ETH. As they visit the pool and make their swaps, the ratio between $ETH and $USDC will change, since they will remove $ETH and replace it with $USDC. This causes the price line to move right on the chart, as the AMM accounts for the change in the ratio by raising the price of $ETH (i.e., by increasing the amount of $USDC required to obtain 1 $ETH).

As the price moves to the right, the LP’s position has now been concentrated into the bin to the immediate left of the current active bin. In this case, although the price is trending to the right, the realities of arbitrage mean that it is reasonable to expect traders to continue to sell $ETH to the pool any time its price moves out of sync with the broader market. Any incoming $ETH will need to be swapped for $USDC, which will be supplied from the LP’s bin, thus generating fees. The new $ETH in the LP’s bin will be the first to be sold back to traders, creating more fees for the LP.

Mode Left

Mode Left functions as a dynamic range order that follows the price in a pool as it moves to the left on the liquidity graph. Moves to the left represent a decrease in the price of one of the two assets in the pool (in this case the “base” asset) as their ratio is changed by trading activity.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F0577a073 f6b2 46d1 9ab7

In Mode Left, an LP can add liquidity to the bin immediately to the right of the current active bin (and also the active bin, although this increases the risk of impermanent loss).

Liquidity providers have an incentive to enter Left Mode if they expect that the right (or “base”) asset will decrease in value relative to the left (or “quote”) asset. This would result in a trend to the left and, if they are correct in their expectations, the price should progressively move to the left, allowing them to collect fees in the process while experiencing relatively low impermanent loss.

There is a risk that, if the price moves to the right, the AMM will not move the LP’s bins at all. In that scenario, they risk being swapped entirely to the underperforming asset (i.e. the asset on the left or “base” asset) and becoming exposed to impermanent loss.

Example

Imagine a USDC-ETH pool and an LP that predicts a bear market for $ETH. They choose Mode Left, adding some $ETH to the bin immediately to the right of the current active bin. Assuming the LP’s bet is correct, and $ETH begins to lose market value, traders would come to the AMM to swap their $ETH for $USDC. As the ratio of the assets in the pool changes, the AMM moves the price to the left (effectively lowering the amount of $USDC a trader will receive for 1 $ETH).

As the price moves to the left and out of the active bin, that bin is completely swapped to $ETH. The AMM then automatically reconcentrates all of the LP’s $ETH into this bin, which now sits immediately to the right of the new active bin. Next, market volatility will move the price back and forth into this right bin, letting LP earn fees from the swaps. The LP can then continue to profit from swap fees and have its liquidity automatically managed as long as the price stays there or moves further to the left.

Mode Both

Mode Both acts as a dynamic range order that follows the price in a pool wherever it goes, whether it moves to the right or the left. In other words, it follows the pool price up and down. The purpose of this mechanism is to keep the LP’s liquidity as close to the current price as possible at all times.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b57b525 892d 4d0c acf5

Mode Both allows an LP to add liquidity to the current active bin and to either of the bins immediately to the left or right of the active bin. When trading activity moves the price from the active bin into a new bin in either direction, the LP’s liquidity on the opposite side will be automatically reconcentrated into what previously was the active bin, moving it closer to the pool price.

If the price continues to move in the same direction into new bins, the AMM will continue to reconcentrate the LP’s liquidity to keep following the price. If the price rebounded in the other direction, the AMM would first allow the LP to get swapped through completely and then begin reconcentrating the liquidity to follow the price from the opposite side.

It is worth noting that the risk of impermanent loss with this mode is higher than either Mode Right or Mode Left since the LP is exposed to it in both directions. Besides, there is also the risk of permanent loss, since the LP is agreeing to sell underperforming assets at any point in time.

Example

Imagine a USDC-ETH pool with an LP that uses Mode Both to stake liquidity in the bin immediately to the left of the current active bin. This means their initial position consists entirely of $USDC. Next, the market value of $ETH goes up, and traders come to the pool to swap it out for $USDC. Eventually, these trades swap through all of the $ETH in the current active bin, and the price moves right into the next bin, which is composed entirely of $ETH. The AMM now reconcentrates the LP’s liquidity into the bin directly to the left of the active bin, which is composed entirely of $USDC.

Up to this point, Mode Both has functioned like Mode Right. Now assuming that the previous price trend reverses and the price of $ETH starts to fall, trading activity will send the price back to the left, out of the current active bin, and into the bin directly to the left, where the LP’s liquidity was recently concentrated. This means that the LP’s bin is now the current active bin.

Mode Static

Mode Static allows users to provide liquidity without committing to any specific liquidity-shifting mechanism. This results in functionality that resembles a standard concentrated liquidity AMM. Liquidity providers add liquidity to a bin or range of bins and that liquidity will remain in those bins regardless of where the price moves. Since the liquidity does not need to follow price movements, this method is likely to be less capital efficient unless it is actively managed by the liquidity provider.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F69fcdadd eb78 4d02 929e

The difference with other concentrated liquidity AMMs is that, in Maverick, LPs don’t pick a range over which their liquidity will be evenly distributed. Instead, Maverick LPs can customize their liquidity distribution on a bin-by-bin basis. This unlocks the potential for more complex liquidity strategies.

When a user selects Mode Static, they are presented with three default distributions:

  • Exponential – starts with a concentration of liquidity around the current pool price and spreads the rest of the liquidity in exponentially decreasing amounts across the bins to the left and right.
  • Flat – distributes liquidity evenly across a range of bins, centered around the current pool price (similar to constant product AMMs).
  • Single Bin – distributes the liquidity only in the active bin.

For both exponential and flat, the user can also specify the percentage of the price range they wish to cover, and the UI will select the appropriate amount of bins based on the bin width of the current pool.

LP Positions

Positions are the foundation of Maverick’s market-making, which allows LPs to improve the control they have over their capital and maximize their capital efficiency.

When users deposit liquidity into a Maverick pool, they select from several options to open a specific position in that pool. Between the token pair, fee tier, bin width, liquidity mode, and liquidity distribution, each user’s position can be heavily parameterized and therefore very different from all other liquidity providers on Maverick. Even within the same pool, users might have their liquidity staked at different price points under different liquidity movement modes.

Maverick LP positions within a bin are fungible. Hence, the pro-rata share of a bin’s assets that an LP can claim is represented by an LP token balance. However, due to the large number of bins that are possible and the gas associated with minting ERC-20 tokens, the AMM tracks bin positions as an NFT that stores each bin’s LP balance.

Each NFT is identified by its ID number. A user will have one NFT that is reused as they enter and exit bin LP positions. However, a user can choose to mint a new NFT at any point without paying an additional cost. The AMM also automatically compounds trading fees back into the bin where they were collected. This increases capital efficiency while also saving LPs in gas fees.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F792bd071 2487 4d8b 8ccf

Single-Sided Liquidity

The idea behind providing two-sided liquidity in a static AMM is to collect fees from trading volume. However, two-sided liquidity deposits also increase the likelihood of impermanent loss. Moreover, single-side liquidity deposits are not supported by constant product AMMs.

In concentrated liquidity AMMs like Uniswap V3, it is possible to provide liquidity with just one asset. However, the capital remains stagnant as the AMM price moves away from the desired range. Without a built-in mechanism to move the liquidity close to the price, this results in low capital efficiency.

Maverick solves this problem by allowing LPs to make directional bets and provide liquidity with just one asset while still maintaining high capital efficiency. This is possible due to the underlying liquidity-shifting mechanisms.

TWAP

The AMM smart contract tracks the TWAP (Time-Weighted Average Price) with a configurable lookback period (the default choice is a 3-hour lookback). Anyone can start a pool with an arbitrary lookback. This will determine how liquidity moves within the pool.

Liquidity is moved based on the TWAP, not the current price. As trades happen and the price changes, so does the TWAP.

  • When the TWAP moves through a bin edge up, Mode Right and Mode Both bins will move up to the next too.
  • When the TWAP moves through a bin edge down, Mode Left and Mode Both bins will shift down one bin.

Bins

The smallest price range is a bin. The bin spacing is a configurable parameter that is set when the pool is initialized. A typical bin spacing for volatile asset pairs is 2%.

Screenshot 2023 06 30 at 6.48.50 PMe

Adding Liquidity to a Bin

Users can choose to add liquidity to a bin that is either all quote, all base, or a mix of base and quote. When adding liquidity, the user cannot change the price, so they must add the base and/or quote asset in the same proportion that the bin already contains.

To add liquidity to Maverick, an LP will first mint a free NFT position. This NFT will have a unique ID associated with the LP’s token balance. The user can choose to mint a new position at any time, but one position is enough to store all of the LP token balances across all bins and pools in which an LP is participating.

When a user becomes an LP by providing liquidity, LP tokens are minted and the totalSupply of the bin is incremented. The number of LP tokens (newSupply) that are minted is calculated by expressing the base and/or quote being added as a percentage of the bin’s existing reserves and multiplying that by the current totalSupply of LP tokens.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25e6dbb 0027 4fbd 88a8
Moving and Merging Bins

Non-static bins (i.e. bins with a kind property of RIGHT, LEFT, or BOTH) move to the right or left with price as traders swap with the pool. When this happens, the lowerTick value of the bin changes. The new lowerTick value is set to the new tick position of the bin.

If a non-static bin moves to a tick where there is already another bin of the same kind, the contract executes a merge procedure. At the end of that procedure, only one of the two bins will still be “active” and the other bin’s reserve will be transferred to that active bin.

As part of the swapping procedure, the contract ensures that there will never be two active bins of the same kind and the same lowerTick value. When a bin is moved, the contract checks to see if there would be more than one active bin of the same kind at the same lowerTick. If there is, then a merge procedure happens: the mergeId of the merged bin is updated with the binID of the bin that is active at this tick

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F64d46ada 7839 42e8 a9ad
Screenshot 2023 06 30 at 6.50.27 PM

Screenshot 2023 06 30 at 6.51.50 PM

Removing Liquidity

Screenshot 2023 06 30 at 6.53.29 PM

Pools

Pools can be permissionlessly created by any user. That first user has the option of configuring the pool parameters:

  • fee — the proportion of the swap that stays in the pool, e.g., 0.1%.
  • tickSpacing — the width of a bin on a geometric grid of 1. basis point ticks, where bin width = 1.0001^tickSpacing
  • lookback — TWAP look back in seconds, default is 3 hours.
  • tokenA — quote token in the pool.
  • tokenB — base token in the pool.

A pool tracks the following state elements:

  • state.activeBin — lowest tick of the set of bins that contain the current price.
  • state.status — lock signal to protect against reentrancy.
  • state.binCounter — highest binID that has been initialized.
  • state.protocolFeeRatio — the proportion of the swap fee that is retained by the Maverick protocol.
  • binPositions — mapping from (lowerTick, kind) to active binId if a bin exists at that (lowerTick, kind).
  • binMap — bit mask of which ticks have active bins and which kinds of bins are in those ticks.
  • bins — list of bin objects indexed by binId.
  • binBalanceA — the sum A reserves in all active bins.
  • binBalanceB — the sum B reserves in all active bins.

The binMap is a multilevel data structure designed for efficient bin look-ups. Conceptually, it is a collection of 4-bit nybbles at every possible tick position with each bit representing one of the four kinds (STATIC, RIGHT, LEFT, BOTH). In order to reduce memory usage, Maverick uses a sparse data structure that only maintains a minimal collection of 256-bit words (holding 64 nybbles representing 64 ticks), which are indexes with a 32-bit integer-to-word hashmap.

Fast look-ups are made relative to a reference tick position by computing the index of the current word and offset from the reference tick position.

  • If the index is not present in the hashmap, then the index is incremented or decremented until an active word is found or an iteration limit is reached.
  • If an active word is found, then the position of the least-significant bit (up) or most-significant bit (down) is used to determine both the bin kind and the tick position.
  • If the active index matches the reference index, then the most-significant or least-significant bit search is done relative to the reference tick offset.

Swapping

Maverick allows users to “flash swap” such that they can collect the proceeds of their swap before they have to transmit what they owe to the contracts. Users simply need to specify either the exact amount they want to receive of a given token or the amount they want to swap in. The contract then disburses the proceeds to the user.

When calling a swap on the pool, users provide a callback function. To pay the contract what is owed for the swap, it will then call the user-provided callback function, which will need to transmit the user’s tokens to the contract in order to complete the transaction.

Swapping in a Bin

For any given position in price, there can be up to 4 active bins. To compute a swap efficiently, the contract first determines the amount of reserve for all bins present at the current price. Then the swap computation is performed on this aggregate amount of reserve. After the swap is complete, the input and output token amounts for the aggregate swap amount are distributed to each of the participating bins in proportion to the bin’s reserve amounts.

Screenshot 2023 06 30 at 6.55.41 PM

At the end of the swap, the binBalanceA and binBalanceB balances will reflect the sum A and B balances across all bins. The amount of protocol fee set aside is not explicitly tracked. Instead, the protocol fee is the difference between the ERC20 A and B balances and the bin balances.

Rounding

The contract is designed to round appropriately in order to remain solvent with respect to the pool’s balance according to tokenA and tokenB ERC20 contracts. In particular, the contract must ensure that:

  • The token balance according to the ERC20 contracts is always greater than or equal to both the binBalance and the sum of the bin’s reserves.
  • The binBalance is greater than or equal to the sum of the bins’ reserves:

Screenshot 2023 06 30 at 6.57.40 PM

Swapping Through Ticks

A swap may be large enough that it will swap an entire bin. If this happens, the swap-in-a-bin process described above will be repeated again for the next adjacent bin set with any remaining assets that are remaining to be swapped.

Moving Bins and TWAP

The contract tracks the TWAP of the pool by registering the price of the pool at the end of each swap, and this value is overwritten for swaps in the same block. The TWAP is then stored in the log price domain. Ultimately, the pool only needs to know which tick the TWAP is in since that dictates when non-static bins move left or right with the price.

After a swap, the contract checks to see if any bins need to be moved. If so, then the move proceeds. Within a block, no time passes between operations, meaning that the TWAP value will be the same for the duration of the block. Because of this, no bins will move beyond the first swap in a block. This way, all movement checks within a block are determined by the TWAP change that took place in the previous block. As a result, a swapper cannot move liquidity using a swap inside of a single block.  This makes the movement robust to large inner-block flash swap operations that may significantly move the price.

In the case of a large two-step flash swap that moved the price up and

then back down inside the block, none of the dynamic liquidity bins would move in response and the TWAP would be unaffected by the large price excursion.

For liquidity to move, a swapper would have to leave their capital on chain for at least one block period, which would leave that liquidity exposed to arbitrageurs, thereby discouraging any such toxic liquidity movement manipulations.

Finally, when an LP starts a pool, they have the option to choose the TWAP lookback period. Longer periods further blunt any liquidity manipulation attack surface. The suggested default liquidity lookback period for a pool is 3 hours.

Notation:

Screenshot 2023 06 30 at 6.58.55 PM

Movement conditions:

Screenshot 2023 06 30 at 6.59.53 PM

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abcba76 e8d0 4ae8 a063

Incentives

Boosted Positions

When a user deposits liquidity into a Maverick pool, they select from several options to open a specific position in that pool. Each position is differentiated by a number of key variables: token pair, fee tier, bin width, liquidity mode, and liquidity distribution.

The customizability of positions offers a high degree of control and flexibility for liquidity providers. Boosted positions expand upon this concept to offer a similar degree of precise control when it comes to directing liquidity incentives.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f3d4d8 87d6 4816 9f26

Instead of adding liquidity and creating a regular position, a user can create a Boosted Position (always denoted with a lightning bolt in the UI). These incentives function like bribes to other users to add more liquidity to that Boosted Position. Boosted Positions work exactly like any other position, with two important differences:

  • Other users can add liquidity to a Boosted Position, effectively buying a share in that position.
  • A Boosted Position can be incentivized with additional token rewards, which are shared among LPs who add liquidity to that Boosted Position.

For example, a new project looking to bootstrap liquidity for their token (let’s call it XYZ) doesn’t need LPs to bring more XYZ to Maverick, since their treasury already has plenty of it. Instead, what the project needs from users is a quote asset (e.g., $ETH) that can be swapped against their XYZ. In this scenario, the project could create a Boosted Position consisting only of $ETH in an XYZ/ETH pool and then add incentives to the Boosted Position. This would encourage new LPs to add only $ETH to the pool, effectively allowing project XYZ to rent only the liquidity they need for their pool.

With Boosted Positions, incentives can come from several sources and be distributed according to a variety of factors. Liquidity providers who add liquidity to a boosted position can earn rewards from:

  • Trading fees: As with any other position, an LP in a Boosted Position earns a pro-rata share of the trading fees generated by their liquidity. These fees are auto-compounded into the LP’s share of the Boosted Position and do not need to be claimed. If an LP removes their liquidity from the Boosted Position, the amount redeemed will include any fees generated by that liquidity.
  • Liquidity incentives: In addition to trading fees, LPs in a Boosted Position may receive incentives that have been added to that Boosted Position.
    • Any user can add incentives in the form of ERC-20 tokens to a Boosted Position. These incentives are split pro-rata between LPs in a Boosted Position and can be used to incentivize more users to add liquidity to a particular Boosted Position.
    • Incentives can be added at any time and be distributed over a user-defined period.
    • LPs can claim the rewards they have accrued at any time (e.g., they can claim before a distribution period has finished or after it has finished.
    • When adding incentives, a user selects how much of a particular token (defined as balance) to add and chooses a distribution period between three and thirty days. Based on the period chosen, the smart contract computes a reward rate that will distribute the balance evenly throughout the period. The reward rate is denominated in seconds, meaning that a proportional amount of the balance will be distributed every second to LPs in the Boosted Position.

If another user adds more incentives to the same Boosted Position, the contract checks their contribution against the remaining balance of incentives:

  • If the new contribution is higher, this second user can define a new distribution period and the reward rate will be recalculated to distribute all incentives (both the new incentives and the remaining old incentives) according to the new distribution period.
  • If the new contribution is lower, the new incentives will be added to the existing distribution period with a reward rate based on the remaining time in that period.

For example, imagine a user that adds 700 $USDC as incentive to a Boosted Position with a distribution period of 1 week, meaning that the reward rate will essentially be 100 $USDC a day (distributed equally between LPs every second). After 3 days, 300 $USDC will have been distributed to LPs. The remaining balance of incentives is 400 $USDC and there are four more days of the distribution period left.

Let’s suppose that a second user decides they want to add more incentives to the same Boosted Position. If they add less than 400 $USDC, their contribution will simply be added to the existing balance and distributed equally with it over the remaining four days. So if they were to add 200 $USDC, the new balance would be 600 $USDC, and the reward rate would essentially be 150 $USDC a day. If instead, they chose to add more than 400 $USDC, they would be able to redefine the distribution period for these incentives and the remaining balance of the first user would be added to their contribution and reapportioned across the period they choose. Therefore, if the second user adds $USDC, they can change the distribution period to seven days. The remaining 400 $USDC would then be added and the total balance of 1400 $USDC would be distributed over the new period (essentially at a reward rate of 200 $USDC a day).

Fee Structure

Each Maverick pool is defined by a set of parameters, of which one is the Fee Rate. LPs can provide liquidity and choose their fees according to two options:

  • Deployed
  • Not Deployed

Choosing deployed allows users to deposit their assets into already deployed pools with existing fee structures, which is the simplest option.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7628a6 5c45 4b37 affb

Choosing the Not Deployed option allows the LPs to select a Fee Tier from 0.002% to 3%.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F20fa9012 63c9 4e98 85b6

LPs should consider whether their fee rate is optimal when selecting their fee structure. Setting it too low for a volatile asset means IL will overwhelm any fees collected while setting it too high will drive trading volume to similar pools with lower fees.

Fees collected by a position in Maverick are also compounded back into the bin where it was collected from, thereby allowing the position to grow and the fees collected will eventually increase, improving capital efficiency over time.

Maverick also has the option to turn on the protocol fee collection mechanism, but it has not done so for now.

Why the Project was Created

Concentrated Liquidity is Not Always Capital-Efficient

Maverick developed a Dynamic Distribution AMM to solve the problem that concentrated liquidity might not always be capital efficient. Higher capital efficiency leads to more liquid markets, which means better prices for traders as well as more fees for liquidity providers. By having this feature built into the AMM itself, the protocol can eliminate the high gas fees and time costs that come from manually adjusting liquidity positions around market prices.

Existing concentrated liquidity AMMs allow liquidity providers to concentrate their liquidity within a defined range. That way, as long as the price remains within that range, they will collect trading fees. This allows them to capture more fees per unit of capital compared to a standard AMM where the liquidity is spread from zero to infinity.

The idea of concentrating liquidity was to improve capital efficiency. However, current AMM implementations put the burden on users to actively manage their own concentrated liquidity positions. This leads to situations where the liquidity ends up being misallocated and efficiency decreases as the price moves out of those areas where the liquidity is concentrated.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F43d54a3d dffb 4b87 bc38

Concentrated liquidity is only capital efficient while price remains in the area of concentration. However, problems start to arise when the pool price moves outside of an LP’s range. When this happens, their capital efficiency drops to zero, since none of it is being used to underwrite swaps in the AMM. Therefore, for LPs to remain capital efficient, they have to assume the responsibility of moving their liquidity to a new range, which costs them time and gas fees.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F9900ca71 a650 4aa0 9523

Maverick provides a solution to this problem by natively automating the movement and concentration of liquidity. The dynamic AMM is automated to help users maximize the capital efficiency of their liquidity positions. This is achieved by reconcentrating the liquidity as the price moves.

Current Native AMMs are Built for a Sideways Market

Existing AMM infrastructure forces LPs to make an implicit bet that the price of the pair of assets in their pool will go sideways. If the price moves sideways, that will enable them to collect trading fees without the ratio of their assets shifting significantly. However, if the opposite happens and the price moves significantly in any direction, the LP will suffer a degree of impermanent loss that may exceed any fees they collect.

The situation above shows that there might be some liquidity providers and asset holders that would like their LP position to have a directional bias about the assets they hold. As an example, a user might expect $ETH to appreciate in price and collect trading fees from that bet. The absence of this functionality prevents many users from entering a liquidity pool.

As a solution to the problem above, Maverick enables liquidity providers to follow the price of an asset in a single direction. This allows LPs to make a bet on the price trajectory of a specific token. When following this strategy, the result is that the liquidity provider will be mostly or entirely exposed to a single asset in a given pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F384efbf1 6f5a 4c78 bcbd

As the price moves in the chosen direction, the AMM will automatically follow the liquidity to capture more fees.

In Current AMMs, LPs Can’t Control Their Own Liquidity

Existing AMMs force LPs to define a price range for their liquidity and then the AMM distributes their liquidity for them across that range. That way, the LPs’ liquidity stays flat across that range, with no efficient means for them to arrange a different kind of distribution. This limits the ability of LPs to maximize their potential earnings.

In Maverick’s AMM this is solved by letting LPs configure their own distribution of liquidity along a pool’s price range. For that, Maverick provides pre-designed distributions, but an LP can also work bin-by-bin to tune its own custom liquidity strategy.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F407eb213 2796 48e8 9078

Providing liquidity in a non-uniform distribution can be helpful for LPs to adjust their risk exposure and optimize their fee rewards. For instance, research shows how, given certain assumptions about price movement, a rational LP should balance their impermanent loss risk with their fee reward by providing an exponential distribution across prices.

If someone wanted to achieve such a result with a concentrated liquidity Dex based on Uniswap V3, they would need to configure a complex liquidity distribution by opening multiple positions and minting several NFTs to support them. With Maverick, it is possible to configure a custom distribution in a single position, using only one NFT.

Impermanent Loss Considerations

Impermanent loss is a byproduct of providing liquidity in an AMM. It occurs when the price moves away from the initial price at which the liquidity entered the pool.

Impermanent loss happens because, as the price moves, the AMM sells the more-valuable asset for the less-valuable asset, leaving the LP with a net loss.

In constant product AMMs, impermanent loss is nonlinear and difficult to hedge. Besides, the effect is also bi-directional, meaning that a price movement in either direction, up or down, will result in losses.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8b46db3 2fbb 409a 961e

In a constant product AMM, impermanent loss is bi-directional. The hope is that fees will offset the negative impact of impermanent loss, but at a certain point in either direction, impermanent loss will outstrip the gain made from trading fees.

In contrast, directional LPs who provide liquidity in a single asset on Maverick (i.e. LPs using Mode Right or Mode Left) are only exposed to impermanent loss in one direction. This way, if the LP has selected the movement mode that corresponds to the price movement (e.g. the LP is in Mode Right and price increases), the LP will not suffer impermanent loss.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dff8aa6 62b5 4124 946d

Additionally, the impermanent loss resulting from a Mode Right or Mode Left position is linear once the price moves beyond the LP’s range. This makes the position much easier to hedge. For instance, the payoff of a put option is the inverse of a directional Maverick position.

When it comes to Mode Both, it is worth noting that the AMM moves liquidity with price in both directions. This leads to extremely high capital efficiency, but it also exposes the LP to “permanent loss” (PL), due to the fact that the LP is agreeing to buy high and sell low as the liquidity is repositioned. As a result, Mode Both should be used with caution.

Fee Compound

Unlike other concentrated liquidity AMMs, the fees collected by a position in Maverick compound back into the bin where they were collected. This is not the case in Uniswap V3 and its respective forks, where the fee is held out separately from the liquidity in the pool and is not earning fees.

In Maverick, fee income is auto-reinvested, thereby increasing capital efficiency while saving the LP gas fees.

Boosted Positions

Protocols regularly run liquidity mining programs in external AMMs in order to create depth for their token pairs. However, existing AMMs do not provide them with the means to incentivize token pairs efficiently. Instead, incentives are distributed evenly across an entire pool, meaning that LPs are rewarded for providing liquidity that is never used.

Not only that, but this approach can even work against the protocol itself. As an example, both liquid staking tokens and stablecoins have an interest in maintaining a certain price peg within a liquidity pool. However, if market events caused that peg to slip, existing incentive mechanisms would turn out to be counterproductive, since they reward users for bringing two assets to a pool. Increasing the reserves of both tokens in a pair is unhelpful in these situations since it will not help to restore peg–and can actually increase support for the new, undesirable price.

Maverick provides a solution to this problem with boosted positions. Since these positions are highly configurable, they can be used to direct and shape liquidity in very precise ways, rather than just offering incentives across a whole pool.

For example, a project interested in maintaining a peg (e.g., for a stablecoin or liquid staking token) could create a Boosted Position consisting of a single bin of a counter asset (e.g., $ETH) just below the peg price in their pool. Adding incentives to this Boosted Position would attract users to add more $ETH to this particular bin only, effectively creating a wall of liquidity that would help protect the peg from any selling pressure.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4bf171f 1a9f 4b0a b025

Backtests for Constant Product vs. Maverick AMM

ETH-USDC Backtest

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F9538f825 f83c 4142 99a4

The upper left panel in the image above shows the results of three different investing strategies:

  • The brown line represents the value of a 50–50 HODL, i.e., the results of owning a position that was 50–50 ETH-USD and not investing it anywhere. As we can see, it basically tracks the price of $ETH as it pumps and crashes.
  • The green line represents the value of investing that 50–50 position in a constant product AMM. It slightly outperforms the HODL, since in addition to the changing value of $ETH the owner would also collect fees from swaps performed against their position.
  • The purple line represents the value of investing in the same position in Maverick’s AMM. Over the course of the year, it drastically outperforms both the HODL and constant product AMM strategy, even during the crash at the midpoint.

The reason why the Maverick AMM performed better is due to its ability to consistently offer better prices, meaning that it captured more of the incoming trades. More trading volume translated to more fees, which flowed back to LPs and made this the most profitable strategy.

Zooming in, it can be observed that when $ETH’s price started to increase, Maverick’s liquidity shifting mechanism let the price slip significantly, which causes worse pricing and thus leaves the constant product AMM to fill more volume than in steady price periods. This is illustrated in the lower left panel in the image below, where we can observe a noticeable dip in the purple trading volume and an accompanying increase in the green volume:

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc784d2ac 51fc 4f2c 8cc9

In periods of steady price action, more volume leads to more fees for LPs, but in periods of high price movements, the LP deposits would be exposed to a higher risk of impermanent loss from arbitrage. As the market value of $ETH increases on other Dexes, arbitrageurs would come to other AMMs to remove $ETH at a lower price for as long as it is available, since AMMs trade agnostically and naively according to their algorithmic rules. At this point, it is in the LPs’ best interest for an AMM to let the price slip in order to limit IL and not give away reserves to arbitrageurs. So on a day like this, LPs still do better if they’re invested in a Maverick AMM than in a constant product AMM.

Stablecoins Backtest

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef65499c a272 4dd4 b0cb

The upper left panel shows that Maverick’s concentrated liquidity far outperforms the constant product AMM. The simulation shows a 340x improvement in capital efficiency and a 140x improvement in LP return, all while offering traders better pricing. The constant product strategy, by comparison, is barely more profitable than just HODLing.

In this situation, it is worth noting that if one side of the stable pair loses the peg, Maverick’s AMM will start shifting liquidity and follow the price move. This would protect LPs by limiting their exposure to impermanent loss, just as it did during the $ETH price increase above. In contrast, stableswap-like AMMs are not as robust to unpegging pairs, leaving LPs at risk to IL from arbitrage.

UST Depeg Backtest

The backtest below demonstrates Maverick’s theoretical performance during the UST depeg of 2022. This simulation compares trading activity in UST-USDC pools across four different types of AMM: a basic constant product AMM, a stableswap AMM (Curve), a Uniswap V3 position with its liquidity concentrated within 20 ticks/basis points, and the Maverick AMM.

The dashboard below simulates trading demand over time and routes trades to whichever AMM can offer the best price at any given moment. In the case of this simulation, which models the run on UST, the AMM which is prepared to offer sellers the most USDC in return for their UST will “win” the trade.​​https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa67edb0a c2c6 4856 b00b

The chart in the top right of the image shows how the 4 AMMs performed relative to a straightforward 50–50 HODL strategy (i.e., the value of holding a position of 50–50 UST-USDC during the depeg). It can be seen that only the Maverick AMM was able to offer any gain over the 50–50 HODL, while the other AMMs all resulted in varying levels of impermanent loss.

  • The impermanent loss on Uniswap V3 was a result of LPs being left to move their own buckets once the run on UST began. In these tests, Maverick AMM responds quickly to trade demand and moves all the buckets themselves, saving LPs from the more severe IL experienced in other AMMs. Put simply, the Maverick AMM does all the work for its LPs.
  • The Maverick AMM actually moves liquidity during a swap depending on the swap size. This is a degree of freedom that other AMMs do not have: in other AMMs, the LP can only adjust liquidity concentration before or after a swap, not during a swap. This gives Maverick AMM LPs an edge over even the most diligent Uniswap V3 LP.
  • Unlike other AMMs–where LPs overpaid sellers for UST–LPs in a hypothetical Maverick UST-USDC pool would still have a substantial amount of USDC even after UST depegged, since, in response to the selling pressure from the depegging, the AMM would have shifted liquidity into more appropriate price ranges. This liquidity shifting means that, once the peg is lost, the Maverick AMM does not buy UST at above-market prices, thereby protecting LPs from IL.

Roadmap

Maverick’s roadmap was detailed in its Mainnet Launch article published on March 7, 2023. It includes 3 phases, of which both phase 1 and 2 have been released and phase 3 has been  announced.

  • Phase 1: Maverick AMM release
    • More pools with different fee tiers.
  • Phase 2: External incentives from protocols
    • Maverick smart contract enables other protocols to incentivize liquidity.
    • Big-time DeFi partnership announcements.
  • Phase 3: Ve-based incentive voting model
    • A set of Maverick smart contracts to enable voting on liquidity positions and fee disbursements.

In its 2024 outlook dated December 15, 2023, Maverick also included the following:

  • Layer 2 expansion: Maverick will also continue its Layer 2 expansion, bringing Maverick AMM v2, Boosted Positions, and Maverick’s ve-model to more Layer 2 ecosystems.
  • Vertical integration: Maverick is looking forward to completing more vertical integrations with various infrastructures and dAPPs in DeFi, including wallets, liquidity aggregators, liquid lockers and more.
  • Community growth: Community is the core of Maverick. In 2024, Maverick expects to launch more community reward programs, including a number of quest-to-earn community education and onboarding programs. It is also looking forward to collaborating with new and OG DeFi communities to build a better DeFi community globally.

Sector Outlook

Up until the expiration of Uniswap’s V3 business license, most DeFi AMMs have focused on using some variation of Uniswap’s V2 constant product formula. Based on the simple formula xy = k, the AMM follows a computational rule that states that the value of k must remain constant within every trading pool. If x and y represent the two assets being traded in a pool, then the rule effectively states that whenever the value of x changes the value of y must also be changed in order to keep k, their product, constant (and vice versa).

This formula can be represented on a graph as an invariant curve (so named because it is the curve produced by the formula that has the constant or invariant product k).

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2866ce 9075 4a2b adce

While this is a practical tool for automating price discovery in a smart contract, it also inevitably introduces slippage into the trading experience. Slippages refers to the concept by which the price a trader pays is different from the price they see in a pool. This occurs in constant product AMMs because the constant product formula must adjust the price of every incoming trade in order to keep k constant.

As time went by, Uniswap V3 set out to solve the V2 slippage problem by introducing concentrated liquidity: LPs could now choose to concentrate their liquidity in custom price ranges and earn fees from any swaps that take place within that range. If the swap price moves outside of an LP’s defined bucket, they cease to earn fees until such time as the swap price returns to the range or until they reallocate their liquidity.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfd83dec 758b 46d3 8a52

This concentration of liquidity flattens a section of the curve into a constant slope, along which the price of y remains stable (compared to the invariant curve). This allows traders to effectively make swaps on this slope with a very low or close to zero slippage.

However, while Uniswap V3 introduced some benefits for traders, it also created more work for LPs, who now have to keep constantly reallocating their liquidity in order to track the current swap price. Otherwise, they risk losing out on fees from trades that occur outside their designated range.

Maverick set out to solve the problem of concentrated liquidity management by concentrating liquidity natively and dynamically in the pool, eliminating the requirement that LPs constantly reallocate their own liquidity. In other words, Maverick automates liquidity concentration, allowing not only traders to benefit from less slippage but also allowing LPs to enjoy greater capital efficiency and less active liquidity management overhead.

Maverick’s AMM stands out for its capital efficiency. Higher capital efficiency leads to more liquid markets, which in turn leads to better prices for traders and more fees for liquidity providers.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F439fc7b3 cbfe 4747 80f2

When the price of the base asset moves up enough that the area of price movement moves out of the LP’s range entirely, Maverick AMM automatically moves the liquidity to follow the price–ensuring that capital efficiency remains high.

Maverick introduces novel features and technological innovations that differentiate it from other Dexes. As an example, liquidity providers can choose to follow the price of an asset in a single direction, effectively making a bet on the price trajectory of a specific token. This makes it possible for liquidity providers to make a directional bet and be mostly or entirely exposed to a single asset in a given pool.

Maverick also stands out for its customizability and for providing a set of sophisticated tools that let LPs design and automate individual strategies for concentrating and moving liquidity. In addition to that, Maverick enhances the user experience by offering out-of-the-box liquidity modes.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaeea5c 8785 455f b83e

The core focus of Maverick’s AMM is on capital efficiency, which measures how much volume is generated by a given amount of capital for a specific price movement. This is critical for a Dex since the amount of fees collected by LPs is proportional to the volume that is underwritten by their liquidity. Hence, capital efficiency is a direct proxy for how much fees a given amount of TVL can generate.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff9b1d07 917a 4607 84a8

Currently, the competitive landscape of Dexes is mostly dominated by constant product AMMs, with the recent introduction of new concentrated liquidity solutions such as Uniswap V3 and its respective forks or Trader Joe’s liquidity book.

On the one hand, constant product (x*y=k) AMMs are not capital-efficient by design. This is because each LP’s capital is spread across all prices from zero to infinity, leaving only a very small amount of liquidity available at the current price. There are scenarios where there may be very small amounts of liquidity available for trading at the current price. When that happens, even small trades can move the price significantly and cause slippage for the trader, leaving the LP with very little fees collected.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3acc5e9 dcba 402c a575

On the other hand, the majority of concentrated liquidity solutions force users to manage the liquidity by themselves. This takes time and carries on additional costs from gas fees. Oftentimes this is unfeasible for non-professional market makers. Moreover, as soon as the price moves outside of the range, the capital efficiency of the LP drops to zero. This is the reason why there are automated liquidity management solutions in the market that do this job on the user’s behalf. By not having to rely on third-party protocols to manage liquidity, Maverick has cost savings that it can pass onto its end LPs without forcing them to pay an extra fee.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ae440b c5da 486f 98bf

Concentrated liquidity increases capital efficiency when the liquidity range covers the current market price. However, as soon as the price goes out of range, the capital efficiency of the position drops to zero.

In standard concentrated liquidity AMMs or variations of Uniswap V3, liquidity providers have several options to prevent their capital efficiency from dropping to zero when their liquidity goes out of range. However, there is a tradeoff associated with each of those alternatives:

  • If the LP provides liquidity in a wider range, it will reduce its capital efficiency.
  • If the LP does nothing and waits for the price to return to the original narrow range, the capital efficiency will drop over time.
  • If the LP continuously monitors and interacts with the AMM smart contract to stay close to the current price, it will undergo a time-consuming and expensive process.

In order to increase the efficiency of a concentrated liquidity AMM, LPs need to shift their range continuously as the price moves. This requires effort, and technical expertise to write smart contract integrations and the paying of gas fees. Maverick solves this problem by automating liquidity movements and letting LPs choose a strategy to have their capital move along with the price.

Potential Adoption

Maverick’s potential adoption arises from its ve-tokenomics mechanism. veMAV can be used to direct reward emissions to Boost Positions, which is a key focus for protocols wishing to control emissions and resultant liquidity to their pools.

The incentive systems, unlike other protocols where incentives could be directed towards poorly performing LPs, will allow protocols to guide liquidity to exactly where it’s needed, maximizing the efficiency of their incentives.

For example, a project interested in reaching a specific price target (e.g., for a stablecoin or liquid staking token) could create a Boosted Position consisting of a single bin of a counter asset (e.g., $ETH) just below the peg price in their pool. Adding incentives to this Boosted Position would attract users to add more $ETH to this particular bin only, effectively creating a wall of liquidity that would help protect the peg from any selling pressure.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1edf496 4f63 4dd9 af50

Chains

Maverick is currently live on the following chains:

  • Ethereum
  • zkSync Era
  • BNB Chain
  • Base

Using the Protocol

Maverick offers an Automated Market Maker (AMM) for traders, liquidity providers, DAO providers, and developers.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad6acbb1 eca6 4169 ae28

From a user’s standpoint, there are 3 main pages:

  • Swap – the trading interface for executing spot swaps on the Maverick AMM.
  • Pools – the liquidity provider interface, where LPs can add liquidity to Maverick AMM pools.
  • Portfolio – the portfolio interface where users can keep track of their active positions.

Similar to other spot Dexes, liquidity providers deposit assets into liquidity pools. Next, traders can tap into that liquidity to execute swaps at prices set by the AMM.

Traders

Trading involves the swapping of one token for another. The trader simply specifies the token they want to give and the token they want to receive from the pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd126e540 8eba 4a54 98ab

It is worth noting that traders do not choose between pools, they simply decide how much they want to swap and the AMM routes their swap to the pool which will give them the best value at any given moment.

The primary advantage for traders comes from pricing. By automatically shifting liquidity to follow trading activity the AMM ensures that there is a broad base of liquidity available to support trades around the market price. Ultimately, the use and impact of aggregators​​ as well as the liquidity available will also affect the pricing and amount of slippage relative to other Dexes.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2712d4a 9263 4648 94e5

Since there can be multiple pools with different fee tiers and bin widths, sometimes this means that the trader will pay a higher fee in return for getting a better price. Ultimately, the market decides what is the optimal fee tier and width for each token pair.

  1. Choose the token you want to provide to the pool

Liquidity Providers

There are 3 main reasons why a liquidity provider might want to deposit their assets on Maverick:

  • Automated and actively managed liquidity strategies are built natively into the AMM – this enables LPs to configure an active liquidity strategy for themselves. This saves them time and gas fees compared to if they had to actively manage their liquidity.
  • More fees for LPs – since the AMM itself automates the concentration of liquidity as part of its logic, this eliminates the need to rely on third-party dApps (e.g. Gamma Strategies, Charm, Arrakis…), leaving more on the table for LPs themselves.
  • Custom liquidity distributions, whether they are offered out-of-the-box by Maverick or created by users themselves.

Each Maverick pool is defined by a set of parameters:

  • Pair of assets.
  • Bin width.
  • Fee rate.

As a liquidity provider, the user selects what pool they want to provide liquidity to. Next, they choose how they would like to distribute their liquidity across the price range.

Note that the smallest unit of the price range is a bin and that LPs can choose to provide liquidity in one or more bins.

When a pool is initiated, the initiating user has the option to specify the bin width for that pool.

  • For volatile assets, a bin width of 2% is suggested; that is, the upper price of the bin will be 2% more than the lower price of the bin.
  • For stable pairs, a bin width of 0.02 to 0.05% is suggested.

The bin width determines when each bin becomes active as the price moves. For instance, in a pool with 2% bins, a new bin will become active whenever the price moves by 2% in either direction. Therefore, the active bin changes more quickly with narrower ranges.

For each position that a liquidity provider opens in a pool, they can choose to stake in one of four modes. This allows LPs to express directional price beliefs.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F38acb0a2 70f9 4914 b80d
  • Mode Static — Bins do not move with price and are essentially the same as providing liquidity in an AMM that supports concentrated liquidity.
  • Mode Right — Bins move to the right as the price increases and do not move when the price decreases.
  • Mode Left — Bins move to the left as the price decreases and do not move when the price increases.
  • Mode Both — Bins move along with the price in both directions.

Mode Right is a bullish bet on price while Mode Left is a bearish bet;

  • An LP would use Mode Right to make a bet that an asset will increase in price
  • An LP would use Mode Left to make a bet that an asset will decrease in price.

In order to stake in Mode Right or Mode Left, the LP is generally expected to add liquidity to the bin immediately to the left or the right of the current active bin, respectively.

  • An LP using Mode Right to make a bullish bet would stake in the bin immediately to the left of the active bin.
  • An LP using Mode Left to make a bearish bet would stake in the bin immediately to the right of the active bin.

Assuming that their bet is correct, as the price swaps past the edge of the active bin, that bin will go from being a mix of both assets to holding only one asset: either all base token or all quote token. In this state, the liquidity in that bin can be moved freely to a new bin that is closer to the price or intermingled with other single-asset bins, such as the LPs.

  • In a bullish scenario, the LP would stake in the bin immediately to the left of the active bin, meaning that their stake would consist entirely of the quote asset at the outset.
    •  Assuming a correct bet and the value of the base asset going up, traders would swap base assets out of the active bin until there is no more liquidity remaining, thereby moving the price to the right and past the edge of the current bin.
  • In a bearish scenario, the LP would stake in the bin immediately to the right of the active bin, meaning that their stake would consist entirely of the base asset at the outset.
    • Assuming a correct bet and the value of the base asset going down, traders would swap base assets out of the active bin until there is no more liquidity remaining, thereby moving the price to the left and past the edge of the current bin.

Assuming a correct bet and the value of the base asset going up, traders would swap base assets out of the active bin until there is no more liquidity remaining, thereby moving the price to the right and past the edge of the current bin. At this point, the AMM can reconcentrate the LP’s stake into the formerly active bin, since both are now composed entirely of the quote asset. All this liquidity–including the LPs –now sits in the bin directly to the left of the active bin and can collect fees whenever price volatility moves the price left into this bin again. This process of reconcentration will repeat as long as the LP remains staked and the price continues to move right through the bins in the pool.

How to Add Liquidity

LPs can add liquidity by accessing the Pools page, and the process consists of three steps:

  • Select Pool
  • Selected Mode
  • Add Liquidity
Select Pool

Under the Pools page, LPs will be able to view the current pools that are available for deposit. These are already deployed pools with fixed parameters and the LPs may simply deposit into their preferred pools as long as they have the required tokens.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F351d4e80 ed9e 4ce6 be68

After clicking a pool, LPs will then proceed to the next page where they will be able to select pool options in order to edit the fee and width.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa81cb176 352a 49b8 933d

Deployed pools are pools already deployed and have existing users’ liquidity added. These are the simplest options for users who may not have the technical knowledge or want to edit the fees and bin width, and can then choose settings already done by other users.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F752449d1 d78c 4867 a8a2
Select Mode

After selecting a deployed pool, LPs will then proceed to the Select Mode page, where they can select out of 4 existing modes, Static, Right, Left, and Both.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f38e92 b3e9 42d3 9c80
Add Liquidity

Finally, LPs will then proceed to the third stage in order to Add Liquidity. This depends on whether LPs choose one of the three movement modes or the static mode.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F222a3a3c 09c1 4649 8736

For movement modes, the two token boxes on the left (1) are used to set the overall amount of liquidity you wish to add to the pool. These are interactive with the distribution chart on the right, meaning that the AMM will automatically compute the correct ratios of the two tokens required by your current distribution.

The default state for Mode Right is to add liquidity to the bin directly to the left of the current active bin. Since this bin isn’t active, it will consist entirely of the left/base token (here, USDC). This means that the current distribution will only require you to deposit USDC, so adjusting the amount of USDC in the token box on the left will have no effect on the other token box (here, USDT).

You can adjust the amount of USDC being added by grabbing the top of the bin (2) and dragging it up and down. Bin height corresponds to the amount of liquidity in the bin, and as you move the bin heights you will see the amounts on the left change accordingly. Since the bin we’re looking at contains only USDC, changing its height will only change the amount of USDC to be added.

In Mode Right, you can instead choose to add liquidity to the current active bin. To do this, click on the tab for that bin (3) and drag it up. The active bin will contain both tokens so once it is active you will need to deposit quantities of both. In this example, if we activated this bin we would see the amount of USDT increase in the token box on the left.

The bins for the three movement Modes behave similarly, with these important differences:

  • Mode Right: starts with the bin to the left of the active bin, the active bin can be staked as well
  • Mode Left: starts with the bin to the right of the active bin, the active bin can be staked as well
  • Mode Both: starts with active bin, bin to right and/or left can be staked as well

Default bins were chosen for what is theoretically the ideal use case for each Mode, but we also wanted to give users the flexibility to find other uses for all of the Modes.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe07abde1 4b07 4fe7 8d8f

For Static mode, the screenshot above shows the Add Liquidity page after a user has selected Mode Static. The two token boxes on the left (1) are used to set the overall amount of liquidity you wish to add to the pool. These are interactive with the distribution chart on the right, meaning that the AMM will automatically compute the correct ratios of the two tokens required by your current distribution.

You can use the Edit button (2) in the Select Distribution section to choose an initial distribution model for you to use or customize. The options are:

  • Exponential
  • Flat
  • Single Bin

You can also edit the Distribution Width (3) to change the overall width of your distribution across the pool’s price range. By default, this is set to 0.1%, meaning that your distribution will span 0.1% of the total price range, plus the current active bin as a center point. The UI will automatically calculate the number of bins required to cover this width. The number of bins required will depend on the bin width in the pool (the wider the bins, the fewer will be required to cover the width of your distribution). A pool with a 0.01% bin width will require 11 bins to cover a distribution width of 0.1% (10 bins plus the current active bin).

If you want to change the Distribution Width, edit the numeric field at (3) and then click the Update button. The distribution chart will refresh to show the new distribution.

You can tweak the shape of any of the distributions by clicking the top of a bin (e.g., at (4)) and dragging the bin up and down. Bin height corresponds to the amount of liquidity in the bin, and as you move the bin heights you will see the amounts on the left (1) change accordingly. The active bin contains both tokens, so moving it will affect both token amounts. The bins to either side of the active bin are single-token bins, so will only affect one of the tokens.

Finally, LPs can click on the Confirm button to open up the Confirm Pool modal, where they will be able to get a final confirmation of their tokens deposited, fees, and the pool mode.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F536aeb98 3f2e 42df 9f42

How to Deploy a New Pool

If an LP does not see a pool that matches their required token pair or the fee tier and bin width requirement that they want, they can deploy a new pool.

The deployment process can be started by clicking on the Create New Pool button, and by adjusting parameters on the Select Pool page.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F181f8b99 dd12 4693 a6d4

If the pair has already been deployed but they want to choose a new fee tier and/or bin width, they can click the Edit button (1) under Select Fee Tier.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad0225d 1333 45c4 aa80

This will open a modal showing all the fee tier and bin width options. By default, the modal lists all of the currently deployed pools, but a user can click the Not Deployed tab (2) at the top of the modal to choose from a list of pools that have yet to be deployed:

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F2953a5d3 de00 43a7 8d0a

This will then bring the LP to the Select Pool stage, where the graph is replaced by instructions on deploying the new pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eaa63a e7eb 4abd 8d8c

After the LP is done with this page, they will have to add liquidity or the pool will not be deployed.

How to Check Position Balances

Using the dApp UI

LP position balances can be checked by navigating to the Portfolio page, which will then show the card(s) representing all the liquidity positions by the wallet.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F02feed79 6814 49fa ac90

Clicking Manage on the card will open the sub-page to the position, showing more information such as

  • Balances for each token in the pair.
  • The TVL of the position is denominated in USD.
  • The volume and fees generated by the position.
  • Exact quantities of each token that is deposited in each bin by mousing over them.
https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac179b55 e01a 4477 9692
Using blockchain calls

Checking position balances can also be done by querying the blockchain using a block explorer.

Users will first need to find their “tokenId ” of their Maverick Position NFT on the Maverick contract. On Ethereum, you can navigate directly to the relevant contract query by following this link.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb987e4fd c42b 450d b56e

At the linked Etherscan page:

  • Scroll down to row 11 (labeled tokenOfOwnerByIndex) and click on it to expand the query.
  • Copy and paste your wallet address into the field labeled owner (address).
  • Enter “0” in the field labeled index.
  • Click Query.
  • The query will output a number at the bottom (in the screenshot above, that number is “100”). This is the tokenId of your Maverick Position NFT.

Now that you have your tokenId, you can use the “PositionInspector” contract to find the pool balances associated with it.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F333f3cba b08a 4faa bfc4

At this link:

  • Click on the row labeled 1. tokenBinReserves to expand the query.
  • Type or paste your tokenId into the field labeled tokenId.
  • Copy and paste the blockchain address of the pool you wish to inspect in the field labeled pool (address). You can find this address by navigating to the pool in the dApp UI and looking in the URL.
https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b62704 c187 4ac9 8b11
  • Type “0” in the field labeled startBin (uint128) and “1000000” in the field labeled endBin (uint128).
  • Click Query. If you have a position in the pool, you will see how much of each of the tokens you have deposited.

How to Manage Liquidity in a Pool

After adding liquidity to a pool, users will be able to access the Portfolio page to view a summary of their positions, including the total balance of each position and its distribution within the pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d369c26 d71c 4d30 a0f0

Clicking on the “Manage” button will move the users to the Manage Liquidity page, allowing them to find a summary of the balance and distribution within the pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F77658125 68a9 4b27 995e

This allows users to add or remove liquidity from their positions, or to adjust the distribution of liquidity by clicking “Add”.

Removing Liquidity

Users can remove their liquidity by clicking on the “Remove” button, which will bring them to the Remove Liquidity page. Here, users can choose individual bins of liquidity to remove from their position and have their balance returned to their wallet. If users choose to remove a bin, it will be removed entirely–there is no option to remove only a portion of a given bin.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f287a7e da83 4b69 b7e9

None of the bins will be selected for removal by default and users can click on the bins in the liquidity chart to select them for removal. Alternatively, users can click the Bins Selected drop-down (1) to select the bins they want to remove. This will open up a modal that will list every bin in which users have liquidity in this pool. Users will be able to see the price range for each bin and the balance of each bin.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a343fcf d937 48e0 904a

Users can click on the boxes adjacent to the desired bins for removal, and the presence of a visible checkmark in a box indicates that it has been selected for removal. To completely close the position, users should ensure that all bins are selected.

After selecting the desired bins, users can proceed with the removal process by clicking on the “Select” button. Alternatively, they can choose to cancel by clicking on the “X” in the top right corner of the modal.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F8646c65d b0ba 40e6 9d2b

Upon selection, the page will be refreshed to visually emphasize the chosen bins for removal. Additionally, a summary will be provided, detailing the quantity of each token that is being removed and sent to the user’s wallet.

Users should carefully review the information displayed, and if everything appears accurate, they can proceed by clicking the “Confirm” button.

Adding Liquidity

Clicking Add will take you to the beginning of the Add Liquidity workflow, with the same pool automatically

selected. Your current position will load automatically, and any changes you confirm will update your original position.

How to Create a Boosted Position

Any user can create a new Boosted Position on Maverick by clicking the New Boosted Position button on the Liquidity Shaping page.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9064be7 d944 4820 b436

There are a few key differences between creating a Boosted Position and creating a regular position:

  • By definition, a Boosted Position is a position within a pool. This means you cannot deploy a pool at the same time as creating a Boosted Position. New Boosted Positions must be created within existing pools.
  • Although a Boosted Position can be created using any of the four Modes, if you select one of the movement modes (Left, Right, or Both) you will only be able to stake a single bin. This is in contrast to a regular position, where movement Mode positions can be created with up to three bins. For more information, see Understanding Modes.
  • When creating a Boosted Position, you will have the option to stake LP tokens (by default, they are set to auto-stake). When you add liquidity to a Boosted Position, you receive LP tokens representing your share in it. In order to earn incentives, these LP tokens need to be staked into the Maverick rewards contract. If you have another use for Boosted Position LP tokens (e.g., an external gauge), you can turn off auto-stake and your LP tokens will not be staked for you when you add liquidity. You can always stake or un-stake LP tokens later from the Portfolio page.

How to Join a Boosted Position

The Boosted Positions page can be accessed by clicking on the “Boosted Positions” button at the top of the UI.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a209cac e13e 4d6b a4cd

The page will present a list of all Boosted Positions currently active in the AMM, together with their:

  • TVL
  • Volume
  • APR

Use the toggle switch above and to the right of the list to filter between Boosted Positions that have incentives and all Boosted Positions.

Users can hover their mouse over the APR data associated with a specific Boosted Position to view the current incentives allocated to it. These incentives are distributed over user-defined timeframes and are earned by members of the Boosted Position proportionally based on their share in the position over time.

By clicking on a Boosted Position in the provided list, users will be directed to the add liquidity flow specifically designed for that Boosted Position. This flow simplifies the regular process of adding liquidity by pre-selecting the pool and position parameters for the user. When joining a Boosted Position, users are not required to select a fee tier, width, mode, or distribution as these options are already predetermined by the user who created the Boosted Position.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F51e98bc8 a67d 4a41 9312

On the page dedicated to each Boosted Position, users can access information such as the fee, width, and mode of the position, as well as details about its Total Value Locked (TVL) and earned fees. Additionally, users can view the LP Rewards or incentives currently allocated to the Boosted Position.

To participate in a Boosted Position, users simply need to specify the amount of each asset they wish to contribute. However, it is important to note that the assets must be added in a ratio determined by the Boosted Position’s parameters and the current price in its pool. Since participants are acquiring a proportionate share of the Boosted Position, they need to add assets based on this predetermined ratio. The user interface allows users to input a value in either of the token input fields, and the UI will automatically calculate the corresponding ratio for the other asset.

Once you have reviewed and confirmed the desired amounts, you can proceed by clicking on the “Add Liquidity And Stake” button. This action will trigger the opening of the Confirm modal, where you will be able to review and finalize the transaction details before submitting it.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd26aa2 142e 477f 88bb

Within the Confirm modal, you will be guided through the process of approving any tokens that require it.

  • After completing the approval steps, you can proceed by clicking the “Confirm Amount” button.
  • This action will initiate a transaction to be sent to your wallet.
  • Confirm the transaction within your wallet and wait for it to be confirmed on the blockchain.
  • Once the transaction is confirmed, you will have successfully joined the Boosted Position.
  • You can then navigate to the Portfolio page to locate and track your newly joined Boosted Position.

How to Manage a Boosted Position

After successfully adding liquidity to a Boosted Position, you will notice a new card displayed on the Portfolio page, representing the liquidity you have provided. Boosted Positions can be easily identified by the lightning bolt icon that accompanies them in the user interface, distinguishing them from regular liquidity positions.

The card for a Boosted Position shares similarities with the card for a regular position, but there is an additional information row that showcases any rewards earned by that Boosted Position. Furthermore, a button is available to claim those rewards. It’s important to note that rewards are only accumulated by a Boosted Position if incentives have been added to it and are actively being distributed.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F115628ec 7932 4131 9c19
Claiming Rewards

To claim the rewards accumulated by a Boosted Position, you can simply navigate to the respective page and locate the “Claim Rewards” button. By clicking this button, the user interface will prompt you to confirm the claim. Upon confirmation, an approval request will be sent to your wallet. Proceed to confirm the request in your wallet, and the rewards will be transferred to your wallet accordingly.

Staked vs. Unstaked Boosted Positions

The process of earning and claiming incentives for Boosted Positions involves staking LP tokens received when adding liquidity. These LP tokens represent your proportional share in the Boosted Position and serve as the basis for claiming incentives. By default, when adding liquidity to a Boosted Position, the LP tokens are automatically staked in the Maverick rewards contract, as most users join Boosted Positions to earn Maverick incentives. However, users have the option to choose not to stake their LP tokens if they have an alternative use for them.

On the Portfolio page, unstaked positions are labeled as “Unstaked” and have distinct characteristics. They do not display rewards or provide a Claim Rewards button. Users have the flexibility to unstake or stake their Boosted Positions at any time by using the Manage button available on the card of the respective Boosted Position.

Given the differences in managing staked and unstaked Boosted Positions, the subsequent instructions will address each scenario separately.

Managing a Staked Boosted Position

Most users on Maverick will likely have a staked Boosted Position since LP tokens are set to auto-stake when adding liquidity to a Boosted Position. When you click Manage on a staked Boosted Position, you will be taken to the Manage Staked Liquidity page.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F55b4899e a3b8 4a58 9510

There are four buttons on this page:

  • Claim Rewards – works like the Claim Rewards button on the Portfolio (see above)
  • Add Liquidity and Stake – used to add more staked liquidity to the same Boosted Position; clicking this will take you to the same page used to add liquidity to the Boosted Position
  • Unstake and Remove Liquidity – click this button to unstake your LP tokens and redeem them for your liquidity and fees in the Boosted Position
  • Unstake LP tokens – click this button to unstake your LP tokens but leave your liquidity in the Boosted Position; unstaked Boosted Positions will continue to earn trading fees but will not earn incentives

Unstake and Remove Liquidity

If you wish to remove your liquidity from a Boosted Position, you will first need to unstake LP tokens. Clicking Unstake and Remove Liquidity will activate a flow that takes you through the required steps in order.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F27329e35 bee4 4ca6 b0bb

You will first be asked to choose how much of your LP tokens you wish to unstake and remove. You can use the slider to select a percentage, up to 100 (which will unstake and remove everything). As you move the slider, you will be shown a preview of how many LP tokens you will be unstaking and how much of the liquidity they represent you will be removing.

Choose how many LP tokens to unstake and remove and click the Confirm button. This will open a modal that will walk you through the steps required to complete the operation.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc7877e4 4a94 4cda 83f7

First, you will need to unstake the LP tokens. Click the Unstake button to send a request to your wallet. Approve the transaction there, and your LP tokens will be unstaked. Next, the dApp will determine if you need to approve the LP tokens for removal.

If required, click Approve and confirm the approval in your wallet. Once the LP tokens are approved, you are ready to remove them. Click Confirm and confirm the transaction in your wallet. When the transaction is complete, the selected LP tokens will be burned and the proportional amount of liquidity sent to your wallet. If you removed all of your liquidity from this Boosted Position, the relevant card should disappear from the Portfolio page.

If there were any rewards left on this Boosted Position, you will now be asked to claim them. If you wish to claim the rewards, click the Claim Rewards button and confirm the transaction in your wallet.

Unstake LP Tokens

Click the Unstake LP Tokens button to unstake your LP tokens for use outside Maverick while leaving your liquidity in the Boosted Position. If your LP tokens are unstaked, your liquidity will continue to earn trading fees but will not earn incentives. You can always re-stake your LP tokens later if you want.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F542d385d dc11 418e bb9f

When you click Unstake LP Tokens, the UI will ask you to choose how much of them you want to unstake. You can use the slider to choose a percentage up to 100 (which will unstake all of your LP tokens for this Boosted Position).

Choose how much of your LP tokens to unstake and click Confirm. Confirm the transaction in your wallet. When the transaction is complete, the LP tokens will be sent to your wallet and you will find a new card in your Portfolio representing your unstaked liquidity in this Boosted Position.

Managing an Unstaked Boosted Position
https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39755f1 2f5c 4349 a010

The options for managing an unstaked Boosted Position are simpler since the LP tokens for this position are already unstaked. On this page you will find three buttons:

  • Add Liquidity – used to add more staked liquidity to the same Boosted Position; clicking this will take you to the same page used to add liquidity to the Boosted Position
  • Stake LP Tokens – click this to stake LP tokens into the Maverick rewards contract and earn incentives
  • Remove Liquidity – click this to remove underlying liquidity from the Boosted Position completely

Stake LP Tokens

This process works much like Unstaking LP Tokens described above, only with the opposite result: LP tokens are staked into the Maverick rewards contract to earn incentives. When you click this button, the UI will ask you to choose how much of your LP tokens you want to stake. You can use the slider to choose a percentage up to 100 (which will stake all of your LP tokens).

Choose how much of your LP tokens to stake and click the Confirm button.

Approve the tokens if necessary, then click the Confirm button in the modal. Approve the transaction in your wallet. When the transaction is complete, your tokens will be staked in the Maverick rewards contract. You should see a new card for a staked Boosted Position on the Portfolio page (or if you already had one for this Boosted Position, the balances on that card will increase).

Remove Liquidity

This process works much like the Unstake and Remove Liquidity flow described above, but with fewer steps since the LP tokens are already unstaked and there are no rewards to be claimed.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F344aa789 96a8 4deb b849

When you click Remove Liquidity, the UI will ask you to choose how many of your LP tokens you want to remove. You can use the slider to choose a percentage up to 100 (which will remove all of your LP tokens). As you move the slider, you will see a preview of how much of the underlying liquidity from this Boosted Position will be redeemed in this transaction.

Choose how much liquidity to remove and then click the Confirm button.

Approve the tokens if necessary, then click the Confirm button in the modal. Approve the transaction in your wallet. When the transaction is complete, the selected LP tokens will be burned and the proportional amount of liquidity sent to your wallet. If you removed all of your liquidity from this Boosted Position, the relevant card should have disappeared from the Portfolio page.

How to Add Incentives to a Boosted Position

Any user can add incentives to any Boosted Position on Maverick. You do not have to be the creator of a Boosted Position in order to add incentives to it. Incentives are added from the Liquidity Shaping page, which can be found under Engage in the dApp’s top menu.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F465e66b2 b19e 4c68 a11b

The Liquidity Shaping page will present you with a list of every Boosted Position on Maverick. Boosted Positions are listed by token pair and accompanied by a unique identifying number to help users differentiate between them. You can also see the fee and width of the pool each Boosted Position is in, together with the TVL, volume, and APR data for the Position itself (not the pool as a whole).

Click on a Boosted Position in the list to add incentives to it. This will take you to the Incentivize Boosted Position page.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F91225175 c584 4c13 beed

This page will present more detailed information for the Boosted Position you have selected, including any incentives that have already been added to it.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F79c9af12 a046 464d 84cd

To add new incentives, use the drop-down menu to select from whitelisted incentive tokens then type the number of tokens you wish to add into the numeric field to the right. You will need to have the appropriate amount of these tokens in your wallet to proceed.

Use the slider to set the duration for your incentives. This is the period over which your incentives will be distributed to LPs in this boosted position. Incentives are spread evenly across the chosen duration, so if a user chose to add 7 $ETH for a duration of 7 days, those incentives would be distributed at a rate of 1 $ETH every day. The default duration is 7 days, but you can select from a range between 3 and 30 days.

If you are happy with the amount and duration of your incentives, click the Incentivize button to proceed.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F33695493 d8c0 4b23 a99c

You will be asked to confirm that you understand you are giving away rewards by choosing this action. If you understand and agree to that, click the radio button and then click Continue. Again, if you do not understand what incentives are or why you might want to offer them, you are advised not to use this feature.

If necessary, Approve the token you have chosen as the incentive, then Confirm the transaction in the modal. This will send a request to your wallet. Approve the transaction there, and the tokens will be sent from your wallet to the rewards contract. Your incentives will be added to this Boosted Position and begin distribution immediately.

How to Add Single-Sided Incentives to a Boosted Position

Getting Started
  • This guide will explain how to incentivize targeted liquidity on Maverick’s dApp. We will be using the example of single-sided liquidity, i.e., how to incentivize liquidity providers (LPs) to bring a counter-asset to your token’s pool.
  • In order to incentivize liquidity in this way, we will be creating a Boosted Position in Maverick’s UI. You can find more information about Boosted Positions here.
  • Users can only create Boosted Positions in pools that already exist on Maverick. For example, if you want to create a Boosted Position to encourage users to bring $ETH to an ETH-XYZ pool, you will need to make sure that the ETH-XYZ pool is already deployed. A guide to deploying a new pool can be found here.
  • For Maverick’s movement Modes to work properly, a pool will need a layer of static liquidity to help with price discovery. If you are deploying a new pool, please begin with a Mode Static distribution that spreads some liquidity across a range around the current price.

We’ll break down this activity into three steps:

  • Adding Single-Sided Liquidity  – we’ll set up a one-sided distribution of protocol liquidity in a pool
  • Creating a Boosted Position – we’ll then create a Boosted Position to incentivize $ETH liquidity to the other side of this pool
  • Adding Incentives – finally, we’ll aim some incentives at this Boosted Position to encourage LPs to bring $ETH to it
Adding Single Sided Liquidity

In this first section, we’ll assume the role of a project bringing its own token to a Maverick pool. We’ll add that token to one side of the pool, and then in the next section, we’ll use a Boosted Position to incentivize users to add $ETH as a counter-asset. For this example, we’ll work with the ETH-SAND pair, but simply replace $SAND with any token and the process will be the same.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F938bedfa a142 4e96 80ab

Navigate to the Pools page, under Add Liquidity in the top menu.

Use the pool list on this page to find the pool you want to incentivize. You can scroll or use the search bar. If the pool you want has yet to be deployed, please see Maverick’s guide to deploying a new pool.

Click on the pool in the list to go to the Select Pool page.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5425f6 3d25 4ee1 8d9a

Check that the details for the pool you selected look correct, then click Next.

GjzrjWB VzZa53hKMZpsCd9Q NzZ8zDEsSmpm7Qs08wRs05qZ96i3k9RLFg1RvqttyhTwWsHJWP9dA1Hn691peqA401arrbtwT2JfmUPVE8DzTbWA9bbVYp HHNc4uino8gvdXUOSBbvbBMLPU5mWjg

On the Select Mode page, make sure Mode Static is selected then click Next.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f0e0cbc 966f 409d 8aea

This takes you to the Add Liquidity page. By default, the UI will select an Exponential distribution with a width of 0.1%. We’re going to change that so that we can add only $SAND to this pool. You can edit any distribution manually, but to make this process simpler, we’re going to start with a Single Bin distribution.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee7f7cd6 4964 40a7 95d0

Click the Edit button under Select Distribution, choose Single Bin in the modal, and click Select.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F98dca604 3f88 447b 8de7

Move your cursor over the top of the single bin in the Customize Distribution chart and drag it all the way down to the bottom. This should leave you with an empty chart with all the bins set to zero.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf38d01 4cc1 4ca1 8e8c

We’ll now create a single-sided distribution of $SAND by dragging up the bins on the right-hand side of this chart (check to make sure you’re dragging the bins on the correct side for your chosen token pair).

For this example, we have designed a flat distribution of $SAND consisting of five bins directly to the right of the current active bin (i.e., close to the current pool price). Depending on the situation, users may wish to use more/fewer bins in a different configuration at a different price point.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbdd0c44 1f28 403f 9450

Choose how much $SAND to add to this Distribution in the Required Assets bubble to the left of the chart. Here, we have selected 4000. Note that since we are single-sided, the UI has determined we do not need to add ETH. The amount you choose will be distributed proportionately across the distribution you designed (here, it will be apportioned equally between each of our five bins).

Click Confirm and then click Confirm Amount in the modal.

Confirm the transaction in your wallet.

Creating a Boosted Position

Now that we have a supply of the project token in the pool, we’re going to create a Boosted Position to incentivize liquidity into the other side of the pool. In our ETH-SAND example, we’ll be using a Boosted Position to incentivize $ETH into the pool we have chosen, but the same principles apply to any token pair.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce6a4bec 74e8 4916 b1c7

Navigate to the Boosted Positions page, under Add Liquidity in the top menu.

Click the New Boosted Position button on the right, above the list of Boosted Positions.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc46307b addb 4da0 b6e3

On the Create a new Boosted Position page, select the correct token pair (here, $ETH and SAND). Make sure the fee tier and width match the pool that you added liquidity to. If they do not, click Edit to choose the correct values and select the right pool. Click Next.

On the Select Mode screen, make sure Mode Static is selected and click Next.

As when we added initial liquidity above, we’re going to begin by zeroing out the distribution chart. Click Edit, select Single Bin, and click Select. Then mouse over the top of the single bin in the Customize Distribution chart and drag it all the way to the bottom.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffa2acaf ee00 4ab8 96bc

Now that we have an empty chart, we’re going to design the distribution we want to incentivize people to add liquidity to by dragging the bins on the $ETH side of the chart up into the desired distribution (make sure you’re dragging the correct bins for your chosen token pair).

For this example, we’ve created a mirror of the $SAND distribution as a simple demonstration of incentivizing matching liquidity in a pool, but a user may have reasons to use more/fewer bins, a different shape, or place this position farther away from the price.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5c8e86 e2b7 4b86 9b85

Choose how much $ETH to add to this Distribution in the Required Assets bubble to the left of the chart. Since this is only seed liquidity and we want users to bring their own $ETH to this Boosted Position, we’ll keep this amount low.

Click Confirm and click Confirm Amount in the modal.

Confirm the transaction in your wallet.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa62b5ed 28f8 421b 93f0

When the transaction is complete, click Done to be taken to the Portfolio page. You should see a card representing this Boosted Position. Make a note of the number on this card. In the screenshot above, the Boosted Position is easy to spot because of the lightning bolt and the Claim Rewards button. The number we’re looking for in the screenshot is “#17.” We’ll need this to incentivize this Boosted Position in the next step.

Adding Incentives

Now that we’ve added our protocol liquidity and set up a Boosted Position to direct matching $ETH liquidity from LPs, we can add incentives to the Boosted Position to entice the $ETH we want in our pool.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd247fa00 d430 4123 9f7f

Navigate to the Incentivize page, under Engage in the top menu.

Use the Boosted Position list on this page to find the Boosted Position you created earlier. You can scroll or use the search bar. In this example, we’re looking for ETH-SAND #17 (see step 10 in the previous section for how to find this number).

Click on your Boosted Position to go to the Incentivize Boosted Position page.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce46427 8baa 4109 80b8

Check to make sure you’ve chosen the correct Boosted Position.

Use the drop-down menu under Incentivize LP to select the token you want to use as an incentive. This will be transferred from your wallet to the rewards contract and distributed to LPs who add liquidity to this Boosted Position.

Choose the amount of this token you want to use as incentives using the numeric field to the right of the drop-down menu.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88938fa a437 441d 8097

Once you’ve chosen the token and amount, the Duration slider will appear. You can select a distribution period between 3 and 30 days in length. Your token incentives will be distributed evenly across whatever period you select.

In the event you do not see the slider, it is probably because another user has already added incentives to this Boosted Position. For more information, click here.

Click Incentivize and click Confirm Amount in the modal.

Confirm the transaction in your wallet.

DAO Treasuries

By relying on Maverick’s automated strategies and liquidity-shifting mechanism, protocols, and DAOs can use the pools to bootstrap liquidity for new markets and protect against market manipulation of their own token.

Also, by using Maverick’s customizable liquidity, protocols can use the pools as a more flexible launchpad. This is helpful for guiding the market to the desired market price for their native token while still rewarding early supporters with an optimal price.

Investors

Liquidity Strategies

The strategies presented below do not represent the limit of Maverick AMM’s capabilities. Sophisticated LPs and market makers are likely to come up with custom distributions that can be suitable for a given market situation.

Basic Strategies for Movement Modes

There are 3 movement modes: Right, Left, and Both. By selecting one of these modes, the AMM will automatically the liquidity to follow the price according to a set of rules:

  • Mode Right follows the price when it moves right and doesn’t move when the price moves left
  • Mode Left follows price when it moves left and doesn’t move when price moves right
  • Mode Both follows the price in both directions

Right and Left correspond to movements along a price axis in a given pool. For example, we can imagine a pool for two tokens–ABC token and XYZ token–and look at a hypothetical liquidity chart for this pool:

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a63610d d566 4281 96eb

The smart contract determines the pool price for the pool based on the ratio of the two assets in the pool. As trades take place, the amount of ABC and XYZ in the pool will change. For example, if traders bring a lot of ABC and swap it out for XYZ, there will be more ABC and less XYZ in the pool. Moreover, trades occur at the current price, and using the liquidity in the current active bin. In the chart above, the price is in an active bin that holds a mixture of ABC and XYZ.

If traders swap ABC for XYZ, the balance in that bin will shift towards more ABC and less XYZ, until a point where the bin only holds ABC, and the price moves into the next bin to the right so it can continue to supply XYZ to traders:

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eea58f1 b2ee 45c8 98da
  • A price movement to the Right corresponds to a price increase of XYZ relative to ABC.
  • A price movement to the Left corresponds to a price decrease of XYZ relative to ABC.

Note that since all of the movement in these modes is automated by the smart contract, an LP using a movement mode does not pay gas fees when their liquidity is moved.

Directional Price Belief

If an LP believes that the price in a particular pool is going to move in a specific direction–that is, that the value of one token is going to increase in relation to the other–they can use Mode Left or Mode Right to automate a strategy that has their liquidity follow that price movement.

For example, if an LP believes that XYZ token’s market value vs. ABC will increase over time, they can use Mode Right to have a bin of liquidity, follow the price movement, and collect fees from trading activity in the pool. This LP would put ABC in a Mode Right bin directly to the left of the current active bin. If they anticipate a price movement in the opposite direction, they can reverse the strategy using a bin of XYZ in Mode Left.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F0527a884 fa27 480b 9983

This enables LPs to keep their capital in range and remain productive without paying gas fees for moving their liquidity. Another advantage is that LPs can stay largely exposed to a single asset.

However, this strategy has the drawback that the LP is making a bet on price and their prediction might be directionally incorrect. As a result, there is a high risk of impermanent loss if the price moves in the opposite direction.

In the event of directional price swings in the opposite direction, LPs will likely need to manually rebalance their liquidity in order to stay closer to the current price.

Sideways Price Belief

Liquidity providers who believe that an asset is going to be trading sideways for a period of time can use Mode Both to keep their liquidity active and collect as many fees as possible.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F56ab3378 3ead 4765 9729

This strategy keeps capital in range regardless of what direction the price follows. Because of that, this strategy is well-suited for stablecoins and highly-correlated asset pairs.

One of the drawbacks of this strategy is that it requires LPs to bring both assets to the pool. Another disadvantage is that there is a risk of permanent loss in the event of sudden price swings back and forth.

Basic Strategies for Mode Static

Even though Maverick does not implement any automated liquidity management features in Mode Static, users can still come up with custom ways to distribute their liquidity.

In Mode Static, a user’s liquidity stays wherever they decide to put it in. This provides a similar experience to other concentrated liquidity AMMs like Uniswap V3. However, the difference is the increased flexibility that liquidity providers can achieve in Maverick. Instead of the liquidity being uniformly distributed in a price range, Maverick LPs can explore a wide variety of approaches when configuring static liquidity distributions.

Exponential Distributions

A Harvard study has shown that exponential distributions offer the best risk optimization for static liquidity provision. By placing the majority of their liquidity at the current price, and then spreading the rest of it in progressively lower amounts in the bins to either side, an LP can benefit from liquidity concentration while limiting their risk if the price moves.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5313e2e 2771 4f88 8121

On the flip side, static liquidity may require rebalancing if the price moves out of the range where the liquidity has been provided. In addition to that, the fact that the liquidity remains static also introduces the risk that the liquidity on either edge of the range may never be utilized.

If someone wanted to implement this strategy in Uniswap V3, they would need to mint multiple positions, each of which is represented as an NFT. In Maverick, this can be done with a single NFT.

Flat Distributions

Flat distributions simulate something close to standard constant function AMMs. However, it is not a requisite for the liquidity to be spread from zero to infinity. With a flat distribution, equal amounts of liquidity are placed in bins at each tick along the price range.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e8188c 9ed7 4c69 a97b

This type of liquidity provision continues to enjoy favor due to the low risk of impermanent loss but is very inefficient and can lead to high slippage for traders. It is also worth noting that staking wider ranges can be very gas-intensive.

One of the advantages is that the liquidity can cover a broader price range, which is often beneficial for volatile pairs and also provides some protection against impermanent loss. However, this comes at the expense of capital inefficiency, since most of an LP’s capital will be out of range at any given time.

Limit Order

Liquidity providers can deposit liquidity in a single bin in order to mimic a traditional limit order, i.e. a buy or sell order at a particular price.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aad90f0 eba2 4a96 8976

With this strategy, users can execute limit orders and collect fees for it, instead of paying them.

The drawback is that the LP could be swapped back if the liquidity is not removed before the price changes.

Dollar Cost Averaging (DCA)

Even though this is not precisely a DCA strategy, LPs can use a flat static distribution in order to gradually swap one token for another. For example, by placing equal amounts of XYZ at several ticks to the right of price in our pool, an LP can slowly let themselves get swapped to ABC as the value of their XYZ increases.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ebc33 058d 4626 a52e

Similar to the limit order strategy, users can collect fees instead of paying them. The LP could also be swapped back if the liquidity is not removed before the price changes.

This strategy is also suitable for executing large buy or sell orders without affecting the market price in the same way a conventional swap would.

Buy-Sell Ramp

This strategy can be used to gradually sell or buy assets as price moves. The difference with the DCA strategy is that the DCA strategy sells the same amount of tokens at each price tick, while this strategy sells progressively more tokens as the price moves in the LP’s favor. The user will also swap more slowly than in the DCA distribution.

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb939268c 6f8b 40de 84bf

The main advantage is that users can make a swap and collect fees for it, instead of paying them. The main drawback is that the LP could be swapped back if the liquidity is not timely removed.

This strategy could be used by protocols as a launch ramp in order to guide the price of their token to their desired price range.

Economics

Tokenomics

The protocol will attempt to achieve full decentralization gradually over time through the use of the $MAV token. As a result, $MAV token holders will be able to vote on decisions made by the protocol as well as stake their assets to earn revenue from platform fees.

MAV

$MAV is the native utility token of the Maverick ecosystem. It is designed primarily to be used for staking, voting, and boosting.

veMAV

Staking was enabled on July 9, 2023.

Through a voting-escrow model (ve), users will be able to stake $MAV to receive veMAV. This mechanism seeks to align the incentives of liquidity providers and token holders.

A user’s veMAV balance determines their voting power within the protocol. The longer a user stakes their $MAV, the more veMAV they will receive in return and the more voting power they will have.

The possession of veMAV voting power becomes valuable for projects as they have a vested interest in accumulating it. In order to encourage veMAV holders to utilize their voting power in a manner that benefits their respective projects, it is likely that projects will explore providing additional user incentives.

In Maverick, protocols have the ability to create “Boosted Positions” within a pool, which represents a specific distribution of liquidity. Using the veMAV model, protocols can direct incentives specifically to these Boosted Positions. This provides protocols with a precise and targeted approach to incentivizing liquidity and introduces the concept of “incentive efficiency” in the protocol ecosystem.

By leveraging Maverick, protocols can optimize their incentive strategies to achieve their liquidity objectives while minimizing the capital required. The ability to focus incentives on specific Boosted Positions allows protocols to allocate resources more efficiently, ensuring that incentives are directed where they are most needed. This approach enables protocols to make strategic use of incentives, maximizing their impact and effectiveness in driving liquidity provision.

Voting Power Calculation

A user’s veMAV balance mirrors their influence on the protocol’s voting system. The computation of the veMAV balance relies on two key factors:

  • Amount of $MAV staked
  • Duration of the staking period

The $MAV staked amount is subject to a multiplier, which grows in accordance with the chosen duration of the staking period. This multiplier increases as the staking period becomes longer. The staking period can range from a minimum of one week to a maximum of four years.

The staking multiplier rises according to an exponential pattern. It expands by a factor of 1.5x for each additional year in the staking period. This implies that if a user opts to extend their staking period by one more year, their veMAV balance will receive an extra boost of 1.5x.

The staking multiplier curve can be represented as:

  • 1.5^(staking period end – contract launch)

The greater the difference between the staking period end and the contract launch, the higher the staking multiplier will become. This system ensures that users who commit their $MAV tokens for longer periods are rewarded with increased veMAV balances, enhancing their voting influence.

Ecosystem Incentives

Details about the Maverick Ecosystem Incentive Program were published on June 26, 2023.

It is designed to incentivize activities and contributions that advance the development of the Maverick ecosystem, utilizing $MAV tokens from the Liquidity Mining and Airdrops allocation and deployed in different seasons.

Pre-Season

The Maverick Ecosystem Pre-Season will be dedicated to honoring those who contributed to the growth of the Maverick ecosystem. Rewards will be calculated using a combination of these factors:

  • Liquidity Providing, by TVL and duration
  • Achieving Contributor or higher roles in the Maverick Warrior Program
  • Participation in Snapshot governance votes
  • Trading volume using Maverick UI
  • Holding Maverick MAVA NFTs

A snapshot of all wallet addresses that participated in the pre-season was taken on June 22, 2023.

Season 1

Season 1 on-chain activity will be recorded starting June 22, 2023. LPs can supply liquidity on the app and any LP activity on Maverick from now on will be recorded and counted towards Maverick Rewards Season 1. A leaderboard for Maverick Ecosystem Incentive Program Season 1 will be released very soon on the website.

Season 1 is designed to fulfill two purposes, being:

  • Bootstrapping liquidity during Maverick ve-model launch stage 1
  • Incentivizing early Maverick ve-model participants (token projects) and ecosystem builders (i.e. metaprotocol builders)

The initial designs for season 1 include:

  • Liquidity Providers:
    • The size of the liquidity supplied will affect the level of rewards.
    • Early Liquidity Providers will get a boost.
    • Liquidity Providers supplying liquidity for a longer term will get a boost.
    • Outstanding performance on any liquidity strategy deployed on Maverick might get extra rewards.
  • Ecosystem Participants:
    • Maverick ecosystem participants: projects integrated with Maverick’s DeFi infrastructure at the early stage and/or signed up to utilize Maverick’s ve-model to further direct and shape their token liquidity
    • Maverick ecosystem builders: projects or contributors that build composable financial applications on top of the Maverick ve-model
    • Boosted Position incentivizer: projects that incentivize liquidity on Maverick with external rewards.

As a Liquidity Provider, you can supply liquidity on Maverick to enjoy higher capital efficiency and extra MAV rewards under Maverick Ecosystem Incentive Program Season 1. These are the steps you can take for both stages 1 and 2 of the ve-model launch:

  • Pre-ve Phase:
    • Supply liquidity to Maverick liquidity pools to earn trading fees.
    • Supply liquidity to Maverick Boosted Positions to earn trading fees and external BP rewards.
  • ve-Model Stage 1:
    • Supply liquidity to Maverick liquidity pools to earn trading fees.
    • Supply liquidity to Maverick Boosted Positions to earn trading fees and external BP rewards.
    • Supply liquidity to Maverick liquidity pools or Boosted Positions to earn MAV from the Maverick Ecosystem Incentives (Season 1).
    • Lock MAV token to earn veMAV.
  • ve-Model Stage 2:
    • Supply liquidity to Maverick liquidity pools to earn trading fees.
    • Supply liquidity to Maverick Boosted Positions to earn trading fees and external BP rewards.
    • Supply liquidity to Maverick liquidity pools or Boosted Positions to earn MAV from the redirected protocol incentives voted by veMAV holders.
    • Lock MAV token to earn veMAV.
    • Vote with veMAV and potentially earn bribes in future metaprotocols.
Season 2

The proposal to fund S2 was passed on August 29, 2023.

MWP S2 intends to further grow Maverick’s social footprint, build better tools for protocol analytics, and produce more comprehensive educational content within the Maverick community.
The deliverables under MWP S2 will be:

  • Initial Maverick Warrior Ambassador Program with 20+ ambassadors.
  • Maverick Alert Twitter Bot.
  • New Maverick Warriors (Moderators, User Supports, and Data Scientists.

Just like the previous season, MWP S2 will reward qualified participants with Maverick Warrior Credits, Maverick Warrior Role, Maverick Warrior NFT, and USDC rewards. Future incentives will be dropped based on new Maverick Warrior Credits earned during (i.e., Credits from previous seasons will not form the basis of future incentives). However, the overall degree of Maverick Warrior role achieved might give you a boost to these incentives. Maverick Warrior NFT might be subject to future benefits like merch and tickets to Maverick VIP events.

Governance

The ultimate goal of Maverick is to reach a state of full decentralization where the protocol is owned by the community. This will take place gradually over time.

Risks

Security

Interacting with any smart contract requires caution. While these risks are minimized through testing, audits, and bug bounties, there is always the risk of vulnerabilities.

Audits

Maverick has had multiple audits done with Certik, Zellic Inc, ABDK Consulting and Dedaub.

Bug Bounty

Maverick previously had a bug bounty program that was announced on March 16, 2023, lasting 30 days. Users could report the bugs found via a bug report form on the dApp.

There were 4 tiers of rewards:

  • High – $1k – $3k
  • Moderate – $500 – $1k
  • Low – $100 – $500
  • Informational – $0 – $100

The Unique Risks of LPing Rebasing Tokens

Rebasing tokens are a specific type of cryptocurrency that adjusts its supply algorithmically to maintain a target value. Examples of rebasing tokens include USD+ and stETH.

When providing liquidity to a rebasing token on the Maverick platform, it’s important to note that you will not receive any positive rebase earnings that you would have obtained by holding that token. Instead, the positive rebase will be reflected in the protocol fee displayed in the AMM.

However, it’s crucial to be aware that there is a potential risk associated with rebasing tokens. In some cases, a rebasing token may experience significant negative rebases, resulting in the pool containing that token becoming insolvent. As a result, LPs may encounter difficulties in withdrawing their funds from the pool.

Team

Maverick brings together a team that has experience in crypto in areas such as the development of swap aggregators, Ethereum layer2s, PoS public blockchains, Dexes, decentralized storage networks, decentralized credit markets, quantitative asset management, and more. Members and advisors of the team have worked at leading companies such as Metamask, BitTorrent, Abra, TrueFi, Paxful, and LedgerPrime.

The LinkedIn page includes 7 employees, some of them include:

Project Investors

https%3A%2F%2Fsubstack post media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d8acac 4f79 4802 baed

Maverick has had 3 raises so far, including 2 strategic rounds and 1 seed round.

Additional Information

Partnerships

  • Stargate Finance – Stargate is a fully composable liquidity transport protocol that lives at the heart of omnichain DeFi.
  • Tapio Finance – The first LST-focused LP token with utility within DeFi, pegged to ETH and generates real yield for holders.
  • PropellerSwap – PropellerHeads is a decentralized infrastructure to give wallets, dApps, and users the best price on any trade, through.

Glossary

  • AMM
    • An Automated Market Maker (AMM) is an on-chain smart contract that manages pools of assets, setting their prices and facilitating trades. These smart contracts take the place of market makers and managers in traditional and centralized exchanges and offer transparent market automation governed by programmable rules.
    • AMMs rely on liquidity providers to deposit quantities of tokens into pools, which the AMM then takes the responsibility of managing. Traders make trades with the contract itself, rather than the liquidity providers or other traders. As a smart contract, an AMM can offer markets that are transparent, always available, and that make trades both permissionlessly and agnosticically.
  • Fee APR
    • In Maverick’s UI, you can see the Fee Annual Percentage Rate (APR) of individual bins in a pool. This number is calculated based on fees generated by the liquidity reserves in that bin over the last 24 hours. Since the APR is extrapolated from the previous 24-hour period, it is best understood as an indicator of historical–not future–performance.
    • Fee APR is provided for information only. It should not be understood as a promise of future returns. Always do your own research and understand your personal risks before providing liquidity.
  • Impermanent Loss
    • Impermanent Loss or IL is a concept somewhat unique to DeFi, which is perhaps most simply understood as “loss versus holding.” It has become a common metric used in estimating the profitability of providing liquidity to AMMs.
    • When a user provides liquidity to an AMM, they implicitly agree to accept any trades. This means that the balance of assets they supplied to the AMM is likely to change over time. For example, if an LP’s initial position consisted of a 50-50 split between $USDC and $ETH, trading activity is likely to change that ratio.
    • IL is calculated by comparing the value of an LP’s real-time position in the AMM to the value of their initial deposit if they had just held it. If the market value of $ETH goes up, it is likely that traders will come to a USDC-ETH pool and buy $ETH for $USDC, changing the balance of our LP’s 50-50 position (e.g., to 60-40 USDC/ETH). At this moment in time, they are subject to loss versus holding (i.e., IL), since a 50-50 position held outside the AMM would have retained more value during the $ETH pump.
    • Of course, this loss is called “impermanent” for a good reason: as assets change in value, it is possible that the value of the LP’s position will return to where it started, at which point they will essentially be back to zero loss versus holding. The loss doesn’t become real until the LP removes its liquidity from the AMM, at which point any actual net loss versus holding can be calculated.
  • Permanent Loss
    • Maverick uses Permanent Loss or PL to describe a kind of risk specific to Mode Both positions. It is different from Impermanent Loss in that it represents a real and immediate loss to LP’s reserves, not a theoretical loss pending withdrawal.
    • PL can occur in Mode Both positions because the LP is agreeing to buy high and sell low as the liquidity is repositioned. If the price in a pool swing back and forth, the LP can end up buying high and then selling back low, thereby leaking value from their liquidity position. For pools with very wide bins, the risk is mitigated because it will take large price swings before PL becomes a factor.
    • PL is a by-product of Mode Both’s high capital efficiency, as the Mode is designed to keep an LP’s liquidity as close to price as possible. Mode Both should be used with caution because of the PL risk.
  • Price Impact
    • Price Impact refers to the change in the pool price that happens when a trader makes a swap with that pool.
    • Maverick AMM adjusts the price in every pool based on the ratio between the assets held in that pool. When a trader makes a swap, that ratio changes; if the ratio changes enough, it will also change the price. If someone swaps token A for token B, the pool will be left with more of token A and less of token B than it held before the swap. As a result, the price of token B will increase.
    • The price impact of a given swap depends on the size of the swap and the reserves held in the pool. A larger swap is likely to result in a higher price impact.
  • Slippage
    • Slippage is when a trader receives a different price for a trade than they might expect. For example, when a user previews a swap in the UI, they might be quoted a price of $1.01, but when the transaction goes through they might actually end up paying $1.02. This is an example of slippage.
    • There are actually two components to slippage:
    • Price Impact Slippage – this is the difference between the current price in the pool and the price a trader is quoted for their swap. It is called “Price Impact” because it reflects the impact of the trader’s swap on the pool price. The larger the swap, the larger the price impact is likely to be.
    • Transaction Slippage – this is the difference between the price a trader is quoted for their swap and the actual price they receive. This can occur when another trader submits a swap just before you submit your own. Since their swap will change the balance of assets in the pool, the price in the pool may shift, causing you to receive a different price than expected.
    • Maverick AMM is designed to limit both kinds of slippage. The high capital efficiency of Maverick pools limits price impact slippage, and the UI provides slippage checks to minimize transaction slippage.
    • The Maverick smart router will also make a smart search of available pools in order to give a trader the best possible price for their swap. Occasionally, this will mean routing a swap through a pool with lower liquidity and therefore higher price impact slippage if it means the trader will get a better price for their swap. But users can rest assured they are still getting the best price, even with slippage.

FAQ

  • When does liquidity move in Maverick AMM?
    • All liquidity movement is governed by the Time Weighted Average Price (TWAP) of a given pool. After the first swap in a block, the contract updates the TWAP and checks if any liquidity needs to be moved, based on the rules of each movement mode. If it finds a bin that needs to be moved, it moves it. This operation only happens once in a single block. For more information, please refer to the Whitepaper.
  • Do liquidity providers have to pay gas when their liquidity is moved?
    • No. Since liquidity movement is natively automated by the AMM smart contract, LPs do not pay gas when their liquidity is moved for them. The only time an LP will pay gas is when they add or remove liquidity.
  • Why isn’t my liquidity moving?
    • As explained above, the AMM contract only checks the TWAP after a swap. If a pool has low trading volume, the TWAP will not be updated/checked very often, meaning that liquidity bins may not move much.
    • If you have deployed a new pool and aren’t seeing your liquidity move as expected, there is also the possibility that there isn’t enough static liquidity for the AMM to discover price and move bins. Each pool requires a “base layer” of static liquidity in order for the movement modes to function properly.
  • What is a Maverick Position NFT? Why am I being asked to approve it?
    • When you add liquidity for the first time, you mint a Maverick Position NFT. This single NFT is used to store all of your LP balances on Maverick. If you open more liquidity positions, they will be stored on the same NFT. More information can be found in the Whitepaper.
    • If you choose to remove liquidity from a position, you will first have to approve the contract’s access to your Maverick Position NFT. Then you can proceed with the removed liquidity flow.
  • How do transaction fees work on Maverick?
    • When users add liquidity on the Pool page, they can choose from a range of fee tiers from 0.01% to 3%.
    • On the LP side, each pool on the testnet technically consists of several sub-pools, organized by these fee tiers. LPs have the freedom to choose which sub-pool they deposit in, and can even deposit in more than one sub-pool if they want.
    • On the Swap side, traders only ever see one pool for each asset pair. This is because the AMM intelligently routes their swap requests to whichever available sub-pool can offer them the best price at that moment. If the best price is in the 0.01% sub-pool, the trader will swap with that pool; if it’s in the 2% sub-pool, they will swap with that pool instead.
  • What is the difference between the fee tiers?
    • The fee tiers correspond to the different transaction fees a trader will pay for swapping with those sub-pools, expressed as a percentage of their swap’s quote asset (i.e., if they are swapping $USDC for $USDT, the fee is based on a percentage of their $USDC input request).
    • LPs are free to decide which tier/distribution to add their liquidity to. Maverick might offer a general recommendation for each asset type and fee tier, based on a general projection of volume and risk, but ultimately the market will decide which distribution facilitates the most swaps for each token pair, and LPs may wish to re-distribute their deposits to capture more fees.
  • Why did my Add/Remove Liquidity transaction fail?
    • Occasionally, another user might make a big swap just before you submit a transaction. This can cause the price to move in your pool and exceed the slippage tolerance of your Add or Remove call. In this case, the transaction will fail in order to protect you from excessive slippage.
  • Why are gas fees so high on zkSync Era?
    • Gas fees on zkSync Era currently work a little differently from other chains. You may see a high gas cost in your transaction preview, but a lot of those fees should be refunded to you, meaning you pay lower net fees. If you want to check how much gas you actually spent on a transaction, you can consult zkSync’s block explorer.
  • What is the Phase 2 Migration?
    • Maverick has released Phase 2 of the launch roadmap. With Phase 2, users and protocols can now permissionlessly incentivize any distribution of liquidity in a pool as part of a Boosted Position.
    • One consequence of the upgrade is that the AMM factory and pools have been redeployed. To accelerate the transition, the Maverick dApp at app.mav.xyz will only show Phase 2 pools. The Phase 1 pools will remain accessible at phase1-app.mav.xyz. Users are encouraged to migrate their liquidity from Phase 1 to the Phase 2 dApp. To migrate liquidity, users will first need to remove it from Phase 1 pools.
    • The Phase 2 contracts have been audited and the audits are available at https://github.com/maverickprotocol/audits.

Community Links