MCPcopy Create free account
hub / github.com/DNAProject/DNA / newBlockProposal

Method newBlockProposal

consensus/vbft/block_pool.go:134–163  ·  view source on GitHub ↗

add proposalMsg to CandidateInfo

(msg *blockProposalMsg)

Source from the content-addressed store, hash-verified

132// add proposalMsg to CandidateInfo
133//
134func (pool *BlockPool) newBlockProposal(msg *blockProposalMsg) error {
135 pool.lock.Lock()
136 defer pool.lock.Unlock()
137
138 blkNum := msg.GetBlockNum()
139 candidate := pool.getCandidateInfoLocked(blkNum)
140
141 // check dup-proposal from same proposer
142 for _, p := range candidate.Proposals {
143 if p.Block.getProposer() == msg.Block.getProposer() {
144 if bytes.Compare(p.Block.Block.Header.SigData[0], msg.Block.Block.Header.SigData[0]) == 0 {
145 return nil
146 }
147 return errDupProposal
148 }
149 }
150
151 // add msg to proposals
152 candidate.Proposals = append(candidate.Proposals, msg)
153
154 // add endorse-sig
155 proposer := msg.Block.getProposer()
156 eSig := &CandidateEndorseSigInfo{
157 EndorsedProposer: proposer,
158 Signature: msg.Block.Block.Header.SigData[0],
159 ForEmpty: false,
160 }
161 pool.addBlockEndorsementLocked(msg.GetBlockNum(), proposer, eSig, false)
162 return nil
163}
164
165func (pool *BlockPool) getBlockProposals(blkNum uint32) []*blockProposalMsg {
166 pool.lock.RLock()

Callers 3

startNewRoundMethod · 0.80
processMsgEventMethod · 0.80
actionLoopMethod · 0.80

Calls 4

getProposerMethod · 0.80
GetBlockNumMethod · 0.65

Tested by

no test coverage detected