From 39b0244eeea481157dc602f9659710b3dbb0f705 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 22 Jan 2025 13:23:12 +0100 Subject: [PATCH] refactor: simplify sign mode (2/2) (#23476) --- CHANGELOG.md | 2 +- client/tx/aux_builder.go | 2 +- client/tx/aux_builder_test.go | 4 +--- types/tx/direct_aux.go | 6 +++--- types/tx/direct_aux_test.go | 5 +++-- types/tx/signing/signature.go | 8 +++---- types/tx/signing/types.go | 39 ----------------------------------- x/auth/tx/sigs.go | 4 +--- 8 files changed, 14 insertions(+), 56 deletions(-) delete mode 100644 types/tx/signing/types.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 227e57f774..bd5ae179c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,7 +50,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i * [#23470](https://github.com/cosmos/cosmos-sdk/pull/23470) Converge to use of one single sign mode type and signer data: * Use api's signmode throughout the SDK to align with `cosmossdk.io/tx`. This allows developer not to juggle between sign mode types * Deprecate `authsigning.SignerData` in favor of txsigning.SignerData and replace its usage - * Move helpers to go from one sign mode enum to another to `types/signing` instead of `x/auth/signing` (less dependency on `x`) + * Remove `APISignModeToInternal` from `x/auth` as no conversion is necessary by the user anymore ### Bug Fixes diff --git a/client/tx/aux_builder.go b/client/tx/aux_builder.go index 35ba3a8800..2345be22ee 100644 --- a/client/tx/aux_builder.go +++ b/client/tx/aux_builder.go @@ -136,7 +136,7 @@ func (b *AuxTxBuilder) SetSignMode(mode apisigning.SignMode) error { apisigning.SignMode_SIGN_MODE_DIRECT_AUX, apisigning.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } - b.auxSignerData.Mode, _ = signing.APISignModeToInternal(mode) + b.auxSignerData.Mode = signing.SignMode(mode) return nil } diff --git a/client/tx/aux_builder_test.go b/client/tx/aux_builder_test.go index 67e04bc898..f8eb895319 100644 --- a/client/tx/aux_builder_test.go +++ b/client/tx/aux_builder_test.go @@ -18,7 +18,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" typestx "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/cosmos/cosmos-sdk/types/tx/signing" ) const ( @@ -249,7 +248,6 @@ func checkCorrectData(t *testing.T, cdc codec.Codec, auxSignerData typestx.AuxSi require.Equal(t, chainID, auxSignerData.SignDoc.ChainId) require.Equal(t, msgAny, body.GetMessages()[0]) require.Equal(t, pkAny, auxSignerData.SignDoc.PublicKey) - m, _ := signing.InternalSignModeToAPI(auxSignerData.Mode) - require.Equal(t, signMode, m) + require.Equal(t, signMode, apisigning.SignMode(auxSignerData.Mode)) require.Equal(t, rawSig, auxSignerData.Sig) } diff --git a/types/tx/direct_aux.go b/types/tx/direct_aux.go index 90d00fc48b..ddb470b215 100644 --- a/types/tx/direct_aux.go +++ b/types/tx/direct_aux.go @@ -3,6 +3,8 @@ package tx import ( gogoprotoany "github.com/cosmos/gogoproto/types/any" + apisigning "cosmossdk.io/api/cosmos/tx/signing/v1beta1" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/tx/signing" @@ -50,12 +52,10 @@ func (a *AuxSignerData) GetSignatureV2() (signing.SignatureV2, error) { return signing.SignatureV2{}, sdkerrors.ErrInvalidType.Wrapf("expected %T, got %T", (cryptotypes.PubKey)(nil), pk) } - signMode, _ := signing.InternalSignModeToAPI(a.Mode) - return signing.SignatureV2{ PubKey: pk, Data: &signing.SingleSignatureData{ - SignMode: signMode, + SignMode: apisigning.SignMode(a.Mode), Signature: a.Sig, }, Sequence: a.SignDoc.Sequence, diff --git a/types/tx/direct_aux_test.go b/types/tx/direct_aux_test.go index 62427c576b..421da8e18d 100644 --- a/types/tx/direct_aux_test.go +++ b/types/tx/direct_aux_test.go @@ -5,6 +5,8 @@ import ( "github.com/stretchr/testify/require" + apisigning "cosmossdk.io/api/cosmos/tx/signing/v1beta1" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" @@ -76,8 +78,7 @@ func TestAuxSignerData(t *testing.T) { require.NoError(t, err) sigV2, err := tc.sd.GetSignatureV2() require.NoError(t, err) - m, _ := signing.InternalSignModeToAPI(tc.sd.Mode) - require.Equal(t, m, sigV2.Data.(*signing.SingleSignatureData).SignMode) + require.Equal(t, apisigning.SignMode(tc.sd.Mode), sigV2.Data.(*signing.SingleSignatureData).SignMode) require.Equal(t, tc.sd.Sig, sigV2.Data.(*signing.SingleSignatureData).Signature) require.Equal(t, tc.sd.SignDoc.Sequence, sigV2.Sequence) require.True(t, tc.sd.SignDoc.PublicKey.GetCachedValue().(cryptotypes.PubKey).Equals(sigV2.PubKey)) diff --git a/types/tx/signing/signature.go b/types/tx/signing/signature.go index ada0a81076..938d63c36d 100644 --- a/types/tx/signing/signature.go +++ b/types/tx/signing/signature.go @@ -5,6 +5,8 @@ import ( gogoprotoany "github.com/cosmos/gogoproto/types/any" + signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" ) @@ -32,11 +34,10 @@ type SignatureV2 struct { func SignatureDataToProto(data SignatureData) *SignatureDescriptor_Data { switch data := data.(type) { case *SingleSignatureData: - signMode, _ := APISignModeToInternal(data.SignMode) return &SignatureDescriptor_Data{ Sum: &SignatureDescriptor_Data_Single_{ Single: &SignatureDescriptor_Data_Single{ - Mode: signMode, + Mode: SignMode(data.SignMode), Signature: data.Signature, }, }, @@ -67,9 +68,8 @@ func SignatureDataToProto(data SignatureData) *SignatureDescriptor_Data { func SignatureDataFromProto(descData *SignatureDescriptor_Data) SignatureData { switch descData := descData.Sum.(type) { case *SignatureDescriptor_Data_Single_: - signMode, _ := InternalSignModeToAPI(descData.Single.Mode) return &SingleSignatureData{ - SignMode: signMode, + SignMode: signingv1beta1.SignMode(descData.Single.Mode), Signature: descData.Single.Signature, } case *SignatureDescriptor_Data_Multi_: diff --git a/types/tx/signing/types.go b/types/tx/signing/types.go deleted file mode 100644 index 9785c3667d..0000000000 --- a/types/tx/signing/types.go +++ /dev/null @@ -1,39 +0,0 @@ -package signing - -import ( - "fmt" - - signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1" -) - -// APISignModeToInternal converts a protobuf SignMode to a SignMode. -func APISignModeToInternal(mode signingv1beta1.SignMode) (SignMode, error) { - switch mode { - case signingv1beta1.SignMode_SIGN_MODE_DIRECT: - return SignMode_SIGN_MODE_DIRECT, nil - case signingv1beta1.SignMode_SIGN_MODE_LEGACY_AMINO_JSON: - return SignMode_SIGN_MODE_LEGACY_AMINO_JSON, nil - case signingv1beta1.SignMode_SIGN_MODE_TEXTUAL: - return SignMode_SIGN_MODE_TEXTUAL, nil - case signingv1beta1.SignMode_SIGN_MODE_DIRECT_AUX: - return SignMode_SIGN_MODE_DIRECT_AUX, nil - default: - return SignMode_SIGN_MODE_UNSPECIFIED, fmt.Errorf("unsupported sign mode %s", mode) - } -} - -// InternalSignModeToAPI converts a SignMode to a protobuf SignMode. -func InternalSignModeToAPI(mode SignMode) (signingv1beta1.SignMode, error) { - switch mode { - case SignMode_SIGN_MODE_DIRECT: - return signingv1beta1.SignMode_SIGN_MODE_DIRECT, nil - case SignMode_SIGN_MODE_LEGACY_AMINO_JSON: - return signingv1beta1.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, nil - case SignMode_SIGN_MODE_TEXTUAL: - return signingv1beta1.SignMode_SIGN_MODE_TEXTUAL, nil - case SignMode_SIGN_MODE_DIRECT_AUX: - return signingv1beta1.SignMode_SIGN_MODE_DIRECT_AUX, nil - default: - return signingv1beta1.SignMode_SIGN_MODE_UNSPECIFIED, fmt.Errorf("unsupported sign mode %s", mode) - } -} diff --git a/x/auth/tx/sigs.go b/x/auth/tx/sigs.go index 0ee5282023..d73024ad54 100644 --- a/x/auth/tx/sigs.go +++ b/x/auth/tx/sigs.go @@ -21,11 +21,9 @@ func SignatureDataToModeInfoAndSig(data signing.SignatureData) (*tx.ModeInfo, [] switch data := data.(type) { case *signing.SingleSignatureData: - signMode, _ := signing.APISignModeToInternal(data.SignMode) - return &tx.ModeInfo{ Sum: &tx.ModeInfo_Single_{ - Single: &tx.ModeInfo_Single{Mode: signMode}, + Single: &tx.ModeInfo_Single{Mode: signing.SignMode(data.SignMode)}, }, }, data.Signature case *signing.MultiSignatureData: