Skip to content

Commit

Permalink
fix: don't use feerefunder
Browse files Browse the repository at this point in the history
  • Loading branch information
Lockwarr committed Nov 11, 2024
1 parent 4f3bd81 commit 1590e11
Show file tree
Hide file tree
Showing 13 changed files with 363 additions and 634 deletions.
7 changes: 4 additions & 3 deletions x/interchaintxs/keeper/ibc_handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (
channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types"

contractmanagertypes "github.com/Nolus-Protocol/nolus-core/x/contractmanager/types"
feetypes "github.com/Nolus-Protocol/nolus-core/x/feerefunder/types"
"github.com/Nolus-Protocol/nolus-core/x/interchaintxs/types"
)

Expand All @@ -37,7 +36,8 @@ func (k *Keeper) HandleAcknowledgement(ctx sdk.Context, packet channeltypes.Pack
return errors.Wrapf(sdkerrors.ErrJSONMarshal, "failed to marshal Packet/Acknowledgment: %v", err)
}

k.feeKeeper.DistributeAcknowledgementFee(ctx, relayer, feetypes.NewPacketID(packet.SourcePort, packet.SourceChannel, packet.Sequence))
// TODO remove feekeeper module
// k.feeKeeper.DistributeAcknowledgementFee(ctx, relayer, feetypes.NewPacketID(packet.SourcePort, packet.SourceChannel, packet.Sequence))

// Actually we have only one kind of error returned from acknowledgement
// maybe later we'll retrieve actual errors from events
Expand Down Expand Up @@ -65,7 +65,8 @@ func (k *Keeper) HandleTimeout(ctx sdk.Context, packet channeltypes.Packet, rela
return errors.Wrapf(sdkerrors.ErrJSONMarshal, "failed to marshal Packet: %v", err)
}

k.feeKeeper.DistributeTimeoutFee(ctx, relayer, feetypes.NewPacketID(packet.SourcePort, packet.SourceChannel, packet.Sequence))
// TODO remove feekeeper module
// k.feeKeeper.DistributeTimeoutFee(ctx, relayer, feetypes.NewPacketID(packet.SourcePort, packet.SourceChannel, packet.Sequence))

