比特币节点收到交易的处理流程
Posted xgcode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比特币节点收到交易的处理流程相关的知识,希望对你有一定的参考价值。
btcd中对端发送的网络报文都在该处理函数:
func (p *Peer) inHandler() {
OnTx是一个函数接口,在初识化的时候注册的,注册代码如下:
在改函数func (sp *serverPeer) OnTx(_ *peer.Peer, msg *wire.MsgTx)中,把收到的交易消息放入msgchan消息队列
func (sm *SyncManager) QueueTx(tx *btcutil.Tx, peer *peerpkg.Peer, done chan struct{}) { // Don‘t accept more transactions if we‘re shutting down. if atomic.LoadInt32(&sm.shutdown) != 0 { done <- struct{}{} return } sm.msgChan <- &txMsg{tx: tx, peer: peer, reply: done} }
从channel读取报文后,对消息的处理函数如下:
func (sm *SyncManager) handleTxMsg(tmsg *txMsg)
以上是关于比特币节点收到交易的处理流程的主要内容,如果未能解决你的问题,请参考以下文章