Skip to content

Commit fa7038b

Browse files
authored
Support non critical opt extions in clob and sending cli (#2667)
1 parent 81ec99c commit fa7038b

File tree

9 files changed

+170
-9
lines changed

9 files changed

+170
-9
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package flags
2+
3+
import (
4+
"github.com/spf13/cobra"
5+
)
6+
7+
const (
8+
FlagAuthenticators = "authenticators"
9+
)
10+
11+
// AddTxPermissionedKeyFlagsToCmd adds common flags to a module tx command.
12+
func AddTxPermissionedKeyFlagsToCmd(cmd *cobra.Command) {
13+
f := cmd.Flags()
14+
f.UintSlice(FlagAuthenticators, nil, "Authenticators to use for authenticating this transaction.")
15+
}
16+
17+
// GetPermisionedKeyAuthenticatorsForExtOptions returns the authenticators from the provided command flags.
18+
func GetPermisionedKeyAuthenticatorsForExtOptions(cmd *cobra.Command) ([]uint64, error) {
19+
flags := cmd.Flags()
20+
values, err := flags.GetUintSlice(FlagAuthenticators)
21+
if err == nil {
22+
authenticators := make([]uint64, len(values))
23+
for i, v := range values {
24+
authenticators[i] = uint64(v)
25+
}
26+
return authenticators, nil
27+
}
28+
return nil, err
29+
}

protocol/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ replace (
472472
// Use dYdX fork of CometBFT
473473
github.com/cometbft/cometbft => github.com/dydxprotocol/cometbft v0.38.6-0.20241126215519-69cdde955fd0
474474
// Use dYdX fork of Cosmos SDK
475-
github.com/cosmos/cosmos-sdk => github.com/dydxprotocol/cosmos-sdk v0.50.6-0.20241127172510-4ee58434cdea
475+
github.com/cosmos/cosmos-sdk => github.com/dydxprotocol/cosmos-sdk v0.50.6-0.20241219194626-713334f028e7
476476
github.com/cosmos/iavl => github.com/dydxprotocol/iavl v1.1.1-0.20240509161911-1c8b8e787e85
477477
)
478478

protocol/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -960,8 +960,8 @@ github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA
960960
github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
961961
github.com/dydxprotocol/cometbft v0.38.6-0.20241126215519-69cdde955fd0 h1:KBMuBNAE91SVeULnq2XBnmSDGeimI6aM1+YxlLb0yOI=
962962
github.com/dydxprotocol/cometbft v0.38.6-0.20241126215519-69cdde955fd0/go.mod h1:XSQX1hQbr54qaJb4/5YNNZGXkAQHHa6bi/KMcN1SQ7w=
963-
github.com/dydxprotocol/cosmos-sdk v0.50.6-0.20241127172510-4ee58434cdea h1:5jsj2e6zqnx7Q7SiNTYC7UGEW0ymgKFTbLxzp27/2Fg=
964-
github.com/dydxprotocol/cosmos-sdk v0.50.6-0.20241127172510-4ee58434cdea/go.mod h1:z/5+LD4MJzLqbe+fBCWI2pZLnQbOlzSM82snAw2zceg=
963+
github.com/dydxprotocol/cosmos-sdk v0.50.6-0.20241219194626-713334f028e7 h1:uYf2XRrDik5Aq93hIWOPG5qW+k5I4RMEuSQPT+fZOCs=
964+
github.com/dydxprotocol/cosmos-sdk v0.50.6-0.20241219194626-713334f028e7/go.mod h1:z/5+LD4MJzLqbe+fBCWI2pZLnQbOlzSM82snAw2zceg=
965965
github.com/dydxprotocol/cosmos-sdk/store v1.0.3-0.20240326192503-dd116391188d h1:HgLu1FD2oDFzlKW6/+SFXlH5Os8cwNTbplQIrQOWx8w=
966966
github.com/dydxprotocol/cosmos-sdk/store v1.0.3-0.20240326192503-dd116391188d/go.mod h1:zMcD3hfNwd0WMTpdRUhS3QxoCoEtBXWeoKsu3iaLBbQ=
967967
github.com/dydxprotocol/iavl v1.1.1-0.20240509161911-1c8b8e787e85 h1:5B/yGZyTBX/OZASQQMnk6Ms/TZja56MYd8OBaVc0Mho=

protocol/x/clob/client/cli/tx_batch_cancel.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import (
77
"github.com/cosmos/cosmos-sdk/client"
88
"github.com/cosmos/cosmos-sdk/client/flags"
99
"github.com/cosmos/cosmos-sdk/client/tx"
10+
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
11+
customflags "github.com/dydxprotocol/v4-chain/protocol/app/flags"
12+
aptypes "github.com/dydxprotocol/v4-chain/protocol/x/accountplus/types"
1013
"github.com/dydxprotocol/v4-chain/protocol/x/clob/types"
1114
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
1215
"github.com/spf13/cast"
@@ -70,11 +73,30 @@ func CmdBatchCancel() *cobra.Command {
7073
if err := msg.ValidateBasic(); err != nil {
7174
return err
7275
}
73-
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
76+
77+
txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags())
78+
if err != nil {
79+
return err
80+
}
81+
82+
authenticatorIds, err := customflags.GetPermisionedKeyAuthenticatorsForExtOptions(cmd)
83+
if err == nil && len(authenticatorIds) > 0 {
84+
value, err := codectypes.NewAnyWithValue(
85+
&aptypes.TxExtension{
86+
SelectedAuthenticators: authenticatorIds,
87+
},
88+
)
89+
if err != nil {
90+
return err
91+
}
92+
txf = txf.WithNonCriticalExtensionOptions(value)
93+
}
94+
return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg)
7495
},
7596
}
7697

7798
flags.AddTxFlagsToCmd(cmd)
99+
customflags.AddTxPermissionedKeyFlagsToCmd(cmd)
78100

79101
return cmd
80102
}

protocol/x/clob/client/cli/tx_cancel_order.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import (
44
"github.com/cosmos/cosmos-sdk/client"
55
"github.com/cosmos/cosmos-sdk/client/flags"
66
"github.com/cosmos/cosmos-sdk/client/tx"
7+
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
8+
customflags "github.com/dydxprotocol/v4-chain/protocol/app/flags"
9+
aptypes "github.com/dydxprotocol/v4-chain/protocol/x/accountplus/types"
710
"github.com/dydxprotocol/v4-chain/protocol/x/clob/types"
811
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
912
"github.com/spf13/cast"
@@ -58,11 +61,30 @@ func CmdCancelOrder() *cobra.Command {
5861
if err := msg.ValidateBasic(); err != nil {
5962
return err
6063
}
61-
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
64+
65+
txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags())
66+
if err != nil {
67+
return err
68+
}
69+
70+
authenticatorIds, err := customflags.GetPermisionedKeyAuthenticatorsForExtOptions(cmd)
71+
if err == nil && len(authenticatorIds) > 0 {
72+
value, err := codectypes.NewAnyWithValue(
73+
&aptypes.TxExtension{
74+
SelectedAuthenticators: authenticatorIds,
75+
},
76+
)
77+
if err != nil {
78+
return err
79+
}
80+
txf = txf.WithNonCriticalExtensionOptions(value)
81+
}
82+
return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg)
6283
},
6384
}
6485

6586
flags.AddTxFlagsToCmd(cmd)
87+
customflags.AddTxPermissionedKeyFlagsToCmd(cmd)
6688

6789
return cmd
6890
}

protocol/x/clob/client/cli/tx_place_order.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import (
44
"github.com/cosmos/cosmos-sdk/client"
55
"github.com/cosmos/cosmos-sdk/client/flags"
66
"github.com/cosmos/cosmos-sdk/client/tx"
7+
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
8+
customflags "github.com/dydxprotocol/v4-chain/protocol/app/flags"
9+
aptypes "github.com/dydxprotocol/v4-chain/protocol/x/accountplus/types"
710
"github.com/dydxprotocol/v4-chain/protocol/x/clob/types"
811
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
912
"github.com/spf13/cast"
@@ -77,11 +80,30 @@ func CmdPlaceOrder() *cobra.Command {
7780
if err := msg.ValidateBasic(); err != nil {
7881
return err
7982
}
80-
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
83+
84+
txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags())
85+
if err != nil {
86+
return err
87+
}
88+
89+
authenticatorIds, err := customflags.GetPermisionedKeyAuthenticatorsForExtOptions(cmd)
90+
if err == nil && len(authenticatorIds) > 0 {
91+
value, err := codectypes.NewAnyWithValue(
92+
&aptypes.TxExtension{
93+
SelectedAuthenticators: authenticatorIds,
94+
},
95+
)
96+
if err != nil {
97+
return err
98+
}
99+
txf = txf.WithNonCriticalExtensionOptions(value)
100+
}
101+
return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg)
81102
},
82103
}
83104

84105
flags.AddTxFlagsToCmd(cmd)
106+
customflags.AddTxPermissionedKeyFlagsToCmd(cmd)
85107

86108
return cmd
87109
}

