spot

package
v0.78.1 Latest Latest
Warning

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

Go to latest
Published: Sep 3, 2024 License: AGPL-3.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BaseAssetIndex  = 0
	QuoteAssetIndex = 1
)

Variables

View Source
var ErrCommitmentAmountTooLow = errors.New("commitment amount is too low")

Functions

This section is empty.

Types

type HoldingAccountTracker

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

func NewHoldingAccountTracker

func NewHoldingAccountTracker(marketID string, log *logging.Logger, collateral common.Collateral) *HoldingAccountTracker

func (*HoldingAccountTracker) GetCurrentHolding

func (hat *HoldingAccountTracker) GetCurrentHolding(orderID string) (*num.Uint, *num.Uint)

func (*HoldingAccountTracker) GetState

func (hat *HoldingAccountTracker) GetState(key string) ([]byte, []types.StateProvider, error)

func (*HoldingAccountTracker) Keys

func (hat *HoldingAccountTracker) Keys() []string

func (*HoldingAccountTracker) LoadState

func (hat *HoldingAccountTracker) LoadState(_ context.Context, payload *types.Payload) ([]types.StateProvider, error)

func (*HoldingAccountTracker) Namespace

func (*HoldingAccountTracker) ReleaseAllFromHoldingAccount

func (hat *HoldingAccountTracker) ReleaseAllFromHoldingAccount(ctx context.Context, orderID, party, asset string) (*types.LedgerMovement, error)

func (*HoldingAccountTracker) ReleaseFeeFromHoldingAccount

func (hat *HoldingAccountTracker) ReleaseFeeFromHoldingAccount(ctx context.Context, orderID, party, asset string) (*types.LedgerMovement, error)

func (*HoldingAccountTracker) ReleaseQuantityHoldingAccount

func (hat *HoldingAccountTracker) ReleaseQuantityHoldingAccount(ctx context.Context, orderID, party, asset string, quantity *num.Uint, fee *num.Uint) (*types.LedgerMovement, error)

func (*HoldingAccountTracker) ReleaseQuantityHoldingAccountAuctionEnd added in v0.75.0

func (hat *HoldingAccountTracker) ReleaseQuantityHoldingAccountAuctionEnd(ctx context.Context, orderID, party, asset string, quantity *num.Uint, fee *num.Uint) (*types.LedgerMovement, error)

func (*HoldingAccountTracker) StopSnapshots

func (hat *HoldingAccountTracker) StopSnapshots()

func (*HoldingAccountTracker) Stopped

func (hat *HoldingAccountTracker) Stopped() bool

func (*HoldingAccountTracker) TransferFeeToHoldingAccount

func (hat *HoldingAccountTracker) TransferFeeToHoldingAccount(ctx context.Context, orderID, party, asset string, feeQuantity *num.Uint) (*types.LedgerMovement, error)

func (*HoldingAccountTracker) TransferToHoldingAccount

func (hat *HoldingAccountTracker) TransferToHoldingAccount(ctx context.Context, orderID, party, asset string, quantity *num.Uint, fee *num.Uint) (*types.LedgerMovement, error)

type IDGen

type IDGen interface {
	NextID() string
}

IDGen is an id generator for orders.

type Market

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

Market represents an instance of a market in vega and is in charge of calling the engines in order to process all transactions.

func NewMarket

func NewMarket(
	log *logging.Logger,
	matchingConfig matching.Config,
	feeConfig fee.Config,
	liquidityConfig liquidity.Config,
	collateralEngine common.Collateral,
	mkt *types.Market,
	timeService common.TimeService,
	broker common.Broker,
	as common.AuctionState,
	stateVarEngine common.StateVarEngine,
	marketActivityTracker *common.MarketActivityTracker,
	baseAssetDetails *assets.Asset,
	quoteAssetDetails *assets.Asset,
	peggedOrderNotify func(int64),
	referralDiscountRewardService fee.ReferralDiscountRewardService,
	volumeDiscountService fee.VolumeDiscountService,
	volumeRebateService fee.VolumeRebateService,
	banking common.Banking,
) (*Market, error)

