As habilidades e truques na desenvolvimento de contratos
Recentemente, ao estudar o desenvolvimento de exchanges descentralizadas, descobri algumas técnicas interessantes de desenvolvimento de contratos. Essas técnicas vêm de um estudo do código de uma DEX conhecida e devem ser muito úteis para iniciantes que desejam entrar no desenvolvimento de contratos inteligentes.
Endereço de contrato previsível
Normalmente, o endereço obtido ao implantar um contrato parece aleatório, sendo difícil de prever. No entanto, em certos cenários, precisamos deduzir o endereço do contrato através de informações de pares de troca, o que é muito útil para avaliar permissões de transação ou obter endereços de pools.
Pode-se criar contratos usando o método CREATE2 adicionando o parâmetro salt, tornando o endereço gerado previsível. A lógica de cálculo do novo endereço é: hash("0xFF", endereço do criador, salt, initcode).
Uso inteligente de funções de callback
Em certos cenários, é útil que o contrato A chame o método do contrato B, e o B, por sua vez, faça uma chamada de retorno ao método do A. Por exemplo, durante uma transação, o contrato do pool chamará swapCallback, passando a quantidade real de Tokens necessários, e o chamador transferirá os Tokens durante a chamada de retorno. Isso garante a integridade e a segurança de toda a lógica da transação.
Transmitir informações através de exceções
Ao estimar uma transação, pode-se envolver a execução do método swap em um try-catch. Como a estimativa não resulta em uma troca real de Tokens, ocorrerá um erro. Pode-se lançar um erro especial no callback e, em seguida, capturá-lo e analisar os dados necessários a partir da mensagem de erro. Assim, não é necessário modificar especificamente o método swap para atender à necessidade de estimativa, tornando a lógica mais simples.
A solução de precisão para grandes números
Ao lidar com cálculos de preço e liquidez, para evitar a perda de precisão em operações de divisão, pode-se primeiro deslocar 96 bits para a esquerda (, o que equivale a multiplicar por 2^96), e depois realizar o cálculo. Dessa forma, é possível garantir a precisão sem transbordo. Embora, teoricamente, ainda haja uma perda de precisão na unidade mínima, essa perda é aceitável na prática.
Cálculo de lucros no modo Share
Ao registrar os ganhos de taxas de LP, não é necessário registrar para cada LP em cada transação, pois isso consumiria uma grande quantidade de Gas. Pode-se apenas registrar a taxa total e a taxa devida por unidade de liquidez, e o valor que pode ser retirado é calculado com base na liquidez mantida no momento da retirada. Isso é semelhante ao princípio de dividendos de ações.
Armazenamento de dados off-chain
Nem todas as informações precisam ser colocadas na blockchain ou obtidas a partir dela. Listas de pools de transações, informações sobre pools, etc., podem ser armazenadas em bancos de dados tradicionais e sincronizadas regularmente com a blockchain. Isso pode aumentar a eficiência de acesso e reduzir custos. Claro, transações importantes ainda precisam ser realizadas na blockchain.
Divisão e Reutilização de Contratos
É possível dividir um projeto em vários contratos implantáveis, ou dividir o código em vários contratos para manutenção através de herança. Ao mesmo tempo, deve-se aproveitar os contratos padrão existentes, como o ERC721, para aumentar a eficiência do desenvolvimento.
Ver mais teoria não é tão útil quanto praticar pessoalmente. Tentar implementar uma versão simples de um DEX pode te ajudar a entender mais profundamente as várias técnicas de desenvolvimento de contratos. Espero que estas dicas sejam úteis na sua jornada de desenvolvimento de contratos inteligentes.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
12 gostos
Recompensa
12
8
Partilhar
Comentar
0/400
CryptoGoldmine
· 11h atrás
Os contratos são a chave, a estabilidade traz ROI.
Ver originalResponder0
DecentralizedElder
· 11h atrás
Sempre preso a aprender solidity
Ver originalResponder0
OnchainDetective
· 12h atrás
Muito bom, codifique primeiro e depois alta repentina!
Ver originalResponder0
HalfBuddhaMoney
· 12h atrás
Com estas algumas dicas, é garantido que você conseguirá aproveitar os benefícios do DEX.
Ver originalResponder0
GasFeeVictim
· 12h atrás
Basta um endereço de previsão, é suficiente.
Ver originalResponder0
0xSleepDeprived
· 12h atrás
Leitura obrigatória para desenvolvedores!! É isso mesmo!!!
Ver originalResponder0
StrawberryIce
· 12h atrás
Desenvolvedor novato, considere os pontos básicos.
7 técnicas de desenvolvimento de contratos que te ajudarão a tornar-te um especialista em DEX
As habilidades e truques na desenvolvimento de contratos
Recentemente, ao estudar o desenvolvimento de exchanges descentralizadas, descobri algumas técnicas interessantes de desenvolvimento de contratos. Essas técnicas vêm de um estudo do código de uma DEX conhecida e devem ser muito úteis para iniciantes que desejam entrar no desenvolvimento de contratos inteligentes.
Endereço de contrato previsível
Normalmente, o endereço obtido ao implantar um contrato parece aleatório, sendo difícil de prever. No entanto, em certos cenários, precisamos deduzir o endereço do contrato através de informações de pares de troca, o que é muito útil para avaliar permissões de transação ou obter endereços de pools.
Pode-se criar contratos usando o método CREATE2 adicionando o parâmetro salt, tornando o endereço gerado previsível. A lógica de cálculo do novo endereço é: hash("0xFF", endereço do criador, salt, initcode).
Uso inteligente de funções de callback
Em certos cenários, é útil que o contrato A chame o método do contrato B, e o B, por sua vez, faça uma chamada de retorno ao método do A. Por exemplo, durante uma transação, o contrato do pool chamará swapCallback, passando a quantidade real de Tokens necessários, e o chamador transferirá os Tokens durante a chamada de retorno. Isso garante a integridade e a segurança de toda a lógica da transação.
Transmitir informações através de exceções
Ao estimar uma transação, pode-se envolver a execução do método swap em um try-catch. Como a estimativa não resulta em uma troca real de Tokens, ocorrerá um erro. Pode-se lançar um erro especial no callback e, em seguida, capturá-lo e analisar os dados necessários a partir da mensagem de erro. Assim, não é necessário modificar especificamente o método swap para atender à necessidade de estimativa, tornando a lógica mais simples.
A solução de precisão para grandes números
Ao lidar com cálculos de preço e liquidez, para evitar a perda de precisão em operações de divisão, pode-se primeiro deslocar 96 bits para a esquerda (, o que equivale a multiplicar por 2^96), e depois realizar o cálculo. Dessa forma, é possível garantir a precisão sem transbordo. Embora, teoricamente, ainda haja uma perda de precisão na unidade mínima, essa perda é aceitável na prática.
Cálculo de lucros no modo Share
Ao registrar os ganhos de taxas de LP, não é necessário registrar para cada LP em cada transação, pois isso consumiria uma grande quantidade de Gas. Pode-se apenas registrar a taxa total e a taxa devida por unidade de liquidez, e o valor que pode ser retirado é calculado com base na liquidez mantida no momento da retirada. Isso é semelhante ao princípio de dividendos de ações.
Armazenamento de dados off-chain
Nem todas as informações precisam ser colocadas na blockchain ou obtidas a partir dela. Listas de pools de transações, informações sobre pools, etc., podem ser armazenadas em bancos de dados tradicionais e sincronizadas regularmente com a blockchain. Isso pode aumentar a eficiência de acesso e reduzir custos. Claro, transações importantes ainda precisam ser realizadas na blockchain.
Divisão e Reutilização de Contratos
É possível dividir um projeto em vários contratos implantáveis, ou dividir o código em vários contratos para manutenção através de herança. Ao mesmo tempo, deve-se aproveitar os contratos padrão existentes, como o ERC721, para aumentar a eficiência do desenvolvimento.
Ver mais teoria não é tão útil quanto praticar pessoalmente. Tentar implementar uma versão simples de um DEX pode te ajudar a entender mais profundamente as várias técnicas de desenvolvimento de contratos. Espero que estas dicas sejam úteis na sua jornada de desenvolvimento de contratos inteligentes.