7 consejos prácticos para el desarrollo de contratos inteligentes que ayudan a los proyectos DEX

robot
Generación de resúmenes en curso

Compartir trucos para el desarrollo de contratos

Recientemente, al desarrollar un proyecto de intercambio descentralizado, he consultado algunas implementaciones de código de DEX conocidas y he aprendido varias técnicas interesantes de desarrollo de contratos. Como un principiante que acaba de adentrarse en el desarrollo de DeFi, estas técnicas me han inspirado mucho, y creo que también serán de ayuda para otros amigos que quieran aprender sobre el desarrollo de contratos inteligentes.

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

Dirección del contrato de predicción

Las direcciones de contrato que se despliegan normalmente parecen ser aleatorias, debido a su relación con el nonce. Sin embargo, en ciertos escenarios, necesitamos inferir la dirección del contrato a partir de la información de la transacción par a par. Esto se puede lograr utilizando el método CREATE2 para crear contratos, añadiendo el parámetro salt al crear el contrato. Así, la dirección generada es predecible y sigue la lógica de "nueva dirección = hash('0xFF', dirección del creador, salt, initcode)".

![Serie para principiantes de Web3: Consejos de desarrollo de contratos que aprendí del código de Uniswap](https://img-cdn.gateio.im/webp-social/moments-0aaa61a4d43aba7fdeddbc55e3665305.webp01

Uso de funciones de callback

En ciertos escenarios, es muy útil que el contrato A llame a un método del contrato B, y que B, en el método que se llama, haga una llamada de vuelta a A. Por ejemplo, en un DEX, al invocar el método swap del contrato de la piscina de transacciones, se llamará a swapCallback, pasando la cantidad real de tokens necesarios. La parte que llama necesita transferir los tokens requeridos a la piscina de transacciones en la llamada de vuelta, lo que asegura la ejecución completa y la seguridad del método swap.

Transmitir información mediante excepciones

Al estimar una operación, se puede envolver la ejecución del método swap en un bloque try-catch. Dado que no se intercambiarán realmente los Tokens durante la estimación, se producirá un error. Se puede lanzar un error especial en la función de callback, y luego capturarlo y analizar la información necesaria. Este método evita modificar específicamente el método swap para satisfacer la necesidad de estimación, lo que hace que la lógica sea más sencilla.

![Serie para principiantes en Web3: Consejos de desarrollo de contratos que aprendí del código de Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(

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

Al tratar con cálculos de precios y liquidez, para evitar la pérdida de precisión causada por la división, se puede desplazar el valor a la izquierda 96 bits ) lo que equivale a multiplicar por 2^96( y luego realizar el cálculo. Aunque teóricamente aún habrá una pequeña pérdida de precisión, está dentro de un rango aceptable.

Cálculo de ganancias por medio de Share

Para los ingresos por comisiones de los proveedores de liquidez, no es necesario registrar cada transacción. Se pueden registrar las comisiones totales y las comisiones que le corresponden a cada unidad de liquidez; al retirar, se calcula el monto que se puede retirar según la liquidez poseída. Esto es similar al principio de los dividendos de acciones.

![Serie para principiantes en Web3: Consejos de desarrollo de contratos que aprendí del código de Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(

Combinación de datos en cadena y fuera de cadena

No toda la información necesita estar en la cadena o ser obtenida de ella. Por ejemplo, la lista de transacciones y otra información se puede almacenar en bases de datos tradicionales, sincronizándose periódicamente desde la cadena. Esto puede aumentar la eficiencia y reducir costos. Por supuesto, las transacciones clave aún deben realizarse en la cadena.

División de contratos y uso de contratos estándar

Los grandes proyectos se pueden dividir en múltiples contratos desplegables, o dividir el código a través de la herencia. Al mismo tiempo, se pueden utilizar contratos estándar existentes como ERC721 para mejorar la eficiencia del desarrollo. Por ejemplo, utilizar NFT para gestionar posiciones de liquidez.

![Serie para principiantes de Web3: Consejos de desarrollo de contratos que aprendí del código de Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(

Para comprender en profundidad estas técnicas, la mejor manera es desarrollar por ti mismo una versión simplificada de un DEX. En la práctica, comprenderás más profundamente diversas ideas de diseño y aprenderás más conocimientos prácticos. Espero que estas comparticiones te inspiren y ayuden.

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
  • 2
  • Compartir
Comentar
0/400
AirdropHustlervip
· 07-19 11:31
Esta ola de técnicas de desarrollo se considera una venta a bajo margen para el hermano de la lluvia.
Ver originalesResponder0
0xSherlockvip
· 07-16 20:55
El tutorial estándar para novatos.
Ver originalesResponder0
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)