坚固的智能合同顾问是一种尖端工具,旨在扩展传统语言模型的能力,以理解和建议坚固的智能合约。该项目的核心将OpenAI的语言模型与经过验证的智能合约和全面的坚固性文档的大量存储库集成在一起,从而创建了一个专业的,上下文感知的系统,能够在智能合同开发领域提供专家见解。
该项目在弥合通用语言模型与区块链开发的细微,专业要求之间的差距方面取得了重大迈进。通过培训超过5,000份经过验证的智能合约和广泛的坚固性文档,该顾问不仅提供理论答案,而且提供了以验证的代码和文档为基础的实用,现实世界中的建议。
成功是通过系统准确解析,理解和提供有关复杂固体查询的上下文建议的能力来衡量的。这是通过精致的技术融合来实现的,每种技术都在增强系统的有效性方面发挥了至关重要的作用。


使用Etherscan.py,从Etherscan API下载了5,000个已知并验证的智能合约。这构成了我们分析的骨干,为嵌入和分析提供了现实世界中的智能合同代码。
除了智能合约外,还从Solidity Document网站上提取文档作为HTML文件,从而确保了语言模型的全面基础。
定制的Langchain检索模型处理上述数据。我创建了尺寸为1000的嵌入,重叠为1000,导致约200,000个块,以详细分析。
对于智能合约,特定于固体的解析器将合同分解为可管理的部分。对于HTML内容(坚固性的正式文档),我使用标准的文本分离器。然后将这些解析的块嵌入以进行进一步处理。
在这个项目中,配备了Text2Vec-contextionary模块的编织矢量数据库在管理和查询源自固体智能合约和文档的矢量化数据中起关键作用。诸如Weaviate之类的矢量数据库旨在处理矢量化数据 - 本质上是在多维空间中表示的数据点。这在机器学习和自然语言处理领域特别有用,在该领域中,可以将复杂的数据进行矢量化以进行有效而有意义的分析。
编织利用机器学习模型将文本数据转换为这些向量,从而可以进行高速和语义相关的搜索。在坚固的智能合同顾问的背景下,编织商店并管理坚固合同和文档的嵌入(向量表示)。这些嵌入式捕获了文本的细微含义和上下文,从而使系统能够对用户查询提供准确的,上下文感知的响应。
Text2Vec-textionary模块特别对于理解文本上下文至关重要。它允许系统在坚固性的背景下解释单词和短语背后的含义,从而增强搜索结果和响应的相关性和准确性。
编织在该项目中的作用是多方面的:
有关编织及其功能的更多信息,您可以访问其官方网站和文档:
在该项目中使用编织,可确保稳健性智能合同顾问不仅在其分析能力方面具有强大的功能,而且还具有高效且可扩展性,从而成为智能合约分析和建议的最新工具。

我对Whuang214进行了改编并显着修改了UI,此ReactJS和基于打字稿的接口类似于为我们的特定用例量身定制的ChatGpt交互模型。
这种基于Python的烧瓶API是用户查询与强大后端之间的重要桥梁。它有效地处理了与编织向量的相互作用,并利用OpenAI的GPT-4-0613模型来生成响应。 GPT-4-0613的选择是战略性的,这是由于其限制性较低,这对于在敏感主题(例如智能合约中的重新输入)方面提供了更直接和未经过滤的答案尤其有益。
对于那些有兴趣探索其他OpenAI语言模型的人,可以在OpenAI模型概述中找到综合列表。
此外,烧瓶API集成了Langchain,该框架旨在通过代理和及时的工程来增强语言模型的功能。 Langchain的模块化体系结构可以轻松整合不同的语言模型,从而使系统具有高度适应性和可扩展性。使用相同的界面,可以无缝合并其他各种语言模型,从而为响应功能提供灵活性和范围。
烧瓶,编织和Langchain的结合提供了强大,可扩展的和多功能的后端基础架构,能够以精确的精度处理复杂的查询,并在坚固的智能合约领域中提供上下文相关的响应。

