From e65a0d44e10c09e96ce13aa601825624e787e4b5 Mon Sep 17 00:00:00 2001 From: Lorenz Herzberger Date: Mon, 22 May 2023 16:21:17 +0200 Subject: [PATCH] ignite scaffold message notarize-asset cid_hash:string sign:string pub_key:string --module asset Signed-off-by: Lorenz Herzberger --- docs/static/openapi.yml | 2 + proto/planetmintgo/asset/tx.proto | 14 +- x/asset/client/cli/tx.go | 1 + x/asset/client/cli/tx_notarize_asset.go | 46 ++ x/asset/keeper/msg_server_notarize_asset.go | 24 + x/asset/module_simulation.go | 17 +- x/asset/simulation/notarize_asset.go | 29 + x/asset/types/codec.go | 6 +- x/asset/types/message_notarize_asset.go | 48 ++ x/asset/types/message_notarize_asset_test.go | 40 ++ x/asset/types/tx.pb.go | 616 ++++++++++++++++++- 11 files changed, 830 insertions(+), 13 deletions(-) create mode 100644 x/asset/client/cli/tx_notarize_asset.go create mode 100644 x/asset/keeper/msg_server_notarize_asset.go create mode 100644 x/asset/simulation/notarize_asset.go create mode 100644 x/asset/types/message_notarize_asset.go create mode 100644 x/asset/types/message_notarize_asset_test.go diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index d564d96..eb88754 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -71434,6 +71434,8 @@ definitions: description: |- Version defines the versioning scheme used to negotiate the IBC verison in the connection handshake. + planetmintgo.asset.MsgNotarizeAssetResponse: + type: object planetmintgo.asset.Params: type: object description: Params defines the parameters for the module. diff --git a/proto/planetmintgo/asset/tx.proto b/proto/planetmintgo/asset/tx.proto index 5e677dd..26dbb9a 100644 --- a/proto/planetmintgo/asset/tx.proto +++ b/proto/planetmintgo/asset/tx.proto @@ -1,7 +1,19 @@ syntax = "proto3"; + package planetmintgo.asset; option go_package = "planetmint-go/x/asset/types"; // Msg defines the Msg service. -service Msg {} \ No newline at end of file +service Msg { + rpc NotarizeAsset (MsgNotarizeAsset) returns (MsgNotarizeAssetResponse); +} +message MsgNotarizeAsset { + string creator = 1; + string cidHash = 2; + string sign = 3; + string pubKey = 4; +} + +message MsgNotarizeAssetResponse {} + diff --git a/x/asset/client/cli/tx.go b/x/asset/client/cli/tx.go index d4d2912..2d938ea 100644 --- a/x/asset/client/cli/tx.go +++ b/x/asset/client/cli/tx.go @@ -30,6 +30,7 @@ func GetTxCmd() *cobra.Command { RunE: client.ValidateCmd, } + cmd.AddCommand(CmdNotarizeAsset()) // this line is used by starport scaffolding # 1 return cmd diff --git a/x/asset/client/cli/tx_notarize_asset.go b/x/asset/client/cli/tx_notarize_asset.go new file mode 100644 index 0000000..eaee2f7 --- /dev/null +++ b/x/asset/client/cli/tx_notarize_asset.go @@ -0,0 +1,46 @@ +package cli + +import ( + "strconv" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" + "planetmint-go/x/asset/types" +) + +var _ = strconv.Itoa(0) + +func CmdNotarizeAsset() *cobra.Command { + cmd := &cobra.Command{ + Use: "notarize-asset [cid-hash] [sign] [pub-key]", + Short: "Broadcast message notarize-asset", + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argCidHash := args[0] + argSign := args[1] + argPubKey := args[2] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgNotarizeAsset( + clientCtx.GetFromAddress().String(), + argCidHash, + argSign, + argPubKey, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/asset/keeper/msg_server_notarize_asset.go b/x/asset/keeper/msg_server_notarize_asset.go new file mode 100644 index 0000000..3a0122f --- /dev/null +++ b/x/asset/keeper/msg_server_notarize_asset.go @@ -0,0 +1,24 @@ +package keeper + +import ( + "context" + + "planetmint-go/x/asset/types" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k msgServer) NotarizeAsset(goCtx context.Context, msg *types.MsgNotarizeAsset) (*types.MsgNotarizeAssetResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // TODO: Handling the message + _ = ctx + + // CHECK IF MSG CREATOR (pub_key) IS ATTESTED MACHINE + + // CHECK SHORTENED URL FOR NODE + + // STORE CID_HASH SIGNATURE PUBLIC KEY + + return &types.MsgNotarizeAssetResponse{}, nil +} diff --git a/x/asset/module_simulation.go b/x/asset/module_simulation.go index 948a29f..97dc2c3 100644 --- a/x/asset/module_simulation.go +++ b/x/asset/module_simulation.go @@ -24,7 +24,11 @@ var ( ) const ( -// this line is used by starport scaffolding # simapp/module/const + opWeightMsgNotarizeAsset = "op_weight_msg_notarize_asset" + // TODO: Determine the simulation weight value + defaultWeightMsgNotarizeAsset int = 100 + + // this line is used by starport scaffolding # simapp/module/const ) // GenerateGenesisState creates a randomized GenState of the module @@ -58,6 +62,17 @@ func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { operations := make([]simtypes.WeightedOperation, 0) + var weightMsgNotarizeAsset int + simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgNotarizeAsset, &weightMsgNotarizeAsset, nil, + func(_ *rand.Rand) { + weightMsgNotarizeAsset = defaultWeightMsgNotarizeAsset + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgNotarizeAsset, + assetsimulation.SimulateMsgNotarizeAsset(am.accountKeeper, am.bankKeeper, am.keeper), + )) + // this line is used by starport scaffolding # simapp/module/operation return operations diff --git a/x/asset/simulation/notarize_asset.go b/x/asset/simulation/notarize_asset.go new file mode 100644 index 0000000..f65f182 --- /dev/null +++ b/x/asset/simulation/notarize_asset.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" + "planetmint-go/x/asset/keeper" + "planetmint-go/x/asset/types" +) + +func SimulateMsgNotarizeAsset( + 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.MsgNotarizeAsset{ + Creator: simAccount.Address.String(), + } + + // TODO: Handling the NotarizeAsset simulation + + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "NotarizeAsset simulation not implemented"), nil, nil + } +} diff --git a/x/asset/types/codec.go b/x/asset/types/codec.go index 844157a..17e6fe3 100644 --- a/x/asset/types/codec.go +++ b/x/asset/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(&MsgNotarizeAsset{}, "asset/NotarizeAsset", nil) // this line is used by starport scaffolding # 2 } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgNotarizeAsset{}, + ) // this line is used by starport scaffolding # 3 msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/asset/types/message_notarize_asset.go b/x/asset/types/message_notarize_asset.go new file mode 100644 index 0000000..0e9bc4e --- /dev/null +++ b/x/asset/types/message_notarize_asset.go @@ -0,0 +1,48 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +const TypeMsgNotarizeAsset = "notarize_asset" + +var _ sdk.Msg = &MsgNotarizeAsset{} + +func NewMsgNotarizeAsset(creator string, cidHash string, sign string, pubKey string) *MsgNotarizeAsset { + return &MsgNotarizeAsset{ + Creator: creator, + CidHash: cidHash, + Sign: sign, + PubKey: pubKey, + } +} + +func (msg *MsgNotarizeAsset) Route() string { + return RouterKey +} + +func (msg *MsgNotarizeAsset) Type() string { + return TypeMsgNotarizeAsset +} + +func (msg *MsgNotarizeAsset) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgNotarizeAsset) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgNotarizeAsset) 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/asset/types/message_notarize_asset_test.go b/x/asset/types/message_notarize_asset_test.go new file mode 100644 index 0000000..bc93d9d --- /dev/null +++ b/x/asset/types/message_notarize_asset_test.go @@ -0,0 +1,40 @@ +package types + +import ( + "testing" + + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/stretchr/testify/require" + "planetmint-go/testutil/sample" +) + +func TestMsgNotarizeAsset_ValidateBasic(t *testing.T) { + tests := []struct { + name string + msg MsgNotarizeAsset + err error + }{ + { + name: "invalid address", + msg: MsgNotarizeAsset{ + Creator: "invalid_address", + }, + err: sdkerrors.ErrInvalidAddress, + }, { + name: "valid address", + msg: MsgNotarizeAsset{ + 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/asset/types/tx.pb.go b/x/asset/types/tx.pb.go index fa0ed6b..45c6998 100644 --- a/x/asset/types/tx.pb.go +++ b/x/asset/types/tx.pb.go @@ -9,7 +9,11 @@ import ( grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/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,134 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type MsgNotarizeAsset struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + CidHash string `protobuf:"bytes,2,opt,name=cidHash,proto3" json:"cidHash,omitempty"` + Sign string `protobuf:"bytes,3,opt,name=sign,proto3" json:"sign,omitempty"` + PubKey string `protobuf:"bytes,4,opt,name=pubKey,proto3" json:"pubKey,omitempty"` +} + +func (m *MsgNotarizeAsset) Reset() { *m = MsgNotarizeAsset{} } +func (m *MsgNotarizeAsset) String() string { return proto.CompactTextString(m) } +func (*MsgNotarizeAsset) ProtoMessage() {} +func (*MsgNotarizeAsset) Descriptor() ([]byte, []int) { + return fileDescriptor_1b35a44a96ae014b, []int{0} +} +func (m *MsgNotarizeAsset) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgNotarizeAsset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgNotarizeAsset.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 *MsgNotarizeAsset) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgNotarizeAsset.Merge(m, src) +} +func (m *MsgNotarizeAsset) XXX_Size() int { + return m.Size() +} +func (m *MsgNotarizeAsset) XXX_DiscardUnknown() { + xxx_messageInfo_MsgNotarizeAsset.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgNotarizeAsset proto.InternalMessageInfo + +func (m *MsgNotarizeAsset) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgNotarizeAsset) GetCidHash() string { + if m != nil { + return m.CidHash + } + return "" +} + +func (m *MsgNotarizeAsset) GetSign() string { + if m != nil { + return m.Sign + } + return "" +} + +func (m *MsgNotarizeAsset) GetPubKey() string { + if m != nil { + return m.PubKey + } + return "" +} + +type MsgNotarizeAssetResponse struct { +} + +func (m *MsgNotarizeAssetResponse) Reset() { *m = MsgNotarizeAssetResponse{} } +func (m *MsgNotarizeAssetResponse) String() string { return proto.CompactTextString(m) } +func (*MsgNotarizeAssetResponse) ProtoMessage() {} +func (*MsgNotarizeAssetResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_1b35a44a96ae014b, []int{1} +} +func (m *MsgNotarizeAssetResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgNotarizeAssetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgNotarizeAssetResponse.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 *MsgNotarizeAssetResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgNotarizeAssetResponse.Merge(m, src) +} +func (m *MsgNotarizeAssetResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgNotarizeAssetResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgNotarizeAssetResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgNotarizeAssetResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgNotarizeAsset)(nil), "planetmintgo.asset.MsgNotarizeAsset") + proto.RegisterType((*MsgNotarizeAssetResponse)(nil), "planetmintgo.asset.MsgNotarizeAssetResponse") +} + func init() { proto.RegisterFile("planetmintgo/asset/tx.proto", fileDescriptor_1b35a44a96ae014b) } var fileDescriptor_1b35a44a96ae014b = []byte{ - // 114 bytes of a gzipped FileDescriptorProto + // 230 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0xc8, 0x49, 0xcc, 0x4b, 0x2d, 0xc9, 0xcd, 0xcc, 0x2b, 0x49, 0xcf, 0xd7, 0x4f, 0x2c, 0x2e, 0x4e, 0x2d, 0xd1, 0x2f, - 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x42, 0x96, 0xd4, 0x03, 0x4b, 0x1a, 0xb1, - 0x72, 0x31, 0xfb, 0x16, 0xa7, 0x3b, 0x99, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, - 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, - 0x43, 0x14, 0x92, 0x89, 0xba, 0xe9, 0xf9, 0xfa, 0x15, 0x30, 0x43, 0x2b, 0x0b, 0x52, 0x8b, 0x93, - 0xd8, 0xc0, 0x06, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xa1, 0xb6, 0x76, 0x55, 0x77, 0x00, - 0x00, 0x00, + 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x42, 0x96, 0xd4, 0x03, 0x4b, 0x2a, 0x15, + 0x71, 0x09, 0xf8, 0x16, 0xa7, 0xfb, 0xe5, 0x97, 0x24, 0x16, 0x65, 0x56, 0xa5, 0x3a, 0x82, 0xc4, + 0x84, 0x24, 0xb8, 0xd8, 0x93, 0x8b, 0x52, 0x13, 0x4b, 0xf2, 0x8b, 0x24, 0x18, 0x15, 0x18, 0x35, + 0x38, 0x83, 0x60, 0x5c, 0xb0, 0x4c, 0x66, 0x8a, 0x47, 0x62, 0x71, 0x86, 0x04, 0x13, 0x54, 0x06, + 0xc2, 0x15, 0x12, 0xe2, 0x62, 0x29, 0xce, 0x4c, 0xcf, 0x93, 0x60, 0x06, 0x0b, 0x83, 0xd9, 0x42, + 0x62, 0x5c, 0x6c, 0x05, 0xa5, 0x49, 0xde, 0xa9, 0x95, 0x12, 0x2c, 0x60, 0x51, 0x28, 0x4f, 0x49, + 0x8a, 0x4b, 0x02, 0xdd, 0xce, 0xa0, 0xd4, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0xa3, 0x2c, 0x2e, + 0x66, 0xdf, 0xe2, 0x74, 0xa1, 0x64, 0x2e, 0x5e, 0x54, 0x37, 0xa9, 0xe8, 0x61, 0x3a, 0x5e, 0x0f, + 0xdd, 0x14, 0x29, 0x1d, 0x62, 0x54, 0xc1, 0xec, 0x72, 0x32, 0x3d, 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, 0xa4, 0x60, 0xd4, 0x4d, 0xcf, 0xd7, 0xaf, 0x80, 0x85, 0x64, 0x65, + 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0x34, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xea, 0xfc, + 0xd0, 0xd3, 0x6c, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -49,6 +169,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 { + NotarizeAsset(ctx context.Context, in *MsgNotarizeAsset, opts ...grpc.CallOption) (*MsgNotarizeAssetResponse, error) } type msgClient struct { @@ -59,22 +180,497 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } +func (c *msgClient) NotarizeAsset(ctx context.Context, in *MsgNotarizeAsset, opts ...grpc.CallOption) (*MsgNotarizeAssetResponse, error) { + out := new(MsgNotarizeAssetResponse) + err := c.cc.Invoke(ctx, "/planetmintgo.asset.Msg/NotarizeAsset", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { + NotarizeAsset(context.Context, *MsgNotarizeAsset) (*MsgNotarizeAssetResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. type UnimplementedMsgServer struct { } +func (*UnimplementedMsgServer) NotarizeAsset(ctx context.Context, req *MsgNotarizeAsset) (*MsgNotarizeAssetResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NotarizeAsset not implemented") +} + func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } +func _Msg_NotarizeAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgNotarizeAsset) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).NotarizeAsset(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/planetmintgo.asset.Msg/NotarizeAsset", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).NotarizeAsset(ctx, req.(*MsgNotarizeAsset)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "planetmintgo.asset.Msg", HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{}, - Metadata: "planetmintgo/asset/tx.proto", + Methods: []grpc.MethodDesc{ + { + MethodName: "NotarizeAsset", + Handler: _Msg_NotarizeAsset_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "planetmintgo/asset/tx.proto", } + +func (m *MsgNotarizeAsset) 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 *MsgNotarizeAsset) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgNotarizeAsset) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PubKey) > 0 { + i -= len(m.PubKey) + copy(dAtA[i:], m.PubKey) + i = encodeVarintTx(dAtA, i, uint64(len(m.PubKey))) + i-- + dAtA[i] = 0x22 + } + if len(m.Sign) > 0 { + i -= len(m.Sign) + copy(dAtA[i:], m.Sign) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sign))) + i-- + dAtA[i] = 0x1a + } + if len(m.CidHash) > 0 { + i -= len(m.CidHash) + copy(dAtA[i:], m.CidHash) + i = encodeVarintTx(dAtA, i, uint64(len(m.CidHash))) + 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 *MsgNotarizeAssetResponse) 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 *MsgNotarizeAssetResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgNotarizeAssetResponse) 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 *MsgNotarizeAsset) 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)) + } + l = len(m.CidHash) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Sign) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.PubKey) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgNotarizeAssetResponse) 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 *MsgNotarizeAsset) 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: MsgNotarizeAsset: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgNotarizeAsset: 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 CidHash", 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.CidHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sign", 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.Sign = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PubKey", 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.PubKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgNotarizeAssetResponse) 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: MsgNotarizeAssetResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgNotarizeAssetResponse: 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") +)