以太坊之工作流程(同步完数据之后)

这篇跟上一篇的区别是同步数据完成之后,以太坊的工作流程是怎样的

初始化

eth/handler.go

func (pm *ProtocolManager) Start(maxPeers int) {
	pm.maxPeers = maxPeers

	// broadcast transactions
	pm.txCh = make(chan core.TxPreEvent, txChanSize)
	pm.txSub = pm.txpool.SubscribeTxPreEvent(pm.txCh)
	go pm.txBroadcastLoop()

	// broadcast mined blocks
	pm.minedBlockSub = pm.eventMux.Subscribe(core.NewMinedBlockEvent{})
	go pm.minedBroadcastLoop()

	// start sync handlers
	go pm.syncer()
	go pm.txsyncLoop()
}

初始化Start的时候会新建4个goroutine:

txBroadcastLoop:  当收到新的tx时,会将它发送到连接的Peer

MinedBroadcastLoop:当挖出新的区块或者收到新的区块时,会将其发送到连接的Peer

syncer:有新的Peer连接时,会新建goroutine从td最高的Peer同步区块信息

txsyncLoop:当监听到txsyncCh有数据时(新连接peer时会把自身的txpool写到这个channel),新建goroutine发送tx记录到连接的Peer

广播交易

订阅tx消息

上面Start()的时候订阅了txCh消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值