- #554 - [FIX] Add missing checks for transmuter's limiter
- #548 - Return base fee in /quote regardless of simulation success.
- #547 - Add /quote simulation for "out given in" single routes.
- #526 - Refactor gas estimation APIs
- #524 - Claimbot
e42b32bc SQS-412 | Active Orders Query: SSE (#518)
0c663b7f SQS-417 | Fix orderbook order Quantity parsing (#519)
- ee288006 Uni-directional taker fee (#510)
- 2a657033 Fix orderbook ProcessPool panic (#498)
- 10b84b4c Fix sqsdomain package version (#508)
- ec649caa SQS-375 | Unit test createFormattedLimitOrder (#492)
- 142faa74 Fix: Orderbook ProcessPool panic (#497)
- f1efd83f feat: improve test stability by optional pricing source (#490)
- 4133a718 fix: rename tenderming to tendermint (#488)
- 4f5b8b81 chore: active orders observability TODOs (#469)
- Move active orders query to the passthrough use case
- Add query for active orders in the orderbook
- Fix bug withe duplicate metrics registration.
- Reduce metrics cardinality, removing labels for coingecko cache metrics.
- Fix
/config
query bug for chain handler use case returning the default that is overriden by CoinGecko pricing source.
- Reduce metrics cardinality, removing labels for most cases.
- Define sane config defaults, allowing the ability to override them via a config file or environment variables (backwards compatible).
- Remove unused
debug
config and flag.
- Add router and candidate route search options to disable route cache
- Fix concurrency bug in data fetcher prefetching.
- Fix error response status codes in /quote and /custom-direct-quote
- Orderbook plugin
- Change tick iteration exit condition in CL in orderbook from zero to smallest Dec (18 decimals).
- Add rounding direction to the order book
- Fix bug in skipping Numia API response errors
- Ingest tracing
- Fix
/tokens/metadata
query for multiplechainDenom
- Fix multi-hop /custom-direct-quote bug
- Apply taker fee and spread factor for fill bot amount estimation
- Reduce fill bot slippage bound by one ulp
- Fallback to filling each message individually.
- Active orders query
- Add staking rewards to the unclaimed rewards and total assets categories of the /portfolio-assets query
- Implement with_market_incentives query param for
/pools
that formats fees and APRs data on pools.
- Bump sqsdomain
- Remove sqs_requests_total and sqs_request_duration_seconds metrics
- Numia Pools APR fetcher, associated configs and wiring
- Timeseries pool fees fetcher, associated configs and wiring
- Fix alloyed overflow bug
- Alloyed rate limiter boilerplate in sqsdomain
- Add rate limiter to alloyed pools
Chain compatibility: v25.x-c775cee7-1722825184
- Fix bug with filters n /pools API
Chain compatibility: v25.x-c8140e68-1722532245
- Mitigate the alloy rebalancing router breakage by invalidating route cache if all routes fail and ordering denoms by balances.
- Prioritize canonical orderbook in router and caches
- Add liquidity filter to pools query
- Fix bug applying invalid pool liquidity filter in the liquidity pricing pipeline.
- In given out /router/quite refactor
Chain compatibility: v25.x-c8140e68-1722532245
- Switch quotes onto new candidate routes system
- Resolve goroutine leak stemming from creating a grpc connection for every cosmwasm pool in route. Share one connection.
- Remove spread factor from fee as it is included in the price impact
- Format contract address in canonical orderbook endpoints
- Fix telemetry issues around coingecko pricing source
- Fix goroutine leak in worker pool for prices
- Worker pool abstraction implementation & tests
- Switch prices to worker pool and remove concurrency for quotes since we support only one quote denom atm.
- Switch ingest block processing system to rely on worker pool with 2 block processing workers.
- Wait for cold-start (first block) to be processed before starting the next block to avoid overloading the system.
- Create a separate simple router usecase to be used in pricing and avoid mixing up configs and caches.
- [Q3] Auto-update asset list at regular intervals, added
update-assets-height-interval
config - Switched to GRPC gateway from Tendermint RPC.
grpc-tendermint-rpc-endpoint
config for Tendermint RPC.grpc-gateway-endpoint
for GRPC gateway. - Added config for orderbook code id
pools.orderbook-code-ids
- Move pricing logic to the dynamic min liquidity filter configuration
- Implement candidate route optimization for the pricing
Chain compatibility: osmolabs/osmosis-dev:v25.x-49e8ee9
- Fix bug with allUSDT swaps resulting in extreme price impact due to config and filtering issues.
- Fix bug of overapplying quote denom scaling factor in pool liquidity pricer.
- Pool liquidity capitalization
- Make alloyed transmuter pools receive more rank in routing
Chain compatibility: osmolabs/osmosis-dev:v25.x-a1bf5551-1718937537
- Add fault tolerance in candidate route conversion when pools are breaking.
- Hotfix for Alloyed pool swaps failing due to not having LP share in balances.
- [SQS-Routing] API to force quote over a given route
- Create a config for pricing worker min liquidity capitalization and set it to 5 USD by default.
- [Dynamic Min Liquidity] new ingester methods for acquiring necessary metadata.
- bugfix: PoolWrapper Validate panic
- SQS: Fix /version endpoint and let it work in containers
- Alloyed pool support
Note: we jumped major versions from v19 to v26 to be compatible with the chain.
- Record errors with OpenTelemetry.
- Ingester data transformations for dynamic min liquidity.
- Optimize dynamic splits by caching repeated calls within callback.
- Remove queue from pricing worker
- Return single route quote if split quote fails
- CoinGecko pricing source support
- Flight recording of slow requests and dependency updates
- Consistently rename min liqudity filter across pool models & configs to min pool liquidity capitalization (cap)
- Validate token in and out in /router quote endpoints to ensure that they are not equal to each other & clean up tokens/prices
- Hack to fallback to precision of 18 when estimating spot price for Astroport pools via quotes.
- Asset list V2 integration
- Reduce cardinality of duration metrics
- Clean up chain pricing
- Charge taker fee for transmuter pools
- Fix Astroport PCL spot price bug - failure to utilize token out denom for quote estimate in edge cases
- Fix pricing bug where we would incorrectly apply scaling factor to the price that is already correctly scaled when computing the price using the alternative (quote-based) method.
- /config-private endpoint, mask OTEL config in /config endpoint
Fixes for pricing cache and min liquidity param
- Rebuild image from new dockerfile
- Custom sample rate config
- Propagate --host CLI config for Sentry
- Cache no candidate or ranked routes
- Skip pool filtering if min osmo liquidity is zero
- Fix bug with max split routes parameter
- Pricing ingest worker
- Remove support for unlisted tokens in the router and for prices
- Healthcheck observes price updates
- Never expire cache for USDC prices as they are computed in the background on every block where update occurred
- Pricing options; pricing source wiring at the app level
- Router options; remove GetOptimalQuoteFromConfig API.
- Fetch only required taker fees instead of all.
- Pre-allocate buffers in GetCandidateRoutes
- Unsafe cast in GetCandidateRoutes for performance
- Use slice instead of map in GetCandidateRoutes for performance
- More performance tricks in GetCandidateRoutes
- Cache zero routes for lower TTL if none found between token A and B
- Validate chain denom parameters in /quote and /routes and /prices
- Sentry CORS config
- v24 import paths
- Speedup for Order of Magnitude
- Remove redundant allocations
- LRU cache for tick to sqrt price
Add CORS header for Sentry
Nanosecond block process duration metric
Register ingest Prometheus metrics.
Expose port 50052 on Docker image
Sentry tracing config for /router/quote
ADR-006 stage 2 - GRPC Ingest Refactor
Revert Astroport spot price hot fix. https://wallet.keplr.app/chains/osmosis/proposals/762
- #160 Custom sampling rate per endpoint.
- #158 Integrate Sentry & add new configs.
- #143 light clean ups from the data ingest refactor.
- #148 white whale switch of base and quote denoms in spot price.
- #147 GRPC ingester config, code gen and wiring.
Attempt transmuter fix
Fix excessive price impact bug.
- #108 Add code id (omitempty) to /quote route response
- #107 Invert spot price in quotes. Break quote API
Hot fix for white whale base quote confusion
- Support all asset list v1 tokens
- Use spot price in pricing
Hot fix for astroport PCL base quote confusion
Fix for CW pools filtering
Do not error on spot price error in results, return zero instead.
Deprioritize non-transmuter pools
Fixes cosmwasm pools config issue where unsupported pools were getting into the router and breaking it.
Fixes cosmwasm pools config issue where unsupported pools were getting into the router and breaking it.
- #100 Format in over out spot price in quotes.
- #99 Move candidate routes cache out of Redis. Remove route overwrite
Various performance improvement optimizations.
- #85 /tokens/prices endpoint
Human readable denom params in router
- #81 Add support for single quotes as param in /quote.
- Rename import paths to v23
- Change Osmosis dependency to point to v23.x branch
- #76 Keep
/pools
endpoint only, allowing the IDs parameter
- #75 Break /pools/all and introduce /pools?IDs
- #52 Fix key separator issue breaking tokenfactory denoms.
- #53 Fix /version query
- #54 Return all paramters from /config (as opposed to just router config)
- #64 refactor: GetTakerFee by pool ID - avoid getting all taker fees
- #46 Various fixes around cosmwasm pool implementation after testing Astroport PCL on testnet.
- #45 Fix build issue by updating sqsdomain dep. Update config value.
- #43 Implement generalized CosmWasm pools into router that interact with the chain for computing quotes. Expose spot price by pool ID API.