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

Method constructEndorseMsg

consensus/vbft/msg_builder.go:287–323  ·  view source on GitHub ↗
(proposal *blockProposalMsg, forEmpty bool)

Source from the content-addressed store, hash-verified

285}
286
287func (self *Server) constructEndorseMsg(proposal *blockProposalMsg, forEmpty bool) (*blockEndorseMsg, error) {
288
289 // TODO, support faultyMsg reporting
290
291 var proposerSig, endorserSig []byte
292 var blkHash common.Uint256
293 var err error
294 if !forEmpty {
295 proposerSig = proposal.Block.Block.Header.SigData[0]
296 blkHash = proposal.Block.Block.Hash()
297
298 } else {
299 if proposal.Block.EmptyBlock == nil {
300 return nil, fmt.Errorf("blk %d proposal from %d has no empty proposal",
301 proposal.GetBlockNum(), proposal.Block.getProposer())
302 }
303
304 proposerSig = proposal.Block.EmptyBlock.Header.SigData[0]
305 blkHash = proposal.Block.EmptyBlock.Hash()
306 }
307 endorserSig, err = signature.Sign(self.account, blkHash[:])
308 if err != nil {
309 return nil, fmt.Errorf("endorser failed to sign block. hash:%x, err: %s", blkHash, err)
310 }
311
312 msg := &blockEndorseMsg{
313 Endorser: self.Index,
314 EndorsedProposer: proposal.Block.getProposer(),
315 BlockNum: proposal.Block.getBlockNum(),
316 EndorsedBlockHash: blkHash,
317 EndorseForEmpty: forEmpty,
318 ProposerSig: proposerSig,
319 EndorserSig: endorserSig,
320 }
321
322 return msg, nil
323}
324
325func (self *Server) constructCommitMsg(proposal *blockProposalMsg, endorses []*blockEndorseMsg, forEmpty bool) (*blockCommitMsg, error) {
326

Callers 2

actionLoopMethod · 0.95
endorseBlockMethod · 0.95

Calls 6

SignFunction · 0.92
ErrorfMethod · 0.80
getProposerMethod · 0.80
getBlockNumMethod · 0.80
HashMethod · 0.65
GetBlockNumMethod · 0.65

Tested by

no test coverage detected