WEB3DEV

Cover image for Defi Series Nº1: Entendendo os Formadores de Mercado Automatizados (AMMs) Intuitivamente
Panegali
Panegali

Posted on

Defi Series Nº1: Entendendo os Formadores de Mercado Automatizados (AMMs) Intuitivamente

As Finanças Descentralizadas (DeFi) revolucionaram o cenário financeiro ao oferecer alternativas abertas, transparentes e inclusivas aos sistemas centralizados tradicionais. Uma das principais inovações na DeFi são os Formadores de Mercado Automatizados (AMMs), que transformaram a forma como os usuários negociam e fornecem liquidez em exchanges descentralizadas. Neste artigo, exploraremos o conceito dos AMMs, como eles funcionam e sua importância no mundo das exchanges descentralizadas. Seja você um indivíduo técnico ou não, novo na DeFi, este artigo fornecerá uma compreensão abrangente dos AMMs.

Índice

  1. Exchanges descentralizadas e a necessidade dos AMMs;
  2. Projetando AMMs: principais conceitos e componentes;
  3. AMM Math: modelo de formador de mercado de produto constante;
  4. Considerações de segurança para os AMMs;
  5. Conceitos avançados e melhorias;
  6. Estudos de caso e implementações dos AMMs existentes.

1. Exchanges descentralizadas e a necessidade dos AMMs

As exchanges descentralizadas (DEXs) ganharam popularidade no espaço criptográfico por sua capacidade de facilitar a negociação ponto a ponto sem depender de intermediários. Ao contrário das exchanges centralizadas, que exigem que os usuários depositem fundos e confiem em uma autoridade central, as DEXs permitem que os usuários mantenham o controle de seus ativos e negociem diretamente com outros participantes.

No entanto, as DEXs enfrentam desafios para manter a liquidez e fornecer experiências de negociação eficientes. As exchanges tradicionais baseadas em livro de pedidos (order books) exigem que compradores e vendedores façam coincidir seus pedidos, o que pode levar à fragmentação da liquidez e tempos de execução mais lentos. É aqui que os Formadores de Mercado Automatizados entram em ação.

Os AMMs resolvem os desafios de liquidez das DEXs usando fórmulas algorítmicas para determinar preços de ativos e facilitar a negociação contra pools de liquidez. Os provedores de liquidez contribuem com seus ativos para esses pools e, em retorno, recebem taxas com base em sua participação proporcional total no pool. Os AMMs eliminam a necessidade de livros de pedidos e permitem o fornecimento contínuo de liquidez, melhorando as experiências de negociação em plataformas descentralizadas.

Para se aprofundar no assunto das exchanges descentralizadas e sua necessidade dos AMMs, você pode consultar os seguintes recursos:

2. Projetando AMMs: principais conceitos e componentes

2.1. Pools de liquidez:

Os AMMs dependem de pools de liquidez, que são reservas de tokens que os usuários contribuem para permitir a negociação. Os provedores de liquidez depositam valores iguais de dois tokens diferentes no pool para estabelecer um par de negociação. Por exemplo, um pool de liquidez pode consistir em tokens ETH e DAI. Esses provedores de liquidez ganham taxas por sua contribuição para a liquidez do pool e são recompensados ​​com base em sua participação proporcional no pool total.

Pool de liquidez do AMM e ilustração de negociações

Para entender mais sobre os pools de liquidez e sua função nos AMMs, você pode consultar os seguintes recursos:

2.2 Algoritmos de determinação de preço

Os AMMs utilizam fórmulas matemáticas para determinar preços de ativos dentro de pools de liquidez. O modelo mais utilizado é o Formador de Mercado de Produto Constante (Constant Product Market Maker ou CPMM). De acordo com esse modelo, o produto dos saldos de reserva dos dois tokens em um pool de liquidez permanece constante. Em outras palavras, para um par de negociação com reservas x e y, a fórmula x * y = k é verdadeira. Essa relação permite que o algoritmo calcule os preços com base na liquidez disponível no pool. Vamos olhar atentamente para isso na próxima seção.

3. AMM Math: modelo de Formador de Mercado de Produto Constante

Vamos examinar o aspecto matemático do modelo de Formador de Mercado de Produto Constante. Este modelo forma a base para os AMMs populares como a Uniswap.

3.1 Explicando a Fórmula x * y = k

No modelo de Formador de Mercado de Produto Constante, a relação entre as quantidades de dois tokens em um pool de liquidez é definida pela fórmula x * y = k. Vamos decompor a fórmula:

  • x representa a quantidade do primeiro token no pool.
  • y representa a quantidade do segundo token no pool.
  • k é um valor constante que permanece o mesmo em todas as negociações no pool.

