Documentation ¶
Index ¶
- Constants
- func DisableLog()
- func UseLogger(logger slog.Logger)
- func ValidateConfigFile(cfgPath string, net dex.Network, log dex.Logger) error
- type Asset
- type Bonder
- type Config
- type DBConf
- type DEX
- func (dm *DEX) AccountInfo(aid account.AccountID) (*db.Account, error)
- func (dm *DEX) AccountMatchOutcomesN(aid account.AccountID, n int) ([]*auth.MatchOutcome, error)
- func (dm *DEX) Asset(id uint32) (*asset.BackedAsset, error)
- func (dm *DEX) BookOrders(base, quote uint32) ([]*order.LimitOrder, error)
- func (dm *DEX) ConfigMsg() json.RawMessage
- func (dm *DEX) CreatePrepaidBonds(n int, strength uint32, durSecs int64) ([][]byte, error)
- func (dm *DEX) EnableDataAPI(yes bool)
- func (dm *DEX) EpochOrders(base, quote uint32) ([]order.Order, error)
- func (dm *DEX) ForgiveMatchFail(aid account.AccountID, mid order.MatchID) (forgiven, unbanned bool, err error)
- func (dm *DEX) Healthy() bool
- func (dm *DEX) MarketMatches(base, quote uint32) ([]*MatchData, error)
- func (dm *DEX) MarketMatchesStreaming(base, quote uint32, includeInactive bool, N int64, f func(*MatchData) error) (int, error)
- func (dm *DEX) MarketRunning(mktName string) (found, running bool)
- func (dm *DEX) MarketStatus(mktName string) *market.Status
- func (dm *DEX) MarketStatuses() map[string]*market.Status
- func (dm *DEX) Notify(acctID account.AccountID, msg *msgjson.Message)
- func (dm *DEX) NotifyAll(msg *msgjson.Message)
- func (dm *DEX) ResumeMarket(name string, asSoonAs time.Time) (startEpoch int64, startTime time.Time, err error)
- func (dm *DEX) ScaleFeeRate(assetID uint32, rate uint64) uint64
- func (dm *DEX) SetFeeRateScale(assetID uint32, scale float64)
- func (dm *DEX) Stop()
- func (dm *DEX) SuspendMarket(name string, tSusp time.Time, persistBooks bool) (suspEpoch *market.SuspendEpoch, err error)
- func (dm *DEX) UserMatchFails(aid account.AccountID, n int) ([]*auth.MatchFail, error)
- type DexConf
- type FeeCoiner
- type FeeManager
- type Market
- type MatchData
- type RPCConfig
Constants ¶
const ( // PreAPIVersion covers all API iterations before versioning started. PreAPIVersion = iota BondAPIVersion // when we drop the legacy reg fee proto V1APIVersion // APIVersion is the current API version. APIVersion = V1APIVersion )
Variables ¶
This section is empty.
Functions ¶
func DisableLog ¶
func DisableLog()
DisableLog disables all library log output. Logging output is disabled by default until UseLogger is called.
Types ¶
type Asset ¶ added in v1.0.0
type Asset struct { Symbol string `json:"bip44symbol"` Network string `json:"network"` LotSizeOLD uint64 `json:"lotSize,omitempty"` RateStepOLD uint64 `json:"rateStep,omitempty"` MaxFeeRate uint64 `json:"maxFeeRate"` SwapConf uint32 `json:"swapConf"` ConfigPath string `json:"configPath"` RegFee uint64 `json:"regFee,omitempty"` RegConfs uint32 `json:"regConfs,omitempty"` RegXPub string `json:"regXPub,omitempty"` BondAmt uint64 `json:"bondAmt,omitempty"` BondConfs uint32 `json:"bondConfs,omitempty"` Disabled bool `json:"disabled"` NodeRelayID string `json:"nodeRelayID,omitempty"` }
Asset represents an asset in the Config file.
func LoadConfig ¶ added in v1.0.0
LoadConfig loads the Config from the specified file.
type Bonder ¶ added in v0.6.0
type Bonder interface { BondVer() uint16 BondCoin(ctx context.Context, ver uint16, coinID []byte) (amt, lockTime, confs int64, acct account.AccountID, err error) ParseBondTx(ver uint16, rawTx []byte) (bondCoinID []byte, amt int64, bondAddr string, bondPubKeyHash []byte, lockTime int64, acct account.AccountID, err error) }
Bonder describes a type that supports parsing raw bond transactions and locating them on-chain via coin ID.
type DBConf ¶
type DBConf struct { DBName string User string Pass string Host string Port uint16 ShowPGConfig bool }
DBConf groups the database configuration parameters.
type DEX ¶
type DEX struct {
// contains filtered or unexported fields
}
DEX is the DEX manager, which creates and controls the lifetime of all components of the DEX.
func NewDEX ¶
NewDEX creates the dex manager and starts all subsystems. Use Stop to shutdown cleanly. The Context is used to abort setup.
- Validate each specified asset.
- Create CoinLockers for each asset.
- Create and start asset backends.
- Create the archivist and connect to the storage backend.
- Create the authentication manager.
- Create and start the Swapper.
- Create and start the markets.
- Create and start the book router, and create the order router.
- Create and start the comms server.
func (*DEX) AccountInfo ¶
AccountInfo returns data for an account.
func (*DEX) AccountMatchOutcomesN ¶ added in v1.0.0
func (*DEX) Asset ¶
func (dm *DEX) Asset(id uint32) (*asset.BackedAsset, error)
Asset retrieves an asset backend by its ID.
func (*DEX) BookOrders ¶ added in v0.2.0
func (dm *DEX) BookOrders(base, quote uint32) ([]*order.LimitOrder, error)
BookOrders returns booked orders for market with base and quote.
func (*DEX) ConfigMsg ¶
func (dm *DEX) ConfigMsg() json.RawMessage
ConfigMsg returns the current dex configuration, marshalled to JSON.
func (*DEX) CreatePrepaidBonds ¶ added in v1.0.0
func (*DEX) EnableDataAPI ¶ added in v0.2.0
EnableDataAPI can be called via admin API to enable or disable the HTTP data API endpoints.
func (*DEX) EpochOrders ¶ added in v0.2.0
EpochOrders returns epoch orders for market with base and quote.
func (*DEX) ForgiveMatchFail ¶
func (dm *DEX) ForgiveMatchFail(aid account.AccountID, mid order.MatchID) (forgiven, unbanned bool, err error)
ForgiveMatchFail forgives a user for a specific match failure, potentially allowing them to resume trading if their score becomes passing.
func (*DEX) Healthy ¶ added in v1.0.0
Healthy returns the health status of the DEX. This is true if the storage does not report an error and the BTC backend is synced.
func (*DEX) MarketMatches ¶ added in v0.2.0
MarketMatches returns matches for market with base and quote.
func (*DEX) MarketMatchesStreaming ¶ added in v0.2.0
func (dm *DEX) MarketMatchesStreaming(base, quote uint32, includeInactive bool, N int64, f func(*MatchData) error) (int, error)
MarketMatchesStreaming streams all matches for market with base and quote.
func (*DEX) MarketRunning ¶
TODO: for just market running status, the DEX manager should use its knowledge of Market subsystem state.
func (*DEX) MarketStatus ¶
MarketStatus returns the market.Status for the named market. If the market is unknown to the DEX, nil is returned.
func (*DEX) MarketStatuses ¶
MarketStatuses returns a map of market names to market.Status for all known markets.
func (*DEX) ResumeMarket ¶
func (dm *DEX) ResumeMarket(name string, asSoonAs time.Time) (startEpoch int64, startTime time.Time, err error)
ResumeMarket launches a stopped market subsystem as early as the given time. The actual time the market will resume depends on the configure epoch duration, as the market only starts at the beginning of an epoch.
func (*DEX) ScaleFeeRate ¶
ScaleFeeRate scales the provided fee rate with the given asset's swap fee rate scale factor, which is 1.0 by default.
func (*DEX) SetFeeRateScale ¶
SetFeeRateScale specifies a scale factor that the Swapper should use to scale the optimal fee rates for new swaps for for the specified asset. That is, values above 1 increase the fee rate, while values below 1 decrease it.
func (*DEX) Stop ¶
func (dm *DEX) Stop()
Stop shuts down the DEX. Stop returns only after all components have completed their shutdown.
func (*DEX) SuspendMarket ¶
func (dm *DEX) SuspendMarket(name string, tSusp time.Time, persistBooks bool) (suspEpoch *market.SuspendEpoch, err error)
SuspendMarket schedules a suspension of a given market, with the option to persist the orders on the book (or purge the book automatically on market shutdown). The scheduled final epoch and suspend time are returned. This is a passthrough to the OrderRouter. A TradeSuspension notification is broadcasted to all connected clients.
type DexConf ¶
type DexConf struct { DataDir string LogBackend *dex.LoggerMaker Markets []*dex.MarketInfo Assets []*Asset Network dex.Network DBConf *DBConf BroadcastTimeout time.Duration TxWaitExpiration time.Duration CancelThreshold float64 FreeCancels bool PenaltyThreshold uint32 DEXPrivKey *secp256k1.PrivateKey CommsCfg *RPCConfig NoResumeSwaps bool NodeRelayAddr string }
DexConf is the configuration data required to create a new DEX.
type FeeCoiner ¶ added in v0.4.0
type FeeCoiner interface {
FeeCoin(coinID []byte) (addr string, val uint64, confs int64, err error)
}
FeeCoiner describes a type that can check a transaction output, namely a fee payment, for a particular asset.
type FeeManager ¶ added in v0.2.0
type FeeManager struct {
// contains filtered or unexported fields
}
FeeManager manages fee fetchers and a fee cache.
func NewFeeManager ¶ added in v0.2.0
func NewFeeManager() *FeeManager
NewFeeManager is the constructor for a FeeManager.
func (*FeeManager) AddFetcher ¶ added in v0.2.0
func (m *FeeManager) AddFetcher(asset *asset.BackedAsset)
AddFetcher adds a fee fetcher (a *BackedAsset) and primes the cache. The asset's MaxFeeRate are used to limit the rates returned by the LastRate method as well as the rates returned by child FeeFetchers.
func (*FeeManager) FeeFetcher ¶ added in v0.2.0
func (m *FeeManager) FeeFetcher(assetID uint32) market.FeeFetcher
FeeFetcher creates and returns an asset-specific fetcher that satisfies market.FeeFetcher, implemented by *feeFetcher.
func (*FeeManager) LastRate ¶ added in v0.2.0
func (m *FeeManager) LastRate(assetID uint32) uint64
LastRate is the last rate cached for the specified asset.
type Market ¶ added in v1.0.0
type Market struct { Base string `json:"base"` Quote string `json:"quote"` LotSize uint64 `json:"lotSize"` ParcelSize uint32 `json:"parcelSize"` RateStep uint64 `json:"rateStep"` Duration uint64 `json:"epochDuration"` MBBuffer float64 `json:"marketBuyBuffer"` Disabled bool `json:"disabled"` }
Market represents the markets specified in the Config file.