fix: changed the data type for FeePayer and FeeGranter (backport #16272) (#16920)

Co-authored-by: Vishal Potpelliwar <71565171+vishal-kanna@users.noreply.github.com>
This commit is contained in:
mergify[bot] 2023-07-11 15:11:52 +02:00 committed by GitHub
parent 7d07df5bd8
commit 5ca5039cf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 12 additions and 19 deletions

View File

@ -51,6 +51,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### API Breaking Changes
* (types) [#16272](https://github.com/cosmos/cosmos-sdk/pull/16272) From now the `FeeGranter` in the `FeeTx` interface takes the byte type instead of string.
* (testutil) [#16899](https://github.com/cosmos/cosmos-sdk/pull/16899) The *cli testutil* `QueryBalancesExec` has been removed. Use the gRPC or REST query instead.
* (x/auth) [#16650](https://github.com/cosmos/cosmos-sdk/pull/16650) The *cli testutil* `QueryAccountExec` has been removed. Use the gRPC or REST query instead.
* (types/math) [#16040](https://github.com/cosmos/cosmos-sdk/pull/16798) Remove aliases in `types/math.go` (part 2).

View File

@ -61,7 +61,7 @@ type (
GetGas() uint64
GetFee() Coins
FeePayer() []byte
FeeGranter() string
FeeGranter() []byte
}
// TxWithMemo must have GetMemo() method to use ValidateMemoDecorator

View File

@ -86,11 +86,8 @@ func (dfd DeductFeeDecorator) checkDeductFee(ctx sdk.Context, sdkTx sdk.Tx, fee
// if feegranter set deduct fee from feegranter account.
// this works with only when feegrant enabled.
if feeGranter != "" {
feeGranterAddr, err := sdk.AccAddressFromBech32(feeGranter)
if err != nil {
return err
}
if feeGranter != nil {
feeGranterAddr := sdk.AccAddress(feeGranter)
if dfd.feegrantKeeper == nil {
return sdkerrors.ErrInvalidRequest.Wrap("fee grants are not enabled")

View File

@ -210,12 +210,12 @@ func (w *wrapper) FeePayer() []byte {
return signers[0]
}
func (w *wrapper) FeeGranter() string {
func (w *wrapper) FeeGranter() []byte {
feeGranter := w.tx.AuthInfo.Fee.Granter
if feeGranter != "" {
return feeGranter
return sdk.MustAccAddressFromBech32(feeGranter)
}
return ""
return nil
}
func (w *wrapper) GetTip() *tx.Tip {

View File

@ -317,5 +317,5 @@ func TestBuilderFeeGranter(t *testing.T) {
// set fee granter
txBuilder.SetFeeGranter(addr1)
require.Equal(t, addr1.String(), txBuilder.GetTx().FeeGranter())
require.Equal(t, addr1.String(), sdk.AccAddress(txBuilder.GetTx().FeeGranter()).String())
}

View File

@ -1,8 +1,8 @@
package tx
import (
"bytes"
"fmt"
"strings"
errorsmod "cosmossdk.io/errors"
@ -56,13 +56,8 @@ func (signModeDirectAuxHandler) GetSignBytes(
// Fee payer cannot use SIGN_MODE_DIRECT_AUX, because SIGN_MODE_DIRECT_AUX
// does not sign over fees, which would create malleability issues.
addrBz, err := sdk.AccAddressFromBech32(data.Address)
if err != nil {
return nil, err
}
if bytes.Equal(feePayer, addrBz) {
return nil, sdkerrors.ErrUnauthorized.Wrapf("fee payer %s cannot sign with %s", feePayer, signingtypes.SignMode_SIGN_MODE_DIRECT_AUX)
if strings.EqualFold(sdk.AccAddress(feePayer).String(), data.Address) {
return nil, sdkerrors.ErrUnauthorized.Wrapf("fee payer %s cannot sign with %s", sdk.AccAddress(feePayer).String(), signingtypes.SignMode_SIGN_MODE_DIRECT_AUX)
}
signDocDirectAux := types.SignDocDirectAux{

View File

@ -82,7 +82,7 @@ func TestDirectAuxHandler(t *testing.T) {
t.Log("verify fee payer cannot use SIGN_MODE_DIRECT_AUX")
_, err = modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, feePayerSigningData, txBuilder.GetTx())
require.EqualError(t, err, fmt.Sprintf("fee payer %s cannot sign with %s: unauthorized", []byte(feePayerAddr), signingtypes.SignMode_SIGN_MODE_DIRECT_AUX))
require.EqualError(t, err, fmt.Sprintf("fee payer %s cannot sign with %s: unauthorized", feePayerAddr.String(), signingtypes.SignMode_SIGN_MODE_DIRECT_AUX))
t.Log("verify GetSignBytes with generating sign bytes by marshaling signDocDirectAux")
signBytes, err := modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, signingData, txBuilder.GetTx())