Langchain代表了语言模型利用的一种革命性方法,在我们的坚固性智能合同项目中起着至关重要的作用。这是一个专门设计的框架,旨在通过使用代理和增强检索来增强语言模型的功能,例如OpenAI提供的功能。
在Langchain中,代理是模块化组件,可与语言模型进行各种相互作用。可以对它们进行编程以执行特定的任务,例如解析文本,生成查询或处理响应。这种模块化方法允许高度的自定义和灵活性,从而可以创建复杂的工作流,这些工作流可以以无与伦比的精度处理,分析和响应用户查询。
Langchain的关键特征之一是它可以执行增强检索的能力。这涉及使用语言模型来增强数据库或其他来源的信息检索。在该项目的背景下,Langchain的增强检索功能允许在编织矢量数据库中进行更复杂和上下文相关的搜索。它确保检索到的信息不仅相关,而且还针对固体智能合约的特定细微差别量身定制。
Langchain在此烧瓶API中的集成增加了一层智能和适应性。它使系统能够处理独立语言模型可能遇到的复杂,多方面的查询。通过利用语言模型的原始计算能力和Langchain提供的战略结构,该系统可以对与固体智能合约相关的广泛查询提供深入,准确且高度相关的响应。
Langchain的使用本质上将项目转变为一种更具动态,智能和响应迅速的工具,能够满足坚固开发人员和爱好者的复杂和不断发展的需求。
有关更多信息,并更深入地了解Langchain及其功能,请访问Langchain。
要与智能合同顾问进行互动,用户可以通过UI输入其查询。该系统旨在处理与固体相关的特定问题,提供详细而准确的回答。例如,询问重新进入将产生直接和信息丰富的答案。甚至您也可以询问您的代码试听。它非常适合与固体相关的问题。 UI具有CHATGPT接口的几乎相同的功能,包括注册聊天历史记录。除此之外,如果您检查控制台,您会发现llm型号的编织矢量转换。它可能是经过验证的智能合同,甚至是有关坚固性的正式文件。所有结合,检查并得出结论。

设置坚固的智能合同顾问涉及多个步骤,包括为后端和前端配置数据库,环境变量和运行服务器。以下是详细说明:
启动MongoDB并编织服务:
docker-compose up -d
设置环境变量:
.env文件,并包括以下内容: OPENAI_KEY=your_openai_key
ETHERSCAN_KEY=your_etherscan_key
MONGODB_DSN=your_mongodb_dsn
运行后端和客户端:
backend和client 。这些都需要单独启动。backend文件夹并运行: npm i
npm run dev
client端文件夹并运行相同的命令: npm i
npm run dev
下载智能合约:
contracts.csv文件,可以从Etherscan下载。etherscan.py脚本以下载5000个已验证的智能合同源代码到downloaded_contracts文件夹: python etherscan.py

weaviate_ingest.py脚本将数据块并插入编织矢量数据库: python weaviate_ingest.py

摄入HTML文件:
weaviate_ingest_htmls.py脚本: python weaviate_ingest_htmls.py
替代编织 - 使用Pinecone :
pinecone_ingest.py脚本: python pinecone_ingest.py
完成这些步骤后,您的坚固性智能合同顾问应启动并运行,准备就坚固的智能合约提供见解和建议。
欢迎所有贡献:)
固有性智能合同顾问是一种强大而创新的工具。但是,区块链和智能合同技术的领域正在不断发展,为该项目的未来增强和扩展提供了许多机会。
深入研究Yul - 中文语言:未来发展的关键领域是以太坊的中间语言Yul的纳入。通过理解和分析YUL,智能合同顾问不仅可以在固定水平上,而且可以在更精细的合同水平上提供见解。这为了解固体代码如何转化为低级操作开辟了新的途径。
OpCode级分析和气体优化:智能合同开发最具挑战性的方面之一是为气体消耗进行优化。通过扩展顾问的功能以包括OpCode级分析,开发人员可以收到有关更有效的代码模式和潜在气体优化的建议。这将涉及教授系统以了解OpCode执行成本的微妙之处以及它们如何在不同的智能合同方案中积累。
方便地访问LLM对低级编码的支持:增强顾问,为低级编码实践提供方便且用户友好的支持。这可能涉及将专门的提示或代理集成,这些提示或代理旨在理解和建议在YUL或直接在Opcodes中进行优化。目的是使主要使用高级语言(如坚固性)的开发人员更容易使气体优化和低级编码更容易访问。
弥合高级和低级开发:通过弥合高级坚固码与低级YUL或OPCODES之间的差距,顾问可以为智能合约开发提供整体看法。这不仅包括编写有效的高级代码,还包括在区块链执行级别上理解其含义。
YUL领域和OpCode优化领域中的这些未来增强旨在为开发人员提供对智能合同的内部运作的更深入的见解。这不仅将有助于编写更有效,更具成本效益的代码,而且还有助于更好地理解以太坊的执行环境,最终导致更健壮和优化的智能合同开发。
这些增强功能旨在巩固稳固性智能合同顾问作为尖端工具,对于区块链空间中的开发人员来说是必不可少的。最终目标是创建一个动态的,智能的系统,该系统不仅可以响应当前的需求,而且可以预期并适应智能合同开发的未来趋势。
该项目根据麻省理工学院许可发布。
Deniz Umut Dereli