_, err = k.sudoKeeper.Sudo(ctx, icaOwner.GetContract(), msg)
if err != nil {
Expand Down
5 changes: 0 additions & 5 deletions x/interchaintxs/keeper/ibc_handlers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import (
testkeeper "github.com/Nolus-Protocol/nolus-core/testutil/interchaintxs/keeper"
mock_types "github.com/Nolus-Protocol/nolus-core/testutil/mocks/interchaintxs/types"
"github.com/Nolus-Protocol/nolus-core/x/contractmanager/types"
feetypes "github.com/Nolus-Protocol/nolus-core/x/feerefunder/types"
)

const ICAId = ".ica0"
Expand Down Expand Up @@ -59,14 +58,12 @@ func TestHandleAcknowledgement(t *testing.T) {

// success contract SudoResponse
ctx = infCtx.WithGasMeter(types2.NewGasMeter(1_000_000_000_000))
feeKeeper.EXPECT().DistributeAcknowledgementFee(ctx, relayerAddress, feetypes.NewPacketID(p.SourcePort, p.SourceChannel, p.Sequence))
wmKeeper.EXPECT().Sudo(ctx, contractAddress, msgAck)
err = icak.HandleAcknowledgement(ctx, p, resAckData, relayerAddress)
require.NoError(t, err)

// error contract SudoResponse
ctx = infCtx.WithGasMeter(types2.NewGasMeter(1_000_000_000_000))
feeKeeper.EXPECT().DistributeAcknowledgementFee(ctx, relayerAddress, feetypes.NewPacketID(p.SourcePort, p.SourceChannel, p.Sequence))
wmKeeper.EXPECT().Sudo(ctx, contractAddress, msgAck).Return(nil, fmt.Errorf("error sudoResponse"))
err = icak.HandleAcknowledgement(ctx, p, resAckData, relayerAddress)
require.NoError(t, err)
Expand Down Expand Up @@ -99,14 +96,12 @@ func TestHandleTimeout(t *testing.T) {

// contract success
ctx = infCtx.WithGasMeter(types2.NewGasMeter(1_000_000_000_000))
feeKeeper.EXPECT().DistributeTimeoutFee(ctx, relayerAddress, feetypes.NewPacketID(p.SourcePort, p.SourceChannel, p.Sequence))
wmKeeper.EXPECT().Sudo(ctx, contractAddress, msgAck)
err = icak.HandleTimeout(ctx, p, relayerAddress)
require.NoError(t, err)

// contract error
ctx = infCtx.WithGasMeter(types2.NewGasMeter(1_000_000_000_000))
feeKeeper.EXPECT().DistributeTimeoutFee(ctx, relayerAddress, feetypes.NewPacketID(p.SourcePort, p.SourceChannel, p.Sequence))
wmKeeper.EXPECT().Sudo(ctx, contractAddress, msgAck).Return(nil, fmt.Errorf("SudoTimeout error"))
err = icak.HandleTimeout(ctx, p, relayerAddress)
require.NoError(t, err)
Expand Down
36 changes: 0 additions & 36 deletions x/interchaintxs/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@ package keeper
import (
"fmt"

"cosmossdk.io/errors"
"cosmossdk.io/log"

sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"

storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
Expand Down Expand Up @@ -71,39 +68,6 @@ func (k *Keeper) Logger(ctx sdk.Context) log.Logger {
return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName))
}

func (k Keeper) ChargeFee(ctx sdk.Context, payer sdk.AccAddress, fee sdk.Coins) error {
k.Logger(ctx).Debug("Trying to change fees", "payer", payer, "fee", fee)

params := k.GetParams(ctx)

if !fee.IsAnyGTE(params.RegisterFee) {
return errors.Wrapf(sdkerrors.ErrInsufficientFee, "provided fee is less than min governance set ack fee: %s < %s", fee, params.RegisterFee)
}

feeCollector := k.getFeeCollectorAddr(ctx)
feeCollectorAddress, err := sdk.AccAddressFromBech32(feeCollector)
if err != nil {
return errors.Wrapf(sdkerrors.ErrInvalidAddress, "failed to convert fee collector, bech32 to AccAddress: %s: %s", feeCollector, err.Error())
}

err = k.bankKeeper.SendCoins(ctx, payer, feeCollectorAddress, fee)
if err != nil {
return errors.Wrapf(err, "failed send fee(%s) from %s to %s", fee, payer, feeCollectorAddress)
}
return nil
}

func (k Keeper) GetAuthority() string {
return k.authority
}

// GetICARegistrationFeeFirstCodeID returns code id, starting from which we charge fee for ICA registration.
func (k Keeper) GetICARegistrationFeeFirstCodeID(ctx sdk.Context) (codeID uint64) {
store := ctx.KVStore(k.storeKey)
bytes := store.Get(types.ICARegistrationFeeFirstCodeID)
if bytes == nil {
k.Logger(ctx).Debug("Fee register ICA code id key don't exists, GetLastCodeID returns 0")
return 0
}
return sdk.BigEndianToUint64(bytes)
}
30 changes: 12 additions & 18 deletions x/interchaintxs/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types"
channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types"

feetypes "github.com/Nolus-Protocol/nolus-core/x/feerefunder/types"
ictxtypes "github.com/Nolus-Protocol/nolus-core/x/interchaintxs/types"
)

Expand Down Expand Up @@ -53,13 +52,6 @@ func (k Keeper) RegisterInterchainAccount(goCtx context.Context, msg *ictxtypes.
return nil, errors.Wrapf(ictxtypes.ErrNotContract, "%s is not a contract address", msg.FromAddress)
}

// if contract is stored before [last] upgrade, we're not going charge fees for register ICA
if k.sudoKeeper.GetContractInfo(ctx, senderAddr).CodeID >= k.GetICARegistrationFeeFirstCodeID(ctx) {
if err := k.ChargeFee(ctx, senderAddr, msg.RegisterFee); err != nil {
return nil, errors.Wrapf(err, "failed to charge fees to pay for RegisterInterchainAccount msg: %s", msg)
}
}

icaOwner := ictxtypes.NewICAOwnerFromAddress(senderAddr, msg.InterchainAccountId).String()

resp, err := k.icaControllerMsgServer.RegisterInterchainAccount(ctx, &icacontrollertypes.MsgRegisterInterchainAccount{
Expand Down Expand Up @@ -146,17 +138,19 @@ func (k Keeper) SubmitTx(goCtx context.Context, msg *ictxtypes.MsgSubmitTx) (*ic
Memo: msg.Memo,
}

sequence, found := k.channelKeeper.GetNextSequenceSend(ctx, portID, channelID)
if !found {
return nil, errors.Wrapf(
channeltypes.ErrSequenceSendNotFound,
"source port: %s, source channel: %s", portID, channelID,
)
}
// TODO remove feekeeper module
// sequence, found := k.channelKeeper.GetNextSequenceSend(ctx, portID, channelID)
// if !found {
// return nil, errors.Wrapf(
// channeltypes.ErrSequenceSendNotFound,
// "source port: %s, source channel: %s", portID, channelID,
// )
// }

if err := k.feeKeeper.LockFees(ctx, senderAddr, feetypes.NewPacketID(portID, channelID, sequence), msg.Fee); err != nil {
return nil, errors.Wrapf(err, "failed to lock fees to pay for SubmitTx msg: %s", msg)
}
// TODO remove feekeeper module
// if err := k.feeKeeper.LockFees(ctx, senderAddr, feetypes.NewPacketID(portID, channelID, sequence), msg.Fee); err != nil {
// return nil, errors.Wrapf(err, "failed to lock fees to pay for SubmitTx msg: %s", msg)
// }

resp, err := k.icaControllerMsgServer.SendTx(ctx, &icacontrollertypes.MsgSendTx{
Owner: icaOwner,
Expand Down
Loading

0 comments on commit 1590e11

Please sign in to comment.