forked from cosmos/interchain-security
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial Setup + Protobuf files (cosmos#2)
* initial setup Add CODEOWNERS, go.mod file, copy Makefile from SDK, add proto files for client with updated import/package name, modified API route to dropt v1beta1 to v1, get third_party vendor files * generate proto files * add more proto files * add connection and commitment proto files * finish adding proto files * make proto-all, remove unnecessary script, add buf file * bump sdk to master, copy code directly * make proto-all
- Loading branch information
1 parent
40f46bf
commit 09646a0
Showing
401 changed files
with
115,750 additions
and
0 deletions.
There are no files selected for viewing
Validating CODEOWNERS rules …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# CODEOWNERS: https://help.github.com/articles/about-codeowners/ | ||
|
||
* @colin-axner @fedekunze @AdityaSripal |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package cli | ||
|
||
import ( | ||
"github.com/spf13/cobra" | ||
|
||
"github.com/cosmos/cosmos-sdk/client" | ||
) | ||
|
||
// GetQueryCmd returns the query commands for IBC connections | ||
func GetQueryCmd() *cobra.Command { | ||
queryCmd := &cobra.Command{ | ||
Use: "ibc-transfer", | ||
Short: "IBC fungible token transfer query subcommands", | ||
DisableFlagParsing: true, | ||
SuggestionsMinimumDistance: 2, | ||
} | ||
|
||
queryCmd.AddCommand( | ||
GetCmdQueryDenomTrace(), | ||
GetCmdQueryDenomTraces(), | ||
GetCmdParams(), | ||
) | ||
|
||
return queryCmd | ||
} | ||
|
||
// NewTxCmd returns the transaction commands for IBC fungible token transfer | ||
func NewTxCmd() *cobra.Command { | ||
txCmd := &cobra.Command{ | ||
Use: "ibc-transfer", | ||
Short: "IBC fungible token transfer transaction subcommands", | ||
DisableFlagParsing: true, | ||
SuggestionsMinimumDistance: 2, | ||
RunE: client.ValidateCmd, | ||
} | ||
|
||
txCmd.AddCommand( | ||
NewTransferTxCmd(), | ||
) | ||
|
||
return txCmd | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
package cli | ||
|
||
import ( | ||
"fmt" | ||
|
||
"github.com/spf13/cobra" | ||
|
||
"github.com/cosmos/cosmos-sdk/client" | ||
"github.com/cosmos/cosmos-sdk/client/flags" | ||
"github.com/cosmos/cosmos-sdk/version" | ||
"github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" | ||
) | ||
|
||
// GetCmdQueryDenomTrace defines the command to query a a denomination trace from a given hash. | ||
func GetCmdQueryDenomTrace() *cobra.Command { | ||
cmd := &cobra.Command{ | ||
Use: "denom-trace [hash]", | ||
Short: "Query the denom trace info from a given trace hash", | ||
Long: "Query the denom trace info from a given trace hash", | ||
Example: fmt.Sprintf("%s query ibc-transfer denom-trace [hash]", 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.QueryDenomTraceRequest{ | ||
Hash: args[0], | ||
} | ||
|
||
res, err := queryClient.DenomTrace(cmd.Context(), req) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
return clientCtx.PrintProto(res) | ||
}, | ||
} | ||
|
||
flags.AddQueryFlagsToCmd(cmd) | ||
return cmd | ||
} | ||
|
||
// GetCmdQueryDenomTraces defines the command to query all the denomination trace infos | ||
// that this chain mantains. | ||
func GetCmdQueryDenomTraces() *cobra.Command { | ||
cmd := &cobra.Command{ | ||
Use: "denom-traces", | ||
Short: "Query the trace info for all token denominations", | ||
Long: "Query the trace info for all token denominations", | ||
Example: fmt.Sprintf("%s query ibc-transfer denom-traces", version.AppName), | ||
Args: cobra.NoArgs, | ||
RunE: func(cmd *cobra.Command, _ []string) error { | ||
clientCtx, err := client.GetClientQueryContext(cmd) | ||
if err != nil { | ||
return err | ||
} | ||
queryClient := types.NewQueryClient(clientCtx) | ||
|
||
pageReq, err := client.ReadPageRequest(cmd.Flags()) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
req := &types.QueryDenomTracesRequest{ | ||
Pagination: pageReq, | ||
} | ||
|
||
res, err := queryClient.DenomTraces(cmd.Context(), req) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
return clientCtx.PrintProto(res) | ||
}, | ||
} | ||
flags.AddQueryFlagsToCmd(cmd) | ||
flags.AddPaginationFlagsToCmd(cmd, "denominations trace") | ||
|
||
return cmd | ||
} | ||
|
||
// GetCmdParams returns the command handler for ibc-transfer parameter querying. | ||
func GetCmdParams() *cobra.Command { | ||
cmd := &cobra.Command{ | ||
Use: "params", | ||
Short: "Query the current ibc-transfer parameters", | ||
Long: "Query the current ibc-transfer parameters", | ||
Args: cobra.NoArgs, | ||
Example: fmt.Sprintf("%s query ibc-transfer params", version.AppName), | ||
RunE: func(cmd *cobra.Command, _ []string) error { | ||
clientCtx, err := client.GetClientQueryContext(cmd) | ||
if err != nil { | ||
return err | ||
} | ||
queryClient := types.NewQueryClient(clientCtx) | ||
|
||
res, _ := queryClient.Params(cmd.Context(), &types.QueryParamsRequest{}) | ||
return clientCtx.PrintProto(res.Params) | ||
}, | ||
} | ||
|
||
flags.AddQueryFlagsToCmd(cmd) | ||
|
||
return cmd | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
package cli | ||
|
||
import ( | ||
"fmt" | ||
"strings" | ||
|
||
"github.com/spf13/cobra" | ||
|
||
"github.com/cosmos/cosmos-sdk/client" | ||
"github.com/cosmos/cosmos-sdk/client/flags" | ||
"github.com/cosmos/cosmos-sdk/client/tx" | ||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
"github.com/cosmos/cosmos-sdk/types/msgservice" | ||
"github.com/cosmos/cosmos-sdk/version" | ||
"github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" | ||
clienttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" | ||
channelutils "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/client/utils" | ||
) | ||
|
||
const ( | ||
flagPacketTimeoutHeight = "packet-timeout-height" | ||
flagPacketTimeoutTimestamp = "packet-timeout-timestamp" | ||
flagAbsoluteTimeouts = "absolute-timeouts" | ||
) | ||
|
||
// NewTransferTxCmd returns the command to create a NewMsgTransfer transaction | ||
func NewTransferTxCmd() *cobra.Command { | ||
cmd := &cobra.Command{ | ||
Use: "transfer [src-port] [src-channel] [receiver] [amount]", | ||
Short: "Transfer a fungible token through IBC", | ||
Long: strings.TrimSpace(`Transfer a fungible token through IBC. Timeouts can be specified | ||
as absolute or relative using the "absolute-timeouts" flag. Timeout height can be set by passing in the height string | ||
in the form {revision}-{height} using the "packet-timeout-height" flag. Relative timeouts are added to | ||
the block height and block timestamp queried from the latest consensus state corresponding | ||
to the counterparty channel. Any timeout set to 0 is disabled.`), | ||
Example: fmt.Sprintf("%s tx ibc-transfer transfer [src-port] [src-channel] [receiver] [amount]", version.AppName), | ||
Args: cobra.ExactArgs(4), | ||
RunE: func(cmd *cobra.Command, args []string) error { | ||
clientCtx, err := client.GetClientTxContext(cmd) | ||
if err != nil { | ||
return err | ||
} | ||
sender := clientCtx.GetFromAddress() | ||
srcPort := args[0] | ||
srcChannel := args[1] | ||
receiver := args[2] | ||
|
||
coin, err := sdk.ParseCoinNormalized(args[3]) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if !strings.HasPrefix(coin.Denom, "ibc/") { | ||
denomTrace := types.ParseDenomTrace(coin.Denom) | ||
coin.Denom = denomTrace.IBCDenom() | ||
} | ||
|
||
timeoutHeightStr, err := cmd.Flags().GetString(flagPacketTimeoutHeight) | ||
if err != nil { | ||
return err | ||
} | ||
timeoutHeight, err := clienttypes.ParseHeight(timeoutHeightStr) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
timeoutTimestamp, err := cmd.Flags().GetUint64(flagPacketTimeoutTimestamp) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
absoluteTimeouts, err := cmd.Flags().GetBool(flagAbsoluteTimeouts) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
// if the timeouts are not absolute, retrieve latest block height and block timestamp | ||
// for the consensus state connected to the destination port/channel | ||
if !absoluteTimeouts { | ||
consensusState, height, _, err := channelutils.QueryLatestConsensusState(clientCtx, srcPort, srcChannel) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if !timeoutHeight.IsZero() { | ||
absoluteHeight := height | ||
absoluteHeight.RevisionNumber += timeoutHeight.RevisionNumber | ||
absoluteHeight.RevisionHeight += timeoutHeight.RevisionHeight | ||
timeoutHeight = absoluteHeight | ||
} | ||
|
||
if timeoutTimestamp != 0 { | ||
timeoutTimestamp = consensusState.GetTimestamp() + timeoutTimestamp | ||
} | ||
} | ||
|
||
msg := types.NewMsgTransfer( | ||
srcPort, srcChannel, coin, sender, receiver, timeoutHeight, timeoutTimestamp, | ||
) | ||
svcMsgClientConn := &msgservice.ServiceMsgClientConn{} | ||
msgClient := types.NewMsgClient(svcMsgClientConn) | ||
_, err = msgClient.Transfer(cmd.Context(), msg) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), svcMsgClientConn.GetMsgs()...) | ||
}, | ||
} | ||
|
||
cmd.Flags().String(flagPacketTimeoutHeight, types.DefaultRelativePacketTimeoutHeight, "Packet timeout block height. The timeout is disabled when set to 0-0.") | ||
cmd.Flags().Uint64(flagPacketTimeoutTimestamp, types.DefaultRelativePacketTimeoutTimestamp, "Packet timeout timestamp in nanoseconds. Default is 10 minutes. The timeout is disabled when set to 0.") | ||
cmd.Flags().Bool(flagAbsoluteTimeouts, false, "Timeout flags are used as absolute timeouts.") | ||
flags.AddTxFlagsToCmd(cmd) | ||
|
||
return cmd | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package transfer | ||
|
||
import ( | ||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" | ||
"github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" | ||
) | ||
|
||
// NewHandler returns sdk.Handler for IBC token transfer module messages | ||
func NewHandler(k types.MsgServer) sdk.Handler { | ||
return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { | ||
ctx = ctx.WithEventManager(sdk.NewEventManager()) | ||
|
||
switch msg := msg.(type) { | ||
case *types.MsgTransfer: | ||
res, err := k.Transfer(sdk.WrapSDKContext(ctx), msg) | ||
return sdk.WrapServiceResult(ctx, res, err) | ||
|
||
default: | ||
return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized ICS-20 transfer message type: %T", msg) | ||
} | ||
} | ||
} |
Oops, something went wrong.