From: muscle_boy Date: Thu, 6 Jun 2019 02:10:11 +0000 (+0800) Subject: add broadcast block signature (#139) X-Git-Tag: v1.0.5~208^2~59 X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=commitdiff_plain;h=a989600cdbd46ba50d9047d08b5268d598c5bba4 add broadcast block signature (#139) --- diff --git a/protocol/bbft.go b/protocol/bbft.go index 40b27300..4fdb6074 100644 --- a/protocol/bbft.go +++ b/protocol/bbft.go @@ -11,6 +11,7 @@ import ( "github.com/vapor/protocol/bc" "github.com/vapor/protocol/bc/types" "github.com/vapor/protocol/state" + "github.com/vapor/event" ) const ( @@ -65,7 +66,11 @@ func (c *Chain) ProcessBlockSignature(signature []byte, xPub [64]byte, blockHash return err } - if consensusNode.XPub.Verify(blockHash.Bytes(), signature) { + if exist, err := blockNode.BlockWitness.Test(uint32(consensusNode.Order)); err != nil && exist { + return nil + } + + if !consensusNode.XPub.Verify(blockHash.Bytes(), signature) { return errInvalidSignature } @@ -90,7 +95,8 @@ func (c *Chain) ProcessBlockSignature(signature []byte, xPub [64]byte, blockHash c.bestIrreversibleNode = bestIrreversibleNode } - return nil + + return c.eventDispatcher.Post(event.BlockSignatureEvent{BlockHash: *blockHash, Signature: signature, XPub: xPub}) } // validateSign verify the signatures of block, and return the number of correct signature