A fórmula implica que o produto de x e y é sempre igual a k. Como resultado, quando o saldo de um token aumenta, o saldo do outro token deve diminuir para manter o produto constante. Essa propriedade garante que o preço de cada token se ajuste de acordo com a oferta e a demanda dentro do pool.

3.2 Compreendendo as implicações dos Formadores de Mercado de Produto Constante

O modelo de Formador de Mercado de Produto Constante tem várias implicações:

  • Impacto no preço: quando ocorre uma negociação, a quantidade de um token no pool muda, resultando em uma mudança no produto constante k. Essa mudança faz com que o preço do token negociado se ajuste em relação ao outro token no pool. Quanto maior a negociação, mais significativo o impacto no preço, pois o produto constante deve ser mantido.
  • Provisão de liquidez: os provedores de liquidez contribuem com um valor igual de ambos os tokens para estabelecer um par de negociação no pool de liquidez. À medida que os traders executam negociações, os provedores de liquidez ganham taxas proporcionais à sua participação no pool total. Isso incentiva a provisão de liquidez e garante que o pool permaneça adequadamente financiado para negociações.

Para visualizar o modelo de Formador de Mercado de Produto Constante, considere o seguinte exemplo:

Suponha que temos um pool de liquidez com token A e token B. Inicialmente, o pool contém 100 tokens de A e 200 tokens de B. O produto constante k é, portanto, 100 * 200 = 20.000.

Se um trader quiser trocar 10 tokens de A por token B, as novas quantidades seriam x = 90 (inicial 100 — negociado 10) e y = 200 + ? (quantidade resultante de B). Usando a fórmula x * y = k, podemos encontrar y:

90 * y = 20.000

y = 20.000 / 90

y ≈ 222,22

Com isso, o trader receberá aproximadamente 222,22 tokens de B pelos 10 tokens de A, contabilizando o impacto no preço causado pela negociação.

Fórmula do Produto Constante

Aqui está um exemplo de código no Solidity:

Para uma explicação mais detalhada dos algoritmos de determinação de preço em AMMs, você pode consultar os seguintes recursos:

4. Considerações de segurança para os AMMs

Os desenvolvedores de AMM devem priorizar a segurança para proteger os fundos dos usuários e garantir a integridade de suas exchanges descentralizadas. Seguindo as melhores práticas e implementando medidas de segurança robustas, os desenvolvedores podem minimizar o risco de vulnerabilidades e potenciais ataques. Nesta seção, discutiremos as principais considerações de segurança para os AMMs e forneceremos orientações sobre como garantir a segurança dos contratos inteligentes.

4.1 Melhores práticas para desenvolvimento de contratos inteligentes

Ao desenvolver contratos inteligentes para AMMs, é crucial seguir as melhores práticas estabelecidas para reduzir a probabilidade de vulnerabilidades. Aqui estão algumas considerações essenciais de segurança:

Validação de entrada

Garanta a validação de entrada adequada para impedir que usuários mal intencionados explorem vulnerabilidades. Valide as entradas do usuário, incluindo valores de token, parâmetros de negociação e argumentos de função, para evitar comportamentos inesperados ou possíveis explorações.

Proteção contra reentrância

Implemente guardas de reentrância para evitar ataques de reentrância. Use o padrão “Verificações - Efeitos - Interações” (Checks-Effects-Interactions) e certifique-se de que as chamadas de contrato externo sejam feitas no final da função após a atualização do estado do contrato.

Atualizações seguras do contrato

Considere a implementação de padrões de contrato atualizáveis, tais como o uso de contratos proxy ou estruturas de atualização de contrato, como os plug-ins de atualizações do OpenZeppelin. Isso permite atualizações futuras, preservando a segurança e a integridade da lógica do contrato.

4.2 Estratégias de auditoria e teste

A realização de auditorias de segurança e testes abrangentes é crucial para identificar e mitigar possíveis vulnerabilidades em contratos inteligentes do AMM. Aqui estão algumas estratégias recomendadas:

Auditorias de segurança de terceiros

Envolva empresas terceirizadas de auditoria de segurança respeitáveis ​​para realizar revisões de código completas e avaliações de segurança de contratos inteligentes. Sua experiência pode ajudar a identificar possíveis vulnerabilidades e fornecer recomendações para melhorias.

Suítes de teste

Utilize estruturas de teste como o Truffle ou o Hardhat para escrever e executar testes de unidade, testes de integração e testes funcionais. Teste vários cenários, casos extremos e possíveis vetores de ataque para garantir a robustez e a segurança da implementação do AMM.

Testes de estresse

