[黄福鸿 李高翔 卓采标 叶宇中]
BTC(比特币)系统自2009 年1 月上线至今,仍然是区块链技术最成功的应用场景之一。然而BTC 缺乏图灵完备性,Ethereum(以太坊)结合智能合约打破了BTC的局限性。作为可编程区块链的代表,Ethereum 是一个数据丰富多样的大数据库,目前Ethereum 区块高度已超过1 800 万,整链存档空间已经超过15 400 GB,且每天以10GB 左右的速度不断增长。大数据时代的数据具有巨大价值,BTC、Ethereum 作为主流区块链系统,数据公开透明,只需搭建节点就可以进行数据同步。基于区块链的大数据分析前景广阔,可以推进智能合约安全、DApps 开发、区块链交易安全、区块链网络安全等方面的发展[1]。
然而目前以Ethereum 为代表的可编程区块链大数据分析存在较多挑战,主要有以下几个方面。
(1)建立本地节点,实现区块链点对点节点之间的数据实时同步存在挑战。目前全节点的同步数据超过15TB,即使搭建一个轻量级的节点,完全同步也需要至少一周时间以及多于800GB 的存储空间。Ethereum 区块链数据同步困难,阻碍了Ethereum 区块链大数据分析。
(2)对Ethereum 全链数据读取、解析、测量分析存在挑战。目前大多数研究都只是提取了部分数据以完成某项特定分析工作,对于Ethereum 数据全貌和实时新增的数据读取、解析、处理、测量分析的相关研究不多。
(3)缺乏对Ethereum 全链数据内容安全的探索。Ethereum具备较大冗余空间,探索Ethereum是否存在色情、诈骗、个人隐私等风险内容,究竟存在多少风险内容,这些风险内容的在Ethereum 链的准确位置是非常必要。
为解决上述问题,本文首先拟建立本地节点,开发多线程并发解析程序从节点中解析提取并构建大数据集。最后基于上述细化的数据集合进行统计测量分析,对Ethereum 区块链中的内容风险内容进行发现与定位,并进行定性和定量分析。本文剩余部分结构安排如下。第二节概述相关背景,第三节详细介绍了Ethereum 数据集构建与数据初步探索,第四节对风险内容进行分析,最后在第五节中进行了总结与展望。
Ethereum 是一个重要的区块链平台,是先进公有链的代表。整体架构如图1 所示,主要分成三部分:底层服务、核心层、顶层应用。
图1 Ethereum 架构
顶层应用包括Ethereum 客户端、智能合约、ENS、钱包等等,通过Web3j 等API 与下层进行通信。核心层包含区块链、共识算法、EVM 等核心部件,EVM 是Ethereum 主要创新,所有智能合约均运行在EVM 上,以实现复杂的代码逻辑。底层服务包含密码算法、LevelDB数据库、P2P 网络服务等。
不论是BTC 还是Ethereum 都存在可供自主写入数据的冗余空间。中本聪在创世纪区块的Coinbase 字段记录下了第一条永久信息即泰晤士报当天的新闻头条:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”。此后不断有各种信息被写入到BTC,知名矿池F2Pool 将纽约时报新闻标题写入BTC 第三次减半前最后区块中,以致敬中本聪。除了coinbase 字段,Andrew Sward 在论文研究了各种将数据嵌入BTC 的方法,包括P2SH、P2FKH、OP_RETURN、P2FK 等数据嵌入,并对各种嵌入方法的效率做对比分析[2]。文献[3]提出利用算术编码将文本或其他数据嵌入到BTC 交易之中,以达到证明数据的真实性验证和永久保存的目的。
凡事皆有两面性,少部分用户出于同样也会将色情、政治、诈骗等垃圾信息写入区块链。然而目前业界对于区块链内容安全的研究较少,Roman Matzutt 对BTC 全链的内容作了定性和定量分析[4],提取了1 557 个有内容意义的文件,并发现其中存在儿童色情内容的链接和政治敏感内容。相比于BTC,Ethereum 具备更多的冗余空间且所需权限更低,目前尚未发现有相关论文对Ethereum 全链内容做定性与定量分析,发现其风险内容,本文后面将阐述对Ethereum 内容安全的分析。
商业化的区块链浏览器如Etherscan 可用于查看具体的区块或者交易信息,并提供少量智能合约信息下载。此外,相关研究也提供了一些区块链数据查询工具与框架,例如论文[5]提出BlockSci 用于区块链数据分析。论文[6]设计了查询工具EtherQL 为Ethereumt 提供高效查询,但该工具已经停止维护更新。论文[7]提出利用Ethereum 内部机制的系统化、高保真数据探索框架DataEther。
然而,上述工具与框架要么停止更新要么对API 做了使用限制,无法用于构建Ethereum 的全量数据集。搭建个人本地节点可以解决上述问题。目前需要两种客户端来运行节点,分别是“执行客户端”和“共识客户端”。执行客户端侦听网络中广播的新交易,共识客户端实现了PoS 共识算法,使网络能够根据来自执行客户端的经过验证的数据达成一致。本文使用Geth 作为执行客户端,Prysm 作为共识客户端,搭建个人本地轻节点。
Geth 与Prysm 经过大约一周时间的稳定运行后,本地轻节点即可跟随同步主网高度,此时节点占据本地存储空间约930G。本文基于Web3j 框架丰富的Ethereum 接口提取解析了Ethereum 自上线以来的区块数据和交易数据,并将实时更新的区块数据解析入库。如表1 所示,解析的数据划分为2 个大数据集(1)block_info 数据集、(2)transaction_info 数据集。
表1 数据集
基于3.2 节中的大数据集,我们对Ethereum 数据进行了初步测量与分析。
(1)交易数据
Ethereum 刚诞生时并不活跃,在创世纪区块发生了8 893 笔交易之后,直到高度46 147 的区块才记录第一笔真正的交易。随着区块链技术的发展,Ethereum 社区也更加繁荣,交易不断增加,最多的一笔交易价值超过1 千万个Ether。如图2 所示,Ethereum 前三年的交易数量呈现指数级别增长,在2021 年达到顶峰,该年度总交易量超过4.6 亿次。
图2 交易量增长曲线图
(2)区块数据
如图3 所示,本文统计了区块高度[0,18 000 000]中单个区块中记录的交易数量情况,数据显示单个区块写入交易量为0 个的区块为1 636 154 个,从时间戳来看全部位于Ethereum 诞生之初。单个区块写入交易量最多的区块链高度为1 302 929,共计打包了1 431 笔交易。
图3 单个区块记录的交易数量分布图
(3)去中心化分析
目前以太坊区块高度超过1 800 万,其中高度区间[0,15 537 393]执行PoW 共识算法,对该区间数据去重处理得到5 624 个矿工地址,即平均每个矿工挖出约2 762 个区块。对矿工地址与挖出区块数量的分布做进一步分析。如图4 所示,横坐标是挖出区块数量的Top N 矿工地址,纵坐标是占比。可以看到Top 20 的矿工挖出的区块占比为80.00%,TOP50 的矿工挖出的区块占比接近90%。其中隶属于知名矿池Ethermine 的地址0xea674fdde714fd979 de3edf0f56aa9716b898ec8 挖出区块数量最多,达到惊人的3 271 460 个,占比21.05%。
图4 挖矿数量TopN 矿工CDF 分布图
矿工的参与度直观地衡量了区块链去中心化程度,因此我们得到一个结论,在Ethereum 区块链中,绝大部分区块由极少部分矿工(矿池)挖出,区块链的中心化程度已经高到令人担忧。当矿池联合起来算力完全可以超过51%,左右区块链走向。
(3)共识算法转换分析
2022 年9 月15 日Ethereum 网络在区块高度15 537 393触发了重大升级,共识算法正式从PoW、PoS 混行转为PoS。共识算法的转换必定对Ethereum 产生重要影响,我们基于数据集做了相关分析。
首先分析共识算法转换对于矿工的影响。测量统计数据如下,以高度15 537 393 为分界点,小于等于该高度的且成功挖到区块的不同矿工地址仅有5 624 个,十天后矿工地址新增加了2 263 个,一个月后矿工地址新增加了3 879 个。短短数天矿工数量的增长数量超过了过去数年的的增长。因此Ethereum 升级共识算法为PoS 之后,降低了挖矿门槛,鼓励了大量新的矿工加入Ethereum 网络,加强了中心化。
其次分析共识算法转换对于Ethereum 网络TPS 的影响。基于transaction_info 数据集计算共识算法切换前后两个阶段的TPS 以及整体平均TPS 得到如图5 所示。通过对数据计算证明,Ethereum 共识算法由PoW/PoS 混行转换为PoS 后,网络性能得到优化,平均TPS 从7.6 提高至12.2,提高了60.5%。
图5 升级前后TPS 对比示意图
不可篡改是区块链最重要的特性之一,因此很多用户利用区块链的冗余空间进行信息的自主写入,已达到信息上链并存证的目的。根据Ethereum 数据结构可知,当区块被挖出时,矿工拥有在该区块的“extraData”字段自主写入信息的权限。当Ethereum 交易为外部非合约调用时,用户可以在该交易的“input”字段自主写入一些附加数据。因此本文对于上链信息的分析主要基于extraData、input两个字段内容。如图6 所示,借助词云进行直观展示全量“extraData”字段内容,可以看到高频词汇均为矿池签名、矿机型号等,从另一方面印证了章节3.3 中关于该矿池挖矿数量巨大的事实。
图6 “extraData”字段词云展示
由于区块链的金融属性,数字货币诈骗层出不穷并给区块链发展带来负面影响,一些Ethereum 用户被骗后试图挽回损失。然而由于区块链的高度匿名性,受害者出于无奈只能通过交易的“input”字段向黑客发出请求或威胁,试图要求对方返还Ether。因此我们通过分析“input”字段语义可以发现一些涉嫌欺诈的Ethereum 钱包地址。
例如,“0xa773603b139Ae1c52D05b35796DF3Ee76D 8a9A2F”是一个典型的诈骗Ethereum 钱包地址,如表2所示列出了3 个(仅列出小部分)不同受害者在“input”字段请求返还被骗的Ether,直接印证了该地址可能被用于接收诈骗到的Ether。
表2 疑似涉Ether 诈骗钱包地址
本文在Ethereum 中发现并提取了约100 万个url 链接,其中图片url 超过5 万个,经过爬取以及模型算法识别,发现指向色情内容的url 超过了200 个,其中指向知名成人网站pornhub.com 链接多达22 条。例如交易hash为0xb7d54a668f95d3e444e9306ed6b6164c21f4125d2804469 fe92d6525828817ee 记录了1 个色情网站url。
Ethereum 无法直接存储图片、视频、音频等多媒体文件,因此一些用户将文件进行编码后写入Ethereum。经过我们的检测,发现在Ethereum 至少已经存在图片编码文件158 个,经过解码还原后,其中有9 张图片属于色情内容。交易hash 为0x57c2 a05bd95b0e3abf13108c2e220a8f99 4fcc173ef4497fb8a578adb3bb79d3的“input”字段经解码后如图7所示(已马赛克处理)。
图7 Ethereum经解码后存在的色情内容
本文针对区块链大数据分析存在的挑战,完成了以下三方面的工作。一是通过建立本地节点,实现了实时同步Ethereum 数据。二是实现高性能地读取解析实时数据读,从而将链上异构数据构建成良好和易于处理的实时大数据集,数据集总量超过20 亿条。三是对Ethereum 全链数据进行探索分析,包括去中心化程度分析、TPS 分析、内容安全分析等。尤其是在风险内容分析方面,大量风险内容已经存在Ethereum,我们对相关内容风险内容实现了精确定位,并进行定性和定量分析。整体来看,风险内容与在Ethereum 全部数据量中占比很小,但已经足够引起警惕。我们认为未来的区块链设计必须主动应对风险内容,以避免恶意插入风险数据。