波多野结衣 蜜桃视频,国产在线精品露脸ponn,a v麻豆成人,AV在线免费小电影

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

像比特幣、以太坊這樣的區塊鏈中包含了大量的數據,可以幫助 我們洞察區塊鏈生態系統中用戶、企業和礦工的行為模式等重要信息。 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/

分享到:
標簽:區塊
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定