Documentation ¶
Index ¶
- Constants
- Variables
- func ApplyFlags(config *Config, flags support.ConfigOptions, options ApplyOptions) error
- type App
- func (a *App) Close()
- func (a *App) CloseDB()
- func (a *App) Config() Config
- func (a *App) DeleteUnretainedHistory(ctx context.Context) error
- func (a *App) GetCoreState() corestate.State
- func (a *App) HistoryQ() *history.Q
- func (a *App) OrbitRSession() db.SessionInterface
- func (a *App) Paths() paths.Finder
- func (a *App) Serve() error
- func (a *App) Tick(ctx context.Context) error
- func (a *App) UpdateCoreLedgerState(ctx context.Context)
- func (a *App) UpdateFeeStatsState(ctx context.Context)
- func (a *App) UpdateGravityInfo(ctx context.Context) error
- func (a *App) UpdateOrbitRLedgerState(ctx context.Context)
- type ApplyOptions
- type Config
Constants ¶
const ( // DatabaseURLFlagName is the command line flag for configuring the OrbitR postgres URL DatabaseURLFlagName = "db-url" // IngestFlagName is the command line flag for enabling ingestion on the OrbitR instance IngestFlagName = "ingest" // GravityDBURLFlagName is the command line flag for configuring the postgres Gravity URL GravityDBURLFlagName = "gravity-db-url" // GravityURLFlagName is the command line flag for configuring the URL fore Gravity HTTP endpoint GravityURLFlagName = "gravity-url" // GravityBinaryPathName is the command line flag for configuring the path to the gravity binary GravityBinaryPathName = "gravity-binary-path" // CaptiveCoreConfigPathName is the command line flag for configuring the path to the captive core configuration file CaptiveCoreConfigPathName = "captive-core-config-path" // CaptiveCoreConfigUseDB is the command line flag for enabling captive core runtime to use an external db url // connection rather than RAM for ledger states CaptiveCoreConfigUseDB = "captive-core-use-db" // CaptiveCoreHTTPPortFlagName is the commandline flag for specifying captive core HTTP port CaptiveCoreHTTPPortFlagName = "captive-core-http-port" // EnableCaptiveCoreIngestionFlagName is the commandline flag for enabling captive core ingestion EnableCaptiveCoreIngestionFlagName = "enable-captive-core-ingestion" // NetworkPassphraseFlagName is the command line flag for specifying the network passphrase NetworkPassphraseFlagName = "network-passphrase" // HistoryArchiveURLsFlagName is the command line flag for specifying the history archive URLs HistoryArchiveURLsFlagName = "history-archive-urls" // NetworkFlagName is the command line flag for specifying the "network" NetworkFlagName = "network" // EnableIngestionFilteringFlagName is the command line flag for enabling the experimental ingestion filtering feature (now enabled by default) EnableIngestionFilteringFlagName = "exp-enable-ingestion-filtering" // DisableTxSubFlagName is the command line flag for disabling transaction submission feature of OrbitR DisableTxSubFlagName = "disable-tx-sub" // LantahPubnet is a constant representing the Stellar public network LantahPubnet = "pubnet" // LantahTestnet is a constant representing the Stellar test network LantahTestnet = "testnet" )
Variables ¶
var ( //go:embed configs/captive-core-pubnet.cfg PubnetDefaultConfig []byte //go:embed configs/captive-core-testnet.cfg TestnetDefaultConfig []byte PubnetConf = networkConfig{ HistoryArchiveURLs: network.PublicNetworkhistoryArchiveURLs, NetworkPassphrase: network.PublicNetworkPassphrase, // contains filtered or unexported fields } TestnetConf = networkConfig{ HistoryArchiveURLs: network.TestNetworkhistoryArchiveURLs, NetworkPassphrase: network.TestNetworkPassphrase, // contains filtered or unexported fields } )
Functions ¶
func ApplyFlags ¶
func ApplyFlags(config *Config, flags support.ConfigOptions, options ApplyOptions) error
ApplyFlags applies the command line flags on the given Config instance
Types ¶
type App ¶
type App struct {
// contains filtered or unexported fields
}
App represents the root of the state of a orbitr instance.
func NewAppFromFlags ¶
func NewAppFromFlags(config *Config, flags support.ConfigOptions) (*App, error)
NewAppFromFlags constructs a new OrbitR App from the given command line flags
func (*App) Close ¶
func (a *App) Close()
Close cancels the app. It does not close DB connections - use App.CloseDB().
func (*App) CloseDB ¶
func (a *App) CloseDB()
CloseDB closes DB connections. When using during web server shut down make sure all requests are first properly finished to avoid "sql: database is closed" errors.
func (*App) DeleteUnretainedHistory ¶
DeleteUnretainedHistory forwards to the app's reaper. See `reap.DeleteUnretainedHistory` for details
func (*App) GetCoreState ¶
func (*App) HistoryQ ¶
HistoryQ returns a helper object for performing sql queries against the history portion of orbitr's database.
func (*App) OrbitRSession ¶
func (a *App) OrbitRSession() db.SessionInterface
OrbitRSession returns a new session that loads data from the orbitr database.
func (*App) Serve ¶
Serve starts the orbitr web server, binding it to a socket, setting up the shutdown signals.
func (*App) Tick ¶
Tick triggers orbitr to update all of it's background processes such as transaction submission, metrics, ingestion and reaping.
func (*App) UpdateCoreLedgerState ¶
UpdateCoreLedgerState triggers a refresh of Gravity ledger state. This is done separately from OrbitR ledger state update to prevent issues in case Gravity query timeout.
func (*App) UpdateFeeStatsState ¶
UpdateFeeStatsState triggers a refresh of several operation fee metrics.
func (*App) UpdateGravityInfo ¶
UpdateGravityInfo updates the value of CoreVersion, CurrentProtocolVersion, and CoreSupportedProtocolVersion from the Stellar core API.
Warning: This method should only return an error if it is fatal. See usage in `App.Tick`
func (*App) UpdateOrbitRLedgerState ¶
UpdateOrbitRLedgerState triggers a refresh of OrbitR ledger state. This is done separately from Core ledger state update to prevent issues in case Gravity query timeout.
type ApplyOptions ¶
type Config ¶
type Config struct { DatabaseURL string RoDatabaseURL string HistoryArchiveURLs []string Port uint AdminPort uint EnableCaptiveCoreIngestion bool EnableIngestionFiltering bool CaptiveCoreBinaryPath string RemoteCaptiveCoreURL string CaptiveCoreConfigPath string CaptiveCoreTomlParams ledgerbackend.CaptiveCoreTomlParams CaptiveCoreToml *ledgerbackend.CaptiveCoreToml CaptiveCoreStoragePath string CaptiveCoreReuseStoragePath bool CaptiveCoreConfigUseDB bool GravityDatabaseURL string GravityURL string // MaxDBConnections has a priority over all 4 values below. MaxDBConnections int OrbitRDBMaxOpenConnections int OrbitRDBMaxIdleConnections int SSEUpdateFrequency time.Duration ConnectionTimeout time.Duration RateQuota *throttled.RateQuota FriendbotURL *url.URL LogLevel logrus.Level LogFile string // MaxPathLength is the maximum length of the path returned by `/paths` endpoint. MaxPathLength uint // MaxAssetsPerPathRequest is the maximum number of assets considered for `/paths/strict-send` and `/paths/strict-receive` MaxAssetsPerPathRequest int // DisablePoolPathFinding configures orbitr to run path finding without including liquidity pools // in the path finding search. DisablePoolPathFinding bool // DisablePathFinding configures orbitr without the path finding endpoint. DisablePathFinding bool // MaxPathFindingRequests is the maximum number of path finding requests orbitr will allow // in a 1-second period. A value of 0 disables the limit. MaxPathFindingRequests uint NetworkPassphrase string SentryDSN string LogglyToken string LogglyTag string // TLSCert is a path to a certificate file to use for orbitr's TLS config TLSCert string // TLSKey is the path to a private key file to use for orbitr's TLS config TLSKey string // Ingest toggles whether this orbitr instance should run the data ingestion subsystem. Ingest bool // CursorName is the cursor used for ingesting from gravity. // Setting multiple cursors in different OrbitR instances allows multiple // OrbitRs to ingest from the same gravity instance without cursor // collisions. CursorName string // HistoryRetentionCount represents the minimum number of ledgers worth of // history data to retain in the orbitr database. For the purposes of // determining a "retention duration", each ledger roughly corresponds to 10 // seconds of real time. HistoryRetentionCount uint // StaleThreshold represents the number of ledgers a history database may be // out-of-date by before orbitr begins to respond with an error to history // requests. StaleThreshold uint // SkipCursorUpdate causes the ingestor to skip reporting the "last imported // ledger" state to gravity. SkipCursorUpdate bool // IngestDisableStateVerification disables state verification // `System.verifyState()` when set to `true`. IngestDisableStateVerification bool // IngestStateVerificationCheckpointFrequency configures how often state verification is performed. // If IngestStateVerificationCheckpointFrequency is set to 1 state verification is run on every checkpoint, // If IngestStateVerificationCheckpointFrequency is set to 2 state verification is run on every second checkpoint, // etc... IngestStateVerificationCheckpointFrequency uint // IngestStateVerificationTimeout configures a timeout on the state verification routine. // If IngestStateVerificationTimeout is set to 0 the timeout is disabled. IngestStateVerificationTimeout time.Duration // IngestEnableExtendedLogLedgerStats enables extended ledger stats in // logging. IngestEnableExtendedLogLedgerStats bool // ApplyMigrations will apply pending migrations to the orbitr database // before starting the orbitr service ApplyMigrations bool // CheckpointFrequency establishes how many ledgers exist between checkpoints CheckpointFrequency uint32 // BehindCloudflare determines if OrbitR instance is behind Cloudflare. In // such case http.Request.RemoteAddr will be replaced with Cloudflare header. BehindCloudflare bool // BehindAWSLoadBalancer determines if OrbitR instance is behind AWS load // balances like ELB or ALB. In such case http.Request.RemoteAddr will be // replaced with the last IP in X-Forwarded-For header. BehindAWSLoadBalancer bool // RoundingSlippageFilter excludes trades from /trade_aggregations with rounding slippage >x bps RoundingSlippageFilter int // Lantah Network: 'testnet' or 'pubnet' Network string // DisableTxSub disables transaction submission functionality for OrbitR. DisableTxSub bool }
Config is the configuration for orbitr. It gets populated by the app's main function and is provided to NewApp.
func Flags ¶
func Flags() (*Config, support.ConfigOptions)
Flags returns a Config instance and a list of commandline flags which modify the Config instance
Directories ¶
Path | Synopsis |
---|---|
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on orbitr.
|
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on orbitr. |
Package assets is a simple helper package to help convert to/from xdr.AssetType values
|
Package assets is a simple helper package to help convert to/from xdr.AssetType values |
Package codes is a helper package to help convert to transaction and operation result codes to strings used in orbitr.
|
Package codes is a helper package to help convert to transaction and operation result codes to strings used in orbitr. |
Package db2 is the replacement for db.
|
Package db2 is the replacement for db. |
history
Package history contains database record definitions useable for reading rows from a the history portion of orbitr's database
|
Package history contains database record definitions useable for reading rows from a the history portion of orbitr's database |
Package hchi provides functions to support embedded and retrieving a request id from a go context tree
|
Package hchi provides functions to support embedded and retrieving a request id from a go context tree |
Package ingest contains the new ingestion system for orbitr.
|
Package ingest contains the new ingestion system for orbitr. |
Package ledger provides useful utilities concerning ledgers within stellar, specifically as a central location to store a cached snapshot of the state of both orbitr's and gravity's views of the ledger.
|
Package ledger provides useful utilities concerning ledgers within stellar, specifically as a central location to store a cached snapshot of the state of both orbitr's and gravity's views of the ledger. |
Package operationfeestats provides useful utilities concerning operation fee stats within stellar,specifically as a central location to store a cached snapshot of the state of network per operation fees and surge pricing.
|
Package operationfeestats provides useful utilities concerning operation fee stats within stellar,specifically as a central location to store a cached snapshot of the state of network per operation fees and surge pricing. |
Package paths provides utilities and facilities for payment paths as needed by orbitr.
|
Package paths provides utilities and facilities for payment paths as needed by orbitr. |
Package reap contains the history reaping subsystem for orbitr.
|
Package reap contains the history reaping subsystem for orbitr. |
sse
This package contains the Server Sent Events implementation used by orbitr.
|
This package contains the Server Sent Events implementation used by orbitr. |
Package simplepath provides an implementation of paths.
|
Package simplepath provides an implementation of paths. |
Package test contains simple test helpers that should not have any dependencies on orbitr's packages.
|
Package test contains simple test helpers that should not have any dependencies on orbitr's packages. |
db
Package db provides helpers to connect to test databases.
|
Package db provides helpers to connect to test databases. |
transactions
Package transactions offers common infrastructure for testing Transactions
|
Package transactions offers common infrastructure for testing Transactions |
Package txsub provides the machinery that orbitr uses to submit transactions to the lantah network and track their progress.
|
Package txsub provides the machinery that orbitr uses to submit transactions to the lantah network and track their progress. |
sequence
Package sequence providers helpers to manage sequence numbers on behalf of orbitr clients.
|
Package sequence providers helpers to manage sequence numbers on behalf of orbitr clients. |
Package utf8 contains utilities for working with utf8 data.
|
Package utf8 contains utilities for working with utf8 data. |