新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > 互联网百科 > 区块链

区块链数据分析框架BlockSci简明教程

时间:2019-11-26 14:27:04  来源:  作者:

像比特币、以太坊这样的区块链中包含了大量的数据,可以帮助 我们洞察区块链生态系统中用户、企业和矿工的行为模式等重要信息。 BlockSci是一个C++开发的高性能的区块链数据分析框架,可以帮助 我们快速进行对比特币等区块链的数据分析工作。本教程将介绍 BlockSci区块链数据分析框架的安装方法,并讲解如何利用BlockSci 框架进行区块链数据分析。

1、安装BlockSci框架

BlockSci的主要开发语言是C++,本地编译需要GCC 7.2+和CLang 5+。 官方文档仅提供了Ubuntu 16.04和mac OS10.13下的本地安装方法, 其他系统可以尝试本地安装或使用官方提供的AWS EC2镜像。

2、BlockSci框架概述

BlockSci包含两个主要的组件:解析器和分析库。解析器用来解析 区块链数据并转换为便于执行分析任务的BlockSci数据格式。分析库 则用来编写数据分析任务。

区块链数据分析框架BlockSci简明教程

 

BlockSci的运行需要大量内存,推荐使用64GB内存,32GB虽然也可以用 但性能下降非常明显。

3、BlockSci解析器 / Parser

BlockSci的解析器支持两种处理原始区块链数据的机制:磁盘模式和RPC模式。

磁盘模式是处理比特币 区块数据的推荐模式,它可以直接读取并解析磁盘上的 比特币区块数据文件,因此速度要快得多。但是这也意味着磁盘模式不能 支持更多的区块链,因为不同的区块链的磁盘数据文件格式不同。

使用以下命令以磁盘模式解析比特币区块数据:

blocksci_parser --output-directory bitcoin-data update disk --coin-directory .bitcoin

参数说明:

  • –output-directory:解析结果输出目录
  • –coin-directory:bitcoin core数据目录

RPC模式使用数据加密货币区块链节点的RPC接口来提取数据,而RPC接口是 大多数(山寨币)区块链都支持的与比特币类似的二次开发接口(虽然优势也有一些差异), 因此在比特币之外的区块链数据解析,BlockSci通常采用RPC模式, 例如对于Zcash和Namecoin。

要使用RPC模式的BlockSci解析器,需要一个区块链全节点并且启用txindex选项。 命令格式如下:

blocksci_parser --output-directory bitcoin-data update rpc --username [user] --password [pass] --address [ip] --port [port]

参数说明:

  • –output-directory:解析结果输出目录
  • –username:RPC API用户名
  • –password:RPC API用户密码
  • –address:RPC API监听地址
  • –port:RPC API监听端口

4、BlockSci分析库 / Analysis Library

一旦利用解析器提取了区块链数据,就可以利用BlockSci的分析库来执行数据分析 任务了。BlockSci目前支持两种语言来开发区块链数据分析应用:C++和Python

要使用C++版本的BlockSci分析库,需要添加必要的BlockSci头文件并链接BlockSci 动态库。然后就可以利用解析器输出目录里的数据进行分析了,例如下面的代码:

#include <blocksci/blocksci.hpp>

int main(int argc, const char * argv[]) {
 blocksci::Blockchain chain{"file_path_to_output-directory"};
}

BlockSci目前仅支持Python 3,使用方法很简单:导入BlockSci库,然后利用 解析器输出目录的数据构建Blockchain对象:

import blocksci
chain = blocksci.Blockchain("file_path_to_parser_output-directory")

5、BlockSci区块链数据分析示例

这一部分我们使用Python版本的BlockSci来介绍如何进行比特币区块链的数据 分析。

首先导入必要的库并利用解析器输出数据构建BlockSci的Blockchain对象:

import blocksci
import matplotlib.pyplot as plt
import matplotlib.ticker
import collections
import pandas as pd
import numpy as np

chain = blocksci.Blockchain('your_parser_data_directory')

5.1 比特币地址类型使用情况分类统计

使用BlockSci的区块链对象的map_blocks()方法统计不同类型的地址 在每年的使用量:

net_coins_per_block = chain.map_blocks(lambda block: block.net_address_type_value())

df = pd.DataFrame(net_coins_per_block).fillna(0).cumsum()/1e8
df = chain.heights_to_dates(df)
df = df.rename(columns={t:str(t) for t in df.columns})
ax = df.resample("W").mean().plot()
ax.set_ylim(ymin=0)

显示结果如下:

区块链数据分析框架BlockSci简明教程

 

可以看到P2PKH地址的使用从2017年中开始减少,而P2SH地址的 使用同期则开始增加 —— 这应该对应着各种钱包对隔离见证地址支持 的增加。

5.2 比特币单区块交易手续费率可视化分析

下面的代码使用BlockSci的区块链对象的[]操作符提取 比特币465100#区块内各交易的手续费率并进行可视化分析:

