O Solidity Smart-Accract Advisor é uma ferramenta de ponta projetada para estender os recursos dos modelos de idiomas tradicionais para entender e aconselhar contratos inteligentes da Solidity. Na sua essência, o projeto integra os modelos de idiomas da OpenAI com um vasto repositório de contratos inteligentes verificados e documentação abrangente de solidez, criando um sistema especializado e com reconhecimento de contexto capaz de fornecer informações especializadas no campo do desenvolvimento de contratos inteligentes.
Este projeto representa um passo significativo na ponte entre os modelos de idiomas de uso geral e os requisitos especializados e diferenciados do desenvolvimento da blockchain. Ao treinar mais de 5.000 contratos inteligentes verificados e extensa documentação de solidez, o consultor fornece não apenas respostas teóricas, mas conselhos práticos do mundo real fundamentados em código e documentação verificados.
O sucesso foi medido pela capacidade do sistema de analisar, entender e fornecer conselhos relevantes para o contexto sobre consultas complexas de solidez. Isso foi alcançado através de uma mistura sofisticada de tecnologias, cada uma desempenhando um papel crucial no aumento da eficácia do sistema.


Usando EtherScan.py, baixou 5.000 contratos inteligentes conhecidos e verificados da API EtherScan. Isso forma a espinha dorsal de nossa análise, fornecendo código de contrato inteligente do mundo real para incorporação e análise.
Juntamente com os contratos inteligentes, a documentação extraída como arquivos HTML do site de documentação da Solididade, garantindo uma base abrangente para o modelo de idioma.
O modelo de recuperação Langchain personalizado processa os dados acima. Criei pedaços de incorporação do tamanho 1000 com uma sobreposição de 1000, resultando em cerca de 200.000 pedaços para análises detalhadas.
Para contratos inteligentes, um analisador específico da solidez divide os contratos em pedaços gerenciáveis. Para o conteúdo HTML (a documentação oficial da solidez), emprego um divisor de texto padrão. Esses pedaços analisados são então incorporados para processamento adicional.
Neste projeto, o banco de dados de vetores teatrais, equipado com o módulo Text2VEC-Contextional, desempenha um papel fundamental no gerenciamento e consulta de dados vetorizados derivados de contratos e documentação inteligentes da Solidity. Os bancos de dados de vetores como o WEAVIATE são projetados para lidar com dados vetorizados-essencialmente, pontos de dados representados no espaço multidimensional. Isso é particularmente útil no campo do aprendizado de máquina e do processamento de linguagem natural, onde dados complexos podem ser vetorizados para análise eficiente e significativa.
A Weaviate utiliza modelos de aprendizado de máquina para converter dados de texto nesses vetores, permitindo pesquisas de alta velocidade e semanticamente relevantes. No contexto do consultor de contrato inteligente da Solidity, teatriam armazenam e gerencia as incorporações (representações vetoriais) de contratos e documentação de solidez. Essas incorporações capturam os significados e contextos diferenciados do texto, permitindo que o sistema forneça respostas precisas e com reconhecimento de contexto às consultas do usuário.
O módulo Text2VEC-CONTEXCIONÁRIO É CRÍTICO PARA ENCEIDAR O CONTECTO TEXTUAL. Ele permite que o sistema interprete o significado por trás das palavras e frases no contexto da solidez, aumentando a relevância e a precisão dos resultados e respostas da pesquisa.
O papel da texia neste projeto é multifacetado:
Para obter mais informações sobre o WEAVIATE e seus recursos, você pode visitar o site e a documentação deles:
O uso de texia neste projeto garante que o consultor de contrato inteligente da Solidity não seja apenas poderoso em seus recursos analíticos, mas também eficiente e escalável, tornando-o uma ferramenta de última geração para análise e conselhos de contrato inteligentes.

