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.
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)".
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.
10 me gusta
Recompensa
10
2
Compartir
Comentar
0/400
AirdropHustler
· 07-19 11:31
Esta ola de técnicas de desarrollo se considera una venta a bajo margen para el hermano de la lluvia.
7 consejos prácticos para el desarrollo de contratos inteligentes que ayudan a los proyectos DEX
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.
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)".
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.