Ideias inovadoras para o desenvolvimento de contratos: inspirando-se no código do Uniswap
Recentemente, enquanto escrevia um tutorial de desenvolvimento de uma exchange descentralizada, estudei profundamente a implementação do código do Uniswap V3 e aprendi bastante. Como um desenvolvedor que já criou contratos NFT simples, esta é a minha primeira incursão no campo dos contratos DeFi. Abaixo estão algumas dicas que resumi, que acredito que serão inspiradoras para novatos no desenvolvimento de contratos.
Endereço de implantação de contrato previsível
Normalmente, o endereço obtido após a implantação do contrato parece aleatório, pois está relacionado ao nonce. No entanto, em certos cenários, precisamos inferir o endereço do contrato através de pares de negociação e informações relacionadas. O Uniswap cria contratos utilizando o método CREATE2, adicionando o parâmetro salt, tornando o endereço do contrato gerado previsível. Este método é muito útil na determinação de permissões de negociação ou na obtenção do endereço do pool.
Uso inteligente de funções de callback
Em Solidity, os contratos podem chamar uns aos outros. O método swap da Uniswap utiliza um mecanismo de callback para garantir a execução completa da lógica da transação, sem a necessidade de registros de variáveis complicados para garantir a segurança.
Informação de transmissão anormal e previsão de transações
No contrato Quoter da Uniswap, a execução do método swap é envolvida em um bloco try-catch, capturando erros específicos para estimar os tokens necessários para a transação. Este método é prático e conciso, não sendo necessário modificar o método swap apenas para prever a demanda.
Resolução de problemas de precisão com grandes números
O Uniswap usa frequentemente a operação de deslocamento à esquerda de 96 bits (equivalente a multiplicar por 2^96) durante os cálculos, para garantir precisão sem estouros. Este método é especialmente eficaz ao lidar com cálculos de preços e liquidez.
Cálculo de Lucros no Modo de Compartilhamento
Para evitar a necessidade de registrar a taxa de transação para cada fornecedor de liquidez (LP) a cada transação, o Uniswap adotou um método semelhante ao pagamento de dividendos de ações. Ao registrar a taxa total e a taxa que cada liquidez deve receber, os LPs podem calcular os lucros a que têm direito no momento da retirada com base na liquidez que possuem.
Estratégia de Obtenção de Informações na Blockchain
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 com a cadeia. Este método pode aumentar significativamente a eficiência e o desempenho.
Divisão de contratos e utilização de contratos padrão
Grandes projetos podem incluir vários contratos realmente implantados ou dividir um contrato em vários por meio de herança. O contrato NonfungiblePositionManager da Uniswap é um ótimo exemplo, pois herdou vários contratos e utilizou o contrato ERC721 padrão da OpenZeppelin.
A prática traz o verdadeiro conhecimento. Ao implementar manualmente uma versão simplificada de uma exchange descentralizada, você entenderá mais profundamente a implementação do código do Uniswap e ganhará uma experiência valiosa em projetos reais. Quer você seja um entusiasta do Web3 ou um desenvolvedor de projetos DeFi, acredito que essas dicas serão úteis para você.
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.
12 Curtidas
Recompensa
12
7
Repostar
Compartilhar
Comentário
0/400
LuckyBlindCat
· 07-19 21:04
Este código é compreensível?
Ver originalResponder0
AirdropHuntress
· 07-19 01:08
Vale a pena estudar, o código tem algo.
Ver originalResponder0
MEVEye
· 07-18 19:39
Um pouco interessante: segredos e dicas sobre contratos.
Ver originalResponder0
UncleWhale
· 07-18 19:39
Guardei para depois, será útil para aprender a desenvolver.
Ver originalResponder0
MetaMaximalist
· 07-18 19:34
uma visão fascinante sobre a sustentabilidade do protocolo. mas para ser honesto, isso é coisa de web3 101...
Ver originalResponder0
SpeakWithHatOn
· 07-18 19:23
Aprendendo, aprendendo, tudo faz cair cabelo, é muito difícil.
Análise do código Uniswap: 7 dicas de desenvolvimento de contratos para ajudar projetos de Finanças Descentralizadas
Ideias inovadoras para o desenvolvimento de contratos: inspirando-se no código do Uniswap
Recentemente, enquanto escrevia um tutorial de desenvolvimento de uma exchange descentralizada, estudei profundamente a implementação do código do Uniswap V3 e aprendi bastante. Como um desenvolvedor que já criou contratos NFT simples, esta é a minha primeira incursão no campo dos contratos DeFi. Abaixo estão algumas dicas que resumi, que acredito que serão inspiradoras para novatos no desenvolvimento de contratos.
Endereço de implantação de contrato previsível
Normalmente, o endereço obtido após a implantação do contrato parece aleatório, pois está relacionado ao nonce. No entanto, em certos cenários, precisamos inferir o endereço do contrato através de pares de negociação e informações relacionadas. O Uniswap cria contratos utilizando o método CREATE2, adicionando o parâmetro salt, tornando o endereço do contrato gerado previsível. Este método é muito útil na determinação de permissões de negociação ou na obtenção do endereço do pool.
Uso inteligente de funções de callback
Em Solidity, os contratos podem chamar uns aos outros. O método swap da Uniswap utiliza um mecanismo de callback para garantir a execução completa da lógica da transação, sem a necessidade de registros de variáveis complicados para garantir a segurança.
Informação de transmissão anormal e previsão de transações
No contrato Quoter da Uniswap, a execução do método swap é envolvida em um bloco try-catch, capturando erros específicos para estimar os tokens necessários para a transação. Este método é prático e conciso, não sendo necessário modificar o método swap apenas para prever a demanda.
Resolução de problemas de precisão com grandes números
O Uniswap usa frequentemente a operação de deslocamento à esquerda de 96 bits (equivalente a multiplicar por 2^96) durante os cálculos, para garantir precisão sem estouros. Este método é especialmente eficaz ao lidar com cálculos de preços e liquidez.
Cálculo de Lucros no Modo de Compartilhamento
Para evitar a necessidade de registrar a taxa de transação para cada fornecedor de liquidez (LP) a cada transação, o Uniswap adotou um método semelhante ao pagamento de dividendos de ações. Ao registrar a taxa total e a taxa que cada liquidez deve receber, os LPs podem calcular os lucros a que têm direito no momento da retirada com base na liquidez que possuem.
Estratégia de Obtenção de Informações na Blockchain
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 com a cadeia. Este método pode aumentar significativamente a eficiência e o desempenho.
Divisão de contratos e utilização de contratos padrão
Grandes projetos podem incluir vários contratos realmente implantados ou dividir um contrato em vários por meio de herança. O contrato NonfungiblePositionManager da Uniswap é um ótimo exemplo, pois herdou vários contratos e utilizou o contrato ERC721 padrão da OpenZeppelin.
A prática traz o verdadeiro conhecimento. Ao implementar manualmente uma versão simplificada de uma exchange descentralizada, você entenderá mais profundamente a implementação do código do Uniswap e ganhará uma experiência valiosa em projetos reais. Quer você seja um entusiasta do Web3 ou um desenvolvedor de projetos DeFi, acredito que essas dicas serão úteis para você.