keeper

package
v17.1.0-20230810231521... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2023 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllInvariants

func AllInvariants(keeper Keeper, bk types.BankKeeper) sdk.Invariant

AllInvariants runs all invariants of the gamm module

func NewBalancerMsgServerImpl

func NewBalancerMsgServerImpl(keeper *Keeper) balancer.MsgServer

func NewMsgServerImpl

func NewMsgServerImpl(keeper *Keeper) types.MsgServer

func NewStableswapMsgServerImpl

func NewStableswapMsgServerImpl(keeper *Keeper) stableswap.MsgServer

func PoolAccountInvariant

func PoolAccountInvariant(keeper Keeper, bk types.BankKeeper) sdk.Invariant

PoolAccountInvariant checks that the pool account balance reflects the sum of pool assets

func RegisterInvariants

func RegisterInvariants(ir sdk.InvariantRegistry, keeper Keeper, bk types.BankKeeper)

RegisterInvariants registers all gamm invariants.

Types

type Keeper

type Keeper struct {
	// contains filtered or unexported fields
}

func NewKeeper

func NewKeeper(cdc codec.BinaryCodec, storeKey sdk.StoreKey, paramSpace paramtypes.Subspace, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper, communityPoolKeeper types.CommunityPoolKeeper, concentratedLiquidityKeeper types.ConcentratedLiquidityKeeper, poolIncentivesKeeper types.PoolIncentivesKeeper, incentivesKeeper types.IncentivesKeeper) Keeper

func (Keeper) BurnPoolShareFromAccount

func (k Keeper) BurnPoolShareFromAccount(ctx sdk.Context, pool poolmanagertypes.PoolI, addr sdk.AccAddress, amount sdk.Int) error

BurnPoolShareFromAccount burns `amount` of the given pools shares held by `addr`.

func (Keeper) CalcInAmtGivenOut

func (k Keeper) CalcInAmtGivenOut(
	ctx sdk.Context,
	poolI poolmanagertypes.PoolI,
	tokenOut sdk.Coin,
	tokenInDenom string,
	spreadFactor sdk.Dec,
) (tokenIn sdk.Coin, err error)

CalcInAmtGivenOut calculates the amount of tokenIn given tokenOut and the pool's current state. Returns error if the given pool is not a CFMM pool. Returns error on internal calculations.

func (Keeper) CalcOutAmtGivenIn

func (k Keeper) CalcOutAmtGivenIn(
	ctx sdk.Context,
	poolI poolmanagertypes.PoolI,
	tokenIn sdk.Coin,
	tokenOutDenom string,
	spreadFactor sdk.Dec,
) (tokenOut sdk.Coin, err error)

CalcOutAmtGivenIn calculates the amount of tokenOut given tokenIn and the pool's current state. Returns error if the given pool is not a CFMM pool. Returns error on internal calculations.

func (Keeper) CalculateSpotPrice

func (k Keeper) CalculateSpotPrice(
	ctx sdk.Context,
	poolID uint64,
	quoteAssetDenom string,
	baseAssetDenom string,
) (spotPrice sdk.Dec, err error)

CalculateSpotPrice returns the spot price of the quote asset in terms of the base asset, using the specified pool. E.g. if pool 1 trades 2 atom for 3 fury, the quote asset was atom, and the base asset was fury, this would return 1.5. (Meaning that 1 atom costs 1.5 fury)

This function is guaranteed to not panic, but may return an error if: * An internal error within the pool occurs for calculating the spot price * The returned spot price is greater than max spot price

func (k Keeper) CreateCanonicalConcentratedLiquidityPoolAndMigrationLink(ctx sdk.Context, cfmmPoolId uint64, desiredDenom0 string, spreadFactor sdk.Dec, tickSpacing uint64) (poolmanagertypes.PoolI, error)

createCanonicalConcentratedLiquidityPoolAndMigrationLink creates a new concentrated liquidity pool from an existing CFMM pool. This method calls OverwriteMigrationRecords, which creates a migration link between the CFMM/CL pool as well as migrates the gauges and distribution records from the CFMM pool to the new CL pool. Returns error if fails to create concentrated liquidity pool from CFMM pool.

func (Keeper) CreateConcentratedPoolFromCFMM

func (k Keeper) CreateConcentratedPoolFromCFMM(ctx sdk.Context, cfmmPoolIdToLinkWith uint64, desiredDenom0 string, spreadFactor sdk.Dec, tickSpacing uint64) (poolmanagertypes.PoolI, error)

