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