Siete habilidades esenciales para el desarrollo de contratos DEX que todo Novato debe leer

Compartiendo trucos para el desarrollo de contratos

Recientemente, al participar en un proyecto de desarrollo de un intercambio descentralizado, consulté la implementación de código de un DEX conocido y aprendí muchos trucos útiles para el desarrollo de contratos. Como desarrollador que anteriormente se centraba principalmente en contratos NFT, esta es mi primera vez intentando el desarrollo de contratos DeFi. Aquí comparto algunos pequeños trucos que podrían ser útiles para los nuevos desarrolladores.

Serie para principiantes de Web3: pequeños consejos de desarrollo de contratos que aprendí del código de Uniswap

Dirección de contrato predecible

Normalmente, la dirección obtenida al desplegar un contrato parece aleatoria, ya que está relacionada con el nonce. Sin embargo, en ciertos escenarios, necesitamos inferir la dirección del contrato a través de la información de la transacción, lo que es muy útil para determinar los permisos de la transacción o para obtener la dirección del pool.

Una forma es usar CREATE2 para crear un contrato, haciendo que la dirección generada sea predecible al agregar el parámetro salt. La fórmula para calcular la nueva dirección es:

Nueva dirección = hash("0xFF", dirección del creador, sal, initcode)

Serie para principiantes en Web3: pequeños consejos de desarrollo de contratos que aprendí del código de Uniswap

Uso inteligente de funciones de retorno

Los contratos en Solidity pueden llamarse entre sí. En ciertos escenarios, el método A llama al B, y B hace una llamada de retorno a A en el método llamado; este patrón es muy útil.

Por ejemplo, al realizar una transacción en un DEX, el método swap del contrato de pool llamará a swapCallback, pasando la cantidad real de tokens necesarios. El llamador debe transferir los tokens en la devolución de llamada, en lugar de dividir el swap en múltiples llamadas. Esto garantiza la integridad y seguridad del método swap.

Transmitir información mediante excepciones

En el código de un DEX, se utiliza un bloque try-catch para envolver el método swap del contrato del pool para simular transacciones y estimar los tokens necesarios. Dado que no se intercambian realmente los tokens durante la estimación, se generará un error. Al lanzar un error especial en el callback, y luego capturar y analizar la información del error, se puede obtener el resultado estimado.

Esta técnica evita la necesidad de modificar específicamente el método swap para estimar la demanda, manteniendo la lógica sencilla.

Serie para principiantes en Web3: Consejos de desarrollo de contratos que aprendí del código de Uniswap

Problemas de precisión en el manejo de grandes números

Al calcular precios y liquidez, para evitar la pérdida de precisión en las operaciones de división, se puede desplazar a la izquierda 96 bits (, lo que equivale a multiplicar por 2^96) antes de realizar la operación. De esta manera, se puede garantizar la precisión siempre que las transacciones normales no desborden.

Cálculo de ingresos en modo Share

Al registrar las ganancias de las tarifas de los LP, no se puede registrar cada transacción para cada LP, ya que esto consumiría una gran cantidad de Gas. Una solución es registrar la tarifa total y la tarifa que debe ser asignada por cada unidad de liquidez. Al retirar los LP, se calculan las tarifas extraíbles en función de la liquidez mantenida, similar a los dividendos de acciones.

Serie para principiantes en Web3: Consejos de desarrollo de contratos que aprendí del código de Uniswap

Combinación de datos en cadena y fuera de cadena

No toda la información necesita ser almacenada en la cadena o recuperada de la misma. Por ejemplo, la lista de piscinas, la información de las piscinas, etc., se pueden almacenar en una base de datos común y sincronizarse periódicamente desde la cadena. Esto puede mejorar el rendimiento y la eficiencia. Por supuesto, las transacciones clave aún deben llevarse a cabo en la cadena.

División y reutilización de contratos

Los grandes proyectos pueden incluir múltiples contratos realmente implementados. Incluso si solo se implementa un contrato, se puede dividir en múltiples contratos a través de la herencia para facilitar el mantenimiento. Al mismo tiempo, aprender a utilizar contratos estándar existentes como ERC721 puede mejorar la eficiencia del desarrollo.

La práctica es la mejor manera de aprender. Al implementar una versión simple de un DEX, se puede entender más profundamente la implementación del código de ciertos proyectos complejos y aprender más sobre los puntos de conocimiento en proyectos reales. Espero que estos pequeños consejos sean útiles para los principiantes que desean aprender desarrollo de contratos.

Serie para principiantes de Web3: Consejos de desarrollo de contratos que aprendí del código de Uniswap

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • 10
  • Republicar
  • Compartir
Comentar
0/400
DiamondHandsvip
· 08-08 22:41
create2 moneda directa
Ver originalesResponder0
UnluckyMinervip
· 08-07 07:50
Envía más fragmentos de código.
Ver originalesResponder0
BridgeJumpervip
· 08-07 04:50
Copiar también es un arte.
Ver originalesResponder0
nft_widowvip
· 08-06 21:36
Buena publicación, debe ser apoyada.
Ver originalesResponder0
LiquidityWizardvip
· 08-05 23:03
DIRECCIÓN预测很关键呢
Ver originalesResponder0
ImpermanentLossFanvip
· 08-05 23:01
Las letras son demasiado pocas, no son suficientes para ver.
Ver originalesResponder0
LightningLadyvip
· 08-05 23:01
perspectivas valiosas llenas de contenido
Ver originalesResponder0
DeFi_Dad_Jokesvip
· 08-05 22:50
Resaltar y coleccionar para ver
Ver originalesResponder0
gas_fee_therapistvip
· 08-05 22:45
gas es demasiado valioso
Ver originalesResponder0
PaperHandSistervip
· 08-05 22:43
subir conocimientos, hermanos
Ver originalesResponder0
Ver más
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)