以太坊 - Zellic — 研究

  • zellic
  • 发布于 2025-03-20 18:24
  • 阅读 22

这篇文章介绍了Smart Contract Fiesta,一个开放源代码的高质量数据集,包含超过1.75亿行以太坊智能合约源代码,涵盖约15万独特合约。该数据集旨在支持区块链社区的研究与开发,并促进智能合约的安全性与工具开发。

我们很高兴地宣布发布 Smart Contract\ Fiesta↗,这是一个开源的高质量数据集,包含超过1.75亿行的以太坊智能合约源代码。这个庞大的数据集涵盖了截至2023年3月约150,000个独特的合约源,来自3000万个智能合约,是区块链社区研究人员和开发人员的重要资源。

在这里访问数据集:Smart Contract Fiesta on Hugging\ Face↗

问题

智能合约是用如Solidity等独特的、特定领域的语言编写的。这些合约通常也实现财务产品,并且对任务至关重要。与此同时,缺乏高质量的、全面的数据集用于智能合约源代码。这为寻求提高智能合约安全性的安全(和AI)研究人员及工程师带来了问题。

确实存在像 Smart Contract\ Sanctuary↗ 这样的数据集。然而,它并不一定是全面的。根据我们所知,我们的数据集应该是截至区块16860349(2023年3月19日)最完整的以太坊主网验证合约的数据集。

数据集概览

Smart Contract Fiesta包含超过1.75亿行的以太坊智能合约源代码。通过大约150,000个独特的合约源,遍布300万个经过验证的智能合约,这个数据集是区块链研究人员和开发人员的宝贵资源。

以下是关键统计数据的细分:

  • 总合约数量:30,586,657
  • 具有可用代码的合约:3,897,319 (>10%)
  • 具有代码和独特字节码的合约:149,386
  • 代码总行数(LoC):177,552,050

我们还分析了数据集内代码、注释和空行的分布情况:

  • 代码行数(LoC):90,562,628
  • 注释行数(LoC):62,503,873
  • 空行数(LoC):24,485,549

该数据集的目标

我们发布数据集时考虑了三个主要目标:

  1. 促进针对智能合约的新研究和工具开发
  2. 帮助巩固解析智能合约代码的现有工具
  3. 促进Web3社区的原则

让我们简要讨论一下这些目标。

促进新研究和工具开发

通过提供智能合约代码的全面库,我们希望消除数据相关的瓶颈并促进创新工具的创建。想象一下,训练大型语言模型(LLMs)从自然语言描述——或者法律语言——中编写智能合约,或者识别和消除错误。像这样的基础数据集促进了许多研究。我们希望这将使智能合约的开发更加安全且更易于访问。

巩固现有工具

Smart Contract Fiesta可以通过提供多样化的智能合约代码来改进现有工具。在Zellic,我们已经体验到了其好处。在构建一个内部的Solidity解析器和静态分析器(我们计划开源!)时,我们使用Smart Contract Fiesta作为测试套件。这揭示了许多出乎意料、不寻常或未记录的Solidity特性,如果没有这个压力测试,这些边缘案例可能会被忽视。这些是可以并且应该改进规范和文档的地方。

当然,我们将确保在博客中讨论这些有趣的奇特现象,请继续关注!

促进Web3原则

作为去中心化和透明性的倡导者,我们相信让数据可访问且易于使用。通过将如此大量的数据整合成一个易于下载的数据集,我们希望降低门槛,啟發社区构建更多令人难以置信的项目。我们的Web3社区从根本上是由构建者、创新者和开发者所创立的。我们相信,帮助开发者是我们最基本的回馈。

有趣的见解

仅仅基于广泛的数据集级统计数据,我们可以得出两个有趣的结论。

首先,超过10%的以太坊智能合约是经过验证的,这个比例非常高。其次,大多数经过验证的合约共享相同的字节码。我们发现只有约150,000个独特的代码哈希,而经过验证的合约有380万个。

接下来,我们检查了智能合约源代码中单词的频率分布:

一个有趣的观察是字符串0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc的频繁出现(超过64,000次)。结果发现这是EIP-1967\ implementation↗的一部分,这也是它出现频率如此之高的原因!还有几个其他地址和奇怪的字符串也出现得非常频繁。我们鼓励你在Hugging\ Face↗上探索完整的直方图。

我们是如何做到的

在Zellic,我们开发并维护着Geth的内部分叉,这是主流的以太坊全节点实现。这个分叉的一个特性是它持续记录各种有用信息,比如所有参与过交易的地址列表。通过数据提供者如Dune Analytics↗可以访问到这样的信息。然而,由于获取和查询的快速性,我们更喜欢将其保留在内部。此外,这个过程是免费的(不包括运行节点的成本)。

我们使用这个Geth分叉进行了完整的同步,逐步建立了所有已部署智能合约的列表。如果这听起来对你有用,我们还将所有合约地址的列表作为此数据集的一部分进行了发布。我们鼓励你探索——你永远不知道你可能会发现什么↗!

最后,利用该列表,我们通过运行时代码哈希去重合约。我们将这组独特的合约与在线智能合约仓库交叉引用,从而组建了这个数据集。

开始使用Smart Contract Fiesta

我们邀请你通过访问Hugging\ Face↗来探索Smart Contract Fiesta的潜力。利用这个资源帮助推动区块链社区向前发展,为更安全和创新的未来贡献力量。

喜欢这篇博客文章吗?在Twitter上分享这篇文章↗

  • 原文链接: zellic.io/blog/announcin...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
zellic
zellic
Security reviews and research that keep winners winning. https://www.zellic.io/