Skip to content

Commit

Permalink
add fee_manager
Browse files Browse the repository at this point in the history
  • Loading branch information
aofengli committed Aug 29, 2023
1 parent 4745b47 commit d7ed3b1
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
9 changes: 8 additions & 1 deletion x/evm/keeper/irita.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,14 @@ func (k *Keeper) RefundGasV2(ctx sdk.Context, msg core.Message, leftoverGas uint
feePayerAddr := sdk.AccAddress(ethAddr.Bytes())

// refund to sender from the fee collector module account, which is the escrow account in charge of collecting tx fees
err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, authtypes.FeeCollectorName, feePayerAddr, refundedCoins)
var err error
if len(k.FeeCollectorName) != 0 {
err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, k.FeeCollectorName, feePayerAddr, refundedCoins)

} else {
err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, authtypes.FeeCollectorName, feePayerAddr, refundedCoins)
}

if err != nil {
err = sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "fee collector account failed to refund fees: %s", err.Error())
return sdkerrors.Wrapf(err, "failed to refund %d leftover gas (%s)", leftoverGas, refundedCoins.String())
Expand Down
2 changes: 2 additions & 0 deletions x/evm/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ type Keeper struct {
Signer ethtypes.Signer
TransferFunc func(db vm.StateDB, sender, recipient common.Address, amount *big.Int)
AccStoreKey sdk.StoreKey

FeeCollectorName string
}

// NewKeeper generates new evm module keeper
Expand Down
7 changes: 6 additions & 1 deletion x/evm/keeper/state_transition.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,8 +471,13 @@ func (k *Keeper) RefundGas(ctx sdk.Context, msg core.Message, leftoverGas uint64
refundedCoins := sdk.Coins{sdk.NewCoin(denom, sdk.NewIntFromBigInt(remaining))}

// refund to sender from the fee collector module account, which is the escrow account in charge of collecting tx fees
var err error
if len(k.FeeCollectorName) != 0 {
err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, k.FeeCollectorName, msg.From().Bytes(), refundedCoins)

err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, authtypes.FeeCollectorName, msg.From().Bytes(), refundedCoins)
} else {
err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, authtypes.FeeCollectorName, msg.From().Bytes(), refundedCoins)
}
if err != nil {
err = sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "fee collector account failed to refund fees: %s", err.Error())
return sdkerrors.Wrapf(err, "failed to refund %d leftover gas (%s)", leftoverGas, refundedCoins.String())
Expand Down

0 comments on commit d7ed3b1

Please sign in to comment.