Adaptei e modifiquei significativamente a interface do usuário do WHUANG214, esse reactjs e interface baseada em digitação se assemelham a um modelo de interação ChatGPT, adaptado ao nosso caso de uso específico.
Esta API de Flask baseada em Python serve como uma ponte crucial entre as consultas do usuário e o poderoso back-end. Ele lida com eficientemente interações com os vetores teatrais e aproveita o modelo GPT-4-0613 do OpenAI para gerar respostas. A escolha do GPT-4-0613 é estratégica, devido à sua natureza menos restritiva, o que é particularmente benéfico para fornecer respostas mais diretas e não filtradas sobre tópicos sensíveis, como reentrância em contratos inteligentes.
Para os interessados em explorar outros modelos de idiomas do OpenAI, uma lista abrangente pode ser encontrada na visão geral do modelo do OpenAI.
Além disso, a API do Flask integra Langchain, uma estrutura projetada para aprimorar os recursos dos modelos de linguagem por meio de agentes e pronta para a engenharia. A arquitetura modular de Langchain permite fácil integração de diferentes modelos de linguagem, tornando o sistema altamente adaptável e extensível. Com a mesma interface, vários outros modelos de idiomas podem ser incorporados perfeitamente, oferecendo flexibilidade e escopo para aprimoramentos futuros nos recursos de resposta.
A combinação de frasco, teto e Langchain fornece uma infraestrutura de back -end robusta, escalável e versátil, capaz de lidar com consultas complexas com precisão e fornecer respostas contextualmente relevantes no domínio dos contratos inteligentes da solidez.

Langchain representa uma abordagem revolucionária na utilização de modelos de idiomas, desempenhando um papel vital em nosso projeto de consultor de contrato inteligente da Solidity. É uma estrutura projetada especificamente para aumentar os recursos dos modelos de idiomas, como os fornecidos pelo OpenAI, através do uso de agentes e recuperações aumentadas.
Em Langchain, os agentes são componentes modulares que permitem uma variedade de interações com os modelos de idiomas. Eles podem ser programados para executar tarefas específicas, como análise de texto, geração de consultas ou respostas de manuseio. Essa abordagem modular permite um alto grau de personalização e flexibilidade, permitindo a criação de fluxos de trabalho complexos que podem processar, analisar e responder às consultas do usuário com precisão incomparável.
Uma das principais características do Langchain é sua capacidade de realizar recuperações aumentadas. Isso envolve o uso de modelos de idiomas para aprimorar a recuperação de informações de bancos de dados ou outras fontes. No contexto deste projeto, a capacidade de recuperação aumentada de Langchain permite pesquisas mais sofisticadas e contextualmente relevantes no banco de dados de vetores teatrais. Ele garante que as informações recuperadas não sejam apenas relevantes, mas também adaptadas às nuances específicas dos contratos inteligentes da Solidity.
A integração de Langchain nesta API de frasco adiciona uma camada de inteligência e adaptabilidade. Ele capacita o sistema a lidar com consultas complexas e multifacetadas com as quais um modelo de linguagem independente pode lutar. Ao alavancar o poder computacional bruto dos modelos de linguagem e a estruturação estratégica oferecida por Langchain, o sistema pode fornecer respostas aprofundadas, precisas e altamente relevantes a uma ampla gama de consultas relacionadas aos contratos inteligentes da Solidity.
O uso de Langchain transforma essencialmente o projeto em uma ferramenta mais dinâmica, inteligente e responsiva, capaz de atender às necessidades complexas e em evolução dos desenvolvedores e entusiastas da solidez.
Para mais informações e um mergulho mais profundo em Langchain e suas capacidades, visite o Langchain.
Para interagir com o consultor de contrato inteligente, os usuários podem inserir suas consultas através da interface do usuário. O sistema foi projetado para lidar com perguntas específicas relacionadas à solidez, fornecendo respostas detalhadas e precisas. Por exemplo, perguntar sobre a reentrância produzirá respostas diretas e informativas. Ou até você pode pedir sua audição de código. Ele se encaixa perfeitamente nas perguntas relacionadas à solidacidade. A interface do usuário possui quase os mesmos recursos da interface ChatGPT, incluindo, registro para histórias de bate -papo. Além disso, se você verificar o console, descobrirá que o Modelo LLM referenciando a qual vetores da WEAVIATE. Pode ser um par de contrato inteligente verificado ou mesmo uma documentação oficial da solidez. Todos combinados, examinados e têm uma conclusão.

