feat(x/authz): Add MsgRevokeAll (#20161)

Co-authored-by: Tuan Tran <tuantran@notional.ventures>
Co-authored-by: Khanh Hoa <khanhoait.bka@gmail.com>
This commit is contained in:
Kien Trinh 2024-04-26 14:22:30 +07:00 committed by GitHub
parent fbb94f437f
commit 2d0d1906b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 2408 additions and 135 deletions

View File

@ -1109,6 +1109,490 @@ func (x *fastReflection_EventRevoke) ProtoMethods() *protoiface.Methods {
}
}
var (
md_EventRevokeAll protoreflect.MessageDescriptor
fd_EventRevokeAll_msg_type_url protoreflect.FieldDescriptor
fd_EventRevokeAll_granter protoreflect.FieldDescriptor
)
func init() {
file_cosmos_authz_v1beta1_event_proto_init()
md_EventRevokeAll = File_cosmos_authz_v1beta1_event_proto.Messages().ByName("EventRevokeAll")
fd_EventRevokeAll_msg_type_url = md_EventRevokeAll.Fields().ByName("msg_type_url")
fd_EventRevokeAll_granter = md_EventRevokeAll.Fields().ByName("granter")
}
var _ protoreflect.Message = (*fastReflection_EventRevokeAll)(nil)
type fastReflection_EventRevokeAll EventRevokeAll
func (x *EventRevokeAll) ProtoReflect() protoreflect.Message {
return (*fastReflection_EventRevokeAll)(x)
}
func (x *EventRevokeAll) slowProtoReflect() protoreflect.Message {
mi := &file_cosmos_authz_v1beta1_event_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_EventRevokeAll_messageType fastReflection_EventRevokeAll_messageType
var _ protoreflect.MessageType = fastReflection_EventRevokeAll_messageType{}
type fastReflection_EventRevokeAll_messageType struct{}
func (x fastReflection_EventRevokeAll_messageType) Zero() protoreflect.Message {
return (*fastReflection_EventRevokeAll)(nil)
}
func (x fastReflection_EventRevokeAll_messageType) New() protoreflect.Message {
return new(fastReflection_EventRevokeAll)
}
func (x fastReflection_EventRevokeAll_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_EventRevokeAll
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_EventRevokeAll) Descriptor() protoreflect.MessageDescriptor {
return md_EventRevokeAll
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_EventRevokeAll) Type() protoreflect.MessageType {
return _fastReflection_EventRevokeAll_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_EventRevokeAll) New() protoreflect.Message {
return new(fastReflection_EventRevokeAll)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_EventRevokeAll) Interface() protoreflect.ProtoMessage {
return (*EventRevokeAll)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_EventRevokeAll) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.MsgTypeUrl != "" {
value := protoreflect.ValueOfString(x.MsgTypeUrl)
if !f(fd_EventRevokeAll_msg_type_url, value) {
return
}
}
if x.Granter != "" {
value := protoreflect.ValueOfString(x.Granter)
if !f(fd_EventRevokeAll_granter, value) {
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_EventRevokeAll) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "cosmos.authz.v1beta1.EventRevokeAll.msg_type_url":
return x.MsgTypeUrl != ""
case "cosmos.authz.v1beta1.EventRevokeAll.granter":
return x.Granter != ""
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.authz.v1beta1.EventRevokeAll"))
}
panic(fmt.Errorf("message cosmos.authz.v1beta1.EventRevokeAll does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_EventRevokeAll) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "cosmos.authz.v1beta1.EventRevokeAll.msg_type_url":
x.MsgTypeUrl = ""
case "cosmos.authz.v1beta1.EventRevokeAll.granter":
x.Granter = ""
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.authz.v1beta1.EventRevokeAll"))
}
panic(fmt.Errorf("message cosmos.authz.v1beta1.EventRevokeAll does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_EventRevokeAll) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "cosmos.authz.v1beta1.EventRevokeAll.msg_type_url":
value := x.MsgTypeUrl
return protoreflect.ValueOfString(value)
case "cosmos.authz.v1beta1.EventRevokeAll.granter":
value := x.Granter
return protoreflect.ValueOfString(value)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.authz.v1beta1.EventRevokeAll"))
}
panic(fmt.Errorf("message cosmos.authz.v1beta1.EventRevokeAll does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_EventRevokeAll) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "cosmos.authz.v1beta1.EventRevokeAll.msg_type_url":
x.MsgTypeUrl = value.Interface().(string)
case "cosmos.authz.v1beta1.EventRevokeAll.granter":
x.Granter = value.Interface().(string)
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.authz.v1beta1.EventRevokeAll"))
}
panic(fmt.Errorf("message cosmos.authz.v1beta1.EventRevokeAll does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_EventRevokeAll) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "cosmos.authz.v1beta1.EventRevokeAll.msg_type_url":
panic(fmt.Errorf("field msg_type_url of message cosmos.authz.v1beta1.EventRevokeAll is not mutable"))
case "cosmos.authz.v1beta1.EventRevokeAll.granter":
panic(fmt.Errorf("field granter of message cosmos.authz.v1beta1.EventRevokeAll is not mutable"))
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.authz.v1beta1.EventRevokeAll"))
}
panic(fmt.Errorf("message cosmos.authz.v1beta1.EventRevokeAll does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_EventRevokeAll) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "cosmos.authz.v1beta1.EventRevokeAll.msg_type_url":
return protoreflect.ValueOfString("")
case "cosmos.authz.v1beta1.EventRevokeAll.granter":
return protoreflect.ValueOfString("")
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.authz.v1beta1.EventRevokeAll"))
}
panic(fmt.Errorf("message cosmos.authz.v1beta1.EventRevokeAll does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_EventRevokeAll) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in cosmos.authz.v1beta1.EventRevokeAll", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_EventRevokeAll) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_EventRevokeAll) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_EventRevokeAll) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_EventRevokeAll) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*EventRevokeAll)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
l = len(x.MsgTypeUrl)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
l = len(x.Granter)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*EventRevokeAll)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Granter) > 0 {
i -= len(x.Granter)
copy(dAtA[i:], x.Granter)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))
i--
dAtA[i] = 0x1a
}
if len(x.MsgTypeUrl) > 0 {
i -= len(x.MsgTypeUrl)
copy(dAtA[i:], x.MsgTypeUrl)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MsgTypeUrl)))
i--
dAtA[i] = 0x12
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*EventRevokeAll)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EventRevokeAll: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EventRevokeAll: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MsgTypeUrl", 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.MsgTypeUrl = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Granter", 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.Granter = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var (
md_EventPruneExpiredGrants protoreflect.MessageDescriptor
fd_EventPruneExpiredGrants_pruner protoreflect.FieldDescriptor
@ -1129,7 +1613,7 @@ func (x *EventPruneExpiredGrants) ProtoReflect() protoreflect.Message {
}
func (x *EventPruneExpiredGrants) slowProtoReflect() protoreflect.Message {
mi := &file_cosmos_authz_v1beta1_event_proto_msgTypes[2]
mi := &file_cosmos_authz_v1beta1_event_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1656,6 +2140,52 @@ func (x *EventRevoke) GetGrantee() string {
return ""
}
// EventRevokeAll is emitted on Msg/RevokeAll
type EventRevokeAll struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Msg type URL for which all authorizations are revoked
MsgTypeUrl string `protobuf:"bytes,2,opt,name=msg_type_url,json=msgTypeUrl,proto3" json:"msg_type_url,omitempty"`
// Granter account address
Granter string `protobuf:"bytes,3,opt,name=granter,proto3" json:"granter,omitempty"`
}
func (x *EventRevokeAll) Reset() {
*x = EventRevokeAll{}
if protoimpl.UnsafeEnabled {
mi := &file_cosmos_authz_v1beta1_event_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EventRevokeAll) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EventRevokeAll) ProtoMessage() {}
// Deprecated: Use EventRevokeAll.ProtoReflect.Descriptor instead.
func (*EventRevokeAll) Descriptor() ([]byte, []int) {
return file_cosmos_authz_v1beta1_event_proto_rawDescGZIP(), []int{2}
}
func (x *EventRevokeAll) GetMsgTypeUrl() string {
if x != nil {
return x.MsgTypeUrl
}
return ""
}
func (x *EventRevokeAll) GetGranter() string {
if x != nil {
return x.Granter
}
return ""
}
// EventPruneExpiredGrants is emitted on Msg/PruneExpiredGrants
//
// Since: x/authz 1.0.0
@ -1671,7 +2201,7 @@ type EventPruneExpiredGrants struct {
func (x *EventPruneExpiredGrants) Reset() {
*x = EventPruneExpiredGrants{}
if protoimpl.UnsafeEnabled {
mi := &file_cosmos_authz_v1beta1_event_proto_msgTypes[2]
mi := &file_cosmos_authz_v1beta1_event_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1685,7 +2215,7 @@ func (*EventPruneExpiredGrants) ProtoMessage() {}
// Deprecated: Use EventPruneExpiredGrants.ProtoReflect.Descriptor instead.
func (*EventPruneExpiredGrants) Descriptor() ([]byte, []int) {
return file_cosmos_authz_v1beta1_event_proto_rawDescGZIP(), []int{2}
return file_cosmos_authz_v1beta1_event_proto_rawDescGZIP(), []int{3}
}
func (x *EventPruneExpiredGrants) GetPruner() string {
@ -1722,25 +2252,33 @@ var file_cosmos_authz_v1beta1_event_proto_rawDesc = []byte{
0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67,
0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50,
0x72, 0x75, 0x6e, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x61, 0x6e, 0x74,
0x73, 0x12, 0x30, 0x0a, 0x06, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64,
0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x72, 0x75,
0x6e, 0x65, 0x72, 0x42, 0xcc, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
0x42, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32,
0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x2f, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x76, 0x31, 0x62, 0x65, 0x74,
0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x41, 0x58, 0xaa, 0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca,
0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x5c, 0x56,
0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x20, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c,
0x41, 0x75, 0x74, 0x68, 0x7a, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50,
0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74,
0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x22, 0x7b, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52,
0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x20, 0x0a, 0x0c, 0x6d, 0x73, 0x67, 0x5f,
0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72,
0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d,
0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53,
0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x3a, 0x13,
0xd2, 0xb4, 0x2d, 0x0f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30,
0x2e, 0x35, 0x31, 0x22, 0x4b, 0x0a, 0x17, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x75, 0x6e,
0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x30,
0x0a, 0x06, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18,
0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65,
0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x72,
0x42, 0xcc, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x75, 0x74, 0x68, 0x7a, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,
0x61, 0x31, 0x3b, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2,
0x02, 0x03, 0x43, 0x41, 0x58, 0xaa, 0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41,
0x75, 0x74, 0x68, 0x7a, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x14, 0x43,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x5c, 0x56, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0xe2, 0x02, 0x20, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x75, 0x74,
0x68, 0x7a, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a,
0x3a, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1755,11 +2293,12 @@ func file_cosmos_authz_v1beta1_event_proto_rawDescGZIP() []byte {
return file_cosmos_authz_v1beta1_event_proto_rawDescData
}
var file_cosmos_authz_v1beta1_event_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_cosmos_authz_v1beta1_event_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_cosmos_authz_v1beta1_event_proto_goTypes = []interface{}{
(*EventGrant)(nil), // 0: cosmos.authz.v1beta1.EventGrant
(*EventRevoke)(nil), // 1: cosmos.authz.v1beta1.EventRevoke
(*EventPruneExpiredGrants)(nil), // 2: cosmos.authz.v1beta1.EventPruneExpiredGrants
(*EventRevokeAll)(nil), // 2: cosmos.authz.v1beta1.EventRevokeAll
(*EventPruneExpiredGrants)(nil), // 3: cosmos.authz.v1beta1.EventPruneExpiredGrants
}
var file_cosmos_authz_v1beta1_event_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
@ -1800,6 +2339,18 @@ func file_cosmos_authz_v1beta1_event_proto_init() {
}
}
file_cosmos_authz_v1beta1_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EventRevokeAll); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cosmos_authz_v1beta1_event_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EventPruneExpiredGrants); i {
case 0:
return &v.state
@ -1818,7 +2369,7 @@ func file_cosmos_authz_v1beta1_event_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_cosmos_authz_v1beta1_event_proto_rawDesc,
NumEnums: 0,
NumMessages: 3,
NumMessages: 4,
NumExtensions: 0,
NumServices: 0,
},

File diff suppressed because it is too large Load Diff

View File

@ -24,6 +24,7 @@ const (
Msg_Grant_FullMethodName = "/cosmos.authz.v1beta1.Msg/Grant"
Msg_Exec_FullMethodName = "/cosmos.authz.v1beta1.Msg/Exec"
Msg_Revoke_FullMethodName = "/cosmos.authz.v1beta1.Msg/Revoke"
Msg_RevokeAll_FullMethodName = "/cosmos.authz.v1beta1.Msg/RevokeAll"
Msg_PruneExpiredGrants_FullMethodName = "/cosmos.authz.v1beta1.Msg/PruneExpiredGrants"
)
@ -43,6 +44,8 @@ type MsgClient interface {
// Revoke revokes any authorization corresponding to the provided method name on the
// granter's account that has been granted to the grantee.
Revoke(ctx context.Context, in *MsgRevoke, opts ...grpc.CallOption) (*MsgRevokeResponse, error)
// RevokeAll revokes all grants issued by the specified granter.
RevokeAll(ctx context.Context, in *MsgRevokeAll, opts ...grpc.CallOption) (*MsgRevokeAllResponse, error)
// PruneExpiredGrants prunes the expired grants. Currently up to 75 at a time.
//
// Since cosmos-sdk 0.51
@ -84,6 +87,15 @@ func (c *msgClient) Revoke(ctx context.Context, in *MsgRevoke, opts ...grpc.Call
return out, nil
}
func (c *msgClient) RevokeAll(ctx context.Context, in *MsgRevokeAll, opts ...grpc.CallOption) (*MsgRevokeAllResponse, error) {
out := new(MsgRevokeAllResponse)
err := c.cc.Invoke(ctx, Msg_RevokeAll_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *msgClient) PruneExpiredGrants(ctx context.Context, in *MsgPruneExpiredGrants, opts ...grpc.CallOption) (*MsgPruneExpiredGrantsResponse, error) {
out := new(MsgPruneExpiredGrantsResponse)
err := c.cc.Invoke(ctx, Msg_PruneExpiredGrants_FullMethodName, in, out, opts...)
@ -109,6 +121,8 @@ type MsgServer interface {
// Revoke revokes any authorization corresponding to the provided method name on the
// granter's account that has been granted to the grantee.
Revoke(context.Context, *MsgRevoke) (*MsgRevokeResponse, error)
// RevokeAll revokes all grants issued by the specified granter.
RevokeAll(context.Context, *MsgRevokeAll) (*MsgRevokeAllResponse, error)
// PruneExpiredGrants prunes the expired grants. Currently up to 75 at a time.
//
// Since cosmos-sdk 0.51
@ -129,6 +143,9 @@ func (UnimplementedMsgServer) Exec(context.Context, *MsgExec) (*MsgExecResponse,
func (UnimplementedMsgServer) Revoke(context.Context, *MsgRevoke) (*MsgRevokeResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Revoke not implemented")
}
func (UnimplementedMsgServer) RevokeAll(context.Context, *MsgRevokeAll) (*MsgRevokeAllResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RevokeAll not implemented")
}
func (UnimplementedMsgServer) PruneExpiredGrants(context.Context, *MsgPruneExpiredGrants) (*MsgPruneExpiredGrantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method PruneExpiredGrants not implemented")
}
@ -199,6 +216,24 @@ func _Msg_Revoke_Handler(srv interface{}, ctx context.Context, dec func(interfac
return interceptor(ctx, in, info, handler)
}
func _Msg_RevokeAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgRevokeAll)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).RevokeAll(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Msg_RevokeAll_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).RevokeAll(ctx, req.(*MsgRevokeAll))
}
return interceptor(ctx, in, info, handler)
}
func _Msg_PruneExpiredGrants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgPruneExpiredGrants)
if err := dec(in); err != nil {
@ -236,6 +271,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{
MethodName: "Revoke",
Handler: _Msg_Revoke_Handler,
},
{
MethodName: "RevokeAll",
Handler: _Msg_RevokeAll_Handler,
},
{
MethodName: "PruneExpiredGrants",
Handler: _Msg_PruneExpiredGrants_Handler,

View File

@ -28,6 +28,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Features
* [#18737](https://github.com/cosmos/cosmos-sdk/pull/18737) Added a limit of 200 grants pruned per `BeginBlock` and the `PruneExpiredGrants` message that prunes 75 expired grants on every run.
* [#20161](https://github.com/cosmos/cosmos-sdk/pull/20161) Added `RevokeAll` method to revoke all grants at once.
### API Breaking Changes

View File

@ -21,6 +21,7 @@ granting arbitrary privileges from one account (the granter) to another account
* [Messages](#messages)
* [MsgGrant](#msggrant)
* [MsgRevoke](#msgrevoke)
* [MsgRevokeAll](#msgrevokeall)
* [MsgExec](#msgexec)
* [MsgPruneExpiredGrants](#msgpruneexpiredgrants)
* [Events](#events)
@ -168,6 +169,19 @@ The message handling should fail if:
NOTE: The `MsgExec` message removes a grant if the grant has expired.
### MsgRevokeAll
The `MsgRevokeAll` message revokes all grants issued by the specified granter. This is useful for quickly removing all authorizations granted by a single granter without specifying individual message types or grantees.
```protobuf reference
https://github.com/cosmos/cosmos-sdk/tree/main/proto/cosmos/authz/v1beta1/tx.proto#L91-L97
```
The message handling should fail if:
* the `granter` address is not provided or invalid.
* the `granter` does not have any active grants.
### MsgExec
When a grantee wants to execute a transaction on behalf of a granter, they must send `MsgExec`.

View File

@ -155,6 +155,61 @@ func (m *EventRevoke) GetGrantee() string {
return ""
}
// EventRevokeAll is emitted on Msg/RevokeAll
type EventRevokeAll struct {
// Msg type URL for which all authorizations are revoked
MsgTypeUrl string `protobuf:"bytes,2,opt,name=msg_type_url,json=msgTypeUrl,proto3" json:"msg_type_url,omitempty"`
// Granter account address
Granter string `protobuf:"bytes,3,opt,name=granter,proto3" json:"granter,omitempty"`
}
func (m *EventRevokeAll) Reset() { *m = EventRevokeAll{} }
func (m *EventRevokeAll) String() string { return proto.CompactTextString(m) }
func (*EventRevokeAll) ProtoMessage() {}
func (*EventRevokeAll) Descriptor() ([]byte, []int) {
return fileDescriptor_1f88cbc71a8baf1f, []int{2}
}
func (m *EventRevokeAll) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *EventRevokeAll) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_EventRevokeAll.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 *EventRevokeAll) XXX_Merge(src proto.Message) {
xxx_messageInfo_EventRevokeAll.Merge(m, src)
}
func (m *EventRevokeAll) XXX_Size() int {
return m.Size()
}
func (m *EventRevokeAll) XXX_DiscardUnknown() {
xxx_messageInfo_EventRevokeAll.DiscardUnknown(m)
}
var xxx_messageInfo_EventRevokeAll proto.InternalMessageInfo
func (m *EventRevokeAll) GetMsgTypeUrl() string {
if m != nil {
return m.MsgTypeUrl
}
return ""
}
func (m *EventRevokeAll) GetGranter() string {
if m != nil {
return m.Granter
}
return ""
}
// EventPruneExpiredGrants is emitted on Msg/PruneExpiredGrants
//
// Since: x/authz 1.0.0
@ -167,7 +222,7 @@ func (m *EventPruneExpiredGrants) Reset() { *m = EventPruneExpiredGrants
func (m *EventPruneExpiredGrants) String() string { return proto.CompactTextString(m) }
func (*EventPruneExpiredGrants) ProtoMessage() {}
func (*EventPruneExpiredGrants) Descriptor() ([]byte, []int) {
return fileDescriptor_1f88cbc71a8baf1f, []int{2}
return fileDescriptor_1f88cbc71a8baf1f, []int{3}
}
func (m *EventPruneExpiredGrants) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -206,13 +261,14 @@ func (m *EventPruneExpiredGrants) GetPruner() string {
func init() {
proto.RegisterType((*EventGrant)(nil), "cosmos.authz.v1beta1.EventGrant")
proto.RegisterType((*EventRevoke)(nil), "cosmos.authz.v1beta1.EventRevoke")
proto.RegisterType((*EventRevokeAll)(nil), "cosmos.authz.v1beta1.EventRevokeAll")
proto.RegisterType((*EventPruneExpiredGrants)(nil), "cosmos.authz.v1beta1.EventPruneExpiredGrants")
}
func init() { proto.RegisterFile("cosmos/authz/v1beta1/event.proto", fileDescriptor_1f88cbc71a8baf1f) }
var fileDescriptor_1f88cbc71a8baf1f = []byte{
// 269 bytes of a gzipped FileDescriptorProto
// 299 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xce, 0x2f, 0xce,
0xcd, 0x2f, 0xd6, 0x4f, 0x2c, 0x2d, 0xc9, 0xa8, 0xd2, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34,
0xd4, 0x4f, 0x2d, 0x4b, 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x81, 0xa8,
@ -223,13 +279,15 @@ var fileDescriptor_1f88cbc71a8baf1f = []byte{
0xe5, 0x08, 0x19, 0x71, 0xb1, 0xa7, 0x83, 0x94, 0xa6, 0x16, 0x49, 0x30, 0x83, 0x24, 0x9d, 0x24,
0x2e, 0x6d, 0xd1, 0x85, 0x59, 0xeb, 0x98, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0x1c, 0x5c, 0x52, 0x94,
0x99, 0x97, 0x1e, 0x04, 0x53, 0x88, 0xd0, 0x93, 0x2a, 0xc1, 0x42, 0x9c, 0x9e, 0x54, 0xa5, 0xe9,
0x8c, 0x5c, 0xdc, 0x60, 0x87, 0x05, 0xa5, 0x96, 0xe5, 0x67, 0xa7, 0x0e, 0x22, 0x97, 0x79, 0x73,
0x89, 0x83, 0x1d, 0x16, 0x50, 0x54, 0x9a, 0x97, 0xea, 0x5a, 0x51, 0x90, 0x59, 0x94, 0x9a, 0x02,
0x0e, 0xbd, 0x62, 0x21, 0x03, 0x2e, 0xb6, 0x02, 0x90, 0x68, 0x11, 0xc4, 0x79, 0x78, 0x4c, 0x83,
0xaa, 0x73, 0xd2, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18,
0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xa8, 0xbe,
0xe2, 0x94, 0x6c, 0xbd, 0xcc, 0x7c, 0xfd, 0x0a, 0x48, 0xa4, 0x27, 0xb1, 0x81, 0xa3, 0xcd, 0x18,
0x10, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x9f, 0xa5, 0x63, 0x0b, 0x02, 0x00, 0x00,
0x8c, 0x5c, 0xdc, 0x60, 0x87, 0x05, 0xa5, 0x96, 0xe5, 0x67, 0xa7, 0x0e, 0x22, 0x97, 0x55, 0x73,
0xf1, 0x21, 0x39, 0xcc, 0x31, 0x27, 0x87, 0x36, 0x6e, 0xb3, 0x12, 0xbe, 0xb4, 0x45, 0x97, 0x1f,
0xa2, 0x44, 0xb7, 0x38, 0x25, 0x5b, 0xc1, 0x40, 0xcf, 0xd4, 0x50, 0xc9, 0x9b, 0x4b, 0x1c, 0x6c,
0x79, 0x40, 0x51, 0x69, 0x5e, 0xaa, 0x6b, 0x45, 0x41, 0x66, 0x51, 0x6a, 0x0a, 0x38, 0xea, 0x8a,
0x85, 0x0c, 0xb8, 0xd8, 0x0a, 0x40, 0xa2, 0x45, 0x10, 0xfb, 0xf1, 0x58, 0x01, 0x55, 0xe7, 0xa4,
0x77, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c,
0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x50, 0x7d, 0xc5, 0x29, 0xd9,
0x7a, 0x99, 0xf9, 0xfa, 0x15, 0x90, 0x14, 0x97, 0xc4, 0x06, 0x4e, 0x33, 0xc6, 0x80, 0x00, 0x00,
0x00, 0xff, 0xff, 0x7d, 0x61, 0x73, 0xd1, 0x88, 0x02, 0x00, 0x00,
}
func (m *EventGrant) Marshal() (dAtA []byte, err error) {
@ -320,6 +378,43 @@ func (m *EventRevoke) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *EventRevokeAll) 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 *EventRevokeAll) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *EventRevokeAll) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Granter) > 0 {
i -= len(m.Granter)
copy(dAtA[i:], m.Granter)
i = encodeVarintEvent(dAtA, i, uint64(len(m.Granter)))
i--
dAtA[i] = 0x1a
}
if len(m.MsgTypeUrl) > 0 {
i -= len(m.MsgTypeUrl)
copy(dAtA[i:], m.MsgTypeUrl)
i = encodeVarintEvent(dAtA, i, uint64(len(m.MsgTypeUrl)))
i--
dAtA[i] = 0x12
}
return len(dAtA) - i, nil
}
func (m *EventPruneExpiredGrants) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -403,6 +498,23 @@ func (m *EventRevoke) Size() (n int) {
return n
}
func (m *EventRevokeAll) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.MsgTypeUrl)
if l > 0 {
n += 1 + l + sovEvent(uint64(l))
}
l = len(m.Granter)
if l > 0 {
n += 1 + l + sovEvent(uint64(l))
}
return n
}
func (m *EventPruneExpiredGrants) Size() (n int) {
if m == nil {
return 0
@ -714,6 +826,120 @@ func (m *EventRevoke) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *EventRevokeAll) 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 ErrIntOverflowEvent
}
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: EventRevokeAll: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: EventRevokeAll: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field MsgTypeUrl", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowEvent
}
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 ErrInvalidLengthEvent
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthEvent
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.MsgTypeUrl = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Granter", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowEvent
}
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 ErrInvalidLengthEvent
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthEvent
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Granter = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipEvent(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthEvent
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *EventPruneExpiredGrants) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0

View File

@ -256,6 +256,31 @@ func (k Keeper) DeleteGrant(ctx context.Context, grantee, granter sdk.AccAddress
})
}
// DeleteAllGrants revokes all authorizations granted to the grantee by the granter.
func (k Keeper) DeleteAllGrants(ctx context.Context, granter sdk.AccAddress) error {
var keysToDelete [][]byte
err := k.IterateGranterGrants(ctx, granter, func(grantee sdk.AccAddress, msgType string) (stop bool, err error) {
keysToDelete = append(keysToDelete, grantStoreKey(grantee, granter, msgType))
return false, nil
})
if err != nil {
return err
}
if len(keysToDelete) == 0 {
return errorsmod.Wrapf(authz.ErrNoAuthorizationFound, "no grants found for granter %s", granter)
}
for _, key := range keysToDelete {
_, granteeAddr, msgType := parseGrantStoreKey(key)
if err := k.DeleteGrant(ctx, granteeAddr, granter, msgType); err != nil {
return err
}
}
return k.EventService.EventManager(ctx).Emit(&authz.EventRevokeAll{
Granter: granter.String(),
})
}
// GetAuthorizations Returns list of `Authorizations` granted to the grantee by the granter.
func (k Keeper) GetAuthorizations(ctx context.Context, grantee, granter sdk.AccAddress) ([]authz.Authorization, error) {
store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
@ -325,6 +350,29 @@ func (k Keeper) IterateGrants(ctx context.Context,
return nil
}
func (k Keeper) IterateGranterGrants(ctx context.Context, granter sdk.AccAddress,
handler func(granteeAddr sdk.AccAddress, msgType string) (stop bool, err error),
) error {
// no-op if handler is nil
if handler == nil {
return nil
}
store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iter := storetypes.KVStorePrefixIterator(store, granterStoreKey(granter))
defer iter.Close()
for ; iter.Valid(); iter.Next() {
_, granteeAddr, msgType := parseGrantStoreKey(iter.Key())
ok, err := handler(granteeAddr, msgType)
if err != nil {
return err
}
if ok {
break
}
}
return nil
}
func (k Keeper) getGrantQueueItem(ctx context.Context, expiration time.Time, granter, grantee sdk.AccAddress) (*authz.GrantQueueItem, error) {
store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(GrantQueueKey(expiration, granter, grantee))

View File

@ -92,29 +92,61 @@ func (s *TestSuite) TestKeeper() {
require := s.Require()
granterAddr := addrs[0]
granteeAddr := addrs[1]
grantee1Addr := addrs[1]
grantee2Addr := addrs[2]
grantee3Addr := addrs[3]
grantees := []sdk.AccAddress{grantee1Addr, grantee2Addr, grantee3Addr}
s.T().Log("verify that no authorization returns nil")
authorizations, err := s.authzKeeper.GetAuthorizations(ctx, granteeAddr, granterAddr)
require.NoError(err)
require.Len(authorizations, 0)
s.T().Log("verify save, get and delete")
s.T().Log("verify save, get and delete work for grants")
sendAutz := &banktypes.SendAuthorization{SpendLimit: coins100}
expire := now.AddDate(1, 0, 0)
err = s.authzKeeper.SaveGrant(ctx, granteeAddr, granterAddr, sendAutz, &expire)
for _, grantee := range grantees {
err = s.authzKeeper.SaveGrant(ctx, grantee, granterAddr, sendAutz, &expire)
require.NoError(err)
}
for _, grantee := range grantees {
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, grantee, granterAddr)
require.NoError(err)
require.Len(authorizations, 1)
}
// Delete a single grant
err = s.authzKeeper.DeleteGrant(ctx, grantee1Addr, granterAddr, sendAutz.MsgTypeURL())
require.NoError(err)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, granteeAddr, granterAddr)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, grantee1Addr, granterAddr)
require.NoError(err)
require.Len(authorizations, 0)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, grantee2Addr, granterAddr)
require.NoError(err)
require.Len(authorizations, 1)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, grantee3Addr, granterAddr)
require.NoError(err)
require.Len(authorizations, 1)
err = s.authzKeeper.DeleteGrant(ctx, granteeAddr, granterAddr, sendAutz.MsgTypeURL())
// Delete all grants for a granter
err = s.authzKeeper.DeleteAllGrants(ctx, granterAddr)
require.NoError(err)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, granteeAddr, granterAddr)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, grantee1Addr, granterAddr)
require.NoError(err)
require.Len(authorizations, 0)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, grantee2Addr, granterAddr)
require.NoError(err)
require.Len(authorizations, 0)
authorizations, err = s.authzKeeper.GetAuthorizations(ctx, grantee3Addr, granterAddr)
require.NoError(err)
require.Len(authorizations, 0)
// Delete all grants for a granter with no grants, should error
err = s.authzKeeper.DeleteAllGrants(ctx, granterAddr)
require.Error(err)
s.T().Log("verify granting same authorization overwrite existing authorization")
err = s.authzKeeper.SaveGrant(ctx, granteeAddr, granterAddr, sendAutz, &expire)
@ -162,6 +194,39 @@ func (s *TestSuite) TestKeeperIter() {
})
}
func (s *TestSuite) TestKeeperGranterGrantsIter() {
ctx, addrs := s.ctx, s.addrs
granterAddr := addrs[0]
granter2Addr := addrs[1]
granteeAddr := addrs[2]
grantee2Addr := addrs[3]
grantee3Addr := addrs[4]
e := ctx.HeaderInfo().Time.AddDate(1, 0, 0)
sendAuthz := banktypes.NewSendAuthorization(coins100, nil, s.accountKeeper.AddressCodec())
err := s.authzKeeper.SaveGrant(ctx, granteeAddr, granterAddr, sendAuthz, &e)
s.Require().NoError(err)
err = s.authzKeeper.SaveGrant(ctx, grantee2Addr, granterAddr, sendAuthz, &e)
s.Require().NoError(err)
err = s.authzKeeper.SaveGrant(ctx, grantee3Addr, granter2Addr, sendAuthz, &e)
s.Require().NoError(err)
_ = s.authzKeeper.IterateGranterGrants(ctx, granterAddr, func(grantee sdk.AccAddress, msgType string) (bool, error) {
s.Require().Contains([]sdk.AccAddress{granteeAddr, grantee2Addr}, grantee)
s.Require().NotContains([]sdk.AccAddress{grantee3Addr}, grantee)
return true, nil
})
_ = s.authzKeeper.IterateGranterGrants(ctx, granter2Addr, func(grantee sdk.AccAddress, msgType string) (bool, error) {
s.Require().Equal(grantee3Addr, grantee)
s.Require().NotContains([]sdk.AccAddress{granteeAddr, grantee2Addr}, grantee)
return true, nil
})
}
func (s *TestSuite) TestDispatchAction() {
addrs := s.addrs
require := s.Require()

View File

@ -39,6 +39,12 @@ func grantStoreKey(grantee, granter sdk.AccAddress, msgType string) []byte {
return key
}
func granterStoreKey(granter sdk.AccAddress) []byte {
granter = address.MustLengthPrefix(granter)
key := sdk.AppendLengthPrefixedBytes(GrantKey, granter)
return key
}
// parseGrantStoreKey - split granter, grantee address and msg type from the authorization key
func parseGrantStoreKey(key []byte) (granterAddr, granteeAddr sdk.AccAddress, msgType string) {
// key is of format:

View File

@ -79,6 +79,20 @@ func (k Keeper) Revoke(ctx context.Context, msg *authz.MsgRevoke) (*authz.MsgRev
return &authz.MsgRevokeResponse{}, nil
}
// RevokeAll implements the MsgServer.RevokeAll method.
func (k Keeper) RevokeAll(ctx context.Context, msg *authz.MsgRevokeAll) (*authz.MsgRevokeAllResponse, error) {
granter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter)
if err != nil {
return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid granter address: %s", err)
}
if err := k.DeleteAllGrants(ctx, granter); err != nil {
return nil, err
}
return &authz.MsgRevokeAllResponse{}, nil
}
// Exec implements the MsgServer.Exec method.
func (k Keeper) Exec(ctx context.Context, msg *authz.MsgExec) (*authz.MsgExecResponse, error) {
if msg.Grantee == "" {

View File

@ -435,3 +435,67 @@ func (suite *TestSuite) TestPruneExpiredGrants() {
})
suite.Require().Equal(0, totalGrants)
}
func (suite *TestSuite) TestRevokeAllGrants() {
addrs := simtestutil.CreateIncrementalAccounts(3)
grantee, grantee2, granter := addrs[0], addrs[1], addrs[2]
granterStrAddr, err := suite.accountKeeper.AddressCodec().BytesToString(granter)
suite.Require().NoError(err)
testCases := []struct {
name string
malleate func() *authz.MsgRevokeAll
expErr bool
errMsg string
}{
{
name: "invalid granter",
malleate: func() *authz.MsgRevokeAll {
return &authz.MsgRevokeAll{
Granter: "invalid",
}
},
expErr: true,
errMsg: "invalid bech32 string",
},
{
name: "no existing grant to revoke",
malleate: func() *authz.MsgRevokeAll {
return &authz.MsgRevokeAll{
Granter: granterStrAddr,
}
},
expErr: true,
errMsg: "authorization not found",
},
{
name: "valid grant",
malleate: func() *authz.MsgRevokeAll {
suite.createSendAuthorization(grantee, granter)
suite.createSendAuthorization(grantee2, granter)
return &authz.MsgRevokeAll{
Granter: granterStrAddr,
}
},
},
}
for _, tc := range testCases {
suite.Run(tc.name, func() {
_, err := suite.msgSrvr.RevokeAll(suite.ctx, tc.malleate())
if tc.expErr {
suite.Require().Error(err)
suite.Require().Contains(err.Error(), tc.errMsg)
} else {
suite.Require().NoError(err)
totalGrants := 0
_ = suite.authzKeeper.IterateGranterGrants(suite.ctx, granter, func(sdk.AccAddress, string) (bool, error) {
totalGrants++
return false, nil
})
suite.Require().Equal(0, totalGrants)
}
})
}
}

View File

@ -70,6 +70,12 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
{ProtoField: "msg_type_url"},
},
},
{
RpcMethod: "RevokeAll",
Use: "revoke-all --from [signer]",
Short: "Revoke all authorizations from the signer",
Example: fmt.Sprintf("%s tx authz revoke-all --from=cosmos1skj..", version.AppName),
},
{
RpcMethod: "PruneExpiredGrants",
Use: "prune-grants --from [granter]",

View File

@ -4,8 +4,8 @@ deps:
- remote: buf.build
owner: cosmos
repository: cosmos-proto
commit: 1935555c206d4afb9e94615dfd0fad31
digest: shake256:c74d91a3ac7ae07d579e90eee33abf9b29664047ac8816500cf22c081fec0d72d62c89ce0bebafc1f6fec7aa5315be72606717740ca95007248425102c365377
commit: 04467658e59e44bbb22fe568206e1f70
digest: shake256:73a640bd60e0c523b0f8237ff34eab67c45a38b64bbbde1d80224819d272dbf316ac183526bd245f994af6608b025f5130483d0133c5edd385531326b5990466
- remote: buf.build
owner: cosmos
repository: cosmos-sdk

View File

@ -29,6 +29,15 @@ message EventRevoke {
string grantee = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// EventRevokeAll is emitted on Msg/RevokeAll
message EventRevokeAll {
option (cosmos_proto.message_added_in) = "cosmos-sdk 0.51";
// Msg type URL for which all authorizations are revoked
string msg_type_url = 2;
// Granter account address
string granter = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// EventPruneExpiredGrants is emitted on Msg/PruneExpiredGrants
//
// Since: x/authz 1.0.0

View File

@ -31,6 +31,11 @@ service Msg {
// granter's account that has been granted to the grantee.
rpc Revoke(MsgRevoke) returns (MsgRevokeResponse);
// RevokeAll revokes all grants issued by the specified granter.
rpc RevokeAll(MsgRevokeAll) returns (MsgRevokeAllResponse) {
option (cosmos_proto.method_added_in) = "cosmos-sdk 0.51";
}
// PruneExpiredGrants prunes the expired grants. Currently up to 75 at a time.
//
// Since cosmos-sdk 0.51
@ -85,6 +90,20 @@ message MsgRevoke {
// MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.
message MsgRevokeResponse {}
// MsgRevokeAll revokes all grants issued by the specified granter.
message MsgRevokeAll {
option (cosmos_proto.message_added_in) = "cosmos-sdk 0.51";
option (cosmos.msg.v1.signer) = "granter";
option (amino.name) = "cosmos-sdk/MsgRevokeAll";
string granter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// MsgRevokeAllResponse defines the Msg/MsgRevokeAllResponse response type.
message MsgRevokeAllResponse {
option (cosmos_proto.message_added_in) = "cosmos-sdk 0.51";
}
// MsgPruneExpiredGrants prunes the expired grants.
//
// Since x/authz v1.0.0

View File

@ -270,6 +270,81 @@ func (m *MsgRevokeResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgRevokeResponse proto.InternalMessageInfo
// MsgRevokeAll revokes all grants issued by the specified granter.
type MsgRevokeAll struct {
Granter string `protobuf:"bytes,1,opt,name=granter,proto3" json:"granter,omitempty"`
}
func (m *MsgRevokeAll) Reset() { *m = MsgRevokeAll{} }
func (m *MsgRevokeAll) String() string { return proto.CompactTextString(m) }
func (*MsgRevokeAll) ProtoMessage() {}
func (*MsgRevokeAll) Descriptor() ([]byte, []int) {
return fileDescriptor_3ceddab7d8589ad1, []int{6}
}
func (m *MsgRevokeAll) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgRevokeAll) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgRevokeAll.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 *MsgRevokeAll) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgRevokeAll.Merge(m, src)
}
func (m *MsgRevokeAll) XXX_Size() int {
return m.Size()
}
func (m *MsgRevokeAll) XXX_DiscardUnknown() {
xxx_messageInfo_MsgRevokeAll.DiscardUnknown(m)
}
var xxx_messageInfo_MsgRevokeAll proto.InternalMessageInfo
// MsgRevokeAllResponse defines the Msg/MsgRevokeAllResponse response type.
type MsgRevokeAllResponse struct {
}
func (m *MsgRevokeAllResponse) Reset() { *m = MsgRevokeAllResponse{} }
func (m *MsgRevokeAllResponse) String() string { return proto.CompactTextString(m) }
func (*MsgRevokeAllResponse) ProtoMessage() {}
func (*MsgRevokeAllResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_3ceddab7d8589ad1, []int{7}
}
func (m *MsgRevokeAllResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MsgRevokeAllResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MsgRevokeAllResponse.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 *MsgRevokeAllResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MsgRevokeAllResponse.Merge(m, src)
}
func (m *MsgRevokeAllResponse) XXX_Size() int {
return m.Size()
}
func (m *MsgRevokeAllResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MsgRevokeAllResponse.DiscardUnknown(m)
}
var xxx_messageInfo_MsgRevokeAllResponse proto.InternalMessageInfo
// MsgPruneExpiredGrants prunes the expired grants.
//
// Since x/authz v1.0.0
@ -281,7 +356,7 @@ func (m *MsgPruneExpiredGrants) Reset() { *m = MsgPruneExpiredGrants{} }
func (m *MsgPruneExpiredGrants) String() string { return proto.CompactTextString(m) }
func (*MsgPruneExpiredGrants) ProtoMessage() {}
func (*MsgPruneExpiredGrants) Descriptor() ([]byte, []int) {
return fileDescriptor_3ceddab7d8589ad1, []int{6}
return fileDescriptor_3ceddab7d8589ad1, []int{8}
}
func (m *MsgPruneExpiredGrants) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -320,7 +395,7 @@ func (m *MsgPruneExpiredGrantsResponse) Reset() { *m = MsgPruneExpiredGr
func (m *MsgPruneExpiredGrantsResponse) String() string { return proto.CompactTextString(m) }
func (*MsgPruneExpiredGrantsResponse) ProtoMessage() {}
func (*MsgPruneExpiredGrantsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_3ceddab7d8589ad1, []int{7}
return fileDescriptor_3ceddab7d8589ad1, []int{9}
}
func (m *MsgPruneExpiredGrantsResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -356,6 +431,8 @@ func init() {
proto.RegisterType((*MsgExecResponse)(nil), "cosmos.authz.v1beta1.MsgExecResponse")
proto.RegisterType((*MsgRevoke)(nil), "cosmos.authz.v1beta1.MsgRevoke")
proto.RegisterType((*MsgRevokeResponse)(nil), "cosmos.authz.v1beta1.MsgRevokeResponse")
proto.RegisterType((*MsgRevokeAll)(nil), "cosmos.authz.v1beta1.MsgRevokeAll")
proto.RegisterType((*MsgRevokeAllResponse)(nil), "cosmos.authz.v1beta1.MsgRevokeAllResponse")
proto.RegisterType((*MsgPruneExpiredGrants)(nil), "cosmos.authz.v1beta1.MsgPruneExpiredGrants")
proto.RegisterType((*MsgPruneExpiredGrantsResponse)(nil), "cosmos.authz.v1beta1.MsgPruneExpiredGrantsResponse")
}
@ -363,45 +440,49 @@ func init() {
func init() { proto.RegisterFile("cosmos/authz/v1beta1/tx.proto", fileDescriptor_3ceddab7d8589ad1) }
var fileDescriptor_3ceddab7d8589ad1 = []byte{
// 604 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x54, 0x4f, 0x6f, 0x12, 0x41,
0x1c, 0x65, 0x4a, 0x0b, 0x32, 0x34, 0xd1, 0x6e, 0x31, 0x6e, 0xb7, 0x61, 0xd9, 0xac, 0x56, 0x09,
0x0d, 0xbb, 0x42, 0x6f, 0xc4, 0x4b, 0x49, 0x88, 0x17, 0x89, 0x66, 0xfd, 0x73, 0xf0, 0x42, 0x96,
0x32, 0x8e, 0x04, 0x76, 0x67, 0xb3, 0xb3, 0x10, 0xf0, 0x64, 0x3c, 0x7a, 0xf2, 0x63, 0xe8, 0x8d,
0x43, 0x8f, 0x7e, 0x00, 0xe2, 0xa9, 0xf1, 0x60, 0x3c, 0x19, 0x85, 0x03, 0x1f, 0xc1, 0xab, 0xd9,
0x99, 0xd9, 0xb5, 0x55, 0x68, 0xeb, 0xc5, 0x0b, 0xfc, 0xfe, 0xbc, 0xdf, 0xcc, 0x7b, 0xf3, 0x66,
0x16, 0xe6, 0x8f, 0x08, 0x75, 0x08, 0x35, 0xed, 0x41, 0xf0, 0xf2, 0x95, 0x39, 0xac, 0xb4, 0x51,
0x60, 0x57, 0xcc, 0x60, 0x64, 0x78, 0x3e, 0x09, 0x88, 0x94, 0xe3, 0x6d, 0x83, 0xb5, 0x0d, 0xd1,
0x56, 0x76, 0x78, 0xb5, 0xc5, 0x30, 0xa6, 0x80, 0xb0, 0x44, 0xc9, 0x61, 0x82, 0x09, 0xaf, 0x87,
0x91, 0xa8, 0xee, 0x60, 0x42, 0x70, 0x1f, 0x99, 0x2c, 0x6b, 0x0f, 0x5e, 0x98, 0xb6, 0x3b, 0x16,
0x2d, 0x6d, 0x29, 0x01, 0xbe, 0x1f, 0x47, 0xdc, 0x10, 0x08, 0x87, 0x62, 0x73, 0x58, 0x09, 0xff,
0x44, 0x63, 0xcb, 0x76, 0xba, 0x2e, 0x31, 0xd9, 0x2f, 0x2f, 0xe9, 0x5f, 0x00, 0xbc, 0xd2, 0xa4,
0xf8, 0xbe, 0x6f, 0xbb, 0x81, 0x54, 0x85, 0x69, 0x1c, 0x06, 0xc8, 0x97, 0x81, 0x06, 0x8a, 0x99,
0xba, 0xfc, 0xf9, 0xb8, 0x1c, 0x29, 0x3a, 0xec, 0x74, 0x7c, 0x44, 0xe9, 0xe3, 0xc0, 0xef, 0xba,
0xd8, 0x8a, 0x80, 0xbf, 0x67, 0x90, 0xbc, 0x76, 0xb9, 0x19, 0x24, 0xdd, 0x83, 0x1b, 0x2c, 0x94,
0x93, 0x1a, 0x28, 0x66, 0xab, 0xbb, 0xc6, 0xb2, 0x43, 0x33, 0x18, 0xa7, 0x7a, 0x66, 0xfa, 0xad,
0x90, 0x78, 0xbf, 0x98, 0x94, 0x80, 0xc5, 0x87, 0x6a, 0xb7, 0xde, 0x2c, 0x26, 0xa5, 0x68, 0xff,
0xb7, 0x8b, 0x49, 0x69, 0x9b, 0x8f, 0x97, 0x69, 0xa7, 0x67, 0x46, 0x5a, 0x74, 0x09, 0x5e, 0x8b,
0x62, 0x0b, 0x51, 0x8f, 0xb8, 0x14, 0xe9, 0x1f, 0x00, 0x4c, 0x37, 0x29, 0x6e, 0x8c, 0xd0, 0xd1,
0x69, 0xde, 0xe0, 0xb2, 0xbc, 0x1b, 0x70, 0xdd, 0xa1, 0x98, 0xca, 0x6b, 0x5a, 0xb2, 0x98, 0xad,
0xe6, 0x0c, 0x6e, 0x92, 0x11, 0x99, 0x64, 0x1c, 0xba, 0xe3, 0xfa, 0xee, 0xa7, 0xe3, 0xb2, 0x30,
0xc0, 0x68, 0xdb, 0x14, 0xc5, 0x72, 0x9a, 0x14, 0x5b, 0x6c, 0xbc, 0x76, 0xf3, 0x94, 0x00, 0x14,
0x0a, 0x90, 0xce, 0x0a, 0x08, 0xf9, 0xe9, 0xfb, 0xf0, 0xaa, 0x08, 0x23, 0xfa, 0x92, 0x0c, 0xd3,
0x3e, 0xa2, 0x83, 0x7e, 0x40, 0x65, 0xa0, 0x25, 0x8b, 0x9b, 0x56, 0x94, 0xea, 0x1f, 0x01, 0xcc,
0x84, 0xeb, 0xa3, 0x21, 0xe9, 0xa1, 0xff, 0x66, 0xa3, 0x06, 0x37, 0x1d, 0x8a, 0x5b, 0xc1, 0xd8,
0x43, 0xad, 0x81, 0xdf, 0x67, 0x6e, 0x66, 0x2c, 0xe8, 0x50, 0xfc, 0x64, 0xec, 0xa1, 0xa7, 0x7e,
0xbf, 0xb6, 0xf7, 0xa7, 0x55, 0xb9, 0xb3, 0x4a, 0x39, 0x61, 0x7d, 0x1b, 0x6e, 0xc5, 0x49, 0x6c,
0xd6, 0x33, 0x78, 0xbd, 0x49, 0xf1, 0x23, 0x7f, 0xe0, 0xa2, 0xc6, 0xc8, 0xeb, 0xfa, 0xa8, 0xc3,
0xcc, 0xa4, 0xd2, 0x5d, 0x98, 0xf2, 0xc2, 0xea, 0xc5, 0xea, 0x04, 0xae, 0x96, 0x0d, 0x69, 0x88,
0x44, 0x2f, 0xc0, 0xfc, 0xd2, 0x75, 0xa3, 0x8d, 0xab, 0x3f, 0xd7, 0x60, 0xb2, 0x49, 0xb1, 0xf4,
0x10, 0x6e, 0xf0, 0x67, 0xa1, 0x2e, 0xbf, 0x9f, 0xd1, 0xf5, 0x52, 0x6e, 0x9f, 0xdf, 0x8f, 0xfd,
0x7b, 0x00, 0xd7, 0xd9, 0xd5, 0xcb, 0xaf, 0xc4, 0x87, 0x6d, 0x65, 0xef, 0xdc, 0x76, 0xbc, 0x9a,
0x05, 0x53, 0xc2, 0xef, 0xc2, 0xca, 0x01, 0x0e, 0x50, 0xee, 0x5c, 0x00, 0x88, 0xd7, 0x1c, 0x42,
0x69, 0xc9, 0x81, 0xef, 0xaf, 0x1c, 0xff, 0x1b, 0xac, 0x1c, 0xfc, 0x03, 0x38, 0xda, 0x57, 0xd9,
0x78, 0x1d, 0x3e, 0xf0, 0x7a, 0x75, 0xfa, 0x43, 0x4d, 0x4c, 0x67, 0x2a, 0x38, 0x99, 0xa9, 0xe0,
0xfb, 0x4c, 0x05, 0xef, 0xe6, 0x6a, 0xe2, 0x64, 0xae, 0x26, 0xbe, 0xce, 0xd5, 0xc4, 0x73, 0xe1,
0x31, 0xed, 0xf4, 0x8c, 0x2e, 0x31, 0x47, 0xfc, 0x93, 0xd7, 0x4e, 0xb1, 0xd7, 0x77, 0xf0, 0x2b,
0x00, 0x00, 0xff, 0xff, 0x06, 0x4f, 0xd8, 0xf8, 0x98, 0x05, 0x00, 0x00,
// 671 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x3b, 0x6f, 0xd3, 0x50,
0x14, 0x8e, 0x9b, 0x3e, 0xc8, 0x69, 0xa5, 0x52, 0x27, 0xa8, 0xae, 0xab, 0xba, 0x96, 0xa1, 0x10,
0xa5, 0x8a, 0xdd, 0xa4, 0x62, 0x09, 0x2c, 0x89, 0x54, 0xb1, 0x10, 0x81, 0xcc, 0x63, 0x60, 0xa9,
0x92, 0xe6, 0x72, 0x89, 0xea, 0xd8, 0x96, 0xaf, 0x13, 0x25, 0x2c, 0x20, 0x46, 0x26, 0x7e, 0x06,
0x6c, 0x1d, 0x3a, 0xf2, 0x03, 0xaa, 0x4e, 0x55, 0x07, 0xc4, 0x84, 0xa0, 0x1d, 0x2a, 0xfe, 0x05,
0xf2, 0x7d, 0xb8, 0x2f, 0xa7, 0x29, 0x0c, 0x2c, 0xc9, 0x79, 0x7c, 0xe7, 0xdc, 0xef, 0xe4, 0x3b,
0xf7, 0x06, 0x96, 0xb6, 0x3c, 0xd2, 0xf1, 0x88, 0xd5, 0xe8, 0x86, 0x6f, 0xde, 0x5a, 0xbd, 0x52,
0x13, 0x85, 0x8d, 0x92, 0x15, 0xf6, 0x4d, 0x3f, 0xf0, 0x42, 0x4f, 0xce, 0xb1, 0xb4, 0x49, 0xd3,
0x26, 0x4f, 0xab, 0x0b, 0x2c, 0xba, 0x49, 0x31, 0x16, 0x87, 0x50, 0x47, 0xcd, 0x61, 0x0f, 0x7b,
0x2c, 0x1e, 0x59, 0x3c, 0xba, 0x80, 0x3d, 0x0f, 0x3b, 0xc8, 0xa2, 0x5e, 0xb3, 0xfb, 0xda, 0x6a,
0xb8, 0x03, 0x9e, 0xd2, 0x13, 0x09, 0xb0, 0xf3, 0x18, 0x62, 0x9e, 0x23, 0x3a, 0x04, 0x5b, 0xbd,
0x52, 0xf4, 0xc5, 0x13, 0x73, 0x8d, 0x4e, 0xdb, 0xf5, 0x2c, 0xfa, 0xc9, 0x42, 0xc6, 0x37, 0x09,
0x6e, 0xd4, 0x09, 0x7e, 0x14, 0x34, 0xdc, 0x50, 0x2e, 0xc3, 0x14, 0x8e, 0x0c, 0x14, 0x28, 0x92,
0x2e, 0xe5, 0x33, 0x35, 0xe5, 0x70, 0xb7, 0x28, 0x26, 0xaa, 0xb6, 0x5a, 0x01, 0x22, 0xe4, 0x59,
0x18, 0xb4, 0x5d, 0x6c, 0x0b, 0xe0, 0x69, 0x0d, 0x52, 0xc6, 0xae, 0x57, 0x83, 0xe4, 0x87, 0x30,
0x41, 0x4d, 0x25, 0xad, 0x4b, 0xf9, 0xe9, 0xf2, 0xa2, 0x99, 0xf4, 0xa3, 0x99, 0x94, 0x53, 0x2d,
0xb3, 0xf7, 0x63, 0x39, 0xf5, 0xf9, 0x64, 0xa7, 0x20, 0xd9, 0xac, 0xa8, 0x72, 0xe7, 0xc3, 0xc9,
0x4e, 0x41, 0x9c, 0xff, 0xf1, 0x64, 0xa7, 0x90, 0x65, 0xe5, 0x45, 0xd2, 0xda, 0xb6, 0xc4, 0x2c,
0x86, 0x0c, 0x37, 0x85, 0x6d, 0x23, 0xe2, 0x7b, 0x2e, 0x41, 0xc6, 0x17, 0x09, 0xa6, 0xea, 0x04,
0x6f, 0xf4, 0xd1, 0xd6, 0x59, 0xde, 0xd2, 0x75, 0x79, 0x6f, 0xc0, 0x78, 0x87, 0x60, 0xa2, 0x8c,
0xe9, 0xe9, 0xfc, 0x74, 0x39, 0x67, 0x32, 0x91, 0x4c, 0x21, 0x92, 0x59, 0x75, 0x07, 0xb5, 0xc5,
0xfd, 0xdd, 0x22, 0x17, 0xc0, 0x6c, 0x36, 0x08, 0x8a, 0xc7, 0xa9, 0x13, 0x6c, 0xd3, 0xf2, 0xca,
0xed, 0x33, 0x03, 0xa0, 0x68, 0x00, 0xf9, 0xfc, 0x00, 0x11, 0x3f, 0x63, 0x15, 0x66, 0xb9, 0x29,
0xe8, 0xcb, 0x0a, 0x4c, 0x05, 0x88, 0x74, 0x9d, 0x90, 0x28, 0x92, 0x9e, 0xce, 0xcf, 0xd8, 0xc2,
0x35, 0xbe, 0x4a, 0x90, 0x89, 0xfa, 0xa3, 0x9e, 0xb7, 0x8d, 0xfe, 0x9b, 0x8c, 0x3a, 0xcc, 0x74,
0x08, 0xde, 0x0c, 0x07, 0x3e, 0xda, 0xec, 0x06, 0x0e, 0x55, 0x33, 0x63, 0x43, 0x87, 0xe0, 0xe7,
0x03, 0x1f, 0xbd, 0x08, 0x9c, 0xca, 0xca, 0x45, 0xa9, 0x72, 0xe7, 0x27, 0x65, 0x84, 0x8d, 0x2c,
0xcc, 0xc5, 0x4e, 0x2c, 0xd6, 0x3b, 0x98, 0x89, 0x83, 0x55, 0xc7, 0xf9, 0x97, 0xa9, 0x2a, 0x0f,
0x0e, 0x77, 0x8b, 0xb3, 0xa7, 0x47, 0xea, 0x6b, 0xe6, 0xfd, 0xd2, 0x45, 0x4a, 0xf3, 0x49, 0x94,
0xaa, 0x8e, 0x63, 0xac, 0x42, 0xee, 0xac, 0x2f, 0x88, 0x55, 0xb2, 0x09, 0x4d, 0x8d, 0x97, 0x70,
0xab, 0x4e, 0xf0, 0xd3, 0xa0, 0xeb, 0xa2, 0x8d, 0xbe, 0xdf, 0x0e, 0x50, 0x8b, 0xae, 0x1e, 0x91,
0xd7, 0x60, 0xd2, 0x8f, 0xa2, 0xa3, 0x59, 0x73, 0x5c, 0x65, 0x3a, 0x62, 0xc8, 0x1d, 0x63, 0x19,
0x96, 0x12, 0xfb, 0x0a, 0x36, 0xe5, 0xdf, 0x69, 0x48, 0xd7, 0x09, 0x96, 0x9f, 0xc0, 0x04, 0xbb,
0xc4, 0x5a, 0xf2, 0x6d, 0x12, 0x97, 0x41, 0xbd, 0x7b, 0x75, 0x3e, 0xde, 0xb6, 0xc7, 0x30, 0x4e,
0x2f, 0xca, 0xd2, 0x50, 0x7c, 0x94, 0x56, 0x57, 0xae, 0x4c, 0xc7, 0xdd, 0x6c, 0x98, 0xe4, 0xdb,
0xb9, 0x3c, 0xb4, 0x80, 0x01, 0xd4, 0x7b, 0x23, 0x00, 0x71, 0x4f, 0x1f, 0x32, 0xa7, 0xeb, 0x61,
0x8c, 0xa8, 0xaa, 0x3a, 0x8e, 0x5a, 0x18, 0x8d, 0x89, 0xd7, 0x2f, 0xbb, 0x7f, 0x59, 0x65, 0xb9,
0x07, 0x72, 0x82, 0xc4, 0xab, 0x43, 0xdb, 0x5e, 0x06, 0xab, 0xeb, 0x7f, 0x01, 0x16, 0x64, 0xd4,
0x89, 0xf7, 0xd1, 0x03, 0x58, 0x2b, 0xef, 0xfd, 0xd2, 0x52, 0x7b, 0x47, 0x9a, 0x74, 0x70, 0xa4,
0x49, 0x3f, 0x8f, 0x34, 0xe9, 0xd3, 0xb1, 0x96, 0x3a, 0x38, 0xd6, 0x52, 0xdf, 0x8f, 0xb5, 0xd4,
0x2b, 0xbe, 0x55, 0xa4, 0xb5, 0x6d, 0xb6, 0x3d, 0xab, 0xcf, 0xfe, 0x12, 0x9a, 0x93, 0xf4, 0x75,
0x5a, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xe3, 0x6e, 0xfe, 0xb8, 0x06, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -428,6 +509,8 @@ type MsgClient interface {
// Revoke revokes any authorization corresponding to the provided method name on the
// granter's account that has been granted to the grantee.
Revoke(ctx context.Context, in *MsgRevoke, opts ...grpc.CallOption) (*MsgRevokeResponse, error)
// RevokeAll revokes all grants issued by the specified granter.
RevokeAll(ctx context.Context, in *MsgRevokeAll, opts ...grpc.CallOption) (*MsgRevokeAllResponse, error)
// PruneExpiredGrants prunes the expired grants. Currently up to 75 at a time.
//
// Since cosmos-sdk 0.51
@ -469,6 +552,15 @@ func (c *msgClient) Revoke(ctx context.Context, in *MsgRevoke, opts ...grpc.Call
return out, nil
}
func (c *msgClient) RevokeAll(ctx context.Context, in *MsgRevokeAll, opts ...grpc.CallOption) (*MsgRevokeAllResponse, error) {
out := new(MsgRevokeAllResponse)
err := c.cc.Invoke(ctx, "/cosmos.authz.v1beta1.Msg/RevokeAll", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *msgClient) PruneExpiredGrants(ctx context.Context, in *MsgPruneExpiredGrants, opts ...grpc.CallOption) (*MsgPruneExpiredGrantsResponse, error) {
out := new(MsgPruneExpiredGrantsResponse)
err := c.cc.Invoke(ctx, "/cosmos.authz.v1beta1.Msg/PruneExpiredGrants", in, out, opts...)
@ -492,6 +584,8 @@ type MsgServer interface {
// Revoke revokes any authorization corresponding to the provided method name on the
// granter's account that has been granted to the grantee.
Revoke(context.Context, *MsgRevoke) (*MsgRevokeResponse, error)
// RevokeAll revokes all grants issued by the specified granter.
RevokeAll(context.Context, *MsgRevokeAll) (*MsgRevokeAllResponse, error)
// PruneExpiredGrants prunes the expired grants. Currently up to 75 at a time.
//
// Since cosmos-sdk 0.51
@ -511,6 +605,9 @@ func (*UnimplementedMsgServer) Exec(ctx context.Context, req *MsgExec) (*MsgExec
func (*UnimplementedMsgServer) Revoke(ctx context.Context, req *MsgRevoke) (*MsgRevokeResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Revoke not implemented")
}
func (*UnimplementedMsgServer) RevokeAll(ctx context.Context, req *MsgRevokeAll) (*MsgRevokeAllResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RevokeAll not implemented")
}
func (*UnimplementedMsgServer) PruneExpiredGrants(ctx context.Context, req *MsgPruneExpiredGrants) (*MsgPruneExpiredGrantsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method PruneExpiredGrants not implemented")
}
@ -573,6 +670,24 @@ func _Msg_Revoke_Handler(srv interface{}, ctx context.Context, dec func(interfac
return interceptor(ctx, in, info, handler)
}
func _Msg_RevokeAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgRevokeAll)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).RevokeAll(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.authz.v1beta1.Msg/RevokeAll",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).RevokeAll(ctx, req.(*MsgRevokeAll))
}
return interceptor(ctx, in, info, handler)
}
func _Msg_PruneExpiredGrants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgPruneExpiredGrants)
if err := dec(in); err != nil {
@ -607,6 +722,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{
MethodName: "Revoke",
Handler: _Msg_Revoke_Handler,
},
{
MethodName: "RevokeAll",
Handler: _Msg_RevokeAll_Handler,
},
{
MethodName: "PruneExpiredGrants",
Handler: _Msg_PruneExpiredGrants_Handler,
@ -829,6 +948,59 @@ func (m *MsgRevokeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *MsgRevokeAll) 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 *MsgRevokeAll) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgRevokeAll) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Granter) > 0 {
i -= len(m.Granter)
copy(dAtA[i:], m.Granter)
i = encodeVarintTx(dAtA, i, uint64(len(m.Granter)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *MsgRevokeAllResponse) 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 *MsgRevokeAllResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MsgRevokeAllResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
return len(dAtA) - i, nil
}
func (m *MsgPruneExpiredGrants) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -985,6 +1157,28 @@ func (m *MsgRevokeResponse) Size() (n int) {
return n
}
func (m *MsgRevokeAll) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Granter)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
return n
}
func (m *MsgRevokeAllResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
return n
}
func (m *MsgPruneExpiredGrants) Size() (n int) {
if m == nil {
return 0
@ -1604,6 +1798,138 @@ func (m *MsgRevokeResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *MsgRevokeAll) 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: MsgRevokeAll: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgRevokeAll: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Granter", 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.Granter = string(dAtA[iNdEx:postIndex])
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 *MsgRevokeAllResponse) 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: MsgRevokeAllResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MsgRevokeAllResponse: 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 (m *MsgPruneExpiredGrants) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0