El asesor de contrato inteligente Solidity es una herramienta de vanguardia diseñada para extender las capacidades de los modelos de idiomas tradicionales para comprender y asesorar sobre los contratos inteligentes de solidez. En esencia, el proyecto integra los modelos de lenguaje de OpenAI con un vasto depósito de contratos inteligentes verificados y documentación integral de solidez, creando un sistema especializado y consciente de contexto capaz de ofrecer información experta en el ámbito del desarrollo de contratos inteligentes.
Este proyecto representa un paso significativo para cerrar la brecha entre los modelos de lenguaje de uso general y los requisitos matizados y especializados del desarrollo de blockchain. Al capacitar en más de 5,000 contratos inteligentes verificados y una extensa documentación de solidez, el asesor proporciona no solo respuestas teóricas, sino también asesoramiento práctico, en el mundo real, basado en el código y la documentación verificados.
El éxito se midió por la capacidad del sistema para analizar, comprender y proporcionar consejos relevantes para el contexto sobre consultas de solidez complejas. Esto se logró a través de una combinación sofisticada de tecnologías, cada una jugando un papel crucial en la mejora de la efectividad del sistema.


Utilizando Etherscan.py, descargó 5,000 contratos inteligentes conocidos y verificados de la API de Etherscan. Esto forma la columna vertebral de nuestro análisis, proporcionando un código de contrato inteligente del mundo real para integrar y análisis.
Junto con los contratos inteligentes, la documentación extraída como archivos HTML del sitio web de documentación de solidez, asegurando una base integral para el modelo de idioma.
El modelo de recuperación de langchain personalizado procesa los datos anteriores. He creado fragmentos de incrustación de tamaño 1000 con una superposición de 1000, lo que resulta en alrededor de 200,000 fragmentos para un análisis detallado.
Para los contratos inteligentes, un analizador específico de la solidez desglosa los contratos en fragmentos manejables. Para el contenido HTML (la documentación oficial de la solidez), empleo un divisor de texto estándar. Estos trozos analizados se incrustan para su posterior procesamiento.
En este proyecto, la base de datos vectorial tejida, equipada con el módulo Text2VEC-Contextionario, juega un papel fundamental en la gestión y consulta de datos vectorizados derivados de los contratos y la documentación inteligentes de Solity Smart. Las bases de datos vectoriales como Weaviate están diseñadas para manejar datos vectorizados, esencialmente, puntos de datos representados en el espacio multidimensional. Esto es particularmente útil en el ámbito del aprendizaje automático y el procesamiento del lenguaje natural, donde los datos complejos se pueden vectorizar para un análisis eficiente y significativo.
Weaviate utiliza modelos de aprendizaje automático para convertir los datos de texto en estos vectores, lo que permite búsquedas de alta velocidad y semánticamente relevantes. En el contexto del asesor de contrato inteligente de solidez, tejen tiendas y administra las integridades (representaciones vectoriales) de los contratos y la documentación de solidez. Estas incrustaciones capturan los significados y contextos matizados del texto, lo que permite que el sistema proporcione respuestas precisas y conscientes del contexto a las consultas de los usuarios.
El módulo Text2VEC-Contextionario específicamente es crítico para comprender el contexto textual. Permite que el sistema interprete el significado detrás de las palabras y frases en el contexto de la solidez, mejorando la relevancia y precisión de los resultados y respuestas de búsqueda.
El papel de Weaviate en este proyecto es multifacético:
Para obtener más información sobre Weaviate y sus capacidades, puede visitar su sitio web y documentación oficial:
El uso de Weaviate en este proyecto garantiza que el asesor de contratos inteligentes de solidez no solo sea poderoso en sus capacidades analíticas, sino también eficiente y escalable, lo que lo convierte en una herramienta de vanguardia para el análisis y asesoramiento de contratos inteligentes.

