7 dicas práticas de desenvolvimento de contratos para ajudar projetos DeFi

Partilha de Dicas para Desenvolvimento de Contratos

Recentemente, ao escrever um tutorial de desenvolvimento de exchanges descentralizadas, consultei a implementação de código de alguns projetos conhecidos e aprendi várias técnicas interessantes de desenvolvimento de contratos. Como um novato que está tentando desenvolver contratos DeFi pela primeira vez, essas técnicas foram muito inspiradoras para mim e acredito que também ajudarão outros amigos que desejam aprender sobre desenvolvimento de contratos.

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

Endereço de contrato previsível

Normalmente, o endereço obtido ao implantar um contrato parece aleatório, devido ao nonce. Mas em certos cenários, precisamos inferir o endereço do contrato a partir de informações de transação, o que é útil para determinar permissões de transação ou obter o endereço do pool.

Uma forma é usar o método CREATE2 para criar contratos, tornando o endereço gerado previsível ao adicionar o parâmetro salt. A lógica para a geração do 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

Uso inteligente de funções de callback

Em certos cenários, é útil que o contrato A chame o método do contrato B e que B faça um callback ao método de A.

Por exemplo, ao negociar, o método swap do contrato pool chamará swapCallback, passando a quantidade real de Tokens necessária. O chamador, na callback, transferirá os Tokens para o pool, o que garante a segurança e a integridade do método swap, sem necessidade de registos de variáveis complicados.

Usar exceções para transmitir informações

Ao simular transações para estimar os Tokens necessários, é possível lançar erros especiais dentro da função de retorno de chamada e, em seguida, capturar esses erros e extrair as informações necessárias. Assim, não é necessário modificar o método de swap especificamente para a estimativa de demanda, tornando a lógica mais simples.

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

Resolver problemas de precisão com grandes números

Em cenários que envolvem cálculos, para evitar a perda de precisão em operações de divisão, pode-se primeiro deslocar à esquerda 96 bits (, o que é equivalente a multiplicar por 2^96), e então realizar a operação de divisão. Desta forma, é possível garantir a precisão sem transbordamentos.

Cálculo de ganhos por meio de compartilhamento

Para cenários que precisam registrar os ganhos de taxa de LP, não é viável registrar a cada transação para cada LP, pois isso consumiria uma grande quantidade de Gas. Pode-se adotar um método semelhante ao pagamento de dividendos de ações, registrando apenas a taxa total e a taxa que deve ser atribuída a cada unidade de liquidez, e, ao retirar, calcular com base na liquidez detida.

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

Armazenamento off-chain de informações auxiliares

Nem toda a informação precisa ser colocada na blockchain ou obtida dela. Alguns dados não críticos, como listas de pools de negociação e informações sobre pools, podem ser armazenados em bases de dados comuns, sendo sincronizados periodicamente com a blockchain. Isso pode aumentar o desempenho e a eficiência.

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

Grandes projetos podem dividir contratos em múltiplos ou mantê-los por meio de herança. Ao mesmo tempo, contratos padrão como o ERC721 podem ser reutilizados, aumentando a eficiência do desenvolvimento.

Desenvolver um intercâmbio descentralizado simples pode ajudar a entender mais profundamente a aplicação dessas técnicas. Espero que estas partilhas sejam úteis para todos.

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

DEFI-6.55%
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
  • 7
  • Compartilhar
Comentário
0/400
HappyMinerUnclevip
· 08-04 03:00
Isto é demasiado complexo. Todos os mineiros, preparem-se para a tarefa.
Ver originalResponder0
SadMoneyMeowvip
· 08-03 20:33
Este modo de contrato é demasiado luxuoso, não é?.
Ver originalResponder0
SandwichTradervip
· 08-01 04:28
Um novo fluxo que não é rug pull.
Ver originalResponder0
LayerZeroHerovip
· 08-01 03:29
Sugiro usar diretamente o dapptools para testes, usar gás para testar é mais confiável.
Ver originalResponder0
hodl_therapistvip
· 08-01 03:21
Tem certeza de que tudo isso é tecnologia de ponta? Parece um pouco ultrapassado.
Ver originalResponder0
NewPumpamentalsvip
· 08-01 03:11
o nível de sal ainda não chegou, irmão
Ver originalResponder0
DiamondHandsvip
· 08-01 03:10
Novo e ama aprender yyds
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)