A configuração do Solity Smart-Accract Advisor envolve várias etapas, incluindo a configuração de bancos de dados, variáveis de ambiente e servidores de execução para o back-end e o front-end. Abaixo estão as instruções detalhadas:
Iniciando os Serviços MongoDB e Teleaviate :
docker-compose up -d
Definir variáveis de ambiente :
.env no diretório raiz do projeto Python e inclua o seguinte: OPENAI_KEY=your_openai_key
ETHERSCAN_KEY=your_etherscan_key
MONGODB_DSN=your_mongodb_dsn
Executando o back -end e o cliente :
backend e client . Cada um deles precisa ser iniciado separadamente.backend e corra: npm i
npm run dev
client e execute o mesmo comando: npm i
npm run dev
Download de contratos inteligentes :
contracts.csv , que pode ser baixado do EtherScan.etherscan.py para baixar os códigos de origem de contrato inteligente 5000 verificados na pasta downloaded_contracts : python etherscan.py

weaviate_ingest.py para reduzir os dados e insira -os no banco de dados de vetor teceviado: python weaviate_ingest.py

Ingestando arquivos HTML :
weaviate_ingest_htmls.py de uma maneira semelhante: python weaviate_ingest_htmls.py
Alternativa ao WEAVIATE - Usando Pinecone :
pinecone_ingest.py é fornecido: python pinecone_ingest.py
Depois de concluir essas etapas, seu consultor de contrato inteligente da Solidity deve estar em funcionamento, pronto para fornecer informações e conselhos sobre contratos inteligentes da Solidity.
Todas as contribuições são bem -vindas :)
O Solidity Smart-Accract Advisor, como está, é uma ferramenta robusta e inovadora. No entanto, o domínio da tecnologia blockchain e contrato inteligente está em constante evolução, apresentando inúmeras oportunidades para aprimoramentos e expansões futuras deste projeto.
Dive Deep em Yul - a linguagem intermediária : uma área -chave para o desenvolvimento futuro é a incorporação do Yul, a linguagem intermediária do Ethereum. Ao entender e analisar a YUL, o consultor de contrato inteligente pode oferecer informações não apenas no nível da solidez, mas também no nível mais granular de contratos compilados. Isso abre novos caminhos para entender como o código da solidez se traduz em operações de nível inferior.
Análise no nível da OPCode e otimização de gás : Um dos aspectos mais desafiadores do desenvolvimento de contratos inteligentes é otimizar o consumo de gás. Ao expandir os recursos do consultor para incluir análises no nível do código OPC, os desenvolvedores podem receber sugestões para padrões de código mais eficientes e possíveis otimizações de gás. Isso envolveria o ensino do sistema a entender as sutilezas dos custos de execução do código OPCode e como eles se acumulam em diferentes cenários de contrato inteligente.
Acesso conveniente ao suporte a LLM para codificação de baixo nível : aprimorando o consultor para fornecer suporte conveniente e fácil de usar para práticas de codificação de baixo nível. Isso pode envolver a integração de instruções ou agentes especializados em Langchain que são hábeis em entender e sugerir otimizações em YUL ou diretamente nos códigos de OPC. O objetivo é tornar a otimização de gás e a codificação de baixo nível mais acessível aos desenvolvedores que trabalham principalmente com idiomas de alto nível, como a solidez.
Pontendo o desenvolvimento de alto e baixo nível : ao preencher a lacuna entre o código de solidez de alto nível e o YUL ou os códigos de operação de baixo nível, o consultor pode fornecer uma visão holística do desenvolvimento de contratos inteligentes. Isso inclui não apenas escrever um código de alto nível eficiente, mas também entender suas implicações no nível de execução da blockchain.
Esses aprimoramentos futuros no campo da otimização de Yul e Opcode têm como objetivo fornecer aos desenvolvedores insights mais profundos sobre o funcionamento interno de seus contratos inteligentes. Isso não apenas ajudará a escrever um código mais eficiente e econômico, mas também contribuirá para uma melhor compreensão do ambiente de execução do Ethereum, levando a um desenvolvimento de contratos inteligentes mais robustos e otimizados.
Esses aprimoramentos visam solidificar o Solidity Smart-Accract Advisor como uma ferramenta de ponta, indispensável para os desenvolvedores no espaço da blockchain. O objetivo final é criar um sistema dinâmico e inteligente que não apenas responda às necessidades atuais, mas também antecipa e se adapta às tendências futuras no desenvolvimento de contratos inteligentes.
Este projeto é divulgado sob a licença do MIT.
Deniz Umut Dereli