Adapté y modifiqué significativamente la interfaz de usuario de Whuang214 Esta reactjs e interfaz basada en TypeScript se asemeja a un modelo de interacción CHATGPT, adaptado para nuestro caso de uso específico.
Esta API de frascos a base de Python sirve como un puente crucial entre las consultas de los usuarios y el poderoso backend. Maneja de manera eficiente las interacciones con los vectores tejidos y aprovecha el modelo GPT-4-0613 de OpenAI para generar respuestas. La elección de GPT-4-0613 es estratégica, debido a su naturaleza menos restrictiva, que es particularmente beneficiosa para proporcionar respuestas más directas y sin filtro sobre temas sensibles, como el reingreso en los contratos inteligentes.
Para aquellos interesados en explorar otros modelos de idiomas Operai, se puede encontrar una lista completa en la descripción general del modelo de OpenAI.
Además, la API de Flask integra Langchain, un marco diseñado para mejorar las capacidades de los modelos de idiomas a través de agentes e ingeniería rápida. La arquitectura modular de Langchain permite una fácil integración de diferentes modelos de lenguaje, lo que hace que el sistema sea altamente adaptable y extensible. Con la misma interfaz, varios otros modelos de lenguaje podrían incorporarse a la perfección, ofreciendo flexibilidad y alcance para futuras mejoras en las capacidades de respuesta.
La combinación de frascos, tejidos y langchain proporciona una infraestructura de backend robusta, escalable y versátil, capaz de manejar consultas complejas con precisión y entrega de respuestas contextualmente relevantes en el dominio de los contratos inteligentes de solidez.

Langchain representa un enfoque revolucionario en la utilización de modelos de idiomas, desempeñando un papel vital en nuestro proyecto de asesor de contrato inteligente de solidez. Es un marco diseñado específicamente para aumentar las capacidades de los modelos de idiomas, como las proporcionadas por OpenAI, mediante el uso de agentes y recuperaciones aumentadas.
En Langchain, los agentes son componentes modulares que permiten una variedad de interacciones con modelos de lenguaje. Se pueden programar para realizar tareas específicas, como texto de análisis, generar consultas o manipular respuestas. Este enfoque modular permite un alto grado de personalización y flexibilidad, lo que permite la creación de flujos de trabajo complejos que pueden procesar, analizar y responder a las consultas de los usuarios con una precisión incomparable.
Una de las características clave de Langchain es su capacidad para realizar recuperaciones aumentadas. Esto implica el uso de modelos de lenguaje para mejorar la recuperación de la información de bases de datos u otras fuentes. En el contexto de este proyecto, la capacidad de recuperación aumentada de Langchain permite búsquedas más sofisticadas y contextualmente relevantes dentro de la base de datos de vectores tejidos. Asegura que la información recuperada no solo sea relevante, sino que también se adapte a los matices específicos de los contratos inteligentes de solidez.
La integración de Langchain en esta API de frascos agrega una capa de inteligencia y adaptabilidad. Fentra al sistema para manejar consultas complejas y multifacéticas con las que podría tener un modelo de lenguaje independiente. Al aprovechar tanto el poder computacional sin procesar de los modelos de lenguaje como la estructuración estratégica ofrecida por Langchain, el sistema puede proporcionar respuestas en profundidad, precisas y altamente relevantes a una amplia gama de consultas relacionadas con los contratos inteligentes de solidez.
El uso de Langchain esencialmente transforma el proyecto en una herramienta más dinámica, inteligente y receptiva, capaz de abordar las necesidades intrincadas y en evolución de los desarrolladores y entusiastas de la solidez.
Para obtener más información y una inmersión más profunda en Langchain y sus capacidades, visite la Langchain.
Para interactuar con el asesor de contrato inteligente, los usuarios pueden ingresar sus consultas a través de la interfaz de usuario. El sistema está diseñado para manejar preguntas específicas relacionadas con la solidez, proporcionando respuestas detalladas y precisas. Por ejemplo, preguntar sobre el reingreso generará respuestas directas e informativas. O incluso puede preguntarle a su audición de código. Se ajusta perfectamente a las preguntas relacionadas con Solidty. La interfaz de usuario tiene casi las mismas capacidades de la interfaz CHATGPT, incluida las historias de registro para chat. Aparte de esto, si verifica la consola, descubrirá que el modelo LLM reformula a los vectores de Weaviate. Podría ser un par de contratos inteligentes verificados o incluso una documentación oficial de la solidez. Todo combinado, examinado y tiene una conclusión.

Configurar el asesor de contrato inteligente de solidez implica varios pasos, incluida la configuración de bases de datos, variables de entorno y en ejecución de servidores tanto para el backend como para el frontend. A continuación se muestran las instrucciones detalladas:
Comenzando MongoDB y Weaviate Services :
docker-compose up -d
Configuración de variables de entorno :
.env en el directorio raíz del proyecto Python e incluya lo siguiente: OPENAI_KEY=your_openai_key
ETHERSCAN_KEY=your_etherscan_key
MONGODB_DSN=your_mongodb_dsn
Ejecutando el backend y el cliente :
backend y client . Cada uno de estos debe comenzar por separado.backend y ejecute: npm i
npm run dev
client y ejecute el mismo comando: npm i
npm run dev
Descarga de contratos inteligentes :
contracts.csv , que se puede descargar de Etherscan.etherscan.py para descargar 5000 códigos de origen de contrato inteligente verificados en la carpeta downloaded_contracts : python etherscan.py

weaviate_ingest.py para fragmentar los datos e inserte en la base de datos de Weaviate Vector: python weaviate_ingest.py

Ingerir archivos HTML :
weaviate_ingest_htmls.py de manera similar: python weaviate_ingest_htmls.py
Alternativa a Weaviate - Uso de Pinecone :
pinecone_ingest.py : python pinecone_ingest.py
Después de completar estos pasos, su asesor de contrato inteligente de solidez debe estar en funcionamiento, listo para proporcionar información y asesoramiento sobre contratos inteligentes de solidez.
Todas las contribuciones son bienvenidas :)
El asesor de contratos inteligentes de solidez, tal como está, es una herramienta robusta e innovadora. Sin embargo, el ámbito de la tecnología de blockchain y el contrato inteligente está evolucionando constantemente, presentando numerosas oportunidades para futuras mejoras y expansiones de este proyecto.
La inmersión profunda en YUL: el lenguaje intermedio : un área clave para el desarrollo futuro es la incorporación de YUL, el lenguaje intermedio de Ethereum. Al comprender y analizar YUL, el asesor de contratos inteligentes puede ofrecer información no solo al nivel de solidez, sino también al nivel más granular de contratos compilados. Esto abre nuevas vías para comprender cómo se traduce el código de solidez en operaciones de nivel inferior.
Análisis a nivel de opcódigo y optimización de gas : uno de los aspectos más desafiantes del desarrollo de contratos inteligentes es la optimización del consumo de gas. Al expandir las capacidades del asesor para incluir el análisis de nivel de operación, los desarrolladores pueden recibir sugerencias para patrones de código más eficientes y posibles optimizaciones de gas. Esto implicaría enseñar al sistema a comprender las sutilezas de los costos de ejecución de loscodos y cómo se acumulan en diferentes escenarios de contrato inteligente.
Acceso conveniente al soporte de LLM para la codificación de bajo nivel : mejorar el asesor para proporcionar un soporte conveniente y fácil de usar para prácticas de codificación de bajo nivel. Esto podría implicar la integración de indicaciones o agentes especializados dentro de Langchain que son expertos en comprender y sugerir optimizaciones en YUL o directamente en los códigos de operación. El objetivo es hacer que la optimización de gas y la codificación de bajo nivel sean más accesibles para los desarrolladores que trabajan principalmente con idiomas de alto nivel como la solidez.
Punrando un desarrollo de alto nivel y de bajo nivel : al cerrar la brecha entre el código de solidez de alto nivel y los YUL u opcodes de bajo nivel, el asesor puede proporcionar una visión holística del desarrollo de contratos inteligentes. Esto incluye no solo escribir código eficiente de alto nivel, sino también comprender sus implicaciones en el nivel de ejecución de blockchain.
Estas mejoras futuras en el ámbito de la optimización de YUL y Opcode tienen como objetivo proporcionar a los desarrolladores una visión más profunda del funcionamiento interno de sus contratos inteligentes. Esto no solo ayudará a escribir un código más eficiente y rentable, sino que también contribuirá a una mejor comprensión del entorno de ejecución de Ethereum, lo que finalmente conduce a un desarrollo de contratos inteligente más sólido y optimizado.
Estas mejoras tienen como objetivo solidificar el asesor de contrato inteligente de solidez como una herramienta de vanguardia, indispensable para los desarrolladores en el espacio blockchain. El objetivo final es crear un sistema dinámico e inteligente que no solo responda a las necesidades actuales, sino que también anticipa y se adapte a las tendencias futuras en el desarrollo de contratos inteligentes.
Este proyecto se publica bajo la licencia MIT.
Deniz Umut Dereli