Ecosystem 5.1.9

27 January 2025

This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.

BUG FIXESUTXO PROVIDERSXMR IMPROVEMENTSDEPOSIT SYSTEM

Ecosystem v5.1.9

Release Date: January 27, 2025 Tags: BUG FIXES, UTXO PROVIDERS, XMR IMPROVEMENTS, DEPOSIT SYSTEM

Upgrade Notes

ALTER TABLE `transaction`
  MODIFY COLUMN `amount` DECIMAL(36, 8) NOT NULL,
  MODIFY COLUMN `fee` DECIMAL(36, 8) DEFAULT 0;
BTC_PROVIDER="mempool"
LTC_PROVIDER="mempool"
DOGE_PROVIDER="blockcypher"
DASH_PROVIDER="blockcypher"
cd backend && pnpm restart

Added

UTXO Provider System

  • Added a provider system for UTXO blockchains (BTC, LTC, DOGE, DASH), with three implementations and automatic fallback between them:
    • Mempool.space — free, unlimited API (BTC, LTC)
    • BlockCypher — 200 requests/hour on the free tier (BTC, LTC, DOGE, DASH)
    • Bitcoin Core node — self-hosted (BTC only)
  • Added provider selection through environment variables
  • Added automatic provider health checks and failover, so an unavailable provider is skipped rather than failing the lookup
  • Added provider caching

Cost Optimisation

  • Added Mempool.space as the default provider for BTC and LTC, which is free and has no rate limits

Pending Deposit Notifications

  • Added pending confirmation broadcasts for BTC deposits, as XMR already had
  • Added confirmation progress tracking to deposit monitoring
  • Added broadcasting only when the confirmation count actually changes, so duplicate updates are not sent

Provider Comparison

FeatureMempoolBlockCypherBitcoin Node
Supported ChainsBTC, LTCBTC, LTC, DOGE, DASHBTC only
Rate Limits✅ None❌ 200/hour free✅ None
Cost✅ Free forever⚠️ Paid after free⚠️ Infrastructure
Setup✅ No setup✅ No setup❌ Installation required
Privacy⚠️ Third-party⚠️ Third-party✅ Full control
UTXO Endpoint✅ Native❌ Workaround✅ Native
Fee Estimation✅ 5 levels⚠️ Basic✅ Smart

Changed

XMR Deposit Monitoring

  • Changed wallet-by-wallet processing to a global batch queue, processing up to 3 wallets at a time
  • Changed the check interval from 30 seconds to 5 seconds per wallet, so confirmations update faster
  • Changed retry handling to count retries per wallet rather than globally
  • Added a way to re-initiate monitoring for a stuck deposit
  • Added tracking of the last check time and of which wallets are actively monitored

Deposit Monitoring Logs

  • Changed the UTXO monitor to stop logging every "already processed" and "skipping" line, leaving only processing, error and status entries — production logs are substantially quieter

Fixed

BTC Deposits

  • Fixed BTC deposits showing wildly wrong amounts — 84000 BTC where 0.00001 BTC was deposited — because values arrived in satoshis and were never converted. The conversion now happens as the data is taken in, and the amount is calculated from the transaction outputs belonging to the customer's address.
  • Fixed a database error that rejected the fee on a BTC deposit as not a number, caused by reading the wrong amount field from the provider. Fee is now calculated as total input minus total output, with a fallback so it works across providers.
  • Fixed pending BTC deposits being broadcast with the wrong currency — they defaulted to "XMR" — so the interface never received a BTC pending deposit notification. The currency is now inferred from the chain.
  • Fixed deposit broadcasts failing on transactions carrying more than one output address.

Corrupted Wallet Data

  • Fixed wallets failing to load with an "Unexpected number in JSON" error. Corrupted stored wallet addresses are now detected and repaired automatically, and the repaired data is saved back.

Decimal Precision

  • Fixed deposit and withdrawal logs showing improper decimal precision in the admin panel. Transaction amounts and fees now store a full 8 decimal places. See Upgrade Notes for the migration.