github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/feesplit/keeper/keeper.go (about)

     1  package keeper
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/ethereum/go-ethereum/common"
     7  
     8  	ethermint "github.com/fibonacci-chain/fbc/app/types"
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
    10  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    11  	"github.com/fibonacci-chain/fbc/libs/tendermint/libs/log"
    12  	"github.com/fibonacci-chain/fbc/x/feesplit/types"
    13  	"github.com/fibonacci-chain/fbc/x/params"
    14  )
    15  
    16  // Keeper of this module maintains collections of fee splits for contracts
    17  // registered to receive transaction fees.
    18  type Keeper struct {
    19  	storeKey   sdk.StoreKey
    20  	cdc        *codec.Codec
    21  	paramSpace types.Subspace
    22  
    23  	evmKeeper             types.EvmKeeper
    24  	govKeeper             types.GovKeeper
    25  	supplyKeeper          types.SupplyKeeper
    26  	accountKeeper         types.AccountKeeper
    27  	updateFeeSplitHandler sdk.UpdateFeeSplitHandler
    28  }
    29  
    30  // NewKeeper creates new instances of the fees Keeper
    31  func NewKeeper(
    32  	storeKey sdk.StoreKey,
    33  	cdc *codec.Codec,
    34  	ps params.Subspace,
    35  	ek types.EvmKeeper,
    36  	sk types.SupplyKeeper,
    37  	ak types.AccountKeeper,
    38  ) Keeper {
    39  	// set KeyTable if it has not already been set
    40  	if !ps.HasKeyTable() {
    41  		ps = ps.WithKeyTable(types.ParamKeyTable())
    42  	}
    43  
    44  	return Keeper{
    45  		storeKey:      storeKey,
    46  		cdc:           cdc,
    47  		paramSpace:    ps,
    48  		evmKeeper:     ek,
    49  		supplyKeeper:  sk,
    50  		accountKeeper: ak,
    51  	}
    52  }
    53  
    54  // Logger returns a module-specific logger.
    55  func (k Keeper) Logger(ctx sdk.Context) log.Logger {
    56  	return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName))
    57  }
    58  
    59  // GetEthAccount returns an eth account.
    60  func (k Keeper) GetEthAccount(ctx sdk.Context, addr common.Address) (*ethermint.EthAccount, bool) {
    61  	cosmosAddr := sdk.AccAddress(addr.Bytes())
    62  	acct := k.accountKeeper.GetAccount(ctx, cosmosAddr)
    63  	if acct == nil {
    64  		return nil, false
    65  	}
    66  
    67  	ethAcct, _ := acct.(*ethermint.EthAccount)
    68  	return ethAcct, true
    69  }
    70  
    71  // SetGovKeeper sets keeper of gov
    72  func (k *Keeper) SetGovKeeper(gk types.GovKeeper) {
    73  	k.govKeeper = gk
    74  }