Edit me

[TOC]

Pool启动

在06章节中,我们查找到Pool启动需要调用(bcR *BlockchainReactor) OnStart()方法,它的调用我们还是要先回到angine.go中的assembleStateMachine函数:

consensusReactor := consensus.NewConsensusReactor(ang.logger, consensusState, fastSync)
consensusState.BindReactor(consensusReactor)

函数创建了这个类的实体,然后绑定到了一个P2P映射表上:

ang.p2pSwitch.AddReactor("MEMPOOL", memReactor)
ang.p2pSwitch.AddReactor("BLOCKCHAIN", bcReactor)
ang.p2pSwitch.AddReactor("CONSENSUS", consensusReactor)
ang.p2pSwitch.AddReactor("SPECIALOP", spReactor)

调用堆栈

 0  0x0000000000c221e8 in github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/angine/blockchain.(*BlockchainReactor).OnStart
    at /home/pct/go/src/github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/angine/blockchain/reactor.go:133
 1  0x0000000000a1f972 in github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/chorus-module/lib/go-common.(*BaseService).Start
    at /home/pct/go/src/github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/chorus-module/lib/go-common/service.go:96
 2  0x0000000000bccbbe in github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/chorus-module/lib/go-p2p.(*Switch).OnStart
    at /home/pct/go/src/github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/chorus-module/lib/go-p2p/switch.go:217
 3  0x0000000000a1f972 in github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/chorus-module/lib/go-common.(*BaseService).Start
    at /home/pct/go/src/github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/chorus-module/lib/go-common/service.go:96
 4  0x0000000000d0094c in github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/angine.(*Angine).Start
    at /home/pct/go/src/github.com/Baptist-Publication/chorus/vendor/github.com/Baptist-Publication/angine/angine.go:498
 5  0x0000000000ebef6e in github.com/Baptist-Publication/chorus/src/chain/node.(*OrgNode).Start
    at ./node/orgnode.go:92
 6  0x0000000000ebd0ee in github.com/Baptist-Publication/chorus/src/chain/node.(*Node).Start
    at ./node/node.go:121
 7  0x0000000000ebcb03 in github.com/Baptist-Publication/chorus/src/chain/node.RunNode
    at ./node/node.go:98
 8  0x0000000000ed8eb2 in github.com/Baptist-Publication/chorus/src/chain/cmd.glob..func5
    at ./cmd/run.go:48
 9  0x000000000063a899 in github.com/Baptist-Publication/chorus/vendor/github.com/spf13/cobra.(*Command).execute
    at /home/pct/go/src/github.com/Baptist-Publication/chorus/vendor/github.com/spf13/cobra/command.go:702
10  0x000000000063b26c in github.com/Baptist-Publication/chorus/vendor/github.com/spf13/cobra.(*Command).ExecuteC
    at /home/pct/go/src/github.com/Baptist-Publication/chorus/vendor/github.com/spf13/cobra/command.go:783
Tags: