Siete técnicas para ayudarte a dominar el desarrollo de contratos inteligentes

Compartir consejos y experiencias sobre el desarrollo de contratos

Recientemente, al participar en un proyecto de tutorial de desarrollo de un intercambio descentralizado, aprendí muchas técnicas valiosas de desarrollo de contratos al investigar la implementación del código de Uniswap V3. Como un principiante que recién comienza en el desarrollo de contratos DeFi, estas técnicas me han inspirado bastante y creo que también serán útiles para otros principiantes que deseen aprender sobre el desarrollo de contratos.

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

Dirección de contrato predecible

Normalmente, al desplegar un contrato se obtiene una dirección aleatoria, pero en ciertos escenarios necesitamos poder predecir la dirección del contrato. Uniswap utiliza el método CREATE2 para crear contratos, añadiendo un parámetro salt, lo que permite que la dirección del contrato creado sea predecible. Esto es muy útil en escenarios como la determinación de derechos de transacción o la obtención de direcciones de pools.

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

Uso ingenioso de las funciones de devolución de llamada

En ciertos escenarios, la invocación mutua entre contratos es muy útil. Por ejemplo, en Uniswap, al llamar al método swap del contrato UniswapV3Pool, se llamará a swapCallback, pasando la cantidad real de Tokens calculada. El llamador necesita transferir los Tokens al UniswapV3Pool en la devolución de llamada, lo que asegura la ejecución completa y la seguridad del método swap.

Pasar información a través de excepciones

En el contrato Quoter de Uniswap, se utiliza un bloque try-catch para ejecutar el método swap de UniswapV3Pool. Esto se hace para simular el swap y estimar los tokens necesarios para la transacción, capturando errores específicos y analizando la información del error para obtener los datos necesarios. Este método evita la necesidad de modificar específicamente el método swap para la estimación de transacciones, haciendo que la lógica sea más sencilla.

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

Cálculo de grandes números garantiza precisión

En Uniswap se involucra una gran cantidad de cálculos. Para evitar la pérdida de precisión al realizar operaciones de división, a menudo se utiliza un desplazamiento a la izquierda de 96 bits. ( es equivalente a multiplicar por 2^96). De esta manera, se puede garantizar la precisión del cálculo en condiciones normales de transacciones sin desbordamientos. Aunque teóricamente todavía habrá una pequeña pérdida de precisión, ya es aceptable.

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

Para evitar consumir una gran cantidad de Gas al registrar la tarifa de transacción de cada LP en cada operación, Uniswap ha adoptado un método similar al de los dividendos de acciones. Solo es necesario registrar la tarifa total y la tarifa que debe asignarse por cada unidad de liquidez, y al retirar, se puede calcular la tarifa que se debe recibir según la liquidez mantenida.

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 obtenida de la cadena. Por ejemplo, la lista de transacciones pendientes y la información de los fondos se pueden almacenar en una base de datos normal y sincronizarse periódicamente desde la cadena. Las transacciones clave se realizan en la cadena, mientras que la información no clave se puede obtener de manera más eficiente para mejorar el rendimiento y la eficiencia.

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

Los grandes proyectos suelen incluir múltiples contratos desplegados en la práctica; incluso si solo se despliega un contrato, se puede dividir en varios contratos mediante herencia para su mantenimiento. Al mismo tiempo, utilizar contratos estándar existentes ( como ERC721) puede aumentar la eficiencia del desarrollo y simplificar la gestión.

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

La práctica es la mejor forma de aprender. Al implementar una versión simplificada de un intercambio descentralizado, no solo podrás entender más a fondo la implementación del código de Uniswap, sino que también aprenderás más sobre puntos clave en proyectos reales. Espero que estas experiencias compartidas te ayuden en tu camino de desarrollo de contratos.

UNI1.32%
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
LiquidityOraclevip
· 08-02 23:11
Integración de otro artículo introductorio sobre la reventa de criptomonedas
Ver originalesResponder0
WhaleWatchervip
· 08-02 19:29
Es un poco difícil de entender, ¿quién puede explicar qué es create2?
Ver originalesResponder0
RetailTherapistvip
· 07-31 02:40
Enviar esto no es mejor que escribir un dex para tomar a la gente por tonta.
Ver originalesResponder0
gas_guzzlervip
· 07-31 02:40
Predecir DIRECCIÓN esta jugada me hace reír, Santa Madre uniswap
Ver originalesResponder0
DeFiGraylingvip
· 07-31 02:35
Sin palabras, otra vez este tipo de capacitación que atrapa a los novatos...
Ver originalesResponder0
DEXRobinHoodvip
· 07-31 02:35
¡El padre del DOGE tiene razón! ¡No es un sueño pasar la vida en prisión!
Ver originalesResponder0
NightAirdroppervip
· 07-31 02:34
Hablar durante medio día no es tan bueno como ofrecer un Flash Loans~
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)