From 1f9871c76c32c9e5527998ebe7ffcfe82972293f Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Tue, 24 May 2022 21:09:24 -0400 Subject: [PATCH] feat: start app wiring with runtime and x/params modules (#11924) * feat: start app wiring with runtime and x/params modules * WIP * WIP * docs * docs, cleanup * fixing tests * rollback unrelated changes * fix * test fixes * simplification, tests * fix tests * docs * go mod tidy * update module path * codegen * address middleware removal * update container alpha 4 * Fix cosmossdk.io/api dependency conflict - go mod tidy Co-authored-by: Matt Kocubinski --- .../app/runtime/v1alpha1/module.pulsar.go | 994 ++++++++++++++++++ .../module/v1}/module.pulsar.go | 143 ++- baseapp/options.go | 5 + core/appconfig/config.go | 12 +- core/appconfig/config_test.go | 2 +- core/go.mod | 13 +- core/go.sum | 29 +- core/internal/registry.go | 2 +- core/internal/testpb/test.pulsar.go | 2 +- go.mod | 6 + go.sum | 8 +- proto/cosmos/app/module/v1alpha1/module.proto | 13 - .../cosmos/app/runtime/v1alpha1/module.proto | 31 + proto/cosmos/params/module/v1/module.proto | 12 + runtime/app.go | 152 +++ runtime/builder.go | 41 + runtime/module.go | 119 +++ runtime/wrappers.go | 33 + simapp/app.go | 161 +-- simapp/app.yaml | 25 + simapp/app_test.go | 10 +- simapp/export.go | 2 +- simapp/sim_test.go | 5 +- simapp/upgrades.go | 6 +- x/params/module.go | 44 +- 25 files changed, 1626 insertions(+), 244 deletions(-) create mode 100644 api/cosmos/app/runtime/v1alpha1/module.pulsar.go rename api/cosmos/{app/module/v1alpha1 => params/module/v1}/module.pulsar.go (70%) delete mode 100644 proto/cosmos/app/module/v1alpha1/module.proto create mode 100644 proto/cosmos/app/runtime/v1alpha1/module.proto create mode 100644 proto/cosmos/params/module/v1/module.proto create mode 100644 runtime/app.go create mode 100644 runtime/builder.go create mode 100644 runtime/module.go create mode 100644 runtime/wrappers.go create mode 100644 simapp/app.yaml diff --git a/api/cosmos/app/runtime/v1alpha1/module.pulsar.go b/api/cosmos/app/runtime/v1alpha1/module.pulsar.go new file mode 100644 index 000000000000..7ada62c980b2 --- /dev/null +++ b/api/cosmos/app/runtime/v1alpha1/module.pulsar.go @@ -0,0 +1,994 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package runtimev1alpha1 + +import ( + _ "cosmossdk.io/api/cosmos/app/v1alpha1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_Module_2_list)(nil) + +type _Module_2_list struct { + list *[]string +} + +func (x *_Module_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Module_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_Module_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_Module_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_Module_2_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message Module at list field BeginBlockers as it is not of Message kind")) +} + +func (x *_Module_2_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_Module_2_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_Module_2_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_Module_3_list)(nil) + +type _Module_3_list struct { + list *[]string +} + +func (x *_Module_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Module_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_Module_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_Module_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_Module_3_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message Module at list field EndBlockers as it is not of Message kind")) +} + +func (x *_Module_3_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_Module_3_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_Module_3_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_Module_4_list)(nil) + +type _Module_4_list struct { + list *[]string +} + +func (x *_Module_4_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Module_4_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_Module_4_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_Module_4_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_Module_4_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message Module at list field InitGenesis as it is not of Message kind")) +} + +func (x *_Module_4_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_Module_4_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_Module_4_list) IsValid() bool { + return x.list != nil +} + +var ( + md_Module protoreflect.MessageDescriptor + fd_Module_app_name protoreflect.FieldDescriptor + fd_Module_begin_blockers protoreflect.FieldDescriptor + fd_Module_end_blockers protoreflect.FieldDescriptor + fd_Module_init_genesis protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_app_runtime_v1alpha1_module_proto_init() + md_Module = File_cosmos_app_runtime_v1alpha1_module_proto.Messages().ByName("Module") + fd_Module_app_name = md_Module.Fields().ByName("app_name") + fd_Module_begin_blockers = md_Module.Fields().ByName("begin_blockers") + fd_Module_end_blockers = md_Module.Fields().ByName("end_blockers") + fd_Module_init_genesis = md_Module.Fields().ByName("init_genesis") +} + +var _ protoreflect.Message = (*fastReflection_Module)(nil) + +type fastReflection_Module Module + +func (x *Module) ProtoReflect() protoreflect.Message { + return (*fastReflection_Module)(x) +} + +func (x *Module) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_app_runtime_v1alpha1_module_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Module_messageType fastReflection_Module_messageType +var _ protoreflect.MessageType = fastReflection_Module_messageType{} + +type fastReflection_Module_messageType struct{} + +func (x fastReflection_Module_messageType) Zero() protoreflect.Message { + return (*fastReflection_Module)(nil) +} +func (x fastReflection_Module_messageType) New() protoreflect.Message { + return new(fastReflection_Module) +} +func (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Module) Type() protoreflect.MessageType { + return _fastReflection_Module_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Module) New() protoreflect.Message { + return new(fastReflection_Module) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Module) Interface() protoreflect.ProtoMessage { + return (*Module)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.AppName != "" { + value := protoreflect.ValueOfString(x.AppName) + if !f(fd_Module_app_name, value) { + return + } + } + if len(x.BeginBlockers) != 0 { + value := protoreflect.ValueOfList(&_Module_2_list{list: &x.BeginBlockers}) + if !f(fd_Module_begin_blockers, value) { + return + } + } + if len(x.EndBlockers) != 0 { + value := protoreflect.ValueOfList(&_Module_3_list{list: &x.EndBlockers}) + if !f(fd_Module_end_blockers, value) { + return + } + } + if len(x.InitGenesis) != 0 { + value := protoreflect.ValueOfList(&_Module_4_list{list: &x.InitGenesis}) + if !f(fd_Module_init_genesis, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.app.runtime.v1alpha1.Module.app_name": + return x.AppName != "" + case "cosmos.app.runtime.v1alpha1.Module.begin_blockers": + return len(x.BeginBlockers) != 0 + case "cosmos.app.runtime.v1alpha1.Module.end_blockers": + return len(x.EndBlockers) != 0 + case "cosmos.app.runtime.v1alpha1.Module.init_genesis": + return len(x.InitGenesis) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.runtime.v1alpha1.Module")) + } + panic(fmt.Errorf("message cosmos.app.runtime.v1alpha1.Module does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.app.runtime.v1alpha1.Module.app_name": + x.AppName = "" + case "cosmos.app.runtime.v1alpha1.Module.begin_blockers": + x.BeginBlockers = nil + case "cosmos.app.runtime.v1alpha1.Module.end_blockers": + x.EndBlockers = nil + case "cosmos.app.runtime.v1alpha1.Module.init_genesis": + x.InitGenesis = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.runtime.v1alpha1.Module")) + } + panic(fmt.Errorf("message cosmos.app.runtime.v1alpha1.Module does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.app.runtime.v1alpha1.Module.app_name": + value := x.AppName + return protoreflect.ValueOfString(value) + case "cosmos.app.runtime.v1alpha1.Module.begin_blockers": + if len(x.BeginBlockers) == 0 { + return protoreflect.ValueOfList(&_Module_2_list{}) + } + listValue := &_Module_2_list{list: &x.BeginBlockers} + return protoreflect.ValueOfList(listValue) + case "cosmos.app.runtime.v1alpha1.Module.end_blockers": + if len(x.EndBlockers) == 0 { + return protoreflect.ValueOfList(&_Module_3_list{}) + } + listValue := &_Module_3_list{list: &x.EndBlockers} + return protoreflect.ValueOfList(listValue) + case "cosmos.app.runtime.v1alpha1.Module.init_genesis": + if len(x.InitGenesis) == 0 { + return protoreflect.ValueOfList(&_Module_4_list{}) + } + listValue := &_Module_4_list{list: &x.InitGenesis} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.runtime.v1alpha1.Module")) + } + panic(fmt.Errorf("message cosmos.app.runtime.v1alpha1.Module does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.app.runtime.v1alpha1.Module.app_name": + x.AppName = value.Interface().(string) + case "cosmos.app.runtime.v1alpha1.Module.begin_blockers": + lv := value.List() + clv := lv.(*_Module_2_list) + x.BeginBlockers = *clv.list + case "cosmos.app.runtime.v1alpha1.Module.end_blockers": + lv := value.List() + clv := lv.(*_Module_3_list) + x.EndBlockers = *clv.list + case "cosmos.app.runtime.v1alpha1.Module.init_genesis": + lv := value.List() + clv := lv.(*_Module_4_list) + x.InitGenesis = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.runtime.v1alpha1.Module")) + } + panic(fmt.Errorf("message cosmos.app.runtime.v1alpha1.Module does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.runtime.v1alpha1.Module.begin_blockers": + if x.BeginBlockers == nil { + x.BeginBlockers = []string{} + } + value := &_Module_2_list{list: &x.BeginBlockers} + return protoreflect.ValueOfList(value) + case "cosmos.app.runtime.v1alpha1.Module.end_blockers": + if x.EndBlockers == nil { + x.EndBlockers = []string{} + } + value := &_Module_3_list{list: &x.EndBlockers} + return protoreflect.ValueOfList(value) + case "cosmos.app.runtime.v1alpha1.Module.init_genesis": + if x.InitGenesis == nil { + x.InitGenesis = []string{} + } + value := &_Module_4_list{list: &x.InitGenesis} + return protoreflect.ValueOfList(value) + case "cosmos.app.runtime.v1alpha1.Module.app_name": + panic(fmt.Errorf("field app_name of message cosmos.app.runtime.v1alpha1.Module is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.runtime.v1alpha1.Module")) + } + panic(fmt.Errorf("message cosmos.app.runtime.v1alpha1.Module does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.runtime.v1alpha1.Module.app_name": + return protoreflect.ValueOfString("") + case "cosmos.app.runtime.v1alpha1.Module.begin_blockers": + list := []string{} + return protoreflect.ValueOfList(&_Module_2_list{list: &list}) + case "cosmos.app.runtime.v1alpha1.Module.end_blockers": + list := []string{} + return protoreflect.ValueOfList(&_Module_3_list{list: &list}) + case "cosmos.app.runtime.v1alpha1.Module.init_genesis": + list := []string{} + return protoreflect.ValueOfList(&_Module_4_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.runtime.v1alpha1.Module")) + } + panic(fmt.Errorf("message cosmos.app.runtime.v1alpha1.Module does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.app.runtime.v1alpha1.Module", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Module) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Module) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.AppName) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.BeginBlockers) > 0 { + for _, s := range x.BeginBlockers { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.EndBlockers) > 0 { + for _, s := range x.EndBlockers { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.InitGenesis) > 0 { + for _, s := range x.InitGenesis { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.InitGenesis) > 0 { + for iNdEx := len(x.InitGenesis) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.InitGenesis[iNdEx]) + copy(dAtA[i:], x.InitGenesis[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.InitGenesis[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if len(x.EndBlockers) > 0 { + for iNdEx := len(x.EndBlockers) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.EndBlockers[iNdEx]) + copy(dAtA[i:], x.EndBlockers[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EndBlockers[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(x.BeginBlockers) > 0 { + for iNdEx := len(x.BeginBlockers) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.BeginBlockers[iNdEx]) + copy(dAtA[i:], x.BeginBlockers[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.BeginBlockers[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.AppName) > 0 { + i -= len(x.AppName) + copy(dAtA[i:], x.AppName) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AppName))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AppName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.AppName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BeginBlockers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.BeginBlockers = append(x.BeginBlockers, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EndBlockers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.EndBlockers = append(x.EndBlockers, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field InitGenesis", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.InitGenesis = append(x.InitGenesis, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: cosmos/app/runtime/v1alpha1/module.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Module is the config object for the runtime module. +type Module struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // app_name is the name of the app. + AppName string `protobuf:"bytes,1,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + // begin_blockers specifies the module names of begin blockers + // to call in the order in which they should be called. If this is left empty + // no begin blocker will be registered. + BeginBlockers []string `protobuf:"bytes,2,rep,name=begin_blockers,json=beginBlockers,proto3" json:"begin_blockers,omitempty"` + // end_blockers specifies the module names of the end blockers + // to call in the order in which they should be called. If this is left empty + // no end blocker will be registered. + EndBlockers []string `protobuf:"bytes,3,rep,name=end_blockers,json=endBlockers,proto3" json:"end_blockers,omitempty"` + // init_genesis specifies the module names of init genesis functions + // to call in the order in which they should be called. If this is left empty + // no init genesis function will be registered. + InitGenesis []string `protobuf:"bytes,4,rep,name=init_genesis,json=initGenesis,proto3" json:"init_genesis,omitempty"` +} + +func (x *Module) Reset() { + *x = Module{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_app_runtime_v1alpha1_module_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Module) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Module) ProtoMessage() {} + +// Deprecated: Use Module.ProtoReflect.Descriptor instead. +func (*Module) Descriptor() ([]byte, []int) { + return file_cosmos_app_runtime_v1alpha1_module_proto_rawDescGZIP(), []int{0} +} + +func (x *Module) GetAppName() string { + if x != nil { + return x.AppName + } + return "" +} + +func (x *Module) GetBeginBlockers() []string { + if x != nil { + return x.BeginBlockers + } + return nil +} + +func (x *Module) GetEndBlockers() []string { + if x != nil { + return x.EndBlockers + } + return nil +} + +func (x *Module) GetInitGenesis() []string { + if x != nil { + return x.InitGenesis + } + return nil +} + +var File_cosmos_app_runtime_v1alpha1_module_proto protoreflect.FileDescriptor + +var file_cosmos_app_runtime_v1alpha1_module_proto_rawDesc = []byte{ + 0x0a, 0x28, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd5, 0x01, 0x0a, 0x06, 0x4d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, + 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, + 0x74, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x3a, 0x43, 0xba, 0xc0, + 0x96, 0xda, 0x01, 0x3d, 0x0a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, + 0x64, 0x6b, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x13, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x42, 0xfb, 0x01, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, + 0x70, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x41, 0x52, 0xaa, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x1b, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, + 0x41, 0x70, 0x70, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x27, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, + 0x70, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x70, 0x70, 0x3a, 0x3a, 0x52, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_cosmos_app_runtime_v1alpha1_module_proto_rawDescOnce sync.Once + file_cosmos_app_runtime_v1alpha1_module_proto_rawDescData = file_cosmos_app_runtime_v1alpha1_module_proto_rawDesc +) + +func file_cosmos_app_runtime_v1alpha1_module_proto_rawDescGZIP() []byte { + file_cosmos_app_runtime_v1alpha1_module_proto_rawDescOnce.Do(func() { + file_cosmos_app_runtime_v1alpha1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_app_runtime_v1alpha1_module_proto_rawDescData) + }) + return file_cosmos_app_runtime_v1alpha1_module_proto_rawDescData +} + +var file_cosmos_app_runtime_v1alpha1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_cosmos_app_runtime_v1alpha1_module_proto_goTypes = []interface{}{ + (*Module)(nil), // 0: cosmos.app.runtime.v1alpha1.Module +} +var file_cosmos_app_runtime_v1alpha1_module_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_cosmos_app_runtime_v1alpha1_module_proto_init() } +func file_cosmos_app_runtime_v1alpha1_module_proto_init() { + if File_cosmos_app_runtime_v1alpha1_module_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_cosmos_app_runtime_v1alpha1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Module); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cosmos_app_runtime_v1alpha1_module_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_cosmos_app_runtime_v1alpha1_module_proto_goTypes, + DependencyIndexes: file_cosmos_app_runtime_v1alpha1_module_proto_depIdxs, + MessageInfos: file_cosmos_app_runtime_v1alpha1_module_proto_msgTypes, + }.Build() + File_cosmos_app_runtime_v1alpha1_module_proto = out.File + file_cosmos_app_runtime_v1alpha1_module_proto_rawDesc = nil + file_cosmos_app_runtime_v1alpha1_module_proto_goTypes = nil + file_cosmos_app_runtime_v1alpha1_module_proto_depIdxs = nil +} diff --git a/api/cosmos/app/module/v1alpha1/module.pulsar.go b/api/cosmos/params/module/v1/module.pulsar.go similarity index 70% rename from api/cosmos/app/module/v1alpha1/module.pulsar.go rename to api/cosmos/params/module/v1/module.pulsar.go index 96e92b72f47d..1d4441751567 100644 --- a/api/cosmos/app/module/v1alpha1/module.pulsar.go +++ b/api/cosmos/params/module/v1/module.pulsar.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-pulsar. DO NOT EDIT. -package modulev1alpha1 +package modulev1 import ( _ "cosmossdk.io/api/cosmos/app/v1alpha1" @@ -18,8 +18,8 @@ var ( ) func init() { - file_cosmos_app_module_v1alpha1_module_proto_init() - md_Module = File_cosmos_app_module_v1alpha1_module_proto.Messages().ByName("Module") + file_cosmos_params_module_v1_module_proto_init() + md_Module = File_cosmos_params_module_v1_module_proto.Messages().ByName("Module") } var _ protoreflect.Message = (*fastReflection_Module)(nil) @@ -31,7 +31,7 @@ func (x *Module) ProtoReflect() protoreflect.Message { } func (x *Module) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_app_module_v1alpha1_module_proto_msgTypes[0] + mi := &file_cosmos_params_module_v1_module_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -104,9 +104,9 @@ func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.module.v1alpha1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.params.module.v1.Module")) } - panic(fmt.Errorf("message cosmos.app.module.v1alpha1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message cosmos.params.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -120,9 +120,9 @@ func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.module.v1alpha1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.params.module.v1.Module")) } - panic(fmt.Errorf("message cosmos.app.module.v1alpha1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message cosmos.params.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -136,9 +136,9 @@ func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) pro switch descriptor.FullName() { default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.module.v1alpha1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.params.module.v1.Module")) } - panic(fmt.Errorf("message cosmos.app.module.v1alpha1.Module does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message cosmos.params.module.v1.Module does not contain field %s", descriptor.FullName())) } } @@ -156,9 +156,9 @@ func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value proto switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.module.v1alpha1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.params.module.v1.Module")) } - panic(fmt.Errorf("message cosmos.app.module.v1alpha1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message cosmos.params.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -176,9 +176,9 @@ func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protore switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.module.v1alpha1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.params.module.v1.Module")) } - panic(fmt.Errorf("message cosmos.app.module.v1alpha1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message cosmos.params.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -189,9 +189,9 @@ func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protor switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.module.v1alpha1.Module")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.params.module.v1.Module")) } - panic(fmt.Errorf("message cosmos.app.module.v1alpha1.Module does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message cosmos.params.module.v1.Module does not contain field %s", fd.FullName())) } } @@ -201,7 +201,7 @@ func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protor func (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in cosmos.app.module.v1alpha1.Module", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in cosmos.params.module.v1.Module", d.FullName())) } panic("unreachable") } @@ -373,7 +373,7 @@ func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { // versions: // protoc-gen-go v1.27.0 // protoc (unknown) -// source: cosmos/app/module/v1alpha1/module.proto +// source: cosmos/params/module/v1/module.proto const ( // Verify that this generated code is sufficiently up-to-date. @@ -382,7 +382,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Module is the module config object for the cosmos.app v1 app module. +// Module is the config object of the params module. type Module struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -392,7 +392,7 @@ type Module struct { func (x *Module) Reset() { *x = Module{} if protoimpl.UnsafeEnabled { - mi := &file_cosmos_app_module_v1alpha1_module_proto_msgTypes[0] + mi := &file_cosmos_params_module_v1_module_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -406,59 +406,56 @@ func (*Module) ProtoMessage() {} // Deprecated: Use Module.ProtoReflect.Descriptor instead. func (*Module) Descriptor() ([]byte, []int) { - return file_cosmos_app_module_v1alpha1_module_proto_rawDescGZIP(), []int{0} + return file_cosmos_params_module_v1_module_proto_rawDescGZIP(), []int{0} } -var File_cosmos_app_module_v1alpha1_module_proto protoreflect.FileDescriptor - -var file_cosmos_app_module_v1alpha1_module_proto_rawDesc = []byte{ - 0x0a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, - 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x49, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x3a, 0x3f, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x39, 0x0a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x70, 0x70, 0x12, 0x15, 0x0a, 0x13, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x42, 0xf4, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, - 0x70, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x3b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0xa2, 0x02, 0x03, 0x43, 0x41, 0x4d, 0xaa, 0x02, 0x1a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x70, 0x70, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0xca, 0x02, 0x1a, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x70, - 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0xe2, 0x02, 0x26, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x70, 0x5c, 0x4d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1d, 0x43, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x70, 0x70, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, - 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, +var File_cosmos_params_module_v1_module_proto protoreflect.FileDescriptor + +var file_cosmos_params_module_v1_module_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2f, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, + 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x37, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x2d, 0xba, 0xc0, 0x96, + 0xda, 0x01, 0x27, 0x0a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, + 0x6b, 0x2f, 0x78, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xdc, 0x01, 0x0a, 0x1b, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, + 0x50, 0x4d, 0xaa, 0x02, 0x17, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5c, 0x4d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x23, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1a, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x3a, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_cosmos_app_module_v1alpha1_module_proto_rawDescOnce sync.Once - file_cosmos_app_module_v1alpha1_module_proto_rawDescData = file_cosmos_app_module_v1alpha1_module_proto_rawDesc + file_cosmos_params_module_v1_module_proto_rawDescOnce sync.Once + file_cosmos_params_module_v1_module_proto_rawDescData = file_cosmos_params_module_v1_module_proto_rawDesc ) -func file_cosmos_app_module_v1alpha1_module_proto_rawDescGZIP() []byte { - file_cosmos_app_module_v1alpha1_module_proto_rawDescOnce.Do(func() { - file_cosmos_app_module_v1alpha1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_app_module_v1alpha1_module_proto_rawDescData) +func file_cosmos_params_module_v1_module_proto_rawDescGZIP() []byte { + file_cosmos_params_module_v1_module_proto_rawDescOnce.Do(func() { + file_cosmos_params_module_v1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_params_module_v1_module_proto_rawDescData) }) - return file_cosmos_app_module_v1alpha1_module_proto_rawDescData + return file_cosmos_params_module_v1_module_proto_rawDescData } -var file_cosmos_app_module_v1alpha1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_cosmos_app_module_v1alpha1_module_proto_goTypes = []interface{}{ - (*Module)(nil), // 0: cosmos.app.module.v1alpha1.Module +var file_cosmos_params_module_v1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_cosmos_params_module_v1_module_proto_goTypes = []interface{}{ + (*Module)(nil), // 0: cosmos.params.module.v1.Module } -var file_cosmos_app_module_v1alpha1_module_proto_depIdxs = []int32{ +var file_cosmos_params_module_v1_module_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for method output_type 0, // [0:0] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name @@ -466,13 +463,13 @@ var file_cosmos_app_module_v1alpha1_module_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for field type_name } -func init() { file_cosmos_app_module_v1alpha1_module_proto_init() } -func file_cosmos_app_module_v1alpha1_module_proto_init() { - if File_cosmos_app_module_v1alpha1_module_proto != nil { +func init() { file_cosmos_params_module_v1_module_proto_init() } +func file_cosmos_params_module_v1_module_proto_init() { + if File_cosmos_params_module_v1_module_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_cosmos_app_module_v1alpha1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_cosmos_params_module_v1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Module); i { case 0: return &v.state @@ -489,18 +486,18 @@ func file_cosmos_app_module_v1alpha1_module_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_cosmos_app_module_v1alpha1_module_proto_rawDesc, + RawDescriptor: file_cosmos_params_module_v1_module_proto_rawDesc, NumEnums: 0, NumMessages: 1, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_cosmos_app_module_v1alpha1_module_proto_goTypes, - DependencyIndexes: file_cosmos_app_module_v1alpha1_module_proto_depIdxs, - MessageInfos: file_cosmos_app_module_v1alpha1_module_proto_msgTypes, + GoTypes: file_cosmos_params_module_v1_module_proto_goTypes, + DependencyIndexes: file_cosmos_params_module_v1_module_proto_depIdxs, + MessageInfos: file_cosmos_params_module_v1_module_proto_msgTypes, }.Build() - File_cosmos_app_module_v1alpha1_module_proto = out.File - file_cosmos_app_module_v1alpha1_module_proto_rawDesc = nil - file_cosmos_app_module_v1alpha1_module_proto_goTypes = nil - file_cosmos_app_module_v1alpha1_module_proto_depIdxs = nil + File_cosmos_params_module_v1_module_proto = out.File + file_cosmos_params_module_v1_module_proto_rawDesc = nil + file_cosmos_params_module_v1_module_proto_goTypes = nil + file_cosmos_params_module_v1_module_proto_depIdxs = nil } diff --git a/baseapp/options.go b/baseapp/options.go index 721fb612ffd8..57abd2b19960 100644 --- a/baseapp/options.go +++ b/baseapp/options.go @@ -238,3 +238,8 @@ func (app *BaseApp) SetStreamingService(s StreamingService) { // BaseApp will pass BeginBlock, DeliverTx, and EndBlock requests and responses to the streaming services to update their ABCI context app.abciListeners = append(app.abciListeners, s) } + +// SetTxDecoder sets the TxDecoder if it wasn't provided in the BaseApp constructor. +func (app *BaseApp) SetTxDecoder(txDecoder sdk.TxDecoder) { + app.txDecoder = txDecoder +} diff --git a/core/appconfig/config.go b/core/appconfig/config.go index f0894cc15cd3..2d8268b7fb72 100644 --- a/core/appconfig/config.go +++ b/core/appconfig/config.go @@ -14,13 +14,13 @@ import ( "github.com/cosmos/cosmos-sdk/container" - appv1alpha1 "github.com/cosmos/cosmos-sdk/api/cosmos/app/v1alpha1" + appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" "cosmossdk.io/core/internal" ) // LoadJSON loads an app config in JSON format. -func LoadJSON(bz []byte) container.Option { +func LoadJSON(bz []byte) container.Config { config := &appv1alpha1.Config{} err := protojson.Unmarshal(bz, config) if err != nil { @@ -31,7 +31,7 @@ func LoadJSON(bz []byte) container.Option { } // LoadYAML loads an app config in YAML format. -func LoadYAML(bz []byte) container.Option { +func LoadYAML(bz []byte) container.Config { j, err := yaml.YAMLToJSON(bz) if err != nil { return container.Error(err) @@ -42,8 +42,8 @@ func LoadYAML(bz []byte) container.Option { // Compose composes a v1alpha1 app config into a container option by resolving // the required modules and composing their options. -func Compose(appConfig *appv1alpha1.Config) container.Option { - opts := []container.Option{ +func Compose(appConfig *appv1alpha1.Config) container.Config { + opts := []container.Config{ container.Supply(appConfig), } @@ -99,7 +99,7 @@ func Compose(appConfig *appv1alpha1.Config) container.Option { } } - return container.Options(opts...) + return container.Configs(opts...) } func dumpRegisteredModules(modules map[protoreflect.FullName]*internal.ModuleInitializer) string { diff --git a/core/appconfig/config_test.go b/core/appconfig/config_test.go index 0f6b579cd88f..47daa6c8cfe6 100644 --- a/core/appconfig/config_test.go +++ b/core/appconfig/config_test.go @@ -16,7 +16,7 @@ import ( _ "cosmossdk.io/core/internal/testpb" ) -func expectContainerErrorContains(t *testing.T, option container.Option, contains string) { +func expectContainerErrorContains(t *testing.T, option container.Config, contains string) { t.Helper() err := container.Build(option) assert.ErrorContains(t, err, contains) diff --git a/core/go.mod b/core/go.mod index 02cecf9655ee..642b884de023 100644 --- a/core/go.mod +++ b/core/go.mod @@ -3,28 +3,25 @@ module cosmossdk.io/core go 1.18 require ( + cosmossdk.io/api v0.1.0-alpha8 github.com/cosmos/cosmos-proto v1.0.0-alpha7 - github.com/cosmos/cosmos-sdk/api v0.1.0 - github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.3 + github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.4 google.golang.org/protobuf v1.28.0 gotest.tools/v3 v3.2.0 sigs.k8s.io/yaml v1.3.0 ) require ( - github.com/fogleman/gg v1.3.0 // indirect - github.com/goccy/go-graphviz v0.0.9 // indirect - github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-cmp v0.5.6 // indirect github.com/kr/pretty v0.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect - golang.org/x/image v0.0.0-20200119044424-58c23975cae1 // indirect + golang.org/x/exp v0.0.0-20220428152302-39d4317da171 // indirect golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 // indirect - golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect + golang.org/x/sys v0.0.0-20211019181941-9d821ace8654 // indirect golang.org/x/text v0.3.5 // indirect google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb // indirect - google.golang.org/grpc v1.46.0 // indirect + google.golang.org/grpc v1.46.2 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/core/go.sum b/core/go.sum index e5c7bcaceeba..58f08cb8c24a 100644 --- a/core/go.sum +++ b/core/go.sum @@ -1,5 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cosmossdk.io/api v0.1.0-alpha8 h1:Hr+8bLI4UphF+aMiDIVklrdzRm99dFaNq2inBKGDzNU= +cosmossdk.io/api v0.1.0-alpha8/go.mod h1:gIs3NW5OSNK5wKqxF8JHnGTL82QMsXpwGeKmu2i5xFA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -14,12 +16,10 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/corona10/goimagehash v1.0.2 h1:pUfB0LnsJASMPGEZLj7tGY251vF+qLGqOgEP4rUs6kA= -github.com/corona10/goimagehash v1.0.2/go.mod h1:/l9umBhvcHQXVtQO1V6Gp1yD20STawkhRnnX0D1bvVI= github.com/cosmos/cosmos-proto v1.0.0-alpha7 h1:yqYUOHF2jopwZh4dVQp3xgqwftE5/2hkrwIV6vkUbO0= github.com/cosmos/cosmos-proto v1.0.0-alpha7/go.mod h1:dosO4pSAbJF8zWCzCoTWP7nNsjcvSUBQmniFxDg5daw= -github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.3 h1:CC8p43RhsrtZdPOkT/Q5q8QkEGKCq3BbTr/wG/3vJ70= -github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.3/go.mod h1:fd4VKEYJiPjjElIRm7xsjUFMh2ljTtooK1H/DJa0uPU= +github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.4 h1:f2Kc7uEMLJ45F8nnj+AYPQi4xObMX8ho9IkfEvcUqt4= +github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.4/go.mod h1:ZPOZVw4LfyYwsh8M14JxoBGoLM/FRSXc7wuPUfWgvFA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -30,13 +30,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/goccy/go-graphviz v0.0.9 h1:s/FMMJ1Joj6La3S5ApO3Jk2cwM4LpXECC2muFx3IPQQ= -github.com/goccy/go-graphviz v0.0.9/go.mod h1:wXVsXxmyMQU6TN3zGRttjNn3h+iCAS7xQFC6TlNvLhk= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -63,14 +57,11 @@ github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5 h1:BvoENQQU+fZ9uukda/RzCAL/191HHwJA5b13R6diVlY= -github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -87,11 +78,10 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1 h1:5h3ngYt7+vXCDZCup/HkCQgW5XwmSvR/nA2JmJ0RErg= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/exp v0.0.0-20220428152302-39d4317da171 h1:TfdoLivD44QwvssI9Sv1xwa5DcL5XQr4au4sZ2F2NV4= +golang.org/x/exp v0.0.0-20220428152302-39d4317da171/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -122,8 +112,9 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654 h1:id054HUawV2/6IGm2IV8KZQjqtwAOo2CYlOToYqa0d0= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -156,8 +147,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2 h1:u+MLGgVf7vRdjEYZ8wDFhAVNmhkbJ5hmrA1LMWK1CAQ= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/core/internal/registry.go b/core/internal/registry.go index d56a6ed726ba..c397d5bbb05b 100644 --- a/core/internal/registry.go +++ b/core/internal/registry.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/container" - appv1alpha1 "github.com/cosmos/cosmos-sdk/api/cosmos/app/v1alpha1" + appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" ) // ModuleRegistry is the registry of module initializers indexed by their golang diff --git a/core/internal/testpb/test.pulsar.go b/core/internal/testpb/test.pulsar.go index 7ca6f2ed7530..90dcab61cc2b 100644 --- a/core/internal/testpb/test.pulsar.go +++ b/core/internal/testpb/test.pulsar.go @@ -2,9 +2,9 @@ package testpb import ( + _ "cosmossdk.io/api/cosmos/app/v1alpha1" fmt "fmt" runtime "github.com/cosmos/cosmos-proto/runtime" - _ "github.com/cosmos/cosmos-sdk/api/cosmos/app/v1alpha1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" diff --git a/go.mod b/go.mod index 2c04275e9536..206c1c3b7779 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ module github.com/cosmos/cosmos-sdk require ( cosmossdk.io/api v0.1.0-alpha8 + cosmossdk.io/core v0.0.0 cosmossdk.io/errors v1.0.0-beta.6 cosmossdk.io/math v1.0.0-beta.2 github.com/99designs/keyring v1.1.6 @@ -61,6 +62,8 @@ require ( sigs.k8s.io/yaml v1.3.0 ) +require github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.4 + require ( cloud.google.com/go v0.100.2 // indirect cloud.google.com/go/compute v1.5.0 // indirect @@ -135,6 +138,7 @@ require ( github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266 // indirect go.etcd.io/bbolt v1.3.6 // indirect go.opencensus.io v0.23.0 // indirect + golang.org/x/exp v0.0.0-20220428152302-39d4317da171 // indirect golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect @@ -151,6 +155,8 @@ require ( ) replace ( + cosmossdk.io/api => ./api + cosmossdk.io/core => ./core github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 github.com/cosmos/cosmos-sdk/db => ./db diff --git a/go.sum b/go.sum index 08dfdbadf2ea..4a54d82e96ca 100644 --- a/go.sum +++ b/go.sum @@ -69,8 +69,6 @@ cloud.google.com/go/storage v1.14.0 h1:6RRlFMv1omScs6iq2hfE3IvgE+l6RfJPampq8UZc5 cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= -cosmossdk.io/api v0.1.0-alpha8 h1:Hr+8bLI4UphF+aMiDIVklrdzRm99dFaNq2inBKGDzNU= -cosmossdk.io/api v0.1.0-alpha8/go.mod h1:gIs3NW5OSNK5wKqxF8JHnGTL82QMsXpwGeKmu2i5xFA= cosmossdk.io/errors v1.0.0-beta.6 h1:aIn9ZemUfjdgVHNuAgEcKklbOa+ygv6u9gbWOGvzIoU= cosmossdk.io/errors v1.0.0-beta.6/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= cosmossdk.io/math v1.0.0-beta.2 h1:17hSVc9ne1c31IaLDfjRojtN+y4Rd2N8H/6Fht2sBzw= @@ -292,6 +290,8 @@ github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= github.com/cosmos/cosmos-proto v1.0.0-alpha7 h1:yqYUOHF2jopwZh4dVQp3xgqwftE5/2hkrwIV6vkUbO0= github.com/cosmos/cosmos-proto v1.0.0-alpha7/go.mod h1:dosO4pSAbJF8zWCzCoTWP7nNsjcvSUBQmniFxDg5daw= +github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.4 h1:f2Kc7uEMLJ45F8nnj+AYPQi4xObMX8ho9IkfEvcUqt4= +github.com/cosmos/cosmos-sdk/container v1.0.0-alpha.4/go.mod h1:ZPOZVw4LfyYwsh8M14JxoBGoLM/FRSXc7wuPUfWgvFA= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/iavl v0.18.0 h1:02ur4vnalMR2GuWCFNkuseUcl/BCVmg9tOeHOGiZOkE= @@ -1450,6 +1450,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20220428152302-39d4317da171 h1:TfdoLivD44QwvssI9Sv1xwa5DcL5XQr4au4sZ2F2NV4= +golang.org/x/exp v0.0.0-20220428152302-39d4317da171/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2077,7 +2079,9 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.2.0 h1:I0DwBVMGAx26dttAj1BtJLAkVGncrkkUXfJLC4Flt/I= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/proto/cosmos/app/module/v1alpha1/module.proto b/proto/cosmos/app/module/v1alpha1/module.proto deleted file mode 100644 index 487e195c3263..000000000000 --- a/proto/cosmos/app/module/v1alpha1/module.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -package cosmos.app.module.v1alpha1; - -import "cosmos/app/v1alpha1/module.proto"; - -// Module is the module config object for the cosmos.app v1 app module. -message Module { - option (cosmos.app.v1alpha1.module) = { - go_import: "github.com/cosmos/cosmos-sdk/app" - use_package: {name: "cosmos.app.v1alpha1"} - }; -} diff --git a/proto/cosmos/app/runtime/v1alpha1/module.proto b/proto/cosmos/app/runtime/v1alpha1/module.proto new file mode 100644 index 000000000000..f62cbe317803 --- /dev/null +++ b/proto/cosmos/app/runtime/v1alpha1/module.proto @@ -0,0 +1,31 @@ +syntax = "proto3"; + +package cosmos.app.runtime.v1alpha1; + +import "cosmos/app/v1alpha1/module.proto"; + +// Module is the config object for the runtime module. +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import: "github.com/cosmos/cosmos-sdk/runtime" + use_package: {name: "cosmos.app.v1alpha1"} + }; + + // app_name is the name of the app. + string app_name = 1; + + // begin_blockers specifies the module names of begin blockers + // to call in the order in which they should be called. If this is left empty + // no begin blocker will be registered. + repeated string begin_blockers = 2; + + // end_blockers specifies the module names of the end blockers + // to call in the order in which they should be called. If this is left empty + // no end blocker will be registered. + repeated string end_blockers = 3; + + // init_genesis specifies the module names of init genesis functions + // to call in the order in which they should be called. If this is left empty + // no init genesis function will be registered. + repeated string init_genesis = 4; +} diff --git a/proto/cosmos/params/module/v1/module.proto b/proto/cosmos/params/module/v1/module.proto new file mode 100644 index 000000000000..75e7f99583d2 --- /dev/null +++ b/proto/cosmos/params/module/v1/module.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package cosmos.params.module.v1; + +import "cosmos/app/v1alpha1/module.proto"; + +// Module is the config object of the params module. +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import: "github.com/cosmos/cosmos-sdk/x/params" + }; +} diff --git a/runtime/app.go b/runtime/app.go new file mode 100644 index 000000000000..0eee17e30cf9 --- /dev/null +++ b/runtime/app.go @@ -0,0 +1,152 @@ +package runtime + +import ( + "encoding/json" + "fmt" + + "github.com/gogo/protobuf/grpc" + abci "github.com/tendermint/tendermint/abci/types" + + runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/server/api" + "github.com/cosmos/cosmos-sdk/server/config" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" +) + +// App is a wrapper around BaseApp and ModuleManager that can be used in hybrid +// app.go/app config scenarios or directly as a servertypes.Application instance. +// To get an instance of *App, *AppBuilder must be requested as a dependency +// in a container which declares the runtime module and the AppBuilder.Build() +// method must be called. +// +// App can be used to create a hybrid app.go setup where some configuration is +// done declaratively with an app config and the rest of it is done the old way. +// See simapp/app.go for an example of this setup. +type App struct { + *baseapp.BaseApp + ModuleManager *module.Manager + config *runtimev1alpha1.Module + storeKeys []storetypes.StoreKey + interfaceRegistry codectypes.InterfaceRegistry + cdc codec.Codec + amino *codec.LegacyAmino + basicManager module.BasicManager + beginBlockers []func(sdk.Context, abci.RequestBeginBlock) + endBlockers []func(sdk.Context, abci.RequestEndBlock) []abci.ValidatorUpdate + baseAppOptions []BaseAppOption + + msgServiceRegistrar grpc.Server +} + +// RegisterModules registers the provided modules with the module manager and +// the basic module manager. This is the primary hook for integrating with +// modules which are not registered using the app config. +func (a *App) RegisterModules(modules ...module.AppModule) error { + for _, appModule := range modules { + name := appModule.Name() + if _, ok := a.ModuleManager.Modules[name]; ok { + return fmt.Errorf("AppModule named %q already exists", name) + } + a.ModuleManager.Modules[name] = appModule + + if _, ok := a.basicManager[name]; ok { + return fmt.Errorf("AppModuleBasic named %q already exists", name) + } + + a.basicManager[name] = appModule + appModule.RegisterInterfaces(a.interfaceRegistry) + appModule.RegisterLegacyAminoCodec(a.amino) + + } + return nil +} + +// Load finishes all initialization operations and loads the app. +func (a *App) Load(loadLatest bool) error { + if a.msgServiceRegistrar != nil { + configurator := module.NewConfigurator(a.cdc, a.msgServiceRegistrar, a.GRPCQueryRouter()) + a.ModuleManager.RegisterServices(configurator) + } + + if len(a.config.InitGenesis) != 0 { + a.ModuleManager.SetOrderInitGenesis(a.config.InitGenesis...) + a.SetInitChainer(a.InitChainer) + } + + if len(a.config.BeginBlockers) != 0 { + a.ModuleManager.SetOrderBeginBlockers(a.config.BeginBlockers...) + a.SetBeginBlocker(a.BeginBlocker) + } + + if len(a.config.EndBlockers) != 0 { + a.ModuleManager.SetOrderEndBlockers(a.config.EndBlockers...) + a.SetEndBlocker(a.EndBlocker) + } + + if loadLatest { + if err := a.LoadLatestVersion(); err != nil { + return err + } + } + + return nil +} + +// BeginBlocker application updates every begin block +func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { + return app.ModuleManager.BeginBlock(ctx, req) +} + +// EndBlocker application updates every end block +func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { + return app.ModuleManager.EndBlock(ctx, req) +} + +// InitChainer initializes the chain. +func (a *App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { + var genesisState map[string]json.RawMessage + if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil { + panic(err) + } + return a.ModuleManager.InitGenesis(ctx, a.cdc, genesisState) +} + +// RegisterAPIRoutes registers all application module routes with the provided +// API server. +func (a *App) RegisterAPIRoutes(apiSvr *api.Server, _ config.APIConfig) { + clientCtx := apiSvr.ClientCtx + // Register new tx routes from grpc-gateway. + authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + // Register new tendermint queries routes from grpc-gateway. + tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + + // Register grpc-gateway routes for all modules. + a.basicManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) +} + +// RegisterTxService implements the Application.RegisterTxService method. +func (a *App) RegisterTxService(clientCtx client.Context) { + authtx.RegisterTxService(a.GRPCQueryRouter(), clientCtx, a.Simulate, a.interfaceRegistry) +} + +// RegisterTendermintService implements the Application.RegisterTendermintService method. +func (a *App) RegisterTendermintService(clientCtx client.Context) { + tmservice.RegisterTendermintService( + clientCtx, + a.GRPCQueryRouter(), + a.interfaceRegistry, + a.Query, + ) +} + +var _ servertypes.Application = &App{} diff --git a/runtime/builder.go b/runtime/builder.go new file mode 100644 index 000000000000..47a979b4dc6a --- /dev/null +++ b/runtime/builder.go @@ -0,0 +1,41 @@ +package runtime + +import ( + "encoding/json" + "io" + + "github.com/tendermint/tendermint/libs/log" + dbm "github.com/tendermint/tm-db" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/version" +) + +// AppBuilder is a type that is injected into a container by the runtime module +// (as *AppBuilder) which can be used to create an app which is compatible with +// the existing app.go initialization conventions. +type AppBuilder struct { + app *App +} + +// DefaultGenesis returns a default genesis from the registered +// AppModuleBasic's. +func (a *AppBuilder) DefaultGenesis() map[string]json.RawMessage { + return a.app.basicManager.DefaultGenesis(a.app.cdc) +} + +// Build builds an *App instance. +func (a *AppBuilder) Build(logger log.Logger, db dbm.DB, traceStore io.Writer, baseAppOptions ...func(*baseapp.BaseApp)) *App { + for _, option := range a.app.baseAppOptions { + baseAppOptions = append(baseAppOptions, option) + } + // TODO: when the auth module is configured, fill-in txDecoder + bApp := baseapp.NewBaseApp(a.app.config.AppName, logger, db, nil, baseAppOptions...) + bApp.SetCommitMultiStoreTracer(traceStore) + bApp.SetVersion(version.Version) + bApp.SetInterfaceRegistry(a.app.interfaceRegistry) + bApp.MountStores(a.app.storeKeys...) + + a.app.BaseApp = bApp + return a.app +} diff --git a/runtime/module.go b/runtime/module.go new file mode 100644 index 000000000000..dc36259ffc6e --- /dev/null +++ b/runtime/module.go @@ -0,0 +1,119 @@ +package runtime + +import ( + "fmt" + + "github.com/gogo/protobuf/grpc" + + "github.com/cosmos/cosmos-sdk/container" + + runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1" + "cosmossdk.io/core/appmodule" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/std" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + "github.com/cosmos/cosmos-sdk/types/module" +) + +// BaseAppOption is a container.AutoGroupType which can be used to pass +// BaseApp options into the container. It should be used carefully. +type BaseAppOption func(*baseapp.BaseApp) + +// IsManyPerContainerType indicates that this is a container.ManyPerContainerType. +func (b BaseAppOption) IsManyPerContainerType() {} + +// appWrapper is used to pass around an instance of *App internally between +// runtime dependency inject providers that is partially constructed (no +// baseapp yet). +type appWrapper *App + +func init() { + appmodule.Register(&runtimev1alpha1.Module{}, + appmodule.Provide( + provideCodecs, + provideAppBuilder, + provideKVStoreKey, + provideTransientStoreKey, + provideMemoryStoreKey, + ), + ) +} + +func provideCodecs(moduleBasics map[string]AppModuleBasicWrapper) ( + codectypes.InterfaceRegistry, + codec.Codec, + *codec.LegacyAmino, + appWrapper, + codec.ProtoCodecMarshaler) { + interfaceRegistry := codectypes.NewInterfaceRegistry() + amino := codec.NewLegacyAmino() + + // build codecs + basicManager := module.BasicManager{} + for name, wrapper := range moduleBasics { + basicManager[name] = wrapper + wrapper.RegisterInterfaces(interfaceRegistry) + wrapper.RegisterLegacyAminoCodec(amino) + } + std.RegisterInterfaces(interfaceRegistry) + std.RegisterLegacyAminoCodec(amino) + + cdc := codec.NewProtoCodec(interfaceRegistry) + app := &App{ + storeKeys: nil, + interfaceRegistry: interfaceRegistry, + cdc: cdc, + amino: amino, + basicManager: basicManager, + } + + return interfaceRegistry, cdc, amino, app, cdc +} + +type appInputs struct { + container.In + + Config *runtimev1alpha1.Module + App appWrapper + Modules map[string]AppModuleWrapper + BaseAppOptions []BaseAppOption + MsgServiceRegistrar grpc.Server `optional:"true"` +} + +func provideAppBuilder(inputs appInputs) *AppBuilder { + mm := &module.Manager{Modules: map[string]module.AppModule{}} + for name, wrapper := range inputs.Modules { + mm.Modules[name] = wrapper.AppModule + } + app := inputs.App + app.baseAppOptions = inputs.BaseAppOptions + app.config = inputs.Config + app.ModuleManager = mm + app.msgServiceRegistrar = inputs.MsgServiceRegistrar + return &AppBuilder{app: app} +} + +func registerStoreKey(wrapper appWrapper, key storetypes.StoreKey) { + wrapper.storeKeys = append(wrapper.storeKeys, key) +} + +func provideKVStoreKey(key container.ModuleKey, app appWrapper) *storetypes.KVStoreKey { + storeKey := storetypes.NewKVStoreKey(key.Name()) + registerStoreKey(app, storeKey) + return storeKey +} + +func provideTransientStoreKey(key container.ModuleKey, app appWrapper) *storetypes.TransientStoreKey { + storeKey := storetypes.NewTransientStoreKey(fmt.Sprintf("transient:%s", key.Name())) + registerStoreKey(app, storeKey) + return storeKey +} + +func provideMemoryStoreKey(key container.ModuleKey, app appWrapper) *storetypes.MemoryStoreKey { + storeKey := storetypes.NewMemoryStoreKey(fmt.Sprintf("memory:%s", key.Name())) + registerStoreKey(app, storeKey) + return storeKey +} diff --git a/runtime/wrappers.go b/runtime/wrappers.go new file mode 100644 index 000000000000..ebfa4ea47d68 --- /dev/null +++ b/runtime/wrappers.go @@ -0,0 +1,33 @@ +package runtime + +import "github.com/cosmos/cosmos-sdk/types/module" + +// AppModuleWrapper is a type used for injecting a module.AppModule into a +// container so that it can be used by the runtime module. +type AppModuleWrapper struct { + module.AppModule +} + +// WrapAppModule wraps a module.AppModule so that it can be injected into +// a container for use by the runtime module. +func WrapAppModule(appModule module.AppModule) AppModuleWrapper { + return AppModuleWrapper{AppModule: appModule} +} + +// IsOnePerModuleType identifies this type as a container.OnePerModuleType. +func (AppModuleWrapper) IsOnePerModuleType() {} + +// AppModuleBasicWrapper is a type used for injecting a module.AppModuleBasic +// into a container so that it can be used by the runtime module. +type AppModuleBasicWrapper struct { + module.AppModuleBasic +} + +// WrapAppModuleBasic wraps a module.AppModuleBasic so that it can be injected into +// a container for use by the runtime module. +func WrapAppModuleBasic(basic module.AppModuleBasic) AppModuleBasicWrapper { + return AppModuleBasicWrapper{AppModuleBasic: basic} +} + +// IsOnePerModuleType identifies this type as a container.OnePerModuleType. +func (AppModuleBasicWrapper) IsOnePerModuleType() {} diff --git a/simapp/app.go b/simapp/app.go index cb50d352bdd4..b6149141c968 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -1,7 +1,7 @@ package simapp import ( - "encoding/json" + _ "embed" "io" "net/http" "os" @@ -15,11 +15,16 @@ import ( tmos "github.com/tendermint/tendermint/libs/os" dbm "github.com/tendermint/tm-db" + "github.com/cosmos/cosmos-sdk/container" + + "cosmossdk.io/core/appconfig" + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + _ "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" @@ -30,13 +35,11 @@ import ( "github.com/cosmos/cosmos-sdk/testutil/testdata_pulsar" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/auth/ante" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" "github.com/cosmos/cosmos-sdk/x/auth/posthandler" authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" - authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/auth/vesting" vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" @@ -152,10 +155,10 @@ var ( // They are exported for convenience in creating helper functions, as object // capabilities aren't needed for testing. type SimApp struct { - *baseapp.BaseApp + *runtime.App legacyAmino *codec.LegacyAmino appCodec codec.Codec - interfaceRegistry types.InterfaceRegistry + interfaceRegistry codectypes.InterfaceRegistry invCheckPeriod uint @@ -182,9 +185,6 @@ type SimApp struct { GroupKeeper groupkeeper.Keeper NFTKeeper nftkeeper.Keeper - // the module manager - mm *module.Manager - // simulation manager sm *module.SimulationManager @@ -201,54 +201,64 @@ func init() { DefaultNodeHome = filepath.Join(userHomeDir, ".simapp") } +//go:embed app.yaml +var appConfigYaml []byte + +var appConfig = appconfig.LoadYAML(appConfigYaml) + // NewSimApp returns a reference to an initialized SimApp. func NewSimApp( logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bool, skipUpgradeHeights map[int64]bool, homePath string, invCheckPeriod uint, encodingConfig simappparams.EncodingConfig, appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *SimApp { - appCodec := encodingConfig.Codec - legacyAmino := encodingConfig.Amino - interfaceRegistry := encodingConfig.InterfaceRegistry + var appBuilder *runtime.AppBuilder + var paramsKeeper paramskeeper.Keeper + var appCodec codec.Codec + var legacyAmino *codec.LegacyAmino + var interfaceRegistry codectypes.InterfaceRegistry + err := container.Build(appConfig, + &appBuilder, + ¶msKeeper, + &appCodec, + &legacyAmino, + &interfaceRegistry, + ) + if err != nil { + panic(err) + } - bApp := baseapp.NewBaseApp(appName, logger, db, encodingConfig.TxConfig.TxDecoder(), baseAppOptions...) - bApp.SetCommitMultiStoreTracer(traceStore) - bApp.SetVersion(version.Version) - bApp.SetInterfaceRegistry(interfaceRegistry) + runtimeApp := appBuilder.Build(logger, db, traceStore, baseAppOptions...) keys := sdk.NewKVStoreKeys( authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, paramstypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, + govtypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey, capabilitytypes.StoreKey, authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, ) - tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey) // NOTE: The testingkey is just mounted for testing purposes. Actual applications should // not include this key. memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey, "testingkey") // configure state listening capabilities using AppOptions // we are doing nothing with the returned streamingServices and waitGroup in this case - if _, _, err := streaming.LoadStreamingServices(bApp, appOpts, appCodec, keys); err != nil { + if _, _, err := streaming.LoadStreamingServices(runtimeApp.BaseApp, appOpts, appCodec, keys); err != nil { tmos.Exit(err.Error()) } app := &SimApp{ - BaseApp: bApp, + App: runtimeApp, legacyAmino: legacyAmino, appCodec: appCodec, interfaceRegistry: interfaceRegistry, invCheckPeriod: invCheckPeriod, keys: keys, - tkeys: tkeys, memKeys: memKeys, } - app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) - - // set the BaseApp's parameter store - bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable())) + app.ParamsKeeper = paramsKeeper + initParamsKeeper(paramsKeeper) app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) // Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating @@ -341,7 +351,7 @@ func NewSimApp( // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. - app.mm = module.NewManager( + err = app.RegisterModules( genutil.NewAppModule( app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, encodingConfig.TxConfig, @@ -359,32 +369,13 @@ func NewSimApp( staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), upgrade.NewAppModule(app.UpgradeKeeper), evidence.NewAppModule(app.EvidenceKeeper), - params.NewAppModule(app.ParamsKeeper), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), ) - - // During begin block slashing happens after distr.BeginBlocker so that - // there is nothing left over in the validator fee pool, so as to keep the - // CanWithdrawInvariant invariant. - // NOTE: staking module is required if HistoricalEntries param > 0 - // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) - app.mm.SetOrderBeginBlockers( - upgradetypes.ModuleName, capabilitytypes.ModuleName, minttypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, - evidencetypes.ModuleName, stakingtypes.ModuleName, - authtypes.ModuleName, banktypes.ModuleName, govtypes.ModuleName, crisistypes.ModuleName, genutiltypes.ModuleName, - authz.ModuleName, feegrant.ModuleName, nft.ModuleName, group.ModuleName, - paramstypes.ModuleName, vestingtypes.ModuleName, - ) - app.mm.SetOrderEndBlockers( - crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, - capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, distrtypes.ModuleName, - slashingtypes.ModuleName, minttypes.ModuleName, - genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, - feegrant.ModuleName, nft.ModuleName, group.ModuleName, - paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, - ) + if err != nil { + panic(err) + } // NOTE: The genutils module must occur after staking so that pools are // properly initialized with tokens from genesis accounts. @@ -392,7 +383,7 @@ func NewSimApp( // NOTE: Capability module must occur first so that it can initialize any capabilities // so that other modules that want to create or claim capabilities afterwards in InitChain // can do so safely. - app.mm.SetOrderInitGenesis( + app.ModuleManager.SetOrderInitGenesis( capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, @@ -403,10 +394,10 @@ func NewSimApp( // Uncomment if you want to set a custom migration order here. // app.mm.SetOrderMigrations(custom order) - app.mm.RegisterInvariants(&app.CrisisKeeper) - app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) + app.ModuleManager.RegisterInvariants(&app.CrisisKeeper) + app.ModuleManager.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) - app.mm.RegisterServices(app.configurator) + app.ModuleManager.RegisterServices(app.configurator) // add test gRPC service for testing gRPC queries in isolation testdata_pulsar.RegisterQueryServer(app.GRPCQueryRouter(), testdata_pulsar.QueryImpl{}) @@ -425,7 +416,6 @@ func NewSimApp( staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - params.NewAppModule(app.ParamsKeeper), evidence.NewAppModule(app.EvidenceKeeper), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), @@ -436,13 +426,11 @@ func NewSimApp( // initialize stores app.MountKVStores(keys) - app.MountTransientStores(tkeys) app.MountMemoryStores(memKeys) // initialize BaseApp + app.SetTxDecoder(encodingConfig.TxConfig.TxDecoder()) app.SetInitChainer(app.InitChainer) - app.SetBeginBlocker(app.BeginBlocker) - app.SetEndBlocker(app.EndBlocker) app.setAnteHandler(encodingConfig.TxConfig, cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))) // In v0.46, the SDK introduces _postHandlers_. PostHandlers are like // antehandlers, but are run _after_ the `runMsgs` execution. They are also @@ -464,10 +452,9 @@ func NewSimApp( // upgrade. app.setPostHandler() - if loadLatest { - if err := app.LoadLatestVersion(); err != nil { - tmos.Exit(err.Error()) - } + err = app.Load(loadLatest) + if err != nil { + panic(err) } return app @@ -511,24 +498,10 @@ func (app *SimApp) setPostHandler() { // Name returns the name of the App func (app *SimApp) Name() string { return app.BaseApp.Name() } -// BeginBlocker application updates every begin block -func (app *SimApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { - return app.mm.BeginBlock(ctx, req) -} - -// EndBlocker application updates every end block -func (app *SimApp) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { - return app.mm.EndBlock(ctx, req) -} - // InitChainer application update at chain initialization func (app *SimApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { - var genesisState GenesisState - if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil { - panic(err) - } - app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) - return app.mm.InitGenesis(ctx, app.appCodec, genesisState) + app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()) + return app.App.InitChainer(ctx, req) } // LoadHeight loads a particular height @@ -563,7 +536,7 @@ func (app *SimApp) AppCodec() codec.Codec { } // InterfaceRegistry returns SimApp's InterfaceRegistry -func (app *SimApp) InterfaceRegistry() types.InterfaceRegistry { +func (app *SimApp) InterfaceRegistry() codectypes.InterfaceRegistry { return app.interfaceRegistry } @@ -604,36 +577,14 @@ func (app *SimApp) SimulationManager() *module.SimulationManager { // RegisterAPIRoutes registers all application module routes with the provided // API server. func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { - clientCtx := apiSvr.ClientCtx - // Register new tx routes from grpc-gateway. - authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - // Register new tendermint queries routes from grpc-gateway. - tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // Register grpc-gateway routes for all modules. - ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + app.App.RegisterAPIRoutes(apiSvr, apiConfig) // register swagger API from root so that other applications can override easily if apiConfig.Swagger { - RegisterSwaggerAPI(clientCtx, apiSvr.Router) + RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router) } } -// RegisterTxService implements the Application.RegisterTxService method. -func (app *SimApp) RegisterTxService(clientCtx client.Context) { - authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) -} - -// RegisterTendermintService implements the Application.RegisterTendermintService method. -func (app *SimApp) RegisterTendermintService(clientCtx client.Context) { - tmservice.RegisterTendermintService( - clientCtx, - app.BaseApp.GRPCQueryRouter(), - app.interfaceRegistry, - app.Query, - ) -} - // RegisterSwaggerAPI registers swagger route with API Server func RegisterSwaggerAPI(_ client.Context, rtr *mux.Router) { statikFS, err := fs.New() @@ -655,9 +606,7 @@ func GetMaccPerms() map[string][]string { } // initParamsKeeper init params keeper and its subspaces -func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { - paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) - +func initParamsKeeper(paramsKeeper paramskeeper.Keeper) { paramsKeeper.Subspace(authtypes.ModuleName) paramsKeeper.Subspace(banktypes.ModuleName) paramsKeeper.Subspace(stakingtypes.ModuleName) @@ -666,6 +615,4 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(slashingtypes.ModuleName) paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable()) paramsKeeper.Subspace(crisistypes.ModuleName) - - return paramsKeeper } diff --git a/simapp/app.yaml b/simapp/app.yaml new file mode 100644 index 000000000000..82ceeb8450a5 --- /dev/null +++ b/simapp/app.yaml @@ -0,0 +1,25 @@ +modules: + - name: runtime + config: + "@type": cosmos.app.runtime.v1alpha1.Module + + # During begin block slashing happens after distr.BeginBlocker so that + # there is nothing left over in the validator fee pool, so as to keep the + # CanWithdrawInvariant invariant. + # NOTE: staking module is required if HistoricalEntries param > 0 + # NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) + begin_blockers: [ upgrade, capability, mint, distribution, slashing, + evidence, staking, auth, bank, gov, crisis, genutil, + authz, feegrant, nft, group, + params, vesting ] + + end_blockers: [ crisis, gov, staking, + capability, auth, bank, distribution, + slashing, mint, + genutil, evidence, authz, + feegrant, nft, group, + params, upgrade, vesting ] + + - name: params + config: + "@type": cosmos.params.module.v1.Module diff --git a/simapp/app_test.go b/simapp/app_test.go index e5bd3365f6b6..d24348be8d74 100644 --- a/simapp/app_test.go +++ b/simapp/app_test.go @@ -89,7 +89,7 @@ func TestRunMigrations(t *testing.T) { // // The loop below is the same as calling `RegisterServices` on // ModuleManager, except that we skip x/bank. - for _, module := range app.mm.Modules { + for _, module := range app.ModuleManager.Modules { if module.Name() == banktypes.ModuleName { continue } @@ -167,7 +167,7 @@ func TestRunMigrations(t *testing.T) { // Run migrations only for bank. That's why we put the initial // version for bank as 1, and for all other modules, we put as // their latest ConsensusVersion. - _, err = app.mm.RunMigrations( + _, err = app.ModuleManager.RunMigrations( app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}), app.configurator, module.VersionMap{ "bank": 1, @@ -217,11 +217,11 @@ func TestInitGenesisOnMigration(t *testing.T) { mockModule.EXPECT().InitGenesis(gomock.Eq(ctx), gomock.Eq(app.appCodec), gomock.Eq(mockDefaultGenesis)).Times(1).Return(nil) mockModule.EXPECT().ConsensusVersion().Times(1).Return(uint64(0)) - app.mm.Modules["mock"] = mockModule + app.ModuleManager.Modules["mock"] = mockModule // Run migrations only for "mock" module. We exclude it from // the VersionMap to simulate upgrading with a new module. - _, err := app.mm.RunMigrations(ctx, app.configurator, + _, err := app.ModuleManager.RunMigrations(ctx, app.configurator, module.VersionMap{ "bank": bank.AppModule{}.ConsensusVersion(), "auth": auth.AppModule{}.ConsensusVersion(), @@ -261,7 +261,7 @@ func TestUpgradeStateOnGenesis(t *testing.T) { // make sure the upgrade keeper has version map in state ctx := app.NewContext(false, tmproto.Header{}) vm := app.UpgradeKeeper.GetModuleVersionMap(ctx) - for v, i := range app.mm.Modules { + for v, i := range app.ModuleManager.Modules { require.Equal(t, vm[v], i.ConsensusVersion()) } } diff --git a/simapp/export.go b/simapp/export.go index 19a4a64ae56c..fd6a39c5711a 100644 --- a/simapp/export.go +++ b/simapp/export.go @@ -30,7 +30,7 @@ func (app *SimApp) ExportAppStateAndValidators( app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs) } - genState := app.mm.ExportGenesis(ctx, app.appCodec) + genState := app.ModuleManager.ExportGenesis(ctx, app.appCodec) appState, err := json.MarshalIndent(genState, "", " ") if err != nil { return servertypes.ExportedApp{}, err diff --git a/simapp/sim_test.go b/simapp/sim_test.go index bde9aa5859e4..e09df9045950 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -9,13 +9,14 @@ import ( "strings" "testing" - storetypes "github.com/cosmos/cosmos-sdk/store/types" "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" dbm "github.com/tendermint/tm-db" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/simapp/helpers" "github.com/cosmos/cosmos-sdk/store" @@ -168,7 +169,7 @@ func TestAppImportExport(t *testing.T) { ctxA := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) ctxB := newApp.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) - newApp.mm.InitGenesis(ctxB, app.AppCodec(), genesisState) + newApp.ModuleManager.InitGenesis(ctxB, app.AppCodec(), genesisState) newApp.StoreConsensusParams(ctxB, exported.ConsensusParams) fmt.Printf("comparing stores...\n") diff --git a/simapp/upgrades.go b/simapp/upgrades.go index 2a62ae5c881c..b7a26ae80a3e 100644 --- a/simapp/upgrades.go +++ b/simapp/upgrades.go @@ -20,11 +20,11 @@ func (app SimApp) RegisterUpgradeHandlers() { func(ctx sdk.Context, plan upgradetypes.Plan, _ module.VersionMap) (module.VersionMap, error) { // We set fromVersion to 1 to avoid running InitGenesis for modules for // in-store migrations. - // + // // If you wish to skip any module migrations, i.e. they were already migrated // in an older version, you can use `modulename.AppModule{}.ConsensusVersion()` // instead of `1` below. - // + // // For example: // "auth": auth.AppModule{}.ConsensusVersion() fromVM := map[string]uint64{ @@ -46,7 +46,7 @@ func (app SimApp) RegisterUpgradeHandlers() { "genutil": 1, } - return app.mm.RunMigrations(ctx, app.configurator, fromVM) + return app.ModuleManager.RunMigrations(ctx, app.configurator, fromVM) }) upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() diff --git a/x/params/module.go b/x/params/module.go index ddee65dc5823..307d237f4bd6 100644 --- a/x/params/module.go +++ b/x/params/module.go @@ -5,13 +5,21 @@ import ( "encoding/json" "math/rand" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" abci "github.com/tendermint/tendermint/abci/types" + modulev1 "cosmossdk.io/api/cosmos/params/module/v1" + "cosmossdk.io/core/appmodule" + "github.com/cosmos/cosmos-sdk/runtime" + + "github.com/cosmos/cosmos-sdk/container" + + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + store "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" @@ -51,7 +59,7 @@ func (AppModuleBasic) ValidateGenesis(_ codec.JSONCodec, config client.TxEncodin } // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the params module. -func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { +func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwruntime.ServeMux) { if err := proposal.RegisterQueryHandlerClient(context.Background(), mux, proposal.NewQueryClient(clientCtx)); err != nil { panic(err) } @@ -147,3 +155,35 @@ func (AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { return []abci.ValidatorUpdate{} } + +func init() { + appmodule.Register(&modulev1.Module{}, + appmodule.Provide( + provideModuleBasic, + provideModule, + provideSubSpace, + )) +} + +func provideModuleBasic() runtime.AppModuleBasicWrapper { + return runtime.WrapAppModuleBasic(AppModuleBasic{}) +} + +func provideModule( + kvStoreKey *store.KVStoreKey, + transientStoreKey *store.TransientStoreKey, + cdc codec.Codec, + amino *codec.LegacyAmino, +) (keeper.Keeper, runtime.AppModuleWrapper, runtime.BaseAppOption) { + + k := keeper.NewKeeper(cdc, amino, kvStoreKey, transientStoreKey) + m := NewAppModule(k) + baseappOpt := func(app *baseapp.BaseApp) { + app.SetParamStore(k.Subspace(baseapp.Paramspace).WithKeyTable(types.ConsensusParamsKeyTable())) + } + return k, runtime.WrapAppModule(m), baseappOpt +} + +func provideSubSpace(key container.ModuleKey, k keeper.Keeper) types.Subspace { + return k.Subspace(key.Name()) +}