createConcentratedPoolFromCFMM creates a new concentrated liquidity pool with the desiredDenom0 token as the token 0, links it with an existing CFMM pool, and returns the created pool. It uses pool manager module account as the creator of the pool. Returns error if desired denom 0 is not in associated with the CFMM pool. Returns error if CFMM pool does not have exactly 2 denoms. Returns error if pool creation fails.

func (Keeper) DeletePool

func (k Keeper) DeletePool(ctx sdk.Context, poolId uint64) error

func (Keeper) ExitPool

func (k Keeper) ExitPool(
	ctx sdk.Context,
	sender sdk.AccAddress,
	poolId uint64,
	shareInAmount sdk.Int,
	tokenOutMins sdk.Coins,
) (exitCoins sdk.Coins, err error)

func (Keeper) ExitSwapExactAmountOut

func (k Keeper) ExitSwapExactAmountOut(
	ctx sdk.Context,
	sender sdk.AccAddress,
	poolId uint64,
	tokenOut sdk.Coin,
	shareInMaxAmount sdk.Int,
) (shareInAmount sdk.Int, err error)

func (Keeper) ExitSwapShareAmountIn

func (k Keeper) ExitSwapShareAmountIn(
	ctx sdk.Context,
	sender sdk.AccAddress,
	poolId uint64,
	tokenOutDenom string,
	shareInAmount sdk.Int,
	tokenOutMinAmount sdk.Int,
) (tokenOutAmount sdk.Int, err error)

ExitSwapShareAmountIn is an Exit Pool transaction, that will exit all of the provided LP shares, and then swap it all against the pool into tokenOutDenom. If the amount of tokens gotten out after the swap is less than tokenOutMinAmount, return an error.

func (Keeper) ExportGenesis

func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState

ExportGenesis returns the capability module's exported genesis.

func (Keeper) GetAllMigrationInfo

func (k Keeper) GetAllMigrationInfo(ctx sdk.Context) (gammmigration.MigrationRecords, error)

GetAllMigrationInfo gets all existing links between Balancer Pool and Concentrated Pool, wraps and returns them in `MigrationRecords`.

func (Keeper) GetCFMMPool

func (k Keeper) GetCFMMPool(ctx sdk.Context, poolId uint64) (types.CFMMPoolI, error)

GetCFMMPool gets CFMMPool and checks if the pool is active, i.e. allowed to be swapped against. The difference from GetPools is that this function returns an error if the pool is inactive. Additionally, it returns x/gamm specific CFMMPool type.

func (Keeper) GetDenomLiquidity

func (k Keeper) GetDenomLiquidity(ctx sdk.Context, denom string) sdk.Int

func (Keeper) GetLinkedBalancerPoolID

func (k Keeper) GetLinkedBalancerPoolID(ctx sdk.Context, concentratedPoolId uint64) (uint64, error)

GetLinkedConcentratedPoolID returns the Balancer pool Id linked for the given concentrated pool Id. Returns error if link for the given pool id does not exist.

func (Keeper) GetLinkedConcentratedPoolID

func (k Keeper) GetLinkedConcentratedPoolID(ctx sdk.Context, balancerPoolId uint64) (uint64, error)

GetLinkedConcentratedPoolID returns the concentrated pool Id linked for the given balancer pool Id. Returns error if link for the given pool id does not exist.

func (Keeper) GetNextPoolId deprecated

func (k Keeper) GetNextPoolId(ctx sdk.Context) uint64

Deprecated: pool id index has been moved to x/poolmanager.

func (Keeper) GetParams

func (k Keeper) GetParams(ctx sdk.Context) (params types.Params)

GetParams returns the total set params.

func (Keeper) GetPool

func (k Keeper) GetPool(ctx sdk.Context, poolId uint64) (poolmanagertypes.PoolI, error)

GetPool returns a pool with a given id.

func (Keeper) GetPoolAndPoke

func (k Keeper) GetPoolAndPoke(ctx sdk.Context, poolId uint64) (types.CFMMPoolI, error)

GetPoolAndPoke returns a PoolI based on it's identifier if one exists. If poolId corresponds to a pool with weights (e.g. balancer), the weights of the pool are updated via PokePool prior to returning. TODO: Consider rename to GetPool due to downstream API confusion.

