写点什么

谷歌宣布其 BigQuery 服务已支持以太坊区块链数据分析

  • 2018-09-12
  • 本文字数:3787 字

    阅读完需:约 12 分钟

以太坊(Ethereum)和其他加密货币吸引了技术专家、金融家和经济学家的想象力。数字货币只是底层区块链技术的一种应用。今年早些时候,我们在 Google BigQuery 中公开了比特币数据集 http://u6.gg/e3VqS )用于分析。今天我们将提供以太坊数据集

和它的前身比特币一样,你可能认为以太坊区块链是一个不可变的分布式账本。然而,创建者 Vitalik Buterin 通过包含一个虚拟机扩展了它的功能集,这个虚拟机可以执行存储在区块链上的任意代码作为智能合约。

译注:智能合约(smart contracts),是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出,但直到近年随着区块链技术的发展逐步被社会大所熟悉,智能合约的概念具备承诺、协议、数字形式三大要素,因此能够将区块链的应用范围扩展至金融行业交易、支付、结算和清算的各个环节。智能合约是指当一个预先编好的条件被触发时,智能合约会立即执行相应的合同条款,其工作原理类似于计算机程序的 if-then 语句。

就系统架构而言,以太坊与比特币的相似之处在于,它主要用于记录不可变的交易。两者本质上都是 OLTP 数据库,并且很少提供 OLAP(分析)功能。然而,以太坊数据集明显不同于比特币数据集的地方如下:

译注: OLTP,即 Online transaction processing 缩写,意即联机交易处理。是指通过信息系统、计算机网络及数据库,以线上交易的方式处理一般即时性的作业数据,和更早期传统数据库系统大量批量的作业方式并不相同。OLTP 通常被运用于自动化的数据处理工作,如订单输入、金融业务……等反复性的日常性交易活动。和其相对的是属于决策分析层次的联机分析处理(OLAP)。

  • 以太坊区块链的主要加密经济价值单位是以太(Ether),而比特币区块链的价值单位是比特币(Bitcoin)。然而,以太坊区块链上的大部分价值转移都是由所谓的代币(token)组成的。代币由智能合约创建和管理。
  • 以太币的价值转移是精确和直接的,类似于会计分类账的借方和贷方。这与比特币的价值转移机制形成了鲜明的对比,在这种机制下,很难确定给定钱包地址的余额。
  • 地址不仅可以是保存余额的钱包,还可以包含智能合约字节码,这个字节码允许以编程方式创建协议并自动触发执行。一组协调的智能合约可以用来建立去中心化自治组织。

译注:去中心化自制组织(decentralized autonomous organization,DAO),是一个通过编码为称为智能合约的计算机程序的规则运行的组织,由计算机网络支持的无中心组织并且没有单一的领导者,是一种自主的或者是自治的组织结构。

现在,以太坊区块链数据现在可以通过 BigQuery 进行探索。所有历史数据都在ethereum_blockchain数据集中,该数据集每天都会更新。GitHub 上的 Ethereum ETL 项目包含用于从以太坊区块链中提取数据并将其加载到 BigQuery 中所有的代码,我们欢迎更多的贡献者和更多的区块链加入!

译注: ethereum_blockchain数据集: http://u6.gg/e3Vun

Ethereum ETL 的 GitHub 项目地址: https://github.com/medvedev1088/ethereum-etl

为什么要在 Google Cloud 上提供以太坊区块链数据?

虽然以太坊区块链对等软件有一个用于常用随机访问函数的 API(如检查交易状态、查找钱包交易关联以及检查钱包余额),但是 API 端点并不存在,无法方便地访问链上存储的所有数据。

也许更重要的是,也不存在用于聚合查看区块链数据的 API 端点。下面是一个示例图表,显示了总转移成本和平均交易成本(按天计算):

像这样的可视化(以及基础数据库查询) 对于指定业务决策很有用,例如从优先考虑以太坊架构本身的改进(系统是否接近容量上限并需要升级?)到资产负债表调整(钱包能以多快的速度重新平衡?)。

BigQuery 有强大的 OLAP 功能来支持这种类型的分析,一般而言,不需要额外的 API 实现。

