keeper

package
v15.5.0 Latest Latest
Warning

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

Go to latest
Published: May 11, 2023 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EmitBackrunEvent added in v15.1.0

func EmitBackrunEvent(ctx sdk.Context, pool SwapToBackrun, inputCoin sdk.Coin, profit, tokenOutAmount sdk.Int, remainingTxPoolPoints, remainingBlockPoolPoints uint64)

EmitBackrunEvent updates and emits a backrunEvent

func NewMsgServer

func NewMsgServer(keeper Keeper) types.MsgServer

NewMsgServer returns an implementation of the MsgServer interface for the provided Keeper.

Types

type EpochHooks

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

func (EpochHooks) AfterEpochEnd

func (h EpochHooks) AfterEpochEnd(ctx sdk.Context, epochIdentifier string, epochNumber int64) error

AfterEpochEnd is the epoch end hook.

func (EpochHooks) BeforeEpochStart

func (h EpochHooks) BeforeEpochStart(ctx sdk.Context, epochIdentifier string, epochNumber int64) error

BeforeEpochStart is the epoch start hook.

type Keeper

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

func NewKeeper

func NewKeeper(
	cdc codec.BinaryCodec,
	storeKey sdk.StoreKey,
	ps paramtypes.Subspace,
	accountKeeper types.AccountKeeper,
	bankKeeper types.BankKeeper,
	gammKeeper types.GAMMKeeper,
	epochKeeper types.EpochKeeper,
	poolmanagerKeeper types.PoolManagerKeeper,
) Keeper

func (Keeper) AnteHandleCheck

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

AnteHandleCheck checks if the module is enabled and if the number of routes to be processed per block has been reached.

func (Keeper) BuildHighestLiquidityRoute

func (k Keeper) BuildHighestLiquidityRoute(ctx sdk.Context, swapDenom types.BaseDenom, tokenIn, tokenOut string, poolId uint64) (RouteMetaData, error)

BuildHighestLiquidityRoute constructs a cyclic arbitrage route that is starts/ends with swapDenom (ex. osmo) given the swap (tokenIn, tokenOut, poolId).

func (Keeper) BuildHighestLiquidityRoutes

func (k Keeper) BuildHighestLiquidityRoutes(ctx sdk.Context, tokenIn, tokenOut string, poolId uint64) ([]RouteMetaData, error)

BuildHighestLiquidityRoutes builds cyclic arbitrage routes using the highest liquidity method. The base denoms are sorted by priority and routes are built in a greedy manner.

func (Keeper) BuildHotRoute

func (k Keeper) BuildHotRoute(ctx sdk.Context, route types.Route, poolId uint64) (RouteMetaData, error)

BuildHotRoute constructs a cyclic arbitrage route given a hot route and swap that should be placed in the hot route.

func (Keeper) BuildHotRoutes

func (k Keeper) BuildHotRoutes(ctx sdk.Context, tokenIn, tokenOut string, poolId uint64) ([]RouteMetaData, error)

BuildHotRoutes builds all of the possible arbitrage routes using the hot routes method.

func (Keeper) BuildRoutes

func (k Keeper) BuildRoutes(ctx sdk.Context, tokenIn, tokenOut string, poolId uint64) []RouteMetaData

BuildRoutes builds all of the possible arbitrage routes given the tokenIn, tokenOut and poolId that were used in the swap.

func (Keeper) CalculateRoutePoolPoints

func (k Keeper) CalculateRoutePoolPoints(ctx sdk.Context, route poolmanagertypes.SwapAmountInRoutes) (uint64, error)

CalculateRoutePoolPoints calculates the number of pool points that will be consumed by a route when simulating and executing trades. This is only added to the global pool point counter if the route simulated is minimally profitable i.e. it will make a profit.

func (Keeper) ConvertProfits

func (k Keeper) ConvertProfits(ctx sdk.Context, inputCoin sdk.Coin, profit sdk.Int) (sdk.Int, error)