NewMarket creates a new market using the market framework configuration and creates underlying engines.

func NewMarketFromSnapshot

func NewMarketFromSnapshot(
	ctx context.Context,
	log *logging.Logger,
	em *types.ExecSpotMarket,
	riskConfig risk.Config,
	positionConfig positions.Config,
	settlementConfig settlement.Config,
	matchingConfig matching.Config,
	feeConfig fee.Config,
	liquidityConfig liquidity.Config,
	collateralEngine common.Collateral,
	oracleEngine products.OracleEngine,
	timeService common.TimeService,
	broker common.Broker,
	stateVarEngine common.StateVarEngine,
	baseAssetDetails *assets.Asset,
	quoteAssetDetails *assets.Asset,
	marketActivityTracker *common.MarketActivityTracker,
	peggedOrderNotify func(int64),
	referralDiscountRewardService fee.ReferralDiscountRewardService,
	volumeDiscountService fee.VolumeDiscountService,
	volumeRebateService fee.VolumeRebateService,
	banking common.Banking,
) (*Market, error)

func (*Market) AmendAMM added in v0.77.0

func (m *Market) AmendAMM(context.Context, *types.AmendAMM, string) error

func (*Market) AmendLiquidityProvision

func (m *Market) AmendLiquidityProvision(ctx context.Context, lpa *types.LiquidityProvisionAmendment, party string, deterministicID string) error

AmendLiquidityProvision forwards a LiquidityProvisionAmendment to the Liquidity Engine.

func (*Market) AmendOrder

func (m *Market) AmendOrder(ctx context.Context, orderAmendment *types.OrderAmendment, party string, deterministicID string) (oc *types.OrderConfirmation, _ error)

AmendOrder amend an existing order from the order book.

func (*Market) AmendOrderWithIDGenerator

func (m *Market) AmendOrderWithIDGenerator(ctx context.Context, orderAmendment *types.OrderAmendment, party string, idgen common.IDGenerator) (oc *types.OrderConfirmation, _ error)

AmendOrderWithIDGenerator amends an order.

func (*Market) BeginBlock

func (m *Market) BeginBlock(_ context.Context)

func (*Market) BlockEnd

func (m *Market) BlockEnd(ctx context.Context)

BlockEnd notifies the market of the end of the block.

func (*Market) CanLeaveOpeningAuction

func (m *Market) CanLeaveOpeningAuction() bool

CanLeaveOpeningAuction checks if the market can leave the opening auction based on whether floating point consensus has been reached on all 2 vars.

func (*Market) CancelAMM added in v0.77.0

func (m *Market) CancelAMM(context.Context, *types.CancelAMM, string) error

func (*Market) CancelAllOrders

func (m *Market) CancelAllOrders(ctx context.Context, partyID string) ([]*types.OrderCancellationConfirmation, error)

CancelAllOrders cancels all orders in the market.

func (*Market) CancelAllStopOrders

func (m *Market) CancelAllStopOrders(ctx context.Context, partyID string) error

func (*Market) CancelLiquidityProvision

func (m *Market) CancelLiquidityProvision(ctx context.Context, cancel *types.LiquidityProvisionCancellation, party string) error

CancelLiquidityProvision forwards a LiquidityProvisionCancel to the Liquidity Engine.

func (*Market) CancelOrder

func (m *Market) CancelOrder(ctx context.Context, partyID, orderID string, deterministicID string) (oc *types.OrderCancellationConfirmation, _ error)

CancelOrder canels a single order in the market.

func (*Market) CancelOrderWithIDGenerator

func (m *Market) CancelOrderWithIDGenerator(ctx context.Context, partyID, orderID string, idgen common.IDGenerator) (oc *types.OrderCancellationConfirmation, _ error)

