Compare commits

...

7 Commits

Author SHA1 Message Date
IshaVenikar
5d361062cb Add a method to update onboarding module params 2024-08-30 15:04:48 +05:30
c7f9ef6576 Add a method to update bond module params 2024-08-27 10:17:42 +05:30
debfb82205 Integrate slashing module in the app (#53)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Add `slashing` module for penalizing / jailing offline validators
Reference: https://docs.cosmos.network/main/build/modules/slashing#liveness-tracking

Note: Breaking change, an existing chain cannot be run with the updated binary

Reviewed-on: cerc-io/laconicd#53
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-08-16 06:23:56 +00:00
3c5cd002e1 Add env variables to configure authority auctions in initialization script (#50)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Reviewed-on: cerc-io/laconicd#50
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-08-08 07:14:36 +00:00
b5a76a920e Update node initialization script (#49)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Reviewed-on: cerc-io/laconicd#49
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-08-07 11:25:01 +00:00
f176a5889e Implement GQL query for listing authorities (#48)
Part of [Create a public laconicd testnet](https://www.notion.so/Create-a-public-laconicd-testnet-896a11bdd8094eff8f1b49c0be0ca3b8)

Co-authored-by: IshaVenikar <ishavenikar7@gmail.com>
Reviewed-on: cerc-io/laconicd#48
2024-08-02 09:15:08 +00:00
5e7d5fc47c Update init script to use existing genesis file (#47)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Co-authored-by: Adw8 <adwaitgharpure@gmail.com>
Reviewed-on: cerc-io/laconicd#47
2024-08-01 11:52:47 +00:00
29 changed files with 3765 additions and 274 deletions

View File

@ -25,6 +25,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
# Copy over binary from the builder # Copy over binary from the builder
COPY --from=builder /go/src/git.vdb.to/cerc-io/laconicd/build/laconicd /usr/bin/laconicd COPY --from=builder /go/src/git.vdb.to/cerc-io/laconicd/build/laconicd /usr/bin/laconicd
# Copy over init script from builder
COPY --from=builder /go/src/git.vdb.to/cerc-io/laconicd/scripts/init.sh scripts/init.sh
WORKDIR / WORKDIR /
# Run laconicd by default # Run laconicd by default

View File

@ -15,11 +15,13 @@ import (
var ( var (
md_Module protoreflect.MessageDescriptor md_Module protoreflect.MessageDescriptor
fd_Module_authority protoreflect.FieldDescriptor
) )
func init() { func init() {
file_cerc_bond_module_v1_module_proto_init() file_cerc_bond_module_v1_module_proto_init()
md_Module = File_cerc_bond_module_v1_module_proto.Messages().ByName("Module") md_Module = File_cerc_bond_module_v1_module_proto.Messages().ByName("Module")
fd_Module_authority = md_Module.Fields().ByName("authority")
} }
var _ protoreflect.Message = (*fastReflection_Module)(nil) var _ protoreflect.Message = (*fastReflection_Module)(nil)
@ -87,6 +89,12 @@ func (x *fastReflection_Module) Interface() protoreflect.ProtoMessage {
// While iterating, mutating operations may only be performed // While iterating, mutating operations may only be performed
// on the current field descriptor. // on the current field descriptor.
func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Authority != "" {
value := protoreflect.ValueOfString(x.Authority)
if !f(fd_Module_authority, value) {
return
}
}
} }
// Has reports whether a field is populated. // Has reports whether a field is populated.
@ -102,6 +110,8 @@ func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, proto
// a repeated field is populated if it is non-empty. // a repeated field is populated if it is non-empty.
func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() { switch fd.FullName() {
case "cerc.bond.module.v1.Module.authority":
return x.Authority != ""
default: default:
if fd.IsExtension() { if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module")) panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module"))
@ -118,6 +128,8 @@ func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {
// Clear is a mutating operation and unsafe for concurrent use. // Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() { switch fd.FullName() {
case "cerc.bond.module.v1.Module.authority":
x.Authority = ""
default: default:
if fd.IsExtension() { if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module")) panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module"))
@ -134,6 +146,9 @@ func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {
// of the value; to obtain a mutable reference, use Mutable. // of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() { switch descriptor.FullName() {
case "cerc.bond.module.v1.Module.authority":
value := x.Authority
return protoreflect.ValueOfString(value)
default: default:
if descriptor.IsExtension() { if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module")) panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module"))
@ -154,6 +169,8 @@ func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) pro
// Set is a mutating operation and unsafe for concurrent use. // Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() { switch fd.FullName() {
case "cerc.bond.module.v1.Module.authority":
x.Authority = value.Interface().(string)
default: default:
if fd.IsExtension() { if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module")) panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module"))
@ -174,6 +191,8 @@ func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value proto
// Mutable is a mutating operation and unsafe for concurrent use. // Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() { switch fd.FullName() {
case "cerc.bond.module.v1.Module.authority":
panic(fmt.Errorf("field authority of message cerc.bond.module.v1.Module is not mutable"))
default: default:
if fd.IsExtension() { if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module")) panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module"))
@ -187,6 +206,8 @@ func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protore
// For lists, maps, and messages, this returns a new, empty, mutable value. // For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() { switch fd.FullName() {
case "cerc.bond.module.v1.Module.authority":
return protoreflect.ValueOfString("")
default: default:
if fd.IsExtension() { if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module")) panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.bond.module.v1.Module"))
@ -256,6 +277,10 @@ func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {
var n int var n int
var l int var l int
_ = l _ = l
l = len(x.Authority)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil { if x.unknownFields != nil {
n += len(x.unknownFields) n += len(x.unknownFields)
} }
@ -285,6 +310,13 @@ func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {
i -= len(x.unknownFields) i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields) copy(dAtA[i:], x.unknownFields)
} }
if len(x.Authority) > 0 {
i -= len(x.Authority)
copy(dAtA[i:], x.Authority)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))
i--
dAtA[i] = 0x12
}
if input.Buf != nil { if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...) input.Buf = append(input.Buf, dAtA...)
} else { } else {
@ -334,6 +366,38 @@ func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: illegal tag %d (wire type %d)", fieldNum, wire) return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", 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.Authority = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:]) skippy, err := runtime.Skip(dAtA[iNdEx:])
@ -388,6 +452,10 @@ type Module struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// authority defines the custom module authority. If not set, defaults to the
// governance module.
Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
} }
func (x *Module) Reset() { func (x *Module) Reset() {
@ -410,6 +478,13 @@ func (*Module) Descriptor() ([]byte, []int) {
return file_cerc_bond_module_v1_module_proto_rawDescGZIP(), []int{0} return file_cerc_bond_module_v1_module_proto_rawDescGZIP(), []int{0}
} }
func (x *Module) GetAuthority() string {
if x != nil {
return x.Authority
}
return ""
}
var File_cerc_bond_module_v1_module_proto protoreflect.FileDescriptor var File_cerc_bond_module_v1_module_proto protoreflect.FileDescriptor
var file_cerc_bond_module_v1_module_proto_rawDesc = []byte{ var file_cerc_bond_module_v1_module_proto_rawDesc = []byte{
@ -418,24 +493,26 @@ var file_cerc_bond_module_v1_module_proto_rawDesc = []byte{
0x74, 0x6f, 0x12, 0x13, 0x63, 0x65, 0x72, 0x63, 0x2e, 0x62, 0x6f, 0x6e, 0x64, 0x2e, 0x6d, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x65, 0x72, 0x63, 0x2e, 0x62, 0x6f, 0x6e, 0x64, 0x2e, 0x6d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 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, 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, 0x34, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x52, 0x0a, 0x06, 0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x3a, 0x2a, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x24, 0x0a, 0x22, 0x67, 0x69, 0x74, 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
0x2e, 0x76, 0x64, 0x62, 0x2e, 0x74, 0x6f, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2d, 0x69, 0x6f, 0x2f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
0x6c, 0x61, 0x63, 0x6f, 0x6e, 0x69, 0x63, 0x64, 0x2f, 0x78, 0x2f, 0x62, 0x6f, 0x6e, 0x64, 0x42, 0x79, 0x3a, 0x2a, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x24, 0x0a, 0x22, 0x67, 0x69, 0x74, 0x2e, 0x76,
0xd3, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x65, 0x72, 0x63, 0x2e, 0x62, 0x6f, 0x6e, 0x64, 0x62, 0x2e, 0x74, 0x6f, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2d, 0x69, 0x6f, 0x2f, 0x6c, 0x61,
0x64, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x63, 0x6f, 0x6e, 0x69, 0x63, 0x64, 0x2f, 0x78, 0x2f, 0x62, 0x6f, 0x6e, 0x64, 0x42, 0xd3, 0x01,
0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x2e, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x65, 0x72, 0x63, 0x2e, 0x62, 0x6f, 0x6e, 0x64, 0x2e,
0x76, 0x64, 0x62, 0x2e, 0x74, 0x6f, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2d, 0x69, 0x6f, 0x2f, 0x6c, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x61, 0x63, 0x6f, 0x6e, 0x69, 0x63, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x2e, 0x76, 0x64,
0x2f, 0x62, 0x6f, 0x6e, 0x64, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x62, 0x2e, 0x74, 0x6f, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2d, 0x69, 0x6f, 0x2f, 0x6c, 0x61, 0x63,
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x42, 0x4d, 0xaa, 0x02, 0x6f, 0x6e, 0x69, 0x63, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2f, 0x62,
0x13, 0x43, 0x65, 0x72, 0x63, 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x6f, 0x6e, 0x64, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x6f,
0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x65, 0x72, 0x63, 0x5c, 0x42, 0x6f, 0x6e, 0x64, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x42, 0x4d, 0xaa, 0x02, 0x13, 0x43,
0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x65, 0x72, 0x65, 0x72, 0x63, 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e,
0x63, 0x5c, 0x42, 0x6f, 0x6e, 0x64, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x65, 0x72, 0x63, 0x5c, 0x42, 0x6f, 0x6e, 0x64, 0x5c, 0x4d,
0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x43, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x65, 0x72, 0x63, 0x5c,
0x65, 0x72, 0x63, 0x3a, 0x3a, 0x42, 0x6f, 0x6e, 0x64, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x42, 0x6f, 0x6e, 0x64, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47,
0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x43, 0x65, 0x72,
0x63, 0x3a, 0x3a, 0x42, 0x6f, 0x6e, 0x64, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a,
0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

File diff suppressed because it is too large Load Diff

View File

@ -23,6 +23,7 @@ const (
Msg_RefillBond_FullMethodName = "/cerc.bond.v1.Msg/RefillBond" Msg_RefillBond_FullMethodName = "/cerc.bond.v1.Msg/RefillBond"
Msg_WithdrawBond_FullMethodName = "/cerc.bond.v1.Msg/WithdrawBond" Msg_WithdrawBond_FullMethodName = "/cerc.bond.v1.Msg/WithdrawBond"
Msg_CancelBond_FullMethodName = "/cerc.bond.v1.Msg/CancelBond" Msg_CancelBond_FullMethodName = "/cerc.bond.v1.Msg/CancelBond"
Msg_UpdateParams_FullMethodName = "/cerc.bond.v1.Msg/UpdateParams"
) )
// MsgClient is the client API for Msg service. // MsgClient is the client API for Msg service.
@ -37,6 +38,9 @@ type MsgClient interface {
WithdrawBond(ctx context.Context, in *MsgWithdrawBond, opts ...grpc.CallOption) (*MsgWithdrawBondResponse, error) WithdrawBond(ctx context.Context, in *MsgWithdrawBond, opts ...grpc.CallOption) (*MsgWithdrawBondResponse, error)
// CancelBond defines a method for cancelling a bond. // CancelBond defines a method for cancelling a bond.
CancelBond(ctx context.Context, in *MsgCancelBond, opts ...grpc.CallOption) (*MsgCancelBondResponse, error) CancelBond(ctx context.Context, in *MsgCancelBond, opts ...grpc.CallOption) (*MsgCancelBondResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)
} }
type msgClient struct { type msgClient struct {
@ -83,6 +87,15 @@ func (c *msgClient) CancelBond(ctx context.Context, in *MsgCancelBond, opts ...g
return out, nil return out, nil
} }
func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {
out := new(MsgUpdateParamsResponse)
err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MsgServer is the server API for Msg service. // MsgServer is the server API for Msg service.
// All implementations must embed UnimplementedMsgServer // All implementations must embed UnimplementedMsgServer
// for forward compatibility // for forward compatibility
@ -95,6 +108,9 @@ type MsgServer interface {
WithdrawBond(context.Context, *MsgWithdrawBond) (*MsgWithdrawBondResponse, error) WithdrawBond(context.Context, *MsgWithdrawBond) (*MsgWithdrawBondResponse, error)
// CancelBond defines a method for cancelling a bond. // CancelBond defines a method for cancelling a bond.
CancelBond(context.Context, *MsgCancelBond) (*MsgCancelBondResponse, error) CancelBond(context.Context, *MsgCancelBond) (*MsgCancelBondResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)
mustEmbedUnimplementedMsgServer() mustEmbedUnimplementedMsgServer()
} }
@ -114,6 +130,9 @@ func (UnimplementedMsgServer) WithdrawBond(context.Context, *MsgWithdrawBond) (*
func (UnimplementedMsgServer) CancelBond(context.Context, *MsgCancelBond) (*MsgCancelBondResponse, error) { func (UnimplementedMsgServer) CancelBond(context.Context, *MsgCancelBond) (*MsgCancelBondResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CancelBond not implemented") return nil, status.Errorf(codes.Unimplemented, "method CancelBond not implemented")
} }
func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented")
}
func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}
// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.
@ -199,6 +218,24 @@ func _Msg_CancelBond_Handler(srv interface{}, ctx context.Context, dec func(inte
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgUpdateParams)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).UpdateParams(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Msg_UpdateParams_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))
}
return interceptor(ctx, in, info, handler)
}
// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.
// It's only intended for direct use with grpc.RegisterService, // It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy) // and not to be introspected or modified (even as a copy)
@ -222,6 +259,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{
MethodName: "CancelBond", MethodName: "CancelBond",
Handler: _Msg_CancelBond_Handler, Handler: _Msg_CancelBond_Handler,
}, },
{
MethodName: "UpdateParams",
Handler: _Msg_UpdateParams_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "cerc/bond/v1/tx.proto", Metadata: "cerc/bond/v1/tx.proto",

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@ const _ = grpc.SupportPackageIsVersion7
const ( const (
Msg_OnboardParticipant_FullMethodName = "/cerc.onboarding.v1.Msg/OnboardParticipant" Msg_OnboardParticipant_FullMethodName = "/cerc.onboarding.v1.Msg/OnboardParticipant"
Msg_UpdateParams_FullMethodName = "/cerc.onboarding.v1.Msg/UpdateParams"
) )
// MsgClient is the client API for Msg service. // MsgClient is the client API for Msg service.
@ -28,6 +29,9 @@ const (
type MsgClient interface { type MsgClient interface {
// OnboardParticipant defines a method for enrolling a new validator. // OnboardParticipant defines a method for enrolling a new validator.
OnboardParticipant(ctx context.Context, in *MsgOnboardParticipant, opts ...grpc.CallOption) (*MsgOnboardParticipantResponse, error) OnboardParticipant(ctx context.Context, in *MsgOnboardParticipant, opts ...grpc.CallOption) (*MsgOnboardParticipantResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)
} }
type msgClient struct { type msgClient struct {
@ -47,12 +51,24 @@ func (c *msgClient) OnboardParticipant(ctx context.Context, in *MsgOnboardPartic
return out, nil return out, nil
} }
func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {
out := new(MsgUpdateParamsResponse)
err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MsgServer is the server API for Msg service. // MsgServer is the server API for Msg service.
// All implementations must embed UnimplementedMsgServer // All implementations must embed UnimplementedMsgServer
// for forward compatibility // for forward compatibility
type MsgServer interface { type MsgServer interface {
// OnboardParticipant defines a method for enrolling a new validator. // OnboardParticipant defines a method for enrolling a new validator.
OnboardParticipant(context.Context, *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error) OnboardParticipant(context.Context, *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)
mustEmbedUnimplementedMsgServer() mustEmbedUnimplementedMsgServer()
} }
@ -63,6 +79,9 @@ type UnimplementedMsgServer struct {
func (UnimplementedMsgServer) OnboardParticipant(context.Context, *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error) { func (UnimplementedMsgServer) OnboardParticipant(context.Context, *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OnboardParticipant not implemented") return nil, status.Errorf(codes.Unimplemented, "method OnboardParticipant not implemented")
} }
func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented")
}
func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}
// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.
@ -94,6 +113,24 @@ func _Msg_OnboardParticipant_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgUpdateParams)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).UpdateParams(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Msg_UpdateParams_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))
}
return interceptor(ctx, in, info, handler)
}
// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.
// It's only intended for direct use with grpc.RegisterService, // It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy) // and not to be introspected or modified (even as a copy)
@ -105,6 +142,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{
MethodName: "OnboardParticipant", MethodName: "OnboardParticipant",
Handler: _Msg_OnboardParticipant_Handler, Handler: _Msg_OnboardParticipant_Handler,
}, },
{
MethodName: "UpdateParams",
Handler: _Msg_UpdateParams_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "cerc/onboarding/v1/tx.proto", Metadata: "cerc/onboarding/v1/tx.proto",

View File

@ -34,6 +34,7 @@ import (
distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
"github.com/cosmos/cosmos-sdk/x/genutil" "github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
_ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects _ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects
@ -48,6 +49,7 @@ import (
_ "github.com/cosmos/cosmos-sdk/x/crisis" // import for side-effects _ "github.com/cosmos/cosmos-sdk/x/crisis" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/distribution" // import for side-effects _ "github.com/cosmos/cosmos-sdk/x/distribution" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/mint" // import for side-effects _ "github.com/cosmos/cosmos-sdk/x/mint" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/slashing" // import for side-effects
_ "github.com/cosmos/cosmos-sdk/x/staking" // import for side-effects _ "github.com/cosmos/cosmos-sdk/x/staking" // import for side-effects
) )
@ -76,6 +78,7 @@ type LaconicApp struct {
AccountKeeper authkeeper.AccountKeeper AccountKeeper authkeeper.AccountKeeper
BankKeeper bankkeeper.Keeper BankKeeper bankkeeper.Keeper
StakingKeeper *stakingkeeper.Keeper StakingKeeper *stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
DistrKeeper distrkeeper.Keeper DistrKeeper distrkeeper.Keeper
CrisisKeeper *crisiskeeper.Keeper CrisisKeeper *crisiskeeper.Keeper
ConsensusParamsKeeper consensuskeeper.Keeper ConsensusParamsKeeper consensuskeeper.Keeper
@ -142,6 +145,7 @@ func NewLaconicApp(
&app.AccountKeeper, &app.AccountKeeper,
&app.BankKeeper, &app.BankKeeper,
&app.StakingKeeper, &app.StakingKeeper,
&app.SlashingKeeper,
&app.DistrKeeper, &app.DistrKeeper,
&app.CrisisKeeper, &app.CrisisKeeper,
&app.ConsensusParamsKeeper, &app.ConsensusParamsKeeper,

View File

@ -6,11 +6,11 @@ modules:
# During begin block slashing happens after distr.BeginBlocker so that # 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. # 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: staking module is required if HistoricalEntries param > 0
begin_blockers: [distribution, staking] begin_blockers: [distribution, slashing, staking]
end_blockers: [crisis, staking, auction, registry] end_blockers: [crisis, staking, auction, registry]
# NOTE: The genutils module must occur after staking so that pools are properly initialized with tokens from genesis accounts. # NOTE: The genutils module must occur after staking so that pools are properly initialized with tokens from genesis accounts.
# NOTE: The genutils module must also occur after auth so that it can access the params from auth. # NOTE: The genutils module must also occur after auth so that it can access the params from auth.
init_genesis: [auth, bank, distribution, staking, crisis, genutil, auction, bond, registry, onboarding] init_genesis: [auth, bank, distribution, staking, slashing, crisis, genutil, auction, bond, registry, onboarding]
override_store_keys: override_store_keys:
- module_name: auth - module_name: auth
kv_store_key: acc kv_store_key: acc
@ -39,6 +39,9 @@ modules:
- name: staking - name: staking
config: config:
"@type": cosmos.staking.module.v1.Module "@type": cosmos.staking.module.v1.Module
- name: slashing
config:
"@type": cosmos.slashing.module.v1.Module
- name: distribution - name: distribution
config: config:
"@type": cosmos.distribution.module.v1.Module "@type": cosmos.distribution.module.v1.Module

View File

@ -10,6 +10,7 @@ import (
tmproto "github.com/cometbft/cometbft/proto/tendermint/types" tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
servertypes "github.com/cosmos/cosmos-sdk/server/types" servertypes "github.com/cosmos/cosmos-sdk/server/types"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
"github.com/cosmos/cosmos-sdk/x/staking" "github.com/cosmos/cosmos-sdk/x/staking"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
) )
@ -221,4 +222,16 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
/* Handle slashing state. */
// reset start height on signing infos
app.SlashingKeeper.IterateValidatorSigningInfos(
ctx,
func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {
info.StartHeight = 0
app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info)
return false
},
)
} }

