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 }