example_block_height = 465100
df = pd.DataFrame(chain[example_block_height].txes.fee_per_byte(), columns=["Satoshis per byte"])
ax = df.reset_index().plot.scatter(x="index", y="Satoshis per byte")
ax.set_ylim(0)
ax.set_xlim(0)
plt.show()

显示结果如下:

区块链数据分析框架BlockSci简明教程

 

可以看到该区块内绝大多数交易的手续费率设置在500SAT/BYTE以内。

5.3 比特币二层协议使用情况可视化分析

在比特币交易内可以嵌入二层协议以实现对其他应用的支持,例如omni layer 的usdt代币就是最常见的一种比特币二层协议应用。下面的代码 使用BlockSci的区块链对象的blocks.txes属性提取在交易输出中 包含OP_RETURN脚本的交易,并显示二层协议的使用情况,可以非常清楚的看到, Omni layer到目前已经是二层协议的最大用户:

txes = chain.blocks.txes.including_output_of_type(blocksci.address_type.nulldata).all
labels = [(tx.block.time, blocksci.label_Application(tx)) for tx in txes]

df = pd.DataFrame(labels, columns=["date", "label"])
df = df.reset_index().groupby(["date", "label"]).count().unstack(level=-1).fillna(0)
df.columns = df.columns.droplevel()
important_columns = list(df[df.index > pd.to_datetime("1-1-2016")].sum().sort_values()[-10:].index)
important_columns = [x for x in important_columns if "Address" not in x]
ax = df[df.index > pd.to_datetime("1-1-2016")].cumsum().resample("w").mean()[important_columns].plot()
ax.set_ylim(0)
plt.tight_layout()

显示结果如下:

区块链数据分析框架BlockSci简明教程

 

5.4 比特币2017年各月平均交易手续费可视化分析

下面的代码统计年度平均手续费并将手续费换算为美元,注意 其中利用了BlockSci分析库中的CurrencyConverter进行汇率换算:

converter = blocksci.CurrencyConverter()
blocks = chain.range('2017')
times = blocks.time

df = pd.DataFrame({"Fee":fees}, index=times)
df = converter.satoshi_to_currency_df(df, chain)
ax = df.resample("d").mean().plot(legend=False)
ax.set_ylim(ymin=0)
plt.tight_layout()

显示结果如下:

区块链数据分析框架BlockSci简明教程

 

可以看到在2017年底比特币手续费激增。

5.5 比特币大额手续费交易可视化分析

下面的代码分析并可视化历年来手续费超过1000美元的比特币交易:

high_fee_txes = chain.cpp.filter_tx("fee(tx) > 10000000", 0, len(chain))
converter = blocksci.CurrencyConverter()

df = pd.DataFrame([(tx.block.height, tx.fee) for tx in high_fee_txes], columns=["height", "fee"])
df.index = df["height"]
df["fee"] = df.apply(lambda x: converter.satoshi_to_currency(x["fee"], chain[x["height"]].time), axis=1)
df = df[df["fee"] > 1000]
df = chain.heights_to_dates(df)
fig, ax = plt.subplots()
ax.plot_date(df.index, df["fee"], fmt="x")
ax.set_yscale("log")
formatter = matplotlib.ticker.ScalarFormatter(useoffset=False)
formatter.set_scientific(False)
ax.yaxis.set_major_formatter(formatter)
plt.tight_layout()

显示结果如下:

区块链数据分析框架BlockSci简明教程

 

2017年超过1000美元手续费的交易激增,从一个侧面说明了这一年 涌入了大量数字加密货币的新手。


汇智网原创,转载请标明出处:http://blog.hubwiz.com/2019/11/25/blocksci-tutorial/



