Qtum基于谷歌BigQuery发布可视化链上数据服务,精准数据采集与智能分析

量子链区块大康2019-06-29 09:15:31  阅读 -评论 0  阅读原文

01

概述

Qtum 量子链作为一个以技术革新为主导的创新公链,一直将推动区块链的技术发展和应用落地为己任。量子链研究院一直在探索区块链上的各种创新方式,其中基于Google Cloud进行的对区块链云计算大数据方向的创新探究一直在稳步推进。继Google Cloud推出Qtum开发工具包后,Qtum量子链结合Google Cloud强大的数据分析能力与丰富的云平台功能,基于数据分析工具BigQuery再次推出了一个重量级数据分析服务——Qtum链上数据分析

Qtum量子链是全球首个基于PoS共识机制和UXTO模型的智能合约平台。其账户抽象层实现了UTXO模型与智能合约虚拟机账户模型的的无缝交互,实现了区块链技术与真实的商业世界的完美融合。最新数据显示(截止到2019年5月),截止至5月30日地址数总量为1648035个,在一个月内增长67596个,平均每日增长2253.2个。网络权重变化整体较稳定,挖矿平均年回报率为7.87%[1]。Qtum x86虚拟机、完善的DGP链上治理以及Qtum与金融、医疗、文娱、游戏等多领域的融合,使Qtum量子链逐渐成为全球最有影响力的项目之一。

主流货币的数据全是公开透明的,我们可以用 blockchain.com、etherscan.io 、qtum.info等开放的区块链浏览器查询交易、余额等基本信息。但若想对链上数据进行统计分析并不容易,例如每日的交易量、全网算力等等,需要对历史的所有区块、交易进行数据统计才能得到。

本文就基于BigQuery实现了Qtum链上数据的统计、分析以及可视化展现,将Qtum的各项指标更为直观地呈现给用户。最终效果参见网址:https://chart.qtum.info/

(点击阅读原文或复制浏览器 )

02

背景

BigQuery [2] 是Google Cloud最新推出的数据分析工具。它是一个基于列存储的数据库系统。列存储和行存储的区别可以用下图很好地表示。

列存储和行存储有着各自的优缺点,适用于不同的场合。从下表中可以很明显地看出,列存储可以有效应用于数据统计中。因为数据统计通常需要把大量的数据(列如用户日志)加载进表里,然后对逐个字段进行筛选和统计。这个场景和列存储的应用场景是完全符合的。


行存储

列存储

优点

INSERT和UPDATE容易

SELECT时只有涉及的列会被读取,所有列都能作为索引

缺点

SELECT操作即使只涉及较少的列,所有的列都会被读取

INSERT和UPDATE麻烦

应用

频繁的写和更新操作,SELECT操作涉及较少的行较多的列

SELECT操作涉及较多的行较少的列,大多数列都需要建立索引

目前开源的列存储数据库并不多,主流的包括HBase、ClickHouse等。而各大互联网公司都会研发自己的闭源列存储数据库。BigQuery就是Google研发的列存储数据库,目前在Google Cloud上可以使用,主要按照SELECT操作涉及的数据量大小进行收费。

由于列存储数据库能很好地应用于数据统计的场景中,所以我们采用BigQuery进行Qtum链上数据的分析,以便更好地了解区块、交易等数据。BigQuery也经常宣传自己在区块链数据方面的应用[3]。

03

架构

本系统分为上中下三层:

  • 下层为数据源部分。运行在服务端的Qtum节点开启了RPC服务。ETL(Extract-Transform-Load )程序会持续从RPC获取链上数据,然后输出给中间层。
  • 中间层用BigQuery实现数据存储和计算。运行在服务端的定时任务会持续往BigQuery中写入最新的链上数据。然后,用SQL对数据进行统计分析,写入上层的Redis中。
  • 上层是前端展示部分。Flask框架从Redis中读取数据返回给前端。前端通过在React框架中嵌入的Echarts工具,用来展示Qtum链上数据的统计分析结果。

数据源

数据源部分由Qtum节点和ETL程序组成。Qtum全节点实时同步最新的链上数据。ETL程序通过RPC接口获取链上数据,最终写入本地CSV(Comma-Separated Values)文件。流程图如下:

ETL详细步骤如下:

  1. 启动Qtum全节点和ETL程序;
  2. ETL程序调用Qtum节点的RPC接口获取当前区块高度;
  3. ETL程序开启多个进程,并发地调用getblock接口,获取最近多个区块的数据;
  4. 将区块数据写入本地的CSV文件。