ConvertProfits converts the profit denom to uosmo to allow for a fair comparison of profits

func (Keeper) DeleteAllEntriesForKeyPrefix

func (k Keeper) DeleteAllEntriesForKeyPrefix(ctx sdk.Context, keyPrefix []byte)

DeleteAllEntriesForKeyPrefix deletes all the entries from the store for the given key prefix

func (Keeper) DeleteAllPoolsForBaseDenom

func (k Keeper) DeleteAllPoolsForBaseDenom(ctx sdk.Context, baseDenom string)

DeleteAllPoolsForBaseDenom deletes all the pools for the given base denom

func (Keeper) DeleteAllTokenPairArbRoutes

func (k Keeper) DeleteAllTokenPairArbRoutes(ctx sdk.Context)

DeleteAllTokenPairArbRoutes deletes all the token pair arb routes

func (Keeper) DeleteBaseDenoms

func (k Keeper) DeleteBaseDenoms(ctx sdk.Context)

DeleteBaseDenoms deletes all of the base denoms

func (Keeper) DeleteDeveloperFees

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

DeleteDeveloperFees deletes the developer fees given a denom

func (Keeper) EpochHooks

func (k Keeper) EpochHooks() epochstypes.EpochHooks

func (Keeper) EstimateMultihopProfit

func (k Keeper) EstimateMultihopProfit(ctx sdk.Context, inputDenom string, amount sdk.Int, route poolmanagertypes.SwapAmountInRoutes) (sdk.Coin, sdk.Int, error)

EstimateMultihopProfit estimates the profit for a given route by estimating the amount out given the amount in for the first pool in the route and then subtracting the amount in from the amount out to get the profit

func (Keeper) ExecuteTrade

func (k Keeper) ExecuteTrade(ctx sdk.Context, route poolmanagertypes.SwapAmountInRoutes, inputCoin sdk.Coin, pool SwapToBackrun, remainingTxPoolPoints, remainingBlockPoolPoints uint64) error

ExecuteTrade inputs a route, amount in, and rebalances the pool

func (Keeper) ExportGenesis

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

ExportGenesis returns the module's exported genesis. ExportGenesis intentionally ignores a few of the errors thrown by the keeper methods. This is because the keeper methods are only throwing errors if there is an issue unmarshalling or if the value had not been set yet (i.e. developer account address). In that case, we just use the default values defined in genesis.go in types.

func (Keeper) ExtendSearchRangeIfNeeded

func (k Keeper) ExtendSearchRangeIfNeeded(ctx sdk.Context, route RouteMetaData, inputDenom string, curLeft, curRight sdk.Int) (sdk.Int, sdk.Int)

Determine if the binary search range needs to be extended

func (Keeper) FindMaxProfitForRoute

func (k Keeper) FindMaxProfitForRoute(ctx sdk.Context, route RouteMetaData, remainingTxPoolPoints, remainingBlockPoolPoints *uint64) (sdk.Coin, sdk.Int, error)

FindMaxProfitRoute runs a binary search to find the max profit for a given route

func (Keeper) GetAdminAccount

func (k Keeper) GetAdminAccount(ctx sdk.Context) sdk.AccAddress

GetAdminAccount returns the admin account for protorev

func (Keeper) GetAllBaseDenoms

func (k Keeper) GetAllBaseDenoms(ctx sdk.Context) ([]types.BaseDenom, error)

GetAllBaseDenoms returns all of the base denoms (sorted by priority in descending order) used to build cyclic arbitrage routes

func (Keeper) GetAllDeveloperFees

func (k Keeper) GetAllDeveloperFees(ctx sdk.Context) ([]sdk.Coin, error)

GetAllDeveloperFees returns all the developer fees the developer account can withdraw

func (Keeper) GetAllProfits

func (k Keeper) GetAllProfits(ctx sdk.Context) []sdk.Coin

GetAllProfits returns all of the profits made by the ProtoRev module.

