tendermint-node
- Transport 节点的tcp连接
- Switch p2p连接
Transport作为Switch的底层
| 1 | func (sw *Switch) acceptRoutine() { | 
- node.Start - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25- //start rpc 
 n.startRPC()
 //transport开启监听端口等待节点tcp接入
 n.transport.Listen(*addr)
 //p2p服务开启,当transport有节点接入时,会进入switch处理
 n.sw.Start()
 //sw.Start()内容是
 // OnStart implements BaseService. It starts all the reactors and peers.
 func (sw *Switch) OnStart() error {
 // Start reactors
 for _, reactor := range sw.reactors {
 err := reactor.Start()
 if err != nil {
 return errors.Wrapf(err, "failed to start %v", reactor)
 }
 }
 // Start accepting Peers.
 go sw.acceptRoutine()
 return nil
 }
//sw的reactor包括
- mempoolReactor //for gossipping transactions,广播交易
- brReactor //for fast-syncing
- consensusReactor //for participating in the consensus, 共识
- evidenceReactor
consensusReactor
| 1 | // OnStart implements BaseService by subscribing to events, which later will be |