查看代码目录,看我的项目蕴含哪些组件
查看构建工具,包含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回滚。
(未完待续)