From 31953799e7dc0de183d40b6f87e5e884466fc652 Mon Sep 17 00:00:00 2001 From: GNaD13 <89174180+GNaD13@users.noreply.github.com> Date: Sat, 27 May 2023 02:23:14 +0700 Subject: [PATCH] Dang/add test mint (#134) * change stake to upica * add query escrow address * add proposal * add test mint * nit * minor * lint --------- Co-authored-by: vuong --- .../transfermiddleware/v1beta1/query.proto | 13 + scripts/mint_test/setup.sh | 18 + scripts/node_start/runnode_banksyd.sh | 8 +- scripts/node_start/runnode_gaia.sh | 6 +- scripts/proposalAddToken.json | 14 + x/transfermiddleware/client/cli/cli.go | 27 ++ x/transfermiddleware/keeper/grpc_query.go | 9 + x/transfermiddleware/keeper/relay.go | 1 + x/transfermiddleware/relay_test.go | 113 +++++ x/transfermiddleware/types/query.pb.go | 437 ++++++++++++++++-- x/transfermiddleware/types/query.pb.gw.go | 83 ++++ 11 files changed, 695 insertions(+), 34 deletions(-) create mode 100644 scripts/mint_test/setup.sh create mode 100644 scripts/proposalAddToken.json diff --git a/proto/banksy/transfermiddleware/v1beta1/query.proto b/proto/banksy/transfermiddleware/v1beta1/query.proto index 7566fa89b..6c10ffb20 100644 --- a/proto/banksy/transfermiddleware/v1beta1/query.proto +++ b/proto/banksy/transfermiddleware/v1beta1/query.proto @@ -12,6 +12,19 @@ service Query { rpc ParaTokenInfo(QueryParaTokenInfoRequest) returns (QueryParaTokenInfoResponse) { option (google.api.http).get = "/banksy/paratokeninfo"; } + rpc EscrowAddress(QueryEscrowAddressRequest) returns (QueryEscrowAddressResponse) { + option (google.api.http).get = "/banksy/escrowaddress"; + } +} + +// message QueryEscrowAddressRequest +message QueryEscrowAddressRequest { + string channel_id = 1 [(gogoproto.moretags) = "yaml:\"channel_id\""]; +} + +// QueryEscrowAddressResponse +message QueryEscrowAddressResponse { + string escrow_address = 1 [(gogoproto.moretags) = "yaml:\"escrow_address\""]; } // QueryParaTokenInfoRequest is the request type for the Query/Params RPC method. diff --git a/scripts/mint_test/setup.sh b/scripts/mint_test/setup.sh new file mode 100644 index 000000000..ddb90b7ca --- /dev/null +++ b/scripts/mint_test/setup.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# Run this script to quickly install, setup, and run the current version of juno without docker. +# Test address cosmos1hce8cea32gjg9eaqzxj02jrgc6m6q59wly4zpm + +CHANNEL_ID="channel-0" + +ESCROW_ADDRESS=$(banksyd q transfermiddleware escrow-address channel-0) + +hermes --config scripts/relayer_hermes/config_compose_gaia.toml create channel --a-chain banksyd-t1 --b-chain gaiad-t1 --a-port transfer --b-port transfer --new-client-connection --yes + +gaiad tx ibc-transfer transfer transfer channel-0 "$ESCROW_ADDRESS" 1000000000stake --from gnad --keyring-backend test --chain-id gaiad-t1 --yes --fees 5000stake +sleep 20 +balancesEscrowAdress = $(banksyd query bank balances $ESCROW_ADDRESS) + +banksyd + +banksyd tx ibc-transfer transfer transfer channel-0 cosmos1hce8cea32gjg9eaqzxj02jrgc6m6q59wly4zpm + diff --git a/scripts/node_start/runnode_banksyd.sh b/scripts/node_start/runnode_banksyd.sh index 2e382edc1..287ed3314 100755 --- a/scripts/node_start/runnode_banksyd.sh +++ b/scripts/node_start/runnode_banksyd.sh @@ -52,10 +52,10 @@ from_scratch () { update_test_genesis '.app_state["feeshare"]["params"]["allowed_denoms"]=["stake"]' # Allocate genesis accounts - banksyd add-genesis-account $KEY 10000000000000stake,100000000000000utest --keyring-backend $KEYRING - banksyd add-genesis-account myaccount 10000000000000stake,100000000000000utest --keyring-backend $KEYRING + banksyd add-genesis-account $KEY 1000000000stake,100000000000000utest --keyring-backend $KEYRING + banksyd add-genesis-account myaccount 1000000000stake,100000000000000utest --keyring-backend $KEYRING - banksyd gentx $KEY 10000000000000stake --keyring-backend $KEYRING --chain-id $CHAINID + banksyd gentx $KEY 1000000000stake --keyring-backend $KEYRING --chain-id $CHAINID # Collect genesis tx banksyd collect-gentxs @@ -79,7 +79,7 @@ sed -i 's/enable = false/enable = true/g' ~/.banksy/config/app.toml sed -i '/address = "tcp:\/\/0.0.0.0:1317"/c\address = "tcp:\/\/0.0.0.0:1318"' ~/.banksy/config/app.toml banksyd config node tcp://0.0.0.0:2241 -banksyd start --pruning=nothing --minimum-gas-prices=0.0001stake --p2p.laddr tcp://0.0.0.0:2240 --rpc.laddr tcp://0.0.0.0:2241 --grpc.address 0.0.0.0:2242 --grpc-web.address 0.0.0.0:2243 +banksyd start --pruning=nothing --minimum-gas-prices=0stake --p2p.laddr tcp://0.0.0.0:2240 --rpc.laddr tcp://0.0.0.0:2241 --grpc.address 0.0.0.0:2242 --grpc-web.address 0.0.0.0:2243 #MEMO='{"forward":{"receiver":"cosmos18p5cs3z0q68hq7q0d8tr8kp3ldnqkx2fx3f88w","port":"transfer","channel":"channel-0","timeout":600000000000,"retries":0,"next":"{}"}' #hermes --config scripts/relayer_hermes/config_compose_gaia.toml create channel --a-chain banksyd-t1 --b-chain gaiad-t1 --a-port transfer --b-port transfer --new-client-connection --yes diff --git a/scripts/node_start/runnode_gaia.sh b/scripts/node_start/runnode_gaia.sh index c7770e07f..9dd390053 100755 --- a/scripts/node_start/runnode_gaia.sh +++ b/scripts/node_start/runnode_gaia.sh @@ -51,10 +51,10 @@ from_scratch () { update_test_genesis '.app_state["feeshare"]["params"]["allowed_denoms"]=["stake"]' # Allocate genesis accounts - gaiad add-genesis-account $KEY 10000000000000uatom,10000000000000stake,100000000000000utest --keyring-backend $KEYRING - gaiad add-genesis-account gnad 10000000000000uatom,10000000000000stake,100000000000000utest --keyring-backend $KEYRING + gaiad add-genesis-account $KEY 10000000000000uatom,10000000000stake,100000000000000utest --keyring-backend $KEYRING + gaiad add-genesis-account gnad 10000000000000uatom,10000000000stake,100000000000000utest --keyring-backend $KEYRING - gaiad gentx $KEY 10000000000000stake --keyring-backend $KEYRING --chain-id $CHAINID + gaiad gentx $KEY 10000000000stake --keyring-backend $KEYRING --chain-id $CHAINID # Collect genesis tx gaiad collect-gentxs diff --git a/scripts/proposalAddToken.json b/scripts/proposalAddToken.json new file mode 100644 index 000000000..10de89829 --- /dev/null +++ b/scripts/proposalAddToken.json @@ -0,0 +1,14 @@ +{ + "messages": [ + { + "@type": "/banksy.transfermiddleware.v1beta1.MsgAddParachainIBCTokenInfo", + "ibc_denom": "cosmos1...", // The gov module module address + "channel_id": "cosmos1...", + "native_denom": "" + } + ], + "metadata": "AQ==", + "deposit": "10stake", + "title": "Proposal Title", + "summary": "Proposal Summary" + } \ No newline at end of file diff --git a/x/transfermiddleware/client/cli/cli.go b/x/transfermiddleware/client/cli/cli.go index 023953420..3121eb016 100644 --- a/x/transfermiddleware/client/cli/cli.go +++ b/x/transfermiddleware/client/cli/cli.go @@ -20,6 +20,7 @@ func GetQueryCmd() *cobra.Command { queryCmd.AddCommand( GetCmdParaTokenInfo(), + GetEscowAddress(), ) return queryCmd @@ -54,6 +55,32 @@ func GetCmdParaTokenInfo() *cobra.Command { return cmd } +func GetEscowAddress() *cobra.Command { + cmd := &cobra.Command{ + Use: "escrow-address [channel-id]", + Short: "Query the escrow address", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.EscrowAddress(cmd.Context(), &types.QueryEscrowAddressRequest{ + ChannelId: args[0], + }) + if err != nil { + return err + } + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + // NewTxCmd returns the transaction commands for router func NewTxCmd() *cobra.Command { return nil diff --git a/x/transfermiddleware/keeper/grpc_query.go b/x/transfermiddleware/keeper/grpc_query.go index 24d8314e0..de4db0e69 100644 --- a/x/transfermiddleware/keeper/grpc_query.go +++ b/x/transfermiddleware/keeper/grpc_query.go @@ -4,6 +4,7 @@ import ( "context" sdk "github.com/cosmos/cosmos-sdk/types" + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/notional-labs/banksy/v2/x/transfermiddleware/types" ) @@ -17,3 +18,11 @@ func (k Keeper) ParaTokenInfo(c context.Context, req *types.QueryParaTokenInfoRe ChannelId: info.ChannelId, }, nil } + +func (k Keeper) EscrowAddress(c context.Context, req *types.QueryEscrowAddressRequest) (*types.QueryEscrowAddressResponse, error) { + escrowAddress := transfertypes.GetEscrowAddress(transfertypes.PortID, req.ChannelId) + + return &types.QueryEscrowAddressResponse{ + EscrowAddress: escrowAddress.String(), + }, nil +} diff --git a/x/transfermiddleware/keeper/relay.go b/x/transfermiddleware/keeper/relay.go index d01ad7aa1..b101f33b4 100644 --- a/x/transfermiddleware/keeper/relay.go +++ b/x/transfermiddleware/keeper/relay.go @@ -43,6 +43,7 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, data t voucher := sdk.NewCoin(voucherDenom, transferAmount) paraTokenInfo := k.GetParachainIBCTokenInfo(ctx, data.Denom) + if k.GetNativeDenomByIBCDenomSecondaryIndex(ctx, denomTrace.IBCDenom()) != paraTokenInfo.NativeDenom { return nil } diff --git a/x/transfermiddleware/relay_test.go b/x/transfermiddleware/relay_test.go index 9f1caef7d..5e848f21a 100644 --- a/x/transfermiddleware/relay_test.go +++ b/x/transfermiddleware/relay_test.go @@ -2,12 +2,14 @@ package transfermiddleware_test import ( "fmt" + "testing" "time" sdk "github.com/cosmos/cosmos-sdk/types" ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" customibctesting "github.com/notional-labs/banksy/v2/app/ibctesting" + "github.com/stretchr/testify/suite" ) func (suite *TransferMiddlewareTestSuite) TestSendTransfer() { @@ -362,3 +364,114 @@ func (suite *TransferMiddlewareTestSuite) TestTimeOutPacket() { chainBSenderBalances := suite.chainB.AllBalances(suite.chainB.SenderAccount.GetAddress()) suite.Equal(expBalance, chainBSenderBalances) } + +func TestTransferMiddlewareTestSuiteTestSuite(t *testing.T) { + suite.Run(t, new(TransferMiddlewareTestSuite)) +} + +func (suite *TransferMiddlewareTestSuite) TestMintAndBurnProcessWhenLaunchChain() { + var ( + transferAmount, _ = sdk.NewIntFromString("10000000000000000000") + // when transfer via sdk transfer from A (module) -> B (contract) + timeoutHeight = clienttypes.NewHeight(1, 110) + path *customibctesting.Path + expDenom = "ibc/C053D637CCA2A2BA030E2C5EE1B28A16F71CCB0E45E8BE52766DC1B241B77878" + transferAmountFromChainBToChainA = sdk.NewInt(1000000000) + + // pathBtoC = NewTransferPath(suite.chainB, suite.chainC) + ) + + testCases := []struct { + name string + }{ + { + "Test Mint", + }, + } + for _, tc := range testCases { + suite.Run(tc.name, func() { + suite.SetupTest() + // When setup chainB(Composable already have 10^19 stake in test account (genesis)) + path = NewTransferPath(suite.chainA, suite.chainB) + suite.coordinator.Setup(path) + + senderABalance := suite.chainB.Balance(suite.chainB.SenderAccount.GetAddress(), "stake") + + // Send coin from picasso (chainA) to escrow address + escrowAddress := ibctransfertypes.GetEscrowAddress(ibctransfertypes.PortID, path.EndpointB.ChannelID) + msg := ibctransfertypes.NewMsgTransfer( + path.EndpointA.ChannelConfig.PortID, + path.EndpointA.ChannelID, + senderABalance, + suite.chainA.SenderAccount.GetAddress().String(), + escrowAddress.String(), + timeoutHeight, + 0, + "", + ) + _, err := suite.chainA.SendMsgs(msg) + suite.Require().NoError(err) + suite.Require().NoError(err, path.EndpointB.UpdateClient()) + + // then + suite.Require().Equal(1, len(suite.chainA.PendingSendPackets)) + suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) + + // and when relay to chain B and handle Ack on chain A + err = suite.coordinator.RelayAndAckPendingPackets(path) + suite.Require().NoError(err) + + // then + suite.Require().Equal(0, len(suite.chainA.PendingSendPackets)) + suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) + + balance := suite.chainB.AllBalances(escrowAddress) + expBalance := sdk.NewCoins(sdk.NewCoin(expDenom, transferAmount)) + suite.Require().Equal(expBalance, balance) + + // Add parachain token info + chainBtransMiddleware := suite.chainB.TransferMiddleware() + err = chainBtransMiddleware.AddParachainIBCInfo(suite.chainB.GetContext(), expDenom, path.EndpointB.ChannelID, sdk.DefaultBondDenom) + suite.Require().NoError(err) + + // send coin from B to A + msg = ibctransfertypes.NewMsgTransfer( + path.EndpointB.ChannelConfig.PortID, + path.EndpointB.ChannelID, + sdk.NewCoin("stake", transferAmountFromChainBToChainA), + suite.chainB.SenderAccount.GetAddress().String(), + suite.chainA.SenderAccount.GetAddress().String(), + timeoutHeight, + 0, + "", + ) + _, err = suite.chainB.SendMsgs(msg) + suite.Require().NoError(err) + suite.Require().NoError(err, path.EndpointA.UpdateClient()) + + // then + suite.Require().Equal(1, len(suite.chainB.PendingSendPackets)) + suite.Require().Equal(0, len(suite.chainA.PendingSendPackets)) + + // and when relay to chain A and handle Ack on chain B + err = suite.coordinator.RelayAndAckPendingPacketsReverse(path) + suite.Require().NoError(err) + + // then + suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) + suite.Require().Equal(0, len(suite.chainA.PendingSendPackets)) + + balance = suite.chainB.AllBalances(suite.chainB.SenderAccount.GetAddress()) + expBalance = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, transferAmount.Sub(transferAmountFromChainBToChainA))) + suite.Require().Equal(expBalance, balance) + + balance = suite.chainB.AllBalances(escrowAddress) + expBalance = sdk.NewCoins(sdk.NewCoin(expDenom, transferAmount.Sub(transferAmountFromChainBToChainA))) + suite.Require().Equal(expBalance, balance) + + balance = suite.chainA.AllBalances(suite.chainA.SenderAccount.GetAddress()) + expBalance = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, transferAmountFromChainBToChainA)) + suite.Require().Equal(expBalance, balance) + }) + } +} diff --git a/x/transfermiddleware/types/query.pb.go b/x/transfermiddleware/types/query.pb.go index 6da9fa5e6..efca2f813 100644 --- a/x/transfermiddleware/types/query.pb.go +++ b/x/transfermiddleware/types/query.pb.go @@ -29,6 +29,96 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +// message QueryEscrowAddressRequest +type QueryEscrowAddressRequest struct { + ChannelId string `protobuf:"bytes,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty" yaml:"channel_id"` +} + +func (m *QueryEscrowAddressRequest) Reset() { *m = QueryEscrowAddressRequest{} } +func (m *QueryEscrowAddressRequest) String() string { return proto.CompactTextString(m) } +func (*QueryEscrowAddressRequest) ProtoMessage() {} +func (*QueryEscrowAddressRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f6411fbf179210b0, []int{0} +} +func (m *QueryEscrowAddressRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryEscrowAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryEscrowAddressRequest.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 *QueryEscrowAddressRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryEscrowAddressRequest.Merge(m, src) +} +func (m *QueryEscrowAddressRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryEscrowAddressRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryEscrowAddressRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryEscrowAddressRequest proto.InternalMessageInfo + +func (m *QueryEscrowAddressRequest) GetChannelId() string { + if m != nil { + return m.ChannelId + } + return "" +} + +// QueryEscrowAddressResponse +type QueryEscrowAddressResponse struct { + EscrowAddress string `protobuf:"bytes,1,opt,name=escrow_address,json=escrowAddress,proto3" json:"escrow_address,omitempty" yaml:"escrow_address"` +} + +func (m *QueryEscrowAddressResponse) Reset() { *m = QueryEscrowAddressResponse{} } +func (m *QueryEscrowAddressResponse) String() string { return proto.CompactTextString(m) } +func (*QueryEscrowAddressResponse) ProtoMessage() {} +func (*QueryEscrowAddressResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f6411fbf179210b0, []int{1} +} +func (m *QueryEscrowAddressResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryEscrowAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryEscrowAddressResponse.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 *QueryEscrowAddressResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryEscrowAddressResponse.Merge(m, src) +} +func (m *QueryEscrowAddressResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryEscrowAddressResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryEscrowAddressResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryEscrowAddressResponse proto.InternalMessageInfo + +func (m *QueryEscrowAddressResponse) GetEscrowAddress() string { + if m != nil { + return m.EscrowAddress + } + return "" +} + // QueryParaTokenInfoRequest is the request type for the Query/Params RPC method. type QueryParaTokenInfoRequest struct { NativeDenom string `protobuf:"bytes,1,opt,name=native_denom,json=nativeDenom,proto3" json:"native_denom,omitempty" yaml:"native_denom"` @@ -38,7 +128,7 @@ func (m *QueryParaTokenInfoRequest) Reset() { *m = QueryParaTokenInfoReq func (m *QueryParaTokenInfoRequest) String() string { return proto.CompactTextString(m) } func (*QueryParaTokenInfoRequest) ProtoMessage() {} func (*QueryParaTokenInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f6411fbf179210b0, []int{0} + return fileDescriptor_f6411fbf179210b0, []int{2} } func (m *QueryParaTokenInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -85,7 +175,7 @@ func (m *QueryParaTokenInfoResponse) Reset() { *m = QueryParaTokenInfoRe func (m *QueryParaTokenInfoResponse) String() string { return proto.CompactTextString(m) } func (*QueryParaTokenInfoResponse) ProtoMessage() {} func (*QueryParaTokenInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f6411fbf179210b0, []int{1} + return fileDescriptor_f6411fbf179210b0, []int{3} } func (m *QueryParaTokenInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -136,6 +226,8 @@ func (m *QueryParaTokenInfoResponse) GetNativeDenom() string { } func init() { + proto.RegisterType((*QueryEscrowAddressRequest)(nil), "banksy.transfermiddleware.v1beta1.QueryEscrowAddressRequest") + proto.RegisterType((*QueryEscrowAddressResponse)(nil), "banksy.transfermiddleware.v1beta1.QueryEscrowAddressResponse") proto.RegisterType((*QueryParaTokenInfoRequest)(nil), "banksy.transfermiddleware.v1beta1.QueryParaTokenInfoRequest") proto.RegisterType((*QueryParaTokenInfoResponse)(nil), "banksy.transfermiddleware.v1beta1.QueryParaTokenInfoResponse") } @@ -145,31 +237,36 @@ func init() { } var fileDescriptor_f6411fbf179210b0 = []byte{ - // 372 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4d, 0x4a, 0xcc, 0xcb, - 0x2e, 0xae, 0xd4, 0x2f, 0x29, 0x4a, 0xcc, 0x2b, 0x4e, 0x4b, 0x2d, 0xca, 0xcd, 0x4c, 0x49, 0xc9, - 0x49, 0x2d, 0x4f, 0x2c, 0x4a, 0xd5, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x2f, 0x2c, - 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x52, 0x84, 0x28, 0xd7, 0xc3, 0x54, - 0xae, 0x07, 0x55, 0x2e, 0x25, 0x92, 0x9e, 0x9f, 0x9e, 0x0f, 0x56, 0xad, 0x0f, 0x62, 0x41, 0x34, - 0x4a, 0xc9, 0xa4, 0xe7, 0xe7, 0xa7, 0xe7, 0xa4, 0xea, 0x27, 0x16, 0x64, 0xea, 0x27, 0xe6, 0xe5, - 0xe5, 0x97, 0x24, 0x96, 0x64, 0xe6, 0xe7, 0x15, 0x43, 0x64, 0x95, 0xc2, 0xb9, 0x24, 0x03, 0x41, - 0xb6, 0x04, 0x24, 0x16, 0x25, 0x86, 0xe4, 0x67, 0xa7, 0xe6, 0x79, 0xe6, 0xa5, 0xe5, 0x07, 0xa5, - 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0x59, 0x71, 0xf1, 0xe4, 0x25, 0x96, 0x64, 0x96, 0xa5, 0xc6, - 0xa7, 0xa4, 0xe6, 0xe5, 0xe7, 0x4a, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x3a, 0x89, 0x7f, 0xba, 0x27, - 0x2f, 0x5c, 0x99, 0x98, 0x9b, 0x63, 0xa5, 0x84, 0x2c, 0xab, 0x14, 0xc4, 0x0d, 0xe1, 0xba, 0x80, - 0x79, 0x07, 0x19, 0xb9, 0xa4, 0xb0, 0x99, 0x5c, 0x5c, 0x90, 0x9f, 0x57, 0x9c, 0x2a, 0x64, 0xc8, - 0xc5, 0x99, 0x99, 0x94, 0x0c, 0x35, 0x97, 0x09, 0x6c, 0xae, 0xc8, 0xa7, 0x7b, 0xf2, 0x02, 0x10, - 0x73, 0xe1, 0x52, 0x4a, 0x41, 0x1c, 0x99, 0x49, 0xc9, 0x60, 0x13, 0x85, 0x4c, 0xb8, 0xb8, 0x92, - 0x33, 0x12, 0xf3, 0xf2, 0x52, 0x73, 0xe2, 0x33, 0x53, 0x24, 0x98, 0xc1, 0x7a, 0x44, 0x3f, 0xdd, - 0x93, 0x17, 0x84, 0xe8, 0x41, 0xc8, 0x29, 0x05, 0x71, 0x42, 0x39, 0x9e, 0x29, 0x18, 0x7e, 0x60, - 0x27, 0xde, 0x0f, 0x46, 0x5b, 0x19, 0xb9, 0x58, 0xc1, 0x7e, 0x10, 0x5a, 0xcd, 0xc8, 0xc5, 0x8b, - 0xe2, 0x11, 0x21, 0x1b, 0x3d, 0x82, 0x11, 0xa2, 0x87, 0x33, 0x64, 0xa5, 0x6c, 0xc9, 0xd4, 0x0d, - 0x09, 0x3d, 0x25, 0xd9, 0xa6, 0xcb, 0x4f, 0x26, 0x33, 0x89, 0x0b, 0x89, 0xea, 0x43, 0x13, 0x51, - 0x41, 0x62, 0x51, 0x62, 0x09, 0x48, 0x59, 0x66, 0x5e, 0x5a, 0xbe, 0x93, 0xc9, 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, 0x49, 0x55, 0x60, 0x4b, 0x6f, 0x25, 0x95, 0x05, 0xa9, - 0xc5, 0x49, 0x6c, 0xe0, 0x14, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x14, 0xb2, 0x3a, 0x79, - 0x99, 0x02, 0x00, 0x00, + // 449 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0x4f, 0x6e, 0xd4, 0x30, + 0x18, 0xc5, 0x27, 0x83, 0xf8, 0x33, 0x86, 0x22, 0x08, 0x1d, 0x95, 0x46, 0x90, 0x80, 0x57, 0x6c, + 0x48, 0x34, 0xd0, 0x55, 0x05, 0x12, 0x54, 0xb0, 0xe8, 0x8e, 0x46, 0x48, 0x48, 0x2c, 0x18, 0x39, + 0xc9, 0xd7, 0x60, 0x35, 0x63, 0xa7, 0xb6, 0xdb, 0x92, 0x2d, 0x27, 0x40, 0xe2, 0x18, 0x9c, 0x82, + 0x1d, 0xcb, 0x4a, 0x6c, 0x58, 0x45, 0x68, 0xc2, 0x09, 0x72, 0x02, 0x94, 0xd8, 0x40, 0x67, 0x26, + 0x88, 0x88, 0x5d, 0xac, 0xf7, 0xfc, 0xcb, 0xfb, 0x3e, 0x3d, 0xa3, 0xfb, 0x11, 0x61, 0x07, 0xb2, + 0x08, 0x94, 0x20, 0x4c, 0xee, 0x83, 0x98, 0xd1, 0x24, 0xc9, 0xe0, 0x84, 0x08, 0x08, 0x8e, 0x27, + 0x11, 0x28, 0x32, 0x09, 0x0e, 0x8f, 0x40, 0x14, 0x7e, 0x2e, 0xb8, 0xe2, 0xf6, 0x5d, 0x6d, 0xf7, + 0x57, 0xed, 0xbe, 0xb1, 0x3b, 0xeb, 0x29, 0x4f, 0x79, 0xeb, 0x0e, 0x9a, 0x2f, 0x7d, 0xd1, 0xb9, + 0x95, 0x72, 0x9e, 0x66, 0x10, 0x90, 0x9c, 0x06, 0x84, 0x31, 0xae, 0x88, 0xa2, 0x9c, 0x49, 0xad, + 0xe2, 0x3d, 0xb4, 0xb9, 0xd7, 0xfc, 0xe5, 0xb9, 0x8c, 0x05, 0x3f, 0x79, 0x9a, 0x24, 0x02, 0xa4, + 0x0c, 0xe1, 0xf0, 0x08, 0xa4, 0xb2, 0xb7, 0x10, 0x8a, 0xdf, 0x12, 0xc6, 0x20, 0x9b, 0xd2, 0xe4, + 0xa6, 0x75, 0xc7, 0xba, 0x37, 0xda, 0x19, 0xd7, 0xa5, 0x77, 0xbd, 0x20, 0xb3, 0x6c, 0x1b, 0xff, + 0xd1, 0x70, 0x38, 0x32, 0x87, 0xdd, 0x04, 0xbf, 0x41, 0x4e, 0x17, 0x52, 0xe6, 0x9c, 0x49, 0xb0, + 0x9f, 0xa0, 0xab, 0xd0, 0x0a, 0x53, 0xa2, 0x15, 0xc3, 0xdd, 0xac, 0x4b, 0x6f, 0xac, 0xb9, 0x8b, + 0x3a, 0x0e, 0xd7, 0xe0, 0x2c, 0x09, 0xbf, 0x32, 0x91, 0x5f, 0x10, 0x41, 0x5e, 0xf2, 0x03, 0x60, + 0xbb, 0x6c, 0x9f, 0xff, 0x8a, 0xbc, 0x8d, 0xae, 0x30, 0xa2, 0xe8, 0x31, 0x4c, 0x13, 0x60, 0x7c, + 0x66, 0xe0, 0x1b, 0x75, 0xe9, 0xdd, 0xd0, 0xf0, 0xb3, 0x2a, 0x0e, 0x2f, 0xeb, 0xe3, 0xb3, 0xf6, + 0xf4, 0xd9, 0x32, 0xc9, 0x97, 0xc8, 0x26, 0xf9, 0x04, 0x8d, 0x68, 0x14, 0x1b, 0xee, 0xb0, 0xe5, + 0xae, 0xd7, 0xa5, 0x77, 0x4d, 0x73, 0x7f, 0x4b, 0x38, 0xbc, 0x44, 0xa3, 0xb8, 0x25, 0x2e, 0x2d, + 0xf0, 0x5c, 0xbf, 0x05, 0xae, 0xcc, 0x70, 0xb1, 0xff, 0x0c, 0x0f, 0xaa, 0x21, 0x3a, 0xdf, 0xce, + 0x60, 0x7f, 0xb2, 0xd0, 0xda, 0xc2, 0x20, 0xf6, 0x23, 0xff, 0x9f, 0x1d, 0xf2, 0xff, 0xba, 0x59, + 0xe7, 0xf1, 0x7f, 0xde, 0xd6, 0xdb, 0xc3, 0xb7, 0xdf, 0x7f, 0xfd, 0xf1, 0x71, 0xb8, 0x61, 0x8f, + 0x03, 0xd3, 0xfb, 0x9c, 0x08, 0xa2, 0x1a, 0x1b, 0x6d, 0xb2, 0x35, 0x69, 0x17, 0x0a, 0xd3, 0x3f, + 0x6d, 0x57, 0x75, 0xfb, 0xa7, 0xed, 0x6c, 0xe9, 0x6a, 0x5a, 0x5d, 0x41, 0x53, 0xc9, 0x9d, 0xad, + 0x2f, 0x73, 0xd7, 0x3a, 0x9d, 0xbb, 0xd6, 0xf7, 0xb9, 0x6b, 0x7d, 0xa8, 0xdc, 0xc1, 0x69, 0xe5, + 0x0e, 0xbe, 0x55, 0xee, 0xe0, 0xb5, 0xf3, 0xae, 0xeb, 0x41, 0xab, 0x22, 0x07, 0x19, 0x5d, 0x68, + 0x9f, 0xdc, 0xc3, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x0f, 0x70, 0x0a, 0xfa, 0x03, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -186,6 +283,7 @@ const _ = grpc.SupportPackageIsVersion4 type QueryClient interface { // ParaTokenInfo queries all token info of a native denom. ParaTokenInfo(ctx context.Context, in *QueryParaTokenInfoRequest, opts ...grpc.CallOption) (*QueryParaTokenInfoResponse, error) + EscrowAddress(ctx context.Context, in *QueryEscrowAddressRequest, opts ...grpc.CallOption) (*QueryEscrowAddressResponse, error) } type queryClient struct { @@ -205,10 +303,20 @@ func (c *queryClient) ParaTokenInfo(ctx context.Context, in *QueryParaTokenInfoR return out, nil } +func (c *queryClient) EscrowAddress(ctx context.Context, in *QueryEscrowAddressRequest, opts ...grpc.CallOption) (*QueryEscrowAddressResponse, error) { + out := new(QueryEscrowAddressResponse) + err := c.cc.Invoke(ctx, "/banksy.transfermiddleware.v1beta1.Query/EscrowAddress", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // ParaTokenInfo queries all token info of a native denom. ParaTokenInfo(context.Context, *QueryParaTokenInfoRequest) (*QueryParaTokenInfoResponse, error) + EscrowAddress(context.Context, *QueryEscrowAddressRequest) (*QueryEscrowAddressResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -218,6 +326,9 @@ type UnimplementedQueryServer struct { func (*UnimplementedQueryServer) ParaTokenInfo(ctx context.Context, req *QueryParaTokenInfoRequest) (*QueryParaTokenInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ParaTokenInfo not implemented") } +func (*UnimplementedQueryServer) EscrowAddress(ctx context.Context, req *QueryEscrowAddressRequest) (*QueryEscrowAddressResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EscrowAddress not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -241,6 +352,24 @@ func _Query_ParaTokenInfo_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Query_EscrowAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryEscrowAddressRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).EscrowAddress(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/banksy.transfermiddleware.v1beta1.Query/EscrowAddress", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).EscrowAddress(ctx, req.(*QueryEscrowAddressRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "banksy.transfermiddleware.v1beta1.Query", HandlerType: (*QueryServer)(nil), @@ -249,11 +378,75 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "ParaTokenInfo", Handler: _Query_ParaTokenInfo_Handler, }, + { + MethodName: "EscrowAddress", + Handler: _Query_EscrowAddress_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "banksy/transfermiddleware/v1beta1/query.proto", } +func (m *QueryEscrowAddressRequest) 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 *QueryEscrowAddressRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryEscrowAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ChannelId) > 0 { + i -= len(m.ChannelId) + copy(dAtA[i:], m.ChannelId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ChannelId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryEscrowAddressResponse) 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 *QueryEscrowAddressResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryEscrowAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.EscrowAddress) > 0 { + i -= len(m.EscrowAddress) + copy(dAtA[i:], m.EscrowAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.EscrowAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *QueryParaTokenInfoRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -339,6 +532,32 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } +func (m *QueryEscrowAddressRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChannelId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryEscrowAddressResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.EscrowAddress) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + func (m *QueryParaTokenInfoRequest) Size() (n int) { if m == nil { return 0 @@ -379,6 +598,170 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } +func (m *QueryEscrowAddressRequest) 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 ErrIntOverflowQuery + } + 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: QueryEscrowAddressRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryEscrowAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChannelId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChannelId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryEscrowAddressResponse) 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 ErrIntOverflowQuery + } + 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: QueryEscrowAddressResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryEscrowAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EscrowAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EscrowAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *QueryParaTokenInfoRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/transfermiddleware/types/query.pb.gw.go b/x/transfermiddleware/types/query.pb.gw.go index ffa2780ab..c7c50ab91 100644 --- a/x/transfermiddleware/types/query.pb.gw.go +++ b/x/transfermiddleware/types/query.pb.gw.go @@ -69,6 +69,42 @@ func local_request_Query_ParaTokenInfo_0(ctx context.Context, marshaler runtime. } +var ( + filter_Query_EscrowAddress_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_EscrowAddress_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryEscrowAddressRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_EscrowAddress_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.EscrowAddress(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_EscrowAddress_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryEscrowAddressRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_EscrowAddress_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.EscrowAddress(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -98,6 +134,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_EscrowAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_EscrowAddress_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_EscrowAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -159,13 +218,37 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_EscrowAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_EscrowAddress_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_EscrowAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( pattern_Query_ParaTokenInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"banksy", "paratokeninfo"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_EscrowAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"banksy", "escrowaddress"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( forward_Query_ParaTokenInfo_0 = runtime.ForwardResponseMessage + + forward_Query_EscrowAddress_0 = runtime.ForwardResponseMessage )