Realize testes de estresse para avaliar o desempenho e a resiliência do contrato inteligente do AMM sob altas cargas e condições inesperadas. Simule grandes volumes de negociação, transações simultâneas e cenários adversos para identificar quaisquer possíveis gargalos ou vulnerabilidades.

4.3 Mitigação de riscos e tratamento de ataques

Os AMMs podem ser alvos de diversos ataques, sendo fundamental a implementação de medidas para mitigar esses riscos. Aqui estão algumas estratégias para lidar com ataques comuns:

Ataques de empréstimos instantâneos

Os ataques de empréstimo instantâneo envolvem o aproveitamento do acesso temporário ao empréstimo em uma única transação para manipular preços ou explorar desequilíbrios de liquidez. Para mitigar esse risco, considere a implementação de preços médios ponderados no tempo (TWAP) ou outros mecanismos baseados em oráculos para evitar a manipulação repentina de preços em uma única transação.

Front-Running

Os ataques de front-running envolvem a manipulação de pedidos de transação para obter uma vantagem injusta, especialmente em situações em que o invasor pode lucrar com as mudanças de preço causadas por suas próprias transações. A implementação de mecanismos como serviços de pedido de transações ou exchanges descentralizadas que priorizam o sequenciamento justo de transações pode ajudar a minimizar o impacto do front-running.

Manipulação do oráculo

Certifique-se de que os oráculos usados ​​para recuperar feeds de preços externos ou outros dados fora da cadeia sejam confiáveis ​​e seguros. Considere o uso de soluções de oráculos descentralizados ou respeitáveis ​​para minimizar o risco de ataques de manipulação do oráculo que possam afetar as determinações de preço dentro do AMM.

5. Conceitos avançados e melhorias

Os formadores de mercado automatizados evoluíram desde o início, levando a vários conceitos avançados e melhorias que aprimoram sua funcionalidade e usabilidade no ecossistema DeFi. Nesta seção, exploraremos alguns desses avanços.

5.1 Integração com outros protocolos DeFi

Os AMMs podem ser integrados a outros protocolos de finanças descentralizadas (DeFi), abrindo novas possibilidades e criando aplicações financeiras mais complexas. Por exemplo, a integração de um AMM com protocolos de empréstimos permite que os usuários troquem tokens e tomem emprestado ou emprestem ativos em uma única plataforma. Essa integração fornece liquidez aos mercados de empréstimos, permitindo a utilização eficiente do capital e aprimorando a experiência geral da DeFi.

Além disso, a integração do AMM com estratégias de yield farming (cultivo de rendimento) permite que os usuários otimizem seus retornos, fornecendo liquidez a diferentes pools e, ao mesmo tempo, ganhando recompensas adicionais. Ao combinar AMMs com outros protocolos DeFi, os desenvolvedores podem criar soluções financeiras inovadoras e abrangentes.

5.2 Soluções de escalabilidade para a 2º camada

Um dos desafios enfrentados pelos AMMs na Ethereum é a escalabilidade e os altos custos de transação devido ao congestionamento da rede. As soluções de escalabilidade da 2º camada fornecem recursos potenciais para esses problemas, movendo alguns dos requisitos computacionais e de armazenamento para fora da rede principal da Ethereum.

Os Rollups otimistas e sidechains são soluções populares de escalabilidade de 2º camada que permitem a computação fora da cadeia, garantindo a finalidade e a segurança das transações na rede principal da Ethereum. Ao utilizar soluções de escalabilidade de 2º camada, os AMMs podem reduzir significativamente os custos de transação, melhorar as velocidades de transação e aprimorar a experiência do usuário.

5.3 Otimizações e técnicas de eficiência de gás

Os custos de gás na rede Ethereum podem representar uma barreira para a adoção dos AMMs. Otimizações e técnicas de eficiência de gás ajudam a mitigar esse desafio e melhorar a eficiência geral das implementações do AMM.

Uma técnica de otimização é a troca em lote, em que várias trocas de token são agregadas em uma única transação, reduzindo o número de transações individuais e minimizando os custos de gás. Ao executar várias trocas em uma única transação, os usuários podem economizar em taxas de gás e melhorar a eficiência de suas atividades de negociação.

Além disso, projetar contratos inteligentes com eficiência de gás pode contribuir para uma melhor utilização dos recursos computacionais. Técnicas como minimizar operações de armazenamento, otimizar estruturas de dados e alavancar mecanismos de cache em nível de contrato ou de sistema podem ajudar a reduzir os custos de gás e melhorar o desempenho dos contratos do AMM.

Ao incorporar essas otimizações e técnicas de eficiência de gás, os desenvolvedores podem aprimorar a eficiência geral e a economia dos AMMs, tornando-os mais acessíveis e fáceis de usar.

