From e219d2f42cf4945d94f441ade20c34d890b086a7 Mon Sep 17 00:00:00 2001 From: turtlebasket Date: Sun, 28 Aug 2022 17:57:06 +0000 Subject: [PATCH] scaffold newBid tx --- docs/static/openapi.yml | 2 + go.mod | 2 - go.sum | 4 - proto/cosmostest/tx.proto | 10 + .../cosmostest.cosmostest/index.ts | 28 ++ .../cosmostest.cosmostest/module/index.ts | 3 + .../cosmostest.cosmostest/module/rest.ts | 10 +- .../cosmos/base/query/v1beta1/pagination.ts | 30 +- .../module/types/cosmostest/tx.ts | 149 +++++- x/cosmostest/client/cli/tx.go | 1 + x/cosmostest/client/cli/tx_new_bid.go | 44 ++ x/cosmostest/handler.go | 3 + x/cosmostest/keeper/msg_server_new_bid.go | 17 + x/cosmostest/module_simulation.go | 15 + x/cosmostest/simulation/new_bid.go | 29 ++ x/cosmostest/types/codec.go | 4 + x/cosmostest/types/message_new_bid.go | 47 ++ x/cosmostest/types/message_new_bid_test.go | 40 ++ x/cosmostest/types/tx.pb.go | 446 +++++++++++++++++- 19 files changed, 833 insertions(+), 51 deletions(-) create mode 100644 x/cosmostest/client/cli/tx_new_bid.go create mode 100644 x/cosmostest/keeper/msg_server_new_bid.go create mode 100644 x/cosmostest/simulation/new_bid.go create mode 100644 x/cosmostest/types/message_new_bid.go create mode 100644 x/cosmostest/types/message_new_bid_test.go diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index 271d21f..6aa5a09 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -47431,6 +47431,8 @@ definitions: properties: auctionId: type: string + cosmostest.cosmostest.MsgNewBidResponse: + type: object cosmostest.cosmostest.NextAuction: type: object properties: diff --git a/go.mod b/go.mod index 34747d9..2fc1a6f 100644 --- a/go.mod +++ b/go.mod @@ -75,7 +75,6 @@ require ( github.com/goccy/go-yaml v1.9.4 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/gateway v1.1.0 // indirect - github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.3 // indirect github.com/google/btree v1.0.0 // indirect @@ -84,7 +83,6 @@ require ( github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect diff --git a/go.sum b/go.sum index e6eb930..91a334c 100644 --- a/go.sum +++ b/go.sum @@ -600,8 +600,6 @@ github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2V github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -729,8 +727,6 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= diff --git a/proto/cosmostest/tx.proto b/proto/cosmostest/tx.proto index cd33f1f..a768653 100644 --- a/proto/cosmostest/tx.proto +++ b/proto/cosmostest/tx.proto @@ -8,6 +8,7 @@ option go_package = "cosmos-test/x/cosmostest/types"; // Msg defines the Msg service. service Msg { rpc NewAuction(MsgNewAuction) returns (MsgNewAuctionResponse); + rpc NewBid(MsgNewBid) returns (MsgNewBidResponse); // this line is used by starport scaffolding # proto/tx/rpc } @@ -22,4 +23,13 @@ message MsgNewAuctionResponse { string auctionId = 1; } +message MsgNewBid { + string creator = 1; + string auctionIndex = 2; + string amount = 3; +} + +message MsgNewBidResponse { +} + // this line is used by starport scaffolding # proto/tx/message diff --git a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/index.ts b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/index.ts index 439264e..43e3ab2 100755 --- a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/index.ts +++ b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/index.ts @@ -232,6 +232,21 @@ export default { }, + async sendMsgNewBid({ rootGetters }, { value, fee = [], memo = '' }) { + try { + const txClient=await initTxClient(rootGetters) + const msg = await txClient.msgNewBid(value) + const result = await txClient.signAndBroadcast([msg], {fee: { amount: fee, + gas: "200000" }, memo}) + return result + } catch (e) { + if (e == MissingWalletError) { + throw new Error('TxClient:MsgNewBid:Init Could not initialize signing client. Wallet is required.') + }else{ + throw new Error('TxClient:MsgNewBid:Send Could not broadcast Tx: '+ e.message) + } + } + }, async sendMsgNewAuction({ rootGetters }, { value, fee = [], memo = '' }) { try { const txClient=await initTxClient(rootGetters) @@ -248,6 +263,19 @@ export default { } }, + async MsgNewBid({ rootGetters }, { value }) { + try { + const txClient=await initTxClient(rootGetters) + const msg = await txClient.msgNewBid(value) + return msg + } catch (e) { + if (e == MissingWalletError) { + throw new Error('TxClient:MsgNewBid:Init Could not initialize signing client. Wallet is required.') + } else{ + throw new Error('TxClient:MsgNewBid:Create Could not create message: ' + e.message) + } + } + }, async MsgNewAuction({ rootGetters }, { value }) { try { const txClient=await initTxClient(rootGetters) diff --git a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/index.ts b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/index.ts index b5114cb..01f823b 100755 --- a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/index.ts +++ b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/index.ts @@ -4,10 +4,12 @@ import { StdFee } from "@cosmjs/launchpad"; import { SigningStargateClient } from "@cosmjs/stargate"; import { Registry, OfflineSigner, EncodeObject, DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; import { Api } from "./rest"; +import { MsgNewBid } from "./types/cosmostest/tx"; import { MsgNewAuction } from "./types/cosmostest/tx"; const types = [ + ["/cosmostest.cosmostest.MsgNewBid", MsgNewBid], ["/cosmostest.cosmostest.MsgNewAuction", MsgNewAuction], ]; @@ -41,6 +43,7 @@ const txClient = async (wallet: OfflineSigner, { addr: addr }: TxClientOptions = return { signAndBroadcast: (msgs: EncodeObject[], { fee, memo }: SignAndBroadcastOptions = {fee: defaultFee, memo: ""}) => client.signAndBroadcast(address, msgs, fee,memo), + msgNewBid: (data: MsgNewBid): EncodeObject => ({ typeUrl: "/cosmostest.cosmostest.MsgNewBid", value: MsgNewBid.fromPartial( data ) }), msgNewAuction: (data: MsgNewAuction): EncodeObject => ({ typeUrl: "/cosmostest.cosmostest.MsgNewAuction", value: MsgNewAuction.fromPartial( data ) }), }; diff --git a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/rest.ts b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/rest.ts index b8f7939..ebf285f 100644 --- a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/rest.ts +++ b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/rest.ts @@ -25,6 +25,8 @@ export interface CosmostestMsgNewAuctionResponse { auctionId?: string; } +export type CosmostestMsgNewBidResponse = object; + export interface CosmostestNextAuction { /** @format uint64 */ auctionId?: string; @@ -114,13 +116,6 @@ export interface V1Beta1PageRequest { * is set. */ count_total?: boolean; - - /** - * reverse is set to true if results are to be returned in the descending order. - * - * Since: cosmos-sdk 0.43 - */ - reverse?: boolean; } /** @@ -350,7 +345,6 @@ export class Api extends HttpClient diff --git a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmos/base/query/v1beta1/pagination.ts b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmos/base/query/v1beta1/pagination.ts index 9c87ac0..0bc568f 100644 --- a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmos/base/query/v1beta1/pagination.ts +++ b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmos/base/query/v1beta1/pagination.ts @@ -38,12 +38,6 @@ export interface PageRequest { * is set. */ count_total: boolean; - /** - * reverse is set to true if results are to be returned in the descending order. - * - * Since: cosmos-sdk 0.43 - */ - reverse: boolean; } /** @@ -68,12 +62,7 @@ export interface PageResponse { total: number; } -const basePageRequest: object = { - offset: 0, - limit: 0, - count_total: false, - reverse: false, -}; +const basePageRequest: object = { offset: 0, limit: 0, count_total: false }; export const PageRequest = { encode(message: PageRequest, writer: Writer = Writer.create()): Writer { @@ -89,9 +78,6 @@ export const PageRequest = { if (message.count_total === true) { writer.uint32(32).bool(message.count_total); } - if (message.reverse === true) { - writer.uint32(40).bool(message.reverse); - } return writer; }, @@ -114,9 +100,6 @@ export const PageRequest = { case 4: message.count_total = reader.bool(); break; - case 5: - message.reverse = reader.bool(); - break; default: reader.skipType(tag & 7); break; @@ -145,11 +128,6 @@ export const PageRequest = { } else { message.count_total = false; } - if (object.reverse !== undefined && object.reverse !== null) { - message.reverse = Boolean(object.reverse); - } else { - message.reverse = false; - } return message; }, @@ -163,7 +141,6 @@ export const PageRequest = { message.limit !== undefined && (obj.limit = message.limit); message.count_total !== undefined && (obj.count_total = message.count_total); - message.reverse !== undefined && (obj.reverse = message.reverse); return obj; }, @@ -189,11 +166,6 @@ export const PageRequest = { } else { message.count_total = false; } - if (object.reverse !== undefined && object.reverse !== null) { - message.reverse = object.reverse; - } else { - message.reverse = false; - } return message; }, }; diff --git a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmostest/tx.ts b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmostest/tx.ts index 75bfb2a..1e44468 100644 --- a/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmostest/tx.ts +++ b/vue/src/store/generated/cosmos-test/cosmostest.cosmostest/module/types/cosmostest/tx.ts @@ -14,6 +14,14 @@ export interface MsgNewAuctionResponse { auctionId: string; } +export interface MsgNewBid { + creator: string; + auctionIndex: string; + amount: string; +} + +export interface MsgNewBidResponse {} + const baseMsgNewAuction: object = { creator: "", owner: "", @@ -186,10 +194,139 @@ export const MsgNewAuctionResponse = { }, }; +const baseMsgNewBid: object = { creator: "", auctionIndex: "", amount: "" }; + +export const MsgNewBid = { + encode(message: MsgNewBid, writer: Writer = Writer.create()): Writer { + if (message.creator !== "") { + writer.uint32(10).string(message.creator); + } + if (message.auctionIndex !== "") { + writer.uint32(18).string(message.auctionIndex); + } + if (message.amount !== "") { + writer.uint32(26).string(message.amount); + } + return writer; + }, + + decode(input: Reader | Uint8Array, length?: number): MsgNewBid { + const reader = input instanceof Uint8Array ? new Reader(input) : input; + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseMsgNewBid } as MsgNewBid; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.creator = reader.string(); + break; + case 2: + message.auctionIndex = reader.string(); + break; + case 3: + message.amount = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): MsgNewBid { + const message = { ...baseMsgNewBid } as MsgNewBid; + if (object.creator !== undefined && object.creator !== null) { + message.creator = String(object.creator); + } else { + message.creator = ""; + } + if (object.auctionIndex !== undefined && object.auctionIndex !== null) { + message.auctionIndex = String(object.auctionIndex); + } else { + message.auctionIndex = ""; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = String(object.amount); + } else { + message.amount = ""; + } + return message; + }, + + toJSON(message: MsgNewBid): unknown { + const obj: any = {}; + message.creator !== undefined && (obj.creator = message.creator); + message.auctionIndex !== undefined && + (obj.auctionIndex = message.auctionIndex); + message.amount !== undefined && (obj.amount = message.amount); + return obj; + }, + + fromPartial(object: DeepPartial): MsgNewBid { + const message = { ...baseMsgNewBid } as MsgNewBid; + if (object.creator !== undefined && object.creator !== null) { + message.creator = object.creator; + } else { + message.creator = ""; + } + if (object.auctionIndex !== undefined && object.auctionIndex !== null) { + message.auctionIndex = object.auctionIndex; + } else { + message.auctionIndex = ""; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = object.amount; + } else { + message.amount = ""; + } + return message; + }, +}; + +const baseMsgNewBidResponse: object = {}; + +export const MsgNewBidResponse = { + encode(_: MsgNewBidResponse, writer: Writer = Writer.create()): Writer { + return writer; + }, + + decode(input: Reader | Uint8Array, length?: number): MsgNewBidResponse { + const reader = input instanceof Uint8Array ? new Reader(input) : input; + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseMsgNewBidResponse } as MsgNewBidResponse; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(_: any): MsgNewBidResponse { + const message = { ...baseMsgNewBidResponse } as MsgNewBidResponse; + return message; + }, + + toJSON(_: MsgNewBidResponse): unknown { + const obj: any = {}; + return obj; + }, + + fromPartial(_: DeepPartial): MsgNewBidResponse { + const message = { ...baseMsgNewBidResponse } as MsgNewBidResponse; + return message; + }, +}; + /** Msg defines the Msg service. */ export interface Msg { - /** this line is used by starport scaffolding # proto/tx/rpc */ NewAuction(request: MsgNewAuction): Promise; + /** this line is used by starport scaffolding # proto/tx/rpc */ + NewBid(request: MsgNewBid): Promise; } export class MsgClientImpl implements Msg { @@ -208,6 +345,16 @@ export class MsgClientImpl implements Msg { MsgNewAuctionResponse.decode(new Reader(data)) ); } + + NewBid(request: MsgNewBid): Promise { + const data = MsgNewBid.encode(request).finish(); + const promise = this.rpc.request( + "cosmostest.cosmostest.Msg", + "NewBid", + data + ); + return promise.then((data) => MsgNewBidResponse.decode(new Reader(data))); + } } interface Rpc { diff --git a/x/cosmostest/client/cli/tx.go b/x/cosmostest/client/cli/tx.go index d3aebc4..7fc04e6 100644 --- a/x/cosmostest/client/cli/tx.go +++ b/x/cosmostest/client/cli/tx.go @@ -31,6 +31,7 @@ func GetTxCmd() *cobra.Command { } cmd.AddCommand(CmdNewAuction()) + cmd.AddCommand(CmdNewBid()) // this line is used by starport scaffolding # 1 return cmd diff --git a/x/cosmostest/client/cli/tx_new_bid.go b/x/cosmostest/client/cli/tx_new_bid.go new file mode 100644 index 0000000..bcaadb5 --- /dev/null +++ b/x/cosmostest/client/cli/tx_new_bid.go @@ -0,0 +1,44 @@ +package cli + +import ( + "strconv" + + "cosmos-test/x/cosmostest/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" +) + +var _ = strconv.Itoa(0) + +func CmdNewBid() *cobra.Command { + cmd := &cobra.Command{ + Use: "new-bid [auction-index] [amount]", + Short: "Broadcast message newBid", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argAuctionIndex := args[0] + argAmount := args[1] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgNewBid( + clientCtx.GetFromAddress().String(), + argAuctionIndex, + argAmount, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/cosmostest/handler.go b/x/cosmostest/handler.go index cdd9214..b378a06 100644 --- a/x/cosmostest/handler.go +++ b/x/cosmostest/handler.go @@ -20,6 +20,9 @@ func NewHandler(k keeper.Keeper) sdk.Handler { case *types.MsgNewAuction: res, err := msgServer.NewAuction(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgNewBid: + res, err := msgServer.NewBid(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) // this line is used by starport scaffolding # 1 default: errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) diff --git a/x/cosmostest/keeper/msg_server_new_bid.go b/x/cosmostest/keeper/msg_server_new_bid.go new file mode 100644 index 0000000..80b4311 --- /dev/null +++ b/x/cosmostest/keeper/msg_server_new_bid.go @@ -0,0 +1,17 @@ +package keeper + +import ( + "context" + + "cosmos-test/x/cosmostest/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k msgServer) NewBid(goCtx context.Context, msg *types.MsgNewBid) (*types.MsgNewBidResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // TODO: Handling the message + _ = ctx + + return &types.MsgNewBidResponse{}, nil +} diff --git a/x/cosmostest/module_simulation.go b/x/cosmostest/module_simulation.go index 0d76cef..0996dc0 100644 --- a/x/cosmostest/module_simulation.go +++ b/x/cosmostest/module_simulation.go @@ -28,6 +28,10 @@ const ( // TODO: Determine the simulation weight value defaultWeightMsgNewAuction int = 100 + opWeightMsgNewBid = "op_weight_msg_new_bid" + // TODO: Determine the simulation weight value + defaultWeightMsgNewBid int = 100 + // this line is used by starport scaffolding # simapp/module/const ) @@ -73,6 +77,17 @@ func (am AppModule) WeightedOperations(simState module.SimulationState) []simtyp cosmostestsimulation.SimulateMsgNewAuction(am.accountKeeper, am.bankKeeper, am.keeper), )) + var weightMsgNewBid int + simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgNewBid, &weightMsgNewBid, nil, + func(_ *rand.Rand) { + weightMsgNewBid = defaultWeightMsgNewBid + }, + ) + operations = append(operations, simulation.NewWeightedOperation( + weightMsgNewBid, + cosmostestsimulation.SimulateMsgNewBid(am.accountKeeper, am.bankKeeper, am.keeper), + )) + // this line is used by starport scaffolding # simapp/module/operation return operations diff --git a/x/cosmostest/simulation/new_bid.go b/x/cosmostest/simulation/new_bid.go new file mode 100644 index 0000000..e3289e0 --- /dev/null +++ b/x/cosmostest/simulation/new_bid.go @@ -0,0 +1,29 @@ +package simulation + +import ( + "math/rand" + + "cosmos-test/x/cosmostest/keeper" + "cosmos-test/x/cosmostest/types" + "github.com/cosmos/cosmos-sdk/baseapp" + sdk "github.com/cosmos/cosmos-sdk/types" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" +) + +func SimulateMsgNewBid( + 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.MsgNewBid{ + Creator: simAccount.Address.String(), + } + + // TODO: Handling the NewBid simulation + + return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "NewBid simulation not implemented"), nil, nil + } +} diff --git a/x/cosmostest/types/codec.go b/x/cosmostest/types/codec.go index b6a9138..a6f3a8b 100644 --- a/x/cosmostest/types/codec.go +++ b/x/cosmostest/types/codec.go @@ -9,6 +9,7 @@ import ( func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgNewAuction{}, "cosmostest/NewAuction", nil) + cdc.RegisterConcrete(&MsgNewBid{}, "cosmostest/NewBid", nil) // this line is used by starport scaffolding # 2 } @@ -16,6 +17,9 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgNewAuction{}, ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgNewBid{}, + ) // this line is used by starport scaffolding # 3 msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/cosmostest/types/message_new_bid.go b/x/cosmostest/types/message_new_bid.go new file mode 100644 index 0000000..99fe197 --- /dev/null +++ b/x/cosmostest/types/message_new_bid.go @@ -0,0 +1,47 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +const TypeMsgNewBid = "new_bid" + +var _ sdk.Msg = &MsgNewBid{} + +func NewMsgNewBid(creator string, auctionIndex string, amount string) *MsgNewBid { + return &MsgNewBid{ + Creator: creator, + AuctionIndex: auctionIndex, + Amount: amount, + } +} + +func (msg *MsgNewBid) Route() string { + return RouterKey +} + +func (msg *MsgNewBid) Type() string { + return TypeMsgNewBid +} + +func (msg *MsgNewBid) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgNewBid) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgNewBid) 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/cosmostest/types/message_new_bid_test.go b/x/cosmostest/types/message_new_bid_test.go new file mode 100644 index 0000000..2226ddb --- /dev/null +++ b/x/cosmostest/types/message_new_bid_test.go @@ -0,0 +1,40 @@ +package types + +import ( + "testing" + + "cosmos-test/testutil/sample" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/stretchr/testify/require" +) + +func TestMsgNewBid_ValidateBasic(t *testing.T) { + tests := []struct { + name string + msg MsgNewBid + err error + }{ + { + name: "invalid address", + msg: MsgNewBid{ + Creator: "invalid_address", + }, + err: sdkerrors.ErrInvalidAddress, + }, { + name: "valid address", + msg: MsgNewBid{ + 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/cosmostest/types/tx.pb.go b/x/cosmostest/types/tx.pb.go index 6cd5c70..7efb30d 100644 --- a/x/cosmostest/types/tx.pb.go +++ b/x/cosmostest/types/tx.pb.go @@ -139,15 +139,113 @@ func (m *MsgNewAuctionResponse) GetAuctionId() string { return "" } +type MsgNewBid struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + AuctionIndex string `protobuf:"bytes,2,opt,name=auctionIndex,proto3" json:"auctionIndex,omitempty"` + Amount string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (m *MsgNewBid) Reset() { *m = MsgNewBid{} } +func (m *MsgNewBid) String() string { return proto.CompactTextString(m) } +func (*MsgNewBid) ProtoMessage() {} +func (*MsgNewBid) Descriptor() ([]byte, []int) { + return fileDescriptor_2fcd5aa4ac15d93c, []int{2} +} +func (m *MsgNewBid) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgNewBid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgNewBid.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 *MsgNewBid) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgNewBid.Merge(m, src) +} +func (m *MsgNewBid) XXX_Size() int { + return m.Size() +} +func (m *MsgNewBid) XXX_DiscardUnknown() { + xxx_messageInfo_MsgNewBid.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgNewBid proto.InternalMessageInfo + +func (m *MsgNewBid) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgNewBid) GetAuctionIndex() string { + if m != nil { + return m.AuctionIndex + } + return "" +} + +func (m *MsgNewBid) GetAmount() string { + if m != nil { + return m.Amount + } + return "" +} + +type MsgNewBidResponse struct { +} + +func (m *MsgNewBidResponse) Reset() { *m = MsgNewBidResponse{} } +func (m *MsgNewBidResponse) String() string { return proto.CompactTextString(m) } +func (*MsgNewBidResponse) ProtoMessage() {} +func (*MsgNewBidResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2fcd5aa4ac15d93c, []int{3} +} +func (m *MsgNewBidResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgNewBidResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgNewBidResponse.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 *MsgNewBidResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgNewBidResponse.Merge(m, src) +} +func (m *MsgNewBidResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgNewBidResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgNewBidResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgNewBidResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgNewAuction)(nil), "cosmostest.cosmostest.MsgNewAuction") proto.RegisterType((*MsgNewAuctionResponse)(nil), "cosmostest.cosmostest.MsgNewAuctionResponse") + proto.RegisterType((*MsgNewBid)(nil), "cosmostest.cosmostest.MsgNewBid") + proto.RegisterType((*MsgNewBidResponse)(nil), "cosmostest.cosmostest.MsgNewBidResponse") } func init() { proto.RegisterFile("cosmostest/tx.proto", fileDescriptor_2fcd5aa4ac15d93c) } var fileDescriptor_2fcd5aa4ac15d93c = []byte{ - // 239 bytes of a gzipped FileDescriptorProto + // 306 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xce, 0x2f, 0xce, 0xcd, 0x2f, 0x2e, 0x49, 0x2d, 0x2e, 0xd1, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x45, 0x08, 0xea, 0x21, 0x98, 0x4a, 0xa5, 0x5c, 0xbc, 0xbe, 0xc5, 0xe9, 0x7e, 0xa9, 0xe5, @@ -157,12 +255,17 @@ var fileDescriptor_2fcd5aa4ac15d93c = []byte{ 0x4d, 0x95, 0x60, 0x06, 0x0b, 0x82, 0xd9, 0x42, 0x0a, 0x5c, 0xdc, 0x29, 0xa9, 0xc5, 0xc9, 0x45, 0x99, 0x05, 0x20, 0x23, 0x25, 0x58, 0xc0, 0x52, 0xc8, 0x42, 0x4a, 0xa6, 0x5c, 0xa2, 0x28, 0xd6, 0x06, 0xa5, 0x16, 0x17, 0xe4, 0xe7, 0x15, 0xa7, 0x0a, 0xc9, 0x70, 0x71, 0x26, 0x42, 0x84, 0x3c, - 0x53, 0xa0, 0x0e, 0x40, 0x08, 0x18, 0xa5, 0x73, 0x31, 0xfb, 0x16, 0xa7, 0x0b, 0x25, 0x70, 0x71, - 0x21, 0xb9, 0x58, 0x45, 0x0f, 0xab, 0xd7, 0xf4, 0x50, 0x2c, 0x90, 0xd2, 0x21, 0x46, 0x15, 0xcc, - 0x19, 0x4e, 0x16, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, - 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x25, 0x07, 0xd1, - 0xab, 0x0b, 0x0e, 0xdd, 0x0a, 0x7d, 0xe4, 0xa0, 0xae, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0x07, - 0xb7, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xb3, 0x83, 0x38, 0xc2, 0x85, 0x01, 0x00, 0x00, + 0x53, 0xa0, 0x0e, 0x40, 0x08, 0x28, 0x25, 0x72, 0x71, 0x42, 0xb4, 0x39, 0x65, 0xa6, 0xe0, 0x71, + 0xa9, 0x12, 0x17, 0x0f, 0x4c, 0x4f, 0x5e, 0x4a, 0x6a, 0x05, 0xd4, 0xc1, 0x28, 0x62, 0x42, 0x62, + 0x5c, 0x6c, 0x89, 0xb9, 0xf9, 0xa5, 0x79, 0x25, 0x50, 0x97, 0x43, 0x79, 0x4a, 0xc2, 0x5c, 0x82, + 0x70, 0x2b, 0x60, 0xae, 0x32, 0xda, 0xcb, 0xc8, 0xc5, 0xec, 0x5b, 0x9c, 0x2e, 0x94, 0xc0, 0xc5, + 0x85, 0x14, 0x54, 0x2a, 0x7a, 0x58, 0xc3, 0x54, 0x0f, 0xc5, 0x67, 0x52, 0x3a, 0xc4, 0xa8, 0x82, + 0xfb, 0x3f, 0x84, 0x8b, 0x0d, 0xea, 0x3d, 0x05, 0xbc, 0xfa, 0x9c, 0x32, 0x53, 0xa4, 0x34, 0x08, + 0xa9, 0x80, 0x99, 0xea, 0x64, 0x71, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, + 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, + 0x72, 0x10, 0x7d, 0xba, 0xe0, 0xc4, 0x52, 0xa1, 0x8f, 0x9c, 0x72, 0x2a, 0x0b, 0x52, 0x8b, 0x93, + 0xd8, 0xc0, 0xa9, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x5f, 0xf4, 0xdf, 0xab, 0x54, 0x02, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -178,6 +281,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 { NewAuction(ctx context.Context, in *MsgNewAuction, opts ...grpc.CallOption) (*MsgNewAuctionResponse, error) + NewBid(ctx context.Context, in *MsgNewBid, opts ...grpc.CallOption) (*MsgNewBidResponse, error) } type msgClient struct { @@ -197,9 +301,19 @@ func (c *msgClient) NewAuction(ctx context.Context, in *MsgNewAuction, opts ...g return out, nil } +func (c *msgClient) NewBid(ctx context.Context, in *MsgNewBid, opts ...grpc.CallOption) (*MsgNewBidResponse, error) { + out := new(MsgNewBidResponse) + err := c.cc.Invoke(ctx, "/cosmostest.cosmostest.Msg/NewBid", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { NewAuction(context.Context, *MsgNewAuction) (*MsgNewAuctionResponse, error) + NewBid(context.Context, *MsgNewBid) (*MsgNewBidResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -209,6 +323,9 @@ type UnimplementedMsgServer struct { func (*UnimplementedMsgServer) NewAuction(ctx context.Context, req *MsgNewAuction) (*MsgNewAuctionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method NewAuction not implemented") } +func (*UnimplementedMsgServer) NewBid(ctx context.Context, req *MsgNewBid) (*MsgNewBidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NewBid not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -232,6 +349,24 @@ func _Msg_NewAuction_Handler(srv interface{}, ctx context.Context, dec func(inte return interceptor(ctx, in, info, handler) } +func _Msg_NewBid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgNewBid) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).NewBid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmostest.cosmostest.Msg/NewBid", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).NewBid(ctx, req.(*MsgNewBid)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "cosmostest.cosmostest.Msg", HandlerType: (*MsgServer)(nil), @@ -240,6 +375,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "NewAuction", Handler: _Msg_NewAuction_Handler, }, + { + MethodName: "NewBid", + Handler: _Msg_NewBid_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "cosmostest/tx.proto", @@ -326,6 +465,73 @@ func (m *MsgNewAuctionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgNewBid) 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 *MsgNewBid) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgNewBid) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Amount) > 0 { + i -= len(m.Amount) + copy(dAtA[i:], m.Amount) + i = encodeVarintTx(dAtA, i, uint64(len(m.Amount))) + i-- + dAtA[i] = 0x1a + } + if len(m.AuctionIndex) > 0 { + i -= len(m.AuctionIndex) + copy(dAtA[i:], m.AuctionIndex) + i = encodeVarintTx(dAtA, i, uint64(len(m.AuctionIndex))) + 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 *MsgNewBidResponse) 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 *MsgNewBidResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgNewBidResponse) 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 @@ -375,6 +581,36 @@ func (m *MsgNewAuctionResponse) Size() (n int) { return n } +func (m *MsgNewBid) 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.AuctionIndex) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Amount) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgNewBidResponse) 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 } @@ -641,6 +877,202 @@ func (m *MsgNewAuctionResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgNewBid) 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: MsgNewBid: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgNewBid: 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 AuctionIndex", 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.AuctionIndex = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", 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.Amount = 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 *MsgNewBidResponse) 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: MsgNewBidResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgNewBidResponse: 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