7 dicas práticas para o desenvolvimento de contratos inteligentes que ajudam projetos DEX

robot
Geração do resumo em andamento

Partilha de Dicas de Desenvolvimento de Contratos

Recentemente, ao desenvolver um projeto de exchange descentralizada, referenciei algumas implementações de código de DEXs conhecidas e aprendi várias técnicas interessantes de desenvolvimento de contratos. Como um novato que acaba de entrar no desenvolvimento DeFi, essas técnicas me trouxeram muitas inspirações e acredito que também ajudarão outros amigos que desejam aprender sobre desenvolvimento de contratos inteligentes.

Série para iniciantes em Web3: Dicas de desenvolvimento de contratos que aprendi com o código do Uniswap

Endereço do contrato de previsão

Os endereços de contratos geralmente implantados parecem aleatórios, pois estão relacionados ao nonce. No entanto, em certos cenários, precisamos deduzir o endereço do contrato a partir das informações da transação. Isso pode ser alcançado utilizando o método CREATE2 para criar o contrato, adicionando o parâmetro salt ao criar o contrato. Assim, o endereço gerado é previsível, seguindo a lógica "novo endereço = hash('0xFF', endereço do criador, salt, initcode)".

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

Utilizando funções de callback

Em certos cenários, é muito útil que o contrato A chame o método do contrato B, e que B faça um callback para A no método chamado. Por exemplo, em um DEX, quando se chama o método swap do contrato do pool de liquidez, ele irá fazer um callback para swapCallback, passando a quantidade real de Tokens necessária. O chamador precisa transferir os Tokens necessários para o pool de liquidez no callback, garantindo assim a execução completa e a segurança do método swap.

Usar exceções para transmitir informações

Ao estimar uma transação, é possível envolver a execução do método swap em um bloco try-catch. Como na estimativa não haverá troca real de Tokens, um erro será gerado. É possível lançar um erro especial na função de chamada e, em seguida, capturá-lo e extrair as informações necessárias. Este método evita a necessidade de modificar o método swap especificamente para a estimativa, tornando a lógica mais simples.

![Web3 Novato Série: Dicas de Desenvolvimento de Contrato que Aprendi com o Código do Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(

Problemas de precisão no processamento de grandes números

Ao lidar com cálculos de preços e liquidez, para evitar a perda de precisão causada pela divisão, pode-se primeiro deslocar o valor 96 posições para a esquerda ), equivalente a multiplicar por 2^96(, antes de realizar o cálculo. Embora teoricamente ainda haja uma pequena perda de precisão, esta está dentro de um intervalo aceitável.

Cálculo de rendimento por meio de compartilhamento

Para os provedores de liquidez, os ganhos em taxas não precisam ser registrados a cada transação. Pode-se registrar a taxa total e a taxa que cada unidade de liquidez deve receber, e o montante retirável é calculado com base na liquidez mantida no momento da retirada. Isso é semelhante ao princípio dos 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(

Combinação de dados on-chain e off-chain

Nem toda a informação precisa ser colocada na blockchain ou obtida a partir dela. Por exemplo, listas de pools de transações e informações podem ser armazenadas em bancos de dados tradicionais e sincronizadas periodicamente com a blockchain. Isso pode aumentar a eficiência e reduzir custos. Claro que transações chave ainda precisam ser realizadas na blockchain.

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

Grandes projetos podem ser divididos em vários contratos que são realmente implantados ou podem dividir o código através da herança. Ao mesmo tempo, é possível utilizar contratos padrão existentes como o ERC721 para aumentar a eficiência do desenvolvimento. Por exemplo, usando NFTs para gerenciar posições de liquidez.

![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-f95ddc9d89809cf11dbe65b9bafda157.webp(

Para entender profundamente estas técnicas, a melhor maneira é desenvolver um DEX simples por conta própria. Na prática, você compreenderá mais profundamente as várias abordagens de design e aprenderá mais conhecimentos práticos. Espero que estas partilhas sejam inspiradoras e úteis para você.

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
  • 2
  • Compartilhar
Comentário
0/400
AirdropHustlervip
· 07-19 11:31
Esta onda de técnicas de desenvolvimento é considerada um baixo lucro e alta venda para o irmão do bloco.
Ver originalResponder0
0xSherlockvip
· 07-16 20:55
Parece um tutorial padrão para novatos.
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)