ethereumj项目启动类加载步骤

半兽人 发表于: 2018-09-18   最后更新时间: 2018-09-19 00:28:49  
{{totalSubscript}} 订阅, 4,379 游览

项目启动步骤

1、Initializer

  1. 管理版本
  2. 加载配置文件
  3. 加载所有创世块
  4. 加载nodeId

2、WorldManager

  1. 从磁盘加载区块链信息
  2. 客户端连接别人(同时启动客户端同步)

3、SyncManager

  1. 快速同步
  2. 标准同步
  3. 在父类中,header同步,block同步。
  4. 从同步队列中获取区块,添加到主链中
  5. 同步完成后,通知所有监控该动作的模块(包括挖矿程序)

4、BlockMiner

  1. 监听同步完成事件,启动挖矿程序
  2. 创建新区块
  3. 开始挖矿
  4. 尝试添加新区块
  5. 广播区块

监听程序

EthereumListener 同步,追踪,交易等监听
MinerListener 挖矿动作监听

CommonConfig

公共配置类,用来指定服务的具体实现类。
SystemProperties
Initializer
RepositoryWrapper
Repository
trieNodeSource
StateSource
cachedDbSource (根据名称生成原子db,如rockDB,levelDB)
blockchainSource (做了层格式转换)
blockchainDbCache (又做了一层封装,写缓存封装)
keyValueDataSource (rockDB,levelDB)
levelDbDataSource
rocksDbDataSource
fastSyncCleanUp
resetDataSource
headerSource (?)
precompileSource (?)
blockchainDB (blockchain区块链存储文件名)
dbFlushManager (刷新仓库)
BlockHeaderValidator (区块header验证)
ParentBlockHeaderValidator
peerSource (对等数据源)

DefaultConfig

BlockStore
TransactionStore
PruneManager

SystemProperties

管理所有配置文件读取及参数验证。

BlockchainNetConfig

未完待续,等待整理...

更新于 2018-09-19
在线,2小时前登录

volcano 2年前

大佬好,想问下这个实现是只有pow的对吗?(因为go语言版本的是有两种的pow和poa)还有就是以太坊交易池不是会有一个交易丢弃算法的吗?就是池子满了的时候,新交易来了会把手续费低的扔出去等下一次区块打包,我想问下这个在这个java版本里有实现吗?

厉害!可以一起更新这个主题么·

嗯,持续编写中。

查看ethereumj更多相关的文章或提一个关于ethereumj的问题,也可以与我们一起分享文章