Uniswap código revelado: 7 grandes dicas de desenvolvimento de contratos inteligentes

robot
Geração do resumo em andamento

Dicas de desenvolvimento de contratos aprendidas com o código do Uniswap

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

Web3 Novato Série: Dicas de Desenvolvimento de Contratos que Aprendi com o Código do Uniswap

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

Geralmente, o endereço obtido ao implantar um contrato parece aleatório, pois está relacionado ao nonce. Mas em algumas situações, precisamos inferir o endereço do contrato a partir do par de negociação e informações relacionadas. O Uniswap utiliza o método CREATE2 para criar contratos, adicionando um parâmetro salt, tornando o endereço do contrato gerado previsível. A lógica de geração do endereço é: 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

Uso inteligente de funções de retorno

Em certos cenários, a chamada e retorno mútuo entre contratos é muito útil. Por exemplo, no método swap do Uniswap, será chamado o swapCallback, passando a quantidade real de Tokens necessária. A parte que faz a chamada deve transferir os Tokens necessários para o pool no retorno, garantindo a integridade e segurança de toda a lógica da transação.

Utilizando a transmissão de informações de exceção, estimar transações com try catch

No contrato Quoter do Uniswap, utiliza-se try catch para envolver a execução do método swap para estimar a transação. Através do lançamento de um erro especial na função de callback e, em seguida, capturando e analisando a mensagem de erro, foi implementada a funcionalidade de estimativa de transação, sem a necessidade de modificar especificamente o método swap para a estimativa.

Resolução de problemas de precisão com grandes números

A lógica de cálculo no Uniswap utiliza frequentemente a operação de deslocamento à esquerda em 96 bits (equivalente a multiplicar por 2^96). Este método garante que as transações normais não transbordem, ao mesmo tempo que assegura a precisão. Embora teoricamente ainda haja uma perda de precisão muito pequena, na prática isso é aceitável.

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

Cálculo de rendimento do mecanismo de compartilhamento

Para registar de forma eficiente os rendimentos das taxas de transação dos LPs, a Uniswap adotou um sistema semelhante ao das ações. Ao registar a taxa total de transação e a taxa que deve ser atribuída por cada unidade de liquidez, os LPs podem retirar as taxas de transação com base na liquidez que possuem, reduzindo significativamente o consumo de gas.

Web3 Novato: Dicas de Desenvolvimento de Contratos que Aprendi com o Código do Uniswap

Uso razoável de informações off-chain

Considerando o alto custo de armazenamento em blockchain, nem todas as informações precisam ser armazenadas na blockchain ou obtidas dela. Por exemplo, a lista de pools de negociação, informações sobre pools, etc. podem ser armazenadas em bancos de dados tradicionais e sincronizadas periodicamente com os dados da blockchain. Este método pode aumentar a eficiência e reduzir os custos.

Divisão de contratos e reutilização de contratos padrão

Um projeto pode conter vários contratos realmente implementados, mesmo que apenas um contrato seja implementado, é possível dividir o código em vários contratos para manutenção através de herança. Ao mesmo tempo, utilizar contratos padrão existentes (como ERC721) pode aumentar a eficiência do desenvolvimento e melhorar a confiabilidade dos contratos.

Conclusão

A prática é o melhor método de aprendizagem. Ao tentar implementar uma versão simples de uma exchange descentralizada, é possível entender mais profundamente a implementação do código do Uniswap e aprender com a valiosa experiência de projetos reais. Para desenvolvedores interessados em aprender mais sobre o desenvolvimento de projetos Web3 e DeFi, participar de cursos práticos será uma excelente escolha.

Web3 Novato Série: Dicas de Desenvolvimento de Contrato que Aprendi com o Código do Uniswap

UNI2.32%
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
GateUser-9ad11037vip
· 15h atrás
Tutorial para novatos entrar numa posição
Ver originalResponder0
WalletManagervip
· 15h atrás
A auditoria rigorosa antes do contrato é a base da engenharia... aprender um pouco de impulso
Ver originalResponder0
SmartContractRebelvip
· 15h atrás
O desenvolvedor está vivendo do passado.
Ver originalResponder0
GateUser-a606bf0cvip
· 15h atrás
Só isso? É muito básico, não?
Ver originalResponder0
BlockchainBouncervip
· 16h atrás
Escorrega tão rápido que não consigo entender.
Ver originalResponder0
GasGuzzlervip
· 16h atrás
Mesmo que eu repita dez vezes, eu não consigo escrever.
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)