因此,我们在 Google CLoud 上构建了一个软件系统:

  1. 将以太坊区块链与在 Google CLoud 中运行 Parity( https://github.com/paritytech/parity-ethereum )的计算机同步。
  2. 每天从以太坊区块链分类帐提取数据,包括智能合约交易的结果,例如代币传输。
  3. 对日期分区数据进行反规范化(de-normalizes),并将其存储到 BigQuery,以便进行简单且经济高效的探索。

以太坊区块链数据集也可以在 Kaggle 上获得: http://u6.gg/e3Ken 。你可以使用 BigQuery Python 客户端在 Kaggle 免费的浏览器内编码环境 Kernel( https://www.kaggle.com/kernels )中查询实时数据。派生这个示例的内核( http://u6.gg/e3Kpr ),试验你自己的 Python 代码副本。

有趣的查询与分析

下面,我们将展示一些基于以太坊数据集的有趣查询和可视化。我们的分析侧重于三个热门话题上:

  • 智能合约函数调用
  • 链上交易时间序列和交易网络
  • 智能合约函数分析

分析 1:流行的智能合约事件日志

到目前为止,以太坊区块链的主要用例是数字代币的交换。下面我们将演示如何查询数据集的交易和合约表,以找到最流行的智能合约(通过交易计数进行度量):

根据交易次数,以太坊所收藏的 10 种最受欢迎的收藏品(ERC-721 合约)是哪些?访问 http://u6.gg/e3KWH 来查看我的查询视图。

最受欢迎的 ERC-721 智能合约(按交易数量计算)是0x06012c8cf97bead5deae237070f9587f8e7a266d http://u6.gg/e3V2D ),是 CryptoKitties 游戏的主要智能合约。稍后我们将在本文中介绍游戏的一些属性。

仔细查看这个合约的源代码,它将一个 CryptoKitty 出生事件( http://u6.gg/e3LdC )记录到区块链中。您可以在日志表中查询此事件的实例: http://u6.gg/e3Ldc

我们可以将 CryptoKitty 谱系进行可视化,如下图所示,这些帐户至少拥有 10 个 CryptoKitties。颜色表示所有者,大小表示每个 CryptoKitty 的 PageRank (生殖适度(reproductive fitness)):

分析 2:交易量和交易网络

在以太坊区块链上分布着许多类型的代币,它们的分布模式随类型和时间而异。通过查看每个代币的交易活动,我们可以衡量哪些在总体上更流行,哪些在给定的时间范围内更流行。

下面是一个用于度量聚合代币统计信息的查询:按交易数量计算,10 个最流行的以太坊代币 (ERC20 contract) 是哪些?在 http://u6.gg/e3LyR 找到答案。

在#5 位置,最受欢迎的代币之一是 OmiseGO($OMG)( https://omisego.network/ ),其地址为0xd26114cd6ee289accf82350c8d8487fedb8a0c07 http://u6.gg/e3L3M )。

作为后续,访问 http://u6.gg/e3L9e ,这里有一个根据时间窗口度量代币统计(交易计数)的查询,具体来说就是 $OMG 代币传输的每日计数,以及从 Google Sheet( http://u6.gg/e3L9R )开始到 2018 年 8 月 2 日的时间序列数据的 Data Studio 可视化。

注意,在 2017 年 9 月 13 日,$OMG 接收器的数量大幅增加,而发送者的数量却没有增加。这相当于 OmiseGO Token Airdrop( https://www.omise.co/omisego-airdrop-update-3 )的开始。

由于数据在高细粒度级别上由钱包地址之间的一组传输组成,我们还可以使用有向图数据结构来推断数据。

下面是同一数据的一个可视化子集:这是前 5 万笔交易,其中至少有两个交易伙伴。在这张图中,节点(点)表示以太坊区块链上的钱包地址,边(线)表示一对地址之间的代币的聚合传输。边长与传递的代币数量大致成正比,这意味着在图中,在它们之间传递更多聚合代币的钱包更靠近。另外一组地址经常相互转换——排除其他组的成员——将聚集在一起,为清楚起见,我们对这些组进行了颜色编码。这张图是用 Gephi 绘制的,用Modularity 算法计算的分组对节点进行颜色标记。

分析 3:智能合约函数分析

我们之前提到过,以太坊区块链上的许多智能合约都是 ERC-20 合约。这是什么意思?ERC-20 简单地定义了一个智能合约可以实现的软件接口。具体来说,它由一些与代币传输相关的函数组成,在 ERC20 代币标准规范文档中有详细的描述: http://u6.gg/e3LPy

智能合约还可以实现许多其他函数。幸运的是,许多智能合约的源码可以免费使用(开源)。甚至对于那些我们没有源码的合约,我们也可以使用它从函数的名称来获得一些关于其他合约的知识,因为常用的函数名称将会共享一个公共签名。

回到前面分析 3 中讨论的 CyptoKitties,游戏玩法的主要元素是畜牧业,并且在一个育种事件中的基因混合在 CryptoKitties GeneScience 智能合约中实现:0xf97e0a5b616dffc913e72455fde9ea8bbe946a2b http://u6.gg/e3LYF )。假设我们想要找到其他游戏也实现与 CryptoKitties GeneScience 合约类似的游戏机制?我们可以使用此查询( http://u6.gg/e3LYW )中的 Jaccard 相似系数的 JavaScript UDF 实现来度量这一点。

译注: Jaccard 相似系数(Jaccard similarity coefficient),用于比较有限样本集之间的相似性与差异性。Jaccard 系数值越大,样本相似度越高。

这些结果表明,GeneScience 合约的几个早期版本( http://u6.gg/e3Mg6 )与在地址0xf97e0a5b616dffc913e72455fde9ea8bbe946a2b上的智能合约的当前版本最相似。但是也有一些其他的 (例如0xb64e6bef349a0d3e8571ac80b5ec522b417faeb6 http://u6.gg/e3MhN )的 CryptoPuppy),根据方法签名的度量,它们似乎是高度相似的合约。

原文链接: Ethereum in BigQuery: a Public Dataset for smart contract analytics

感谢杜小芳对本文的审校。

2018-09-12 18:262566
用户头像

发布了 375 篇内容, 共 197.0 次阅读, 收获喜欢 947 次。

关注

评论

发布
暂无评论
发现更多内容

一次天命之旅,见证科技自强

脑极体

AI

今日分享 | 带你领略可视化设计之美

inBuilder低代码平台

设计 可视化 可视化设计

知乎 PB 级别 TiDB 数据库集群管控实践

PingCAP

k8s #TiDB TiDB Operator

5分钟入门微信小游戏开发(二)

扬_帆_起_航

小游戏开发

Python 安装和依赖管理指南:Conda 与 Pip

敲代码不忘补水

Python 开发语言 计算机科学与技术 科学 Miniconda

Lumoz主网启航:为ETH3.0、ZK和AI提供无穷算力

股市老人

安徽医科大学卫生管理学院与和鲸科技签署“101 数智领航计划”,共拓“医学+AI”学科建设与人才培养

ModelWhale

人工智能 大数据

监控报警服务RAM授权

DashVector

数据库 向量检索 大模型

支持全量&增量迁移!YashanDB增量迁移实现原理解读

YashanDB

数据库 yashandb

【YashanDB知识库】崖山有哪些内存参数,Share Pool各个参数之间有什么关系

YashanDB

数据库 yashandb

【YashanDB知识库】GBK库,生僻字插入nvarchar2字段后乱码问题

YashanDB

数据库 yashandb

有灵AOP平台首届编程挑战赛开启在即!CCF程序员大会赠票福利限时派送中!

网易伏羲

编程 aop 网易伏羲

印记2024 | 20个“关键词”解码2024大型企业数智化

用友BIP

零代码 国产替代 用友BIP 中企出海 YonGPT

亮相2024亚马逊云科技re:Invent全球大会,伊克罗德信息荣获中国区年度创新合作伙伴奖

伊克罗德信息科技

线程池异常处理的 5 中方式

FunTester

使用 PyCharm 新建 Python 项目详解

敲代码不忘补水

Python pycharm 计算机科学与技术 科学 Miniconda

全球首本关于动物干细胞的书籍,揭秘如何延长宠物寿命

财见

网络设备日志接入观测云最佳实践

观测云

日志 网络设备

【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置

YashanDB

数据库 yashandb

【YashanDB知识库】删除用户组后,yasql不能免密登录问题

YashanDB

数据库 yashandb

如何构建成功的财务规划团队?

智达方通

企业管理 全面预算 预算管理 财务规划

Lumoz主网启航:为ETH3.0、ZK和AI提供无穷算力

加密眼界

OpenAI Realtime API 升级,集成 WebRTC 且降价 60%;豆包发布视觉理解模型,实时语音模型也将上线

声网

直播预告:OpenAI 开始拥抱 RTC!为什么 LLM+RTC 才是多模态 AI 的未来?丨RTE Dev Talk

声网

只需几步,小白也能用 AI 做出精致社交名片!

Trae

豆包MarsCode

谷歌宣布其BigQuery服务已支持以太坊区块链数据分析_语言 & 开发_Allen Day_InfoQ精选文章