All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Implemented the ability to use different hold assets for different asset groups. This change required a restructuring of the arbitcycle.cfg parameters, so configuration files from version 0.3.3-alpha or earlier will not work with later versions. See the example file for the new setup.
- Added a rate-limiter option to space out multi-threaded API calls that in some cases could trigger the Horizon API rate limit. The new option is in arbitconfig.cfg, as
RATE_LIMITER_MS
. A line for this option must be present in the configuration file, even if it is set to 0.
- Changed the conceptulization of asset groups.
- arbitconfig.cfg now has an additional level of nesting,
[[GROUPS]]
, with the[[ASSETS]]
lists now named[[GROUPS.ASSETS]]
- Hold assets are now considered part of the asset group and must be specified inside each
[[GROUPS]]
entry, including if the hold asset is the same across groups
- Fixed an issue that caused balances for hold assets other than XLM to always return as unfindable.
- Removed the deprecated pathRequestor code
- Fixed a nil reference that could occur when a
calculatePathValues
call returned an error
TICK_INTERVAL_SECONDS
is no longer supported; users will need to remove it from theirarbitconfig.cfg
file
- Fixed a nil reference that occured when no valid route was found
- Fixed a cpu leak from unclosed tickers in stream routines
- Implemented multithreading throughout, greatly improving speed
- Added streamingfrom Horizon orderbooks to synchronize Rockfish with Stellar's ledger updates
- SDEX orderbooks are now queried from Horizon once and distributed to the relevant paths, instead of calling the orderbooks during path calculations
- The log now displays "route empty" in the place of a ratio when the path is broken by an empty orderbook, instead of displaying "0"
- Modified payment amount determination to reduce by 2% from the maximum available in the DEX path; this is make it less likely that out-of-app rounding code cause payments to become too expensive
- Due to multithreading the log will not always show the list of route results in the same order
TICK_INTERVAL_SECONDS
is no longer used; replaced by stream synchronization- The
--iter
flag no longer has an effect due to deprecation ofTICK_INTERVAL_SECONDS
- Fixed amount calculation problems stemming from not inverting bid amounts
- Added minimum trade parameter to prevent losses on very small trades due to fees
- Changed from floating-point math to model.Number math throughout
- Changed first trading pair to sell viewpoint to simplify ratio calculation
- Fixed amount calculations failing to convert back to hold asset values
- Core Rockfish functionality: watch orderbooks, find opportunities, and make cyclical path payments
- For the purposes of Semantic Versioning, the public API for Rockfish is the configuration file structure