1
go.mod
View File

@ -61,6 +61,7 @@ require (
github.com/agnivade/levenshtein v1.1.1 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect
github.com/bits-and-blooms/bitset v1.10.0 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btcd/btcutil v1.1.5 // indirect
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect

View File

@ -197,6 +197,11 @@ type AuthorityRecord {
auction: Auction # Authority auction. auction: Auction # Authority auction.
} }
type Authority {
name: String!
entry: AuthorityRecord!
}
# Name record entry, created at a particular height. # Name record entry, created at a particular height.
type NameRecordEntry { type NameRecordEntry {
id: String! # Target record ID. id: String! # Target record ID.
@ -247,6 +252,9 @@ type Query {
# Naming API. # Naming API.
# #
# Get authorities list.
getAuthorities(owner: String): [Authority]
# Lookup authority information. # Lookup authority information.
lookupAuthorities(names: [String!]): [AuthorityRecord]! lookupAuthorities(names: [String!]): [AuthorityRecord]!

View File

@ -87,6 +87,11 @@ type ComplexityRoot struct {
Status func(childComplexity int) int Status func(childComplexity int) int
} }
Authority struct {
Entry func(childComplexity int) int
Name func(childComplexity int) int
}
AuthorityRecord struct { AuthorityRecord struct {
Auction func(childComplexity int) int Auction func(childComplexity int) int
BondID func(childComplexity int) int BondID func(childComplexity int) int
@ -169,6 +174,7 @@ type ComplexityRoot struct {
Query struct { Query struct {
GetAccounts func(childComplexity int, addresses []string) int GetAccounts func(childComplexity int, addresses []string) int
GetAuctionsByIds func(childComplexity int, ids []string) int GetAuctionsByIds func(childComplexity int, ids []string) int
GetAuthorities func(childComplexity int, owner *string) int
GetBondsByIds func(childComplexity int, ids []string) int GetBondsByIds func(childComplexity int, ids []string) int
GetParticipantByAddress func(childComplexity int, address string) int GetParticipantByAddress func(childComplexity int, address string) int
GetParticipantByNitroAddress func(childComplexity int, nitroAddress string) int GetParticipantByNitroAddress func(childComplexity int, nitroAddress string) int
@ -231,6 +237,7 @@ type QueryResolver interface {
QueryBondsByOwner(ctx context.Context, ownerAddresses []string) ([]*OwnerBonds, error) QueryBondsByOwner(ctx context.Context, ownerAddresses []string) ([]*OwnerBonds, error)
GetRecordsByIds(ctx context.Context, ids []string) ([]*Record, error) GetRecordsByIds(ctx context.Context, ids []string) ([]*Record, error)
QueryRecords(ctx context.Context, attributes []*KeyValueInput, all *bool) ([]*Record, error) QueryRecords(ctx context.Context, attributes []*KeyValueInput, all *bool) ([]*Record, error)
GetAuthorities(ctx context.Context, owner *string) ([]*Authority, error)
LookupAuthorities(ctx context.Context, names []string) ([]*AuthorityRecord, error) LookupAuthorities(ctx context.Context, names []string) ([]*AuthorityRecord, error)
LookupNames(ctx context.Context, names []string) ([]*NameRecord, error) LookupNames(ctx context.Context, names []string) ([]*NameRecord, error)
ResolveNames(ctx context.Context, names []string) ([]*Record, error) ResolveNames(ctx context.Context, names []string) ([]*Record, error)
@ -458,6 +465,20 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
return e.complexity.AuctionBid.Status(childComplexity), true return e.complexity.AuctionBid.Status(childComplexity), true
case "Authority.entry":
if e.complexity.Authority.Entry == nil {
break
}
return e.complexity.Authority.Entry(childComplexity), true
case "Authority.name":
if e.complexity.Authority.Name == nil {
break
}
return e.complexity.Authority.Name(childComplexity), true
case "AuthorityRecord.auction": case "AuthorityRecord.auction":
if e.complexity.AuthorityRecord.Auction == nil { if e.complexity.AuthorityRecord.Auction == nil {
break break
@ -720,6 +741,18 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
return e.complexity.Query.GetAuctionsByIds(childComplexity, args["ids"].([]string)), true return e.complexity.Query.GetAuctionsByIds(childComplexity, args["ids"].([]string)), true
case "Query.getAuthorities":
if e.complexity.Query.GetAuthorities == nil {
break
}
args, err := ec.field_Query_getAuthorities_args(context.TODO(), rawArgs)
if err != nil {
return 0, false
}
return e.complexity.Query.GetAuthorities(childComplexity, args["owner"].(*string)), true
case "Query.getBondsByIds": case "Query.getBondsByIds":
if e.complexity.Query.GetBondsByIds == nil { if e.complexity.Query.GetBondsByIds == nil {
break break
@ -1141,6 +1174,21 @@ func (ec *executionContext) field_Query_getAuctionsByIds_args(ctx context.Contex
return args, nil return args, nil
} }
func (ec *executionContext) field_Query_getAuthorities_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
var err error
args := map[string]interface{}{}
var arg0 *string
if tmp, ok := rawArgs["owner"]; ok {
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("owner"))
arg0, err = ec.unmarshalOString2ᚖstring(ctx, tmp)
if err != nil {
return nil, err
}
}
args["owner"] = arg0
return args, nil
}
func (ec *executionContext) field_Query_getBondsByIds_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { func (ec *executionContext) field_Query_getBondsByIds_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
var err error var err error
args := map[string]interface{}{} args := map[string]interface{}{}
@ -2674,6 +2722,110 @@ func (ec *executionContext) fieldContext_AuctionBid_bidAmount(ctx context.Contex
return fc, nil return fc, nil
} }
func (ec *executionContext) _Authority_name(ctx context.Context, field graphql.CollectedField, obj *Authority) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_Authority_name(ctx, field)
if err != nil {
return graphql.Null
}
ctx = graphql.WithFieldContext(ctx, fc)
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
ret = graphql.Null
}
}()
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
ctx = rctx // use context from middleware stack in children
return obj.Name, nil
})
if err != nil {
ec.Error(ctx, err)
return graphql.Null
}
if resTmp == nil {
if !graphql.HasFieldError(ctx, fc) {
ec.Errorf(ctx, "must not be null")
}
return graphql.Null
}
res := resTmp.(string)
fc.Result = res
return ec.marshalNString2string(ctx, field.Selections, res)
}
func (ec *executionContext) fieldContext_Authority_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "Authority",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type String does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _Authority_entry(ctx context.Context, field graphql.CollectedField, obj *Authority) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_Authority_entry(ctx, field)
if err != nil {
return graphql.Null
}
ctx = graphql.WithFieldContext(ctx, fc)
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
ret = graphql.Null
}
}()
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
ctx = rctx // use context from middleware stack in children
return obj.Entry, nil
})
if err != nil {
ec.Error(ctx, err)
return graphql.Null
}
if resTmp == nil {
if !graphql.HasFieldError(ctx, fc) {
ec.Errorf(ctx, "must not be null")
}
return graphql.Null
}
res := resTmp.(*AuthorityRecord)
fc.Result = res
return ec.marshalNAuthorityRecord2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthorityRecord(ctx, field.Selections, res)
}
func (ec *executionContext) fieldContext_Authority_entry(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "Authority",
Field: field,
IsMethod: false,
IsResolver: false,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
switch field.Name {
case "ownerAddress":
return ec.fieldContext_AuthorityRecord_ownerAddress(ctx, field)
case "ownerPublicKey":
return ec.fieldContext_AuthorityRecord_ownerPublicKey(ctx, field)
case "height":
return ec.fieldContext_AuthorityRecord_height(ctx, field)
case "status":
return ec.fieldContext_AuthorityRecord_status(ctx, field)
case "bondId":
return ec.fieldContext_AuthorityRecord_bondId(ctx, field)
case "expiryTime":
return ec.fieldContext_AuthorityRecord_expiryTime(ctx, field)
case "auction":
return ec.fieldContext_AuthorityRecord_auction(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type AuthorityRecord", field.Name)
},
}
return fc, nil
}
func (ec *executionContext) _AuthorityRecord_ownerAddress(ctx context.Context, field graphql.CollectedField, obj *AuthorityRecord) (ret graphql.Marshaler) { func (ec *executionContext) _AuthorityRecord_ownerAddress(ctx context.Context, field graphql.CollectedField, obj *AuthorityRecord) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_AuthorityRecord_ownerAddress(ctx, field) fc, err := ec.fieldContext_AuthorityRecord_ownerAddress(ctx, field)
if err != nil { if err != nil {
@ -4670,6 +4822,64 @@ func (ec *executionContext) fieldContext_Query_queryRecords(ctx context.Context,
return fc, nil return fc, nil
} }
func (ec *executionContext) _Query_getAuthorities(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_Query_getAuthorities(ctx, field)
if err != nil {
return graphql.Null
}
ctx = graphql.WithFieldContext(ctx, fc)
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
ret = graphql.Null
}
}()
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
ctx = rctx // use context from middleware stack in children
return ec.resolvers.Query().GetAuthorities(rctx, fc.Args["owner"].(*string))
})
if err != nil {
ec.Error(ctx, err)
return graphql.Null
}
if resTmp == nil {
return graphql.Null
}
res := resTmp.([]*Authority)
fc.Result = res
return ec.marshalOAuthority2ᚕᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthority(ctx, field.Selections, res)
}
func (ec *executionContext) fieldContext_Query_getAuthorities(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "Query",
Field: field,
IsMethod: true,
IsResolver: true,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
switch field.Name {
case "name":
return ec.fieldContext_Authority_name(ctx, field)
case "entry":
return ec.fieldContext_Authority_entry(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type Authority", field.Name)
},
}
defer func() {
if r := recover(); r != nil {
err = ec.Recover(ctx, r)
ec.Error(ctx, err)
}
}()
ctx = graphql.WithFieldContext(ctx, fc)
if fc.Args, err = ec.field_Query_getAuthorities_args(ctx, field.ArgumentMap(ec.Variables)); err != nil {
ec.Error(ctx, err)
return
}
return fc, nil
}
func (ec *executionContext) _Query_lookupAuthorities(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { func (ec *executionContext) _Query_lookupAuthorities(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_Query_lookupAuthorities(ctx, field) fc, err := ec.fieldContext_Query_lookupAuthorities(ctx, field)
if err != nil { if err != nil {
@ -8623,6 +8833,41 @@ func (ec *executionContext) _AuctionBid(ctx context.Context, sel ast.SelectionSe
return out return out
} }
var authorityImplementors = []string{"Authority"}
func (ec *executionContext) _Authority(ctx context.Context, sel ast.SelectionSet, obj *Authority) graphql.Marshaler {
fields := graphql.CollectFields(ec.OperationContext, sel, authorityImplementors)
out := graphql.NewFieldSet(fields)
var invalids uint32
for i, field := range fields {
switch field.Name {
case "__typename":
out.Values[i] = graphql.MarshalString("Authority")
case "name":
out.Values[i] = ec._Authority_name(ctx, field, obj)
if out.Values[i] == graphql.Null {
invalids++
}
case "entry":
out.Values[i] = ec._Authority_entry(ctx, field, obj)
if out.Values[i] == graphql.Null {
invalids++
}
default:
panic("unknown field " + strconv.Quote(field.Name))
}
}
out.Dispatch()
if invalids > 0 {
return graphql.Null
}
return out
}
var authorityRecordImplementors = []string{"AuthorityRecord"} var authorityRecordImplementors = []string{"AuthorityRecord"}
func (ec *executionContext) _AuthorityRecord(ctx context.Context, sel ast.SelectionSet, obj *AuthorityRecord) graphql.Marshaler { func (ec *executionContext) _AuthorityRecord(ctx context.Context, sel ast.SelectionSet, obj *AuthorityRecord) graphql.Marshaler {
@ -9323,6 +9568,26 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc) return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
} }
out.Concurrently(i, func() graphql.Marshaler {
return rrm(innerCtx)
})
case "getAuthorities":
field := field
innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
}
}()
res = ec._Query_getAuthorities(ctx, field)
return res
}
rrm := func(ctx context.Context) graphql.Marshaler {
return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
}
out.Concurrently(i, func() graphql.Marshaler { out.Concurrently(i, func() graphql.Marshaler {
return rrm(innerCtx) return rrm(innerCtx)
}) })
@ -10169,6 +10434,16 @@ func (ec *executionContext) marshalNAuthorityRecord2ᚕᚖgitᚗvdbᚗtoᚋcerc
return ret return ret
} }
func (ec *executionContext) marshalNAuthorityRecord2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthorityRecord(ctx context.Context, sel ast.SelectionSet, v *AuthorityRecord) graphql.Marshaler {
if v == nil {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
ec.Errorf(ctx, "the requested element is null which the schema does not allow")
}
return graphql.Null
}
return ec._AuthorityRecord(ctx, sel, v)
}
func (ec *executionContext) marshalNBond2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐBond(ctx context.Context, sel ast.SelectionSet, v *Bond) graphql.Marshaler { func (ec *executionContext) marshalNBond2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐBond(ctx context.Context, sel ast.SelectionSet, v *Bond) graphql.Marshaler {
if v == nil { if v == nil {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
@ -10956,6 +11231,54 @@ func (ec *executionContext) marshalOAuctionBid2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋl
return ec._AuctionBid(ctx, sel, v) return ec._AuctionBid(ctx, sel, v)
} }
func (ec *executionContext) marshalOAuthority2ᚕᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthority(ctx context.Context, sel ast.SelectionSet, v []*Authority) graphql.Marshaler {
if v == nil {
return graphql.Null
}
ret := make(graphql.Array, len(v))
var wg sync.WaitGroup
isLen1 := len(v) == 1
if !isLen1 {
wg.Add(len(v))
}
for i := range v {
i := i
fc := &graphql.FieldContext{
Index: &i,
Result: &v[i],
}
ctx := graphql.WithFieldContext(ctx, fc)
f := func(i int) {
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
ret = nil
}
}()
if !isLen1 {
defer wg.Done()
}
ret[i] = ec.marshalOAuthority2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthority(ctx, sel, v[i])
}
if isLen1 {
f(i)
} else {
go f(i)
}
}
wg.Wait()
return ret
}
func (ec *executionContext) marshalOAuthority2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthority(ctx context.Context, sel ast.SelectionSet, v *Authority) graphql.Marshaler {
if v == nil {
return graphql.Null
}
return ec._Authority(ctx, sel, v)
}
func (ec *executionContext) marshalOAuthorityRecord2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthorityRecord(ctx context.Context, sel ast.SelectionSet, v *AuthorityRecord) graphql.Marshaler { func (ec *executionContext) marshalOAuthorityRecord2ᚖgitᚗvdbᚗtoᚋcercᚑioᚋlaconicdᚋgqlᚐAuthorityRecord(ctx context.Context, sel ast.SelectionSet, v *AuthorityRecord) graphql.Marshaler {
if v == nil { if v == nil {
return graphql.Null return graphql.Null

View File

@ -52,6 +52,11 @@ type AuctionBid struct {
BidAmount *Coin `json:"bidAmount"` BidAmount *Coin `json:"bidAmount"`
} }
type Authority struct {
Name string `json:"name"`
Entry *AuthorityRecord `json:"entry"`
}
type AuthorityRecord struct { type AuthorityRecord struct {
OwnerAddress string `json:"ownerAddress"` OwnerAddress string `json:"ownerAddress"`
OwnerPublicKey string `json:"ownerPublicKey"` OwnerPublicKey string `json:"ownerPublicKey"`

View File

@ -35,6 +35,36 @@ func (r *Resolver) Query() QueryResolver {
type queryResolver struct{ *Resolver } type queryResolver struct{ *Resolver }
func (q queryResolver) GetAuthorities(ctx context.Context, owner *string) ([]*Authority, error) {
nsQueryClient := registrytypes.NewQueryClient(q.ctx)
auctionQueryClient := auctiontypes.NewQueryClient(q.ctx)
authoritiesReq := &registrytypes.QueryAuthoritiesRequest{}
if owner != nil {
authoritiesReq.Owner = *owner
}
authoritiesResp, err := nsQueryClient.Authorities(ctx, authoritiesReq)
if err != nil {
return nil, err
}
authorities := make([]*Authority, len(authoritiesResp.GetAuthorities()))
for i, a := range authoritiesResp.Authorities {
entry, err := getAuthorityRecord(*a.Entry, auctionQueryClient)
if err != nil {
return nil, err
}
authorities[i] = &Authority{
Name: a.Name,
Entry: entry,
}
}
return authorities, nil
}
func (q queryResolver) LookupAuthorities(ctx context.Context, names []string) ([]*AuthorityRecord, error) { func (q queryResolver) LookupAuthorities(ctx context.Context, names []string) ([]*AuthorityRecord, error) {
nsQueryClient := registrytypes.NewQueryClient(q.ctx) nsQueryClient := registrytypes.NewQueryClient(q.ctx)
auctionQueryClient := auctiontypes.NewQueryClient(q.ctx) auctionQueryClient := auctiontypes.NewQueryClient(q.ctx)
@ -52,29 +82,11 @@ func (q queryResolver) LookupAuthorities(ctx context.Context, names []string) ([
} }
nameAuthority := res.GetNameAuthority() nameAuthority := res.GetNameAuthority()
gqlNameAuthorityRecord, err := GetGQLNameAuthorityRecord(&nameAuthority) gqlNameAuthorityRecord, err := getAuthorityRecord(nameAuthority, auctionQueryClient)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if nameAuthority.AuctionId != "" {
auctionResp, err := auctionQueryClient.GetAuction(context.Background(), &auctiontypes.QueryGetAuctionRequest{Id: nameAuthority.GetAuctionId()})
if err != nil {
return nil, err
}
bidsResp, err := auctionQueryClient.GetBids(context.Background(), &auctiontypes.QueryGetBidsRequest{AuctionId: nameAuthority.GetAuctionId()})
if err != nil {
return nil, err
}
gqlAuctionRecord, err := GetGQLAuction(auctionResp.GetAuction(), bidsResp.GetBids())
if err != nil {
return nil, err
}
gqlNameAuthorityRecord.Auction = gqlAuctionRecord
}
gqlResponse = append(gqlResponse, gqlNameAuthorityRecord) gqlResponse = append(gqlResponse, gqlNameAuthorityRecord)
} }

View File

@ -303,3 +303,30 @@ func toRPCAttributes(attrs []*KeyValueInput) []*registrytypes.QueryRecordsReques
return kvPairs return kvPairs
} }
func getAuthorityRecord(nameAuthority registrytypes.NameAuthority, auctionQueryClient auctiontypes.QueryClient) (*AuthorityRecord, error) {
gqlNameAuthorityRecord, err := GetGQLNameAuthorityRecord(&nameAuthority)
if err != nil {
return nil, err
}
if nameAuthority.AuctionId != "" {
auctionResp, err := auctionQueryClient.GetAuction(context.Background(), &auctiontypes.QueryGetAuctionRequest{Id: nameAuthority.GetAuctionId()})
if err != nil {
return nil, err
}
bidsResp, err := auctionQueryClient.GetBids(context.Background(), &auctiontypes.QueryGetBidsRequest{AuctionId: nameAuthority.GetAuctionId()})
if err != nil {
return nil, err
}
gqlAuctionRecord, err := GetGQLAuction(auctionResp.GetAuction(), bidsResp.GetBids())
if err != nil {
return nil, err
}
gqlNameAuthorityRecord.Auction = gqlAuctionRecord
}
return gqlNameAuthorityRecord, nil
}

View File

@ -10,4 +10,8 @@ message Module {
option (cosmos.app.v1alpha1.module) = { option (cosmos.app.v1alpha1.module) = {
go_import : "git.vdb.to/cerc-io/laconicd/x/bond" go_import : "git.vdb.to/cerc-io/laconicd/x/bond"
}; };
// authority defines the custom module authority. If not set, defaults to the
// governance module.
string authority = 2;
} }

View File

@ -6,6 +6,8 @@ import "cosmos/msg/v1/msg.proto";
import "gogoproto/gogo.proto"; import "gogoproto/gogo.proto";
import "google/api/annotations.proto"; import "google/api/annotations.proto";
import "cosmos/base/v1beta1/coin.proto"; import "cosmos/base/v1beta1/coin.proto";
import "cosmos_proto/cosmos.proto";
import "cerc/bond/v1/bond.proto";
option go_package = "git.vdb.to/cerc-io/laconicd/x/bond"; option go_package = "git.vdb.to/cerc-io/laconicd/x/bond";
@ -32,6 +34,10 @@ service Msg {
rpc CancelBond(MsgCancelBond) returns (MsgCancelBondResponse) { rpc CancelBond(MsgCancelBond) returns (MsgCancelBondResponse) {
option (google.api.http).post = "/cerc/bond/v1/cancel_bond"; option (google.api.http).post = "/cerc/bond/v1/cancel_bond";
}; };
// UpdateParams defines an operation for updating the x/staking module
// parameters.
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
} }
// MsgCreateBond defines a SDK message for creating a new bond. // MsgCreateBond defines a SDK message for creating a new bond.
@ -91,3 +97,21 @@ message MsgCancelBond {
// MsgCancelBondResponse defines the Msg/CancelBond response type. // MsgCancelBondResponse defines the Msg/CancelBond response type.
message MsgCancelBondResponse {} message MsgCancelBondResponse {}
// MsgUpdateParams is the Msg/UpdateParams request type.
message MsgUpdateParams {
option (cosmos.msg.v1.signer) = "authority";
// authority is the address that controls the module (defaults to x/gov unless
// overwritten).
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// params defines the x/bond parameters to update.
//
// NOTE: All parameters must be supplied.
Params params = 2 [ (gogoproto.nullable) = false ];
}
// MsgUpdateParamsResponse defines the response structure for executing a
// MsgUpdateParams message.
message MsgUpdateParamsResponse {};

View File

@ -6,6 +6,7 @@ import "cosmos/msg/v1/msg.proto";
import "google/api/annotations.proto"; import "google/api/annotations.proto";
import "gogoproto/gogo.proto"; import "gogoproto/gogo.proto";
import "cerc/onboarding/v1/onboarding.proto"; import "cerc/onboarding/v1/onboarding.proto";
import "cosmos_proto/cosmos.proto";
option go_package = "git.vdb.to/cerc-io/laconicd/x/onboarding"; option go_package = "git.vdb.to/cerc-io/laconicd/x/onboarding";
@ -18,6 +19,10 @@ service Msg {
returns (MsgOnboardParticipantResponse) { returns (MsgOnboardParticipantResponse) {
option (google.api.http).post = "/cerc/onboarding/v1/onboard_participant"; option (google.api.http).post = "/cerc/onboarding/v1/onboard_participant";
}; };
// UpdateParams defines an operation for updating the x/staking module
// parameters.
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
} }
// MsgOnboardParticipant defines a SDK message for enrolling a new validator. // MsgOnboardParticipant defines a SDK message for enrolling a new validator.
@ -35,3 +40,21 @@ message MsgOnboardParticipant {
// MsgOnboardParticipantResponse defines the Msg/OnboardParticipant response // MsgOnboardParticipantResponse defines the Msg/OnboardParticipant response
// type. // type.
message MsgOnboardParticipantResponse {} message MsgOnboardParticipantResponse {}
// MsgUpdateParams is the Msg/UpdateParams request type.
message MsgUpdateParams {
option (cosmos.msg.v1.signer) = "authority";
// authority is the address that controls the module (defaults to x/gov unless
// overwritten).
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// params defines the x/bond parameters to update.
//
// NOTE: All parameters must be supplied.
Params params = 2 [ (gogoproto.nullable) = false ];
}
// MsgUpdateParamsResponse defines the response structure for executing a
// MsgUpdateParams message.
message MsgUpdateParamsResponse {};

View File

@ -1,10 +1,14 @@
#!/bin/bash #!/bin/bash
KEY="alice" KEY="alice"
CHAINID="laconic_9000-1" CHAINID=${CHAINID:-"laconic_9000-1"}
MONIKER="localtestnet" MONIKER=${MONIKER:-"localtestnet"}
KEYRING="test" KEYRING=${KEYRING:-"test"}
LOGLEVEL="${LOGLEVEL:-info}" DENOM=${DENOM:-"alnt"}
STAKING_AMOUNT=${STAKING_AMOUNT:-"1000000000000000"}
LOGLEVEL=${LOGLEVEL:-"info"}
input_genesis_file=${GENESIS_FILE}
if [ "$1" == "clean" ] || [ ! -d "$HOME/.laconicd/data/blockstore.db" ]; then if [ "$1" == "clean" ] || [ ! -d "$HOME/.laconicd/data/blockstore.db" ]; then
# validate dependencies are installed # validate dependencies are installed
@ -27,7 +31,12 @@ if [ "$1" == "clean" ] || [ ! -d "$HOME/.laconicd/data/blockstore.db" ]; then
laconicd keys add $KEY --keyring-backend $KEYRING laconicd keys add $KEY --keyring-backend $KEYRING
# Set moniker and chain-id for Ethermint (Moniker can be anything, chain-id must be an integer) # Set moniker and chain-id for Ethermint (Moniker can be anything, chain-id must be an integer)
laconicd init $MONIKER --chain-id $CHAINID --default-denom alnt laconicd init $MONIKER --chain-id $CHAINID --default-denom $DENOM
if [[ -f ${input_genesis_file} ]]; then
# Use provided genesis config
cp $input_genesis_file $HOME/.laconicd/config/genesis.json
fi
update_genesis() { update_genesis() {
jq "$1" $HOME/.laconicd/config/genesis.json > $HOME/.laconicd/config/tmp_genesis.json && jq "$1" $HOME/.laconicd/config/genesis.json > $HOME/.laconicd/config/tmp_genesis.json &&
@ -58,6 +67,26 @@ if [ "$1" == "clean" ] || [ ! -d "$HOME/.laconicd/data/blockstore.db" ]; then
update_genesis '.app_state["onboarding"]["params"]["onboarding_enabled"]=true' update_genesis '.app_state["onboarding"]["params"]["onboarding_enabled"]=true'
fi fi
if [[ "$AUTHORITY_AUCTION_ENABLED" == "true" ]]; then
echo "Enabling authority auctions."
update_genesis '.app_state["registry"]["params"]["authority_auction_enabled"]=true'
fi
if [[ -n $AUTHORITY_AUCTION_COMMITS_DURATION ]]; then
echo "Setting authority_auction_commits_duration to $AUTHORITY_AUCTION_COMMITS_DURATION seconds."
update_genesis ".app_state[\"registry\"][\"params\"][\"authority_auction_commits_duration\"]=\"${AUTHORITY_AUCTION_COMMITS_DURATION}s\""
fi
if [[ -n $AUTHORITY_AUCTION_REVEALS_DURATION ]]; then
echo "Setting authority_auction_reveals_duration to $AUTHORITY_AUCTION_REVEALS_DURATION seconds."
update_genesis ".app_state[\"registry\"][\"params\"][\"authority_auction_reveals_duration\"]=\"${AUTHORITY_AUCTION_REVEALS_DURATION}s\""
fi
if [[ -n $AUTHORITY_GRACE_PERIOD ]]; then
echo "Setting authority_grace_period to $AUTHORITY_GRACE_PERIOD seconds."
update_genesis ".app_state[\"registry\"][\"params\"][\"authority_grace_period\"]=\"${AUTHORITY_GRACE_PERIOD}s\""
fi
# increase block time (?) # increase block time (?)
update_genesis '.consensus["params"]["block"]["time_iota_ms"]="1000"' update_genesis '.consensus["params"]["block"]["time_iota_ms"]="1000"'
@ -87,11 +116,11 @@ if [ "$1" == "clean" ] || [ ! -d "$HOME/.laconicd/data/blockstore.db" ]; then
# Allocate genesis accounts (cosmos formatted addresses) # Allocate genesis accounts (cosmos formatted addresses)
# 10^30 alnt | 10^12 lnt # 10^30 alnt | 10^12 lnt
laconicd genesis add-genesis-account $KEY 1000000000000000000000000000000alnt --keyring-backend $KEYRING laconicd genesis add-genesis-account $KEY 1000000000000000000000000000000$DENOM --keyring-backend $KEYRING
# Sign genesis transaction # Sign genesis transaction
# 10^24 alnt | 10^6 lnt # 10^15 alnt
laconicd genesis gentx $KEY 1000000000000000000000000alnt --keyring-backend $KEYRING --chain-id $CHAINID laconicd genesis gentx $KEY $STAKING_AMOUNT$DENOM --keyring-backend $KEYRING --chain-id $CHAINID
# Collect genesis tx # Collect genesis tx
laconicd genesis collect-gentxs laconicd genesis collect-gentxs
@ -106,7 +135,7 @@ fi
laconicd start \ laconicd start \
--pruning=nothing \ --pruning=nothing \
--log_level $LOGLEVEL \ --log_level $LOGLEVEL \
--minimum-gas-prices=1alnt \ --minimum-gas-prices=1$DENOM \
--api.enable \ --api.enable \
--rpc.laddr="tcp://0.0.0.0:26657" \ --rpc.laddr="tcp://0.0.0.0:26657" \
--gql-server --gql-playground --gql-server --gql-playground

View File

@ -101,7 +101,7 @@ func (tf *TestFixture) Setup() error {
auctionKeeper := auctionkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[auctionTypes.StoreKey]), accountKeeper, bankKeeper) auctionKeeper := auctionkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[auctionTypes.StoreKey]), accountKeeper, bankKeeper)
bondKeeper := bondkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[bondTypes.StoreKey]), accountKeeper, bankKeeper) bondKeeper := bondkeeper.NewKeeper(cdc, runtime.NewKVStoreService(keys[bondTypes.StoreKey]), accountKeeper, bankKeeper, authority.String())
registryKeeper := registrykeeper.NewKeeper( registryKeeper := registrykeeper.NewKeeper(
cdc, cdc,

View File

@ -45,6 +45,8 @@ type Keeper struct {
// Codecs // Codecs
cdc codec.BinaryCodec cdc codec.BinaryCodec
authority string
// External keepers // External keepers
accountKeeper auth.AccountKeeper accountKeeper auth.AccountKeeper
bankKeeper bank.Keeper bankKeeper bank.Keeper
@ -64,10 +66,17 @@ func NewKeeper(
storeService store.KVStoreService, storeService store.KVStoreService,
accountKeeper auth.AccountKeeper, accountKeeper auth.AccountKeeper,
bankKeeper bank.Keeper, bankKeeper bank.Keeper,
authority string,
) *Keeper { ) *Keeper {
// ensure that authority is a valid AccAddress
if _, err := accountKeeper.AddressCodec().StringToBytes(authority); err != nil {
panic("authority is not a valid acc address")
}
sb := collections.NewSchemaBuilder(storeService) sb := collections.NewSchemaBuilder(storeService)
k := Keeper{ k := Keeper{
cdc: cdc, cdc: cdc,
authority: authority,
accountKeeper: accountKeeper, accountKeeper: accountKeeper,
bankKeeper: bankKeeper, bankKeeper: bankKeeper,
Params: collections.NewItem(sb, bondtypes.ParamsPrefix, "params", codec.CollValue[bondtypes.Params](cdc)), Params: collections.NewItem(sb, bondtypes.ParamsPrefix, "params", codec.CollValue[bondtypes.Params](cdc)),
@ -355,6 +364,11 @@ func (k Keeper) CancelBond(ctx sdk.Context, id string, ownerAddress sdk.AccAddre
return &bond, nil return &bond, nil
} }
// GetAuthority returns the x/bond module's authority.
func (k Keeper) GetAuthority() string {
return k.authority
}
// GetParams gets the bond module's parameters. // GetParams gets the bond module's parameters.
func (k Keeper) GetParams(ctx sdk.Context) (*bondtypes.Params, error) { func (k Keeper) GetParams(ctx sdk.Context) (*bondtypes.Params, error) {
params, err := k.Params.Get(ctx) params, err := k.Params.Get(ctx)
@ -365,6 +379,11 @@ func (k Keeper) GetParams(ctx sdk.Context) (*bondtypes.Params, error) {
return &params, nil return &params, nil
} }
// SetParams sets the x/bond module parameters.
func (k Keeper) SetParams(ctx sdk.Context, params bondtypes.Params) error {
return k.Params.Set(ctx, params)
}
func (k Keeper) getMaxBondAmount(ctx sdk.Context) (sdk.Coins, error) { func (k Keeper) getMaxBondAmount(ctx sdk.Context) (sdk.Coins, error) {
params, err := k.GetParams(ctx) params, err := k.GetParams(ctx)
if err != nil { if err != nil {

View File

@ -3,7 +3,9 @@ package keeper
import ( import (
"context" "context"
errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"git.vdb.to/cerc-io/laconicd/utils" "git.vdb.to/cerc-io/laconicd/utils"
"git.vdb.to/cerc-io/laconicd/x/bond" "git.vdb.to/cerc-io/laconicd/x/bond"
@ -168,3 +170,22 @@ func (ms msgServer) CancelBond(c context.Context, msg *bond.MsgCancelBond) (*bon
return &bond.MsgCancelBondResponse{}, nil return &bond.MsgCancelBondResponse{}, nil
} }
// UpdateParams defines a method to perform updation of module params.
func (ms msgServer) UpdateParams(c context.Context, msg *bond.MsgUpdateParams) (*bond.MsgUpdateParamsResponse, error) {
if ms.k.authority != msg.Authority {
return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.k.authority, msg.Authority)
}
if err := msg.Params.Validate(); err != nil {
return nil, err
}
ctx := sdk.UnwrapSDKContext(c)
if err := ms.k.SetParams(ctx, msg.Params); err != nil {
return nil, err
}
return &bond.MsgUpdateParamsResponse{}, nil
}

View File

@ -88,6 +88,10 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
{ProtoField: "id"}, {ProtoField: "id"},
}, },
}, },
{
RpcMethod: "UpdateParams",
Skip: true, // skipped because authority gated
},
}, },
}, },
} }

