block.BlockWitness.Delete(node.Order)
continue
}
+
+ return errors.New("current blocker has double signed the block")
} else if err != nil {
return err
}
return c.eventDispatcher.Post(event.BlockSignatureEvent{BlockHash: *blockHash, Signature: signature, XPub: xPub})
}
-// SignBlockHeader signing the block if current node is consensus node
-func (c *Chain) SignBlockHeader(blockHeader *types.BlockHeader) error {
- c.cond.L.Lock()
- defer c.cond.L.Unlock()
-
- _, err := c.signBlockHeader(blockHeader)
- if err != nil {
- return err
- }
-
- return c.store.SaveBlockHeader(blockHeader)
-}
-
func (c *Chain) applyBlockSign(blockHeader *types.BlockHeader) error {
- signature, err := c.signBlockHeader(blockHeader)
+ signature, err := c.SignBlockHeader(blockHeader)
if err != nil {
return err
}
return c.eventDispatcher.Post(event.BlockSignatureEvent{BlockHash: blockHeader.Hash(), Signature: signature, XPub: xpub[:]})
}
-func (c *Chain) signBlockHeader(blockHeader *types.BlockHeader) ([]byte, error) {
+// SignBlockHeader signing the block if current node is consensus node
+func (c *Chain) SignBlockHeader(blockHeader *types.BlockHeader) ([]byte, error) {
xprv := config.CommonConfig.PrivateKey()
xpub := xprv.XPub()
node, err := c.getConsensusNode(&blockHeader.PreviousBlockHash, xpub.String())