func (Keeper) GetAllProfitsByRoute

func (k Keeper) GetAllProfitsByRoute(ctx sdk.Context, route []uint64) []sdk.Coin

GetAllProfitsByRoute returns all of the profits made by the ProtoRev module for the given route

func (Keeper) GetAllRoutes

func (k Keeper) GetAllRoutes(ctx sdk.Context) ([][]uint64, error)

GetAllRoutes returns all of the routes that the ProtoRev module has traded on

func (Keeper) GetAllTokenPairArbRoutes

func (k Keeper) GetAllTokenPairArbRoutes(ctx sdk.Context) ([]types.TokenPairArbRoutes, error)

GetAllTokenPairArbRoutes returns all the token pair arb routes

func (Keeper) GetDaysSinceModuleGenesis

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

GetDaysSinceModuleGenesis returns the number of days since the module was initialized

func (Keeper) GetDeveloperAccount

func (k Keeper) GetDeveloperAccount(ctx sdk.Context) (sdk.AccAddress, error)

GetDeveloperAccount returns the developer account for protorev

func (Keeper) GetDeveloperFees

func (k Keeper) GetDeveloperFees(ctx sdk.Context, denom string) (sdk.Coin, error)

GetDeveloperFees returns the fees the developers can withdraw from the module account

func (Keeper) GetLatestBlockHeight

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

GetLatestBlockHeight returns the latest block height that protorev was run on

func (Keeper) GetMaxPointsPerBlock

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

GetMaxPointsPerBlock returns the max number of pool points that can be consumed per block. A pool point is roughly equivalent to 1 ms of simulation & execution time.

func (Keeper) GetMaxPointsPerTx

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

GetMaxPointsPerTx returns the max number of pool points that can be consumed per transaction. A pool point is roughly equivalent to 1 ms of simulation & execution time.

func (Keeper) GetNumberOfTrades

func (k Keeper) GetNumberOfTrades(ctx sdk.Context) (sdk.Int, error)

GetNumberOfTrades returns the number of trades executed by the ProtoRev module

func (Keeper) GetParams

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

GetParams get all parameters as types.Params

func (Keeper) GetPointCountForBlock

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

GetPointCountForBlock returns the number of pool points that have been consumed in the current block

func (Keeper) GetPoolForDenomPair

func (k Keeper) GetPoolForDenomPair(ctx sdk.Context, baseDenom, denomToMatch string) (uint64, error)

GetPoolForDenomPair returns the id of the highest liquidty pool between the base denom and the denom to match

func (Keeper) GetPoolWeights

func (k Keeper) GetPoolWeights(ctx sdk.Context) types.PoolWeights

GetPoolWeights retrieves the weights of different pool types. The weight of a pool type roughly corresponds to the amount of time it will take to simulate and execute a swap on that pool type (in ms).

func (Keeper) GetProfitsByDenom

func (k Keeper) GetProfitsByDenom(ctx sdk.Context, denom string) (sdk.Coin, error)

GetProfitsByDenom returns the profits made by the ProtoRev module for the given denom

func (Keeper) GetProfitsByRoute

func (k Keeper) GetProfitsByRoute(ctx sdk.Context, route []uint64, denom string) (sdk.Coin, error)

GetProfitsByRoute returns the profits made by the ProtoRev module for the given route and denom

func (Keeper) GetProtoRevEnabled

func (k Keeper) GetProtoRevEnabled(ctx sdk.Context) bool

GetProtoRevEnabled returns whether protorev is enabled

func (Keeper) GetRemainingPoolPoints added in v15.1.0

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

RemainingPoolPointsForTx calculates the number of pool points that can be consumed in the transaction and block. When the remaining pool points for the block is less than the remaining pool points for the transaction, then both returned values will be the same, which will be the remaining pool points for the block.

func (Keeper) GetTokenPairArbRoutes

func (k Keeper) GetTokenPairArbRoutes(ctx sdk.Context, tokenA, tokenB string) (types.TokenPairArbRoutes, error)

