Tendermint阅读XI

我们现在来看一下Tendermint的工作流程,接上我们第一篇文章了。 为了方便说,我们再重新把NewNode拿过来,看一遍12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152...

Tendermint阅读X

我们要开始看最难的了,共识模块,这块事区块链的核心,也是流程多到让人痛苦,我们就尽力的看一看吧。 首先看一下,ConsensusState的定义1234567891011121314151617181920212223242526272829303132333435363738394041424344454647...

Tendermint阅读IX

我们现在要啃一个硬骨头了,共识模块。在开始之前,我们先看一下EvidencePool模块,一个合法证据池模块。 先看一下证据池12345678910111213type EvidencePool struct { logger log.Logger evidenceStore *EvidenceStor...

Tendermint阅读VIII

我们在上一篇文章中提到,block处理有处理state,以及相应的执行过程。我们这一节就来看一看。 我们先看一下State的定义12345678910111213141516171819202122232425262728293031323334type State struct { Version V...

Tendermint阅读VII

这次我们来看一个复杂的模块,blockchain模块,实际上我个人感觉,叫block模块似乎更好。 先看一下基本的区块池的定义123456789101112131415161718type BlockPool struct { cmn.BaseService startTime time.Time mt...

Tendermint阅读VI

看了两个复杂的,我们来看一个简单的模块,crypto模块。这个模块封装了很多常用的加密所用的包。我们就大体介绍一下。 这个包最重要的是两个接口定义PubKey和PrivKey的定义,分别如下12345678910111213type PubKey interface { Address() Addres...

Tendermint阅读V

我们看完了peer,看点稍微简单点的mempool实现吧。这个和我们写的abci程序有直接的关联,因此,我们需要仔细阅读下。 废话不多说,我们先看下Mempool的定义1234567891011121314151617181920212223242526type Mempool struct { con...

Tendermint阅读IV

我们之前看了Tendermint如何和别人连接,如何接受别人的连接,可是,Tendermint得怎么找到别人啊!不能手动一个一个的输入连接地址啊!这个就是pexreactor的功能了! 我们首先看下PEXReactor怎么定义的123456789101112131415type PEXReactor struct...

Tendermint源码学习III

我们之前看了peer的基本操作,现在看一下更上一层的工作内容。 通过看switch的注释,不难理解,他就是个分发功能,把不同的消息分发给不同的reactor。1234567891011121314151617181920212223type Switch struct { cmn.BaseService...

Tendermint源码阅读II

在开始本节之前,我们得先说两个非常重要的接口,service和reactor。 接口首先我们来看service,tendermint中所有的服务都是实现了这个接口定义的函数。12345678910111213141516171819202122232425type Service interface {...