protocol/x/sending/client/cli/tx_create_transfer.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import (
66
"github.com/cosmos/cosmos-sdk/client"
77
"github.com/cosmos/cosmos-sdk/client/flags"
88
"github.com/cosmos/cosmos-sdk/client/tx"
9+
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
10+
customflags "github.com/dydxprotocol/v4-chain/protocol/app/flags"
11+
aptypes "github.com/dydxprotocol/v4-chain/protocol/x/accountplus/types"
912
assettypes "github.com/dydxprotocol/v4-chain/protocol/x/assets/types"
1013
"github.com/dydxprotocol/v4-chain/protocol/x/sending/types"
1114
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
@@ -65,11 +68,30 @@ func CmdCreateTransfer() *cobra.Command {
6568
if err := msg.ValidateBasic(); err != nil {
6669
return err
6770
}
68-
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
71+
72+
txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags())
73+
if err != nil {
74+
return err
75+
}
76+
77+
authenticatorIds, err := customflags.GetPermisionedKeyAuthenticatorsForExtOptions(cmd)
78+
if err == nil && len(authenticatorIds) > 0 {
79+
value, err := codectypes.NewAnyWithValue(
80+
&aptypes.TxExtension{
81+
SelectedAuthenticators: authenticatorIds,
82+
},
83+
)
84+
if err != nil {
85+
return err
86+
}
87+
txf = txf.WithNonCriticalExtensionOptions(value)
88+
}
89+
return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg)
6990
},
7091
}
7192

7293
flags.AddTxFlagsToCmd(cmd)
94+
customflags.AddTxPermissionedKeyFlagsToCmd(cmd)
7395

7496
return cmd
7597
}

protocol/x/sending/client/cli/tx_deposit_to_subaccount.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import (
44
"github.com/cosmos/cosmos-sdk/client"
55
"github.com/cosmos/cosmos-sdk/client/flags"
66
"github.com/cosmos/cosmos-sdk/client/tx"
7+
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
8+
customflags "github.com/dydxprotocol/v4-chain/protocol/app/flags"
9+
aptypes "github.com/dydxprotocol/v4-chain/protocol/x/accountplus/types"
710
assettypes "github.com/dydxprotocol/v4-chain/protocol/x/assets/types"
811
"github.com/dydxprotocol/v4-chain/protocol/x/sending/types"
912
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
@@ -60,11 +63,30 @@ Note, the '--from' flag is ignored as it is implied from [sender_key_or_address]
6063
if err := msg.ValidateBasic(); err != nil {
6164
return err
6265
}
63-
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
66+
67+
txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags())
68+
if err != nil {
69+
return err
70+
}
71+
72+
authenticatorIds, err := customflags.GetPermisionedKeyAuthenticatorsForExtOptions(cmd)
73+
if err == nil && len(authenticatorIds) > 0 {
74+
value, err := codectypes.NewAnyWithValue(
75+
&aptypes.TxExtension{
76+
SelectedAuthenticators: authenticatorIds,
77+
},
78+
)
79+
if err != nil {
80+
return err
81+
}
82+
txf = txf.WithNonCriticalExtensionOptions(value)
83+
}
84+
return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg)
6485
},
6586
}
6687

6788
flags.AddTxFlagsToCmd(cmd)
89+
customflags.AddTxPermissionedKeyFlagsToCmd(cmd)
6890

6991
return cmd
7092
}

protocol/x/sending/client/cli/tx_withdraw_from_subaccount.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import (
44
"github.com/cosmos/cosmos-sdk/client"
55
"github.com/cosmos/cosmos-sdk/client/flags"
66
"github.com/cosmos/cosmos-sdk/client/tx"
7+
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
8+
customflags "github.com/dydxprotocol/v4-chain/protocol/app/flags"
9+
aptypes "github.com/dydxprotocol/v4-chain/protocol/x/accountplus/types"
710
assettypes "github.com/dydxprotocol/v4-chain/protocol/x/assets/types"
811
"github.com/dydxprotocol/v4-chain/protocol/x/sending/types"
912
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
@@ -60,11 +63,30 @@ Note, the '--from' flag is ignored as it is implied from [sender_key_or_address]
6063
if err := msg.ValidateBasic(); err != nil {
6164
return err
6265
}
63-
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
66+
67+
txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags())
68+
if err != nil {
69+
return err
70+
}
71+
72+
authenticatorIds, err := customflags.GetPermisionedKeyAuthenticatorsForExtOptions(cmd)
73+
if err == nil && len(authenticatorIds) > 0 {
74+
value, err := codectypes.NewAnyWithValue(
75+
&aptypes.TxExtension{
76+
SelectedAuthenticators: authenticatorIds,
77+
},
78+
)
79+
if err != nil {
80+
return err
81+
}
82+
txf = txf.WithNonCriticalExtensionOptions(value)
83+
}
84+
return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg)
6485
},
6586
}
6687

6788
flags.AddTxFlagsToCmd(cmd)
89+
customflags.AddTxPermissionedKeyFlagsToCmd(cmd)
6890

6991
return cmd
7092
}

0 commit comments

Comments
 (0)