GetTokenPairArbRoutes returns the token pair arb routes given two denoms

func (Keeper) GetTradesByRoute

func (k Keeper) GetTradesByRoute(ctx sdk.Context, route []uint64) (sdk.Int, error)

GetTradesByRoute returns the number of trades executed by the ProtoRev module for the given route

func (Keeper) IncrementNumberOfTrades

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

IncrementNumberOfTrades increments the number of trades executed by the ProtoRev module

func (Keeper) IncrementPointCountForBlock

func (k Keeper) IncrementPointCountForBlock(ctx sdk.Context, amount uint64) error

IncrementPointCountForBlock increments the number of pool points that have been consumed in the current block

func (Keeper) IncrementTradesByRoute

func (k Keeper) IncrementTradesByRoute(ctx sdk.Context, route []uint64) error

IncrementTradesByRoute increments the number of trades executed by the ProtoRev module for the given route

func (Keeper) InitGenesis

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

InitGenesis initializes the module's state from a provided genesis state.

func (Keeper) IsValidPool

func (k Keeper) IsValidPool(ctx sdk.Context, poolID uint64) error

IsValidPool checks if the pool is active and exists

func (Keeper) IterateRoutes

func (k Keeper) IterateRoutes(ctx sdk.Context, routes []RouteMetaData, remainingTxPoolPoints, remainingBlockPoolPoints *uint64) (sdk.Coin, sdk.Int, poolmanagertypes.SwapAmountInRoutes)

IterateRoutes checks the profitability of every single route that is passed in and returns the optimal route if there is one

func (Keeper) Logger

func (k Keeper) Logger(ctx sdk.Context) log.Logger

func (Keeper) ProtoRevTrade

func (k Keeper) ProtoRevTrade(ctx sdk.Context, swappedPools []SwapToBackrun) (err error)

ProtoRevTrade wraps around the build routes, iterate routes, and execute trade functionality to execute cyclic arbitrage trades if they exist. It returns an error if there was an issue executing any single trade.

func (Keeper) SendDeveloperFeesToDeveloperAccount

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

SendDeveloperFeesToDeveloperAccount sends the developer fees from the module account to the developer account

func (Keeper) SetAdminAccount

func (k Keeper) SetAdminAccount(ctx sdk.Context, adminAccount sdk.AccAddress)

SetAdminAccount sets the admin account for protorev

func (Keeper) SetBaseDenoms

func (k Keeper) SetBaseDenoms(ctx sdk.Context, baseDenoms []types.BaseDenom) error

SetBaseDenoms sets all of the base denoms used to build cyclic arbitrage routes. The base denoms priority order is going to match the order of the base denoms in the slice.

func (Keeper) SetDaysSinceModuleGenesis

func (k Keeper) SetDaysSinceModuleGenesis(ctx sdk.Context, daysSinceGenesis uint64)

SetDaysSinceModuleGenesis updates the number of days since genesis

func (Keeper) SetDeveloperAccount

func (k Keeper) SetDeveloperAccount(ctx sdk.Context, developerAccount sdk.AccAddress)

SetDeveloperAccount sets the developer account for protorev that will receive a portion of arbitrage profits

func (Keeper) SetDeveloperFees

func (k Keeper) SetDeveloperFees(ctx sdk.Context, developerFees sdk.Coin) error

SetDeveloperFees sets the fees the developers can withdraw from the module account

func (Keeper) SetLatestBlockHeight

func (k Keeper) SetLatestBlockHeight(ctx sdk.Context, blockHeight uint64)

SetLatestBlockHeight sets the latest block height that protorev was run on

func (Keeper) SetMaxPointsPerBlock

func (k Keeper) SetMaxPointsPerBlock(ctx sdk.Context, maxPoints uint64) error

SetMaxPointsPerBlock sets the max number of pool points that can be consumed per block. A pool point is roughly equivalent to 1 ms of simulation & execution time.

