经过前面的铺垫,现在我们可以来看看BlockChainSync::onPeerBlockHeaders()
这个函数的实现了,这个函数是EthereumPeer
接收到BlockHeadersPacket
包时被调用的,用来处理接收到的区块头。
这个函数有点长,还是一段一段来看吧。
经过前面的铺垫,现在我们可以来看看BlockChainSync::onPeerBlockHeaders()
这个函数的实现了,这个函数是EthereumPeer
接收到BlockHeadersPacket
包时被调用的,用来处理接收到的区块头。
这个函数有点长,还是一段一段来看吧。
在p2p(6)那一节末尾我们涉及到了BlockChainSync::syncPeer()
函数,实际上到这里已经进入了另外一个重要模块:区块链同步模块,这个模块算是P2P模块交互模块。
RLP是一种特殊的二进制编码解码方式,以太坊里数据包都是采用这种方式编码的,和传统的结构相比,RLP编码更节省空间,提高网络传输效率,缺点就是不太直观,这种编码解码原理介绍在下面这边文章里讲得很好,还附有python的实现代码:RLP编码和解码。但是在本文里我们来看看在C++里的实现。
我们再来深入了解一下Host类里节点和本节点是怎么交互的,在上一节可以看到节点到了Host类后,会调用Host::connect
来连接对方,我们可以看下connect()
函数实现代码:
Update your browser to view this website correctly. Update my browser now