orderbook

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Nov 13, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type OBGraph

type OBGraph interface {
	AddOffer(offer xdr.OfferEntry)
	Apply(ledger uint32) error
	Discard()
	Offers() []xdr.OfferEntry
	OffersMap() map[xdr.Int64]xdr.OfferEntry
	RemoveOffer(xdr.Int64) OBGraph
	Pending() ([]xdr.OfferEntry, []xdr.Int64)
	Clear()
}

OBGraph is an interface for orderbook graphs

type OrderBookGraph

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

OrderBookGraph is an in memory graph representation of all the offers in the stellar ledger

func NewOrderBookGraph

func NewOrderBookGraph() *OrderBookGraph

NewOrderBookGraph constructs a new OrderBookGraph

func (*OrderBookGraph) AddOffer

func (graph *OrderBookGraph) AddOffer(offer xdr.OfferEntry)

AddOffer will queue an operation to add the given offer to the order book in the internal batch. You need to run Apply() to apply all enqueued operations.

func (*OrderBookGraph) Apply

func (graph *OrderBookGraph) Apply(ledger uint32) error

Apply will attempt to apply all the updates in the internal batch to the order book. When Apply is successful, a new empty, instance of internal batch will be created.

func (*OrderBookGraph) Clear

func (graph *OrderBookGraph) Clear()

Clear removes all offers from the graph.

func (*OrderBookGraph) Discard

func (graph *OrderBookGraph) Discard()

Discard removes all operations which have been queued but not yet applied to the OrderBookGraph

func (*OrderBookGraph) FindAsksAndBids

func (graph *OrderBookGraph) FindAsksAndBids(
	selling, buying xdr.Asset, maxPriceLevels int,
) ([]xdr.OfferEntry, []xdr.OfferEntry, uint32)

FindAsksAndBids returns all asks and bids for a given trading pair Asks consists of all offers which sell `selling` in exchange for `buying` sorted by price (in terms of `buying`) from cheapest to most expensive Bids consists of all offers which sell `buying` in exchange for `selling` sorted by price (in terms of `selling`) from cheapest to most expensive Both Asks and Bids will span at most `maxPriceLevels` price levels

func (*OrderBookGraph) FindFixedPaths

func (graph *OrderBookGraph) FindFixedPaths(
	ctx context.Context,
	maxPathLength int,
	sourceAsset xdr.Asset,
	amountToSpend xdr.Int64,
	destinationAssets []xdr.Asset,
	maxAssetsPerPath int,
) ([]Path, uint32, error)

FindFixedPaths returns a list of payment paths where the source and destination assets are fixed. All returned payment paths will start by spending `amountToSpend` of `sourceAsset` and will end with some positive balance of `destinationAsset`. `sourceAccountID` is optional. if `sourceAccountID` is provided then no offers created by `sourceAccountID` will be considered when evaluating payment paths

func (*OrderBookGraph) FindPaths

func (graph *OrderBookGraph) FindPaths(
	ctx context.Context,
	maxPathLength int,
	destinationAsset xdr.Asset,
	destinationAmount xdr.Int64,
	sourceAccountID *xdr.AccountId,
	sourceAssets []xdr.Asset,
	sourceAssetBalances []xdr.Int64,
	validateSourceBalance bool,
	maxAssetsPerPath int,
) ([]Path, uint32, error)

FindPaths returns a list of payment paths originating from a source account and ending with a given destinaton asset and amount.

func (*OrderBookGraph) IsEmpty

func (graph *OrderBookGraph) IsEmpty() bool

IsEmpty returns true if the orderbook graph is not populated

func (*OrderBookGraph) Offers

func (graph *OrderBookGraph) Offers() []xdr.OfferEntry

Offers returns a list of offers contained in the order book

func (*OrderBookGraph) OffersMap

func (graph *OrderBookGraph) OffersMap() map[xdr.Int64]xdr.OfferEntry

OffersMap returns a ID => OfferEntry map of offers contained in the order book.

func (*OrderBookGraph) Pending

func (graph *OrderBookGraph) Pending() ([]xdr.OfferEntry, []xdr.Int64)

Pending returns a list of queued offers which will be added to the order book and a list of queued offers which will be removed from the order book.

func (*OrderBookGraph) RemoveOffer

func (graph *OrderBookGraph) RemoveOffer(offerID xdr.Int64) OBGraph

RemoveOffer will queue an operation to remove the given offer from the order book in the internal batch. You need to run Apply() to apply all enqueued operations.

type Path

type Path struct {
	SourceAmount      xdr.Int64
	SourceAsset       xdr.Asset
	DestinationAsset  xdr.Asset
	DestinationAmount xdr.Int64

	InteriorNodes []xdr.Asset
	// contains filtered or unexported fields
}

Path represents a payment path from a source asset to some destination asset

func (*Path) DestinationAssetString

func (p *Path) DestinationAssetString() string

DestinationAssetString returns the string representation of the path's destination asset

func (*Path) SourceAssetString

func (p *Path) SourceAssetString() string

SourceAssetString returns the string representation of the path's source asset

Jump to

Keyboard shortcuts

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