func (Keeper) SetMaxPointsPerTx

func (k Keeper) SetMaxPointsPerTx(ctx sdk.Context, maxPoints uint64) error

SetMaxPointsPerTx sets the max number of pool points that can be consumed per transaction. A pool point is roughly equivalent to 1 ms of simulation & execution time.

func (Keeper) SetParams

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

SetParams set the params

func (Keeper) SetPointCountForBlock

func (k Keeper) SetPointCountForBlock(ctx sdk.Context, pointCount uint64)

SetPointCountForBlock sets the number of pool points that have been consumed in the current block

func (Keeper) SetPoolForDenomPair

func (k Keeper) SetPoolForDenomPair(ctx sdk.Context, baseDenom, denomToMatch string, poolId uint64)

SetPoolForDenomPair sets the id of the highest liquidty pool between the base denom and the denom to match

func (Keeper) SetPoolWeights

func (k Keeper) SetPoolWeights(ctx sdk.Context, poolWeights types.PoolWeights)

SetPoolWeights sets the weights of different pool types.

func (Keeper) SetProtoRevEnabled

func (k Keeper) SetProtoRevEnabled(ctx sdk.Context, enabled bool)

SetProtoRevEnabled sets whether the protorev post handler is enabled

func (Keeper) SetTokenPairArbRoutes

func (k Keeper) SetTokenPairArbRoutes(ctx sdk.Context, tokenA, tokenB string, tokenPair types.TokenPairArbRoutes) error

SetTokenPairArbRoutes sets the token pair arb routes given two denoms

func (Keeper) UpdateDeveloperFees

func (k Keeper) UpdateDeveloperFees(ctx sdk.Context, denom string, profit sdk.Int) error

UpdateDeveloperFees updates the fees that developers can withdraw from the module account

func (Keeper) UpdateHighestLiquidityPools added in v15.5.0

func (k Keeper) UpdateHighestLiquidityPools(ctx sdk.Context, baseDenomPools map[string]map[string]LiquidityPoolStruct) error

UpdateHighestLiquidityPools updates the baseDenomPools map (passed in by reference) with the highest liquidity pools for each base denom by iterating through all pools, getting the total liquidity for each pool, and updating the highest liquidity pools based upon comparing total liquidity.

func (Keeper) UpdatePools

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

UpdatePools first deletes all of the pools paired with any base denom in the store and then adds the highest liquidity pools that match to the store

func (Keeper) UpdateProfitsByDenom

func (k Keeper) UpdateProfitsByDenom(ctx sdk.Context, denom string, tradeProfit sdk.Int) error

UpdateProfitsByDenom updates the profits made by the ProtoRev module for the given denom

func (Keeper) UpdateProfitsByRoute

func (k Keeper) UpdateProfitsByRoute(ctx sdk.Context, route []uint64, denom string, profit sdk.Int) error

UpdateProfitsByRoute updates the profits made by the ProtoRev module for the given route and denom

func (Keeper) UpdateStatistics

func (k Keeper) UpdateStatistics(ctx sdk.Context, route poolmanagertypes.SwapAmountInRoutes, denom string, profit sdk.Int) error

UpdateStatistics updates the module statistics after each trade is executed

type LiquidityPoolStruct

type LiquidityPoolStruct struct {
	Liquidity sdk.Int
	PoolId    uint64
}

Struct used to track the pool with the highest liquidity

type MsgServer

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

func (MsgServer) AdminCheck

func (m MsgServer) AdminCheck(ctx sdk.Context, admin string) error

AdminCheck ensures that the sender is the admin account.

func (MsgServer) SetBaseDenoms

SetBaseDenoms sets the base denoms that will be used to generate cyclic arbitrage routes

func (MsgServer) SetDeveloperAccount

SetDeveloperAccount sets the developer account that will receive fees

func (MsgServer) SetHotRoutes

SetHotRoutes sets the hot routes for ProtoRev

func (MsgServer) SetMaxPoolPointsPerBlock

SetMaxPoolPointsPerBlock sets the maximum number of pool points that can be consumed per block

func (MsgServer) SetMaxPoolPointsPerTx

SetMaxPoolPointsPerTx sets the maximum number of pool points that can be consumed per tx

func (MsgServer) SetPoolWeights

SetPoolWeights sets the weights corresponding to each pool type. This distinction is necessary because the pool types have different execution times. Each weight roughly corresponds to the amount of time (in ms) it takes to simulate and execute a trade.

type ProtoRevDecorator

type ProtoRevDecorator struct {
	ProtoRevKeeper Keeper
}

func NewProtoRevDecorator

func NewProtoRevDecorator(protoRevDecorator Keeper) ProtoRevDecorator

func (ProtoRevDecorator) AnteHandle

func (protoRevDec ProtoRevDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)

This posthandler will first check if there were any swaps in the tx. If so, collect all of the pools, build routes for cyclic arbitrage, and then execute the optimal route if it exists.

type Querier

type Querier struct {
	Keeper
}

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

func NewQuerier

func NewQuerier(k Keeper) Querier

func (Querier) GetProtoRevAdminAccount

GetProtoRevAdminAccount queries the admin account that is allowed to execute admin functions

func (Querier) GetProtoRevAllProfits

GetProtoRevAllProfits queries all of the profits from the module

func (Querier) GetProtoRevAllRouteStatistics

GetProtoRevAllRouteStatistics queries all of routes that the module has arbitrage against and the number of trades executed on each route and the total profits for each route

func (Querier) GetProtoRevBaseDenoms

GetProtoRevBaseDenoms queries the base denoms that are being used for arbitrage

func (Querier) GetProtoRevDeveloperAccount

GetProtoRevDeveloperAccount queries the developer account that is accumulating the profits from the module

func (Querier) GetProtoRevEnabled

GetProtoRevEnabled queries whether the module is enabled or not

func (Querier) GetProtoRevMaxPoolPointsPerBlock

GetProtoRevPoolPointsPerBlock queries the maximum number of pool points that can be consumed per block

func (Querier) GetProtoRevMaxPoolPointsPerTx

GetProtoRevPoolPointsPerTx queries the maximum number of pool points that can be consumed per transaction

func (Querier) GetProtoRevNumberOfTrades

GetProtoRevNumberOfTrades queries the number of trades the module has executed

func (Querier) GetProtoRevPool added in v15.1.0

GetProtoRevPool queries the pool id for a given base denom and other denom

func (Querier) GetProtoRevPoolWeights

GetProtoRevPoolWeights queries the weights of each pool type that is being used for arbitrage

func (Querier) GetProtoRevProfitsByDenom

GetProtoRevProfitsByDenom queries the profits of the module by denom

func (Querier) GetProtoRevStatisticsByRoute

GetProtoRevStatisticsByRoute queries the number of arbitrages and profits that have been executed for a given route

func (Querier) GetProtoRevTokenPairArbRoutes

GetProtoRevTokenPairArbRoutes queries the hot routes that the module is utilizing for cyclic arbitrage route generation

func (Querier) Params

Params queries the parameters of the module.

type RouteMetaData

type RouteMetaData struct {
	// The route that was built
	Route poolmanagertypes.SwapAmountInRoutes
	// The number of pool points that were consumed to build the route
	PoolPoints uint64
	// The step size that should be used in the binary search for the optimal swap amount
	StepSize sdk.Int
}

type SwapToBackrun

type SwapToBackrun struct {
	PoolId        uint64
	TokenOutDenom string
	TokenInDenom  string
}

func ExtractSwappedPools

func ExtractSwappedPools(tx sdk.Tx) []SwapToBackrun

ExtractSwappedPools checks if there were any swaps made on pools and if so returns a list of all the pools that were swapped on and metadata about the swap

Jump to

Keyboard shortcuts

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