CancelOrderWithIDGenerator cancels an order in the market.

func (*Market) CancelStopOrder

func (m *Market) CancelStopOrder(
	ctx context.Context,
	partyID, orderID string,
) error

func (*Market) CheckOrderSubmissionForSpam added in v0.77.0

func (m *Market) CheckOrderSubmissionForSpam(orderSubmission *types.OrderSubmission, party string, quantumMultiplier num.Decimal) error

func (*Market) EnterLongBlockAuction added in v0.77.0

func (m *Market) EnterLongBlockAuction(ctx context.Context, duration int64)

func (*Market) GetAssetForProposerBonus

func (m *Market) GetAssetForProposerBonus() string

func (*Market) GetAssets added in v0.77.0

func (m *Market) GetAssets() []string

func (*Market) GetEquityShares

func (m *Market) GetEquityShares() *common.EquityShares

func (*Market) GetEquitySharesForParty added in v0.78.0

func (m *Market) GetEquitySharesForParty(partyID string) num.Decimal

func (*Market) GetFillPrice added in v0.75.0

func (m *Market) GetFillPrice(volume uint64, side types.Side) (*num.Uint, error)

func (*Market) GetID

func (m *Market) GetID() string

GetID returns the id of the given market.

func (*Market) GetMarketCounters

func (m *Market) GetMarketCounters() *types.MarketCounters

func (*Market) GetMarketData

func (m *Market) GetMarketData() types.MarketData

func (*Market) GetMarketState

func (m *Market) GetMarketState() types.MarketState

func (*Market) GetNewStateProviders

func (m *Market) GetNewStateProviders() []types.StateProvider

func (*Market) GetNextMTM

func (m *Market) GetNextMTM() time.Time

func (*Market) GetPartiesStats

func (m *Market) GetPartiesStats() *types.MarketStats

func (*Market) GetQuoteAsset

func (m *Market) GetQuoteAsset() string

func (*Market) GetState

func (m *Market) GetState() *types.ExecSpotMarket

func (*Market) GetTotalLPShapeCount

func (m *Market) GetTotalLPShapeCount() uint64

GetTotalLPShapeCount returns the total number of LP shapes.

func (*Market) GetTotalOpenPositionCount

func (m *Market) GetTotalOpenPositionCount() uint64

GetTotalOpenPositionCount returns the total number of open positions.

func (*Market) GetTotalOrderBookLevelCount

func (m *Market) GetTotalOrderBookLevelCount() uint64

GetTotalOrderBookLevelCount returns the total number of levels in the order book.

func (*Market) GetTotalPeggedOrderCount

func (m *Market) GetTotalPeggedOrderCount() uint64

GetTotalPeggedOrderCount returns the total number of pegged orders.

func (*Market) GetTotalStopOrderCount

func (m *Market) GetTotalStopOrderCount() uint64

GetTotalStopOrderCount returns the total number of stop orders.

func (*Market) Hash

func (m *Market) Hash() []byte

func (*Market) IntoType

func (m *Market) IntoType() types.Market

func (*Market) IsOpeningAuction

func (m *Market) IsOpeningAuction() bool

func (*Market) Mkt

func (m *Market) Mkt() *types.Market

func (*Market) OnAMMMinCommitmentQuantumUpdate added in v0.77.0

func (m *Market) OnAMMMinCommitmentQuantumUpdate(ctx context.Context, c *num.Uint)

func (*Market) OnAuctionEnded

func (m *Market) OnAuctionEnded()

OnAuctionEnded is called whenever an auction is ended and emits an event to the state var engine.

func (*Market) OnEpochEvent

func (m *Market) OnEpochEvent(ctx context.Context, epoch types.Epoch)

func (*Market) OnEpochRestore

func (m *Market) OnEpochRestore(ctx context.Context, epoch types.Epoch)

