Sete dicas para o desenvolvimento de contratos Uniswap Guia obrigatório para Novatos

robot
Geração do resumo em andamento

Guia para Novatos em Web3: Compartilhamento de Dicas de Desenvolvimento de Contratos Uniswap

Recentemente, ao escrever um tutorial de desenvolvimento de uma troca descentralizada, consultei a implementação do código do Uniswap V3 e aprendi muitos pontos interessantes. Como um desenvolvedor que está tentando desenvolver contratos Defi pela primeira vez, essas dicas serão muito úteis para os novatos que desejam aprender a desenvolver contratos.

Web3 Novato série: Dicas de desenvolvimento de contratos que aprendi com o código Uniswap

Endereço de implantação de contrato previsível

Os endereços de contratos normalmente implantados parecem aleatórios, pois estão relacionados ao nonce. No entanto, em certas situações, precisamos inferir o endereço do contrato através de pares de negociação e informações relacionadas. O Uniswap usa o método CREATE2 para criar contratos, adicionando o parâmetro salt para que o endereço gerado seja previsível. A lógica de geração do novo endereço é: hash("0xFF", endereço do criador, salt, initcode).

![Web3 Novato série: Dicas de desenvolvimento de contratos que aprendi com o código do Uniswap](https://img-cdn.gateio.im/webp-social/moments-0aaa61a4d43aba7fdeddbc55e3665305.webp01

Utilização inteligente de funções de callback

Em certas situações, a chamada mútua entre contratos é muito útil. Por exemplo, ao chamar o método swap de uma plataforma de negociação, ele irá chamar o swapCallback, passando a quantidade real de Tokens necessários. O chamador deve transferir os Tokens necessários para o pool de negociação no callback, garantindo a integridade e a segurança de toda a lógica da transação.

Utilizando anomalias para transmitir informações

Ao estimar uma transação, algumas plataformas envolvem a execução do método swap em um try catch. Como a estimativa não resulta na troca real de Tokens, um erro é acionado. Ao lançar um erro especial na função de callback, e depois capturar e analisar a mensagem de erro, é possível obter os dados necessários. Este método evita a necessidade de modificar o método swap para estimativas de transação.

Garantia de precisão em operações com grandes números

Ao lidar com cálculos de preço e liquidez, para evitar a perda de precisão causada por operações de divisão, pode-se usar a operação de deslocamento à esquerda (equivalente a multiplicar por 2^96). Desta forma, em situações normais de negociação sem estouro, a precisão é garantida. Embora teoricamente ainda haja uma pequena perda de precisão, esta já é aceitável.

![Web3 Novato série: Pequenas dicas de desenvolvimento de contratos que aprendi com o código do Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(

Cálculo de ganhos do mecanismo Share

Para economizar no consumo de Gas, não é possível registrar a taxa de transação para cada fornecedor de liquidez em cada transação. É possível registrar a taxa total e a taxa que deve ser atribuída a cada liquidez, e a taxa que pode ser retirada é calculada com base na liquidez mantida quando o LP faz a retirada. Isso é semelhante ao mecanismo de dividendos de ações.

![Web3 Novato série: Dicas de desenvolvimento de contratos que aprendi com o código do Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(

Utilização razoável de dados off-chain

Nem todas as informações precisam ser obtidas da cadeia. Por exemplo, listas de pools de negociação, informações de pools de negociação, etc., podem ser armazenadas em bancos de dados tradicionais e sincronizadas periodicamente a partir da cadeia. Alguns fornecedores de RPC de blockchain oferecem interfaces avançadas que permitem obter dados de forma mais rápida e económica.

Divisão de Contratos e Aplicação de Contratos Padrão

O projeto pode incluir vários contratos implementados na prática, ou dividir um único contrato em vários através da herança. A utilização de contratos padrão existentes (como o ERC721) pode aumentar a eficiência do desenvolvimento. Por exemplo, algumas plataformas utilizam contratos ERC721 para gerenciar posições, facilitando a gestão e aumentando a eficiência do desenvolvimento.

A prática é o melhor método de aprendizagem. Tentar implementar uma versão simplificada de uma exchange descentralizada pode proporcionar uma compreensão mais aprofundada da implementação de código dos DEXs populares, além de aprender mais sobre conhecimentos práticos em projetos reais. Recomenda-se que os desenvolvedores interessados consultem cursos de código aberto relevantes e completem o desenvolvimento da exchange simplificada passo a passo.

![Web3 Novato série: Pequenas dicas de desenvolvimento de contratos que aprendi com o código do Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(

Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 6
  • Compartilhar
Comentário
0/400
BagHolderTillRetirevip
· 07-08 01:52
O contrato está a deixar-me com uma grande dor de cabeça.
Ver originalResponder0
RugDocScientistvip
· 07-05 04:24
O irmão que realmente sabe resumir tem algo a oferecer.
Ver originalResponder0
SeasonedInvestorvip
· 07-05 04:20
Hehe Novato amigável Não aprendeu, então não aprenda.
Ver originalResponder0
SatoshiLegendvip
· 07-05 04:17
Os detalhes técnicos não estão completamente adequados, ainda existem várias vulnerabilidades no nível de rastreabilidade... Recomenda-se consultar o código-fonte v2.
Ver originalResponder0
governance_ghostvip
· 07-05 04:03
insights valiosos收藏 后面学习用
Ver originalResponder0
UnluckyValidatorvip
· 07-05 04:00
Tantos detalhes, eu não consigo aguentar mais.
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)