Skip to content

Commit

Permalink
fix: only use relative timeout timestamps in ica cli (#7961)
Browse files Browse the repository at this point in the history
* fix: only use relative timeout timestamps in ica cli

* chore: added changelog

---------

Co-authored-by: Gjermund Garaba <[email protected]>
  • Loading branch information
damiannolan and gjermundgaraba authored Feb 12, 2025
1 parent 79218a5 commit 3b3438a
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 27 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (core/05-port) [\#7252](https://github.com/cosmos/ibc-go/pull/7252) Removed function `LookupModuleByPort`
* (core/24-host) [\#7239](https://github.com/cosmos/ibc-go/pull/7239) Removed function `ChannelCapabilityPath`
* (apps/27-interchain-accounts) [\#7239](https://github.com/cosmos/ibc-go/pull/7239) The following functions have been removed: `AuthenticateCapability`, `ClaimCapability`
* (apps/27-interchain-accounts) [\#7961](https://github.com/cosmos/ibc-go/pull/7961) Removed `absolute-timeouts` flag from `send-tx` in the ICA CLI.
* (apps/transfer) [\#7239](https://github.com/cosmos/ibc-go/pull/7239) The following functions have been removed: `BindPort`, `AuthenticateCapability`, `ClaimCapability`
* (capability) [\#7279](https://github.com/cosmos/ibc-go/pull/7279) The module `capability` has been removed.
* (testing) [\#7305](https://github.com/cosmos/ibc-go/pull/7305) Added `TrustedValidators` map to `TestChain`. This removes the dependency on the `x/staking` module for retrieving trusted validator sets at a given height, and removes the `GetTrustedValidators` method from the `TestChain` struct.
Expand Down
29 changes: 2 additions & 27 deletions modules/apps/27-interchain-accounts/controller/client/cli/tx.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package cli

import (
"errors"
"fmt"
"os"
"strings"
Expand All @@ -26,7 +25,6 @@ const (
// The channel ordering
flagOrdering = "ordering"
flagPacketTimeoutTimestamp = "packet-timeout-timestamp"
flagAbsoluteTimeouts = "absolute-timeouts"
)

// defaultRelativePacketTimeoutTimestamp is the default packet timeout timestamp (in nanoseconds)
Expand Down Expand Up @@ -81,10 +79,8 @@ func newSendTxCmd() *cobra.Command {
Use: "send-tx [connection-id] [path/to/packet_msg.json]",
Short: "Send an interchain account tx on the provided connection.",
Long: strings.TrimSpace(`Submits pre-built packet data containing messages to be executed on the host chain and attempts to send the packet.
Packet data is provided as json, file or string. A timeout timestamp can be provided using the flag {packet-timeout-timestamp}.
By default timeout timestamps are calculated relatively, adding {packet-timeout-timestamp} to the user's local system clock time.
Absolute timeout timestamp values can be used by setting the {absolute-timeouts} flag to true.
If no timeout value is set then a default relative timeout value of 10 minutes is used.`),
Packet data is provided as json, file or string. A relative timeout timestamp can be provided using the flag {packet-timeout-timestamp}.
An absolute timeout is calculated on chain using the current block time. If no timeout value is set then a default relative timeout value of 10 minutes is used.`),
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
Expand Down Expand Up @@ -116,34 +112,13 @@ If no timeout value is set then a default relative timeout value of 10 minutes i
return err
}

absoluteTimeouts, err := cmd.Flags().GetBool(flagAbsoluteTimeouts)
if err != nil {
return err
}

// NOTE: relative timeouts using block height are not supported.
if !absoluteTimeouts {
if timeoutTimestamp == 0 {
return errors.New("relative timeouts must provide a non zero value timestamp")
}

// use local clock time as reference time for calculating timeout timestamp.
now := time.Now().UnixNano()
if now <= 0 {
return errors.New("local clock time is not greater than Jan 1st, 1970 12:00 AM")
}

timeoutTimestamp = uint64(now) + timeoutTimestamp
}

msg := types.NewMsgSendTx(owner, connectionID, timeoutTimestamp, icaMsgData)

return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

cmd.Flags().Uint64(flagPacketTimeoutTimestamp, defaultRelativePacketTimeoutTimestamp, "Packet timeout timestamp in nanoseconds from now. Default is 10 minutes.")
cmd.Flags().Bool(flagAbsoluteTimeouts, false, "Timeout flags are used as absolute timeouts.")
flags.AddTxFlagsToCmd(cmd)

return cmd
Expand Down

0 comments on commit 3b3438a

Please sign in to comment.