Tags:区块链   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
2020年3月12日,加密货币市场一泻千里、哀鸿一片,仿佛坠入了黑洞。此次比特币闪崩,加密货币交易所再现插针、宕机、停止场外交易等伎俩,合约市场上那些晒单、带单的投资者一夜间...【详细内容】
2020-03-16   区块链  点击:(9)  评论:(0)  加入收藏
序言 区块链最大的潜规则是啥?就是不管规则有多潜,还是有人前赴后继甘愿被割。有技术上的、有人性上的、有治理上的、也有媒体传播上的,总之,规则很多,甘愿被潜。1、不可能三角存...【详细内容】
2020-03-12   区块链  点击:(3)  评论:(0)  加入收藏
这篇文章主要就是给大家分享区块链如何赚钱的渠道大全!着重于区块链的核心项目,数字货币8大赚钱方法!希望给大家带来一点帮助! 接下来就是作为币圈老韭菜的实战干货: 数字货币...【详细内容】
2020-03-12   区块链  点击:(3)  评论:(0)  加入收藏
大数据技术一种规模大到在获取、存储、管理、分析方面大大超出传统数据库软件工具能力范围的数据集合技术,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低...【详细内容】
2020-03-12   区块链  点击:(4)  评论:(0)  加入收藏
一、什么是密码账户?随着助记词钱包的普及,几乎人人都知道了「助记词是掌控自己资产的唯一方式」。助记词账户大家已经是非常熟悉了,那什么是密码账户呢?密码账户,是助记词账户在...【详细内容】
2020-03-09   区块链  点击:(3)  评论:(0)  加入收藏
区块链本质上是解决信任问题、降低信任成本的技术方案,目的就是为了去中心化,去信用中介。区块链是比特币的底层技术。我们以比特币交易为例来看看区块链具体是如何操作的。1...【详细内容】
2020-03-09   区块链  点击:(5)  评论:(0)  加入收藏
夸克区块链(Quarkblockchain)早期是Chance Boat Internet Technology Ltd (Seychelles) 主导开发和维护的区块链项目。 本项目17年11月底开始开发,2018年2月8日正式上线,后期转...【详细内容】
2020-03-09   区块链  点击:(5)  评论:(0)  加入收藏
1区块链就是数据库?其实,如果我们将整个区块链的底层架构看作是一个数据库,可以说对,也可以说不对。“对”的一点在于其实区块链技术本身就是一个建立在互联网技术之上的新兴概...【详细内容】
2020-03-08   区块链  点击:(3)  评论:(0)  加入收藏
一、区块链的优点:1、去中心化;由于使用的是分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是相互平等的,系统中的数据块由整个系统中具有维护功能的节...【详细内容】
2020-03-06   区块链  点击:(7)  评论:(0)  加入收藏
区块链目前最流行的应用场景是金融相关服务,安全性自然是讨论最多、挑战最大的话题。 区块链设计了大量现代和成熟的加密算法。 但是这能保证它的绝对安全吗?世界上没有绝对安...【详细内容】
2020-03-06   区块链  点击:(1)  评论:(0)  加入收藏
区块链技术的应用?区块链就是一个去中心化的信任机制。过去区块链主要应用在比特币上,一直到最近半年,区块链已经渐渐开始有了一些其他应用,特别是在金融领域。通俗一点说,区块链...【详细内容】
2020-03-04   区块链  点击:(3)  评论:(0)  加入收藏
​如何判断一个区块链项目是能够落地、能够长久的好项目?那需要从它能够解决什么问题?有什么核心竞争优势以及市场需求有多大等方面来着手分析!“三个维度”甄别区块链应用场...【详细内容】
2019-12-18   区块链  点击:(36)  评论:(0)  加入收藏
在很多区块链密码学的相关文章中,我们经常会看到“密码极客”、“密码朋克”这样的字眼,究竟是什么意思呢?今天,我们就来了解一下这两个小知识。 密码极客是什么?“极客”一词,...【详细内容】
2019-12-17   区块链  点击:(34)  评论:(0)  加入收藏
根据全球区块链商业委员会和Janus Henderson Investors于周三发布的一项调查,基金管理行业的大多数高级管理人员对区块链技术的了解程度一般。在来自50个买方组织的76%的专业...【详细内容】
2019-12-09   区块链  点击:(25)  评论:(0)  加入收藏
首张区块链增值税专票-京东数科智臻链2018 年,京东联合中国太平洋保险落地了“区块链增值税专用发票电子化项目”。这张中国第一张区块链电子化增值税专用发票,是国内增值税...【详细内容】
2019-12-05   区块链  点击:(28)  评论:(0)  加入收藏
像比特币、以太坊这样的区块链中包含了大量的数据,可以帮助 我们洞察区块链生态系统中用户、企业和矿工的行为模式等重要信息。 BlockSci是一个C++开发的高性能的区块链数据...【详细内容】
2019-11-26   区块链  点击:(44)  评论:(0)  加入收藏
要从架构和管理决策来看正如同我们在“区块链技术是什么(什么是区块链技术?)”一文中所述,区块链与传统数据库,从架构开始就是不同的,或者说其技术如何部署便是不同的。万维网(万维...【详细内容】
2019-11-24   区块链  点击:(33)  评论:(0)  加入收藏
科技日报记者 刘园园 实习记者 代小佩10月下旬以来,区块链成为众人瞩目的焦点,引发大量关注与讨论。科技日报记者采访了解到,区块链已开始在我国金融、食品、公益等多个垂直行...【详细内容】
2019-11-19   区块链  点击:(35)  评论:(0)  加入收藏
摘 要 共识算法是区块链技术的核心要素, 也是近年来分布式系统研究的热点. 本文系统性地梳理和讨论了区块链发展过程中的 32 种重要共识算法, 介绍了传统分布式一致性算法...【详细内容】
2019-11-14   区块链  点击:(24)  评论:(0)  加入收藏
存储并不是个新词,随着互联网技术的快速发展,企业级存储、云存储等已成为人们工作生活的标配。与此同时,伴随区块链技术的发展与成熟,区块链存储的优势和特点开始受到多方关注...【详细内容】
2019-11-14   区块链  点击:(51)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条