func (cc *ConsortiumsConfig) Validate(tx interface{}, groups map[string]ValueProposer) error {
	var ok bool
	for key, group := range groups {
		cc.consortiums[key], ok = group.(*ConsortiumGroup)
		if !ok {
			return fmt.Errorf("Unexpected group type: %T", group)
		}
	}
	return nil
}
Validate builds the Consortiums map
package config
import (
	"fmt"
	"github.com/inklabsfoundation/inkchain/common/config/msp"
)
const (
	ConsortiumsGroupKey = "Consortiums"
)
type ConsortiumsGroup struct {
	*Proposer
	*ConsortiumsConfig
	mspConfig *msp.MSPConfigHandler
}
func NewConsortiumsGroup(mspConfig *msp.MSPConfigHandler) *ConsortiumsGroup {
	cg := &ConsortiumsGroup{
		mspConfig: mspConfig,
	}
	cg.Proposer = NewProposer(cg)
	return cg
}
func (cg *ConsortiumsGroup) NewGroup(name string) (ValueProposer, error) {
	return NewConsortiumGroup(cg.mspConfig), nil
}
func (cg *ConsortiumsGroup) Allocate() Values {
	return NewConsortiumsConfig(cg)
}
type ConsortiumsConfig struct {
	*standardValues
	consortiums map[string]Consortium
	consortiumsGroup *ConsortiumsGroup
}
func NewConsortiumsConfig(cg *ConsortiumsGroup) *ConsortiumsConfig {
	cc := &ConsortiumsConfig{
		consortiums:      make(map[string]Consortium),
		consortiumsGroup: cg,
	}
	var err error
	cc.standardValues, err = NewStandardValues()
	if err != nil {
		logger.Panicf("Programming error: %s", err)
	}
	return cc
}
func (cc *ConsortiumsConfig) Consortiums() map[string]Consortium {
	return cc.consortiums
}
func (cc *ConsortiumsConfig) Commit() {
	cc.consortiumsGroup.ConsortiumsConfig = cc
}