Uniswap V3

Implantando garantia inativa para pares stable-stable no Uni v3 com FRAX

A principal inovação do algoritmo AMM do Uniswap v3, permitindo que os LP implantem liquidez entre intervalos de preço específicos, permite que os pares de stablecoin-to-stablecoin (por exemplo, FRAX-USDC) acumulem liquidez extremamente profunda dentro de um pino apertado. Em comparação com o Uniswap v2, o intervalo de ordens no Uniswap v3 concentra a liquidez em vez de se espalhar por um intervalo infinito de preços.

O Uniswap v3 Liquidity AMO coloca a FRAX e garantia para trabalhar, fornecendo liquidez a outros stablecoins contra o FRAX. Uma vez que o AMO é capaz de entrar em qualquer posição no Uni v3 e cunhar FRAX contra ele, este permite a expansão para qualquer outra stablecoin e, posteriormente, garantia volátil no Uni v3. Adicionalmente, a função collectFees() pode ser periodicamente chamada para alocar os lucros da AMO para operações de mercado de garantia excedente.

Especificações AMO

  1. Retirada de garantia - Deposita a garantia inativa e a FRAX acabada de cunhar no par Uni v3.

  2. Operações de mercado - Acumula taxas de transação Uni v3 e efetua swap entre tipos de garantias.

  3. Criar garantia adicional - Retira dos pares Uni v3, queima FRAX e retorna USDC para aumentar CR.

  4. FXS1559 - Taxas de transação diárias acumuladas sobre o CR.

Derivação

Todos os preços existem como rácios entre uma entidade e outra. Convencionalmente, selecionamos uma moeda como unidade de conta partilhada no denominador (por exemplo, USD) para comparar preços de bens e serviços do dia a dia. No Uniswap, os preços são definidos pelo rácio entre os valores das reservas de x e as reservas de y na pool.

A mecânica da ordem de intervalo do Uniswap v3 ajusta-se à invariante de criação de mercado de produto constante (CPMM) existente x∗y=k "virtualizando" as reservas num ponto de preço específico, ou tick. Através da especificação em que o tick de uma posição de liquidez é limitada, são criadas ordens de intervalo que seguem a invariante de produto constante sem ter de espalhar a liquidez por todo o intervalo (0, ∞) para um ativo específico.

Um preço no Uniswap v3 é definido pelo valor 1.0001 para o valor do tick i. Os limites para os preços dos ticks podem ser representados pelo grupo algébrico G = {gi∣i∈Z, g = 1,0001}. Este mecanismo permite a fácil conversão de números inteiros em limites de preços, e tem a conveniência de diferenciar cada limite de preço do tick como um ponto base (0,01%) no preço de outro.

As reservas virtuais são rastreadas, rastreando a liquidez e limites do tick de cada posição. Cruzando o limite de um tick, a liquidez L disponível para esse tick pode variar para refletir as posições que entram e saem dos seus respetivos intervalos de preço. Dentro dos limites do tick, os swaps variam o preço sqrt(P), de acordo com as reservas virtuais, ou seja, este atua como a invariante de produto constante (x∗y=k). As reservas virtualizadas x e y podem ser calculadas desde a liquidez e preço:

Repare que a implementação real usa uma raiz quadrada do preço, uma vez que salva uma operação de raiz quadrada do cálculo de swaps intra-tick e, assim, ajuda a evitar erros de arredondamento.

A liquidez pode ser pensada como um k virtual no x∗y=k CPMM, enquanto que o ΔY corresponde ao valor do ativo Y e o ΔP representa a derrapagem de preço do intra-tick.

Uma vez que L é fixo para swaps intra-tick, ΔX e ΔY podem ser calculados a partir da liquidez e da raiz quadrada do preço. Ao cruzar um tick, o swap deve deslizar apenas até ao P, limite, e então reajustar a liquidez disponível para o próximo tick.

Last updated