bitcoin-to-beo4j的介紹和安裝

來源於項目 https://learnmeabitcoin.com/中的https://github.com/in3rsha/bitcoin-to-neo4j

bitcoin-to-beo4j

思路:整個過程就是從一種格式(區塊鏈數據)中獲取數據,然後將其轉換爲另一種格式(圖形數據庫)。使得此轉換比典型的數據轉換稍微棘手的唯一事情是,在開始之前瞭解比特幣數據的結構將很有幫助

一旦將區塊鏈導入到Neo4j中,就可以在圖形數據庫上執行SQL數據庫無法進行的分析。例如,您可以按照比特幣的路徑查看是否連接了兩個不同的地址

將比特幣區塊鏈交易數據導入到Neo4j圖形數據庫中,這樣的項目網上有很多,但這個是直接安裝讀取區塊文件後直接導進到neo4j中去,很方便,其他項目例如(1)https://github.com/behas/bitcoingraph (2)https://github.com/BlueMeanie/bitcoingraphdb 導出數據後需要運用neo4j的工具再導入csv文件

作者也放出了在線數據庫,賬號密碼估計需要支付比特幣才行,不如自己動手看看:

開始安裝:參考教程 

git clone https://github.com/in3rsha/bitcoin-to-neo4j.git

測試環境:centos 7

比特幣核心:可以參考之前我轉發的教程

Neo4j 3.0+:網上一大堆教程,推薦源碼安裝

首先需要安裝 java sdk:

yum install java-1.8.0-openjdk

wget https://neo4j.com/artifact.php?name=neo4j-community-2.3.9-unix.tar.gz
#注意對應neo4j的版本,修改版本名即可

tar -zvxf artifact.php\?name\=neo4j-community-2.3.9-unix.tar.gz 
然後可以移動文件到 你需要的目錄
 

還需要修改下配置文件後臺啓動:

PHP 7.2+ -主腳本及其庫函數是用PHP編寫的。php版本需要大於5.4否則安裝失敗,教程  教程2

Redis 5.0.3+ -用於存儲導入狀態,以便可以隨時停止和啓動腳本。教程

另外需要安裝php的redis擴展:yum -y install php72w-pecl-redis 或者查看 教程

compose:centos下安裝教程

一切安裝完畢之後,進入目錄文件開始安裝,config.php配置文件如下:

 



The location of your ~/.bitcoin/blocks folder
Your Neo4j username and password.
define("BLOCKS", '/home/user/.bitcoin/blocks'); // the location of the blk.dat files you want to read
define("TESTNET", false); // are you reading blk.dat files from Bitcoin's testnet?

define("NEO4J_USER", 'neo4j');
define("NEO4J_PASS", 'neo4j');
define("NEO4J_IP", 'localhost');    
define("NEO4J_PORT", '7687'); // this is the port used for the bolt protocol

define("REDIS_IP", 'localhost');    
define("REDIS_PORT", '6379');

輸入一下命令開始跑起來:

php main.php

 打印出解析結果:

開啓neo4j可以在瀏覽器中查看導入的數據,怎麼用可以參考作者的教程和視頻:

這裏很清楚看到導入節點是9104

過了一會又增加了好多:

重要:

  • 生成的Neo4j數據庫大約是區塊鏈大小的6倍因此,如果區塊鏈爲100GB,那麼您的Neo4j數據庫將爲600GB
  • 完成整個區塊鏈的導入可能需要60天以上的時間。該腳本不是對整個區塊鏈進行批量導入,而是對每個blk.dat1文件運行,並插入其遇到的每個塊和事務。因此,雖然初始導入需要“一會兒”,但完成後,它將在到達時不斷添加新塊。
  • 我想對於其他的區塊鏈也能夠用稍微修改源碼就行,比如bch在48萬多區塊開始分叉,我試了下也能夠解析出來到neo4j中

儘管如此,在此腳本運行時,您仍然可以瀏覽數據庫中的任何內容。

有可能的錯誤

(1) 未定義的函數bcmod()安裝一個擴展即可,參考教程

yum install php72w-bcmath

 (2)php的Allowed memory size of 134217728 bytes exhausted問題解決辦法


報錯: 
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 128 bytes) in xxxx/mysqli_result.php on line 183

解析: 
134217728/1024/1024 = 128

解決方案1:

通過ini_set函數修改配置選項值

ini_set(‘memory_limit’,’256M’); //升級爲256M內存

解決方案2:

修改php.ini 

修改php配置
vi /usr/local/php/etc/php.ini
memory_limit = 128 改成memory_limit = 256

(3) 其他問題:需要依賴的軟件問題,還有對計算機存儲有要求,按照現在的交易數量來看最少需要2T的硬盤

附錄:安裝運行命令集合

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章