The BitcoinFeeRateProvider name was never great; it should technically
have been something like EarnDotComFeeRateProvider. This change renames
the class to reflect that it (and its new subclasses) are specifically
designed to query the Mempool API as found at https://mempool.space.
This class had been made public in order to access the MIN/MAX_FEE_RATE
fields and to construct dummy instances in FeeRateServiceTest. This
introduced package cycles between bisq.price.mining and
bisq.price.mining.provider, making the implementation more difficult to
understand and maintain. This commit moves these fields to the
already-public FeeRateProvider base class, where they make more sense
to reside anyway. It also reworks tests to remove the need to access
BitcoinFeeRateProvider directly from FeeRateServiceTest. In the end,
BitcoinFeeRateProvider's visibility is returned to package-private as it
originally was, and all package cycles have been eliminated.
- Wrap comments at 90 chars per bisq-network/style#5
- Wrap code at 120 chars per bisq-network/style#3
- Remove unused imports
- Remove extra newlines
- Format code where appropriate
- Remove unused Javadoc tags, e.g. @return, @param
- End Javadoc summary sentence with a period where missing
- Remove HTML formatting in Javadoc, e.g. extra <br>s
Automatically instantiate up to 5 parallel fee estimation providers
based on configured API endpoints in application.properties.
By default, two endpoints are active.
When none are configured, one primary provider defaults to querying
mempool.space.
Extend FeeRateService with necessary logic to support multiple
BitcoinFeeRateProvider instances. Average the retrieved rates and
provide the average via the service getFee() API.
- Polish whitespace and newlines; wrap comments at 90 chars
- Use package-private vs protected visibility when exposing
BitcoinFeeRateProvider constants for testing
- Document that 'maxBlocks' is dead code, but do not remove it yet, as
it would disrupt the process of getting this fix out quickly because
it would require operators to change the way they start their
pricenodes.
The API endpoint for fee estimations has been changed to one that delivers more accurate fee estimations.
This is a temporary solution, until a more decentralized approach is found.
Fixes projects/issues/27
In case a price feed has an error, a stacktrace dumped in the logs
for each incoming getAllMarketPrice request. In detail, there is one
line of log stating that there is a getAllMarketPrice request, one
line of log stating that there is an error and around 150 lines of
stracktrace.
This fills up the logs quite fast, around 7.5G per day which is
unnecessary.
This commit only outputs the stacktrace in debug log configuration.
* Report HS version to pricenode
In order to evaluate progress on https://github.com/bisq-network/projects/issues/23,
the Bisq app reports its hiddenservice version.
This change is going to be undone as soon as we do not need the
info anymore.
* Added hsversion scraper script
* Added installer/uninstaller
* Cleanup
* Fix unit name
With the removal of CoinMarketCap as an exchange rate provider in the
prior commit, the @Order values of the remaining three provider
implementations are non-contiguous. CoinMarketCap was @Order(3) and with
it gone, the remaining order values became 1, 2, 4. This is not a
problem in practice, but could be confusing for future maintainers, so
this commit simply decrements the Poloniex implementation from 4 to 3 in
order to make the values contiguous once again.
This commit also fixes a typo in ExchangeRateProvider's Javadoc.
In the process of reconsolidating the bisq-network/bisq-pricenode
repository back into this repository as a submodule, this
this README was not carried over. This change simply copies the README
over from the old repo.