func (*Market) OnFeeFactorsBuyBackFeeUpdate added in v0.77.8

func (m *Market) OnFeeFactorsBuyBackFeeUpdate(ctx context.Context, d num.Decimal)

func (*Market) OnFeeFactorsInfrastructureFeeUpdate

func (m *Market) OnFeeFactorsInfrastructureFeeUpdate(ctx context.Context, d num.Decimal)

func (*Market) OnFeeFactorsMakerFeeUpdate

func (m *Market) OnFeeFactorsMakerFeeUpdate(ctx context.Context, d num.Decimal)

func (*Market) OnFeeFactorsTreasuryFeeUpdate added in v0.77.8

func (m *Market) OnFeeFactorsTreasuryFeeUpdate(ctx context.Context, d num.Decimal)

func (*Market) OnMarkPriceUpdateMaximumFrequency

func (m *Market) OnMarkPriceUpdateMaximumFrequency(ctx context.Context, d time.Duration)

func (*Market) OnMarketAMMMaxCalculationLevels added in v0.77.0

func (m *Market) OnMarketAMMMaxCalculationLevels(ctx context.Context, c *num.Uint)

func (*Market) OnMarketAuctionMaximumDurationUpdate

func (m *Market) OnMarketAuctionMaximumDurationUpdate(ctx context.Context, d time.Duration)

func (*Market) OnMarketAuctionMinimumDurationUpdate

func (m *Market) OnMarketAuctionMinimumDurationUpdate(ctx context.Context, d time.Duration)

func (*Market) OnMarketLiquidityEquityLikeShareFeeFractionUpdate added in v0.77.0

func (m *Market) OnMarketLiquidityEquityLikeShareFeeFractionUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2BondPenaltyFactorUpdate

func (m *Market) OnMarketLiquidityV2BondPenaltyFactorUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2EarlyExitPenaltyUpdate

func (m *Market) OnMarketLiquidityV2EarlyExitPenaltyUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2MaximumLiquidityFeeFactorLevelUpdate

func (m *Market) OnMarketLiquidityV2MaximumLiquidityFeeFactorLevelUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2ProvidersFeeCalculationTimeStep

func (m *Market) OnMarketLiquidityV2ProvidersFeeCalculationTimeStep(d time.Duration)

