Skip to content
This repository was archived by the owner on Oct 3, 2022. It is now read-only.

Commit

Permalink
Merge pull request #10 from decipherhub/feature/seperate-crosschainqu…
Browse files Browse the repository at this point in the history
…ery-proto

redefine type in proto
  • Loading branch information
Woojinger authored Sep 18, 2022
2 parents 333a3f4 + b9c97dd commit 78ac81a
Show file tree
Hide file tree
Showing 23 changed files with 1,728 additions and 1,132 deletions.
134 changes: 86 additions & 48 deletions docs/ibc/proto-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,22 +80,25 @@

- [Msg](#ibc.applications.fee.v1.Msg)

- [ibc/applications/ibc_query/v1/crosschainquery.proto](#ibc/applications/ibc_query/v1/crosschainquery.proto)
- [CrossChainQuery](#ibc.applications.ibc_query.v1.CrossChainQuery)
- [CrossChainQueryResult](#ibc.applications.ibc_query.v1.CrossChainQueryResult)

- [QueryResult](#ibc.applications.ibc_query.v1.QueryResult)

- [ibc/applications/ibc_query/v1/event.proto](#ibc/applications/ibc_query/v1/event.proto)
- [EventQuerySubmitted](#ibc.applications.ibc_query.v1.EventQuerySubmitted)

- [ibc/applications/ibc_query/v1/genesis.proto](#ibc/applications/ibc_query/v1/genesis.proto)
- [CrossChainQuery](#ibc.applications.ibc_query.v1.CrossChainQuery)
- [CrossChainQueryResult](#ibc.applications.ibc_query.v1.CrossChainQueryResult)
- [GenesisState](#ibc.applications.ibc_query.v1.GenesisState)

- [QueryResult](#ibc.applications.ibc_query.v1.QueryResult)

- [ibc/applications/ibc_query/v1/packet.proto](#ibc/applications/ibc_query/v1/packet.proto)
- [IBCQueryPacketData](#ibc.applications.ibc_query.v1.IBCQueryPacketData)
- [IBCQueryResultPacketData](#ibc.applications.ibc_query.v1.IBCQueryResultPacketData)

- [ibc/applications/ibc_query/v1/query.proto](#ibc/applications/ibc_query/v1/query.proto)
- [QueryCrossChainQuery](#ibc.applications.ibc_query.v1.QueryCrossChainQuery)
- [QueryCrossChainQueryResponse](#ibc.applications.ibc_query.v1.QueryCrossChainQueryResponse)
- [QueryCrossChainQueryResult](#ibc.applications.ibc_query.v1.QueryCrossChainQueryResult)
- [QueryCrossChainQueryResultResponse](#ibc.applications.ibc_query.v1.QueryCrossChainQueryResultResponse)

- [Query](#ibc.applications.ibc_query.v1.Query)

Expand Down Expand Up @@ -1446,33 +1449,65 @@ Msg defines the ICS29 Msg service.



<a name="ibc/applications/ibc_query/v1/event.proto"></a>
<a name="ibc/applications/ibc_query/v1/crosschainquery.proto"></a>
<p align="right"><a href="#top">Top</a></p>

## ibc/applications/ibc_query/v1/event.proto
## ibc/applications/ibc_query/v1/crosschainquery.proto



<a name="ibc.applications.ibc_query.v1.EventQuerySubmitted"></a>
<a name="ibc.applications.ibc_query.v1.CrossChainQuery"></a>

### EventQuerySubmitted
EventQuerySubmitted emitted when process MsgSubmitCrossChainQuery tx
### CrossChainQuery
CrossChainQuery


| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `id` | [string](#string) | | |
| `path` | [string](#string) | | |
| `local_timeout_height` | [ibc.core.client.v1.Height](#ibc.core.client.v1.Height) | | |
| `local_timeout_stamp` | [uint64](#uint64) | | |
| `local_timeout_timestamp` | [uint64](#uint64) | | |
| `query_height` | [uint64](#uint64) | | |
| `client_id` | [string](#string) | | |






<a name="ibc.applications.ibc_query.v1.CrossChainQueryResult"></a>

### CrossChainQueryResult
CrossChainQueryResult


| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `id` | [string](#string) | | |
| `result` | [QueryResult](#ibc.applications.ibc_query.v1.QueryResult) | | |
| `data` | [bytes](#bytes) | | |





<!-- end messages -->


<a name="ibc.applications.ibc_query.v1.QueryResult"></a>

### QueryResult
QueryResult

| Name | Number | Description |
| ---- | ------ | ----------- |
| QUERY_RESULT_UNSPECIFIED | 0 | UNSPECIFIED |
| QUERY_RESULT_SUCCESS | 1 | SUCCESS |
| QUERY_RESULT_FAILURE | 2 | FAILURE |
| QUERY_RESULT_TIMEOUT | 3 | TIMEOUT |


<!-- end enums -->

<!-- end HasExtensions -->
Expand All @@ -1481,47 +1516,45 @@ EventQuerySubmitted emitted when process MsgSubmitCrossChainQuery tx



<a name="ibc/applications/ibc_query/v1/genesis.proto"></a>
<a name="ibc/applications/ibc_query/v1/event.proto"></a>
<p align="right"><a href="#top">Top</a></p>

## ibc/applications/ibc_query/v1/genesis.proto
## ibc/applications/ibc_query/v1/event.proto



<a name="ibc.applications.ibc_query.v1.CrossChainQuery"></a>
<a name="ibc.applications.ibc_query.v1.EventQuerySubmitted"></a>

### CrossChainQuery
CrossChainQuery
### EventQuerySubmitted
EventQuerySubmitted emitted when process MsgSubmitCrossChainQuery tx


| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `id` | [string](#string) | | |
| `path` | [string](#string) | | |
| `local_timeout_height` | [ibc.core.client.v1.Height](#ibc.core.client.v1.Height) | | |
| `local_timeout_timestamp` | [uint64](#uint64) | | |
| `local_timeout_stamp` | [uint64](#uint64) | | |
| `query_height` | [uint64](#uint64) | | |
| `client_id` | [string](#string) | | |





<!-- end messages -->

<a name="ibc.applications.ibc_query.v1.CrossChainQueryResult"></a>
<!-- end enums -->

### CrossChainQueryResult
CrossChainQueryResult
<!-- end HasExtensions -->

<!-- end services -->

| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `id` | [string](#string) | | |
| `result` | [QueryResult](#ibc.applications.ibc_query.v1.QueryResult) | | |
| `data` | [bytes](#bytes) | | |


<a name="ibc/applications/ibc_query/v1/genesis.proto"></a>
<p align="right"><a href="#top">Top</a></p>

## ibc/applications/ibc_query/v1/genesis.proto



Expand All @@ -1543,20 +1576,6 @@ GenesisState defines the ICS31 ibc-query genesis state

<!-- end messages -->


<a name="ibc.applications.ibc_query.v1.QueryResult"></a>

### QueryResult
QueryResult

| Name | Number | Description |
| ---- | ------ | ----------- |
| QUERY_RESULT_UNSPECIFIED | 0 | UNSPECIFIED |
| QUERY_RESULT_SUCCESS | 1 | SUCCESS |
| QUERY_RESULT_FAILURE | 2 | FAILURE |
| QUERY_RESULT_TIMEOUT | 3 | TIMEOUT |


<!-- end enums -->

<!-- end HasExtensions -->
Expand All @@ -1575,7 +1594,7 @@ QueryResult
<a name="ibc.applications.ibc_query.v1.IBCQueryPacketData"></a>

### IBCQueryPacketData
IBCQueryPacketData defines a struct for the packet payload
IBCQueryPacketData defines a struct for the cross chain query packet payload


| Field | Type | Label | Description |
Expand All @@ -1588,6 +1607,26 @@ IBCQueryPacketData defines a struct for the packet payload




<a name="ibc.applications.ibc_query.v1.IBCQueryResultPacketData"></a>

### IBCQueryResultPacketData
IBCQueryPacketData defines a struct for the cross chain query result packet payload


| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `id` | [string](#string) | | |
| `path` | [string](#string) | | |
| `query_height` | [uint64](#uint64) | | |
| `result` | [QueryResult](#ibc.applications.ibc_query.v1.QueryResult) | | |
| `data` | [bytes](#bytes) | | |
| `proof_specs` | [ics23.ProofSpec](#ics23.ProofSpec) | repeated | TODO: Proof specifications used in verifying counterparty state |





<!-- end messages -->

<!-- end enums -->
Expand All @@ -1605,9 +1644,9 @@ IBCQueryPacketData defines a struct for the packet payload



<a name="ibc.applications.ibc_query.v1.QueryCrossChainQuery"></a>
<a name="ibc.applications.ibc_query.v1.QueryCrossChainQueryResult"></a>

### QueryCrossChainQuery
### QueryCrossChainQueryResult
QueryCrossChainQuery


Expand All @@ -1620,9 +1659,9 @@ QueryCrossChainQuery



<a name="ibc.applications.ibc_query.v1.QueryCrossChainQueryResponse"></a>
<a name="ibc.applications.ibc_query.v1.QueryCrossChainQueryResultResponse"></a>

### QueryCrossChainQueryResponse
### QueryCrossChainQueryResultResponse
QueryCrossChainQueryResponse


Expand All @@ -1631,7 +1670,6 @@ QueryCrossChainQueryResponse
| `id` | [string](#string) | | |
| `result` | [QueryResult](#ibc.applications.ibc_query.v1.QueryResult) | | |
| `data` | [bytes](#bytes) | | |
| `proof_specs` | [ics23.ProofSpec](#ics23.ProofSpec) | repeated | TODO Proof specifications used in verifying counterparty state |



Expand All @@ -1651,7 +1689,7 @@ Query

| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint |
| ----------- | ------------ | ------------- | ------------| ------- | -------- |
| `CrossChainQuery` | [QueryCrossChainQuery](#ibc.applications.ibc_query.v1.QueryCrossChainQuery) | [QueryCrossChainQueryResponse](#ibc.applications.ibc_query.v1.QueryCrossChainQueryResponse) | query CrossChainQuery | GET|/ibc/apps/ibc-query/v1/{id}|
| `CrossChainQueryResult` | [QueryCrossChainQueryResult](#ibc.applications.ibc_query.v1.QueryCrossChainQueryResult) | [QueryCrossChainQueryResultResponse](#ibc.applications.ibc_query.v1.QueryCrossChainQueryResultResponse) | query CrossChainQueryResult | GET|/ibc/apps/ibc-query/v1/{id}|

<!-- end services -->

Expand Down
4 changes: 2 additions & 2 deletions modules/apps/31-ibc-query/client/cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func GetQueryCmd() *cobra.Command {
}

queryCmd.AddCommand(

GetCmdQueryCrossChainQueryResult(),
)

return queryCmd
Expand All @@ -25,7 +25,7 @@ func GetQueryCmd() *cobra.Command {
func NewTxCmd() *cobra.Command {
txCmd := &cobra.Command{
Use: "ibc-query",
Short: "IBC query command",
Short: "Query cross chain query result",
DisableFlagParsing: true,
SuggestionsMinimumDistance: 2,
RunE: client.ValidateCmd,
Expand Down
43 changes: 43 additions & 0 deletions modules/apps/31-ibc-query/client/cli/query.go
Original file line number Diff line number Diff line change
@@ -1 +1,44 @@
package cli

import (
"fmt"
"github.com/cosmos/cosmos-sdk/version"

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/spf13/cobra"

"github.com/cosmos/ibc-go/v4/modules/apps/31-ibc-query/types"
)

// GetCmdQueryCrossChainQueryResult defines the command to query CrossChainQueryResult from store
func GetCmdQueryCrossChainQueryResult() *cobra.Command {
cmd := &cobra.Command{
Use: "query-ibc-query-result [query id]",
Short: "query cross chain query result with query id",
Long: "query cross chain query result with query id",
Example: fmt.Sprintf("%s query ibc-query query-ibc-query-result 3", version.AppName),
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)

req := &types.QueryCrossChainQueryResult{
Id: args[0],
}

res, err := queryClient.CrossChainQueryResult(cmd.Context(), req)
if err != nil {
return err
}

return clientCtx.PrintProto(res)
},
}

flags.AddQueryFlagsToCmd(cmd)
return cmd
}
2 changes: 1 addition & 1 deletion modules/apps/31-ibc-query/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func NewMsgCrossChainQueryCmd() *cobra.Command {
return err
}

msg := types.NewMsgSubmitCrossChainQuery(queryId, path, &timeoutHeight, timeoutTimestamp, queryHeight, creator, srcPort, srcChannel)
msg := types.NewMsgSubmitCrossChainQuery(queryId, path, timeoutHeight, timeoutTimestamp, queryHeight, creator, srcPort, srcChannel)

return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
Expand Down
4 changes: 2 additions & 2 deletions modules/apps/31-ibc-query/keeper/grpc_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (

var _ types.QueryServer = Keeper{}

// CrossChainQuery implements the Query/CrossChainQuery gRPC method
func (k Keeper) CrossChainQuery(context context.Context, query *types.QueryCrossChainQuery) (*types.QueryCrossChainQueryResponse, error) {
// CrossChainQueryResult implements the Query/CrossChainQueryResult gRPC method
func (k Keeper) CrossChainQueryResult(context context.Context, query *types.QueryCrossChainQueryResult) (*types.QueryCrossChainQueryResultResponse, error) {
// TODO
// get queryResult from private store
return nil, nil
Expand Down
2 changes: 1 addition & 1 deletion modules/apps/31-ibc-query/keeper/msg_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func (suite *KeeperTestSuite) TestSubmitCrossChainQuery() {
true,
func() {
suite.coordinator.CreateChannels(path)
msg = types.NewMsgSubmitCrossChainQuery("query-1", "test/query_path", &timeoutHeight, timeoutTimestamp, queryHeight.RevisionHeight, addr, path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID)
msg = types.NewMsgSubmitCrossChainQuery("query-1", "test/query_path", timeoutHeight, timeoutTimestamp, queryHeight.RevisionHeight, addr, path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID)
},
},
}
Expand Down
24 changes: 15 additions & 9 deletions modules/apps/31-ibc-query/keeper/relay.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,22 +55,28 @@ func (k Keeper) SendQuery(ctx sdk.Context,

// OnRecvPacket processes a cross chain query result.
func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet) error {
var data types.CrossChainQueryResult
var packetData types.IBCQueryResultPacketData
var queryResult types.CrossChainQueryResult

if err := types.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil {
return sdkerrors.Wrapf(types.ErrUnknownDataType, "cannot unmarshal ICS-31 interchain query packet data")
if err := types.ModuleCdc.UnmarshalJSON(packet.GetData(), &packetData); err != nil {
return sdkerrors.Wrapf(types.ErrUnknownDataType, "cannot unmarshal ICS-31 interchain query packet packetData")
}

// check CrossChainQuery exist
if _, found := k.GetCrossChainQuery(ctx, data.Id); !found {
return sdkerrors.Wrapf(types.ErrCrossChainQueryNotFound, "query Id doesn't exist in store")
// TODO: validate query packetData with proof

queryResult = types.CrossChainQueryResult{
Id: packetData.Id,
Result: queryResult.Result,
Data: packetData.Data,
}

// remove query from privateStore
k.DeleteCrossChainQuery(ctx, data.Id)
// remove CrossChainQuery from privateStore
if _, found := k.GetCrossChainQuery(ctx, queryResult.Id); found {
k.DeleteCrossChainQuery(ctx, queryResult.Id)
}

// store result in privateStore
k.SetCrossChainQueryResult(ctx, data)
k.SetCrossChainQueryResult(ctx, queryResult)

return nil
}
Expand Down
Loading

0 comments on commit 78ac81a

Please sign in to comment.