func (Keeper) GetPoolDenoms

func (k Keeper) GetPoolDenoms(ctx sdk.Context, poolId uint64) ([]string, error)

GetPoolDenom retrieves the pool based on PoolId and returns the coin denoms that it holds.

func (Keeper) GetPoolType

func (k Keeper) GetPoolType(ctx sdk.Context, poolId uint64) (poolmanagertypes.PoolType, error)

func (Keeper) GetPools

func (k Keeper) GetPools(ctx sdk.Context) ([]poolmanagertypes.PoolI, error)

func (Keeper) GetPoolsAndPoke

func (k Keeper) GetPoolsAndPoke(ctx sdk.Context) (res []types.CFMMPoolI, err error)

func (Keeper) GetTotalLiquidity

func (k Keeper) GetTotalLiquidity(ctx sdk.Context) (sdk.Coins, error)

func (Keeper) GetTotalPoolLiquidity

func (k Keeper) GetTotalPoolLiquidity(ctx sdk.Context, poolId uint64) (sdk.Coins, error)

GetTotalPoolLiquidity returns the coins in the pool owned by all LPs

func (Keeper) GetTotalPoolShares

func (k Keeper) GetTotalPoolShares(ctx sdk.Context, poolId uint64) (sdk.Int, error)

GetTotalPoolShares returns the total number of pool shares for the given pool.

func (Keeper) HandleReplaceMigrationRecordsProposal

func (k Keeper) HandleReplaceMigrationRecordsProposal(ctx sdk.Context, p *types.ReplaceMigrationRecordsProposal) error

func (Keeper) HandleSetScalingFactorControllerProposal

func (k Keeper) HandleSetScalingFactorControllerProposal(ctx sdk.Context, p *types.SetScalingFactorControllerProposal) error

func (Keeper) HandleUpdateMigrationRecordsProposal

func (k Keeper) HandleUpdateMigrationRecordsProposal(ctx sdk.Context, p *types.UpdateMigrationRecordsProposal) error

func (Keeper) InitGenesis

func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState, unpacker codectypes.AnyUnpacker)

InitGenesis initializes the x/gamm module's state from a provided genesis state, which includes the current live pools, global pool parameters (e.g. pool creation fee), next pool id etc.

func (Keeper) InitializePool

func (k Keeper) InitializePool(ctx sdk.Context, pool poolmanagertypes.PoolI, sender sdk.AccAddress) (err error)

This function: - saves the pool to state - Mints LP shares to the pool creator - Sets bank metadata for the LP denom - Records total liquidity increase - Calls the AfterPoolCreated hook

func (Keeper) IterateDenomLiquidity

func (k Keeper) IterateDenomLiquidity(ctx sdk.Context, cb func(sdk.Coin) bool)

func (Keeper) JoinPoolNoSwap

func (k Keeper) JoinPoolNoSwap(
	ctx sdk.Context,
	sender sdk.AccAddress,
	poolId uint64,
	shareOutAmount sdk.Int,
	tokenInMaxs sdk.Coins,
) (tokenIn sdk.Coins, sharesOut sdk.Int, err error)

JoinPoolNoSwap aims to LP exactly enough to pool #{poolId} to get shareOutAmount number of LP shares. If the required tokens is greater than tokenInMaxs, returns an error & the message reverts. Leftover tokens that weren't LP'd (due to being at inexact ratios) remain in the sender account.

JoinPoolNoSwap determines the maximum amount that can be LP'd without any swap, by looking at the ratio of the total LP'd assets. (e.g. 2 fury : 1 atom) It then finds the maximal amount that can be LP'd.

func (Keeper) JoinSwapExactAmountIn

func (k Keeper) JoinSwapExactAmountIn(
	ctx sdk.Context,
	sender sdk.AccAddress,
	poolId uint64,
	tokensIn sdk.Coins,
	shareOutMinAmount sdk.Int,
) (sharesOut sdk.Int, err error)

JoinSwapExactAmountIn is an LP transaction, that will LP all of the provided tokensIn coins. The underlying pool is responsible for swapping any non-even LP proportions to the correct ratios. An error is returned if the amount of LP shares obtained at the end is less than shareOutMinAmount. Otherwise, we return the total amount of shares outgoing from joining the pool.

func (Keeper) JoinSwapShareAmountOut

func (k Keeper) JoinSwapShareAmountOut(
	ctx sdk.Context,
	sender sdk.AccAddress,
	poolId uint64,
	tokenInDenom string,
	shareOutAmount sdk.Int,
	tokenInMaxAmount sdk.Int,
) (tokenInAmount sdk.Int, err error)

func (Keeper) MarshalPool

func (k Keeper) MarshalPool(pool poolmanagertypes.PoolI) ([]byte, error)

func (Keeper) MigrateUnlockedPositionFromBalancerToConcentrated

func (k Keeper) MigrateUnlockedPositionFromBalancerToConcentrated(ctx sdk.Context,
	sender sdk.AccAddress, sharesToMigrate sdk.Coin,
	tokenOutMins sdk.Coins,
) (positionId uint64, amount0, amount1 sdk.Int, liquidity sdk.Dec, poolIdLeaving, poolIdEntering uint64, err error)

MigrateUnlockedPositionFromBalancerToConcentrated migrates unlocked lp tokens from a balancer pool to a concentrated liquidity pool. Fails if the lp tokens are locked (must instead utilize UnlockAndMigrate function in the superfluid module)

func (Keeper) MintPoolShareToAccount

func (k Keeper) MintPoolShareToAccount(ctx sdk.Context, pool poolmanagertypes.PoolI, addr sdk.AccAddress, amount sdk.Int) error

MintPoolShareToAccount attempts to mint shares of a GAMM denomination to the specified address returning an error upon failure. Shares are minted using the x/gamm module account.

func (Keeper) OverwriteMigrationRecordsAndRedirectDistrRecords

func (k Keeper) OverwriteMigrationRecordsAndRedirectDistrRecords(ctx sdk.Context, migrationInfo gammmigration.MigrationRecords) error

OverwriteMigrationRecordsAndRedirectDistrRecords sets the balancer to gamm pool migration info to the store and deletes all existing records migrationInfo in state is completely overwitten by the given migrationInfo. Additionally, the distribution record for the balancer pool is modified to redirect incentives to the new concentrated pool.

func (Keeper) OverwritePoolV15MigrationUnsafe

func (k Keeper) OverwritePoolV15MigrationUnsafe(ctx sdk.Context, pool poolmanagertypes.PoolI) error

OverwritePoolV15MigrationUnsafe is a temporary method for calling from the v15 upgrade handler for balancer to stableswap pool migration. Do not use for other purposes.

func (Keeper) RecordTotalLiquidityDecrease

func (k Keeper) RecordTotalLiquidityDecrease(ctx sdk.Context, coins sdk.Coins)

func (Keeper) RecordTotalLiquidityIncrease

func (k Keeper) RecordTotalLiquidityIncrease(ctx sdk.Context, coins sdk.Coins)

func (Keeper) ReplaceMigrationRecords

func (k Keeper) ReplaceMigrationRecords(ctx sdk.Context, records []gammmigration.BalancerToConcentratedPoolLink) error

ReplaceMigrationRecords gets the current migration records and replaces it in its entirety with the provided records. It is checked for no err when a proposal is made, and executed when a proposal passes.

func (*Keeper) SetHooks

func (k *Keeper) SetHooks(gh types.GammHooks) *Keeper

Set the gamm hooks.

func (*Keeper) SetIncentivesKeeper

func (k *Keeper) SetIncentivesKeeper(incentivesKeeper types.IncentivesKeeper)

Set the incentives keeper.

func (Keeper) SetMigrationRecords

func (k Keeper) SetMigrationRecords(ctx sdk.Context, migrationInfo gammmigration.MigrationRecords)

SetMigrationRecords is used in initGenesis, setting the balancer to gamm pool migration info in store.

func (*Keeper) SetPoolIncentivesKeeper

func (k *Keeper) SetPoolIncentivesKeeper(poolIncentivesKeeper types.PoolIncentivesKeeper)

Set the pool incentives keeper.

func (*Keeper) SetPoolManager

func (k *Keeper) SetPoolManager(poolManager types.PoolManager)

func (Keeper) SwapExactAmountIn

func (k Keeper) SwapExactAmountIn(
	ctx sdk.Context,
	sender sdk.AccAddress,
	pool poolmanagertypes.PoolI,
	tokenIn sdk.Coin,
	tokenOutDenom string,
	tokenOutMinAmount sdk.Int,
	spreadFactor sdk.Dec,
) (tokenOutAmount sdk.Int, err error)

