跟我一起学习区块链技术 (4) - 自己实现一个 blockchain.info
上一篇文章给大家简单介绍了一下 blockchain.info 的使用, 一般用户通过它应该可以查到很多之前不知道的关于交易的信息了. 但是研发人员一定觉得不过瘾, 只在文章收尾的时候介绍了一个 curl 命令. 那这一篇应该多少会让你们爽到一些.
这篇文章的目的是让你自己搭一个类似 blockchain.info 的服务.
在 github 上可以找到 bitcoin 的核心项目: https://github.com/bitcoin/bitcoin 目前该项目有两万多个 star 和 一万多个 fork, 可见自建 bitcoin 项目之多.
这里有两种方式可以取得该项目, 一种是 clone 下来 make 一下, 一种是直接下载安装包. 后者相对比较容易, 从这里下载即可, 这里介绍一下 clone/make 的方式.
这里我们选择的系统是 ubuntu. 事实上 mac os 也是 OK 的, windows 没试过, 不过可以采用安装包的方式, 应该也是一样道理.
首先将项目 clone 到本地:
git clone https://github.com/bitcoin/bicoin.git
可以通过 git tag 命令查看一下目前 release 的版本号, 最新的是 0.15.1, 把当前代码库切换至改版本:
git checkout v0.15.1
从 0.9 版本, bitcoin 支持自动构建, 省去了修改 makefile 的烦恼. 我们直接通过 autogen 脚本生成项目
./autogen.sh
期间会询问式的和你互动几个配置, 然后就可以通过 make 命令编译 bitcoind 项目了:
make
最后, 执行 install 命令, 将编译好的 bitcoind 项目安装到系统执行目录下:
make install
一切顺利的话, 执行 bitcoind 就可以启动 bitcoin 核心服务了.
bitcoind
也可以以后台方式运行:
bitcoind -daemon
需要注意的是, 这一步骤中, bitcoind 会把区块链上的全部区块数据同步到本地, 目前区块链的总数据量大概需要 180G 的硬盘空间.
Bitcoin Core requires a one-time download of about 180GB of data plus a further 5-10GB per month. By default, you will need to store all of that data.
等数据都同步好了之后, 就可以使用 bitcoind 提供的 RCP 命令来进行区块链数据的查询了, 现在, 你的机器就等同甚至强于一个 blockchain.info 的功能.
这里举一个查看交易的例子.
首先使用 importaddress 命令导入一个要查看的地址:
bitcoin-cli importaddress muhtvdmsnbQEPFuEmxcChX58fGvXaaUoVt “target address” true
然后使用 listtransactions 命令查看该地址的交易信息:
bitcoin-cli listtransactions "target address" 10 0 true
在返回的信息中, 可以获得 txid, 要查看每笔交易的详情, 可以使用 gettransaction 命令获取交易详情:
bitcoin-cli gettransaction {TXID}
当然, bitcoin-cli 可不止这么几个功能, 光 api 文档就一大串, 有兴趣搞 bitcoin 研发的可以研究一下, 文档写的非常棒.
https://bitcoin.org/en/developer-reference#bitcoin-core-apis
通过这一章节, 希望能够自己架设一个 bitcoin 节点, 并且能够通过本机命令查看或者处理一些 bitcoin 的业务. 下一章我可能会讲一下关于你比特币钱包的来历, 也是硬核, 敬请期待.