对于比特币、莱特币、以太币等加密数字货币大家应该不陌生了,最近一年ico在国内也是备受关注和争议。抛开这些单纯从技术角度看基于java的开源blockchain相关的项目的实现。我们知道比特币很多是用C++做的,作为Java如何与Blockchain平台进行交互?今天介绍三款比较流行和出名的由java实现的区块链相关调用技术及对应的github下载地址。
一、web3j
web3j是一个轻量级、模块化、响应式、类型安全、支持java和Android类库,用来集成以太坊实现了智能合约等功能。利用web3j在以太坊区块链平台上,开发者不必为平台编写集成代码。核心的功能是连接以太坊、创建钱包、管理事务和对智能合约的创建、打包发布等。
web3j的特性:
a、对以太坊的JSON-RPC客户端Api进行了完整的实现,包含HTTP和IPC
b、支持以太坊钱包
c、支持对Java智能合约的创建,发布,交易和从java本地代码调用合约进行自动生成和封装。
d、可以使用响应式函数API与filters工作
e、支持持Parity’s Personal和Geth’s Personal的客户端接口
f、支持Infura,但是你必须自己运行一个以太坊客户端
g、一套综合化、一体的测试示范和可运行的脚步
h、支持命令行工具
i、兼容Android平台
j、支持JP Morgan’s Quorum via web3j-quorum
开发相关的依赖:
a、支持RxJava
b、使用OKHttp进行http操作
c、fast JSON序列化的核心包Jackson Core
d、crypto的Bouncy Castle和Java Scrypt
e、生成智能合约包装的JavaPoet
f、支持*nix IPC通信的Jnr-unixsocket
二、BitCoinJ
BitCoinJ类库是一个实现了比特币协议的java实现,利用它来操作钱包和收发交易而不需要官方实现的一个本地拷贝。
使用的相关技术:
a、核心模块是java 6实现的
b、部署构建使用了Maven3
c、使用Google Protocol Buffers进行数据的序列化和数据存储
三、HyperLedger Fabric
Hyperledger是联盟链的实现,IBM、Intel还有一些大型的商业银行都参与其中。联盟链是区块链在商业应用领域的探索应用,考虑到商业应用对安全、隐私、监管、审计、性能的需求,提高了准入门槛,增加了安全、隐私、可监管审计等商业特性。
Fabric系统主要由两个应用构成:Orderer和Peer,其中Orderer负责交易共识并生成区块,Peer节点负责模拟执行交易和记账。这种划分可以使整个平台拥有更好的弹性和扩展性。
Peer和Orderer都是模块化设计,重要模块支持插拔,比如共识机制、合约执行环境、加密算法、证书服务模块等。模块化的设计让企业可以利用现有IT设施来替换部分Fabric模块。