存档

文章标签 ‘区块链’

geth以太坊源码分析-连接其他以太坊peer节点流程

2018年7月15日 2 条评论 34357次阅读    

之前的文章讲过P2P模块的UDP节点发现机制以及TCP连接池机制,接下来讲一下连接池后面,连接到一个新的节点后,接下来的流程是什么样的,怎么开始的区块同步,交易同步等。
阅读全文...

Share
分类: geth, geth 标签: , ,

geth以太坊源码分析-P2P模块TCP连接池网络通信机制原理

2018年7月1日 2 条评论 29858次阅读    

geth的P2P模块有2个重要的部分:基于UDP的节点发现模块 以及 TCP数据传输连接池模块。
之前讲过节点发现部分,用来根据设置的少了BootstrapNodes节点来发现更多全网的其他节点,这部分只是发现节点并找出其中可以ping通的节点,但是还没有进行使用,还没建立TCP连接进行数据传输,协议处理等。
这里分析一下P2P系统的TCP连接池是怎么建立的,以及是怎么跟其他节点通信的。

阅读全文...

Share
分类: geth, GO 标签: , ,

geth以太坊源码分析-P2P模块基于UDP的服务发现机制原理(2)

2018年6月25日 没有评论 28989次阅读    

上篇文章分析到了p2p模块是怎么通过UDP协议去测试其他节点的连通性的(geth以太坊源码分析-P2P模块基于UDP的服务发现机制原理(1))。接下来分析一下是怎么发现其他邻近节点的。
节点发现主要是findnode, neighbors消息的处理。
阅读全文...

Share
分类: C/C++, geth 标签: , ,

geth以太坊源码分析-P2P模块基于UDP的服务发现机制原理(1)

2018年6月25日 没有评论 30276次阅读    

以太坊的底层P2P模块承担了节点之间的通信和服务发现,新节点发现连接的功能,对于geth来说,P2P模块氛围2个部分:

  1. 节点发现, 怎么发现附近的其他节点;
  2. 节点连接,怎么去连接其他节点并互相通信;

以太坊使用UDP进行服务发现,通讯内容比较简单,所以没有加密。而使用TCP进行真正的数据传输和交互,这部分是使用加密连接进行传输的。

阅读全文...

Share
分类: geth, GO 标签: , ,

geth以太坊源码分析-启动服务2

2018年6月23日 没有评论 29111次阅读    

上一篇geth以太坊源码学习-启动服务1写到geth()入口函数,这里继续后面看看以太坊是怎么创建一个节点,并且启动服务的。
再看下geth函数,主要是节点创建函数makeFullNode 和启动函数 startNode , 后者会创建协程启动节点,然后进入等待状态。

阅读全文...

Share
分类: geth, GO 标签: , , ,

geth以太坊源码分析-启动服务1

2018年6月23日 没有评论 30227次阅读    

最近区块链这么火,出于好奇想看看源码实现,比较著名的就是比特币和以太坊了,前者是始祖,后者因为有智能合约的存在,所以大量不会写区块链底层的人可以利用以太坊实现自己的链,实际上,就是ICO, token了。
找了两者的官方源码:比特币以太坊, 由于之前对C,C++源码看的多一些,所以这回趁这机会再了解一下go怎么实现以太坊的。

阅读全文...

Share
分类: geth, GO 标签: , , ,