github.com/arieschain/arieschain@v0.0.0-20191023063405-37c074544356/consensus/dbft/validator/validator.go (about)

     1  package validator
     2  
     3  import (
     4  	"github.com/quickchainproject/quickchain/common"
     5  	bft "github.com/quickchainproject/quickchain/consensus/dbft"
     6  )
     7  
     8  func New(addr common.Address) bft.Validator {
     9  	return &defaultValidator{
    10  		address: addr,
    11  	}
    12  }
    13  
    14  func NewSet(addrs []common.Address, policy bft.ProposerPolicy) bft.ValidatorSet {
    15  	return newDefaultSet(addrs, policy)
    16  }
    17  
    18  func ExtractValidators(extraData []byte) []common.Address {
    19  	// get the validator addresses
    20  	addrs := make([]common.Address, (len(extraData) / common.AddressLength))
    21  	for i := 0; i < len(addrs); i++ {
    22  		copy(addrs[i][:], extraData[i*common.AddressLength:])
    23  	}
    24  
    25  	return addrs
    26  }
    27  
    28  // Check whether the extraData is presented in prescribed form
    29  func ValidExtraData(extraData []byte) bool {
    30  	return len(extraData)%common.AddressLength == 0
    31  }