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.
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).
. 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(
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.
22 Curtidas
Recompensa
22
6
Compartilhar
Comentário
0/400
BagHolderTillRetire
· 07-08 01:52
O contrato está a deixar-me com uma grande dor de cabeça.
Ver originalResponder0
RugDocScientist
· 07-05 04:24
O irmão que realmente sabe resumir tem algo a oferecer.
Ver originalResponder0
SeasonedInvestor
· 07-05 04:20
Hehe Novato amigável Não aprendeu, então não aprenda.
Ver originalResponder0
SatoshiLegend
· 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.
Sete dicas para o desenvolvimento de contratos Uniswap Guia obrigatório para Novatos
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.
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).
. 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(