func (*Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltyMaxUpdate

func (m *Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltyMaxUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltySlopeUpdate

func (m *Market) OnMarketLiquidityV2SLANonPerformanceBondPenaltySlopeUpdate(d num.Decimal)

func (*Market) OnMarketLiquidityV2StakeToCCYVolume

func (m *Market) OnMarketLiquidityV2StakeToCCYVolume(d num.Decimal)

func (*Market) OnMarketMinLpStakeQuantumMultipleUpdate

func (m *Market) OnMarketMinLpStakeQuantumMultipleUpdate(_ context.Context, d num.Decimal)

func (*Market) OnMarketMinProbabilityOfTradingLPOrdersUpdate

func (m *Market) OnMarketMinProbabilityOfTradingLPOrdersUpdate(_ context.Context, d num.Decimal)

func (*Market) OnMarketPartiesMaximumStopOrdersUpdate

func (m *Market) OnMarketPartiesMaximumStopOrdersUpdate(ctx context.Context, u *num.Uint)

func (*Market) OnMarketProbabilityOfTradingTauScalingUpdate

func (m *Market) OnMarketProbabilityOfTradingTauScalingUpdate(_ context.Context, d num.Decimal)

func (*Market) OnMarketTargetStakeScalingFactorUpdate

func (m *Market) OnMarketTargetStakeScalingFactorUpdate(d num.Decimal) error

func (*Market) OnMarketTargetStakeTimeWindowUpdate

func (m *Market) OnMarketTargetStakeTimeWindowUpdate(d time.Duration)

func (*Market) OnMarketValueWindowLengthUpdate

func (m *Market) OnMarketValueWindowLengthUpdate(d time.Duration)

func (*Market) OnMinimalHoldingQuantumMultipleUpdate added in v0.77.0

func (m *Market) OnMinimalHoldingQuantumMultipleUpdate(multiplier num.Decimal) error

func (*Market) OnOpeningAuctionFirstUncrossingPrice

func (m *Market) OnOpeningAuctionFirstUncrossingPrice()

OnOpeningAuctionFirstUncrossingPrice is triggered when the opening auction sees an uncrossing price for the first time and emits an event to the state variable engine.

func (*Market) OnTick

func (m *Market) OnTick(ctx context.Context, t time.Time) bool

OnTick notifies the market of a new time event/update.

func (*Market) PostRestore

func (m *Market) PostRestore(ctx context.Context) error

PostRestore restores market price in orders after snapshot reload.

func (*Market) Reject

func (m *Market) Reject(ctx context.Context) error

Reject a market if the market state allow.

func (*Market) ReloadConf

func (m *Market) ReloadConf(matchingConfig matching.Config, feeConfig fee.Config)

ReloadConf will trigger a reload of all the config settings in the market and all underlying engines this is required when hot-reloading any config changes, eg. logger level.

func (*Market) SetNextMTM

func (m *Market) SetNextMTM(tm time.Time)

func (*Market) StartOpeningAuction

func (m *Market) StartOpeningAuction(ctx context.Context) error

StartOpeningAuction kicks off opening auction.

func (*Market) StopSnapshots

func (m *Market) StopSnapshots()

func (*Market) SubmitAMM added in v0.77.0

func (m *Market) SubmitAMM(context.Context, *types.SubmitAMM, string) error

func (*Market) SubmitLiquidityProvision

func (m *Market) SubmitLiquidityProvision(ctx context.Context, sub *types.LiquidityProvisionSubmission, party, deterministicID string) error

SubmitLiquidityProvision forwards a LiquidityProvisionSubmission to the Liquidity Engine.

func (*Market) SubmitOrder

func (m *Market) SubmitOrder(ctx context.Context, orderSubmission *types.OrderSubmission, party string, deterministicID string) (oc *types.OrderConfirmation, _ error)

SubmitOrder submits the given order.

func (*Market) SubmitOrderWithIDGeneratorAndOrderID

func (m *Market) SubmitOrderWithIDGeneratorAndOrderID(ctx context.Context, orderSubmission *types.OrderSubmission, party string, idgen common.IDGenerator, orderID string, checkForTriggers bool) (oc *types.OrderConfirmation, _ error)

SubmitOrderWithIDGeneratorAndOrderID submits the given order.

func (*Market) SubmitStopOrdersWithIDGeneratorAndOrderIDs

func (m *Market) SubmitStopOrdersWithIDGeneratorAndOrderIDs(
	ctx context.Context,
	submission *types.StopOrdersSubmission,
	party string,
	idgen common.IDGenerator,
	fallsBelowID, risesAboveID *string,
) (*types.OrderConfirmation, error)

func (*Market) Update

func (m *Market) Update(ctx context.Context, config *types.Market) error

func (*Market) UpdateMarketState

func (m *Market) UpdateMarketState(ctx context.Context, changes *types.MarketStateUpdateConfiguration) error

func (*Market) ValidateSettlementData added in v0.77.0

func (m *Market) ValidateSettlementData(_ *num.Uint) bool

type TargetStakeCalculator

type TargetStakeCalculator interface {
	types.StateProvider
	RecordTotalStake(oi uint64, now time.Time) error
	GetTargetStake(now time.Time) *num.Uint
	UpdateScalingFactor(sFactor num.Decimal) error
	UpdateTimeWindow(tWindow time.Duration)
	StopSnapshots()
	UpdateParameters(types.TargetStakeParameters)
}

Jump to

Keyboard shortcuts

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