/* To prevent namespace collision between consumer modules, we define a type Subspace. A Subspace can only be generated by the keeper, and the keeper checks the existence of the Subspace having the same name before generating the Subspace. Consumer modules must take a Subspace (via Keeper.Subspace), not the keeper itself. This isolates each modules from the others and make them modify their respective parameters safely. Keeper can be treated as master permission for all Subspaces (via Keeper.GetSubspace), so should be passed to proper modules (ex. x/governance). */ package subspace