来源于项目 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
然后可以移动文件到 你需要的目录
还需要修改下配置文件后台启动:
开启neo4j可以在浏览器中查看导入的数据,怎么用可以参考作者的教程和视频:
这里很清楚看到导入节点是9104
过了一会又增加了好多:
重要:
生成的Neo4j数据库大约是区块链大小的6倍。因此,如果区块链为100GB,那么您的Neo4j数据库将为600GB。
完成整个区块链的导入可能需要60天以上的时间。该脚本不是对整个区块链进行批量导入,而是对每个blk.dat
1文件运行,并插入其遇到的每个块和事务。因此,虽然初始导入需要“一会儿”,但完成后,它将在到达时不断添加新块。
我想对于其他的区块链也能够用稍微修改源码就行,比如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的硬盘
附录:安装运行命令集合
作者:幸福诗歌