From 057171938c94daa15aca3095434c9287a0c4eab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Eckel?= Date: Tue, 20 May 2025 23:12:32 +0200 Subject: [PATCH] ./ignite scaffold message registerDER der:DER --module der MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jürgen Eckel --- docs/static/openapi.yml | 15 + proto/planetmintgo/der/tx.proto | 14 +- x/der/client/cli/tx.go | 1 + x/der/client/cli/tx_register_der.go | 47 ++ x/der/keeper/msg_server_register_der.go | 17 + x/der/module_simulation.go | 25 +- x/der/simulation/register_der.go | 29 ++ x/der/types/codec.go | 6 +- x/der/types/message_register_der.go | 46 ++ x/der/types/message_register_der_test.go | 40 ++ x/der/types/tx.pb.go | 523 ++++++++++++++++++++++- 11 files changed, 750 insertions(+), 13 deletions(-) create mode 100644 x/der/client/cli/tx_register_der.go create mode 100644 x/der/keeper/msg_server_register_der.go create mode 100644 x/der/simulation/register_der.go create mode 100644 x/der/types/message_register_der.go create mode 100644 x/der/types/message_register_der_test.go diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index 26d38e9..7428bd5 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -77443,6 +77443,21 @@ definitions: lastIncludedPop: type: string format: int64 + planetmintgo.der.DER: + type: object + properties: + zigbeeID: + type: string + dirigeraID: + type: string + dirigeraMAC: + type: string + plmntAddress: + type: string + liquidAddress: + type: string + planetmintgo.der.MsgRegisterDERResponse: + type: object planetmintgo.der.Params: type: object description: Params defines the parameters for the module. diff --git a/proto/planetmintgo/der/tx.proto b/proto/planetmintgo/der/tx.proto index 14d4aed..c171daa 100644 --- a/proto/planetmintgo/der/tx.proto +++ b/proto/planetmintgo/der/tx.proto @@ -1,7 +1,19 @@ syntax = "proto3"; + package planetmintgo.der; +import "planetmintgo/der/der.proto"; + option go_package = "github.com/planetmint/planetmint-go/x/der/types"; // Msg defines the Msg service. -service Msg {} \ No newline at end of file +service Msg { + rpc RegisterDER (MsgRegisterDER) returns (MsgRegisterDERResponse); +} +message MsgRegisterDER { + string creator = 1; + DER der = 2; +} + +message MsgRegisterDERResponse {} + diff --git a/x/der/client/cli/tx.go b/x/der/client/cli/tx.go index 31a57c6..48fa511 100644 --- a/x/der/client/cli/tx.go +++ b/x/der/client/cli/tx.go @@ -30,6 +30,7 @@ func GetTxCmd() *cobra.Command { RunE: client.ValidateCmd, } + cmd.AddCommand(CmdRegisterDER()) // this line is used by starport scaffolding # 1 return cmd diff --git a/x/der/client/cli/tx_register_der.go b/x/der/client/cli/tx_register_der.go new file mode 100644 index 0000000..c63d4d6 --- /dev/null +++ b/x/der/client/cli/tx_register_der.go @@ -0,0 +1,47 @@ +package cli + +import ( + "strconv" + + "encoding/json" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/planetmint/planetmint-go/x/der/types" + "github.com/spf13/cobra" +) + +var _ = strconv.Itoa(0) + +func CmdRegisterDER() *cobra.Command { + cmd := &cobra.Command{ + Use: "register-der [der]", + Short: "Broadcast message registerDER", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argDer := new(types.DER) + err = json.Unmarshal([]byte(args[0]), argDer) + if err != nil { + return err + } + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgRegisterDER( + clientCtx.GetFromAddress().String(), + argDer, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/der/keeper/msg_server_register_der.go b/x/der/keeper/msg_server_register_der.go new file mode 100644 index 0000000..ac74bdd --- /dev/null +++ b/x/der/keeper/msg_server_register_der.go @@ -0,0 +1,17 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/planetmint/planetmint-go/x/der/types" +) + +func (k msgServer) RegisterDER(goCtx context.Context, msg *types.MsgRegisterDER) (*types.MsgRegisterDERResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // TODO: Handling the message + _ = ctx + + return &types.MsgRegisterDERResponse{}, nil +} diff --git a/x/der/module_simulation.go b/x/der/module_simulation.go index 49abb38..969f11f 100644 --- a/x/der/module_simulation.go +++ b/x/der/module_simulation.go @@ -23,7 +23,11 @@ var ( ) const ( -// this line is used by starport scaffolding # simapp/module/const + opWeightMsgRegisterDER = "op_weight_msg_register_der" + // TODO: Determine the simulation weight value + defaultWeightMsgRegisterDER int = 100 + + // this line is used by starport scaffolding # simapp/module/const ) // GenerateGenesisState creates a randomized GenState of the module. @@ -51,6 +55,17 @@ func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedP func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { operations := make([]simtypes.WeightedOperation, 0) + var weightMsgRegisterDER int + simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgRegisterDER, &weightMsgRegisterDER, nil, + func(_ *rand.Rand) { + weightMsgRegisterDER = defaultWeightMsgRegisterDER + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgRegisterDER, + dersimulation.SimulateMsgRegisterDER(am.accountKeeper, am.bankKeeper, am.keeper), + )) + // this line is used by starport scaffolding # simapp/module/operation return operations @@ -59,6 +74,14 @@ func (am AppModule) WeightedOperations(simState module.SimulationState) []simtyp // ProposalMsgs returns msgs used for governance proposals for simulations. func (am AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg { return []simtypes.WeightedProposalMsg{ + simulation.NewWeightedProposalMsg( + opWeightMsgRegisterDER, + defaultWeightMsgRegisterDER, + func(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg { + dersimulation.SimulateMsgRegisterDER(am.accountKeeper, am.bankKeeper, am.keeper) + return nil + }, + ), // this line is used by starport scaffolding # simapp/module/OpMsg } } diff --git a/x/der/simulation/register_der.go b/x/der/simulation/register_der.go new file mode 100644 index 0000000..e85b53b --- /dev/null +++ b/x/der/simulation/register_der.go @@ -0,0 +1,29 @@ +package simulation + +import ( + "math/rand" + + "github.com/cosmos/cosmos-sdk/baseapp" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/planetmint/planetmint-go/x/der/keeper" + "github.com/planetmint/planetmint-go/x/der/types" +) + +func SimulateMsgRegisterDER( + ak types.AccountKeeper, + bk types.BankKeeper, + k keeper.Keeper, +) simtypes.Operation { + return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, + ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { + simAccount, _ := simtypes.RandomAcc(r, accs) + msg := &types.MsgRegisterDER{ + Creator: simAccount.Address.String(), + } + + // TODO: Handling the RegisterDER simulation + + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "RegisterDER simulation not implemented"), nil, nil + } +} diff --git a/x/der/types/codec.go b/x/der/types/codec.go index 844157a..9f3447b 100644 --- a/x/der/types/codec.go +++ b/x/der/types/codec.go @@ -3,15 +3,19 @@ package types import ( "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" - // this line is used by starport scaffolding # 1 + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" ) func RegisterCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgRegisterDER{}, "der/RegisterDER", nil) // this line is used by starport scaffolding # 2 } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgRegisterDER{}, + ) // this line is used by starport scaffolding # 3 msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/der/types/message_register_der.go b/x/der/types/message_register_der.go new file mode 100644 index 0000000..8f99510 --- /dev/null +++ b/x/der/types/message_register_der.go @@ -0,0 +1,46 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +const TypeMsgRegisterDER = "register_der" + +var _ sdk.Msg = &MsgRegisterDER{} + +func NewMsgRegisterDER(creator string, der *DER) *MsgRegisterDER { + return &MsgRegisterDER{ + Creator: creator, + Der: der, + } +} + +func (msg *MsgRegisterDER) Route() string { + return RouterKey +} + +func (msg *MsgRegisterDER) Type() string { + return TypeMsgRegisterDER +} + +func (msg *MsgRegisterDER) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgRegisterDER) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgRegisterDER) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + return nil +} diff --git a/x/der/types/message_register_der_test.go b/x/der/types/message_register_der_test.go new file mode 100644 index 0000000..f91948a --- /dev/null +++ b/x/der/types/message_register_der_test.go @@ -0,0 +1,40 @@ +package types + +import ( + "testing" + + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/planetmint/planetmint-go/testutil/sample" + "github.com/stretchr/testify/require" +) + +func TestMsgRegisterDER_ValidateBasic(t *testing.T) { + tests := []struct { + name string + msg MsgRegisterDER + err error + }{ + { + name: "invalid address", + msg: MsgRegisterDER{ + Creator: "invalid_address", + }, + err: sdkerrors.ErrInvalidAddress, + }, { + name: "valid address", + msg: MsgRegisterDER{ + Creator: sample.AccAddress(), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.msg.ValidateBasic() + if tt.err != nil { + require.ErrorIs(t, err, tt.err) + return + } + require.NoError(t, err) + }) + } +} diff --git a/x/der/types/tx.pb.go b/x/der/types/tx.pb.go index 55bc9f8..509c138 100644 --- a/x/der/types/tx.pb.go +++ b/x/der/types/tx.pb.go @@ -9,7 +9,11 @@ import ( grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" math "math" + math_bits "math/bits" ) // Reference imports to suppress errors if they are not otherwise used. @@ -23,18 +27,118 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type MsgRegisterDER struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + Der *DER `protobuf:"bytes,2,opt,name=der,proto3" json:"der,omitempty"` +} + +func (m *MsgRegisterDER) Reset() { *m = MsgRegisterDER{} } +func (m *MsgRegisterDER) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterDER) ProtoMessage() {} +func (*MsgRegisterDER) Descriptor() ([]byte, []int) { + return fileDescriptor_15158a087cddc7bd, []int{0} +} +func (m *MsgRegisterDER) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterDER) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterDER.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterDER) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterDER.Merge(m, src) +} +func (m *MsgRegisterDER) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterDER) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterDER.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterDER proto.InternalMessageInfo + +func (m *MsgRegisterDER) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgRegisterDER) GetDer() *DER { + if m != nil { + return m.Der + } + return nil +} + +type MsgRegisterDERResponse struct { +} + +func (m *MsgRegisterDERResponse) Reset() { *m = MsgRegisterDERResponse{} } +func (m *MsgRegisterDERResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterDERResponse) ProtoMessage() {} +func (*MsgRegisterDERResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_15158a087cddc7bd, []int{1} +} +func (m *MsgRegisterDERResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterDERResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterDERResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterDERResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterDERResponse.Merge(m, src) +} +func (m *MsgRegisterDERResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterDERResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterDERResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterDERResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgRegisterDER)(nil), "planetmintgo.der.MsgRegisterDER") + proto.RegisterType((*MsgRegisterDERResponse)(nil), "planetmintgo.der.MsgRegisterDERResponse") +} + func init() { proto.RegisterFile("planetmintgo/der/tx.proto", fileDescriptor_15158a087cddc7bd) } var fileDescriptor_15158a087cddc7bd = []byte{ - // 127 bytes of a gzipped FileDescriptorProto + // 232 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2c, 0xc8, 0x49, 0xcc, 0x4b, 0x2d, 0xc9, 0xcd, 0xcc, 0x2b, 0x49, 0xcf, 0xd7, 0x4f, 0x49, 0x2d, 0xd2, 0x2f, 0xa9, 0xd0, - 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x40, 0x96, 0xd2, 0x4b, 0x49, 0x2d, 0x32, 0x62, 0xe5, - 0x62, 0xf6, 0x2d, 0x4e, 0x77, 0xf2, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, - 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, - 0x28, 0xfd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x84, 0x6e, 0x24, - 0xa6, 0x6e, 0x7a, 0xbe, 0x7e, 0x05, 0xc4, 0x9a, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x55, - 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc1, 0xca, 0xf8, 0xe0, 0x87, 0x00, 0x00, 0x00, + 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x40, 0x96, 0xd2, 0x4b, 0x49, 0x2d, 0x92, 0x92, 0xc2, + 0x50, 0x9c, 0x92, 0x5a, 0x04, 0x51, 0xad, 0x14, 0xcc, 0xc5, 0xe7, 0x5b, 0x9c, 0x1e, 0x94, 0x9a, + 0x9e, 0x59, 0x5c, 0x92, 0x5a, 0xe4, 0xe2, 0x1a, 0x24, 0x24, 0xc1, 0xc5, 0x9e, 0x5c, 0x94, 0x9a, + 0x58, 0x92, 0x5f, 0x24, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0x04, 0xe3, 0x0a, 0xa9, 0x73, 0x31, + 0xa7, 0xa4, 0x16, 0x49, 0x30, 0x29, 0x30, 0x6a, 0x70, 0x1b, 0x89, 0xea, 0xa1, 0xdb, 0xa3, 0xe7, + 0xe2, 0x1a, 0x14, 0x04, 0x52, 0xa1, 0x24, 0xc1, 0x25, 0x86, 0x6a, 0x68, 0x50, 0x6a, 0x71, 0x41, + 0x7e, 0x5e, 0x71, 0xaa, 0x51, 0x02, 0x17, 0xb3, 0x6f, 0x71, 0xba, 0x50, 0x24, 0x17, 0x37, 0xb2, + 0x95, 0x0a, 0x98, 0x66, 0xa1, 0xea, 0x97, 0xd2, 0x20, 0xa4, 0x02, 0x66, 0x83, 0x93, 0xe7, 0x89, + 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, + 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0xe9, 0xa7, 0x67, 0x96, 0x64, 0x94, 0x26, + 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x23, 0x4c, 0x43, 0x62, 0xea, 0xa6, 0xe7, 0xeb, 0x57, 0x40, 0x02, + 0xb3, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x44, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xef, 0x7c, 0x8e, 0x08, 0x6d, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -49,6 +153,7 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { + RegisterDER(ctx context.Context, in *MsgRegisterDER, opts ...grpc.CallOption) (*MsgRegisterDERResponse, error) } type msgClient struct { @@ -59,23 +164,421 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } +func (c *msgClient) RegisterDER(ctx context.Context, in *MsgRegisterDER, opts ...grpc.CallOption) (*MsgRegisterDERResponse, error) { + out := new(MsgRegisterDERResponse) + err := c.cc.Invoke(ctx, "/planetmintgo.der.Msg/RegisterDER", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { + RegisterDER(context.Context, *MsgRegisterDER) (*MsgRegisterDERResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. type UnimplementedMsgServer struct { } +func (*UnimplementedMsgServer) RegisterDER(ctx context.Context, req *MsgRegisterDER) (*MsgRegisterDERResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterDER not implemented") +} + func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } +func _Msg_RegisterDER_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRegisterDER) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RegisterDER(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/planetmintgo.der.Msg/RegisterDER", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RegisterDER(ctx, req.(*MsgRegisterDER)) + } + return interceptor(ctx, in, info, handler) +} + var Msg_serviceDesc = _Msg_serviceDesc var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "planetmintgo.der.Msg", HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{}, - Metadata: "planetmintgo/der/tx.proto", + Methods: []grpc.MethodDesc{ + { + MethodName: "RegisterDER", + Handler: _Msg_RegisterDER_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "planetmintgo/der/tx.proto", } + +func (m *MsgRegisterDER) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterDER) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterDER) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Der != nil { + { + size, err := m.Der.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRegisterDERResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterDERResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterDERResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgRegisterDER) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Der != nil { + l = m.Der.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRegisterDERResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgRegisterDER) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRegisterDER: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRegisterDER: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Der", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Der == nil { + m.Der = &DER{} + } + if err := m.Der.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRegisterDERResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRegisterDERResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRegisterDERResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +)