mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 09:37:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package keeper
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
 | 
						|
	errorsmod "cosmossdk.io/errors"
 | 
						|
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						|
 | 
						|
	"github.com/0glabs/0g-chain/x/evmutil/types"
 | 
						|
)
 | 
						|
 | 
						|
// GetParams returns the total set of evm parameters.
 | 
						|
func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) {
 | 
						|
	k.paramSubspace.GetParamSetIfExists(ctx, ¶ms)
 | 
						|
	return params
 | 
						|
}
 | 
						|
 | 
						|
// SetParams sets the evm parameters to the param space.
 | 
						|
func (k Keeper) SetParams(ctx sdk.Context, params types.Params) {
 | 
						|
	k.paramSubspace.SetParamSet(ctx, ¶ms)
 | 
						|
}
 | 
						|
 | 
						|
// GetAllowedTokenMetadata gets the token metadata for the given cosmosDenom if it is allowed.
 | 
						|
// Returns the metadata if allowed, and a bool indicating if the denom was in the allow list or not.
 | 
						|
func (k Keeper) GetAllowedTokenMetadata(ctx sdk.Context, cosmosDenom string) (types.AllowedCosmosCoinERC20Token, bool) {
 | 
						|
	params := k.GetParams(ctx)
 | 
						|
	for _, token := range params.AllowedCosmosDenoms {
 | 
						|
		if token.CosmosDenom == cosmosDenom {
 | 
						|
			return token, true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return types.AllowedCosmosCoinERC20Token{}, false
 | 
						|
}
 | 
						|
 | 
						|
// GetEnabledConversionPairFromERC20Address returns an ConversionPair from the internal contract address.
 | 
						|
func (k Keeper) GetEnabledConversionPairFromERC20Address(
 | 
						|
	ctx sdk.Context,
 | 
						|
	address types.InternalEVMAddress,
 | 
						|
) (types.ConversionPair, error) {
 | 
						|
	params := k.GetParams(ctx)
 | 
						|
	for _, pair := range params.EnabledConversionPairs {
 | 
						|
		if bytes.Equal(pair.ZgChainERC20Address, address.Bytes()) {
 | 
						|
			return pair, nil
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return types.ConversionPair{}, errorsmod.Wrap(types.ErrEVMConversionNotEnabled, address.String())
 | 
						|
}
 | 
						|
 | 
						|
// GetEnabledConversionPairFromDenom returns an ConversionPair from the sdk.Coin denom.
 | 
						|
func (k Keeper) GetEnabledConversionPairFromDenom(
 | 
						|
	ctx sdk.Context,
 | 
						|
	denom string,
 | 
						|
) (types.ConversionPair, error) {
 | 
						|
	params := k.GetParams(ctx)
 | 
						|
	for _, pair := range params.EnabledConversionPairs {
 | 
						|
		if pair.Denom == denom {
 | 
						|
			return pair, nil
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return types.ConversionPair{}, errorsmod.Wrap(types.ErrEVMConversionNotEnabled, denom)
 | 
						|
}
 |