(block *Block, forEmpty bool)
| 583 | } |
| 584 | |
| 585 | func (pool *BlockPool) addSignaturesToBlockLocked(block *Block, forEmpty bool) error { |
| 586 | |
| 587 | blkNum := block.getBlockNum() |
| 588 | c := pool.getCandidateInfoLocked(blkNum) |
| 589 | if c == nil { |
| 590 | panic(fmt.Errorf("non-candidates for block %d yet when seal block", blkNum)) |
| 591 | } |
| 592 | |
| 593 | bookkeepers := make([]keypair.PublicKey, 0) |
| 594 | sigData := make([][]byte, 0) |
| 595 | |
| 596 | // add proposer sig |
| 597 | proposer := block.getProposer() |
| 598 | proposerPk := pool.server.peerPool.GetPeerPubKey(proposer) |
| 599 | if !forEmpty { |
| 600 | bookkeepers = append(bookkeepers, proposerPk) |
| 601 | sigData = append(sigData, block.Block.Header.SigData[0]) |
| 602 | } else { |
| 603 | if block.EmptyBlock == nil { |
| 604 | return fmt.Errorf("block has no empty candidate") |
| 605 | } |
| 606 | bookkeepers = append(bookkeepers, proposerPk) |
| 607 | sigData = append(sigData, block.EmptyBlock.Header.SigData[0]) |
| 608 | } |
| 609 | |
| 610 | // add endorsers' sig |
| 611 | for endorser, eSigs := range c.EndorseSigs { |
| 612 | for _, sig := range eSigs { |
| 613 | if sig.EndorsedProposer == proposer && sig.ForEmpty == forEmpty && endorser != proposer { |
| 614 | endoresrPk := pool.server.peerPool.GetPeerPubKey(endorser) |
| 615 | if endoresrPk != nil { |
| 616 | bookkeepers = append(bookkeepers, endoresrPk) |
| 617 | sigData = append(sigData, sig.Signature) |
| 618 | } |
| 619 | break |
| 620 | } |
| 621 | } |
| 622 | } |
| 623 | if !forEmpty { |
| 624 | block.Block.Header.Bookkeepers = bookkeepers |
| 625 | block.Block.Header.SigData = sigData |
| 626 | } else { |
| 627 | block.EmptyBlock.Header.Bookkeepers = bookkeepers |
| 628 | block.EmptyBlock.Header.SigData = sigData |
| 629 | } |
| 630 | |
| 631 | return nil |
| 632 | } |
| 633 | |
| 634 | func (pool *BlockPool) setBlockSealed(block *Block, forEmpty bool, sigdata bool) error { |
| 635 | pool.lock.Lock() |
no test coverage detected