7 consejos prácticos de desarrollo de contratos para impulsar proyectos DeFi

Compartir pequeños consejos para el desarrollo de contratos

Recientemente, al escribir un tutorial sobre el desarrollo de intercambios descentralizados, consulté el código de algunos proyectos conocidos y aprendí varias técnicas interesantes para el desarrollo de contratos. Como novato que intenta desarrollar contratos DeFi por primera vez, estas técnicas me han inspirado mucho y creo que también serán útiles para otros amigos que quieran aprender sobre el desarrollo de contratos.

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

Dirección de contrato predecible

Las direcciones obtenidas al desplegar un contrato suelen parecer aleatorias, debido a la relación con el nonce. Pero en ciertos escenarios, necesitamos inferir la dirección del contrato a partir de la información de la transacción, lo cual es útil para determinar los permisos de transacción o para obtener la dirección del grupo.

Un método es crear un contrato usando el método CREATE2, haciendo que la dirección generada sea predecible al agregar el parámetro salt. La lógica de generación de la nueva dirección es: 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

Uso ingenioso de funciones de devolución de llamada

En ciertos escenarios, es útil que el contrato A invoque un método del contrato B, y luego B vuelva a llamar a un método de A.

Por ejemplo, al realizar una operación, el método swap del contrato pool llamará a swapCallback, pasando la cantidad real de tokens necesarios. El llamador transferirá los tokens al pool en la devolución de llamada, lo que garantiza la seguridad e integridad del método swap, sin necesidad de registros de variables complicados.

Pasar información mediante excepciones

Al simular operaciones para estimar los tokens necesarios, se puede lanzar un error especial en la función de callback, y luego capturar ese error y extraer la información necesaria de él. De esta manera, no es necesario modificar el método de intercambio específicamente para estimar la demanda, lo que simplifica la lógica.

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

Solución de problemas de precisión con grandes números

En situaciones que involucran cálculos, para evitar la pérdida de precisión en la operación de división, se puede desplazar 96 bits a la izquierda (, lo que equivale a multiplicar por 2^96), y luego realizar la operación de división. De esta manera, se puede garantizar la precisión sin desbordamiento.

Cálculo de beneficios por método de participación

En escenarios donde se necesita registrar los ingresos de las tarifas de LP, no se puede registrar a cada LP en cada transacción, ya que esto consumiría una gran cantidad de Gas. Se puede adoptar un enfoque similar al de los dividendos de acciones, registrando solo la tarifa total y la tarifa que se debe distribuir por cada unidad de liquidez, y luego calcular según la liquidez mantenida cuando el LP retira.

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

Almacenamiento fuera de la cadena de información auxiliar

No toda la información necesita ser registrada en la cadena o recuperada de la cadena. Algunos datos no críticos, como la lista de transacciones y la información de los grupos, pueden almacenarse en bases de datos normales y sincronizarse periódicamente desde la cadena. Esto puede mejorar el rendimiento y la eficiencia.

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

Los proyectos grandes pueden dividir el contrato en múltiples partes o dividir y mantener mediante la herencia. Al mismo tiempo, se pueden reutilizar contratos estándar como ERC721 para mejorar la eficiencia del desarrollo.

Desarrollar un intercambio descentralizado básico por uno mismo puede ayudar a comprender más a fondo la aplicación de estas técnicas. Espero que estas comparticiones sean útiles para todos.

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

DEFI-2.97%
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
  • 7
  • Compartir
Comentar
0/400
HappyMinerUnclevip
· 08-04 03:00
Esto es demasiado complicado, ¿verdad? Mineros, agarren bien el hueco.
Ver originalesResponder0
SadMoneyMeowvip
· 08-03 20:33
¿No es demasiado lujoso este tipo de contrato?
Ver originalesResponder0
SandwichTradervip
· 08-01 04:28
Un nuevo flujo que no es un rug pull
Ver originalesResponder0
LayerZeroHerovip
· 08-01 03:29
Se recomienda probar directamente en dapptools y usar gas para probar de manera más confiable
Ver originalesResponder0
hodl_therapistvip
· 08-01 03:21
¿Estás seguro de que todo esto es tecnología de última generación? ... Se ve un poco anticuado.
Ver originalesResponder0
NewPumpamentalsvip
· 08-01 03:11
el nivel de sal aún no ha llegado, hermano
Ver originalesResponder0
DiamondHandsvip
· 08-01 03:10
niño que ama aprender y es malo yyds
Ver originalesResponder0
  • Anclado
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)