Compartir pequeños consejos sobre el desarrollo de contratos
Recientemente, al participar en un proyecto de desarrollo de un intercambio descentralizado, aprendí algunas técnicas interesantes de desarrollo de contratos. Estas técnicas pueden ser muy inspiradoras para los principiantes que recién comienzan en el desarrollo de contratos inteligentes.
Dirección de contrato predecible
Al usar el opcode CREATE2, podemos desplegar contratos con direcciones predecibles. El método específico es agregar el parámetro salt al crear el contrato:
solidez
pool = address(nueva UniswapV3Pool{sal: keccak256(abi.encode(token0, token1, tarifa))}());
La dirección del contrato generada de esta manera se puede deducir a través de los parámetros relacionados, lo cual es muy útil en muchos escenarios.
Uso inteligente de funciones de callback
En ciertas situaciones, es un patrón útil que el contrato A llame a un método del contrato B, y luego B vuelva a llamar a un método de A. Por ejemplo, en un DEX, al llamar al método swap, se activará el swapCallback, y en la devolución de llamada se completará la transferencia del token, asegurando la integridad y seguridad del proceso de transacción.
Usar excepciones para transmitir información
A veces se puede aprovechar ingeniosamente el try-catch para capturar excepciones específicas y obtener información. Por ejemplo, al simular operaciones, se puede obtener datos estimados capturando excepciones específicas lanzadas por el método swap, sin necesidad de modificar especialmente el método swap para ello.
Cálculo de grandes números garantiza precisión
Al realizar cálculos financieros, para evitar la pérdida de precisión causada por las operaciones de división, se puede realizar primero una operación de desplazamiento a la izquierda, ( es equivalente a multiplicar por 2^96), y luego realizar un desplazamiento a la derecha después de completar el cálculo, de esta manera se puede garantizar la precisión sin que haya desbordamiento.
Cálculo de beneficios en modo de compartir
Para los escenarios que requieren la distribución de ganancias, se puede adoptar un modelo similar al de los dividendos de acciones. Solo es necesario registrar las ganancias totales y las ganancias que corresponde a cada unidad; al retirar, el usuario puede calcular su parte correspondiente según su participación, lo que evita la necesidad de actualizar frecuentemente los registros de ganancias de cada usuario.
Uso razonable de datos fuera de la cadena
No todos los datos necesitan ser almacenados en la cadena. Algunas informaciones que no involucran lógica de transacciones clave pueden almacenarse en bases de datos tradicionales y obtenerse a través de API de Web2, lo que reduce costos y mejora la eficiencia.
División y reutilización de contratos
Los proyectos grandes suelen dividir los contratos en múltiples módulos, utilizando la combinación de herencia. Al mismo tiempo, también es importante aprovechar los contratos estándar existentes, como ERC721, para mejorar la eficiencia del desarrollo y la calidad del código.
Estas técnicas, aunque pequeñas, son muy prácticas y espero que inspiren a todos en el desarrollo de contratos inteligentes. Para dominar realmente estas técnicas, la mejor manera es practicar por uno mismo y aplicarlas y experimentarlas en proyectos reales.
Ver originales
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
24 me gusta
Recompensa
24
7
Compartir
Comentar
0/400
ProbablyNothing
· hace20h
Demasiado perezoso, simplemente llamemos a la biblioteca.
Ver originalesResponder0
TeaTimeTrader
· 07-11 02:06
Tutorial de habilidades esenciales para contratos básicos
Ver originalesResponder0
FudVaccinator
· 07-11 02:04
Los que entienden, entienden. Predecir la DIRECCIÓN de despliegue realmente es atractivo.
Ver originalesResponder0
HackerWhoCares
· 07-11 02:03
Me voy, me voy. ¡Un programador novato viene a aprender de nuevo!
Ver originalesResponder0
SchrodingerProfit
· 07-11 02:03
¿Solo estas habilidades? ... Son cosas de siempre.
Compartir siete técnicas prácticas de desarrollo de contratos inteligentes
Compartir pequeños consejos sobre el desarrollo de contratos
Recientemente, al participar en un proyecto de desarrollo de un intercambio descentralizado, aprendí algunas técnicas interesantes de desarrollo de contratos. Estas técnicas pueden ser muy inspiradoras para los principiantes que recién comienzan en el desarrollo de contratos inteligentes.
Dirección de contrato predecible
Al usar el opcode CREATE2, podemos desplegar contratos con direcciones predecibles. El método específico es agregar el parámetro salt al crear el contrato:
solidez pool = address(nueva UniswapV3Pool{sal: keccak256(abi.encode(token0, token1, tarifa))}());
La dirección del contrato generada de esta manera se puede deducir a través de los parámetros relacionados, lo cual es muy útil en muchos escenarios.
Uso inteligente de funciones de callback
En ciertas situaciones, es un patrón útil que el contrato A llame a un método del contrato B, y luego B vuelva a llamar a un método de A. Por ejemplo, en un DEX, al llamar al método swap, se activará el swapCallback, y en la devolución de llamada se completará la transferencia del token, asegurando la integridad y seguridad del proceso de transacción.
Usar excepciones para transmitir información
A veces se puede aprovechar ingeniosamente el try-catch para capturar excepciones específicas y obtener información. Por ejemplo, al simular operaciones, se puede obtener datos estimados capturando excepciones específicas lanzadas por el método swap, sin necesidad de modificar especialmente el método swap para ello.
Cálculo de grandes números garantiza precisión
Al realizar cálculos financieros, para evitar la pérdida de precisión causada por las operaciones de división, se puede realizar primero una operación de desplazamiento a la izquierda, ( es equivalente a multiplicar por 2^96), y luego realizar un desplazamiento a la derecha después de completar el cálculo, de esta manera se puede garantizar la precisión sin que haya desbordamiento.
Cálculo de beneficios en modo de compartir
Para los escenarios que requieren la distribución de ganancias, se puede adoptar un modelo similar al de los dividendos de acciones. Solo es necesario registrar las ganancias totales y las ganancias que corresponde a cada unidad; al retirar, el usuario puede calcular su parte correspondiente según su participación, lo que evita la necesidad de actualizar frecuentemente los registros de ganancias de cada usuario.
Uso razonable de datos fuera de la cadena
No todos los datos necesitan ser almacenados en la cadena. Algunas informaciones que no involucran lógica de transacciones clave pueden almacenarse en bases de datos tradicionales y obtenerse a través de API de Web2, lo que reduce costos y mejora la eficiencia.
División y reutilización de contratos
Los proyectos grandes suelen dividir los contratos en múltiples módulos, utilizando la combinación de herencia. Al mismo tiempo, también es importante aprovechar los contratos estándar existentes, como ERC721, para mejorar la eficiencia del desarrollo y la calidad del código.
Estas técnicas, aunque pequeñas, son muy prácticas y espero que inspiren a todos en el desarrollo de contratos inteligentes. Para dominar realmente estas técnicas, la mejor manera es practicar por uno mismo y aplicarlas y experimentarlas en proyectos reales.