其中,getblock接口有两个参数,分别是区块哈希值和数字2(2代表会返回完整的交易信息)。返回结果如下:

BigQuery

BigQuery部分主要是数据的存储和计算。每次ETL程序运行完成之后,会将最新的CSV文件上传至BigQuery。然后执行SQL语句进行统计计算,并将计算结果写入Redis。关键操作步骤如下:

  • 建表:在BigQuery网站界面中新建数据库表,表名为block。依次填写各个字段的名称,类型和模式,填写完毕点击"创建表"。
  • 上传:BigQuery支持多种方式上传数据,数据也包括CSV、AVRO等多种格式。此处我们通过Python编写的任务,将CSV上传到BigQuery。

from google.cloud import bigquery
client = bigquery.Client()
filename = 'data.csv' # file path
dataset_id = 'qtum_data' # data set name
table_id = 'block' # table name
dataset_ref = client.dataset(dataset_id)
table_ref = dataset_ref.table(table_id)
job_config = bigquery.LoadJobConfig()
job_config.write_disposition = 'WRITE_TRUNCATE'
job_config.source_format = bigquery.SourceFormat.CSV
job_config.skip_leading_rows = 1
job_config.fieldDelimiter=','
with open(filename, 'rb') as source_file:
job = client.load_table_from_file(
source_file,
table_ref,
location='us-east4',
job_config=job_config) # API request
job.result() # Waits for table load to complete.
print('Loaded {} rows into {}:{}.'.format(
job.output_rows, dataset_id, table_id))

  • 通过SQL语句读取BigQuery中block表的数据并进行统计计算。这里我们以计算stake weight为例,其计算公式可以表示为:

对应的SQL语句和在图形界面的执行效果如下:

SELECT
SUM( block_difficulty ) * 16 * (1<<32) /(MAX( block_time )-MIN( block_time ) + 144) AS stake_weight,
DATE_FROM_UNIX_DATE(CAST(FLOOR(block_time/(3600*24)) AS INT64)) AS day_num
FROM `data-service-232303.qtum_data.block`
GROUP BY day_num

可视化

可视化部分由Flask和React两部分组成,最终展示结果如下图。Flask从Redis获取数据并通过HTTP JSON接口返回给前端。前端通过在React框架中嵌入的Echarts工具,用来展示数据。最终效果如下图:

可视化部分处理步骤如下:

1.在浏览器中打开地址(https://chart.qtum.info/),前端向接口发起请求。接口代码如下:

# parameter key, for example:username = 'block_size'
# api:http://127.0.0.1:23456/api/block_size
@app.route('/api/<username>')
def get_each_data(username):
...
x, y = get_data_from_redis(username)
if len(x) > 0:
print('Total :'+str(len(x)))
result = {
'success': True,
'msg': '',
'data': {
"title": input_dic[username]['title'],
"desc": input_dic[username]['desc'],
"unit": input_dic[username]['unit'],
"x": x,
"y": y
}
}
...
return jsonify(result)

2.获取接口返回的数据之后,通过Echarts工具展示在浏览器中。Echarts示例代码如下:

# parameter key, for example:key = "block_size"
showChart = (key) => {
fetch(`/api/${key}`)
.then(function (res) {
return res.json();
})
.then(function (res) {
...
xAxis: {
data: res.data.x
},
yAxis: {
name: res.data.unit
},
...
}
}

04

总结

此次Qtum量子链基于谷歌的BigQuery搭建的数据工具,展示了一种新的合作可能性,帮助更多用户不仅仅通过区块链浏览器去查询交易,而是从更加宏观的视角帮助普通用户挖掘真正的数据价值。这也会使得监管等机构更好的理解区块链技术的未来数据价值,使得区块链技术进一步主流化,合规化

系统的前端为React框架,编程语言为HTML,JavaScript和CSS,后端为轻量级Python框架Flask,接口,数据处理和定时任务也都是由Python编写。点击链接即可查看Qtum链上实时动态数据:https://chart.qtum.info/

05

下一步计划

随着区块链行业各种公有链项目的不断发展,积累了大量的交易和区块数据。由于链上数据的透明性,区块链技术将面临用户隐私泄露、非法金融活动等问题,我们从以下几个方向来作为下一步计划:

  1. 隐私泄漏分析:通过实体识别和身份识别来分析区块链用户是否有隐私泄漏风险
  2. 网络画像:通过对区块链的活跃度画像,服务画像和网络特性画像从宏观的角度对区块链网络的运行状态、规律、机制进行分析,从而更好的理解区块链网络中用户的活动情况
  3. 市场效应分析:分析矿工,系统,用户,政策,事件,竞争等因素对市场的影响
  4. 交易模式识别:对洗钱、诈骗等犯罪活动的特定交易模式进行分析,尽可能多的对交易模式进行识别
  5. 非法行为检测与分析:在成功识别交易模式之后,通过技术手段来帮助政府追溯非法行为发生的源头[4]

06

参考文献

[1] Qtum量子链5月主网报告

[2] BigQuery. https://cloud.google.com/bigquery/

[3] Bitcoin in BigQuery: blockchain analytics on public data. https://cloud.google.com/blog/products/gcp/bitcoin-in-bigquery-blockchain-analytics-on-public-data.

[4] 陈伟利,郑子彬. 区块链数据分析:现状、趋势与挑战[J]. 计算机研究与发展, 2018, 55(9): 1853-1870.

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

分析师:比特币价格达到1.8万美元以后可能很快会“冲高回落”

比特币的价格正在飙升至1.8万美元,兴奋的交易员认为这一顶级数字资产将可能超过2017年的历史高点19763美元。交易员仍然预计,随着比特币价格接近18000美元,比特币最终将冲高回落。

The Graph 与 Bitquery 区块链数据方案对比

索引器运行 The Graph 节点并存储和索引 Subgraph 数据。我们认为 The Graph 的去中心化区块链数据的使命目标新颖,我们对此表示赞赏。The Graph 网络的监护人负责验证数据的准确性。The Graph 项目目标是为应用程序构

分析:2020年DeFi代币的平均回报率远超比特币

尽管去中心化金融的牛市行情出现回落,但DeFi代币的平均回报率却远远超过了比特币和以太坊。目前,约有26个DeFi资产公布了其年初至今的回报率。但是,2020年,这26个DeFi代币的平均回报率为428.7%,是比特币的三倍多。

Project PAI 数据存储功能演示

Project PAI 数据存储功能演示

PAI-Data是一种文件存储服务,它使用PDP2协议规范对BitTorrent,IPFS和AWS等网络上的数据进行加密和存储,并已被用于PAIPass等多种PAI区块链上服务。在此处尝试PAI数据存储协议的演示:https://staging-paipass.p19dev.com/请按照以下步骤保存任意数据:● 点击链接:https://staging-paipass.p19dev.com/pa

区块链服务网络BSN为《湖南省区块链发展总体规划(2020—2025年)》赋能

2020年10月27日,湖南省人民政府办公厅关于印发《湖南省区块链发展总体规划》的通知。  建设区块链服务网络。促进区块链和网络安全产业协同发展。

区块链服务网络BSN为《湖南省区块链发展总体规划(2020— 2025年)》赋能

2020年10月27日,湖南省人民政府办公厅关于印发《湖南省区块链发展总体规划(2020年至2025年)》的通知。《规划》中"主要任务和重点工程"明确提出加强区块链区块链服务网络(BSN)是基于自主可控区块链技术的跨云服务,跨门户,跨机架框架的区实现块链基础链平台免维护,免运维,为上层应用提供存储,传输,计算,开发,测试等区块链链支持和服务。湖南省人民政府办公厅关于印发《湖南省区块链发展总体规划》

BSN测试网服务发布,免费提供区块链开发测试环境

10月31日,区块链服务网络BSN进行了常规的季度版本更新,持续优化现有功能的同时发布全新产品服务。其中,本次推出的BSN"测试网服务"将免费提供给广大开发者,旨在供开发者进行区块链应用的开发测试,试用BSN最新推出的产品服务,以及为区块链技术研究与创新提供试错环境。开发者可至BSN官网的"联盟链服务"-"测试网服务"内免费体验产品服务。BSN测试网服务开发者可以在测试网发布不限定数量的应用服务,

数据表明,这轮比特币反弹背后的动力是硅谷和“专业资金”

数据表明,这轮比特币反弹背后的动力是硅谷和“专业资金”

关键数据点显示,最近几个月的上涨趋势很可能是由专业机构的资金推动的。高净值投资者正在购买比特币 此外,据链上分析师Willy Woo介绍,一直以来购买比特币的多是高净值投资者。

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