Remove the old message PublicKey proto oneof (#7390)

* Remove unused PublicKey type and update docs

* Update wording

* Update proto/cosmos/base/crypto/v1beta1/crypto.proto

Co-authored-by: Amaury Martiny <amaury.martiny@protonmail.com>

* Edit docs

* Move crypto.proto to multisig

* Proto linting

* Update docs/architecture/adr-020-protobuf-transaction-encoding.md

Co-authored-by: Amaury Martiny <amaury.martiny@protonmail.com>

* Update wording for Public Key Encoding

Co-authored-by: Amaury Martiny <amaury.martiny@protonmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Robert Zaremba <robert@zaremba.ch>
This commit is contained in:
Marie Gauthier 2020-09-29 12:01:54 +02:00 committed by GitHub
parent 5e1954439a
commit 489599b70f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 1318 additions and 2207 deletions

View File

@ -255,7 +255,7 @@ func TestPubKeyMultisigThresholdAminoToIface(t *testing.T) {
ab, err := kmultisig.AminoCdc.MarshalBinaryLengthPrefixed(multisigKey)
require.NoError(t, err)
// like other crypto.Pubkey implementations (e.g. ed25519.PubKeyMultisigThreshold),
// like other crypto.Pubkey implementations (e.g. ed25519.PubKey),
// LegacyAminoPubKey should be deserializable into a crypto.LegacyAminoPubKey:
var pubKey kmultisig.LegacyAminoPubKey
err = kmultisig.AminoCdc.UnmarshalBinaryLengthPrefixed(ab, &pubKey)

File diff suppressed because it is too large Load Diff

556
crypto/types/multisig.pb.go Normal file
View File

@ -0,0 +1,556 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: cosmos/crypto/multisig/v1beta1/multisig.proto
package types
import (
fmt "fmt"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
io "io"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
// MultiSignature wraps the signatures from a multisig.LegacyAminoPubKey.
// See cosmos.tx.v1betata1.ModeInfo.Multi for how to specify which signers
// signed and with which modes.
type MultiSignature struct {
Signatures [][]byte `protobuf:"bytes,1,rep,name=signatures,proto3" json:"signatures,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
func (m *MultiSignature) Reset() { *m = MultiSignature{} }
func (m *MultiSignature) String() string { return proto.CompactTextString(m) }
func (*MultiSignature) ProtoMessage() {}
func (*MultiSignature) Descriptor() ([]byte, []int) {
return fileDescriptor_1177bdf7025769be, []int{0}
}
func (m *MultiSignature) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *MultiSignature) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_MultiSignature.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 *MultiSignature) XXX_Merge(src proto.Message) {
xxx_messageInfo_MultiSignature.Merge(m, src)
}
func (m *MultiSignature) XXX_Size() int {
return m.Size()
}
func (m *MultiSignature) XXX_DiscardUnknown() {
xxx_messageInfo_MultiSignature.DiscardUnknown(m)
}
var xxx_messageInfo_MultiSignature proto.InternalMessageInfo
func (m *MultiSignature) GetSignatures() [][]byte {
if m != nil {
return m.Signatures
}
return nil
}
// CompactBitArray is an implementation of a space efficient bit array.
// This is used to ensure that the encoded data takes up a minimal amount of
// space after proto encoding.
// This is not thread safe, and is not intended for concurrent usage.
type CompactBitArray struct {
ExtraBitsStored uint32 `protobuf:"varint,1,opt,name=extra_bits_stored,json=extraBitsStored,proto3" json:"extra_bits_stored,omitempty"`
Elems []byte `protobuf:"bytes,2,opt,name=elems,proto3" json:"elems,omitempty"`
}
func (m *CompactBitArray) Reset() { *m = CompactBitArray{} }
func (*CompactBitArray) ProtoMessage() {}
func (*CompactBitArray) Descriptor() ([]byte, []int) {
return fileDescriptor_1177bdf7025769be, []int{1}
}
func (m *CompactBitArray) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *CompactBitArray) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_CompactBitArray.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 *CompactBitArray) XXX_Merge(src proto.Message) {
xxx_messageInfo_CompactBitArray.Merge(m, src)
}
func (m *CompactBitArray) XXX_Size() int {
return m.Size()
}
func (m *CompactBitArray) XXX_DiscardUnknown() {
xxx_messageInfo_CompactBitArray.DiscardUnknown(m)
}
var xxx_messageInfo_CompactBitArray proto.InternalMessageInfo
func (m *CompactBitArray) GetExtraBitsStored() uint32 {
if m != nil {
return m.ExtraBitsStored
}
return 0
}
func (m *CompactBitArray) GetElems() []byte {
if m != nil {
return m.Elems
}
return nil
}
func init() {
proto.RegisterType((*MultiSignature)(nil), "cosmos.crypto.multisig.v1beta1.MultiSignature")
proto.RegisterType((*CompactBitArray)(nil), "cosmos.crypto.multisig.v1beta1.CompactBitArray")
}
func init() {
proto.RegisterFile("cosmos/crypto/multisig/v1beta1/multisig.proto", fileDescriptor_1177bdf7025769be)
}
var fileDescriptor_1177bdf7025769be = []byte{
// 269 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x90, 0x31, 0x4f, 0x83, 0x50,
0x14, 0x85, 0x79, 0x5a, 0x1d, 0x5e, 0xaa, 0x8d, 0xa4, 0x03, 0x71, 0x78, 0x25, 0x9d, 0xd0, 0xa4,
0x90, 0xc6, 0xc4, 0xa1, 0x9b, 0x74, 0x76, 0xa1, 0x93, 0x2e, 0x0d, 0xd0, 0x17, 0x7c, 0xb1, 0x78,
0xc9, 0xbb, 0x17, 0x23, 0xff, 0xc2, 0xd1, 0x51, 0xff, 0x8d, 0x23, 0xa3, 0xa3, 0x81, 0x3f, 0x62,
0xfa, 0x90, 0xa6, 0xd3, 0xbd, 0xe7, 0x9c, 0xef, 0x0e, 0xf7, 0xf0, 0x59, 0x0a, 0x98, 0x03, 0x06,
0xa9, 0xae, 0x0a, 0x82, 0x20, 0x2f, 0xb7, 0xa4, 0x50, 0x65, 0xc1, 0xeb, 0x3c, 0x91, 0x14, 0xcf,
0xf7, 0x86, 0x5f, 0x68, 0x20, 0xb0, 0x45, 0x87, 0xfb, 0x1d, 0xee, 0xef, 0xd3, 0x7f, 0xfc, 0x72,
0x9c, 0x41, 0x06, 0x06, 0x0d, 0x76, 0x5b, 0x77, 0x35, 0xbd, 0xe5, 0xe7, 0xf7, 0x3b, 0x72, 0xa5,
0xb2, 0x97, 0x98, 0x4a, 0x2d, 0x6d, 0xc1, 0x39, 0xf6, 0x02, 0x1d, 0xe6, 0x1e, 0x7b, 0xc3, 0xe8,
0xc0, 0x59, 0x0c, 0xea, 0xaf, 0x09, 0x9b, 0x3e, 0xf0, 0xd1, 0x12, 0xf2, 0x22, 0x4e, 0x29, 0x54,
0x74, 0xa7, 0x75, 0x5c, 0xd9, 0xd7, 0xfc, 0x42, 0xbe, 0x91, 0x8e, 0xd7, 0x89, 0x22, 0x5c, 0x23,
0x81, 0x96, 0x1b, 0x87, 0xb9, 0xcc, 0x3b, 0x8b, 0x46, 0x26, 0x08, 0x15, 0xe1, 0xca, 0xd8, 0xf6,
0x98, 0x9f, 0xc8, 0xad, 0xcc, 0xd1, 0x39, 0x72, 0x99, 0x37, 0x8c, 0x3a, 0xb1, 0x18, 0x7c, 0x7c,
0x4e, 0xac, 0x70, 0xf9, 0xdd, 0x08, 0x56, 0x37, 0x82, 0xfd, 0x36, 0x82, 0xbd, 0xb7, 0xc2, 0xaa,
0x5b, 0x61, 0xfd, 0xb4, 0xc2, 0x7a, 0xbc, 0xca, 0x14, 0x3d, 0x95, 0x89, 0x9f, 0x42, 0x1e, 0xf4,
0xe5, 0x98, 0x31, 0xc3, 0xcd, 0x73, 0xdf, 0x13, 0x55, 0x85, 0xc4, 0xe4, 0xd4, 0xbc, 0x77, 0xf3,
0x17, 0x00, 0x00, 0xff, 0xff, 0xba, 0x52, 0xb5, 0x1f, 0x45, 0x01, 0x00, 0x00,
}
func (m *MultiSignature) 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 *MultiSignature) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *MultiSignature) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.XXX_unrecognized != nil {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
if len(m.Signatures) > 0 {
for iNdEx := len(m.Signatures) - 1; iNdEx >= 0; iNdEx-- {
i -= len(m.Signatures[iNdEx])
copy(dAtA[i:], m.Signatures[iNdEx])
i = encodeVarintMultisig(dAtA, i, uint64(len(m.Signatures[iNdEx])))
i--
dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
func (m *CompactBitArray) 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 *CompactBitArray) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *CompactBitArray) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Elems) > 0 {
i -= len(m.Elems)
copy(dAtA[i:], m.Elems)
i = encodeVarintMultisig(dAtA, i, uint64(len(m.Elems)))
i--
dAtA[i] = 0x12
}
if m.ExtraBitsStored != 0 {
i = encodeVarintMultisig(dAtA, i, uint64(m.ExtraBitsStored))
i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
func encodeVarintMultisig(dAtA []byte, offset int, v uint64) int {
offset -= sovMultisig(v)
base := offset
for v >= 1<<7 {
dAtA[offset] = uint8(v&0x7f | 0x80)
v >>= 7
offset++
}
dAtA[offset] = uint8(v)
return base
}
func (m *MultiSignature) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.Signatures) > 0 {
for _, b := range m.Signatures {
l = len(b)
n += 1 + l + sovMultisig(uint64(l))
}
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
return n
}
func (m *CompactBitArray) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.ExtraBitsStored != 0 {
n += 1 + sovMultisig(uint64(m.ExtraBitsStored))
}
l = len(m.Elems)
if l > 0 {
n += 1 + l + sovMultisig(uint64(l))
}
return n
}
func sovMultisig(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
func sozMultisig(x uint64) (n int) {
return sovMultisig(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (m *MultiSignature) 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 ErrIntOverflowMultisig
}
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: MultiSignature: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: MultiSignature: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Signatures", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowMultisig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthMultisig
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return ErrInvalidLengthMultisig
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Signatures = append(m.Signatures, make([]byte, postIndex-iNdEx))
copy(m.Signatures[len(m.Signatures)-1], dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipMultisig(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthMultisig
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthMultisig
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *CompactBitArray) 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 ErrIntOverflowMultisig
}
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: CompactBitArray: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: CompactBitArray: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ExtraBitsStored", wireType)
}
m.ExtraBitsStored = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowMultisig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.ExtraBitsStored |= uint32(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Elems", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowMultisig
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthMultisig
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return ErrInvalidLengthMultisig
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Elems = append(m.Elems[:0], dAtA[iNdEx:postIndex]...)
if m.Elems == nil {
m.Elems = []byte{}
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipMultisig(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthMultisig
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthMultisig
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipMultisig(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0
depth := 0
for iNdEx < l {
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowMultisig
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
wireType := int(wire & 0x7)
switch wireType {
case 0:
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowMultisig
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
iNdEx++
if dAtA[iNdEx-1] < 0x80 {
break
}
}
case 1:
iNdEx += 8
case 2:
var length int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowMultisig
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
length |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
if length < 0 {
return 0, ErrInvalidLengthMultisig
}
iNdEx += length
case 3:
depth++
case 4:
if depth == 0 {
return 0, ErrUnexpectedEndOfGroupMultisig
}
depth--
case 5:
iNdEx += 4
default:
return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
}
if iNdEx < 0 {
return 0, ErrInvalidLengthMultisig
}
if depth == 0 {
return iNdEx, nil
}
}
return 0, io.ErrUnexpectedEOF
}
var (
ErrInvalidLengthMultisig = fmt.Errorf("proto: negative length found during unmarshaling")
ErrIntOverflowMultisig = fmt.Errorf("proto: integer overflow")
ErrUnexpectedEndOfGroupMultisig = fmt.Errorf("proto: unexpected end of group")
)

View File

@ -10,6 +10,7 @@
- 2020 June 08: Store `TxBody` and `AuthInfo` as bytes in `SignDoc`; Document `TxRaw` as broadcast and storage type.
- 2020 August 07: Use ADR 027 for serializing `SignDoc`.
- 2020 August 19: Move sequence field from `SignDoc` to `SignerInfo`.
- 2020 September 25: Remove `PublicKey` type in favor of `secp256k1.PubKey`, `ed25519.PubKey` and `multisig.LegacyAminoPubKey`.
## Status
@ -284,27 +285,21 @@ and `FileDescriptor`s and returns a boolean result.
### Public Key Encoding
Public keys in the Cosmos SDK implement Tendermint's `crypto.PubKey` interface,
so a natural solution might be to use `Any` as we are doing for other interfaces.
There are, however, a limited number of public keys in existence and new ones
aren't created overnight. The proposed solution is to use a `oneof` that:
- attempts to catalog all known key types even if a given app can't use them all
- has an `Any` member that can be used when a key type isn't present in the `oneof`
Public keys in the Cosmos SDK implement Tendermint's `crypto.PubKey` interface.
We propose to use `Any` for protobuf encoding as we are doing with other interfaces (e.g. in `BaseAccount` `PubKey` or `SignerInfo` `PublicKey`).
Following public keys are implemented: secp256k1, ed25519 and multisignature.
Ex:
```proto
message PublicKey {
oneof sum {
bytes secp256k1 = 1;
bytes ed25519 = 2;
...
google.protobuf.Any any_pubkey = 15;
}
message PubKey {
bytes key = 1;
}
```
`multisig.LegacyAminoPubKey` has an array of `Any`'s member to support any
protobuf public key type.
Apps should only attempt to handle a registered set of public keys that they
have tested. The provided signature verification ante handler decorators will
enforce this.

View File

@ -1,49 +0,0 @@
syntax = "proto3";
package cosmos.base.crypto.v1beta1;
import "gogoproto/gogo.proto";
import "google/protobuf/any.proto";
option go_package = "github.com/cosmos/cosmos-sdk/crypto/types";
// PublicKey specifies a public key
message PublicKey {
// sum specifies which type of public key is wrapped
oneof sum {
bytes secp256k1 = 1;
bytes ed25519 = 2;
bytes sr25519 = 3;
PubKeyMultisigThreshold multisig = 4;
bytes secp256r1 = 5;
// any_pubkey can be used for any pubkey that an app may use which is
// not explicitly defined in the oneof
google.protobuf.Any any_pubkey = 15; // 15 is largest field that occupies one byte
}
}
// PubKeyMultisigThreshold specifies a public key type which nests multiple
// public keys and a threshold
message PubKeyMultisigThreshold {
uint32 threshold = 1 [(gogoproto.customname) = "K", (gogoproto.moretags) = "yaml:\"threshold\""];
repeated PublicKey public_keys = 2 [(gogoproto.customname) = "PubKeys", (gogoproto.moretags) = "yaml:\"pubkeys\""];
}
// MultiSignature wraps the signatures from a PubKeyMultisigThreshold.
// See cosmos.tx.v1betata1.ModeInfo.Multi for how to specify which signers
// signed and with which modes.
message MultiSignature {
option (gogoproto.goproto_unrecognized) = true;
repeated bytes signatures = 1;
}
// CompactBitArray is an implementation of a space efficient bit array.
// This is used to ensure that the encoded data takes up a minimal amount of
// space after proto encoding.
// This is not thread safe, and is not intended for concurrent usage.
message CompactBitArray {
option (gogoproto.goproto_stringer) = false;
uint32 extra_bits_stored = 1;
bytes elems = 2;
}

View File

@ -0,0 +1,25 @@
syntax = "proto3";
package cosmos.crypto.multisig.v1beta1;
import "gogoproto/gogo.proto";
option go_package = "github.com/cosmos/cosmos-sdk/crypto/types";
// MultiSignature wraps the signatures from a multisig.LegacyAminoPubKey.
// See cosmos.tx.v1betata1.ModeInfo.Multi for how to specify which signers
// signed and with which modes.
message MultiSignature {
option (gogoproto.goproto_unrecognized) = true;
repeated bytes signatures = 1;
}
// CompactBitArray is an implementation of a space efficient bit array.
// This is used to ensure that the encoded data takes up a minimal amount of
// space after proto encoding.
// This is not thread safe, and is not intended for concurrent usage.
message CompactBitArray {
option (gogoproto.goproto_stringer) = false;
uint32 extra_bits_stored = 1;
bytes elems = 2;
}

View File

@ -1,7 +1,7 @@
syntax = "proto3";
package cosmos.tx.signing.v1beta1;
import "cosmos/base/crypto/v1beta1/crypto.proto";
import "cosmos/crypto/multisig/v1beta1/multisig.proto";
import "google/protobuf/any.proto";
option go_package = "github.com/cosmos/cosmos-sdk/types/tx/signing";
@ -70,7 +70,7 @@ message SignatureDescriptor {
// Multi is the signature data for a multisig public key
message Multi {
// bitarray specifies which keys within the multisig are signing
cosmos.base.crypto.v1beta1.CompactBitArray bitarray = 1;
cosmos.crypto.multisig.v1beta1.CompactBitArray bitarray = 1;
// signatures is the signatures of the multi-signature
repeated Data signatures = 2;

View File

@ -2,7 +2,7 @@ syntax = "proto3";
package cosmos.tx.v1beta1;
import "gogoproto/gogo.proto";
import "cosmos/base/crypto/v1beta1/crypto.proto";
import "cosmos/crypto/multisig/v1beta1/multisig.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/tx/signing/v1beta1/signing.proto";
import "google/protobuf/any.proto";
@ -150,7 +150,7 @@ message ModeInfo {
// Multi is the mode info for a multisig public key
message Multi {
// bitarray specifies which keys within the multisig are signing
cosmos.base.crypto.v1beta1.CompactBitArray bitarray = 1;
cosmos.crypto.multisig.v1beta1.CompactBitArray bitarray = 1;
// mode_infos is the corresponding modes of the signers of the multisig
// which could include nested multisig public keys

View File

@ -3,7 +3,6 @@ package ibc.lightclients.solomachine.v1;
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/light-clients/solomachine/types";
import "cosmos/base/crypto/v1beta1/crypto.proto";
import "ibc/connection/connection.proto";
import "ibc/channel/channel.proto";
import "gogoproto/gogo.proto";

View File

@ -391,41 +391,41 @@ func init() {
}
var fileDescriptor_9a54958ff3d0b1b9 = []byte{
// 543 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcd, 0x6e, 0xd3, 0x40,
0x10, 0xc7, 0xed, 0x26, 0xad, 0xd2, 0x29, 0x42, 0x61, 0x49, 0xa5, 0xc4, 0x20, 0x13, 0x95, 0x03,
0x11, 0xa8, 0x6b, 0x35, 0x39, 0x20, 0xb8, 0xe5, 0xc3, 0xa4, 0x81, 0x26, 0x01, 0x3b, 0x95, 0x80,
0x8b, 0x65, 0x3b, 0x5b, 0x63, 0x35, 0xf6, 0x1a, 0xef, 0x1a, 0xd5, 0x27, 0x5e, 0x81, 0x97, 0xe0,
0x39, 0xb8, 0x72, 0xec, 0x91, 0x23, 0x4a, 0x9e, 0x80, 0x37, 0x40, 0xf1, 0x47, 0x12, 0xa4, 0x22,
0x44, 0x4e, 0xd1, 0xcc, 0xfc, 0xe7, 0x37, 0xff, 0xd5, 0x4c, 0x0c, 0x8f, 0x6c, 0xca, 0x3c, 0xca,
0x14, 0x7e, 0xa5, 0x30, 0xd7, 0xf1, 0x5d, 0xdf, 0x51, 0x3e, 0x9d, 0x58, 0x84, 0x9b, 0x27, 0x79,
0x8c, 0x83, 0x90, 0x72, 0x8a, 0x6a, 0xa9, 0x10, 0xf3, 0x2b, 0x9c, 0x17, 0x32, 0xa1, 0x94, 0x33,
0x2c, 0x93, 0x11, 0xc5, 0x0e, 0xe3, 0x80, 0xd3, 0x15, 0x24, 0x0d, 0x53, 0x86, 0x54, 0x73, 0x28,
0x75, 0x66, 0x44, 0x49, 0x22, 0x2b, 0xba, 0x50, 0x4c, 0x3f, 0x4e, 0x4b, 0x47, 0x17, 0x50, 0xd1,
0x5d, 0xc7, 0x37, 0x79, 0x14, 0x92, 0x1e, 0x61, 0x76, 0xe8, 0x06, 0x9c, 0x86, 0x0c, 0x8d, 0x00,
0x58, 0x9e, 0x67, 0x55, 0xb1, 0x5e, 0x68, 0x1c, 0x34, 0x31, 0xfe, 0xab, 0x17, 0x7c, 0x03, 0x44,
0xdb, 0x20, 0x1c, 0xfd, 0x2a, 0xc2, 0xdd, 0x1b, 0x34, 0xa8, 0x05, 0x10, 0x44, 0xd6, 0xcc, 0xb5,
0x8d, 0x4b, 0x12, 0x57, 0xc5, 0xba, 0xd8, 0x38, 0x68, 0x56, 0x70, 0xea, 0x17, 0xe7, 0x7e, 0x71,
0xdb, 0x8f, 0xb5, 0xfd, 0x54, 0xf7, 0x8a, 0xc4, 0xa8, 0x0f, 0xc5, 0xa9, 0xc9, 0xcd, 0xea, 0x4e,
0x22, 0x6f, 0xfd, 0x9f, 0x2d, 0xdc, 0x33, 0xb9, 0xa9, 0x25, 0x00, 0x24, 0x41, 0x89, 0x91, 0x8f,
0x11, 0xf1, 0x6d, 0x52, 0x2d, 0xd4, 0xc5, 0x46, 0x51, 0x5b, 0xc5, 0xd2, 0xb7, 0x02, 0x14, 0x97,
0x52, 0x34, 0x81, 0x3d, 0xe6, 0xfa, 0xce, 0x8c, 0x64, 0xf6, 0x9e, 0x6f, 0x31, 0x0f, 0xeb, 0x09,
0xe1, 0x54, 0xd0, 0x32, 0x16, 0x7a, 0x03, 0xbb, 0x5e, 0x34, 0xe3, 0x6e, 0xf6, 0x88, 0x67, 0xdb,
0x40, 0x87, 0x4b, 0xc0, 0xa9, 0xa0, 0xa5, 0x24, 0xc9, 0x80, 0xbd, 0x74, 0x0c, 0x7a, 0x0a, 0x45,
0x8f, 0x4e, 0x53, 0xc3, 0xb7, 0x9b, 0x0f, 0xff, 0xc1, 0x1e, 0xd2, 0x29, 0xd1, 0x92, 0x06, 0x74,
0x1f, 0xf6, 0x57, 0x4b, 0x4b, 0x9c, 0xdd, 0xd2, 0xd6, 0x09, 0xe9, 0xab, 0x08, 0xbb, 0xc9, 0x4c,
0xd4, 0x87, 0x92, 0xe5, 0x72, 0x33, 0x0c, 0xcd, 0x7c, 0x69, 0x4f, 0xf2, 0x21, 0xcb, 0x6b, 0xc4,
0xd9, 0xf9, 0xe5, 0x53, 0xba, 0xd4, 0x0b, 0x4c, 0x9b, 0x77, 0x5c, 0xde, 0x5e, 0xb6, 0x68, 0xab,
0x66, 0xa4, 0xff, 0x71, 0x67, 0x3b, 0xc9, 0x9d, 0x6d, 0xb5, 0xd0, 0x0d, 0x4c, 0x67, 0x17, 0x0a,
0x2c, 0xf2, 0x1e, 0x33, 0x28, 0xe5, 0xcf, 0x43, 0x35, 0x38, 0xd4, 0x07, 0xfd, 0x91, 0x31, 0x1c,
0xf7, 0x54, 0xe3, 0x7c, 0xa4, 0xbf, 0x56, 0xbb, 0x83, 0x17, 0x03, 0xb5, 0x57, 0x16, 0x50, 0x05,
0xca, 0xeb, 0x52, 0x6f, 0xa0, 0xa9, 0xdd, 0x49, 0x59, 0x44, 0x87, 0x70, 0x67, 0x9d, 0x9d, 0xa8,
0x6f, 0x27, 0xe7, 0xed, 0xb3, 0xf2, 0x0e, 0x7a, 0x00, 0xf7, 0xd6, 0xe9, 0x33, 0xb5, 0xdf, 0xee,
0xbe, 0x33, 0xda, 0xc3, 0xc1, 0x68, 0x6c, 0xbc, 0xd4, 0xc7, 0xa3, 0xf2, 0xe7, 0x4e, 0xff, 0xfb,
0x5c, 0x16, 0xaf, 0xe7, 0xb2, 0xf8, 0x73, 0x2e, 0x8b, 0x5f, 0x16, 0xb2, 0x70, 0xbd, 0x90, 0x85,
0x1f, 0x0b, 0x59, 0x78, 0x7f, 0xec, 0xb8, 0xfc, 0x43, 0x64, 0x61, 0x9b, 0x7a, 0x4a, 0xf6, 0xcf,
0x4d, 0x7f, 0x8e, 0xd9, 0xf4, 0x52, 0xe1, 0x71, 0x40, 0x36, 0x3f, 0x07, 0xd6, 0x5e, 0x72, 0xfd,
0xad, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x38, 0x12, 0x3c, 0x2a, 0x04, 0x00, 0x00,
// 544 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcf, 0x6e, 0xd3, 0x40,
0x10, 0xc6, 0xed, 0x26, 0x8d, 0xd2, 0x29, 0x42, 0x61, 0x49, 0xa5, 0xc4, 0x20, 0x13, 0x95, 0x03,
0x11, 0x52, 0xd6, 0x6a, 0x72, 0x40, 0x70, 0xcb, 0x1f, 0x93, 0x86, 0x36, 0x09, 0xd8, 0xa9, 0x04,
0x5c, 0x2c, 0xdb, 0xd9, 0x1a, 0xab, 0xb1, 0xd7, 0x78, 0xd7, 0xa8, 0x3e, 0xf1, 0x0a, 0xbc, 0x06,
0xcf, 0xc1, 0x85, 0x63, 0x8f, 0x1c, 0x51, 0xf2, 0x0c, 0xdc, 0x51, 0xec, 0x38, 0x09, 0x52, 0x11,
0x22, 0x27, 0x6b, 0x66, 0xbe, 0xfd, 0xcd, 0xb7, 0x9a, 0x59, 0xc3, 0x13, 0x9b, 0x32, 0x8f, 0x32,
0x85, 0x5f, 0x2b, 0xcc, 0x75, 0x7c, 0xd7, 0x77, 0x94, 0x4f, 0x27, 0x16, 0xe1, 0xe6, 0x49, 0x16,
0xe3, 0x20, 0xa4, 0x9c, 0xa2, 0x6a, 0x2a, 0xc4, 0xfc, 0x1a, 0x67, 0x85, 0x95, 0x50, 0x6a, 0xac,
0x18, 0x76, 0x18, 0x07, 0x9c, 0x2a, 0x5e, 0x34, 0xe3, 0x2e, 0x73, 0x37, 0xa0, 0x2c, 0x91, 0x92,
0xa4, 0xaa, 0x43, 0xa9, 0x33, 0x23, 0x4a, 0x12, 0x59, 0xd1, 0xa5, 0x62, 0xfa, 0x71, 0x5a, 0x3a,
0xbe, 0x84, 0xb2, 0xee, 0x3a, 0xbe, 0xc9, 0xa3, 0x90, 0xf4, 0x08, 0xb3, 0x43, 0x37, 0xe0, 0x34,
0x64, 0x68, 0x04, 0xc0, 0xb2, 0x3c, 0xab, 0x88, 0xb5, 0x5c, 0xfd, 0xb0, 0x89, 0xf1, 0x5f, 0x1d,
0xe1, 0x5b, 0x20, 0xda, 0x16, 0xe1, 0xf8, 0x57, 0x1e, 0xee, 0xdf, 0xa2, 0x41, 0x2d, 0x80, 0x20,
0xb2, 0x66, 0xae, 0x6d, 0x5c, 0x91, 0xb8, 0x22, 0xd6, 0xc4, 0xfa, 0x61, 0xb3, 0x8c, 0x53, 0xbf,
0x38, 0xf3, 0x8b, 0xdb, 0x7e, 0xac, 0x1d, 0xa4, 0xba, 0x33, 0x12, 0xa3, 0x3e, 0xe4, 0xa7, 0x26,
0x37, 0x2b, 0x7b, 0x89, 0xbc, 0xf5, 0x7f, 0xb6, 0x70, 0xcf, 0xe4, 0xa6, 0x96, 0x00, 0x90, 0x04,
0x45, 0x46, 0x3e, 0x46, 0xc4, 0xb7, 0x49, 0x25, 0x57, 0x13, 0xeb, 0x79, 0x6d, 0x1d, 0x4b, 0xdf,
0x72, 0x90, 0x5f, 0x4a, 0xd1, 0x04, 0x0a, 0xcc, 0xf5, 0x9d, 0x19, 0x59, 0xd9, 0x7b, 0xb1, 0x43,
0x3f, 0xac, 0x27, 0x84, 0x53, 0x41, 0x5b, 0xb1, 0xd0, 0x1b, 0xd8, 0x4f, 0xa6, 0xb4, 0xba, 0xc4,
0xf3, 0x5d, 0xa0, 0xc3, 0x25, 0xe0, 0x54, 0xd0, 0x52, 0x92, 0x64, 0x40, 0x21, 0x6d, 0x83, 0x9e,
0x41, 0xde, 0xa3, 0xd3, 0xd4, 0xf0, 0xdd, 0xe6, 0xe3, 0x7f, 0xb0, 0x87, 0x74, 0x4a, 0xb4, 0xe4,
0x00, 0x7a, 0x08, 0x07, 0xeb, 0xa1, 0x25, 0xce, 0xee, 0x68, 0x9b, 0x84, 0xf4, 0x55, 0x84, 0xfd,
0xa4, 0x27, 0x3a, 0x83, 0xa2, 0xe5, 0x72, 0x33, 0x0c, 0xcd, 0x6c, 0x68, 0x4a, 0xd6, 0x24, 0xdd,
0x49, 0xbc, 0x5e, 0xc1, 0xac, 0x53, 0x97, 0x7a, 0x81, 0x69, 0xf3, 0x8e, 0xcb, 0xdb, 0xcb, 0x63,
0xda, 0x1a, 0x80, 0xf4, 0x3f, 0x76, 0x6d, 0x2f, 0xd9, 0xb5, 0x9d, 0x86, 0xba, 0x85, 0xe9, 0xec,
0x43, 0x8e, 0x45, 0xde, 0x53, 0x06, 0xc5, 0xec, 0x8a, 0xa8, 0x0a, 0x47, 0xfa, 0xa0, 0x3f, 0x32,
0x86, 0xe3, 0x9e, 0x6a, 0x5c, 0x8c, 0xf4, 0xd7, 0x6a, 0x77, 0xf0, 0x72, 0xa0, 0xf6, 0x4a, 0x02,
0x2a, 0x43, 0x69, 0x53, 0xea, 0x0d, 0x34, 0xb5, 0x3b, 0x29, 0x89, 0xe8, 0x08, 0xee, 0x6d, 0xb2,
0x13, 0xf5, 0xed, 0xe4, 0xa2, 0x7d, 0x5e, 0xda, 0x43, 0x8f, 0xe0, 0xc1, 0x26, 0x7d, 0xae, 0xf6,
0xdb, 0xdd, 0x77, 0x46, 0x7b, 0x38, 0x18, 0x8d, 0x8d, 0x57, 0xfa, 0x78, 0x54, 0xfa, 0xdc, 0xe9,
0x7f, 0x9f, 0xcb, 0xe2, 0xcd, 0x5c, 0x16, 0x7f, 0xce, 0x65, 0xf1, 0xcb, 0x42, 0x16, 0x6e, 0x16,
0xb2, 0xf0, 0x63, 0x21, 0x0b, 0xef, 0x1b, 0x8e, 0xcb, 0x3f, 0x44, 0x16, 0xb6, 0xa9, 0xa7, 0x64,
0x6f, 0x38, 0xf9, 0x34, 0xd8, 0xf4, 0x4a, 0xe1, 0x71, 0x40, 0xb6, 0x7f, 0x0c, 0x56, 0x21, 0x79,
0x01, 0xad, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x86, 0x87, 0x55, 0xbf, 0x34, 0x04, 0x00, 0x00,
}
func (m *SignatureDescriptors) Marshal() (dAtA []byte, err error) {

View File

@ -737,59 +737,59 @@ func init() {
func init() { proto.RegisterFile("cosmos/tx/v1beta1/tx.proto", fileDescriptor_96d1575ffde80842) }
var fileDescriptor_96d1575ffde80842 = []byte{
// 817 bytes of a gzipped FileDescriptorProto
// 821 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x6f, 0xdc, 0x44,
0x14, 0x5f, 0xaf, 0x37, 0x1b, 0xef, 0x4b, 0xd2, 0xd2, 0x51, 0x85, 0x36, 0x1b, 0xd5, 0x0d, 0x46,
0x85, 0x95, 0x50, 0xed, 0x36, 0x3d, 0xf0, 0x47, 0x48, 0x90, 0x2d, 0x94, 0x54, 0x50, 0x90, 0x26,
0x39, 0xf5, 0x62, 0x8d, 0xbd, 0x13, 0xef, 0xa8, 0xeb, 0x99, 0xc5, 0x33, 0x2e, 0xde, 0x4f, 0xc0,
0x05, 0x24, 0x84, 0x84, 0xf8, 0x0e, 0x7c, 0x92, 0x1e, 0x7b, 0xe4, 0x80, 0x00, 0x25, 0x1f, 0x04,
0x34, 0xe3, 0xb1, 0x1b, 0xc2, 0x2a, 0x7b, 0xe9, 0xc9, 0xf3, 0xde, 0xfc, 0x7e, 0xbf, 0xf7, 0xfc,
0xfe, 0x0c, 0x8c, 0x52, 0x21, 0x73, 0x21, 0x23, 0x55, 0x45, 0xcf, 0xef, 0x27, 0x54, 0x91, 0xfb,
0x91, 0xaa, 0xc2, 0x45, 0x21, 0x94, 0x40, 0x37, 0xea, 0xbb, 0x50, 0x55, 0xa1, 0xbd, 0x1b, 0xdd,
0xcc, 0x44, 0x26, 0xcc, 0x6d, 0xa4, 0x4f, 0x35, 0x70, 0xf4, 0xae, 0x15, 0x49, 0x88, 0xa4, 0x51,
0x5a, 0x2c, 0x17, 0x4a, 0xb4, 0x6a, 0xb5, 0x69, 0x81, 0xfe, 0x45, 0x60, 0x8b, 0x10, 0x8c, 0x5f,
0x12, 0x52, 0x55, 0x24, 0x59, 0xc6, 0x19, 0xcf, 0x5a, 0x94, 0xb5, 0x2d, 0x70, 0x37, 0x13, 0x22,
0x9b, 0xd3, 0xc8, 0x58, 0x49, 0x79, 0x1a, 0x11, 0xbe, 0xac, 0xaf, 0x82, 0x1f, 0x1d, 0xe8, 0x9e,
0x54, 0xe8, 0x2e, 0xf4, 0x12, 0x31, 0x5d, 0x0e, 0x9d, 0x7d, 0x67, 0xbc, 0x75, 0xb0, 0x1b, 0xfe,
0xef, 0x5f, 0xc2, 0x93, 0x6a, 0x22, 0xa6, 0x4b, 0x6c, 0x60, 0xe8, 0x03, 0x18, 0x90, 0x52, 0xcd,
0x62, 0xc6, 0x4f, 0xc5, 0xb0, 0x6b, 0x38, 0x7b, 0x2b, 0x38, 0x87, 0xa5, 0x9a, 0x3d, 0xe6, 0xa7,
0x02, 0x7b, 0xc4, 0x9e, 0x90, 0x0f, 0xa0, 0x73, 0x23, 0xaa, 0x2c, 0xa8, 0x1c, 0xba, 0xfb, 0xee,
0x78, 0x1b, 0x5f, 0xf0, 0x04, 0x1c, 0x36, 0x4e, 0x2a, 0x4c, 0xbe, 0x43, 0xb7, 0x00, 0x74, 0xa8,
0x38, 0x59, 0x2a, 0x2a, 0x4d, 0x5e, 0xdb, 0x78, 0xa0, 0x3d, 0x13, 0xed, 0x40, 0xef, 0xc0, 0xf5,
0x36, 0x03, 0x8b, 0xe9, 0x1a, 0xcc, 0x4e, 0x13, 0xaa, 0xc6, 0xad, 0x8b, 0xf7, 0xb3, 0x03, 0x9b,
0xc7, 0x2c, 0xe3, 0x9f, 0x89, 0xf4, 0x75, 0x85, 0xdc, 0x05, 0x2f, 0x9d, 0x11, 0xc6, 0x63, 0x36,
0x1d, 0xba, 0xfb, 0xce, 0x78, 0x80, 0x37, 0x8d, 0xfd, 0x78, 0x8a, 0xee, 0xc0, 0x35, 0x92, 0xa6,
0xa2, 0xe4, 0x2a, 0xe6, 0x65, 0x9e, 0xd0, 0x62, 0xd8, 0xdb, 0x77, 0xc6, 0x3d, 0xbc, 0x63, 0xbd,
0x5f, 0x1b, 0x67, 0xf0, 0x4b, 0x17, 0xfa, 0x75, 0xbd, 0xd1, 0x3d, 0xf0, 0x72, 0x2a, 0x25, 0xc9,
0x4c, 0x46, 0xee, 0x78, 0xeb, 0xe0, 0x66, 0x58, 0x77, 0x33, 0x6c, 0xba, 0x19, 0x1e, 0xf2, 0x25,
0x6e, 0x51, 0x08, 0x41, 0x2f, 0xa7, 0x79, 0xdd, 0x96, 0x01, 0x36, 0x67, 0x1d, 0x57, 0xb1, 0x9c,
0x8a, 0x52, 0xc5, 0x33, 0xca, 0xb2, 0x99, 0x32, 0x89, 0xf5, 0xf0, 0x8e, 0xf5, 0x1e, 0x19, 0x27,
0x9a, 0xc0, 0x0d, 0x5a, 0x29, 0xca, 0x25, 0x13, 0x3c, 0x16, 0x0b, 0xc5, 0x04, 0x97, 0xc3, 0x7f,
0x36, 0xaf, 0x08, 0xfb, 0x46, 0x8b, 0xff, 0xa6, 0x86, 0xa3, 0xa7, 0xe0, 0x73, 0xc1, 0xe3, 0xb4,
0x60, 0x8a, 0xa5, 0x64, 0x1e, 0xaf, 0x10, 0xbc, 0x7e, 0x85, 0xe0, 0x1e, 0x17, 0xfc, 0xa1, 0xe5,
0x7e, 0x7e, 0x49, 0x3b, 0x78, 0x0e, 0x5e, 0x33, 0x52, 0xe8, 0x53, 0xd8, 0xd6, 0x6d, 0xa4, 0x85,
0xe9, 0x47, 0x53, 0x9c, 0x5b, 0x2b, 0xa6, 0xf0, 0xd8, 0xc0, 0xcc, 0x1c, 0x6e, 0xc9, 0xf6, 0x2c,
0xd1, 0x18, 0xdc, 0x53, 0x4a, 0xed, 0xf8, 0xbe, 0xb9, 0x82, 0xf8, 0x88, 0x52, 0xac, 0x21, 0xc1,
0xaf, 0x0e, 0xc0, 0x2b, 0x15, 0xf4, 0x00, 0x60, 0x51, 0x26, 0x73, 0x96, 0xc6, 0xcf, 0x68, 0xb3,
0x32, 0xab, 0xff, 0x66, 0x50, 0xe3, 0xbe, 0xa4, 0x66, 0x65, 0x72, 0x31, 0xa5, 0xeb, 0x56, 0xe6,
0x89, 0x98, 0xd2, 0x7a, 0x65, 0x72, 0x7b, 0x42, 0x23, 0xf0, 0x24, 0xfd, 0xb6, 0xa4, 0x3c, 0xa5,
0xb6, 0x6d, 0xad, 0x1d, 0xfc, 0xd1, 0x05, 0xaf, 0xa1, 0xa0, 0x8f, 0xa1, 0x2f, 0x19, 0xcf, 0xe6,
0xd4, 0xe6, 0x14, 0x5c, 0xa1, 0x1f, 0x1e, 0x1b, 0xe4, 0x51, 0x07, 0x5b, 0x0e, 0xfa, 0x10, 0x36,
0xf2, 0x72, 0xae, 0x98, 0x4d, 0xee, 0xad, 0xab, 0xc8, 0x4f, 0x34, 0xf0, 0xa8, 0x83, 0x6b, 0xc6,
0xe8, 0x10, 0xfa, 0xb5, 0x1c, 0x7a, 0x1f, 0x7a, 0x3a, 0x6f, 0x93, 0xc0, 0xb5, 0x83, 0xb7, 0x2f,
0x68, 0x34, 0x2f, 0xd2, 0xc5, 0xae, 0x68, 0x3d, 0x6c, 0x08, 0xa3, 0x1f, 0x1c, 0xd8, 0x30, 0xaa,
0xe8, 0x0b, 0xf0, 0x12, 0xa6, 0x48, 0x51, 0x90, 0xa6, 0xb6, 0xef, 0x35, 0x32, 0xfa, 0x21, 0x0c,
0xed, 0x13, 0xd9, 0xe8, 0x3c, 0x14, 0xf9, 0x82, 0xa4, 0x6a, 0xc2, 0xd4, 0xa1, 0xa6, 0xe0, 0x96,
0x8c, 0x3e, 0x02, 0x68, 0x2b, 0xae, 0x57, 0xd5, 0x5d, 0x57, 0xf2, 0x41, 0x53, 0x72, 0x39, 0xd9,
0x00, 0x57, 0x96, 0x79, 0xf0, 0xbd, 0x03, 0xee, 0x23, 0x4a, 0x51, 0x0a, 0x7d, 0x92, 0xeb, 0x05,
0xb5, 0x63, 0xb6, 0xfb, 0x9f, 0x8c, 0x5e, 0xa5, 0xc2, 0xf8, 0xe4, 0xde, 0x8b, 0x3f, 0x6f, 0x77,
0x7e, 0xfb, 0xeb, 0xf6, 0x38, 0x63, 0x6a, 0x56, 0x26, 0x61, 0x2a, 0xf2, 0xc8, 0xbe, 0xd3, 0xf5,
0xe7, 0xae, 0x9c, 0x3e, 0x8b, 0xd4, 0x72, 0x41, 0xa5, 0x21, 0x48, 0x6c, 0xa5, 0xd1, 0x1e, 0x0c,
0x32, 0x22, 0xe3, 0x39, 0xcb, 0x99, 0x32, 0x4d, 0xe8, 0x61, 0x2f, 0x23, 0xf2, 0x2b, 0x6d, 0x4f,
0x3e, 0x79, 0x71, 0xe6, 0x3b, 0x2f, 0xcf, 0x7c, 0xe7, 0xef, 0x33, 0xdf, 0xf9, 0xe9, 0xdc, 0xef,
0xbc, 0x3c, 0xf7, 0x3b, 0xbf, 0x9f, 0xfb, 0x9d, 0xa7, 0x77, 0xd6, 0x07, 0x8a, 0x54, 0x95, 0xf4,
0xcd, 0x60, 0x3e, 0xf8, 0x37, 0x00, 0x00, 0xff, 0xff, 0x29, 0x4f, 0x1c, 0xdf, 0xc3, 0x06, 0x00,
0x00,
0x85, 0xbd, 0xc4, 0x6e, 0xd3, 0x03, 0x7f, 0x84, 0x04, 0xd9, 0x42, 0x95, 0xaa, 0x14, 0xa4, 0x49,
0x4e, 0xbd, 0x58, 0x63, 0xef, 0xc4, 0x3b, 0xea, 0x7a, 0x66, 0xf1, 0x8c, 0x8b, 0xf7, 0x13, 0x70,
0x42, 0xaa, 0x90, 0x10, 0xdf, 0x81, 0x4f, 0xd2, 0x63, 0x8f, 0x9c, 0x20, 0x4a, 0x3e, 0x08, 0x68,
0xc6, 0x63, 0x27, 0x82, 0x55, 0xf6, 0xc2, 0xc9, 0x33, 0x6f, 0x7e, 0xef, 0xf7, 0x7e, 0x7e, 0xff,
0x60, 0x94, 0x0a, 0x99, 0x0b, 0x19, 0xa9, 0x2a, 0x7a, 0xfd, 0x28, 0xa1, 0x8a, 0x3c, 0x8a, 0x54,
0x15, 0x2e, 0x0a, 0xa1, 0x04, 0xba, 0x53, 0xbf, 0x85, 0xaa, 0x0a, 0xed, 0xdb, 0xe8, 0x6e, 0x26,
0x32, 0x61, 0x5e, 0x23, 0x7d, 0xaa, 0x81, 0xa3, 0x03, 0x4b, 0x92, 0x16, 0xcb, 0x85, 0x12, 0x51,
0x5e, 0xce, 0x15, 0x93, 0x2c, 0x6b, 0x19, 0x1b, 0x83, 0x85, 0xfb, 0x16, 0x9e, 0x10, 0x49, 0x5b,
0x4c, 0x2a, 0x18, 0xb7, 0xef, 0x1f, 0x5f, 0x69, 0x92, 0x2c, 0xe3, 0x8c, 0x5f, 0x31, 0xd9, 0xbb,
0x05, 0xee, 0x66, 0x42, 0x64, 0x73, 0x1a, 0x99, 0x5b, 0x52, 0x9e, 0x45, 0x84, 0x2f, 0xeb, 0xa7,
0xe0, 0x67, 0x07, 0xba, 0xa7, 0x15, 0x3a, 0x80, 0x5e, 0x22, 0xa6, 0xcb, 0xa1, 0xb3, 0xef, 0x8c,
0xb7, 0x0e, 0x77, 0xc3, 0xff, 0xfc, 0x51, 0x78, 0x5a, 0x4d, 0xc4, 0x74, 0x89, 0x0d, 0x0c, 0x7d,
0x0a, 0x03, 0x52, 0xaa, 0x59, 0xcc, 0xf8, 0x99, 0x18, 0x76, 0x8d, 0xcf, 0xde, 0x0a, 0x9f, 0xa3,
0x52, 0xcd, 0x9e, 0xf1, 0x33, 0x81, 0x3d, 0x62, 0x4f, 0xc8, 0x07, 0xd0, 0xda, 0x88, 0x2a, 0x0b,
0x2a, 0x87, 0xee, 0xbe, 0x3b, 0xde, 0xc6, 0xd7, 0x2c, 0x01, 0x87, 0x8d, 0xd3, 0x0a, 0x93, 0x1f,
0xd1, 0x3d, 0x00, 0x1d, 0x2a, 0x4e, 0x96, 0x8a, 0x4a, 0xa3, 0x6b, 0x1b, 0x0f, 0xb4, 0x65, 0xa2,
0x0d, 0xe8, 0x23, 0xb8, 0xdd, 0x2a, 0xb0, 0x98, 0xae, 0xc1, 0xec, 0x34, 0xa1, 0x6a, 0xdc, 0xba,
0x78, 0xbf, 0x38, 0xb0, 0x79, 0xc2, 0x32, 0xfe, 0xb5, 0x48, 0xff, 0xaf, 0x90, 0xbb, 0xe0, 0xa5,
0x33, 0xc2, 0x78, 0xcc, 0xa6, 0x43, 0x77, 0xdf, 0x19, 0x0f, 0xf0, 0xa6, 0xb9, 0x3f, 0x9b, 0xa2,
0x07, 0x70, 0x8b, 0xa4, 0xa9, 0x28, 0xb9, 0x8a, 0x79, 0x99, 0x27, 0xb4, 0x18, 0xf6, 0xf6, 0x9d,
0x71, 0x0f, 0xef, 0x58, 0xeb, 0x77, 0xc6, 0x18, 0xfc, 0xda, 0x85, 0x7e, 0x9d, 0x6f, 0xf4, 0x10,
0xbc, 0x9c, 0x4a, 0x49, 0x32, 0xa3, 0xc8, 0x1d, 0x6f, 0x1d, 0xde, 0x0d, 0xeb, 0x6a, 0x86, 0x4d,
0x35, 0xc3, 0x23, 0xbe, 0xc4, 0x2d, 0x0a, 0x21, 0xe8, 0xe5, 0x34, 0xaf, 0xcb, 0x32, 0xc0, 0xe6,
0xac, 0xe3, 0x2a, 0x96, 0x53, 0x51, 0xaa, 0x78, 0x46, 0x59, 0x36, 0x53, 0x46, 0x58, 0x0f, 0xef,
0x58, 0xeb, 0xb1, 0x31, 0xa2, 0x09, 0xdc, 0xa1, 0x95, 0xa2, 0x5c, 0x32, 0xc1, 0x63, 0xb1, 0x50,
0x4c, 0x70, 0x39, 0xfc, 0x7b, 0xf3, 0x86, 0xb0, 0xef, 0xb5, 0xf8, 0xef, 0x6b, 0x38, 0x7a, 0x09,
0x3e, 0x17, 0x3c, 0x4e, 0x0b, 0xa6, 0x58, 0x4a, 0xe6, 0xf1, 0x0a, 0xc2, 0xdb, 0x37, 0x10, 0xee,
0x71, 0xc1, 0x9f, 0x58, 0xdf, 0x6f, 0xfe, 0xc5, 0x1d, 0xbc, 0x06, 0xaf, 0x69, 0x29, 0xf4, 0x15,
0x6c, 0xeb, 0x32, 0xd2, 0xc2, 0xd4, 0xa3, 0x49, 0xce, 0xbd, 0x15, 0x5d, 0x78, 0x62, 0x60, 0xa6,
0x0f, 0xb7, 0x64, 0x7b, 0x96, 0x68, 0x0c, 0xee, 0x19, 0xa5, 0xb6, 0x7d, 0xdf, 0x5f, 0xe1, 0xf8,
0x94, 0x52, 0xac, 0x21, 0xc1, 0x6f, 0x0e, 0xc0, 0x15, 0x0b, 0x7a, 0x0c, 0xb0, 0x28, 0x93, 0x39,
0x4b, 0xe3, 0x57, 0xb4, 0x19, 0x99, 0xd5, 0x7f, 0x33, 0xa8, 0x71, 0xcf, 0xa9, 0x19, 0x99, 0x5c,
0x4c, 0xe9, 0xba, 0x91, 0x79, 0x21, 0xa6, 0xb4, 0x1e, 0x99, 0xdc, 0x9e, 0xd0, 0x08, 0x3c, 0x49,
0x7f, 0x28, 0x29, 0x4f, 0xa9, 0x2d, 0x5b, 0x7b, 0x0f, 0xce, 0xbb, 0xe0, 0x35, 0x2e, 0xe8, 0x0b,
0xe8, 0x4b, 0xc6, 0xb3, 0x39, 0xb5, 0x9a, 0x82, 0x1b, 0xf8, 0xc3, 0x13, 0x83, 0x3c, 0xee, 0x60,
0xeb, 0x83, 0x3e, 0x83, 0x0d, 0xb3, 0x7f, 0xac, 0xb8, 0x0f, 0x6e, 0x72, 0x7e, 0xa1, 0x81, 0xc7,
0x1d, 0x5c, 0x7b, 0x8c, 0x8e, 0xa0, 0x5f, 0xd3, 0xa1, 0x4f, 0xa0, 0xa7, 0x75, 0x1b, 0x01, 0xb7,
0x0e, 0x3f, 0xbc, 0xc6, 0xd1, 0x6c, 0xa4, 0xeb, 0x55, 0xd1, 0x7c, 0xd8, 0x38, 0x8c, 0xde, 0x38,
0xb0, 0x61, 0x58, 0xd1, 0x73, 0xf0, 0x12, 0xa6, 0x48, 0x51, 0x90, 0x26, 0xb7, 0x51, 0x43, 0x53,
0xef, 0xcd, 0xb0, 0x5d, 0x93, 0x0d, 0xd7, 0x13, 0x91, 0x2f, 0x48, 0xaa, 0x26, 0x4c, 0x1d, 0x69,
0x37, 0xdc, 0x12, 0xa0, 0xcf, 0x01, 0xda, 0xac, 0xeb, 0x71, 0x75, 0xd7, 0xa5, 0x7d, 0xd0, 0xa4,
0x5d, 0x4e, 0x36, 0xc0, 0x95, 0x65, 0x1e, 0xfc, 0xe4, 0x80, 0xfb, 0x94, 0x52, 0x94, 0x42, 0x9f,
0xe4, 0x7a, 0x48, 0x6d, 0xab, 0xb5, 0x4b, 0x52, 0xaf, 0xe7, 0x6b, 0x52, 0x18, 0x9f, 0x3c, 0x7c,
0xfb, 0xe7, 0xfd, 0xce, 0xef, 0x7f, 0xdd, 0x1f, 0x67, 0x4c, 0xcd, 0xca, 0x24, 0x4c, 0x45, 0x1e,
0x35, 0xab, 0xdf, 0x7c, 0x0e, 0xe4, 0xf4, 0x55, 0xa4, 0x96, 0x0b, 0x2a, 0x8d, 0x83, 0xc4, 0x96,
0x1a, 0xed, 0xc1, 0x20, 0x23, 0x32, 0x9e, 0xb3, 0x9c, 0x29, 0x53, 0x88, 0x1e, 0xf6, 0x32, 0x22,
0xbf, 0xd5, 0xf7, 0xc9, 0x97, 0x6f, 0x2f, 0x7c, 0xe7, 0xdd, 0x85, 0xef, 0x9c, 0x5f, 0xf8, 0xce,
0x9b, 0x4b, 0xbf, 0xf3, 0xee, 0xd2, 0xef, 0xfc, 0x71, 0xe9, 0x77, 0x5e, 0x3e, 0x58, 0x1f, 0x28,
0x52, 0x55, 0xd2, 0x37, 0xcd, 0xf9, 0xf8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x34, 0x02, 0x69,
0x7b, 0xcd, 0x06, 0x00, 0x00,
}
func (m *Tx) Marshal() (dAtA []byte, err error) {

View File

@ -6,7 +6,6 @@ package types
import (
fmt "fmt"
types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/cosmos-sdk/crypto/types"
types1 "github.com/cosmos/cosmos-sdk/x/ibc/03-connection/types"
types2 "github.com/cosmos/cosmos-sdk/x/ibc/04-channel/types"
_ "github.com/gogo/protobuf/gogoproto"
@ -755,71 +754,69 @@ func init() {
}
var fileDescriptor_6cc2ee18f7f86d4e = []byte{
// 1012 bytes of a gzipped FileDescriptorProto
// 991 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x6f, 0xe3, 0x44,
0x14, 0xaf, 0xb3, 0x61, 0x69, 0x5e, 0xb2, 0x6d, 0xf1, 0x66, 0x97, 0xb4, 0x40, 0x1c, 0xf9, 0x00,
0xbd, 0xac, 0xad, 0x2c, 0x12, 0x87, 0x0a, 0x0e, 0x49, 0x16, 0x09, 0xca, 0xbf, 0xca, 0xdd, 0x95,
0x58, 0xb4, 0x92, 0x35, 0xb6, 0xa7, 0x89, 0x55, 0x67, 0xc6, 0xd8, 0x93, 0xa4, 0x41, 0xe2, 0x00,
0x27, 0xb8, 0x71, 0xe4, 0x88, 0x90, 0xf8, 0x2e, 0x48, 0x5c, 0x96, 0x1b, 0xa7, 0x08, 0xb5, 0xdf,
0x20, 0x9f, 0x00, 0x79, 0x66, 0x9c, 0xd8, 0xee, 0xc6, 0x15, 0xb0, 0xa7, 0xf9, 0xf3, 0xde, 0xfc,
0xde, 0x7b, 0xbf, 0x79, 0x6f, 0xe6, 0x41, 0xd7, 0x77, 0x5c, 0x33, 0xf0, 0x87, 0x23, 0xe6, 0x06,
0x3e, 0x26, 0x2c, 0x36, 0x63, 0x1a, 0xd0, 0x31, 0x72, 0x47, 0x3e, 0xc1, 0xe6, 0xb4, 0x9b, 0x5d,
0x1a, 0x61, 0x44, 0x19, 0x55, 0x35, 0xdf, 0x71, 0x8d, 0xec, 0x11, 0x23, 0xab, 0x33, 0xed, 0x1e,
0xbc, 0xe3, 0xd2, 0x78, 0x4c, 0x63, 0xd3, 0x41, 0x31, 0x36, 0xdd, 0x68, 0x1e, 0x32, 0x6a, 0x4e,
0xbb, 0x0e, 0x66, 0xa8, 0x2b, 0x97, 0x02, 0xe9, 0x20, 0x41, 0x32, 0x5d, 0x4a, 0x08, 0x76, 0x99,
0x4f, 0x49, 0x66, 0x2a, 0x15, 0xf6, 0xb9, 0xc2, 0x08, 0x11, 0x82, 0x83, 0x74, 0x94, 0xa2, 0xe6,
0x90, 0x0e, 0x29, 0x9f, 0x9a, 0xc9, 0x2c, 0x3d, 0x30, 0xa4, 0x74, 0x18, 0x60, 0x93, 0xaf, 0x9c,
0xc9, 0x99, 0x89, 0xc8, 0x5c, 0x88, 0xf4, 0x3f, 0x2b, 0x50, 0x1f, 0x70, 0x87, 0x4f, 0x19, 0x62,
0x58, 0x3d, 0x80, 0xed, 0x18, 0x7f, 0x3d, 0xc1, 0xc4, 0xc5, 0x2d, 0xa5, 0xa3, 0x1c, 0x56, 0xad,
0xd5, 0x5a, 0x1d, 0xc0, 0xee, 0x59, 0x44, 0xbf, 0xc1, 0xc4, 0x5e, 0xa9, 0x54, 0x12, 0x95, 0xfe,
0xc1, 0x72, 0xa1, 0xdd, 0x9f, 0xa3, 0x71, 0x70, 0xa4, 0x17, 0x14, 0x74, 0x6b, 0x47, 0xec, 0x9c,
0xa6, 0x20, 0x0c, 0x76, 0x5d, 0x4a, 0x62, 0x4c, 0xe2, 0x49, 0x6c, 0xc7, 0x89, 0xcd, 0xd6, 0xad,
0x8e, 0x72, 0x58, 0x7f, 0x68, 0x1a, 0x37, 0x30, 0x68, 0x0c, 0xd2, 0x73, 0xdc, 0xd5, 0xac, 0xd5,
0x02, 0xa2, 0x6e, 0xed, 0xb8, 0x39, 0x5d, 0x15, 0xc3, 0x1b, 0x28, 0x08, 0xe8, 0xcc, 0x9e, 0x84,
0x1e, 0x62, 0xd8, 0x46, 0x67, 0x0c, 0x47, 0x76, 0x18, 0xd1, 0x90, 0xc6, 0x28, 0x68, 0x55, 0x3b,
0xca, 0xe1, 0x76, 0xff, 0xed, 0xe5, 0x42, 0xd3, 0x05, 0x60, 0x89, 0xb2, 0x6e, 0xb5, 0xb8, 0xf4,
0x09, 0x17, 0xf6, 0x12, 0xd9, 0x89, 0x14, 0x1d, 0x55, 0x7f, 0xf8, 0x45, 0xdb, 0xd2, 0x7f, 0x55,
0x60, 0x27, 0xef, 0xab, 0x7a, 0x0c, 0x10, 0x4e, 0x9c, 0xc0, 0x77, 0xed, 0x73, 0x3c, 0xe7, 0xc4,
0xd6, 0x1f, 0x36, 0x0d, 0x71, 0x2d, 0x46, 0x7a, 0x2d, 0x46, 0x8f, 0xcc, 0xfb, 0xf7, 0x96, 0x0b,
0xed, 0x35, 0xe1, 0xc4, 0xfa, 0x84, 0x6e, 0xd5, 0xc4, 0xe2, 0x13, 0x3c, 0x57, 0x3b, 0x50, 0xf7,
0xfc, 0x29, 0x8e, 0x62, 0xff, 0xcc, 0xc7, 0x11, 0xbf, 0x82, 0x9a, 0x95, 0xdd, 0x52, 0xdf, 0x84,
0x1a, 0xf3, 0xc7, 0x38, 0x66, 0x68, 0x1c, 0x72, 0x76, 0xab, 0xd6, 0x7a, 0x43, 0x3a, 0xf9, 0x7d,
0x05, 0x6e, 0x7f, 0x84, 0x91, 0x87, 0xa3, 0xd2, 0x3b, 0xcf, 0x41, 0x55, 0x0a, 0x50, 0x89, 0x34,
0xf6, 0x87, 0x04, 0xb1, 0x49, 0x24, 0xae, 0xb1, 0x61, 0xad, 0x37, 0xd4, 0x27, 0xb0, 0x43, 0xf0,
0xcc, 0xce, 0x04, 0x5e, 0x2d, 0x09, 0x7c, 0x7f, 0xb9, 0xd0, 0xee, 0x89, 0xc0, 0xf3, 0xa7, 0x74,
0xab, 0x41, 0xf0, 0xec, 0x64, 0x15, 0xff, 0x00, 0x76, 0x13, 0x85, 0x2c, 0x07, 0xaf, 0x24, 0x1c,
0x64, 0x13, 0xa2, 0xa0, 0xa0, 0x5b, 0x89, 0x27, 0x8f, 0xd6, 0x1b, 0x92, 0x84, 0x3f, 0x2a, 0xd0,
0xf8, 0xcc, 0x8f, 0x1d, 0x3c, 0x42, 0x53, 0x9f, 0x4e, 0x22, 0xb5, 0x0b, 0x35, 0x91, 0x7c, 0xb6,
0xef, 0x71, 0x2e, 0x6a, 0xfd, 0xe6, 0x72, 0xa1, 0xed, 0xc9, 0x34, 0x4b, 0x45, 0xba, 0xb5, 0x2d,
0xe6, 0x1f, 0x7b, 0x39, 0xf6, 0x2a, 0x05, 0xf6, 0x42, 0xb8, 0xb3, 0xa2, 0xc3, 0xa6, 0x24, 0x4d,
0xf5, 0xee, 0x8d, 0xa9, 0x7e, 0x9a, 0x9e, 0xea, 0x11, 0xef, 0x11, 0x62, 0xa8, 0xdf, 0x5a, 0x2e,
0xb4, 0xa6, 0xf0, 0x22, 0x87, 0xa8, 0x5b, 0x8d, 0xd5, 0xfa, 0x0b, 0x52, 0xb0, 0xc8, 0x66, 0x54,
0x52, 0xfe, 0xb2, 0x2c, 0xb2, 0x19, 0xcd, 0x5a, 0x7c, 0x3c, 0xa3, 0x47, 0xdb, 0x09, 0x93, 0x3f,
0x27, 0x6c, 0x1e, 0xc3, 0x5e, 0x11, 0x25, 0x9f, 0x21, 0x4a, 0x31, 0x43, 0x54, 0xa8, 0x7a, 0x88,
0x21, 0xce, 0x5b, 0xc3, 0xe2, 0x73, 0x79, 0x33, 0x5f, 0x42, 0xf3, 0x71, 0x9a, 0x66, 0xd8, 0x5b,
0xc1, 0xde, 0x80, 0x57, 0x9a, 0xad, 0x12, 0xf9, 0x3b, 0x05, 0x6a, 0x09, 0x5e, 0x7f, 0xce, 0x70,
0xfc, 0x3f, 0x72, 0xbf, 0x50, 0x86, 0xb7, 0xae, 0x97, 0x61, 0x1a, 0x5d, 0xf5, 0x5a, 0x74, 0xbf,
0x29, 0x00, 0xa2, 0xf8, 0x38, 0x49, 0x9f, 0x42, 0x5d, 0xa6, 0xfc, 0x8d, 0xcf, 0xc3, 0xfd, 0xe5,
0x42, 0x53, 0x73, 0x55, 0x22, 0xdf, 0x07, 0x51, 0x22, 0x1b, 0xea, 0xa3, 0xf2, 0x1f, 0xeb, 0xe3,
0x5b, 0xd8, 0xcd, 0x7c, 0x0e, 0xdc, 0x57, 0x15, 0xaa, 0x21, 0x62, 0x23, 0xc9, 0x3d, 0x9f, 0xab,
0x27, 0xd0, 0x90, 0xa5, 0x21, 0x1e, 0xf4, 0x4a, 0x49, 0x00, 0xaf, 0x2f, 0x17, 0xda, 0xdd, 0x5c,
0x39, 0xc9, 0x27, 0xbb, 0xee, 0xae, 0x2d, 0x49, 0xf3, 0x3f, 0x2a, 0xa0, 0xe6, 0x1f, 0xd2, 0x8d,
0x2e, 0x3c, 0xbd, 0xfe, 0xad, 0x94, 0x79, 0xf1, 0x2f, 0xfe, 0x0e, 0xe9, 0x0b, 0x81, 0xbb, 0x83,
0xd5, 0x47, 0x5c, 0xee, 0xcb, 0x07, 0x00, 0xeb, 0x3f, 0x5b, 0xba, 0xf1, 0x16, 0x2f, 0xc0, 0xcc,
0x57, 0xbe, 0x06, 0xfb, 0x90, 0x78, 0x56, 0xe6, 0x80, 0xb4, 0xf7, 0x0c, 0xf6, 0x06, 0xe2, 0x6b,
0x2f, 0x37, 0x66, 0xc0, 0xab, 0xb2, 0x05, 0x58, 0x05, 0xcc, 0x2d, 0xc9, 0xb6, 0x40, 0x62, 0x58,
0xa9, 0x92, 0x44, 0x3f, 0x86, 0xe6, 0x09, 0x72, 0xcf, 0x31, 0x1b, 0xd0, 0xf1, 0xd8, 0x67, 0x63,
0x4c, 0xd8, 0x46, 0x0b, 0xed, 0x24, 0x9c, 0x54, 0x4b, 0x96, 0x6a, 0x66, 0x47, 0x7f, 0x0a, 0xfb,
0x02, 0xab, 0xe7, 0x9e, 0x13, 0x3a, 0x0b, 0xb0, 0x37, 0xc4, 0xa5, 0x80, 0x87, 0xb0, 0x8b, 0xf2,
0xaa, 0x12, 0xb5, 0xb8, 0xad, 0xbf, 0x07, 0x9d, 0x17, 0x42, 0xf7, 0x9c, 0xe4, 0x82, 0x36, 0x92,
0xa2, 0x8f, 0xa0, 0xf9, 0x39, 0xbe, 0x60, 0x69, 0xd3, 0x61, 0x61, 0x77, 0xba, 0xd1, 0x9b, 0xf7,
0xe1, 0x0e, 0xc1, 0x17, 0x2c, 0x69, 0x59, 0xec, 0x08, 0xbb, 0x53, 0xd9, 0xd3, 0x64, 0x9e, 0xbf,
0x9c, 0x58, 0xb7, 0xea, 0x44, 0x40, 0x27, 0xa8, 0xfd, 0x67, 0xbf, 0x5f, 0xb6, 0x95, 0xe7, 0x97,
0x6d, 0xe5, 0xef, 0xcb, 0xb6, 0xf2, 0xd3, 0x55, 0x7b, 0xeb, 0xf9, 0x55, 0x7b, 0xeb, 0xaf, 0xab,
0xf6, 0xd6, 0x57, 0xfd, 0xa1, 0xcf, 0x46, 0x13, 0xc7, 0x70, 0xe9, 0xd8, 0x94, 0xad, 0x9f, 0x18,
0x1e, 0xc4, 0xde, 0xb9, 0x79, 0x61, 0xae, 0x5a, 0xcc, 0x07, 0x2f, 0xea, 0x31, 0xd9, 0x3c, 0xc4,
0xb1, 0x73, 0x9b, 0x27, 0xed, 0xbb, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x34, 0x99, 0x52,
0x90, 0x0a, 0x00, 0x00,
0x14, 0xaf, 0xb3, 0x61, 0x69, 0x5e, 0xb2, 0xcd, 0xe2, 0xcd, 0x2e, 0x69, 0x81, 0x38, 0xf2, 0x01,
0xf5, 0xb2, 0xb6, 0xb2, 0x48, 0x1c, 0x2a, 0x38, 0x24, 0x59, 0x24, 0x28, 0xff, 0x2a, 0x77, 0x57,
0x62, 0xd1, 0x4a, 0xd6, 0xc4, 0x9e, 0x26, 0x56, 0x9d, 0x19, 0x63, 0x4f, 0x92, 0x06, 0x89, 0x03,
0x9c, 0xe0, 0xc6, 0x91, 0x23, 0x42, 0xe2, 0xbb, 0x20, 0x71, 0x59, 0x6e, 0x9c, 0x22, 0xd4, 0x7e,
0x83, 0x7c, 0x02, 0xe4, 0x99, 0xb1, 0x63, 0xbb, 0x1b, 0x57, 0xfc, 0x39, 0x79, 0x3c, 0xef, 0xcd,
0xef, 0xfd, 0xde, 0x6f, 0xde, 0x9b, 0x19, 0xe8, 0x79, 0x23, 0xc7, 0xf4, 0xbd, 0xf1, 0x84, 0x39,
0xbe, 0x87, 0x09, 0x8b, 0xcc, 0x88, 0xfa, 0x74, 0x8a, 0x9c, 0x89, 0x47, 0xb0, 0x39, 0xef, 0x65,
0x7f, 0x8d, 0x20, 0xa4, 0x8c, 0xaa, 0x9a, 0x37, 0x72, 0x8c, 0xec, 0x12, 0x23, 0xeb, 0x33, 0xef,
0x1d, 0xc4, 0x0e, 0xa6, 0x43, 0x09, 0xc1, 0x0e, 0xf3, 0x28, 0xc9, 0x0c, 0x05, 0xc2, 0xc1, 0x3e,
0x77, 0x98, 0x20, 0x42, 0xb0, 0x9f, 0x7c, 0xa5, 0xa9, 0x35, 0xa6, 0x63, 0xca, 0x87, 0x66, 0x3c,
0x4a, 0x16, 0x8c, 0x29, 0x1d, 0xfb, 0xd8, 0xe4, 0x7f, 0xa3, 0xd9, 0x99, 0x89, 0xc8, 0x52, 0x98,
0xf4, 0x3f, 0x2a, 0x50, 0x1f, 0x72, 0x1e, 0xa7, 0x0c, 0x31, 0xac, 0x1e, 0xc0, 0x6e, 0x84, 0xbf,
0x9a, 0x61, 0xe2, 0xe0, 0xb6, 0xd2, 0x55, 0x0e, 0xab, 0x56, 0xfa, 0xaf, 0x0e, 0xa1, 0x79, 0x16,
0xd2, 0xaf, 0x31, 0xb1, 0x53, 0x97, 0x4a, 0xec, 0x32, 0x38, 0x58, 0xaf, 0xb4, 0x07, 0x4b, 0x34,
0xf5, 0x8f, 0xf4, 0x82, 0x83, 0x6e, 0xed, 0x89, 0x99, 0xd3, 0x04, 0x84, 0x41, 0xd3, 0xa1, 0x24,
0xc2, 0x24, 0x9a, 0x45, 0x76, 0x14, 0xc7, 0x6c, 0xdf, 0xea, 0x2a, 0x87, 0xf5, 0x47, 0xa6, 0x71,
0x83, 0x30, 0xc6, 0x30, 0x59, 0xc7, 0xa9, 0x66, 0xa3, 0x16, 0x10, 0x75, 0x6b, 0xcf, 0xc9, 0xf9,
0xaa, 0x18, 0xde, 0x40, 0xbe, 0x4f, 0x17, 0xf6, 0x2c, 0x70, 0x11, 0xc3, 0x36, 0x3a, 0x63, 0x38,
0xb4, 0x83, 0x90, 0x06, 0x34, 0x42, 0x7e, 0xbb, 0xda, 0x55, 0x0e, 0x77, 0x07, 0x6f, 0xaf, 0x57,
0x9a, 0x2e, 0x00, 0x4b, 0x9c, 0x75, 0xab, 0xcd, 0xad, 0x4f, 0xb9, 0xb1, 0x1f, 0xdb, 0x4e, 0xa4,
0xe9, 0xa8, 0xfa, 0xfd, 0xcf, 0xda, 0x8e, 0xfe, 0x8b, 0x02, 0x7b, 0x79, 0xae, 0xea, 0x31, 0x40,
0x30, 0x1b, 0xf9, 0x9e, 0x63, 0x9f, 0xe3, 0x25, 0x17, 0xb6, 0xfe, 0xa8, 0x65, 0x88, 0x6d, 0x31,
0x92, 0x6d, 0x31, 0xfa, 0x64, 0x39, 0xb8, 0xbf, 0x5e, 0x69, 0xaf, 0x09, 0x12, 0x9b, 0x15, 0xba,
0x55, 0x13, 0x3f, 0x1f, 0xe3, 0xa5, 0xda, 0x85, 0xba, 0xeb, 0xcd, 0x71, 0x18, 0x79, 0x67, 0x1e,
0x0e, 0xf9, 0x16, 0xd4, 0xac, 0xec, 0x94, 0xfa, 0x26, 0xd4, 0x98, 0x37, 0xc5, 0x11, 0x43, 0xd3,
0x80, 0xab, 0x5b, 0xb5, 0x36, 0x13, 0x92, 0xe4, 0x77, 0x15, 0xb8, 0xfd, 0x21, 0x46, 0x2e, 0x0e,
0x4b, 0xf7, 0x3c, 0x07, 0x55, 0x29, 0x40, 0xc5, 0xd6, 0xc8, 0x1b, 0x13, 0xc4, 0x66, 0xa1, 0xd8,
0xc6, 0x86, 0xb5, 0x99, 0x50, 0x9f, 0xc2, 0x1e, 0xc1, 0x0b, 0x3b, 0x93, 0x78, 0xb5, 0x24, 0xf1,
0xfd, 0xf5, 0x4a, 0xbb, 0x2f, 0x12, 0xcf, 0xaf, 0xd2, 0xad, 0x06, 0xc1, 0x8b, 0x93, 0x34, 0xff,
0x21, 0x34, 0x63, 0x87, 0xac, 0x06, 0xaf, 0xc4, 0x1a, 0x64, 0x0b, 0xa2, 0xe0, 0xa0, 0x5b, 0x31,
0x93, 0xc7, 0x9b, 0x09, 0x29, 0xc2, 0xef, 0x15, 0x68, 0x7c, 0xea, 0x45, 0x23, 0x3c, 0x41, 0x73,
0x8f, 0xce, 0x42, 0xb5, 0x07, 0x35, 0x51, 0x7c, 0xb6, 0xe7, 0x72, 0x2d, 0x6a, 0x83, 0xd6, 0x7a,
0xa5, 0xdd, 0x95, 0x65, 0x96, 0x98, 0x74, 0x6b, 0x57, 0x8c, 0x3f, 0x72, 0x73, 0xea, 0x55, 0x0a,
0xea, 0x05, 0x70, 0x27, 0x95, 0xc3, 0xa6, 0x24, 0x29, 0xf5, 0xde, 0x8d, 0xa5, 0x7e, 0x9a, 0xac,
0xea, 0x13, 0xf7, 0x31, 0x62, 0x68, 0xd0, 0x5e, 0xaf, 0xb4, 0x96, 0x60, 0x91, 0x43, 0xd4, 0xad,
0x46, 0xfa, 0xff, 0x39, 0x29, 0x44, 0x64, 0x0b, 0x2a, 0x25, 0xff, 0xbf, 0x22, 0xb2, 0x05, 0xcd,
0x46, 0x7c, 0xb2, 0xa0, 0x47, 0xbb, 0xb1, 0x92, 0x3f, 0xc5, 0x6a, 0x1e, 0xc3, 0xdd, 0x22, 0x4a,
0xbe, 0x42, 0x94, 0x62, 0x85, 0xa8, 0x50, 0x75, 0x11, 0x43, 0x5c, 0xb7, 0x86, 0xc5, 0xc7, 0x72,
0x67, 0xbe, 0x80, 0xd6, 0x93, 0xa4, 0xcc, 0xb0, 0x9b, 0xc2, 0xde, 0x80, 0x57, 0x5a, 0xad, 0x12,
0xf9, 0x5b, 0x05, 0x6a, 0x31, 0xde, 0x60, 0xc9, 0x70, 0xf4, 0x1f, 0x6a, 0xbf, 0xd0, 0x86, 0xb7,
0xae, 0xb7, 0x61, 0x92, 0x5d, 0xf5, 0x5a, 0x76, 0xbf, 0x2a, 0x00, 0xa2, 0xf9, 0xb8, 0x48, 0x9f,
0x40, 0x5d, 0x96, 0xfc, 0x8d, 0xc7, 0xc3, 0x83, 0xf5, 0x4a, 0x53, 0x73, 0x5d, 0x22, 0xcf, 0x07,
0xd1, 0x22, 0x5b, 0xfa, 0xa3, 0xf2, 0x2f, 0xfb, 0xe3, 0x1b, 0x68, 0x66, 0x2e, 0x07, 0xce, 0x55,
0x85, 0x6a, 0x80, 0xd8, 0x44, 0x6a, 0xcf, 0xc7, 0xea, 0x09, 0x34, 0x64, 0x6b, 0x88, 0x03, 0xbd,
0x52, 0x92, 0xc0, 0xeb, 0xeb, 0x95, 0x76, 0x2f, 0xd7, 0x4e, 0xf2, 0xc8, 0xae, 0x3b, 0x9b, 0x48,
0x32, 0xfc, 0x0f, 0x0a, 0xa8, 0xf9, 0x83, 0x74, 0x2b, 0x85, 0x67, 0xd7, 0xaf, 0x95, 0x32, 0x16,
0xff, 0xe0, 0xee, 0x90, 0x5c, 0x08, 0xdc, 0x1b, 0xa6, 0x17, 0x71, 0x39, 0x97, 0xf7, 0x01, 0x36,
0x77, 0xb6, 0xa4, 0xf1, 0x16, 0x6f, 0xc0, 0xcc, 0x55, 0xbe, 0x01, 0xfb, 0x80, 0xb8, 0x56, 0x66,
0x81, 0x8c, 0xf7, 0x1c, 0xee, 0x0e, 0xc5, 0xd5, 0x5e, 0x1e, 0xcc, 0x80, 0x57, 0xe5, 0x13, 0x20,
0x4d, 0x98, 0x47, 0x92, 0xcf, 0x02, 0x89, 0x61, 0x25, 0x4e, 0x12, 0xfd, 0x18, 0x5a, 0x27, 0xc8,
0x39, 0xc7, 0x6c, 0x48, 0xa7, 0x53, 0x8f, 0x4d, 0x31, 0x61, 0x5b, 0x23, 0x74, 0xe2, 0x74, 0x12,
0x2f, 0xd9, 0xaa, 0x99, 0x19, 0xfd, 0x19, 0xec, 0x0b, 0xac, 0xbe, 0x73, 0x4e, 0xe8, 0xc2, 0xc7,
0xee, 0x18, 0x97, 0x02, 0x1e, 0x42, 0x13, 0xe5, 0x5d, 0x25, 0x6a, 0x71, 0x5a, 0x7f, 0x17, 0xba,
0x2f, 0x85, 0xee, 0x8f, 0xe2, 0x0d, 0xda, 0x2a, 0x8a, 0x3e, 0x81, 0xd6, 0x67, 0xf8, 0x82, 0x25,
0x8f, 0x0e, 0x0b, 0x3b, 0xf3, 0xad, 0x6c, 0xde, 0x83, 0x3b, 0x04, 0x5f, 0xb0, 0xf8, 0xc9, 0x62,
0x87, 0xd8, 0x99, 0xcb, 0x37, 0x4d, 0xe6, 0xf8, 0xcb, 0x99, 0x75, 0xab, 0x4e, 0x04, 0x74, 0x8c,
0x3a, 0x78, 0xfe, 0xdb, 0x65, 0x47, 0x79, 0x71, 0xd9, 0x51, 0xfe, 0xba, 0xec, 0x28, 0x3f, 0x5e,
0x75, 0x76, 0x5e, 0x5c, 0x75, 0x76, 0xfe, 0xbc, 0xea, 0xec, 0x7c, 0x39, 0x18, 0x7b, 0x6c, 0x32,
0x1b, 0x19, 0x0e, 0x9d, 0x9a, 0x0e, 0x8d, 0xa6, 0x34, 0x92, 0x9f, 0x87, 0x91, 0x7b, 0x6e, 0x5e,
0x98, 0xe9, 0xcb, 0xf1, 0xe1, 0xcb, 0x9e, 0x8e, 0x6c, 0x19, 0xe0, 0x68, 0x74, 0x9b, 0x17, 0xed,
0x3b, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x2e, 0x7b, 0x79, 0x24, 0x67, 0x0a, 0x00, 0x00,
}
func (m *ClientState) Marshal() (dAtA []byte, err error) {

File diff suppressed because it is too large Load Diff