共计 1082 个字符,预计需要花费 3 分钟才能阅读完成。
查看代码目录,看我的项目蕴含哪些组件
查看构建工具,包含 build.gradle、travis.yml
一、从简略的依赖少的模块开始,json 模块。
依赖 fastjson 包,蕴含两个类,JSONHelper 和 EtherObjectMapper。
JSONHelper 用于 dump Block。EtherObjectMapper 对 fastjson 的 ObjectMapper 序列化分隔符做了调整。
二、再看 facade 模块,这个模块是这个我的项目的对外入口。
先看Blockchain,这是个接口,次要是对 Blockchain store 的查问接口,包含依据块高块 hash 查问块的函数、查问最新块,也有间接查问 blockStore 实例对象。注解里有函数阐明及参数返回值。
Ethereum也是个接口,定义了节点治理办法,包含启动节点发现、连贯节点等,定义了解决交易的办法,包含创立交易、发送交易、执行只读交易,提供取得 Repository 实例对象的接口,定义查问节点状态,包含交易池中的交易、miner 信息、gas 价格、admininfo 等。
类 EthereumFactory,用来创立并启动一个 Ethereum 服务,其中应用 AnnotationConfigApplicationContext 从配置类中读取配置。
类 EthereumImpl蕴含 Ethereum 所有组件和服务。组件包含 WorldManager、AdminInfo、ChannelManager、ApplicationContext、BlockLoader、ProgramInvokeFactory、Whisper、PendingState、SyncManager、CommonConfig 等,组件还包含监听器 CompositeEthereumListener、GasPriceTracker,每一个组件都对应一个外围性能,能够逐个合成钻研。
- 节点发现、链接,通过 WorldManager 组件实现。块信息也通过 WorldManager 组件取得。同步信息从 SyncManager 取得。
- 交易创立后写入 PendingState,写入以前先创立一个 future,放入 channelManager,在工作实现时回调。执行流程细节待深刻查看。
- replayBlock,块重放。执行流程是先依据 hash 获取上一个块的 Repository 快照,(这个性能作为存储组件的一个非凡性能阐明),依据 Repository 结构一个 TransactionExecutor 执行器,模仿执行块中的每笔交易,执行完所有交易,Repository 回滚。
(未完待续)