swapExactAmountIn is an internal method for swapping an exact amount of tokens as input to a pool, using the provided spreadFactor. This is intended to allow different spread factors as determined by multi-hops, or when recovering from chain liveness failures. TODO: investigate if spreadFactor can be unexported https://github.com/merlins-labs/merlins/issues/3130

func (Keeper) SwapExactAmountOut

func (k Keeper) SwapExactAmountOut(
	ctx sdk.Context,
	sender sdk.AccAddress,
	pool poolmanagertypes.PoolI,
	tokenInDenom string,
	tokenInMaxAmount sdk.Int,
	tokenOut sdk.Coin,
	spreadFactor sdk.Dec,
) (tokenInAmount sdk.Int, err error)

SwapExactAmountOut is a method for swapping to get an exact number of tokens out of a pool, using the provided spreadFactor. This is intended to allow different spread factors as determined by multi-hops, or when recovering from chain liveness failures.

func (Keeper) UnmarshalPool

func (k Keeper) UnmarshalPool(bz []byte) (types.CFMMPoolI, error)

func (Keeper) UpdateMigrationRecords

func (k Keeper) UpdateMigrationRecords(ctx sdk.Context, records []gammmigration.BalancerToConcentratedPoolLink) error

UpdateMigrationRecords gets the current migration records and only updates the records that are provided. It is checked for no err when a proposal is made, and executed when a proposal passes.

func (Keeper) ValidatePermissionlessPoolCreationEnabled

func (k Keeper) ValidatePermissionlessPoolCreationEnabled(ctx sdk.Context) error

ValidatePermissionlessPoolCreationEnabled returns nil if permissionless pool creation in the module is enabled. Pools in gamm module have permissionless pool creation enabled, thus always return nil.

type Querier

type Querier struct {
	Keeper
}

Querier defines a wrapper around the x/gamm keeper providing gRPC method handlers.

func NewQuerier

func NewQuerier(k Keeper) Querier

func (Querier) CalcExitPoolCoinsFromShares

CalcExitPoolCoinsFromShares queries the amount of tokens you get by exiting a specific amount of shares

func (Querier) CalcJoinPoolNoSwapShares

CalcJoinPoolNoSwapShares returns the amount of shares you'd get if joined a pool without a swap and tokens which need to be provided

func (Querier) CalcJoinPoolShares

CalcJoinPoolShares queries the amount of shares you get by providing specific amount of tokens

func (Querier) ConcentratedPoolIdLinkFromCFMM

ConcentratedPoolIdLinkFromCFMM queries the concentrated pool id linked to a cfmm pool id.

func (Querier) EstimateSwapExactAmountIn

EstimateSwapExactAmountIn estimates input token amount for a swap. This query is deprecated and has been moved to poolmanager module. nolint: staticcheck

func (Querier) EstimateSwapExactAmountOut

EstimateSwapExactAmountOut estimates token output amount for a swap. This query is deprecated and has been moved to poolmanager module. nolint: staticcheck

func (Querier) NumPools

This query has been deprecated and has been moved to poolmanager module. nolint: staticcheck

func (Querier) Pool

Pool checks if a pool exists and their respective poolWeights. Deprecated: use x/poolmanager's Pool query. nolint: staticcheck

func (Querier) PoolParams

PoolParams queries a specified pool for its params.

func (Querier) PoolType

func (Querier) Pools

Pools checks existence of multiple pools and their poolWeights

func (Querier) PoolsWithFilter

PoolsWithFilter query allows to query pools with specific parameters

func (Querier) SpotPrice

SpotPrice returns target pool asset prices on base and quote assets. nolint: staticcheck

func (Querier) TotalLiquidity

TotalLiquidity returns total liquidity across all gamm pools.

func (Querier) TotalPoolLiquidity

TotalPoolLiquidity returns total liquidity in pool. Deprecated: please use the alternative in x/poolmanager nolint: staticcheck

func (Querier) TotalShares

TotalShares returns total pool shares.

type QuerierV2

type QuerierV2 struct {
	Keeper
}

QuerierV2 defines a wrapper around the x/gamm keeper providing gRPC method handlers for v2 queries.

func NewV2Querier

func NewV2Querier(k Keeper) QuerierV2

func (QuerierV2) SpotPrice

Deeprecated: use alternate in x/poolmanager nolint: staticcheck

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL