feat(accounts): Allow funds to be sent to accounts on init and execute (#19360)

This commit is contained in:
testinginprod 2024-02-08 16:20:57 +01:00 committed by GitHub
parent 8de39661fc
commit 5be33f5442
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 1124 additions and 265 deletions

View File

@ -2,8 +2,10 @@
package counterv1
import (
v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1"
fmt "fmt"
runtime "github.com/cosmos/cosmos-proto/runtime"
_ "github.com/cosmos/gogoproto/gogoproto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoiface "google.golang.org/protobuf/runtime/protoiface"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
@ -1936,12 +1938,64 @@ func (x *fastReflection_MsgTestDependencies) ProtoMethods() *protoiface.Methods
}
}
var _ protoreflect.List = (*_MsgTestDependenciesResponse_5_list)(nil)
type _MsgTestDependenciesResponse_5_list struct {
list *[]*v1beta1.Coin
}
func (x *_MsgTestDependenciesResponse_5_list) Len() int {
if x.list == nil {
return 0
}
return len(*x.list)
}
func (x *_MsgTestDependenciesResponse_5_list) Get(i int) protoreflect.Value {
return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())
}
func (x *_MsgTestDependenciesResponse_5_list) Set(i int, value protoreflect.Value) {
valueUnwrapped := value.Message()
concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)
(*x.list)[i] = concreteValue
}
func (x *_MsgTestDependenciesResponse_5_list) Append(value protoreflect.Value) {
valueUnwrapped := value.Message()
concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)
*x.list = append(*x.list, concreteValue)
}
func (x *_MsgTestDependenciesResponse_5_list) AppendMutable() protoreflect.Value {
v := new(v1beta1.Coin)
*x.list = append(*x.list, v)
return protoreflect.ValueOfMessage(v.ProtoReflect())
}
func (x *_MsgTestDependenciesResponse_5_list) Truncate(n int) {
for i := n; i < len(*x.list); i++ {
(*x.list)[i] = nil
}
*x.list = (*x.list)[:n]
}
func (x *_MsgTestDependenciesResponse_5_list) NewElement() protoreflect.Value {
v := new(v1beta1.Coin)
return protoreflect.ValueOfMessage(v.ProtoReflect())
}
func (x *_MsgTestDependenciesResponse_5_list) IsValid() bool {
return x.list != nil
}
var (
md_MsgTestDependenciesResponse protoreflect.MessageDescriptor
fd_MsgTestDependenciesResponse_chain_id protoreflect.FieldDescriptor
fd_MsgTestDependenciesResponse_address protoreflect.FieldDescriptor
fd_MsgTestDependenciesResponse_before_gas protoreflect.FieldDescriptor
fd_MsgTestDependenciesResponse_after_gas protoreflect.FieldDescriptor
fd_MsgTestDependenciesResponse_funds protoreflect.FieldDescriptor
)
func init() {
@ -1951,6 +2005,7 @@ func init() {
fd_MsgTestDependenciesResponse_address = md_MsgTestDependenciesResponse.Fields().ByName("address")
fd_MsgTestDependenciesResponse_before_gas = md_MsgTestDependenciesResponse.Fields().ByName("before_gas")
fd_MsgTestDependenciesResponse_after_gas = md_MsgTestDependenciesResponse.Fields().ByName("after_gas")
fd_MsgTestDependenciesResponse_funds = md_MsgTestDependenciesResponse.Fields().ByName("funds")
}
var _ protoreflect.Message = (*fastReflection_MsgTestDependenciesResponse)(nil)
@ -2042,6 +2097,12 @@ func (x *fastReflection_MsgTestDependenciesResponse) Range(f func(protoreflect.F
return
}
}
if len(x.Funds) != 0 {
value := protoreflect.ValueOfList(&_MsgTestDependenciesResponse_5_list{list: &x.Funds})
if !f(fd_MsgTestDependenciesResponse_funds, value) {
return
}
}
}
// Has reports whether a field is populated.
@ -2065,6 +2126,8 @@ func (x *fastReflection_MsgTestDependenciesResponse) Has(fd protoreflect.FieldDe
return x.BeforeGas != uint64(0)
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.after_gas":
return x.AfterGas != uint64(0)
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.funds":
return len(x.Funds) != 0
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse"))
@ -2089,6 +2152,8 @@ func (x *fastReflection_MsgTestDependenciesResponse) Clear(fd protoreflect.Field
x.BeforeGas = uint64(0)
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.after_gas":
x.AfterGas = uint64(0)
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.funds":
x.Funds = nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse"))
@ -2117,6 +2182,12 @@ func (x *fastReflection_MsgTestDependenciesResponse) Get(descriptor protoreflect
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.after_gas":
value := x.AfterGas
return protoreflect.ValueOfUint64(value)
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.funds":
if len(x.Funds) == 0 {
return protoreflect.ValueOfList(&_MsgTestDependenciesResponse_5_list{})
}
listValue := &_MsgTestDependenciesResponse_5_list{list: &x.Funds}
return protoreflect.ValueOfList(listValue)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse"))
@ -2145,6 +2216,10 @@ func (x *fastReflection_MsgTestDependenciesResponse) Set(fd protoreflect.FieldDe
x.BeforeGas = value.Uint()
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.after_gas":
x.AfterGas = value.Uint()
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.funds":
lv := value.List()
clv := lv.(*_MsgTestDependenciesResponse_5_list)
x.Funds = *clv.list
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse"))
@ -2165,6 +2240,12 @@ func (x *fastReflection_MsgTestDependenciesResponse) Set(fd protoreflect.FieldDe
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgTestDependenciesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.funds":
if x.Funds == nil {
x.Funds = []*v1beta1.Coin{}
}
value := &_MsgTestDependenciesResponse_5_list{list: &x.Funds}
return protoreflect.ValueOfList(value)
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.chain_id":
panic(fmt.Errorf("field chain_id of message cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse is not mutable"))
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.address":
@ -2194,6 +2275,9 @@ func (x *fastReflection_MsgTestDependenciesResponse) NewField(fd protoreflect.Fi
return protoreflect.ValueOfUint64(uint64(0))
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.after_gas":
return protoreflect.ValueOfUint64(uint64(0))
case "cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.funds":
list := []*v1beta1.Coin{}
return protoreflect.ValueOfList(&_MsgTestDependenciesResponse_5_list{list: &list})
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse"))
@ -2277,6 +2361,12 @@ func (x *fastReflection_MsgTestDependenciesResponse) ProtoMethods() *protoiface.
if x.AfterGas != 0 {
n += 1 + runtime.Sov(uint64(x.AfterGas))
}
if len(x.Funds) > 0 {
for _, e := range x.Funds {
l = options.Size(e)
n += 1 + l + runtime.Sov(uint64(l))
}
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
@ -2306,6 +2396,22 @@ func (x *fastReflection_MsgTestDependenciesResponse) ProtoMethods() *protoiface.
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Funds) > 0 {
for iNdEx := len(x.Funds) - 1; iNdEx >= 0; iNdEx-- {
encoded, err := options.Marshal(x.Funds[iNdEx])
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, err
}
i -= len(encoded)
copy(dAtA[i:], encoded)
i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
i--
dAtA[i] = 0x2a
}
}
if x.AfterGas != 0 {
i = runtime.EncodeVarint(dAtA, i, uint64(x.AfterGas))
i--
@ -2481,6 +2587,40 @@ func (x *fastReflection_MsgTestDependenciesResponse) ProtoMethods() *protoiface.
break
}
}
case 5:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType)
}
var msglen int
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++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
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.Funds = append(x.Funds, &v1beta1.Coin{})
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Funds[len(x.Funds)-1]); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
@ -3469,6 +3609,8 @@ type MsgTestDependenciesResponse struct {
BeforeGas uint64 `protobuf:"varint,3,opt,name=before_gas,json=beforeGas,proto3" json:"before_gas,omitempty"`
// after_gas is used to test gas meter increasing.
AfterGas uint64 `protobuf:"varint,4,opt,name=after_gas,json=afterGas,proto3" json:"after_gas,omitempty"`
// funds reports the funds from the implementation.Funds method.
Funds []*v1beta1.Coin `protobuf:"bytes,5,rep,name=funds,proto3" json:"funds,omitempty"`
}
func (x *MsgTestDependenciesResponse) Reset() {
@ -3519,6 +3661,13 @@ func (x *MsgTestDependenciesResponse) GetAfterGas() uint64 {
return 0
}
func (x *MsgTestDependenciesResponse) GetFunds() []*v1beta1.Coin {
if x != nil {
return x.Funds
}
return nil
}
// QueryCounterRequest is used to query the counter value.
type QueryCounterRequest struct {
state protoimpl.MessageState
@ -3591,51 +3740,61 @@ var file_cosmos_accounts_testing_counter_v1_counter_proto_rawDesc = []byte{
0x72, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x12, 0x22, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x22, 0x2e, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69,
0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69,
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x0a, 0x12, 0x4d, 0x73, 0x67,
0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12,
0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3b, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x49, 0x6e,
0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f,
0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x41, 0x6d,
0x6f, 0x75, 0x6e, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x54, 0x65, 0x73, 0x74, 0x44,
0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x1b,
0x4d, 0x73, 0x67, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63,
0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x03,
0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x47, 0x61, 0x73, 0x12,
0x1b, 0x0a, 0x09, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01,
0x28, 0x04, 0x52, 0x08, 0x61, 0x66, 0x74, 0x65, 0x72, 0x47, 0x61, 0x73, 0x22, 0x15, 0x0a, 0x13,
0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x22, 0x2c, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x42, 0xa2, 0x02, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
0x67, 0x2e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 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, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x74,
0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x2f, 0x76,
0x31, 0x3b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x04, 0x43, 0x41,
0x54, 0x43, 0xaa, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e,
0x67, 0x5c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x2e, 0x43,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x54,
0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5c, 0x56,
0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x26,
0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73,
0x3a, 0x3a, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62,
0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2e, 0x0a, 0x07,
0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69,
0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c,
0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x11, 0x0a, 0x0f,
0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x2c, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3b, 0x0a,
0x1a, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e,
0x65, 0x77, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
0x09, 0x6e, 0x65, 0x77, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x73,
0x67, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65,
0x73, 0x22, 0xf1, 0x01, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70,
0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65,
0x5f, 0x67, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x65, 0x66, 0x6f,
0x72, 0x65, 0x47, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x67,
0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x61, 0x66, 0x74, 0x65, 0x72, 0x47,
0x61, 0x73, 0x12, 0x61, 0x0a, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,
0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x30, 0xc8, 0xde,
0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73,
0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05,
0x66, 0x75, 0x6e, 0x64, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2c, 0x0a, 0x14,
0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0xa2, 0x02, 0x0a, 0x26, 0x63,
0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x50, 0x72,
0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 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,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x04, 0x43, 0x41, 0x54, 0x43, 0xaa, 0x02, 0x22, 0x43, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x54, 0x65,
0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x31,
0xca, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x73, 0x5c, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5c, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5c,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x26, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a,
0x3a, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x3a, 0x54, 0x65, 0x73, 0x74, 0x69,
0x6e, 0x67, 0x3a, 0x3a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -3660,13 +3819,15 @@ var file_cosmos_accounts_testing_counter_v1_counter_proto_goTypes = []interface{
(*MsgTestDependenciesResponse)(nil), // 5: cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse
(*QueryCounterRequest)(nil), // 6: cosmos.accounts.testing.counter.v1.QueryCounterRequest
(*QueryCounterResponse)(nil), // 7: cosmos.accounts.testing.counter.v1.QueryCounterResponse
(*v1beta1.Coin)(nil), // 8: cosmos.base.v1beta1.Coin
}
var file_cosmos_accounts_testing_counter_v1_counter_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
8, // 0: cosmos.accounts.testing.counter.v1.MsgTestDependenciesResponse.funds:type_name -> cosmos.base.v1beta1.Coin
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_cosmos_accounts_testing_counter_v1_counter_proto_init() }

View File

@ -2,9 +2,11 @@
package accountsv1
import (
v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1"
_ "cosmossdk.io/api/cosmos/msg/v1"
fmt "fmt"
runtime "github.com/cosmos/cosmos-proto/runtime"
_ "github.com/cosmos/gogoproto/gogoproto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoiface "google.golang.org/protobuf/runtime/protoiface"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
@ -14,11 +16,63 @@ import (
sync "sync"
)
var _ protoreflect.List = (*_MsgInit_4_list)(nil)
type _MsgInit_4_list struct {
list *[]*v1beta1.Coin
}
func (x *_MsgInit_4_list) Len() int {
if x.list == nil {
return 0
}
return len(*x.list)
}
func (x *_MsgInit_4_list) Get(i int) protoreflect.Value {
return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())
}
func (x *_MsgInit_4_list) Set(i int, value protoreflect.Value) {
valueUnwrapped := value.Message()
concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)
(*x.list)[i] = concreteValue
}
func (x *_MsgInit_4_list) Append(value protoreflect.Value) {
valueUnwrapped := value.Message()
concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)
*x.list = append(*x.list, concreteValue)
}
func (x *_MsgInit_4_list) AppendMutable() protoreflect.Value {
v := new(v1beta1.Coin)
*x.list = append(*x.list, v)
return protoreflect.ValueOfMessage(v.ProtoReflect())
}
func (x *_MsgInit_4_list) Truncate(n int) {
for i := n; i < len(*x.list); i++ {
(*x.list)[i] = nil
}
*x.list = (*x.list)[:n]
}
func (x *_MsgInit_4_list) NewElement() protoreflect.Value {
v := new(v1beta1.Coin)
return protoreflect.ValueOfMessage(v.ProtoReflect())
}
func (x *_MsgInit_4_list) IsValid() bool {
return x.list != nil
}
var (
md_MsgInit protoreflect.MessageDescriptor
fd_MsgInit_sender protoreflect.FieldDescriptor
fd_MsgInit_account_type protoreflect.FieldDescriptor
fd_MsgInit_message protoreflect.FieldDescriptor
fd_MsgInit_funds protoreflect.FieldDescriptor
)
func init() {
@ -27,6 +81,7 @@ func init() {
fd_MsgInit_sender = md_MsgInit.Fields().ByName("sender")
fd_MsgInit_account_type = md_MsgInit.Fields().ByName("account_type")
fd_MsgInit_message = md_MsgInit.Fields().ByName("message")
fd_MsgInit_funds = md_MsgInit.Fields().ByName("funds")
}
var _ protoreflect.Message = (*fastReflection_MsgInit)(nil)
@ -112,6 +167,12 @@ func (x *fastReflection_MsgInit) Range(f func(protoreflect.FieldDescriptor, prot
return
}
}
if len(x.Funds) != 0 {
value := protoreflect.ValueOfList(&_MsgInit_4_list{list: &x.Funds})
if !f(fd_MsgInit_funds, value) {
return
}
}
}
// Has reports whether a field is populated.
@ -133,6 +194,8 @@ func (x *fastReflection_MsgInit) Has(fd protoreflect.FieldDescriptor) bool {
return x.AccountType != ""
case "cosmos.accounts.v1.MsgInit.message":
return x.Message != nil
case "cosmos.accounts.v1.MsgInit.funds":
return len(x.Funds) != 0
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit"))
@ -155,6 +218,8 @@ func (x *fastReflection_MsgInit) Clear(fd protoreflect.FieldDescriptor) {
x.AccountType = ""
case "cosmos.accounts.v1.MsgInit.message":
x.Message = nil
case "cosmos.accounts.v1.MsgInit.funds":
x.Funds = nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit"))
@ -180,6 +245,12 @@ func (x *fastReflection_MsgInit) Get(descriptor protoreflect.FieldDescriptor) pr
case "cosmos.accounts.v1.MsgInit.message":
value := x.Message
return protoreflect.ValueOfMessage(value.ProtoReflect())
case "cosmos.accounts.v1.MsgInit.funds":
if len(x.Funds) == 0 {
return protoreflect.ValueOfList(&_MsgInit_4_list{})
}
listValue := &_MsgInit_4_list{list: &x.Funds}
return protoreflect.ValueOfList(listValue)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit"))
@ -206,6 +277,10 @@ func (x *fastReflection_MsgInit) Set(fd protoreflect.FieldDescriptor, value prot
x.AccountType = value.Interface().(string)
case "cosmos.accounts.v1.MsgInit.message":
x.Message = value.Message().Interface().(*anypb.Any)
case "cosmos.accounts.v1.MsgInit.funds":
lv := value.List()
clv := lv.(*_MsgInit_4_list)
x.Funds = *clv.list
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit"))
@ -231,6 +306,12 @@ func (x *fastReflection_MsgInit) Mutable(fd protoreflect.FieldDescriptor) protor
x.Message = new(anypb.Any)
}
return protoreflect.ValueOfMessage(x.Message.ProtoReflect())
case "cosmos.accounts.v1.MsgInit.funds":
if x.Funds == nil {
x.Funds = []*v1beta1.Coin{}
}
value := &_MsgInit_4_list{list: &x.Funds}
return protoreflect.ValueOfList(value)
case "cosmos.accounts.v1.MsgInit.sender":
panic(fmt.Errorf("field sender of message cosmos.accounts.v1.MsgInit is not mutable"))
case "cosmos.accounts.v1.MsgInit.account_type":
@ -255,6 +336,9 @@ func (x *fastReflection_MsgInit) NewField(fd protoreflect.FieldDescriptor) proto
case "cosmos.accounts.v1.MsgInit.message":
m := new(anypb.Any)
return protoreflect.ValueOfMessage(m.ProtoReflect())
case "cosmos.accounts.v1.MsgInit.funds":
list := []*v1beta1.Coin{}
return protoreflect.ValueOfList(&_MsgInit_4_list{list: &list})
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgInit"))
@ -336,6 +420,12 @@ func (x *fastReflection_MsgInit) ProtoMethods() *protoiface.Methods {
l = options.Size(x.Message)
n += 1 + l + runtime.Sov(uint64(l))
}
if len(x.Funds) > 0 {
for _, e := range x.Funds {
l = options.Size(e)
n += 1 + l + runtime.Sov(uint64(l))
}
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
@ -365,6 +455,22 @@ func (x *fastReflection_MsgInit) ProtoMethods() *protoiface.Methods {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Funds) > 0 {
for iNdEx := len(x.Funds) - 1; iNdEx >= 0; iNdEx-- {
encoded, err := options.Marshal(x.Funds[iNdEx])
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, err
}
i -= len(encoded)
copy(dAtA[i:], encoded)
i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
i--
dAtA[i] = 0x22
}
}
if x.Message != nil {
encoded, err := options.Marshal(x.Message)
if err != nil {
@ -542,6 +648,40 @@ func (x *fastReflection_MsgInit) ProtoMethods() *protoiface.Methods {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType)
}
var msglen int
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++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
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.Funds = append(x.Funds, &v1beta1.Coin{})
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Funds[len(x.Funds)-1]); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
@ -1076,11 +1216,63 @@ func (x *fastReflection_MsgInitResponse) ProtoMethods() *protoiface.Methods {
}
}
var _ protoreflect.List = (*_MsgExecute_4_list)(nil)
type _MsgExecute_4_list struct {
list *[]*v1beta1.Coin
}
func (x *_MsgExecute_4_list) Len() int {
if x.list == nil {
return 0
}
return len(*x.list)
}
func (x *_MsgExecute_4_list) Get(i int) protoreflect.Value {
return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())
}
func (x *_MsgExecute_4_list) Set(i int, value protoreflect.Value) {
valueUnwrapped := value.Message()
concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)
(*x.list)[i] = concreteValue
}
func (x *_MsgExecute_4_list) Append(value protoreflect.Value) {
valueUnwrapped := value.Message()
concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)
*x.list = append(*x.list, concreteValue)
}
func (x *_MsgExecute_4_list) AppendMutable() protoreflect.Value {
v := new(v1beta1.Coin)
*x.list = append(*x.list, v)
return protoreflect.ValueOfMessage(v.ProtoReflect())
}
func (x *_MsgExecute_4_list) Truncate(n int) {
for i := n; i < len(*x.list); i++ {
(*x.list)[i] = nil
}
*x.list = (*x.list)[:n]
}
func (x *_MsgExecute_4_list) NewElement() protoreflect.Value {
v := new(v1beta1.Coin)
return protoreflect.ValueOfMessage(v.ProtoReflect())
}
func (x *_MsgExecute_4_list) IsValid() bool {
return x.list != nil
}
var (
md_MsgExecute protoreflect.MessageDescriptor
fd_MsgExecute_sender protoreflect.FieldDescriptor
fd_MsgExecute_target protoreflect.FieldDescriptor
fd_MsgExecute_message protoreflect.FieldDescriptor
fd_MsgExecute_funds protoreflect.FieldDescriptor
)
func init() {
@ -1089,6 +1281,7 @@ func init() {
fd_MsgExecute_sender = md_MsgExecute.Fields().ByName("sender")
fd_MsgExecute_target = md_MsgExecute.Fields().ByName("target")
fd_MsgExecute_message = md_MsgExecute.Fields().ByName("message")
fd_MsgExecute_funds = md_MsgExecute.Fields().ByName("funds")
}
var _ protoreflect.Message = (*fastReflection_MsgExecute)(nil)
@ -1174,6 +1367,12 @@ func (x *fastReflection_MsgExecute) Range(f func(protoreflect.FieldDescriptor, p
return
}
}
if len(x.Funds) != 0 {
value := protoreflect.ValueOfList(&_MsgExecute_4_list{list: &x.Funds})
if !f(fd_MsgExecute_funds, value) {
return
}
}
}
// Has reports whether a field is populated.
@ -1195,6 +1394,8 @@ func (x *fastReflection_MsgExecute) Has(fd protoreflect.FieldDescriptor) bool {
return x.Target != ""
case "cosmos.accounts.v1.MsgExecute.message":
return x.Message != nil
case "cosmos.accounts.v1.MsgExecute.funds":
return len(x.Funds) != 0
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgExecute"))
@ -1217,6 +1418,8 @@ func (x *fastReflection_MsgExecute) Clear(fd protoreflect.FieldDescriptor) {
x.Target = ""
case "cosmos.accounts.v1.MsgExecute.message":
x.Message = nil
case "cosmos.accounts.v1.MsgExecute.funds":
x.Funds = nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgExecute"))
@ -1242,6 +1445,12 @@ func (x *fastReflection_MsgExecute) Get(descriptor protoreflect.FieldDescriptor)
case "cosmos.accounts.v1.MsgExecute.message":
value := x.Message
return protoreflect.ValueOfMessage(value.ProtoReflect())
case "cosmos.accounts.v1.MsgExecute.funds":
if len(x.Funds) == 0 {
return protoreflect.ValueOfList(&_MsgExecute_4_list{})
}
listValue := &_MsgExecute_4_list{list: &x.Funds}
return protoreflect.ValueOfList(listValue)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgExecute"))
@ -1268,6 +1477,10 @@ func (x *fastReflection_MsgExecute) Set(fd protoreflect.FieldDescriptor, value p
x.Target = value.Interface().(string)
case "cosmos.accounts.v1.MsgExecute.message":
x.Message = value.Message().Interface().(*anypb.Any)
case "cosmos.accounts.v1.MsgExecute.funds":
lv := value.List()
clv := lv.(*_MsgExecute_4_list)
x.Funds = *clv.list
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgExecute"))
@ -1293,6 +1506,12 @@ func (x *fastReflection_MsgExecute) Mutable(fd protoreflect.FieldDescriptor) pro
x.Message = new(anypb.Any)
}
return protoreflect.ValueOfMessage(x.Message.ProtoReflect())
case "cosmos.accounts.v1.MsgExecute.funds":
if x.Funds == nil {
x.Funds = []*v1beta1.Coin{}
}
value := &_MsgExecute_4_list{list: &x.Funds}
return protoreflect.ValueOfList(value)
case "cosmos.accounts.v1.MsgExecute.sender":
panic(fmt.Errorf("field sender of message cosmos.accounts.v1.MsgExecute is not mutable"))
case "cosmos.accounts.v1.MsgExecute.target":
@ -1317,6 +1536,9 @@ func (x *fastReflection_MsgExecute) NewField(fd protoreflect.FieldDescriptor) pr
case "cosmos.accounts.v1.MsgExecute.message":
m := new(anypb.Any)
return protoreflect.ValueOfMessage(m.ProtoReflect())
case "cosmos.accounts.v1.MsgExecute.funds":
list := []*v1beta1.Coin{}
return protoreflect.ValueOfList(&_MsgExecute_4_list{list: &list})
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.accounts.v1.MsgExecute"))
@ -1398,6 +1620,12 @@ func (x *fastReflection_MsgExecute) ProtoMethods() *protoiface.Methods {
l = options.Size(x.Message)
n += 1 + l + runtime.Sov(uint64(l))
}
if len(x.Funds) > 0 {
for _, e := range x.Funds {
l = options.Size(e)
n += 1 + l + runtime.Sov(uint64(l))
}
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
@ -1427,6 +1655,22 @@ func (x *fastReflection_MsgExecute) ProtoMethods() *protoiface.Methods {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Funds) > 0 {
for iNdEx := len(x.Funds) - 1; iNdEx >= 0; iNdEx-- {
encoded, err := options.Marshal(x.Funds[iNdEx])
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, err
}
i -= len(encoded)
copy(dAtA[i:], encoded)
i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
i--
dAtA[i] = 0x22
}
}
if x.Message != nil {
encoded, err := options.Marshal(x.Message)
if err != nil {
@ -1604,6 +1848,40 @@ func (x *fastReflection_MsgExecute) ProtoMethods() *protoiface.Methods {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType)
}
var msglen int
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++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
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.Funds = append(x.Funds, &v1beta1.Coin{})
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Funds[len(x.Funds)-1]); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
@ -3151,6 +3429,9 @@ type MsgInit struct {
AccountType string `protobuf:"bytes,2,opt,name=account_type,json=accountType,proto3" json:"account_type,omitempty"`
// message is the message to be sent to the account.
Message *anypb.Any `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
// funds contains the coins that the account wants to
// send alongside the request.
Funds []*v1beta1.Coin `protobuf:"bytes,4,rep,name=funds,proto3" json:"funds,omitempty"`
}
func (x *MsgInit) Reset() {
@ -3194,6 +3475,13 @@ func (x *MsgInit) GetMessage() *anypb.Any {
return nil
}
func (x *MsgInit) GetFunds() []*v1beta1.Coin {
if x != nil {
return x.Funds
}
return nil
}
// MsgInitResponse defines the Create response type for the Msg/Create RPC method.
type MsgInitResponse struct {
state protoimpl.MessageState
@ -3252,6 +3540,9 @@ type MsgExecute struct {
Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
// message is the message to be sent to the account.
Message *anypb.Any `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
// funds contains the coins that the account wants to
// send alongside the request.
Funds []*v1beta1.Coin `protobuf:"bytes,4,rep,name=funds,proto3" json:"funds,omitempty"`
}
func (x *MsgExecute) Reset() {
@ -3295,6 +3586,13 @@ func (x *MsgExecute) GetMessage() *anypb.Any {
return nil
}
func (x *MsgExecute) GetFunds() []*v1beta1.Coin {
if x != nil {
return x.Funds
}
return nil
}
// MsgExecuteResponse defines the Execute response type for the Msg/Execute RPC method.
type MsgExecuteResponse struct {
state protoimpl.MessageState
@ -3428,78 +3726,93 @@ var file_cosmos_accounts_v1_tx_proto_rawDesc = []byte{
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x63,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x5f, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x12,
0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e,
0x79, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a,
0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x6c, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x49, 0x6e,
0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72,
0x65, 0x73, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65,
0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x01, 0x0a, 0x07, 0x4d, 0x73,
0x67, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a,
0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65,
0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x12, 0x61, 0x0a, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31,
0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00,
0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b,
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x66, 0x75,
0x6e, 0x64, 0x73, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72,
0x22, 0x6c, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x30, 0x0a, 0x08,
0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdc,
0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a,
0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2e, 0x0a,
0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a,
0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f,
0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79,
0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73,
0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x46, 0x0a,
0x12, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63,
0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x74,
0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72,
0x67, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72,
0x22, 0x46, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08,
0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x45,
0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62,
0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73,
0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e,
0x55, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f,
0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07,
0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x45, 0x78,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63,
0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x6e,
0x64, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64,
0x6c, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65,
0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x62, 0x75, 0x6e,
0x64, 0x6c, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75,
0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x47, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x65,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09,
0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x32, 0x8e, 0x02, 0x0a, 0x03, 0x4d, 0x73,
0x67, 0x12, 0x48, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49,
0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x45,
0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45,
0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45,
0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63,
0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12,
0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42,
0x75, 0x6e, 0x64, 0x6c, 0x65, 0x1a, 0x2c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78,
0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72,
0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x32, 0x8e, 0x02, 0x0a,
0x03, 0x4d, 0x73, 0x67, 0x12, 0x48, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x1b, 0x2e, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76,
0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51,
0x0a, 0x07, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x1a, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x63, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64,
0x6c, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75,
0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x1a, 0x2c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73,
0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xbb, 0x01,
0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0x50, 0x01, 0x5a, 0x2e, 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, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x41, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d,
0x6f, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02,
0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73,
0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xbb, 0x01, 0x0a, 0x16, 0x63,
0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
0x5a, 0x2e, 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, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x76, 0x31,
0xa2, 0x02, 0x03, 0x43, 0x41, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x12, 0x43, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5c, 0x56, 0x31,
0xe2, 0x02, 0x1e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0xea, 0x02, 0x14, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -3523,27 +3836,30 @@ var file_cosmos_accounts_v1_tx_proto_goTypes = []interface{}{
(*MsgExecuteBundle)(nil), // 4: cosmos.accounts.v1.MsgExecuteBundle
(*MsgExecuteBundleResponse)(nil), // 5: cosmos.accounts.v1.MsgExecuteBundleResponse
(*anypb.Any)(nil), // 6: google.protobuf.Any
(*UserOperation)(nil), // 7: cosmos.accounts.v1.UserOperation
(*UserOperationResponse)(nil), // 8: cosmos.accounts.v1.UserOperationResponse
(*v1beta1.Coin)(nil), // 7: cosmos.base.v1beta1.Coin
(*UserOperation)(nil), // 8: cosmos.accounts.v1.UserOperation
(*UserOperationResponse)(nil), // 9: cosmos.accounts.v1.UserOperationResponse
}
var file_cosmos_accounts_v1_tx_proto_depIdxs = []int32{
6, // 0: cosmos.accounts.v1.MsgInit.message:type_name -> google.protobuf.Any
6, // 1: cosmos.accounts.v1.MsgInitResponse.response:type_name -> google.protobuf.Any
6, // 2: cosmos.accounts.v1.MsgExecute.message:type_name -> google.protobuf.Any
6, // 3: cosmos.accounts.v1.MsgExecuteResponse.response:type_name -> google.protobuf.Any
7, // 4: cosmos.accounts.v1.MsgExecuteBundle.operations:type_name -> cosmos.accounts.v1.UserOperation
8, // 5: cosmos.accounts.v1.MsgExecuteBundleResponse.responses:type_name -> cosmos.accounts.v1.UserOperationResponse
0, // 6: cosmos.accounts.v1.Msg.Init:input_type -> cosmos.accounts.v1.MsgInit
2, // 7: cosmos.accounts.v1.Msg.Execute:input_type -> cosmos.accounts.v1.MsgExecute
4, // 8: cosmos.accounts.v1.Msg.ExecuteBundle:input_type -> cosmos.accounts.v1.MsgExecuteBundle
1, // 9: cosmos.accounts.v1.Msg.Init:output_type -> cosmos.accounts.v1.MsgInitResponse
3, // 10: cosmos.accounts.v1.Msg.Execute:output_type -> cosmos.accounts.v1.MsgExecuteResponse
5, // 11: cosmos.accounts.v1.Msg.ExecuteBundle:output_type -> cosmos.accounts.v1.MsgExecuteBundleResponse
9, // [9:12] is the sub-list for method output_type
6, // [6:9] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
6, // 0: cosmos.accounts.v1.MsgInit.message:type_name -> google.protobuf.Any
7, // 1: cosmos.accounts.v1.MsgInit.funds:type_name -> cosmos.base.v1beta1.Coin
6, // 2: cosmos.accounts.v1.MsgInitResponse.response:type_name -> google.protobuf.Any
6, // 3: cosmos.accounts.v1.MsgExecute.message:type_name -> google.protobuf.Any
7, // 4: cosmos.accounts.v1.MsgExecute.funds:type_name -> cosmos.base.v1beta1.Coin
6, // 5: cosmos.accounts.v1.MsgExecuteResponse.response:type_name -> google.protobuf.Any
8, // 6: cosmos.accounts.v1.MsgExecuteBundle.operations:type_name -> cosmos.accounts.v1.UserOperation
9, // 7: cosmos.accounts.v1.MsgExecuteBundleResponse.responses:type_name -> cosmos.accounts.v1.UserOperationResponse
0, // 8: cosmos.accounts.v1.Msg.Init:input_type -> cosmos.accounts.v1.MsgInit
2, // 9: cosmos.accounts.v1.Msg.Execute:input_type -> cosmos.accounts.v1.MsgExecute
4, // 10: cosmos.accounts.v1.Msg.ExecuteBundle:input_type -> cosmos.accounts.v1.MsgExecuteBundle
1, // 11: cosmos.accounts.v1.Msg.Init:output_type -> cosmos.accounts.v1.MsgInitResponse
3, // 12: cosmos.accounts.v1.Msg.Execute:output_type -> cosmos.accounts.v1.MsgExecuteResponse
5, // 13: cosmos.accounts.v1.Msg.ExecuteBundle:output_type -> cosmos.accounts.v1.MsgExecuteBundleResponse
11, // [11:14] is the sub-list for method output_type
8, // [8:11] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
}
func init() { file_cosmos_accounts_v1_tx_proto_init() }

View File

@ -4,6 +4,7 @@ import (
"context"
"google.golang.org/grpc"
"google.golang.org/protobuf/runtime/protoiface"
)
// AppModule is a tag interface for app module implementations to use as a basis
@ -86,3 +87,16 @@ type HasEndBlocker interface {
// a block.
EndBlock(context.Context) error
}
// MsgHandlerRouter is implemented by the runtime provider.
type MsgHandlerRouter interface {
// RegisterHandler is called by modules to register msg handler functions.
RegisterHandler(name string, handler func(ctx context.Context, msg protoiface.MessageV1) (msgResp protoiface.MessageV1, err error))
}
// HasMsgHandler is implemented by modules that instead of exposing msg server expose
// a set of handlers.
type HasMsgHandler interface {
// RegisterMsgHandlers is implemented by the module that will register msg handlers.
RegisterMsgHandlers(router MsgHandlerRouter)
}

View File

@ -4,6 +4,9 @@ package cosmos.accounts.testing.counter.v1;
option go_package = "cosmossdk.io/x/accounts/testing/counter/v1";
import "cosmos/base/v1beta1/coin.proto";
import "gogoproto/gogo.proto";
// MsgInit defines a message which initializes the counter with a given amount.
message MsgInit {
// initial_value is the initial amount to set the counter to.
@ -39,6 +42,9 @@ message MsgTestDependenciesResponse {
uint64 before_gas = 3;
// after_gas is used to test gas meter increasing.
uint64 after_gas = 4;
// funds reports the funds from the implementation.Funds method.
repeated cosmos.base.v1beta1.Coin funds = 5
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false];
}
// QueryCounterRequest is used to query the counter value.

View File

@ -7,6 +7,8 @@ option go_package = "cosmossdk.io/x/accounts/v1";
import "google/protobuf/any.proto";
import "cosmos/msg/v1/msg.proto";
import "cosmos/accounts/v1/account_abstraction.proto";
import "cosmos/base/v1beta1/coin.proto";
import "gogoproto/gogo.proto";
// Msg defines the Msg service for the x/accounts module.
service Msg {
@ -33,6 +35,10 @@ message MsgInit {
string account_type = 2;
// message is the message to be sent to the account.
google.protobuf.Any message = 3;
// funds contains the coins that the account wants to
// send alongside the request.
repeated cosmos.base.v1beta1.Coin funds = 4
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false];
}
// MsgInitResponse defines the Create response type for the Msg/Create RPC method.
@ -52,6 +58,10 @@ message MsgExecute {
string target = 2;
// message is the message to be sent to the account.
google.protobuf.Any message = 3;
// funds contains the coins that the account wants to
// send alongside the request.
repeated cosmos.base.v1beta1.Coin funds = 4
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false];
}
// MsgExecuteResponse defines the Execute response type for the Msg/Execute RPC method.

View File

@ -35,12 +35,12 @@ func TestAccountAbstraction(t *testing.T) {
_, aaAddr, err := ak.Init(ctx, "aa_minimal", accCreator, &rotationv1.MsgInit{
PubKeyBytes: privKey.PubKey().Bytes(),
})
}, nil)
require.NoError(t, err)
_, aaFullAddr, err := ak.Init(ctx, "aa_full", accCreator, &rotationv1.MsgInit{
PubKeyBytes: privKey.PubKey().Bytes(),
})
}, nil)
require.NoError(t, err)
aaAddrStr, err := app.AuthKeeper.AddressCodec().BytesToString(aaAddr)

View File

@ -6,7 +6,9 @@ import (
"testing"
"cosmossdk.io/core/header"
storetypes "cosmossdk.io/store/types"
counterv1 "cosmossdk.io/x/accounts/testing/counter/v1"
"cosmossdk.io/x/bank/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/require"
)
@ -17,24 +19,36 @@ import (
// - binary codec
// - header service
// - gas service
// - funds
func TestDependencies(t *testing.T) {
app := setupApp(t)
ak := app.AccountsKeeper
ctx := sdk.NewContext(app.CommitMultiStore(), false, app.Logger()).WithHeaderInfo(header.Info{ChainID: "chain-id"})
ctx = ctx.WithGasMeter(storetypes.NewGasMeter(500_000))
_, counterAddr, err := ak.Init(ctx, "counter", accCreator, &counterv1.MsgInit{
InitialValue: 0,
})
}, nil)
require.NoError(t, err)
// test dependencies
r, err := ak.Execute(ctx, counterAddr, []byte("test"), &counterv1.MsgTestDependencies{})
creatorInitFunds := sdk.NewCoins(sdk.NewInt64Coin("stake", 100_000))
err = testutil.FundAccount(ctx, app.BankKeeper, accCreator, creatorInitFunds)
require.NoError(t, err)
sentFunds := sdk.NewCoins(sdk.NewInt64Coin("stake", 50_000))
r, err := ak.Execute(
ctx,
counterAddr,
accCreator,
&counterv1.MsgTestDependencies{},
sentFunds,
)
require.NoError(t, err)
res := r.(*counterv1.MsgTestDependenciesResponse)
// test gas
require.NotZero(t, res.BeforeGas)
require.NotZero(t, res.AfterGas)
require.Equal(t, uint64(10), res.AfterGas-res.BeforeGas)
require.Equal(t, int(uint64(10)), int(res.AfterGas-res.BeforeGas))
// test header service
require.Equal(t, ctx.HeaderInfo().ChainID, res.ChainId)
@ -43,4 +57,11 @@ func TestDependencies(t *testing.T) {
wantAddr, err := app.AuthKeeper.AddressCodec().BytesToString(counterAddr)
require.NoError(t, err)
require.Equal(t, wantAddr, res.Address)
// test funds
creatorFunds := app.BankKeeper.GetAllBalances(ctx, accCreator)
require.Equal(t, creatorInitFunds.Sub(sentFunds...), creatorFunds)
accFunds := app.BankKeeper.GetAllBalances(ctx, counterAddr)
require.Equal(t, sentFunds, accFunds)
}

View File

@ -8,6 +8,7 @@ import (
"cosmossdk.io/x/accounts/internal/implementation"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
)
@ -77,6 +78,10 @@ func SenderIsAccountsModule(ctx context.Context) bool {
return bytes.Equal(Sender(ctx), accountsModuleAddress)
}
// Funds returns if any funds were sent during the execute or init request. In queries this
// returns nil.
func Funds(ctx context.Context) sdk.Coins { return implementation.Funds(ctx) }
// ExecModule can be used to execute a message towards a module.
func ExecModule[Resp any, RespProto implementation.ProtoMsgG[Resp], Req any, ReqProto implementation.ProtoMsgG[Req]](ctx context.Context, msg ReqProto) (RespProto, error) {
return implementation.ExecModule[Resp, RespProto, Req, ReqProto](ctx, msg)

View File

@ -0,0 +1,52 @@
package accounts
import (
"google.golang.org/protobuf/proto"
bankv1beta1 "cosmossdk.io/api/cosmos/bank/v1beta1"
v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1"
"cosmossdk.io/core/address"
"cosmossdk.io/x/accounts/internal/implementation"
sdk "github.com/cosmos/cosmos-sdk/types"
)
// protoV2GogoWrapper is a wrapper of a protov2 message into a gogo message.
// this is exceptionally allowed to enable accounts to be decoupled from
// the SDK, since x/accounts can support only protov1 in its APIs.
// But in order to keep it decoupled from the SDK we need to use the API module.
// This is a hack to make an API module type work in x/accounts. Once the SDK
// has protov2 support, we can migrate internal/implementation/encoding.go to
// work with protov2.
type protoV2GogoWrapper struct {
gogoProtoPlusV2
}
func (h protoV2GogoWrapper) XXX_MessageName() string {
return string(proto.MessageName(h.gogoProtoPlusV2))
}
func defaultCoinsTransferMsgFunc(addrCdc address.Codec) coinsTransferMsgFunc {
return func(from, to []byte, coins sdk.Coins) (implementation.ProtoMsg, implementation.ProtoMsg, error) {
fromAddr, err := addrCdc.BytesToString(from)
if err != nil {
return nil, nil, err
}
toAddr, err := addrCdc.BytesToString(to)
if err != nil {
return nil, nil, err
}
v2Coins := make([]*v1beta1.Coin, len(coins))
for i, coin := range coins {
v2Coins[i] = &v1beta1.Coin{
Denom: coin.Denom,
Amount: coin.Amount.String(),
}
}
return protoV2GogoWrapper{&bankv1beta1.MsgSend{
FromAddress: fromAddr,
ToAddress: toAddr,
Amount: v2Coins,
}}, new(bankv1beta1.MsgSendResponse), nil
}
}

View File

@ -20,15 +20,15 @@ func TestGenesis(t *testing.T) {
// we init two accounts of the same type
// we set counter to 10
_, addr1, err := k.Init(ctx, "test", []byte("sender"), &types.Empty{})
_, addr1, err := k.Init(ctx, "test", []byte("sender"), &types.Empty{}, nil)
require.NoError(t, err)
_, err = k.Execute(ctx, addr1, []byte("sender"), &types.UInt64Value{Value: 10})
_, err = k.Execute(ctx, addr1, []byte("sender"), &types.UInt64Value{Value: 10}, nil)
require.NoError(t, err)
// we set counter to 20
_, addr2, err := k.Init(ctx, "test", []byte("sender"), &types.Empty{})
_, addr2, err := k.Init(ctx, "test", []byte("sender"), &types.Empty{}, nil)
require.NoError(t, err)
_, err = k.Execute(ctx, addr2, []byte("sender"), &types.UInt64Value{Value: 20})
_, err = k.Execute(ctx, addr2, []byte("sender"), &types.UInt64Value{Value: 20}, nil)
require.NoError(t, err)
// export state

View File

@ -9,6 +9,8 @@ import (
"cosmossdk.io/core/header"
"cosmossdk.io/core/store"
"cosmossdk.io/x/accounts/internal/prefixstore"
sdk "github.com/cosmos/cosmos-sdk/types"
)
var AccountStatePrefix = collections.NewPrefix(255)
@ -25,12 +27,21 @@ type contextValue struct {
store store.KVStore // store is the prefixed store for the account.
sender []byte // sender is the address of the entity invoking the account action.
whoami []byte // whoami is the address of the account being invoked.
funds sdk.Coins // funds reports the coins sent alongside the request.
parentContext context.Context // parentContext that was used to build the account context.
moduleExec ModuleExecFunc // moduleExec is a function that executes a module message, when the resp type is known.
moduleExecUntyped ModuleExecUntypedFunc // moduleExecUntyped is a function that executes a module message, when the resp type is unknown.
moduleQuery ModuleQueryFunc // moduleQuery is a function that queries a module.
}
func addCtx(ctx context.Context, value contextValue) context.Context {
return context.WithValue(ctx, contextKey{}, value)
}
func getCtx(ctx context.Context) contextValue {
return ctx.Value(contextKey{}).(contextValue)
}
// MakeAccountContext creates a new account execution context given:
// storeSvc: which fetches the x/accounts module store.
// accountAddr: the address of the account being invoked, which is used to give the
@ -44,14 +55,16 @@ func MakeAccountContext(
accNumber uint64,
accountAddr []byte,
sender []byte,
funds sdk.Coins,
moduleExec ModuleExecFunc,
moduleExecUntyped ModuleExecUntypedFunc,
moduleQuery ModuleQueryFunc,
) context.Context {
return context.WithValue(ctx, contextKey{}, contextValue{
return addCtx(ctx, contextValue{
store: makeAccountStore(ctx, storeSvc, accNumber),
sender: sender,
whoami: accountAddr,
funds: funds,
parentContext: ctx,
moduleExec: moduleExec,
moduleExecUntyped: moduleExecUntyped,
@ -71,7 +84,7 @@ func makeAccountStore(ctx context.Context, storeSvc store.KVStoreService, accNum
// ExecModuleUntyped can be used to execute a message towards a module, when the response type is unknown.
func ExecModuleUntyped(ctx context.Context, msg ProtoMsg) (ProtoMsg, error) {
// get sender
v := ctx.Value(contextKey{}).(contextValue)
v := getCtx(ctx)
resp, err := v.moduleExecUntyped(v.parentContext, v.whoami, msg)
if err != nil {
@ -84,7 +97,7 @@ func ExecModuleUntyped(ctx context.Context, msg ProtoMsg) (ProtoMsg, error) {
// ExecModule can be used to execute a message towards a module.
func ExecModule[Resp any, RespProto ProtoMsgG[Resp], Req any, ReqProto ProtoMsgG[Req]](ctx context.Context, msg ReqProto) (RespProto, error) {
// get sender
v := ctx.Value(contextKey{}).(contextValue)
v := getCtx(ctx)
// execute module, unwrapping the original context.
resp := RespProto(new(Resp))
@ -100,7 +113,7 @@ func ExecModule[Resp any, RespProto ProtoMsgG[Resp], Req any, ReqProto ProtoMsgG
func QueryModule[Resp any, RespProto ProtoMsgG[Resp], Req any, ReqProto ProtoMsgG[Req]](ctx context.Context, req ReqProto) (RespProto, error) {
// we do not need to check the sender in a query because it is not a state transition.
// we also unwrap the original context.
v := ctx.Value(contextKey{}).(contextValue)
v := getCtx(ctx)
resp := RespProto(new(Resp))
err := v.moduleQuery(v.parentContext, req, resp)
if err != nil {
@ -110,20 +123,21 @@ func QueryModule[Resp any, RespProto ProtoMsgG[Resp], Req any, ReqProto ProtoMsg
}
// openKVStore returns the prefixed store for the account given the context.
func openKVStore(ctx context.Context) store.KVStore {
return ctx.Value(contextKey{}).(contextValue).store
}
func openKVStore(ctx context.Context) store.KVStore { return getCtx(ctx).store }
// Sender returns the address of the entity invoking the account action.
func Sender(ctx context.Context) []byte {
return ctx.Value(contextKey{}).(contextValue).sender
return getCtx(ctx).sender
}
// Whoami returns the address of the account being invoked.
func Whoami(ctx context.Context) []byte {
return ctx.Value(contextKey{}).(contextValue).whoami
return getCtx(ctx).whoami
}
// Funds returns the funds associated with the execution context.
func Funds(ctx context.Context) sdk.Coins { return getCtx(ctx).funds }
type headerService struct{ hs header.Service }
func (h headerService) GetHeaderInfo(ctx context.Context) header.Info {
@ -132,9 +146,7 @@ func (h headerService) GetHeaderInfo(ctx context.Context) header.Info {
var _ gas.Service = (*gasService)(nil)
type gasService struct {
gs gas.Service
}
type gasService struct{ gs gas.Service }
func (g gasService) GetGasMeter(ctx context.Context) gas.Meter {
return g.gs.GetGasMeter(getParentContext(ctx))
@ -145,17 +157,15 @@ func (g gasService) GetBlockGasMeter(ctx context.Context) gas.Meter {
}
func (g gasService) WithGasMeter(ctx context.Context, meter gas.Meter) context.Context {
v := ctx.Value(contextKey{}).(contextValue)
v := getCtx(ctx)
v.parentContext = g.gs.WithGasMeter(v.parentContext, meter)
return context.WithValue(v.parentContext, contextKey{}, v)
}
func (g gasService) WithBlockGasMeter(ctx context.Context, meter gas.Meter) context.Context {
v := ctx.Value(contextKey{}).(contextValue)
v := getCtx(ctx)
v.parentContext = g.gs.WithBlockGasMeter(v.parentContext, meter)
return context.WithValue(v.parentContext, contextKey{}, v)
return addCtx(v.parentContext, v)
}
func getParentContext(ctx context.Context) context.Context {
return ctx.Value(contextKey{}).(contextValue).parentContext
}
func getParentContext(ctx context.Context) context.Context { return getCtx(ctx).parentContext }

View File

@ -18,7 +18,7 @@ func TestMakeAccountContext(t *testing.T) {
sender := []byte("sender")
sb := collections.NewSchemaBuilderFromAccessor(openKVStore)
accountCtx := MakeAccountContext(originalContext, storeService, 1, accountAddr, sender, nil, nil, nil)
accountCtx := MakeAccountContext(originalContext, storeService, 1, accountAddr, sender, nil, nil, nil, nil)
// ensure whoami
require.Equal(t, accountAddr, Whoami(accountCtx))
@ -44,7 +44,7 @@ func TestMakeAccountContext(t *testing.T) {
require.Equal(t, []byte{0, 0, 0, 0, 0, 0, 3, 232}, value)
// ensure calling ExecModule works
accountCtx = MakeAccountContext(originalContext, storeService, 1, []byte("legit-exec-module"), []byte("invoker"), func(ctx context.Context, sender []byte, msg, msgResp ProtoMsg) error {
accountCtx = MakeAccountContext(originalContext, storeService, 1, []byte("legit-exec-module"), []byte("invoker"), nil, func(ctx context.Context, sender []byte, msg, msgResp ProtoMsg) error {
// ensure we unwrapped the context when invoking a module call
require.Equal(t, originalContext, ctx)
Merge(msgResp, &types.StringValue{Value: "module exec was called"})
@ -56,7 +56,7 @@ func TestMakeAccountContext(t *testing.T) {
require.True(t, Equal(&types.StringValue{Value: "module exec was called"}, resp))
// ensure calling ExecModuleUntyped works
accountCtx = MakeAccountContext(originalContext, storeService, 1, []byte("legit-exec-module-untyped"), []byte("invoker"), nil, func(ctx context.Context, sender []byte, msg ProtoMsg) (ProtoMsg, error) {
accountCtx = MakeAccountContext(originalContext, storeService, 1, []byte("legit-exec-module-untyped"), []byte("invoker"), nil, nil, func(ctx context.Context, sender []byte, msg ProtoMsg) (ProtoMsg, error) {
require.Equal(t, originalContext, ctx)
return &types.StringValue{Value: "module exec untyped was called"}, nil
}, nil)
@ -67,7 +67,7 @@ func TestMakeAccountContext(t *testing.T) {
// ensure calling QueryModule works, also by setting everything else communication related to nil
// we can guarantee that exec paths do not impact query paths.
accountCtx = MakeAccountContext(originalContext, storeService, 1, nil, nil, nil, nil, func(ctx context.Context, req, resp ProtoMsg) error {
accountCtx = MakeAccountContext(originalContext, storeService, 1, nil, nil, nil, nil, nil, func(ctx context.Context, req, resp ProtoMsg) error {
require.Equal(t, originalContext, ctx)
Merge(resp, &types.StringValue{Value: "module query was called"})
return nil

View File

@ -22,6 +22,7 @@ import (
"cosmossdk.io/x/accounts/internal/implementation"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
)
var (
@ -39,6 +40,11 @@ var (
AccountByNumber = collections.NewPrefix(2)
)
// coinsTransferMsgFunc defines a function that creates a message to send coins from one
// address to the other, and also a message that parses such response.
// This in most cases will be implemented as a bank.MsgSend creator, but we keep x/accounts independent of bank.
type coinsTransferMsgFunc = func(from, to []byte, coins sdk.Coins) (implementation.ProtoMsg, implementation.ProtoMsg, error)
// QueryRouter represents a router which can be used to route queries to the correct module.
// It returns the handler given the message name, if multiple handlers are returned, then
// it is up to the caller to choose which one to call.
@ -79,17 +85,19 @@ func NewKeeper(
) (Keeper, error) {
sb := collections.NewSchemaBuilder(ss)
keeper := Keeper{
storeService: ss,
eventService: es,
addressCodec: addressCodec,
branchExecutor: bs,
msgRouter: execRouter,
signerProvider: signerProvider,
queryRouter: queryRouter,
AccountNumber: collections.NewSequence(sb, AccountNumberKey, "account_number"),
AccountsByType: collections.NewMap(sb, AccountTypeKeyPrefix, "accounts_by_type", collections.BytesKey, collections.StringValue),
AccountByNumber: collections.NewMap(sb, AccountByNumber, "account_by_number", collections.BytesKey, collections.Uint64Value),
AccountsState: collections.NewMap(sb, implementation.AccountStatePrefix, "accounts_state", collections.PairKeyCodec(collections.Uint64Key, collections.BytesKey), collections.BytesValue),
storeService: ss,
eventService: es,
addressCodec: addressCodec,
branchExecutor: bs,
msgRouter: execRouter,
signerProvider: signerProvider,
queryRouter: queryRouter,
makeSendCoinsMsg: defaultCoinsTransferMsgFunc(addressCodec),
Schema: collections.Schema{},
AccountNumber: collections.NewSequence(sb, AccountNumberKey, "account_number"),
AccountsByType: collections.NewMap(sb, AccountTypeKeyPrefix, "accounts_by_type", collections.BytesKey, collections.StringValue),
AccountByNumber: collections.NewMap(sb, AccountByNumber, "account_by_number", collections.BytesKey, collections.Uint64Value),
AccountsState: collections.NewMap(sb, implementation.AccountStatePrefix, "accounts_state", collections.PairKeyCodec(collections.Uint64Key, collections.BytesKey), collections.BytesValue),
}
schema, err := sb.Build()
@ -107,13 +115,14 @@ func NewKeeper(
type Keeper struct {
// deps coming from the runtime
storeService store.KVStoreService
eventService event.Service
addressCodec address.Codec
branchExecutor branch.Service
msgRouter MsgRouter
signerProvider SignerProvider
queryRouter QueryRouter
storeService store.KVStoreService
eventService event.Service
addressCodec address.Codec
branchExecutor branch.Service
msgRouter MsgRouter
signerProvider SignerProvider
queryRouter QueryRouter
makeSendCoinsMsg coinsTransferMsgFunc
accounts map[string]implementation.Implementation
@ -139,6 +148,7 @@ func (k Keeper) Init(
accountType string,
creator []byte,
initRequest implementation.ProtoMsg,
funds sdk.Coins,
) (implementation.ProtoMsg, []byte, error) {
impl, err := k.getImplementation(accountType)
if err != nil {
@ -157,8 +167,13 @@ func (k Keeper) Init(
return nil, nil, err
}
// send funds, if provided
err = k.maybeSendFunds(ctx, creator, accountAddr, funds)
if err != nil {
return nil, nil, fmt.Errorf("unable to transfer funds: %w", err)
}
// make the context and init the account
ctx = k.makeAccountContext(ctx, num, accountAddr, creator, false)
ctx = k.makeAccountContext(ctx, num, accountAddr, creator, funds, false)
resp, err := impl.Init(ctx, initRequest)
if err != nil {
return nil, nil, err
@ -181,6 +196,7 @@ func (k Keeper) Execute(
accountAddr []byte,
sender []byte,
execRequest implementation.ProtoMsg,
funds sdk.Coins,
) (implementation.ProtoMsg, error) {
// get account type
accountType, err := k.AccountsByType.Get(ctx, accountAddr)
@ -203,8 +219,13 @@ func (k Keeper) Execute(
return nil, err
}
err = k.maybeSendFunds(ctx, sender, accountAddr, funds)
if err != nil {
return nil, fmt.Errorf("unable to transfer coins to account: %w", err)
}
// make the context and execute the account state transition.
ctx = k.makeAccountContext(ctx, accountNum, accountAddr, sender, false)
ctx = k.makeAccountContext(ctx, accountNum, accountAddr, sender, funds, false)
return impl.Execute(ctx, execRequest)
}
@ -235,7 +256,7 @@ func (k Keeper) Query(
}
// make the context and execute the account query
ctx = k.makeAccountContext(ctx, accountNum, accountAddr, nil, true)
ctx = k.makeAccountContext(ctx, accountNum, accountAddr, nil, nil, true)
return impl.Query(ctx, queryRequest)
}
@ -254,7 +275,7 @@ func (k Keeper) makeAddress(accNum uint64) ([]byte, error) {
}
// makeAccountContext makes a new context for the given account.
func (k Keeper) makeAccountContext(ctx context.Context, accountNumber uint64, accountAddr, sender []byte, isQuery bool) context.Context {
func (k Keeper) makeAccountContext(ctx context.Context, accountNumber uint64, accountAddr, sender []byte, funds sdk.Coins, isQuery bool) context.Context {
// if it's not a query we create a context that allows to do anything.
if !isQuery {
return implementation.MakeAccountContext(
@ -263,6 +284,7 @@ func (k Keeper) makeAccountContext(ctx context.Context, accountNumber uint64, ac
accountNumber,
accountAddr,
sender,
funds,
k.sendModuleMessage,
k.sendModuleMessageUntyped,
k.queryModule,
@ -277,6 +299,7 @@ func (k Keeper) makeAccountContext(ctx context.Context, accountNumber uint64, ac
accountNumber,
accountAddr,
nil,
nil,
func(ctx context.Context, sender []byte, msg, msgResp implementation.ProtoMsg) error {
return fmt.Errorf("cannot execute in query context")
},
@ -365,6 +388,31 @@ func (k Keeper) queryModule(ctx context.Context, queryReq, queryResp implementat
return handlers[0](ctx, queryReq, queryResp)
}
// maybeSendFunds will send the provided coins between the provided addresses, if amt
// is not empty.
func (k Keeper) maybeSendFunds(ctx context.Context, from, to []byte, amt sdk.Coins) error {
if amt.IsZero() {
return nil
}
msg, msgResp, err := k.makeSendCoinsMsg(from, to, amt)
if err != nil {
return err
}
// send module message ensures that "from" cannot impersonate.
err = k.sendModuleMessage(ctx, from, msg, msgResp)
if err != nil {
return err
}
return nil
}
type gogoProtoPlusV2 interface {
proto.Message
implementation.ProtoMsg
}
const msgInterfaceName = "cosmos.accounts.v1.MsgInterface"
// creates a new interface type which is an alias of the proto message interface to avoid conflicts with sdk.Msg

View File

@ -101,7 +101,7 @@ func (k Keeper) authenticate(
_, err = k.Execute(ctx, senderAddr, ModuleAccountAddress, &account_abstractionv1.MsgAuthenticate{
Bundler: bundler,
UserOperation: op,
})
}, nil)
return err
}
@ -139,7 +139,7 @@ func (k Keeper) opExecuteMessages(
resp, err := k.Execute(ctx, senderAddr, ModuleAccountAddress, &account_abstractionv1.MsgExecute{
Bundler: bundler,
ExecutionMessages: op.ExecutionMessages,
})
}, nil)
// here is where we check if the account handles execution messages
// if it does not, then we simply execute the provided messages on behalf of the sender
switch {
@ -197,7 +197,7 @@ func (k Keeper) payBundler(
resp, err := k.Execute(ctx, senderAddr, ModuleAccountAddress, &account_abstractionv1.MsgPayBundler{
Bundler: bundler,
BundlerPaymentMessages: op.BundlerPaymentMessages,
})
}, nil)
// here is where we check if the account handles bundler payment messages
// if it does not, then we simply execute the provided messages on behalf of the sender
switch {

View File

@ -28,7 +28,7 @@ func TestKeeper_Init(t *testing.T) {
t.Run("ok", func(t *testing.T) {
sender := []byte("sender")
resp, addr, err := m.Init(ctx, "test", sender, &types.Empty{})
resp, addr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil)
require.NoError(t, err)
require.Equal(t, &types.Empty{}, resp)
require.NotNil(t, addr)
@ -45,7 +45,7 @@ func TestKeeper_Init(t *testing.T) {
})
t.Run("unknown account type", func(t *testing.T) {
_, _, err := m.Init(ctx, "unknown", []byte("sender"), &types.Empty{})
_, _, err := m.Init(ctx, "unknown", []byte("sender"), &types.Empty{}, nil)
require.ErrorIs(t, err, errAccountTypeNotFound)
})
}
@ -56,17 +56,17 @@ func TestKeeper_Execute(t *testing.T) {
// create account
sender := []byte("sender")
_, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{})
_, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil)
require.NoError(t, err)
t.Run("ok", func(t *testing.T) {
resp, err := m.Execute(ctx, accAddr, sender, &types.Empty{})
resp, err := m.Execute(ctx, accAddr, sender, &types.Empty{}, nil)
require.NoError(t, err)
require.Equal(t, &types.Empty{}, resp)
})
t.Run("unknown account", func(t *testing.T) {
_, err := m.Execute(ctx, []byte("unknown"), sender, &types.Empty{})
_, err := m.Execute(ctx, []byte("unknown"), sender, &types.Empty{}, nil)
require.ErrorIs(t, err, collections.ErrNotFound)
})
@ -85,7 +85,7 @@ func TestKeeper_Execute(t *testing.T) {
return accAddr, nil
})
resp, err := m.Execute(ctx, accAddr, sender, &types.Int64Value{Value: 1000})
resp, err := m.Execute(ctx, accAddr, sender, &types.Int64Value{Value: 1000}, nil)
require.NoError(t, err)
require.True(t, implementation.Equal(&types.Empty{}, resp))
})
@ -99,7 +99,7 @@ func TestKeeper_Query(t *testing.T) {
// create account
sender := []byte("sender")
_, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{})
_, accAddr, err := m.Init(ctx, "test", sender, &types.Empty{}, nil)
require.NoError(t, err)
t.Run("ok", func(t *testing.T) {

View File

@ -31,7 +31,7 @@ func (m msgServer) Init(ctx context.Context, request *v1.MsgInit) (*v1.MsgInitRe
}
// run account creation logic
resp, accAddr, err := m.k.Init(ctx, request.AccountType, creator, msg)
resp, accAddr, err := m.k.Init(ctx, request.AccountType, creator, msg, request.Funds)
if err != nil {
return nil, err
}
@ -80,7 +80,7 @@ func (m msgServer) Execute(ctx context.Context, execute *v1.MsgExecute) (*v1.Msg
}
// run account execution logic
resp, err := m.k.Execute(ctx, targetAddr, senderAddr, req)
resp, err := m.k.Execute(ctx, targetAddr, senderAddr, req, execute.Funds)
if err != nil {
return nil, err
}

View File

@ -60,6 +60,7 @@ func (a Account) Init(ctx context.Context, msg *counterv1.MsgInit) (*counterv1.M
if err != nil {
return nil, err
}
// check funds
return &counterv1.MsgInitResponse{}, nil
}
@ -114,17 +115,23 @@ func (a Account) TestDependencies(ctx context.Context, _ *counterv1.MsgTestDepen
chainID := a.hs.GetHeaderInfo(ctx).ChainID
// test gas meter
gasBefore := a.gs.GetGasMeter(ctx).Limit()
a.gs.GetGasMeter(ctx).Consume(gasBefore, "before")
a.gs.GetGasMeter(ctx).Consume(10, "test")
gasAfter := a.gs.GetGasMeter(ctx).Limit()
a.gs.GetGasMeter(ctx).Consume(gasBefore, "After")
gm := a.gs.GetGasMeter(ctx)
gasBefore := gm.Limit() - gm.Remaining()
gm.Consume(10, "test")
gasAfter := gm.Limit() - gm.Remaining()
// test funds
funds := accountstd.Funds(ctx)
if len(funds) == 0 {
return nil, fmt.Errorf("expected funds")
}
return &counterv1.MsgTestDependenciesResponse{
ChainId: chainID,
Address: meStr,
BeforeGas: gasBefore,
AfterGas: gasAfter,
Funds: funds,
}, nil
}

View File

@ -5,6 +5,9 @@ package v1
import (
fmt "fmt"
github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types"
types "github.com/cosmos/cosmos-sdk/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
io "io"
math "math"
@ -245,6 +248,8 @@ type MsgTestDependenciesResponse struct {
BeforeGas uint64 `protobuf:"varint,3,opt,name=before_gas,json=beforeGas,proto3" json:"before_gas,omitempty"`
// after_gas is used to test gas meter increasing.
AfterGas uint64 `protobuf:"varint,4,opt,name=after_gas,json=afterGas,proto3" json:"after_gas,omitempty"`
// funds reports the funds from the implementation.Funds method.
Funds github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,5,rep,name=funds,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"funds"`
}
func (m *MsgTestDependenciesResponse) Reset() { *m = MsgTestDependenciesResponse{} }
@ -308,6 +313,13 @@ func (m *MsgTestDependenciesResponse) GetAfterGas() uint64 {
return 0
}
func (m *MsgTestDependenciesResponse) GetFunds() github_com_cosmos_cosmos_sdk_types.Coins {
if m != nil {
return m.Funds
}
return nil
}
// QueryCounterRequest is used to query the counter value.
type QueryCounterRequest struct {
}
@ -407,30 +419,36 @@ func init() {
}
var fileDescriptor_21c9320877186411 = []byte{
// 363 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x4f, 0x4f, 0xdb, 0x40,
0x10, 0xc5, 0xe3, 0x36, 0xcd, 0x9f, 0x51, 0xab, 0xaa, 0x6e, 0x5a, 0xb9, 0x8d, 0x6a, 0x55, 0xee,
0xa5, 0x42, 0x91, 0x4d, 0xc4, 0x91, 0x13, 0x10, 0x29, 0xca, 0x21, 0x07, 0x22, 0xc4, 0x81, 0x8b,
0xb5, 0xb1, 0x27, 0x66, 0x45, 0xb2, 0x1b, 0x3c, 0xeb, 0x04, 0xbe, 0x04, 0xe2, 0x63, 0x71, 0xcc,
0x91, 0x23, 0x4a, 0xbe, 0x08, 0xf2, 0xae, 0x1d, 0x11, 0x81, 0xb8, 0xed, 0xfb, 0xcd, 0xbc, 0xa7,
0x67, 0xef, 0xc2, 0x7e, 0x24, 0x69, 0x26, 0x29, 0x60, 0x51, 0x24, 0x33, 0xa1, 0x28, 0x50, 0x48,
0x8a, 0x8b, 0x24, 0xd0, 0x12, 0xd3, 0x60, 0xd1, 0x2d, 0x8f, 0xfe, 0x3c, 0x95, 0x4a, 0xda, 0x9e,
0x71, 0xf8, 0xa5, 0xc3, 0x2f, 0x1c, 0x7e, 0xb9, 0xb6, 0xe8, 0x7a, 0x3e, 0xd4, 0x87, 0x94, 0x0c,
0x04, 0x57, 0xf6, 0x3f, 0xf8, 0xc2, 0x05, 0x57, 0x9c, 0x4d, 0xc3, 0x05, 0x9b, 0x66, 0xe8, 0x58,
0x7f, 0xad, 0xff, 0xd5, 0xd1, 0xe7, 0x02, 0x9e, 0xe7, 0xcc, 0xfb, 0x06, 0x5f, 0x8b, 0xfd, 0x11,
0xd2, 0x5c, 0x0a, 0x42, 0xaf, 0x03, 0xb6, 0x46, 0x51, 0x8a, 0x8c, 0xf0, 0xc4, 0x64, 0xdb, 0x3f,
0xa1, 0xc6, 0x66, 0xf9, 0xb9, 0x88, 0x29, 0x94, 0x77, 0x08, 0xbf, 0x5f, 0x6f, 0x97, 0x59, 0xf6,
0x1f, 0x00, 0x81, 0xcb, 0x70, 0xc7, 0xd9, 0x14, 0xb8, 0x3c, 0x32, 0xe6, 0x1f, 0xf0, 0x7d, 0x48,
0xc9, 0x19, 0x92, 0xea, 0xe1, 0x1c, 0x45, 0x8c, 0x22, 0xe2, 0x48, 0xde, 0x9d, 0x05, 0xed, 0x37,
0xf8, 0x36, 0xf5, 0x17, 0x34, 0xa2, 0x4b, 0xc6, 0x45, 0xc8, 0x63, 0x9d, 0xd9, 0x1c, 0xd5, 0xb5,
0x1e, 0xc4, 0xb6, 0x03, 0x75, 0x16, 0xc7, 0x29, 0x12, 0x39, 0x1f, 0xcc, 0xa4, 0x90, 0x79, 0x95,
0x31, 0x4e, 0x64, 0x8a, 0x61, 0xc2, 0xc8, 0xf9, 0x68, 0xaa, 0x18, 0xd2, 0x67, 0x64, 0xb7, 0xa1,
0xc9, 0x26, 0x0a, 0x53, 0x3d, 0xad, 0xea, 0x69, 0x43, 0x83, 0x3e, 0xa3, 0xbc, 0xe7, 0x69, 0x86,
0xe9, 0xed, 0xf6, 0xf3, 0xae, 0x33, 0x24, 0xe5, 0x75, 0xa0, 0xb5, 0x8b, 0x8b, 0x7e, 0x2d, 0xf8,
0xf4, 0xf2, 0x8f, 0x1b, 0x71, 0xdc, 0x7b, 0x58, 0xbb, 0xd6, 0x6a, 0xed, 0x5a, 0x4f, 0x6b, 0xd7,
0xba, 0xdf, 0xb8, 0x95, 0xd5, 0xc6, 0xad, 0x3c, 0x6e, 0xdc, 0xca, 0xc5, 0x9e, 0xb9, 0x58, 0x8a,
0xaf, 0x7c, 0x2e, 0x83, 0x9b, 0xf7, 0x9e, 0xc4, 0xb8, 0xa6, 0xdf, 0xc2, 0xc1, 0x73, 0x00, 0x00,
0x00, 0xff, 0xff, 0xda, 0x84, 0xf8, 0xfc, 0x3f, 0x02, 0x00, 0x00,
// 449 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0xcd, 0x6e, 0xd3, 0x40,
0x10, 0x8e, 0x69, 0xd3, 0x34, 0x03, 0x08, 0x61, 0x02, 0x72, 0x53, 0xe1, 0x56, 0xe6, 0x12, 0xa1,
0xb2, 0xdb, 0xc0, 0x91, 0x13, 0x6d, 0x25, 0xd4, 0x43, 0x0f, 0x44, 0x88, 0x03, 0x97, 0x68, 0x6d,
0x4f, 0xdc, 0x55, 0x9b, 0xdd, 0xe0, 0x59, 0xa7, 0xf4, 0x2d, 0x78, 0x0e, 0x9e, 0xa4, 0xc7, 0x1e,
0x39, 0x01, 0x4a, 0x9e, 0x80, 0x37, 0x40, 0xfb, 0x93, 0x8a, 0x0a, 0xc4, 0xc9, 0xf3, 0x7d, 0x33,
0xdf, 0xe7, 0xd1, 0x7c, 0x0b, 0xfb, 0x85, 0xa6, 0xa9, 0x26, 0x2e, 0x8a, 0x42, 0x37, 0xca, 0x10,
0x37, 0x48, 0x46, 0xaa, 0x8a, 0x3b, 0x88, 0x35, 0x9f, 0x0f, 0x57, 0x25, 0x9b, 0xd5, 0xda, 0xe8,
0x38, 0xf3, 0x0a, 0xb6, 0x52, 0xb0, 0xa0, 0x60, 0xab, 0xb1, 0xf9, 0xb0, 0x9f, 0x06, 0xd7, 0x5c,
0x10, 0xf2, 0xf9, 0x30, 0x47, 0x23, 0xac, 0x8d, 0x54, 0xde, 0xa3, 0xdf, 0xab, 0x74, 0xa5, 0x5d,
0xc9, 0x6d, 0xe5, 0xd9, 0x8c, 0x41, 0xe7, 0x84, 0xaa, 0x63, 0x25, 0x4d, 0xfc, 0x0c, 0xee, 0x4b,
0x25, 0x8d, 0x14, 0xe7, 0xe3, 0xb9, 0x38, 0x6f, 0x30, 0x89, 0x76, 0xa3, 0xc1, 0xfa, 0xe8, 0x5e,
0x20, 0x3f, 0x58, 0x2e, 0x7b, 0x08, 0x0f, 0xc2, 0xfc, 0x08, 0x69, 0xa6, 0x15, 0x61, 0xb6, 0x07,
0xb1, 0xa3, 0x8a, 0x1a, 0x05, 0xe1, 0xa1, 0xdf, 0x28, 0x7e, 0x02, 0x1b, 0x62, 0x6a, 0xeb, 0x60,
0x13, 0x50, 0xf6, 0x1a, 0xfa, 0x7f, 0x4f, 0xaf, 0xbc, 0xe2, 0xa7, 0x00, 0x0a, 0x2f, 0xc6, 0xb7,
0x94, 0x5d, 0x85, 0x17, 0x6f, 0xbc, 0xf8, 0x31, 0x3c, 0x3a, 0xa1, 0xea, 0x3d, 0x92, 0x39, 0xc2,
0x19, 0xaa, 0x12, 0x55, 0x21, 0x91, 0xb2, 0x5f, 0x11, 0x6c, 0xff, 0x83, 0xbf, 0x71, 0xdd, 0x82,
0xcd, 0xe2, 0x54, 0x48, 0x35, 0x96, 0xa5, 0xf3, 0xec, 0x8e, 0x3a, 0x0e, 0x1f, 0x97, 0x71, 0x02,
0x1d, 0x51, 0x96, 0x35, 0x12, 0x25, 0x77, 0x7c, 0x27, 0x40, 0xbb, 0x4a, 0x8e, 0x13, 0x5d, 0xe3,
0xb8, 0x12, 0x94, 0xac, 0xf9, 0x55, 0x3c, 0xf3, 0x56, 0x50, 0xbc, 0x0d, 0x5d, 0x31, 0x31, 0x58,
0xbb, 0xee, 0xba, 0xeb, 0x6e, 0x3a, 0xc2, 0x36, 0x05, 0xb4, 0x27, 0x8d, 0x2a, 0x29, 0x69, 0xef,
0xae, 0x0d, 0xee, 0xbe, 0xdc, 0x62, 0x21, 0x3f, 0x9b, 0x0d, 0x0b, 0xd9, 0xb0, 0x43, 0x2d, 0xd5,
0xc1, 0xfe, 0xd5, 0xf7, 0x9d, 0xd6, 0xd7, 0x1f, 0x3b, 0x83, 0x4a, 0x9a, 0xd3, 0x26, 0x67, 0x85,
0x9e, 0xf2, 0x10, 0xa4, 0xff, 0xbc, 0xa0, 0xf2, 0x8c, 0x9b, 0xcb, 0x19, 0x92, 0x13, 0xd0, 0xc8,
0x3b, 0xdb, 0x53, 0xbc, 0x6b, 0xb0, 0xbe, 0xbc, 0xb9, 0xe0, 0xa7, 0x06, 0xc9, 0x64, 0x7b, 0xd0,
0xbb, 0x4d, 0x87, 0x13, 0xf4, 0xa0, 0xfd, 0x67, 0xa8, 0x1e, 0x1c, 0x1c, 0x5d, 0x2d, 0xd2, 0xe8,
0x7a, 0x91, 0x46, 0x3f, 0x17, 0x69, 0xf4, 0x65, 0x99, 0xb6, 0xae, 0x97, 0x69, 0xeb, 0xdb, 0x32,
0x6d, 0x7d, 0x7c, 0xee, 0xff, 0x4e, 0xe5, 0x19, 0x93, 0x9a, 0x7f, 0xfe, 0xdf, 0x5b, 0xcd, 0x37,
0xdc, 0x53, 0x7a, 0xf5, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x99, 0xcd, 0x49, 0xa2, 0xd8, 0x02, 0x00,
0x00,
}
func (m *MsgInit) Marshal() (dAtA []byte, err error) {
@ -583,6 +601,20 @@ func (m *MsgTestDependenciesResponse) MarshalToSizedBuffer(dAtA []byte) (int, er
_ = i
var l int
_ = l
if len(m.Funds) > 0 {
for iNdEx := len(m.Funds) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Funds[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintCounter(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x2a
}
}
if m.AfterGas != 0 {
i = encodeVarintCounter(dAtA, i, uint64(m.AfterGas))
i--
@ -746,6 +778,12 @@ func (m *MsgTestDependenciesResponse) Size() (n int) {
if m.AfterGas != 0 {
n += 1 + sovCounter(uint64(m.AfterGas))
}
if len(m.Funds) > 0 {
for _, e := range m.Funds {
l = e.Size()
n += 1 + l + sovCounter(uint64(l))
}
}
return n
}
@ -1214,6 +1252,40 @@ func (m *MsgTestDependenciesResponse) Unmarshal(dAtA []byte) error {
break
}
}
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowCounter
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthCounter
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthCounter
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Funds = append(m.Funds, types.Coin{})
if err := m.Funds[len(m.Funds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipCounter(dAtA[iNdEx:])

View File

@ -7,7 +7,10 @@ import (
context "context"
fmt "fmt"
types "github.com/cosmos/cosmos-sdk/codec/types"
github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types"
types1 "github.com/cosmos/cosmos-sdk/types"
_ "github.com/cosmos/cosmos-sdk/types/msgservice"
_ "github.com/cosmos/gogoproto/gogoproto"
grpc1 "github.com/cosmos/gogoproto/grpc"
proto "github.com/cosmos/gogoproto/proto"
grpc "google.golang.org/grpc"
@ -37,6 +40,9 @@ type MsgInit struct {
AccountType string `protobuf:"bytes,2,opt,name=account_type,json=accountType,proto3" json:"account_type,omitempty"`
// message is the message to be sent to the account.
Message *types.Any `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
// funds contains the coins that the account wants to
// send alongside the request.
Funds github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,4,rep,name=funds,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"funds"`
}
func (m *MsgInit) Reset() { *m = MsgInit{} }
@ -93,6 +99,13 @@ func (m *MsgInit) GetMessage() *types.Any {
return nil
}
func (m *MsgInit) GetFunds() github_com_cosmos_cosmos_sdk_types.Coins {
if m != nil {
return m.Funds
}
return nil
}
// MsgInitResponse defines the Create response type for the Msg/Create RPC method.
type MsgInitResponse struct {
// account_address is the address of the newly created account.
@ -156,6 +169,9 @@ type MsgExecute struct {
Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
// message is the message to be sent to the account.
Message *types.Any `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
// funds contains the coins that the account wants to
// send alongside the request.
Funds github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,4,rep,name=funds,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"funds"`
}
func (m *MsgExecute) Reset() { *m = MsgExecute{} }
@ -212,6 +228,13 @@ func (m *MsgExecute) GetMessage() *types.Any {
return nil
}
func (m *MsgExecute) GetFunds() github_com_cosmos_cosmos_sdk_types.Coins {
if m != nil {
return m.Funds
}
return nil
}
// MsgExecuteResponse defines the Execute response type for the Msg/Execute RPC method.
type MsgExecuteResponse struct {
// response is the response returned by the account implementation.
@ -372,38 +395,44 @@ func init() {
func init() { proto.RegisterFile("cosmos/accounts/v1/tx.proto", fileDescriptor_29c2b6d8a13d4189) }
var fileDescriptor_29c2b6d8a13d4189 = []byte{
// 491 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcb, 0x6e, 0xd3, 0x40,
0x14, 0xcd, 0x24, 0x90, 0xd0, 0x9b, 0x42, 0xd1, 0x08, 0x15, 0xe3, 0x4a, 0x56, 0x1a, 0x10, 0x84,
0xaa, 0x1a, 0xd3, 0xc0, 0xaa, 0xbb, 0x54, 0xe2, 0xb5, 0x88, 0x10, 0x16, 0x6c, 0xd8, 0x20, 0xc7,
0x1e, 0x46, 0x11, 0x89, 0xc7, 0xf2, 0x9d, 0x54, 0xf1, 0x02, 0x09, 0xf8, 0x00, 0xc4, 0xa7, 0xf4,
0x33, 0x58, 0x76, 0xc9, 0x12, 0x25, 0x8b, 0xfe, 0x06, 0xb2, 0x3d, 0xe3, 0x04, 0x68, 0x42, 0xa5,
0xee, 0x3c, 0x73, 0xce, 0x3d, 0x0f, 0xcd, 0x35, 0xec, 0x04, 0x12, 0xc7, 0x12, 0x5d, 0x3f, 0x08,
0xe4, 0x24, 0x52, 0xe8, 0x1e, 0x1f, 0xb8, 0x6a, 0xca, 0xe2, 0x44, 0x2a, 0x49, 0x69, 0x01, 0x32,
0x03, 0xb2, 0xe3, 0x03, 0xfb, 0x8e, 0x90, 0x52, 0x8c, 0xb8, 0x9b, 0x33, 0x06, 0x93, 0x0f, 0xae,
0x1f, 0xa5, 0x05, 0xdd, 0xbe, 0xad, 0xb5, 0xc6, 0x28, 0x32, 0x99, 0x31, 0x0a, 0x0d, 0xec, 0x9f,
0x63, 0xa2, 0xbf, 0xdf, 0xfb, 0x03, 0x54, 0x89, 0x1f, 0xa8, 0xa1, 0x8c, 0x0a, 0x76, 0xfb, 0x0b,
0x81, 0x46, 0x1f, 0xc5, 0xcb, 0x68, 0xa8, 0xe8, 0x36, 0xd4, 0x91, 0x47, 0x21, 0x4f, 0x2c, 0xd2,
0x22, 0x9d, 0x0d, 0x4f, 0x9f, 0xe8, 0x2e, 0x6c, 0x1a, 0x01, 0x95, 0xc6, 0xdc, 0xaa, 0xe6, 0x68,
0x53, 0xdf, 0xbd, 0x49, 0x63, 0x4e, 0x19, 0x34, 0xc6, 0x1c, 0xd1, 0x17, 0xdc, 0xaa, 0xb5, 0x48,
0xa7, 0xd9, 0xbd, 0xc5, 0x8a, 0xe8, 0xcc, 0x44, 0x67, 0xbd, 0x28, 0xf5, 0x0c, 0xe9, 0xb0, 0xf9,
0xf5, 0xec, 0x64, 0x4f, 0xeb, 0xb7, 0x47, 0xb0, 0xa5, 0x23, 0x78, 0x1c, 0x63, 0x19, 0x21, 0xa7,
0x0f, 0x60, 0xab, 0xcc, 0x1c, 0x86, 0x09, 0x47, 0xd4, 0x99, 0x6e, 0xe8, 0xeb, 0x5e, 0x71, 0x4b,
0x1f, 0xc1, 0xb5, 0x44, 0x0f, 0xe5, 0xb9, 0x56, 0x39, 0x97, 0xac, 0x76, 0x0a, 0xd0, 0x47, 0xf1,
0x74, 0xca, 0x83, 0x89, 0xe2, 0x2b, 0x3b, 0x6f, 0x43, 0x5d, 0xf9, 0x89, 0xe0, 0x4a, 0xb7, 0xd5,
0xa7, 0xcb, 0x15, 0x7d, 0x06, 0x74, 0x61, 0x5d, 0x76, 0x5d, 0xae, 0x40, 0x2e, 0x54, 0xe1, 0x13,
0xdc, 0x5c, 0xe8, 0x1c, 0x4d, 0xa2, 0x70, 0xc4, 0xa9, 0x05, 0x8d, 0x41, 0xfe, 0x65, 0x9a, 0x98,
0x23, 0xed, 0x01, 0xc8, 0x98, 0x27, 0x7e, 0xf6, 0xea, 0x68, 0x55, 0x5b, 0xb5, 0x4e, 0xb3, 0xbb,
0xcb, 0xfe, 0xdd, 0x36, 0xf6, 0x16, 0x79, 0xf2, 0xca, 0x30, 0xbd, 0xa5, 0xa1, 0xc3, 0xcd, 0xac,
0x85, 0x11, 0x6c, 0x07, 0x60, 0xfd, 0x6d, 0x5f, 0x96, 0x79, 0x0e, 0x1b, 0x26, 0x66, 0xf6, 0x64,
0x99, 0xd7, 0xc3, 0xff, 0x7b, 0xe9, 0x09, 0x6f, 0x31, 0xdb, 0xfd, 0x56, 0x85, 0x5a, 0x1f, 0x05,
0x7d, 0x01, 0x57, 0xf2, 0xe5, 0xdc, 0x39, 0x4f, 0x45, 0xaf, 0x8d, 0x7d, 0x77, 0x0d, 0x58, 0x46,
0x7b, 0x0d, 0x0d, 0xf3, 0xea, 0xce, 0x0a, 0xbe, 0xc6, 0xed, 0xfb, 0xeb, 0xf1, 0x52, 0x32, 0x80,
0xeb, 0x7f, 0xbe, 0xc2, 0xbd, 0xf5, 0x83, 0x05, 0xcb, 0xde, 0xbf, 0x08, 0xcb, 0x98, 0xd8, 0x57,
0x3f, 0x9f, 0x9d, 0xec, 0x91, 0xa3, 0x27, 0x3f, 0x66, 0x0e, 0x39, 0x9d, 0x39, 0xe4, 0xd7, 0xcc,
0x21, 0xdf, 0xe7, 0x4e, 0xe5, 0x74, 0xee, 0x54, 0x7e, 0xce, 0x9d, 0xca, 0x3b, 0xbb, 0x50, 0xc3,
0xf0, 0x23, 0x1b, 0x4a, 0x77, 0xba, 0xfc, 0xe7, 0x0f, 0xea, 0xf9, 0x0a, 0x3d, 0xfe, 0x1d, 0x00,
0x00, 0xff, 0xff, 0x38, 0x4c, 0xe4, 0x12, 0x7b, 0x04, 0x00, 0x00,
// 583 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x54, 0xcd, 0x6e, 0xd3, 0x40,
0x10, 0x8e, 0x9b, 0x36, 0xa1, 0x9b, 0x42, 0xd1, 0xaa, 0x2a, 0xae, 0x2b, 0xb9, 0x69, 0x40, 0x10,
0xaa, 0xb2, 0x6e, 0x02, 0xa7, 0xde, 0x12, 0xc4, 0xdf, 0x21, 0x42, 0x58, 0x70, 0xe1, 0x82, 0xfc,
0xb3, 0x5d, 0xac, 0x26, 0xde, 0xc8, 0xb3, 0x8e, 0x92, 0x03, 0x12, 0xe2, 0x01, 0x10, 0xcf, 0xc1,
0xa9, 0x8f, 0xd1, 0x63, 0x8f, 0x1c, 0x10, 0xa0, 0x04, 0xa9, 0xaf, 0x81, 0x6c, 0xef, 0x3a, 0x01,
0x9a, 0xd0, 0x23, 0xa7, 0xec, 0xce, 0x7c, 0xf3, 0xcd, 0x7c, 0x5f, 0x66, 0x8d, 0xb6, 0x3d, 0x0e,
0x3d, 0x0e, 0x96, 0xe3, 0x79, 0x3c, 0x0e, 0x05, 0x58, 0x83, 0x86, 0x25, 0x86, 0xa4, 0x1f, 0x71,
0xc1, 0x31, 0xce, 0x92, 0x44, 0x25, 0xc9, 0xa0, 0x61, 0x6c, 0x31, 0xce, 0x59, 0x97, 0x5a, 0x29,
0xc2, 0x8d, 0x8f, 0x2c, 0x27, 0x1c, 0x65, 0x70, 0xe3, 0x86, 0xe4, 0xea, 0x01, 0x4b, 0x68, 0x7a,
0xc0, 0x64, 0x62, 0xff, 0x82, 0x26, 0xf2, 0xfc, 0xc6, 0x71, 0x41, 0x44, 0x8e, 0x27, 0x02, 0x1e,
0x4a, 0xb4, 0x29, 0xd1, 0xae, 0x03, 0xd4, 0x1a, 0x34, 0x5c, 0x2a, 0x9c, 0x86, 0xe5, 0xf1, 0x40,
0xe5, 0x37, 0x18, 0x67, 0x3c, 0x3d, 0x5a, 0xc9, 0x29, 0x8b, 0xd6, 0x7e, 0x6a, 0xa8, 0xdc, 0x01,
0xf6, 0x2c, 0x0c, 0x04, 0xde, 0x44, 0x25, 0xa0, 0xa1, 0x4f, 0x23, 0x5d, 0xab, 0x6a, 0xf5, 0x55,
0x5b, 0xde, 0xf0, 0x2e, 0x5a, 0x53, 0x6d, 0xc5, 0xa8, 0x4f, 0xf5, 0xa5, 0x34, 0x5b, 0x91, 0xb1,
0x97, 0xa3, 0x3e, 0xc5, 0x04, 0x95, 0x7b, 0x14, 0xc0, 0x61, 0x54, 0x2f, 0x56, 0xb5, 0x7a, 0xa5,
0xb9, 0x41, 0x32, 0xc1, 0x44, 0x09, 0x26, 0xad, 0x70, 0x64, 0x2b, 0x10, 0x76, 0xd0, 0xca, 0x51,
0x1c, 0xfa, 0xa0, 0x2f, 0x57, 0x8b, 0xf5, 0x4a, 0x73, 0x8b, 0x48, 0xcb, 0x92, 0xe1, 0x89, 0x1c,
0x9e, 0x3c, 0xe4, 0x41, 0xd8, 0x3e, 0x38, 0xfd, 0xb6, 0x53, 0xf8, 0xfc, 0x7d, 0xa7, 0xce, 0x02,
0xf1, 0x36, 0x76, 0x89, 0xc7, 0x7b, 0x96, 0x54, 0x9a, 0xfd, 0xdc, 0x03, 0xff, 0xd8, 0x4a, 0xe6,
0x82, 0xb4, 0x00, 0xec, 0x8c, 0xf9, 0xb0, 0xf2, 0xe1, 0xfc, 0x64, 0x4f, 0x4a, 0xa8, 0x75, 0xd1,
0xba, 0x54, 0x69, 0x53, 0xe8, 0xf3, 0x10, 0x28, 0xbe, 0x83, 0xd6, 0x73, 0x33, 0x7d, 0x3f, 0xa2,
0x00, 0x52, 0xf6, 0x35, 0x19, 0x6e, 0x65, 0x51, 0x7c, 0x80, 0xae, 0x44, 0xb2, 0x28, 0x95, 0x3e,
0x4f, 0x5c, 0x8e, 0xaa, 0x7d, 0xd5, 0x10, 0xea, 0x00, 0x7b, 0x34, 0xa4, 0x5e, 0x2c, 0xe8, 0x5c,
0x5f, 0x37, 0x51, 0x49, 0x38, 0x11, 0xa3, 0x42, 0x3a, 0x2a, 0x6f, 0xff, 0xbd, 0x99, 0x8f, 0x11,
0x9e, 0xaa, 0xcb, 0xfd, 0x9c, 0xb5, 0x49, 0xbb, 0x94, 0x4d, 0xef, 0xd0, 0xf5, 0x29, 0x4f, 0x3b,
0x0e, 0xfd, 0x2e, 0xc5, 0x3a, 0x2a, 0xbb, 0xe9, 0x49, 0x99, 0xa5, 0xae, 0xb8, 0x85, 0x10, 0xef,
0xd3, 0xc8, 0x49, 0x56, 0x1e, 0xf4, 0xa5, 0x54, 0xea, 0x2e, 0xf9, 0xfb, 0xa9, 0x91, 0x57, 0x40,
0xa3, 0xe7, 0x0a, 0x69, 0xcf, 0x14, 0x1d, 0xae, 0x25, 0x2a, 0x14, 0x61, 0xcd, 0x43, 0xfa, 0x9f,
0xed, 0x73, 0x31, 0x4f, 0xd0, 0xaa, 0x1a, 0x33, 0x59, 0x8b, 0xa4, 0xd7, 0xdd, 0x7f, 0xf7, 0x92,
0x15, 0xf6, 0xb4, 0xb6, 0xf9, 0x71, 0x09, 0x15, 0x3b, 0xc0, 0xf0, 0x53, 0xb4, 0x9c, 0xbe, 0xb1,
0xed, 0x8b, 0x58, 0xe4, 0x6a, 0x1a, 0x37, 0x17, 0x24, 0xf3, 0xd1, 0x5e, 0xa0, 0xb2, 0x5a, 0x2c,
0x73, 0x0e, 0x5e, 0xe6, 0x8d, 0xdb, 0x8b, 0xf3, 0x39, 0xa5, 0x87, 0xae, 0xfe, 0xfe, 0x2f, 0xdc,
0x5a, 0x5c, 0x98, 0xa1, 0x8c, 0xfd, 0xcb, 0xa0, 0x54, 0x13, 0x63, 0xe5, 0xfd, 0xf9, 0xc9, 0x9e,
0xd6, 0x7e, 0x70, 0x3a, 0x36, 0xb5, 0xb3, 0xb1, 0xa9, 0xfd, 0x18, 0x9b, 0xda, 0xa7, 0x89, 0x59,
0x38, 0x9b, 0x98, 0x85, 0x2f, 0x13, 0xb3, 0xf0, 0xda, 0xc8, 0xd8, 0xc0, 0x3f, 0x26, 0x01, 0xb7,
0x86, 0xb3, 0x9f, 0x3d, 0xb7, 0x94, 0xae, 0xd0, 0xfd, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x16,
0x7f, 0x4c, 0xfa, 0x78, 0x05, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -586,6 +615,20 @@ func (m *MsgInit) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Funds) > 0 {
for iNdEx := len(m.Funds) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Funds[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x22
}
}
if m.Message != nil {
{
size, err := m.Message.MarshalToSizedBuffer(dAtA[:i])
@ -677,6 +720,20 @@ func (m *MsgExecute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Funds) > 0 {
for iNdEx := len(m.Funds) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Funds[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x22
}
}
if m.Message != nil {
{
size, err := m.Message.MarshalToSizedBuffer(dAtA[:i])
@ -851,6 +908,12 @@ func (m *MsgInit) Size() (n int) {
l = m.Message.Size()
n += 1 + l + sovTx(uint64(l))
}
if len(m.Funds) > 0 {
for _, e := range m.Funds {
l = e.Size()
n += 1 + l + sovTx(uint64(l))
}
}
return n
}
@ -889,6 +952,12 @@ func (m *MsgExecute) Size() (n int) {
l = m.Message.Size()
n += 1 + l + sovTx(uint64(l))
}
if len(m.Funds) > 0 {
for _, e := range m.Funds {
l = e.Size()
n += 1 + l + sovTx(uint64(l))
}
}
return n
}
@ -1074,6 +1143,40 @@ func (m *MsgInit) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Funds = append(m.Funds, types1.Coin{})
if err := m.Funds[len(m.Funds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
@ -1342,6 +1445,40 @@ func (m *MsgExecute) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Funds = append(m.Funds, types1.Coin{})
if err := m.Funds[len(m.Funds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])