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

Method constructCommitMsg

consensus/vbft/msg_builder.go:325–367  ·  view source on GitHub ↗
(proposal *blockProposalMsg, endorses []*blockEndorseMsg, forEmpty bool)

Source from the content-addressed store, hash-verified

323}
324
325func (self *Server) constructCommitMsg(proposal *blockProposalMsg, endorses []*blockEndorseMsg, forEmpty bool) (*blockCommitMsg, error) {
326
327 // TODO, support faultyMsg reporting
328
329 var proposerSig, committerSig []byte
330 var blkHash common.Uint256
331 var err error
332
333 if !forEmpty {
334 proposerSig = proposal.Block.Block.Header.SigData[0]
335 blkHash = proposal.Block.Block.Hash()
336 } else {
337 if proposal.Block.EmptyBlock == nil {
338 return nil, fmt.Errorf("blk %d proposal from %d has no empty proposal",
339 proposal.GetBlockNum(), proposal.Block.getProposer())
340 }
341
342 proposerSig = proposal.Block.EmptyBlock.Header.SigData[0]
343 blkHash = proposal.Block.EmptyBlock.Hash()
344 }
345 committerSig, err = signature.Sign(self.account, blkHash[:])
346 if err != nil {
347 return nil, fmt.Errorf("endorser failed to sign block. hash:%x, caused by: %s", blkHash, err)
348 }
349
350 endorsersSig := make(map[uint32][]byte)
351 for _, e := range endorses {
352 endorsersSig[e.Endorser] = e.EndorserSig
353 }
354
355 msg := &blockCommitMsg{
356 Committer: self.Index,
357 BlockProposer: proposal.Block.getProposer(),
358 BlockNum: proposal.Block.getBlockNum(),
359 CommitBlockHash: blkHash,
360 CommitForEmpty: forEmpty,
361 ProposerSig: proposerSig,
362 EndorsersSig: endorsersSig,
363 CommitterSig: committerSig,
364 }
365
366 return msg, nil
367}
368
369func (self *Server) constructBlockFetchMsg(blkNum uint32) *blockFetchMsg {
370 return &blockFetchMsg{

Callers 1

commitBlockMethod · 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