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.
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)".
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.
10 Curtidas
Recompensa
10
2
Compartilhar
Comentário
0/400
AirdropHustler
· 07-19 11:31
Esta onda de técnicas de desenvolvimento é considerada um baixo lucro e alta venda para o irmão do bloco.
7 dicas práticas para o desenvolvimento de contratos inteligentes que ajudam projetos DEX
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.
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)".
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ê.