Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
Creadores de Mercado Automatizados - Fondo de Liquidez - Pregunta sobre el cálculo

Estimados, quisiera codificar todos los pasos para el cálculo correcto de un saldo de pool según la lógica Uniswap V2.
Cualquiera que supiera ayudar puede escribir en cualquier lenguaje de programación (Python, Javascript, etc.), en este ejemplo usé R.
El proceso de equilibrio para un grupo de liquidez se puede ver aquí: ejemplo1 y ejemplo2 . Sin embargo, no está claro cómo hacerlo teniendo en cuenta la tarifa de Uniswap, que es del 0,3 % por cada operación.

 library(tidyverse) ##### INITIAL PARAMETERS #Uniswap charges users a flat 0.30% fee for #every trade that takes place on the platform and #automatically sends it to a liquidity reserve Uniswap.fee <- 0.30 / 100 ETH.initial.price <- 100 ETH.pool.price <- 100 BNT.initial.price <- 1 BNT.pool.price <- 1 ##### INITIAL SITUATION BNT.units <- 1000 BNT.total <- BNT.units * BNT.initial.price ETH.units <- BNT.total / ETH.initial.price ETH.total <- ETH.units * ETH.initial.price Pool.Value <- BNT.total + ETH.total Pool.DF <- data.frame(Symbol = c("BNT", "ETH"), Share = c(BNT.total,ETH.total)) ggplot(Pool.DF, aes(x = Symbol, y=Share, fill=Symbol)) + geom_bar(width = 1, position = "dodge", stat="identity") + labs(title="Initial POOL")

ingrese la descripción de la imagen aquí

 ##### FINAL SITUATION ETH.final.price <- 120 ETH.pool.price <- 100 BNT.final.price <- 1 BNT.pool.price <- 1 ##### Imbalanced.Pool Imbalanced.Pool <- data.frame(Symbol = c("BNT", "ETH"), Share = c(BNT.total,ETH.units * ETH.final.price )) ggplot(Imbalanced.Pool, aes(x = Symbol, y=Share, fill=Symbol)) + geom_bar(width = 1, position = "dodge", stat="identity")+ labs(title="Imbalanced POOL: ETH valorization") #### need to balance:

ingrese la descripción de la imagen aquí

... Ahora no sé cómo seguir los pasos para equilibrar correctamente y obtener los valores de pérdida impermanente y ganancia arbitraria.

Muchísimas gracias,

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Para los protocolos DeFi que utilizan creadores de mercado automatizados, implementamos un grupo de un par de activos (por ejemplo, BTC-USDT), y fijamos el precio de los dos activos simplemente con:

b * u = constante

Aquí b es la cantidad de BTC en el grupo y u es la cantidad de USDT. Además, la constante a menudo se escribe como K en muchos artículos.
Ahora suponga que desea intercambiar una cantidad de b 'BTC a USDT. Le das el b 'BTC al protocolo DeFi, y el protocolo descubre que debe reducir la cantidad de USDT (que se te dará) para mantener b * u = constante. Luego, con cálculos simples, el grupo decide darle u' USDT de modo que: (b+b')*(u-u') = constante

Con esta transacción (suponiendo que no se acumule una comisión del 0,3 %), obtienes u' USDT dando b' BTC.

Luego se trata de la tarifa del 0,3%. Cuando le da b' BTC al grupo, el grupo actúa como si solo le diera la cantidad deducida b'' == 99.7% * b'. Entonces el grupo calcula u'' de modo que

(b+b'')*(u-u'') = constante

En el cálculo real siempre hay errores debido al número limitado de decimales (solo puede recibir 0,1272 USDT en lugar de 0,127272727272...). Por lo tanto, la constante afirmada puede aumentar lentamente a medida que se ejecutan más y más transacciones de intercambio. Esto aumenta lentamente el volumen del fondo de liquidez. Tenga en cuenta que la comisión acumulada del 0,3 % puede no servir como parte del fondo de liquidez.

Para los códigos, usaría los códigos de Flamingo como ejemplo.

Primero, inicializa un intercambio a través de FlamingoSwapRouter. Das tus tokens vendidos al enrutador https://github.com/flamingo-finance/flamingo-contract-swap/blob/74e61f8406f9e8ededed72f9cb7e0139091ae17c/Swap/flamingo-contract-swap/FlamingoSwapRouter/FlamingoSwapRouterContract.cs#L237

Luego, el enrutador SafeTransfer su token vendido a su contrato de intercambio de pares y llame al método de swap del contrato de intercambio para darle el token que compra.
https://github.com/flamingo-finance/flamingo-contract-swap/blob/74e61f8406f9e8ededed72f9cb7e0139091ae17c/Swap/flamingo-contract-swap/FlamingoSwapPair/FlamingoSwapPairContract.cs#L140
Puede ver el código var balance0Adjusted = balance0 * 1000 - amount0In * 3; que ajusta la cantidad asumida de token en el grupo de liquidez. Hay una cantidad ligeramente superior de token en el grupo de liquidez que son tarifas acumuladas, no parte de la liquidez.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda