package types import ( "bytes" "encoding/json" "sort" cmn "github.com/tendermint/tendermint/libs/common" ) //------------------------------------------------------------------------------ // Validators is a list of validators that implements the Sort interface type Validators []Validator var _ sort.Interface = (Validators)(nil) // All these methods for Validators: // Len, Less and Swap // are for Validators to implement sort.Interface // which will be used by the sort package. // See Issue https://github.com/tendermint/abci/issues/212 func (v Validators) Len() int { return len(v) } // XXX: doesn't distinguish same validator with different power func (v Validators) Less(i, j int) bool { return bytes.Compare(v[i].PubKey.Data, v[j].PubKey.Data) <= 0 } func (v Validators) Swap(i, j int) { v1 := v[i] v[i] = v[j] v[j] = v1 } func ValidatorsString(vs Validators) string { s := make([]validatorPretty, len(vs)) for i, v := range vs { s[i] = validatorPretty{ Address: v.Address, PubKey: v.PubKey.Data, Power: v.Power, } } b, err := json.Marshal(s) if err != nil { panic(err.Error()) } return string(b) } type validatorPretty struct { Address cmn.HexBytes `json:"address"` PubKey []byte `json:"pub_key"` Power int64 `json:"power"` }