View File

@ -7,7 +7,9 @@ import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper" auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper" bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
modulev1 "git.vdb.to/cerc-io/laconicd/api/cerc/bond/module/v1" modulev1 "git.vdb.to/cerc-io/laconicd/api/cerc/bond/module/v1"
"git.vdb.to/cerc-io/laconicd/x/bond" "git.vdb.to/cerc-io/laconicd/x/bond"
@ -33,6 +35,7 @@ func init() {
type ModuleInputs struct { type ModuleInputs struct {
depinject.In depinject.In
Config *modulev1.Module
Cdc codec.Codec Cdc codec.Codec
StoreService store.KVStoreService StoreService store.KVStoreService
@ -48,7 +51,13 @@ type ModuleOutputs struct {
} }
func ProvideModule(in ModuleInputs) ModuleOutputs { func ProvideModule(in ModuleInputs) ModuleOutputs {
k := keeper.NewKeeper(in.Cdc, in.StoreService, in.AccountKeeper, in.BankKeeper) // default to governance authority if not provided
authority := authtypes.NewModuleAddress(govtypes.ModuleName)
if in.Config.Authority != "" {
authority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority)
}
k := keeper.NewKeeper(in.Cdc, in.StoreService, in.AccountKeeper, in.BankKeeper, authority.String())
m := NewAppModule(in.Cdc, k) m := NewAppModule(in.Cdc, k)
return ModuleOutputs{Module: m, Keeper: k} return ModuleOutputs{Module: m, Keeper: k}

View File

@ -6,6 +6,7 @@ package bond
import ( import (
context "context" context "context"
fmt "fmt" fmt "fmt"
_ "github.com/cosmos/cosmos-proto"
github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types"
types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types"
_ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/cosmos-sdk/types/msgservice"
@ -416,6 +417,102 @@ func (m *MsgCancelBondResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgCancelBondResponse proto.InternalMessageInfo var xxx_messageInfo_MsgCancelBondResponse proto.InternalMessageInfo
// MsgUpdateParams is the Msg/UpdateParams request type.
type MsgUpdateParams struct {
// authority is the address that controls the module (defaults to x/gov unless
// overwritten).
Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"`
// params defines the x/bond parameters to update.
//
// NOTE: All parameters must be supplied.
Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"`
}
func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} }
func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateParams) ProtoMessage() {}
func (*MsgUpdateParams) Descriptor() ([]byte, []int) {
return fileDescriptor_efb1a132c2c5bd62, []int{8}
}
func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *MsgUpdateParams) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgUpdateParams.Merge(m, src)
}
func (m *MsgUpdateParams) XXX_Size() int {
return m.Size()
}
func (m *MsgUpdateParams) XXX_DiscardUnknown() {
xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m)
}
var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo
func (m *MsgUpdateParams) GetAuthority() string {
if m != nil {
return m.Authority
}
return ""
}
func (m *MsgUpdateParams) GetParams() Params {
if m != nil {
return m.Params
}
return Params{}
}
// MsgUpdateParamsResponse defines the response structure for executing a
// MsgUpdateParams message.
type MsgUpdateParamsResponse struct {
}
func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} }
func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateParamsResponse) ProtoMessage() {}
func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_efb1a132c2c5bd62, []int{9}
}
func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src)
}
func (m *MsgUpdateParamsResponse) XXX_Size() int {
return m.Size()
}
func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo
func init() { func init() {
proto.RegisterType((*MsgCreateBond)(nil), "cerc.bond.v1.MsgCreateBond") proto.RegisterType((*MsgCreateBond)(nil), "cerc.bond.v1.MsgCreateBond")
proto.RegisterType((*MsgCreateBondResponse)(nil), "cerc.bond.v1.MsgCreateBondResponse") proto.RegisterType((*MsgCreateBondResponse)(nil), "cerc.bond.v1.MsgCreateBondResponse")
@ -425,47 +522,56 @@ func init() {
proto.RegisterType((*MsgWithdrawBondResponse)(nil), "cerc.bond.v1.MsgWithdrawBondResponse") proto.RegisterType((*MsgWithdrawBondResponse)(nil), "cerc.bond.v1.MsgWithdrawBondResponse")
proto.RegisterType((*MsgCancelBond)(nil), "cerc.bond.v1.MsgCancelBond") proto.RegisterType((*MsgCancelBond)(nil), "cerc.bond.v1.MsgCancelBond")
proto.RegisterType((*MsgCancelBondResponse)(nil), "cerc.bond.v1.MsgCancelBondResponse") proto.RegisterType((*MsgCancelBondResponse)(nil), "cerc.bond.v1.MsgCancelBondResponse")
proto.RegisterType((*MsgUpdateParams)(nil), "cerc.bond.v1.MsgUpdateParams")
proto.RegisterType((*MsgUpdateParamsResponse)(nil), "cerc.bond.v1.MsgUpdateParamsResponse")
} }
func init() { proto.RegisterFile("cerc/bond/v1/tx.proto", fileDescriptor_efb1a132c2c5bd62) } func init() { proto.RegisterFile("cerc/bond/v1/tx.proto", fileDescriptor_efb1a132c2c5bd62) }
var fileDescriptor_efb1a132c2c5bd62 = []byte{ var fileDescriptor_efb1a132c2c5bd62 = []byte{
// 548 bytes of a gzipped FileDescriptorProto // 659 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x54, 0x41, 0x6f, 0xd3, 0x30, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0x4d, 0x6b, 0x13, 0x41,
0x18, 0x6d, 0x5a, 0x6d, 0x12, 0xde, 0x00, 0xa9, 0x62, 0x6c, 0x6d, 0x59, 0x5a, 0x32, 0x21, 0xaa, 0x18, 0xce, 0xa6, 0x1f, 0xd0, 0x69, 0xad, 0xb0, 0xb4, 0xa6, 0x49, 0xed, 0xb6, 0x6e, 0x11, 0x4b,
0x49, 0xb3, 0xd5, 0x71, 0x9b, 0x38, 0x75, 0x5c, 0x7b, 0xe9, 0x05, 0x89, 0x0b, 0x72, 0x12, 0xe3, 0xa1, 0x3b, 0x24, 0x82, 0x87, 0xe2, 0xc5, 0xd4, 0x6b, 0x40, 0xa2, 0x22, 0x78, 0x29, 0x93, 0xdd,
0x19, 0x1a, 0x7f, 0x25, 0x36, 0xdd, 0x7a, 0x41, 0x68, 0xbf, 0x00, 0x89, 0x7f, 0xc1, 0x69, 0x07, 0x71, 0x3a, 0x9a, 0x9d, 0x59, 0x77, 0xa6, 0x69, 0x73, 0x11, 0xe9, 0x5d, 0x10, 0xfc, 0x17, 0x9e,
0x7e, 0x02, 0x42, 0x3b, 0x4e, 0xe2, 0xc2, 0x69, 0x4c, 0x2d, 0xd2, 0xee, 0xfc, 0x02, 0x14, 0x27, 0x7a, 0x28, 0xfe, 0x02, 0x91, 0x1e, 0x8b, 0x5e, 0x3c, 0x55, 0x69, 0x85, 0xde, 0xfd, 0x05, 0xb2,
0x4d, 0x93, 0x35, 0x9b, 0xc4, 0x0d, 0x4e, 0x8d, 0xfd, 0x9e, 0xdf, 0xfb, 0xde, 0xe7, 0xcf, 0x45, 0x33, 0xd3, 0xcd, 0x6e, 0xb3, 0x2d, 0x78, 0xd3, 0x53, 0x76, 0xe6, 0x79, 0xf3, 0x3e, 0x1f, 0xfb,
0x6b, 0x1e, 0x0b, 0x3d, 0xe2, 0x82, 0xf4, 0xc9, 0xa8, 0x43, 0xf4, 0x11, 0x1e, 0x86, 0xa0, 0xa1, 0xce, 0x0e, 0x98, 0xf5, 0x71, 0xec, 0xc3, 0x0e, 0x67, 0x01, 0xec, 0xd5, 0xa1, 0xdc, 0xf5, 0xa2,
0xba, 0x1a, 0x6d, 0xe3, 0x68, 0x1b, 0x8f, 0x3a, 0xf5, 0x75, 0x0f, 0x54, 0x00, 0x8a, 0x04, 0x8a, 0x98, 0x4b, 0x6e, 0x4f, 0x25, 0xdb, 0x5e, 0xb2, 0xed, 0xf5, 0xea, 0xb5, 0x8a, 0xcf, 0x45, 0xc8,
0x47, 0xac, 0x40, 0xf1, 0x98, 0x56, 0xbf, 0xc7, 0x81, 0x83, 0xf9, 0x24, 0xd1, 0x57, 0xb2, 0xfb, 0x05, 0x0c, 0x05, 0x49, 0xaa, 0x42, 0x41, 0x74, 0x59, 0x6d, 0x86, 0x70, 0xc2, 0xd5, 0x23, 0x4c,
0x80, 0x03, 0xf0, 0x01, 0x23, 0x74, 0x28, 0x08, 0x95, 0x12, 0x34, 0xd5, 0x02, 0xa4, 0x4a, 0x50, 0x9e, 0xcc, 0xee, 0x4d, 0xc2, 0x39, 0xe9, 0x62, 0x88, 0x22, 0x0a, 0x11, 0x63, 0x5c, 0x22, 0x49,
0x3b, 0x11, 0x73, 0xa9, 0x62, 0x64, 0xd4, 0x71, 0x99, 0xa6, 0x1d, 0xe2, 0x81, 0x90, 0x31, 0xee, 0x39, 0x13, 0x06, 0x75, 0x4c, 0xb3, 0x0e, 0x12, 0x18, 0xf6, 0xea, 0x1d, 0x2c, 0x51, 0x1d, 0xfa,
0x7c, 0xb1, 0xd0, 0xed, 0x9e, 0xe2, 0xfb, 0x21, 0xa3, 0x9a, 0x75, 0x41, 0xfa, 0xd5, 0xfb, 0x68, 0x9c, 0x32, 0x83, 0x57, 0x35, 0xbe, 0xa9, 0xdb, 0xea, 0x85, 0x81, 0x2a, 0x39, 0xb1, 0x4a, 0x9d,
0x59, 0x09, 0x2e, 0x59, 0xb8, 0x61, 0xb5, 0xac, 0xf6, 0xad, 0x7e, 0xb2, 0xaa, 0xbe, 0x47, 0x4b, 0x02, 0xdc, 0x03, 0x0b, 0x5c, 0x6b, 0x09, 0xb2, 0x11, 0x63, 0x24, 0x71, 0x93, 0xb3, 0xc0, 0xbe,
0xd1, 0x39, 0xb5, 0x51, 0x6e, 0x55, 0xda, 0x2b, 0xbb, 0x35, 0x1c, 0x2b, 0xe3, 0x48, 0x19, 0x27, 0x01, 0xc6, 0x05, 0x25, 0x0c, 0xc7, 0x73, 0xd6, 0x92, 0xb5, 0x32, 0xd1, 0x36, 0x2b, 0xfb, 0x0d,
0xca, 0x78, 0x1f, 0x84, 0xec, 0xf6, 0x4e, 0xcf, 0x9b, 0xa5, 0xdf, 0xe7, 0xcd, 0xda, 0x6b, 0x05, 0x18, 0x4b, 0xb8, 0xc4, 0x5c, 0x79, 0x69, 0x64, 0x65, 0xb2, 0x51, 0xf5, 0x0c, 0x41, 0xa2, 0xc6,
0x72, 0xcf, 0x31, 0xa7, 0x9c, 0xd6, 0x98, 0x06, 0x83, 0xd9, 0xe2, 0xf3, 0xcf, 0x66, 0x9b, 0x0b, 0x33, 0x6a, 0xbc, 0x0d, 0x4e, 0x59, 0xb3, 0x75, 0x78, 0xbc, 0x58, 0xfa, 0x7d, 0xbc, 0x58, 0x7d,
0x7d, 0xf0, 0xce, 0xc5, 0x1e, 0x04, 0x24, 0xa9, 0x31, 0xfe, 0xd9, 0x51, 0xfe, 0x1b, 0xa2, 0xc7, 0x29, 0x38, 0x5b, 0x77, 0xd5, 0xbf, 0xdc, 0xa5, 0x3e, 0x0a, 0xbb, 0xe7, 0x8b, 0x8f, 0x3f, 0x16,
0x43, 0xa6, 0x8c, 0x9a, 0xea, 0xc7, 0xb6, 0x7b, 0x2b, 0xc7, 0x97, 0x27, 0xdb, 0x49, 0x31, 0xce, 0x57, 0x08, 0x95, 0x5b, 0xdb, 0x1d, 0xcf, 0xe7, 0xa1, 0x91, 0x6a, 0x7e, 0xd6, 0x44, 0xf0, 0x0a,
0x63, 0xb4, 0x96, 0xab, 0xba, 0xcf, 0xd4, 0x10, 0xa4, 0x62, 0xd5, 0x3b, 0xa8, 0x2c, 0xfc, 0xa4, 0xca, 0x7e, 0x84, 0x85, 0xea, 0x26, 0xda, 0x9a, 0x76, 0x7d, 0x72, 0xef, 0x6c, 0x7f, 0xd5, 0x88,
0xf2, 0xb2, 0xf0, 0x9d, 0xaf, 0x71, 0xbe, 0x3e, 0x7b, 0x25, 0x06, 0x03, 0x93, 0xef, 0x0a, 0x23, 0x71, 0xef, 0x80, 0xd9, 0x9c, 0xea, 0x36, 0x16, 0x11, 0x67, 0x02, 0xdb, 0xd3, 0xa0, 0x4c, 0x03,
0x93, 0xb7, 0x5c, 0x9c, 0xb7, 0xf2, 0x0f, 0xe4, 0x5d, 0x37, 0x79, 0xe7, 0x29, 0x66, 0x79, 0x9d, 0xa3, 0xbc, 0x4c, 0x03, 0xf7, 0xb3, 0xf6, 0xd7, 0xc6, 0x2f, 0x68, 0xb7, 0xab, 0xfc, 0x5d, 0xa8,
0x6f, 0x16, 0xba, 0xdb, 0x53, 0xfc, 0xb9, 0xd0, 0x07, 0x7e, 0x48, 0x0f, 0xff, 0xdf, 0x84, 0x35, 0xc8, 0xf8, 0x2d, 0x17, 0xfb, 0x1d, 0xf9, 0x07, 0xfc, 0x56, 0x94, 0xdf, 0x81, 0x8b, 0x73, 0xbf,
0xb4, 0x7e, 0x25, 0x47, 0x9a, 0xf1, 0x59, 0x3c, 0xa2, 0x54, 0x7a, 0xec, 0xaf, 0xae, 0xb0, 0xa8, 0xee, 0x17, 0x0b, 0x5c, 0x6f, 0x09, 0xf2, 0x8c, 0xca, 0xad, 0x20, 0x46, 0x3b, 0xff, 0xaf, 0xc3,
0x85, 0x73, 0x95, 0x99, 0xfc, 0xee, 0x45, 0x05, 0x55, 0x7a, 0x8a, 0x57, 0xdf, 0x22, 0x94, 0x79, 0x2a, 0xa8, 0x5c, 0xf0, 0x91, 0x7a, 0x7c, 0xa8, 0x47, 0x14, 0x31, 0x1f, 0xff, 0xd5, 0x2b, 0x2c,
0x06, 0x0d, 0x9c, 0x7d, 0x94, 0x38, 0x37, 0x6d, 0xf5, 0xad, 0x1b, 0xc0, 0xb4, 0xec, 0x87, 0xc7, 0x8a, 0x70, 0xd0, 0x25, 0x6d, 0xff, 0x4e, 0x47, 0xf8, 0x34, 0x0a, 0x90, 0xc4, 0x8f, 0x50, 0x8c,
0xdf, 0x7f, 0x7d, 0x2a, 0x37, 0x9c, 0x1a, 0xc9, 0xbd, 0x7a, 0xcf, 0x30, 0x5f, 0x46, 0xcb, 0xc8, 0x42, 0x61, 0xdf, 0x03, 0x13, 0x68, 0x5b, 0x6e, 0xf1, 0x98, 0xca, 0xbe, 0x26, 0x6a, 0xce, 0x7d,
0x32, 0x33, 0x99, 0x8b, 0x96, 0x73, 0xb0, 0xc0, 0xb2, 0x60, 0x1a, 0xae, 0xb1, 0x0c, 0x0d, 0x33, 0x3d, 0x58, 0x9b, 0x31, 0x09, 0x3d, 0x08, 0x82, 0x18, 0x0b, 0xf1, 0x58, 0xc6, 0x94, 0x91, 0xf6,
0xb6, 0x1c, 0xa3, 0xd5, 0xdc, 0xb0, 0x6c, 0x2e, 0xe8, 0x66, 0xe1, 0xfa, 0xa3, 0x1b, 0xe1, 0xd4, 0xa0, 0xd4, 0x6e, 0x80, 0xf1, 0x48, 0x75, 0x50, 0x4a, 0x26, 0x1b, 0x33, 0x5e, 0xf6, 0x73, 0xe0,
0x78, 0xcb, 0x18, 0x6f, 0x3a, 0x8d, 0xbc, 0xf1, 0x61, 0xc2, 0x4d, 0xd3, 0x66, 0x2e, 0xb1, 0xa0, 0xe9, 0xee, 0xcd, 0xd1, 0x24, 0xce, 0xb6, 0xa9, 0x5c, 0x9f, 0x4e, 0x54, 0x0e, 0x7a, 0x98, 0x24,
0xc1, 0x29, 0x58, 0xd4, 0xe0, 0x85, 0x8b, 0xbb, 0xb6, 0xc1, 0x86, 0x69, 0x2c, 0xeb, 0x4b, 0x1f, 0xb2, 0x72, 0xce, 0xa5, 0x36, 0x3e, 0x8d, 0x82, 0x91, 0x96, 0x20, 0xf6, 0x6b, 0x00, 0x32, 0x27,
0x2e, 0x4f, 0xb6, 0xad, 0xee, 0xd3, 0xd3, 0x89, 0x6d, 0x9d, 0x4d, 0x6c, 0xeb, 0x62, 0x62, 0x5b, 0x76, 0x3e, 0x4f, 0x92, 0x3b, 0x18, 0xb5, 0xe5, 0x2b, 0xc0, 0x34, 0x82, 0x5b, 0x7b, 0xdf, 0x7e,
0x1f, 0xa7, 0x76, 0xe9, 0x6c, 0x6a, 0x97, 0x7e, 0x4c, 0xed, 0xd2, 0x0b, 0x87, 0x0b, 0x8d, 0x47, 0x7d, 0x28, 0xcf, 0xbb, 0x55, 0x98, 0xfb, 0x4e, 0xf8, 0xaa, 0x72, 0x33, 0x59, 0x26, 0x94, 0x99,
0xbe, 0x8b, 0x35, 0x18, 0x95, 0x1d, 0x01, 0x64, 0x40, 0x3d, 0x90, 0xc2, 0xf3, 0xc9, 0x91, 0xd1, 0x43, 0x34, 0x4c, 0x39, 0x00, 0x0b, 0x28, 0x0b, 0x06, 0xf7, 0x12, 0xca, 0x58, 0x55, 0x6a, 0xca,
0x74, 0x97, 0xcd, 0x5f, 0xe5, 0x93, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x64, 0x49, 0xe0, 0xe1, 0x3e, 0x98, 0xca, 0xcd, 0xf5, 0xc2, 0x50, 0xdf, 0x2c, 0x5c, 0xbb, 0x7d, 0x25, 0x9c, 0x12, 0x2f,
0xbe, 0x05, 0x00, 0x00, 0x2b, 0xe2, 0x05, 0x77, 0x3e, 0x4f, 0xbc, 0x63, 0x6a, 0x53, 0xb7, 0x99, 0x79, 0x2b, 0x08, 0x38,
0x05, 0x8b, 0x02, 0x1e, 0x9e, 0xb1, 0xcb, 0x02, 0x56, 0x95, 0x9a, 0xf2, 0x09, 0x98, 0xca, 0x8d,
0xe0, 0xb0, 0xdb, 0x2c, 0x5c, 0xe0, 0xb6, 0x68, 0x62, 0x6a, 0x63, 0x6f, 0xcf, 0xf6, 0x57, 0xad,
0xe6, 0xfd, 0xc3, 0x13, 0xc7, 0x3a, 0x3a, 0x71, 0xac, 0x9f, 0x27, 0x8e, 0xf5, 0xfe, 0xd4, 0x29,
0x1d, 0x9d, 0x3a, 0xa5, 0xef, 0xa7, 0x4e, 0xe9, 0xb9, 0x4b, 0xa8, 0xf4, 0x7a, 0x41, 0xc7, 0x4b,
0xae, 0x0c, 0x1c, 0xfb, 0x6b, 0x94, 0xc3, 0x2e, 0xf2, 0x39, 0xa3, 0x7e, 0x00, 0x77, 0x95, 0xd2,
0xce, 0xb8, 0xba, 0x2b, 0xee, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0xef, 0x34, 0xfa, 0x7f, 0xf3,
0x06, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -488,6 +594,9 @@ type MsgClient interface {
WithdrawBond(ctx context.Context, in *MsgWithdrawBond, opts ...grpc.CallOption) (*MsgWithdrawBondResponse, error) WithdrawBond(ctx context.Context, in *MsgWithdrawBond, opts ...grpc.CallOption) (*MsgWithdrawBondResponse, error)
// CancelBond defines a method for cancelling a bond. // CancelBond defines a method for cancelling a bond.
CancelBond(ctx context.Context, in *MsgCancelBond, opts ...grpc.CallOption) (*MsgCancelBondResponse, error) CancelBond(ctx context.Context, in *MsgCancelBond, opts ...grpc.CallOption) (*MsgCancelBondResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)
} }
type msgClient struct { type msgClient struct {
@ -534,6 +643,15 @@ func (c *msgClient) CancelBond(ctx context.Context, in *MsgCancelBond, opts ...g
return out, nil return out, nil
} }
func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {
out := new(MsgUpdateParamsResponse)
err := c.cc.Invoke(ctx, "/cerc.bond.v1.Msg/UpdateParams", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MsgServer is the server API for Msg service. // MsgServer is the server API for Msg service.
type MsgServer interface { type MsgServer interface {
// CreateBond defines a method for creating a new bond. // CreateBond defines a method for creating a new bond.
@ -544,6 +662,9 @@ type MsgServer interface {
WithdrawBond(context.Context, *MsgWithdrawBond) (*MsgWithdrawBondResponse, error) WithdrawBond(context.Context, *MsgWithdrawBond) (*MsgWithdrawBondResponse, error)
// CancelBond defines a method for cancelling a bond. // CancelBond defines a method for cancelling a bond.
CancelBond(context.Context, *MsgCancelBond) (*MsgCancelBondResponse, error) CancelBond(context.Context, *MsgCancelBond) (*MsgCancelBondResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)
} }
// UnimplementedMsgServer can be embedded to have forward compatible implementations. // UnimplementedMsgServer can be embedded to have forward compatible implementations.
@ -562,6 +683,9 @@ func (*UnimplementedMsgServer) WithdrawBond(ctx context.Context, req *MsgWithdra
func (*UnimplementedMsgServer) CancelBond(ctx context.Context, req *MsgCancelBond) (*MsgCancelBondResponse, error) { func (*UnimplementedMsgServer) CancelBond(ctx context.Context, req *MsgCancelBond) (*MsgCancelBondResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CancelBond not implemented") return nil, status.Errorf(codes.Unimplemented, "method CancelBond not implemented")
} }
func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented")
}
func RegisterMsgServer(s grpc1.Server, srv MsgServer) { func RegisterMsgServer(s grpc1.Server, srv MsgServer) {
s.RegisterService(&_Msg_serviceDesc, srv) s.RegisterService(&_Msg_serviceDesc, srv)
@ -639,6 +763,24 @@ func _Msg_CancelBond_Handler(srv interface{}, ctx context.Context, dec func(inte
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgUpdateParams)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).UpdateParams(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cerc.bond.v1.Msg/UpdateParams",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))
}
return interceptor(ctx, in, info, handler)
}
var _Msg_serviceDesc = grpc.ServiceDesc{ var _Msg_serviceDesc = grpc.ServiceDesc{
ServiceName: "cerc.bond.v1.Msg", ServiceName: "cerc.bond.v1.Msg",
HandlerType: (*MsgServer)(nil), HandlerType: (*MsgServer)(nil),
@ -659,6 +801,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{
MethodName: "CancelBond", MethodName: "CancelBond",
Handler: _Msg_CancelBond_Handler, Handler: _Msg_CancelBond_Handler,
}, },
{
MethodName: "UpdateParams",
Handler: _Msg_UpdateParams_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "cerc/bond/v1/tx.proto", Metadata: "cerc/bond/v1/tx.proto",
@ -946,6 +1092,69 @@ func (m *MsgCancelBondResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
{
size, err := m.Params.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
if len(m.Authority) > 0 {
i -= len(m.Authority)
copy(dAtA[i:], m.Authority)
i = encodeVarintTx(dAtA, i, uint64(len(m.Authority)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
return len(dAtA) - i, nil
}
func encodeVarintTx(dAtA []byte, offset int, v uint64) int { func encodeVarintTx(dAtA []byte, offset int, v uint64) int {
offset -= sovTx(v) offset -= sovTx(v)
base := offset base := offset
@ -1079,6 +1288,30 @@ func (m *MsgCancelBondResponse) Size() (n int) {
return n return n
} }
func (m *MsgUpdateParams) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Authority)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
l = m.Params.Size()
n += 1 + l + sovTx(uint64(l))
return n
}
func (m *MsgUpdateParamsResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
return n
}
func sovTx(x uint64) (n int) { func sovTx(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7 return (math_bits.Len64(x|1) + 6) / 7
} }
@ -1843,6 +2076,171 @@ func (m *MsgCancelBondResponse) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return 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 fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Authority = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return 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 fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipTx(dAtA []byte) (n int, err error) { func skipTx(dAtA []byte) (n int, err error) {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0

View File

@ -65,6 +65,20 @@ func (k Keeper) GetAuthority() string {
return k.authority return k.authority
} }
func (k Keeper) GetParams(ctx sdk.Context) (*onboardingTypes.Params, error) {
params, err := k.Params.Get(ctx)
if err != nil {
return nil, err
}
return &params, nil
}
// SetParams sets the x/onboarding module parameters.
func (k Keeper) SetParams(ctx sdk.Context, params onboardingTypes.Params) error {
return k.Params.Set(ctx, params)
}
func (k Keeper) Logger(ctx sdk.Context) log.Logger { func (k Keeper) Logger(ctx sdk.Context) log.Logger {
return ctx.Logger().With("module", onboardingTypes.ModuleName) return ctx.Logger().With("module", onboardingTypes.ModuleName)
} }

View File

@ -3,7 +3,9 @@ package keeper
import ( import (
"context" "context"
errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"git.vdb.to/cerc-io/laconicd/utils" "git.vdb.to/cerc-io/laconicd/utils"
"git.vdb.to/cerc-io/laconicd/x/onboarding" "git.vdb.to/cerc-io/laconicd/x/onboarding"
@ -55,3 +57,22 @@ func (ms msgServer) OnboardParticipant(c context.Context, msg *onboarding.MsgOnb
return &onboarding.MsgOnboardParticipantResponse{}, nil return &onboarding.MsgOnboardParticipantResponse{}, nil
} }
// UpdateParams defines a method to perform updation of module params.
func (ms msgServer) UpdateParams(c context.Context, msg *onboarding.MsgUpdateParams) (*onboarding.MsgUpdateParamsResponse, error) {
if ms.k.authority != msg.Authority {
return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.k.authority, msg.Authority)
}
if err := msg.Params.Validate(); err != nil {
return nil, err
}
ctx := sdk.UnwrapSDKContext(c)
if err := ms.k.SetParams(ctx, msg.Params); err != nil {
return nil, err
}
return &onboarding.MsgUpdateParamsResponse{}, nil
}

View File

@ -51,6 +51,10 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
{ProtoField: "kyc_id"}, {ProtoField: "kyc_id"},
}, },
}, },
{
RpcMethod: "UpdateParams",
Skip: true,
},
}, },
}, },
} }

View File

@ -6,6 +6,7 @@ package onboarding
import ( import (
context "context" context "context"
fmt "fmt" fmt "fmt"
_ "github.com/cosmos/cosmos-proto"
_ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/cosmos-sdk/types/msgservice"
_ "github.com/cosmos/gogoproto/gogoproto" _ "github.com/cosmos/gogoproto/gogoproto"
grpc1 "github.com/cosmos/gogoproto/grpc" grpc1 "github.com/cosmos/gogoproto/grpc"
@ -146,41 +147,146 @@ func (m *MsgOnboardParticipantResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgOnboardParticipantResponse proto.InternalMessageInfo var xxx_messageInfo_MsgOnboardParticipantResponse proto.InternalMessageInfo
// MsgUpdateParams is the Msg/UpdateParams request type.
type MsgUpdateParams struct {
// authority is the address that controls the module (defaults to x/gov unless
// overwritten).
Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"`
// params defines the x/bond parameters to update.
//
// NOTE: All parameters must be supplied.
Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"`
}
func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} }
func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateParams) ProtoMessage() {}
func (*MsgUpdateParams) Descriptor() ([]byte, []int) {
return fileDescriptor_6bfde34a550e231e, []int{2}
}
func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *MsgUpdateParams) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgUpdateParams.Merge(m, src)
}
func (m *MsgUpdateParams) XXX_Size() int {
return m.Size()
}
func (m *MsgUpdateParams) XXX_DiscardUnknown() {
xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m)
}
var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo
func (m *MsgUpdateParams) GetAuthority() string {
if m != nil {
return m.Authority
}
return ""
}
func (m *MsgUpdateParams) GetParams() Params {
if m != nil {
return m.Params
}
return Params{}
}
// MsgUpdateParamsResponse defines the response structure for executing a
// MsgUpdateParams message.
type MsgUpdateParamsResponse struct {
}
func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} }
func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateParamsResponse) ProtoMessage() {}
func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6bfde34a550e231e, []int{3}
}
func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src)
}
func (m *MsgUpdateParamsResponse) XXX_Size() int {
return m.Size()
}
func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo
func init() { func init() {
proto.RegisterType((*MsgOnboardParticipant)(nil), "cerc.onboarding.v1.MsgOnboardParticipant") proto.RegisterType((*MsgOnboardParticipant)(nil), "cerc.onboarding.v1.MsgOnboardParticipant")
proto.RegisterType((*MsgOnboardParticipantResponse)(nil), "cerc.onboarding.v1.MsgOnboardParticipantResponse") proto.RegisterType((*MsgOnboardParticipantResponse)(nil), "cerc.onboarding.v1.MsgOnboardParticipantResponse")
proto.RegisterType((*MsgUpdateParams)(nil), "cerc.onboarding.v1.MsgUpdateParams")
proto.RegisterType((*MsgUpdateParamsResponse)(nil), "cerc.onboarding.v1.MsgUpdateParamsResponse")
} }
func init() { proto.RegisterFile("cerc/onboarding/v1/tx.proto", fileDescriptor_6bfde34a550e231e) } func init() { proto.RegisterFile("cerc/onboarding/v1/tx.proto", fileDescriptor_6bfde34a550e231e) }
var fileDescriptor_6bfde34a550e231e = []byte{ var fileDescriptor_6bfde34a550e231e = []byte{
// 401 bytes of a gzipped FileDescriptorProto // 514 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x8a, 0x13, 0x31, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x4d, 0x6a, 0x1b, 0x31,
0x1c, 0xc6, 0x27, 0xbb, 0xed, 0x82, 0xa9, 0x82, 0x04, 0x17, 0x87, 0x51, 0x67, 0xcb, 0xec, 0xc1, 0x18, 0xb5, 0x1c, 0xdb, 0x10, 0x39, 0xfd, 0x41, 0x24, 0x64, 0x32, 0x6d, 0x27, 0xc6, 0x5e, 0xd4,
0xee, 0x82, 0x13, 0xba, 0xde, 0x3c, 0x16, 0xf6, 0xe0, 0x61, 0xb1, 0xd4, 0x9b, 0x97, 0x92, 0x66, 0x49, 0xc9, 0x08, 0xa7, 0x50, 0x4a, 0x76, 0x35, 0x64, 0xd1, 0x85, 0xa9, 0x71, 0xe8, 0xa6, 0x1b,
0x42, 0x1a, 0x3a, 0xcd, 0x7f, 0x98, 0xc4, 0xd2, 0xde, 0xa4, 0x4f, 0x20, 0xf8, 0x08, 0xbe, 0x40, 0x57, 0x9e, 0x11, 0xb2, 0x88, 0x2d, 0x0d, 0x92, 0x62, 0xe2, 0x5d, 0xc9, 0x09, 0x0a, 0xe9, 0x0d,
0xf1, 0x29, 0x7a, 0x2c, 0x78, 0xf1, 0x24, 0x32, 0x15, 0xfa, 0x1a, 0xd2, 0xb4, 0xb5, 0x03, 0x8e, 0x7a, 0x81, 0x2c, 0x7a, 0x88, 0x2c, 0x43, 0xbb, 0xe9, 0xaa, 0x14, 0xbb, 0x90, 0x6b, 0x94, 0x19,
0xb0, 0xb7, 0xff, 0xfc, 0xbe, 0x8f, 0xff, 0x37, 0x5f, 0x12, 0xfc, 0x8c, 0x8b, 0x9c, 0x53, 0xd0, 0x8d, 0xe3, 0x69, 0x33, 0x81, 0xec, 0xbe, 0xf9, 0xde, 0xd3, 0xf7, 0xde, 0xf7, 0x46, 0x82, 0x4f,
0x03, 0x60, 0x79, 0xa2, 0xb4, 0xa4, 0x93, 0x36, 0xb5, 0xd3, 0x38, 0xcb, 0xc1, 0x02, 0x21, 0x5b, 0x02, 0xaa, 0x02, 0x2c, 0xc5, 0x40, 0x12, 0x15, 0x72, 0xc1, 0xf0, 0xa4, 0x85, 0xcd, 0xa9, 0x1f,
0x31, 0x3e, 0x8a, 0xf1, 0xa4, 0x1d, 0x3c, 0xe5, 0x60, 0xc6, 0x60, 0xe8, 0xd8, 0x38, 0xef, 0xd8, 0x29, 0x69, 0x24, 0x42, 0x31, 0xe8, 0x2f, 0x41, 0x7f, 0xd2, 0x72, 0x37, 0x03, 0xa9, 0xc7, 0x52,
0xc8, 0x9d, 0x39, 0x78, 0x2e, 0x01, 0x64, 0x2a, 0x28, 0xcb, 0x14, 0x65, 0x5a, 0x83, 0x65, 0x56, 0xe3, 0xb1, 0x4e, 0xb8, 0x63, 0xcd, 0x2c, 0xd9, 0x7d, 0xca, 0xa4, 0x64, 0x23, 0x8a, 0x49, 0xc4,
0x81, 0x36, 0x7b, 0xf5, 0x89, 0x04, 0x09, 0x6e, 0xa4, 0xdb, 0x69, 0x4f, 0x2f, 0x2b, 0xd2, 0x4b, 0x31, 0x11, 0x42, 0x1a, 0x62, 0xb8, 0x14, 0x3a, 0x45, 0xd7, 0x99, 0x64, 0x32, 0x29, 0x71, 0x5c,
0x71, 0xce, 0x14, 0x15, 0x08, 0x9f, 0xdf, 0x19, 0xf9, 0x6e, 0xc7, 0xbb, 0x2c, 0xb7, 0x8a, 0xab, 0xa5, 0xdd, 0x46, 0x8e, 0x7a, 0x46, 0xce, 0x92, 0xb6, 0xac, 0x62, 0xdf, 0x9e, 0xb6, 0x1f, 0x16,
0x8c, 0x69, 0x4b, 0x9a, 0xb8, 0x91, 0x1d, 0x3f, 0x7d, 0xd4, 0x44, 0xad, 0x07, 0xbd, 0x32, 0x22, 0xaa, 0xcf, 0x00, 0xdc, 0xe8, 0x68, 0xf6, 0xce, 0x1e, 0xe9, 0x12, 0x65, 0x78, 0xc0, 0x23, 0x22,
0xb7, 0xb8, 0x21, 0xec, 0xb0, 0x9f, 0xb1, 0x59, 0x0a, 0x2c, 0xf1, 0x4f, 0x9a, 0xa8, 0xd5, 0xb8, 0x0c, 0xaa, 0xc1, 0x6a, 0xb4, 0xfc, 0x74, 0x40, 0x0d, 0x34, 0x57, 0x7b, 0xd9, 0x16, 0x3a, 0x84,
0x09, 0xe3, 0x7f, 0x7b, 0xc5, 0xb7, 0x76, 0xd8, 0xdd, 0xb9, 0x3a, 0xb5, 0xe5, 0xcf, 0x0b, 0xaf, 0x55, 0x6a, 0x86, 0xfd, 0x88, 0x4c, 0x47, 0x92, 0x84, 0x4e, 0xb1, 0x06, 0x9a, 0xd5, 0x7d, 0xcf,
0x87, 0xc5, 0x5f, 0x42, 0x2e, 0xf1, 0xa3, 0xed, 0x1a, 0xa3, 0xa4, 0x66, 0xf6, 0x63, 0x2e, 0xfc, 0xbf, 0xbd, 0xb2, 0x7f, 0x68, 0x86, 0x5d, 0xcb, 0x6a, 0x97, 0x2e, 0x7f, 0x6d, 0x17, 0x7a, 0x90,
0x53, 0x17, 0xf5, 0x50, 0xd8, 0xe1, 0xfb, 0x03, 0x23, 0x04, 0xd7, 0x72, 0x48, 0x85, 0x5f, 0x73, 0xde, 0x74, 0x50, 0x03, 0x3e, 0x88, 0xc7, 0x68, 0xce, 0x04, 0x31, 0x27, 0x8a, 0x3a, 0x2b, 0x89,
0x9a, 0x9b, 0xc9, 0x39, 0x3e, 0x1b, 0xcd, 0x78, 0x5f, 0x25, 0x7e, 0xdd, 0xd1, 0xfa, 0x68, 0xc6, 0xd4, 0x1a, 0x35, 0xc3, 0xa3, 0x45, 0x0f, 0x21, 0x58, 0x52, 0x72, 0x44, 0x9d, 0x52, 0x82, 0x25,
0xdf, 0x26, 0x6f, 0x1e, 0xcf, 0x37, 0x8b, 0xeb, 0xf2, 0x8f, 0x46, 0x17, 0xf8, 0x45, 0x65, 0xc7, 0x35, 0xda, 0x80, 0x95, 0xe3, 0x69, 0xd0, 0xe7, 0xa1, 0x53, 0x4e, 0xba, 0xe5, 0xe3, 0x69, 0xf0,
0x9e, 0x30, 0x19, 0x68, 0x23, 0x6e, 0xbe, 0x21, 0x7c, 0x7a, 0x67, 0x24, 0xf9, 0x8a, 0x30, 0xa9, 0x36, 0x3c, 0x78, 0x7c, 0x76, 0x7d, 0xb1, 0x9b, 0x35, 0x5a, 0xdf, 0x86, 0xcf, 0x72, 0x77, 0xec,
0x38, 0x8a, 0xab, 0xaa, 0x4e, 0x95, 0x1b, 0x83, 0xf6, 0xbd, 0xad, 0x87, 0xf0, 0x88, 0xce, 0xbf, 0x51, 0x1d, 0x49, 0xa1, 0x69, 0xfd, 0x1c, 0xc0, 0x47, 0x1d, 0xcd, 0xde, 0x47, 0x21, 0x31, 0xb4,
0xff, 0xfe, 0x72, 0x72, 0x15, 0xbd, 0xa4, 0xff, 0xbf, 0xb0, 0x7e, 0xa9, 0x4e, 0x50, 0xff, 0xb4, 0x4b, 0x14, 0x19, 0x6b, 0xf4, 0x0a, 0xae, 0x92, 0x13, 0x33, 0x94, 0x8a, 0x9b, 0xa9, 0xdd, 0xbe,
0x59, 0x5c, 0xa3, 0x4e, 0x67, 0x59, 0x84, 0x68, 0x55, 0x84, 0xe8, 0x57, 0x11, 0xa2, 0xcf, 0xeb, 0xed, 0x7c, 0xff, 0xb6, 0xb7, 0x9e, 0xc6, 0xf7, 0x26, 0x0c, 0x15, 0xd5, 0xfa, 0xc8, 0x28, 0x2e,
0xd0, 0x5b, 0xad, 0x43, 0xef, 0xc7, 0x3a, 0xf4, 0x3e, 0xb4, 0xa4, 0xb2, 0xf1, 0x24, 0x19, 0xc4, 0x58, 0x6f, 0x49, 0x45, 0xaf, 0x61, 0x25, 0x4a, 0x26, 0xa4, 0x81, 0xb8, 0x79, 0x81, 0x58, 0x8d,
0x16, 0xdc, 0xce, 0x57, 0x0a, 0x68, 0xca, 0x38, 0x68, 0xc5, 0x13, 0x3a, 0x2d, 0x25, 0x0c, 0xce, 0x34, 0x8c, 0x94, 0x7f, 0xf0, 0x30, 0x36, 0xbe, 0x9c, 0x54, 0xdf, 0x82, 0x9b, 0xff, 0x99, 0x5a,
0xdc, 0x2b, 0x78, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0x75, 0x86, 0x6d, 0xd1, 0xaa, 0x02, 0x00, 0x18, 0xde, 0xff, 0x52, 0x84, 0x2b, 0x1d, 0xcd, 0xd0, 0x57, 0x00, 0x51, 0xce, 0xbf, 0xdb, 0xc9,
0x00, 0xd3, 0xcc, 0x8d, 0xc0, 0x6d, 0xdd, 0x9b, 0x7a, 0x93, 0x16, 0x3e, 0xfb, 0xf1, 0xe7, 0xbc, 0xb8,
0x53, 0x7f, 0x8e, 0xef, 0xbe, 0x7c, 0xfd, 0xec, 0x45, 0xf9, 0x08, 0xd7, 0xfe, 0x89, 0xb6, 0x71,
0x87, 0x66, 0x96, 0xe4, 0xbe, 0xb8, 0x07, 0x69, 0x61, 0xc9, 0x2d, 0x7f, 0xba, 0xbe, 0xd8, 0x05,
0xed, 0xf6, 0xe5, 0xcc, 0x03, 0x57, 0x33, 0x0f, 0xfc, 0x9e, 0x79, 0xe0, 0xf3, 0xdc, 0x2b, 0x5c,
0xcd, 0xbd, 0xc2, 0xcf, 0xb9, 0x57, 0xf8, 0xd0, 0x64, 0xdc, 0xf8, 0x93, 0x70, 0xe0, 0xc7, 0x0f,
0x80, 0xaa, 0x60, 0x8f, 0x4b, 0x3c, 0x22, 0x81, 0x14, 0x3c, 0x08, 0xf1, 0x69, 0x66, 0x87, 0x41,
0x25, 0x79, 0x18, 0x2f, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xb5, 0xed, 0xd0, 0x2e, 0xd8, 0x03,
0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -197,6 +303,9 @@ const _ = grpc.SupportPackageIsVersion4
type MsgClient interface { type MsgClient interface {
// OnboardParticipant defines a method for enrolling a new validator. // OnboardParticipant defines a method for enrolling a new validator.
OnboardParticipant(ctx context.Context, in *MsgOnboardParticipant, opts ...grpc.CallOption) (*MsgOnboardParticipantResponse, error) OnboardParticipant(ctx context.Context, in *MsgOnboardParticipant, opts ...grpc.CallOption) (*MsgOnboardParticipantResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)
} }
type msgClient struct { type msgClient struct {
@ -216,10 +325,22 @@ func (c *msgClient) OnboardParticipant(ctx context.Context, in *MsgOnboardPartic
return out, nil return out, nil
} }
func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {
out := new(MsgUpdateParamsResponse)
err := c.cc.Invoke(ctx, "/cerc.onboarding.v1.Msg/UpdateParams", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MsgServer is the server API for Msg service. // MsgServer is the server API for Msg service.
type MsgServer interface { type MsgServer interface {
// OnboardParticipant defines a method for enrolling a new validator. // OnboardParticipant defines a method for enrolling a new validator.
OnboardParticipant(context.Context, *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error) OnboardParticipant(context.Context, *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error)
// UpdateParams defines an operation for updating the x/staking module
// parameters.
UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)
} }
// UnimplementedMsgServer can be embedded to have forward compatible implementations. // UnimplementedMsgServer can be embedded to have forward compatible implementations.
@ -229,6 +350,9 @@ type UnimplementedMsgServer struct {
func (*UnimplementedMsgServer) OnboardParticipant(ctx context.Context, req *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error) { func (*UnimplementedMsgServer) OnboardParticipant(ctx context.Context, req *MsgOnboardParticipant) (*MsgOnboardParticipantResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method OnboardParticipant not implemented") return nil, status.Errorf(codes.Unimplemented, "method OnboardParticipant not implemented")
} }
func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented")
}
func RegisterMsgServer(s grpc1.Server, srv MsgServer) { func RegisterMsgServer(s grpc1.Server, srv MsgServer) {
s.RegisterService(&_Msg_serviceDesc, srv) s.RegisterService(&_Msg_serviceDesc, srv)
@ -252,6 +376,24 @@ func _Msg_OnboardParticipant_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgUpdateParams)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).UpdateParams(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cerc.onboarding.v1.Msg/UpdateParams",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))
}
return interceptor(ctx, in, info, handler)
}
var _Msg_serviceDesc = grpc.ServiceDesc{ var _Msg_serviceDesc = grpc.ServiceDesc{
ServiceName: "cerc.onboarding.v1.Msg", ServiceName: "cerc.onboarding.v1.Msg",
HandlerType: (*MsgServer)(nil), HandlerType: (*MsgServer)(nil),
@ -260,6 +402,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{
MethodName: "OnboardParticipant", MethodName: "OnboardParticipant",
Handler: _Msg_OnboardParticipant_Handler, Handler: _Msg_OnboardParticipant_Handler,
}, },
{
MethodName: "UpdateParams",
Handler: _Msg_UpdateParams_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "cerc/onboarding/v1/tx.proto", Metadata: "cerc/onboarding/v1/tx.proto",
@ -349,6 +495,69 @@ func (m *MsgOnboardParticipantResponse) MarshalToSizedBuffer(dAtA []byte) (int,
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
{
size, err := m.Params.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
if len(m.Authority) > 0 {
i -= len(m.Authority)
copy(dAtA[i:], m.Authority)
i = encodeVarintTx(dAtA, i, uint64(len(m.Authority)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
return len(dAtA) - i, nil
}
func encodeVarintTx(dAtA []byte, offset int, v uint64) int { func encodeVarintTx(dAtA []byte, offset int, v uint64) int {
offset -= sovTx(v) offset -= sovTx(v)
base := offset base := offset
@ -396,6 +605,30 @@ func (m *MsgOnboardParticipantResponse) Size() (n int) {
return n return n
} }
func (m *MsgUpdateParams) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Authority)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
l = m.Params.Size()
n += 1 + l + sovTx(uint64(l))
return n
}
func (m *MsgUpdateParamsResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
return n
}
func sovTx(x uint64) (n int) { func sovTx(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7 return (math_bits.Len64(x|1) + 6) / 7
} }
@ -663,6 +896,171 @@ func (m *MsgOnboardParticipantResponse) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return 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 fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Authority = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return 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 fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipTx(dAtA []byte) (n int, err error) { func skipTx(dAtA []byte) (n int, err error) {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0