bitcoinj是bitcoin全节点的java实现。与比特币官方推荐的C++实现不同的是:目前它并没有内置RPC或命令行交互。

它的功能交互是通过几个example例子、tool、以及walletKit体现的。

对于学习或开发区块链,阅读bitcoin源代码,了解其运行原理,学习其开发流程是非常好的途径。

安装准备工作

  1. 安装Gradle,Gradle是一个项目构建工具,类似Maven,bitcoinj是用Gradle进行构建。
  2. 安装JavaFx,JavaFx是一套Java的图形界面库,bitcoinj中的钱包实例是用JavaFx编写的界面。
  3. 安装protobuf,Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准。是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。bitcoinj中也会用到。

下载bitcoinj

下载地址:https://github.com/bitcoinj/bitcoinj
直接下载zip包,进行解压。

在MyEclipse中,依次选择:

Import -> Gradle -> Existing Gradle Project

在Project root directory中选择刚解压的bitcoinj目录。导入成功后会出现以下几个项目:

> bitcoinj
> core                # 全节点功能实现
> examples            # 几个调用core的例子
> tools               # 小工具
> walletettemplate    # 一款图形化的wallet

执行protoc生成相关的java文件

网上很多文章都没提到这一点,刚导入bitcoinj,项目中很多地方是会报错的,因为部分java文件需要protoc来生成。

在命令行下,进入bitcoinj如下目录

core -> src -> main -> proto

可以看到如下文件:

paymentchannel.proto
paymentrequest.proto
peerseeds.proto
storedclientpaymentchannel.proto
storedserverpaymentchannel.proto
wallet.proto

执行如下命令:

protoc --java_out=../java paymentchannel.proto

每个文件执行一次,在java目录下对应的包中就会生成相应的java文件,再刷新整个项目,将不会再报错。