6. Estudos de caso e implementações dos AMMs existentes

6.1 Uniswap

Um mergulho profundo nos contratos inteligentes: a Uniswap é um dos AMMs mais populares e amplamente utilizados. Ela opera na blockchain Ethereum e desempenhou um papel significativo na formação do cenário DeFi. Para entender os contratos inteligentes da Uniswap, exploraremos sua arquitetura, principais funções e mecanismos de troca de tokens.

Arquitetura da Uniswap: a Uniswap consiste em uma série de contratos inteligentes que trabalham juntos para facilitar as negociações descentralizadas. Os principais contratos incluem o contrato Factory, que implementa contratos de exchange individuais para cada par de negociação, e o contrato de exchange, que lida com trocas de token e gerencia pools de liquidez.

Principais funções: o contrato de exchange expõe várias funções para interagir com os pools de liquidez, como adicionar liquidez, remover liquidez e executar trocas de token. A função addLiquidity permite que os usuários depositem tokens no pool de liquidez, enquanto a função removeLiquidity permite que os usuários retirem sua parte da liquidez.

Mecanismos de troca de tokens: a funcionalidade principal da Uniswap gira em torno da troca de tokens. A função de câmbio permite que os usuários troquem um token por outro, especificando os tokens de entrada e saída, bem como o valor de negociação desejado. A Uniswap usa uma fórmula matemática baseada no modelo de Formador de Mercado de Produto Constante para determinar a execução da negociação e ajustar os preços dos tokens de acordo.

Trecho de código:

// Contrato de Factory da Uniswap
contract UniswapFactory {
address[] public exchanges;
function createExchange(address token) external returns (address) {
// Código para implantar o contrato de cãmbio e adicioná-lo a array de cãmbio
}
}
// Contrato de Cãmbio da Uniswap
contract UniswapExchange {
function addLiquidity(uint256 minLiquidity, uint256 maxTokens) external payable returns (uint256);
function removeLiquidity(uint256 amount, uint256 minTokens) external returns (uint256, uint256);
function tokenToTokenSwapInput(uint256 tokensSold, uint256 minTokensBought, uint256 minEthBought, uint256 deadline, address tokenAddress) external returns (uint256);
}
Enter fullscreen mode Exit fullscreen mode

Links:

6.2 SuchiSwap

Ramificações (forks) e inovações: a SushiSwap é um exemplo notável de um AMM voltado para a comunidade que se originou como uma ramificação da Uniswap. No entanto, a SushiSwap introduziu recursos inovadores para incentivar os provedores de liquidez e aprimorar a funcionalidade do protocolo.

Recursos da SushiSwap: a SushiSwap incorporou dois recursos principais: yield farming e migração de token. O yield farming permite que os usuários apostem (stake) seus tokens no pool de liquidez e ganhem recompensas adicionais na forma de tokens SUSHI, o token nativo da SushiSwap. A migração de token foi uma inovação significativa pela qual os provedores de liquidez da Uniswap puderam transferir suas posições para a SushiSwap e participar do novo protocolo.

Links:

6.3 Balancer

Pools de liquidez personalizáveis: a Balancer é outro AMM proeminente que oferece pools de liquidez personalizáveis, permitindo que os provedores de liquidez criem portfólios com vários tokens e pesos diferentes. Esse recurso permite estratégias de negociação mais complexas e fornece flexibilidade adicional em comparação com os AMMs tradicionais, como a Uniswap.

Funcionalidade básica da Balancer: a Balancer permite que os provedores de liquidez criem pools com até oito tokens diferentes, cada um com o peso desejado. Essa flexibilidade permite a criação de diversos pools de liquidez, como aqueles com pesos de token iguais ou aqueles com distribuições desequilibradas. A Balancer também introduziu o conceito de pools inteligentes, que ajustam dinamicamente os pesos dos tokens com base em fatores externos ou regras predefinidas.

Links:

Conclusão

Construir um Formador de Mercado Automatizado requer uma compreensão sólida dos conceitos subjacentes, modelos matemáticos e implementações de contratos inteligentes. Ao explorar os principais componentes, a matemática técnica por trás dos AMMs e as etapas práticas de implementação, os desenvolvedores podem obter o conhecimento necessário para criar suas próprias exchanges descentralizadas alimentadas por AMMs. Lembre-se de priorizar a segurança, manter-se informado sobre os avanços no campo e aproveitar os estudos de caso e recursos existentes para aprimorar suas habilidades de desenvolvimento de AMM.

Obrigado por ler! Siga para receber novas postagens e apoiar meu trabalho.


Artigo escrito por Andrew Prasaath. Traduzido por Marcelo Panegali

Latest comments (0)