Sete dicas práticas para o desenvolvimento de contratos inteligentes

robot
Geração do resumo em andamento

Compartilhamento de Dicas de Desenvolvimento de Contratos

Recentemente, ao participar de um projeto de desenvolvimento de uma exchange descentralizada, aprendi algumas técnicas interessantes de desenvolvimento de contratos. Essas técnicas podem ser inspiradoras para iniciantes que estão começando a desenvolver contratos inteligentes.

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

Endereço de contrato previsível

Ao usar o opcode CREATE2, podemos implantar contratos com endereços previsíveis. O método específico é adicionar o parâmetro salt ao criar o contrato:

solidez pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());

O endereço do contrato gerado desta forma pode ser deduzido a partir dos parâmetros relevantes, o que é muito útil em muitos cenários.

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

Uso inteligente de funções de callback

Em certas situações, é um padrão útil que o contrato A chame um método do contrato B, e B faça uma chamada de retorno a um determinado método de A. Por exemplo, em uma DEX, ao chamar o método swap, ele chamará o swapCallback, onde a transferência de tokens é concluída na chamada de retorno, garantindo a integridade e segurança de todo o processo de transação.

Transmitindo informações com exceções

Às vezes, é possível usar habilmente o try-catch para capturar exceções específicas e obter informações. Por exemplo, ao simular uma negociação, pode-se obter dados estimados capturando exceções específicas lançadas pelo método swap, sem precisar modificar especificamente o método swap.

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

Cálculo de grandes números garante precisão

Ao lidar com cálculos financeiros, para evitar a perda de precisão causada por operações de divisão, pode-se primeiro realizar uma operação de deslocamento à esquerda. ( é equivalente a multiplicar por 2^96). Após a conclusão do cálculo, faz-se um deslocamento à direita, garantindo assim a precisão sem transbordamento.

Cálculo de ganhos no modo Share

Para cenários que requerem a distribuição de lucros, pode-se adotar um modelo semelhante ao de dividendos de ações. Basta registrar o lucro total e o lucro a ser recebido por unidade; quando o usuário retirar, pode calcular a parte que lhe cabe com base na sua quota, evitando a atualização frequente dos registros de lucro de cada usuário.

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

Uso Razoável de Dados Off-Chain

Nem todos os dados precisam ser armazenados na blockchain. Algumas informações que não envolvem lógica de transação crítica podem ser armazenadas em bancos de dados tradicionais e acessadas através de APIs Web2, reduzindo assim custos e aumentando a eficiência.

Divisão e Reutilização de Contratos

Grandes projetos costumam dividir contratos em vários módulos, utilizando a herança em combinação. Ao mesmo tempo, é importante aproveitar os contratos padrão existentes, como o ERC721, pois isso pode aumentar a eficiência de desenvolvimento e a qualidade do código.

Essas dicas são pequenas, mas muito práticas, espero que inspirem o desenvolvimento de contratos inteligentes de todos. Para realmente dominar essas dicas, a melhor maneira é praticar pessoalmente, aplicando e vivenciando em projetos reais.

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

Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 9
  • Compartilhar
Comentário
0/400
GateUser-a180694bvip
· 5h atrás
Escreveste bem, se tivesses dado mais exemplos seria ainda melhor.
Ver originalResponder0
MetaMisfitvip
· 7h atrás
Está muito básico, não está?
Ver originalResponder0
ProbablyNothingvip
· 07-13 01:00
Estou muito preguiçoso, vou direto usar a biblioteca.
Ver originalResponder0
TeaTimeTradervip
· 07-11 02:06
Tutorial de habilidades essenciais para contratos iniciais
Ver originalResponder0
FudVaccinatorvip
· 07-11 02:04
Os que entendem, entendem. A previsão do Endereço de implantação é realmente boa.
Ver originalResponder0
HackerWhoCaresvip
· 07-11 02:03
Fui embora, fui embora. O programador iniciante vem aprender novamente.
Ver originalResponder0
SchrodingerProfitvip
· 07-11 02:03
São apenas essas dicas... já são tudo conversas habituais.
Ver originalResponder0
MonkeySeeMonkeyDovip
· 07-11 01:55
Você já é um veterano em contratos, certo? Vamos lá~
Ver originalResponder0
0xSherlockvip
· 07-11 01:51
Parece que tudo é apenas teoria.
Ver originalResponder0
Ver projetos
  • 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)