本系列文章介绍以太坊区块链基于Java语言的解决方案。通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助。
整体架构
以太坊的Java解决方案主要是由两个项目来实现的:
l EthereumJ(https://github.com/ethereum/ethereumj),实现了Ethereum定义的核心协议,完成了区块链的核心功能。
l Ethereum Harmony(https://github.com/ether-camp/ethereum-harmony),提供了Ethereum用户访问层的功能。
下图描述了两个项目里的主要的模块。
在EthereumJ里面,
l 最底层的DataSource提供了数据的persistence。数据采用的是<key, value>格式,以byte的形式保存,缺省使用的是Facebook的RocksDB。
l Blockchain Management实现了以太坊定义的Trie node,Transaction,Block,Blockchain等数据结构,以及这些数据结构的管理功能。
l P2P Network实现了以太坊定义的devp2p协议,实现了以太坊的网络的,nodes之间的发现和nodes之间的通信功能。
l Sync Management,实现了以太坊网络nodes之间同步blocks/Transactions的功能。
l Block Mining实现了Ethash协议定义的block生成以及产生共识的功能。
l Program/VM实现了Solidity的compile和prgram的执行功能。
在Ethereum Harmony里面,
l Json RPC实现了以太坊定义的RPC接口,应用可以通过该RPC接口访问EthereumJ的数据,如Blocks,Transactions,Balance等。
l Wallet实现了简单的Wallet功能,可以采用Ethereum Go相同的key store格式来保存Account的私钥。记录了Account的Balance余额。但是无法显示Account的Transactions的历史记录。
l Command Terminal可以执行RPC的