Skip to content

Feat/low balance alerts#291

Open
JojoFlex1 wants to merge 2 commits intoceejaylaboratory:mainfrom
JojoFlex1:feat/low-balance-alerts
Open

Feat/low balance alerts#291
JojoFlex1 wants to merge 2 commits intoceejaylaboratory:mainfrom
JojoFlex1:feat/low-balance-alerts

Conversation

@JojoFlex1
Copy link
Copy Markdown

  • Add HotWalletMonitorService with configurable polling interval
  • Fetch live balances via Stellar Horizon for XLM and any SEP-41 asset
  • Alert via Slack webhook, email (log stub), and custom webhook
  • Redis-based cooldown to suppress duplicate alerts per wallet/asset
  • Prometheus gauges: anchorpoint_hot_wallet_balance and
    anchorpoint_hot_wallet_below_threshold
  • Singleton with env-driven defaults (HOT_WALLETS, ALERT_SLACK_WEBHOOK_URL,
    ALERT_EMAIL_RECIPIENTS, ALERT_WEBHOOK_URL, HOT_WALLET_CHECK_INTERVAL_MS,
    HOT_WALLET_ALERT_COOLDOWN_SEC)
  • 14 tests covering balance fetch, threshold detection, alert de-duplication,
    multi-wallet polling, and start/stop lifecycle
    close Backend: Implement low-balance alerts for hot wallets #216

- Add RetryConfig (max_attempts clamped 1-5, delay_ledgers hint)
- Add CallWithRetry to bundle a Call with its retry policy
- Add execute_batch_with_retry: per-op retry without reverting the batch
- Add OpResult/BatchResult for structured per-operation reporting
- Add OpStatus enum: Success / Failed / Skipped
- abort_on_failure flag skips remaining calls after first unrecoverable failure
- Original execute_batch preserved with unchanged all-or-nothing semantics
- 7 tests covering: happy path, retry exhaustion, partial failure,
  abort-on-failure, nonce sequencing, and config clamping
)

- Add HotWalletMonitorService with configurable polling interval
- Fetch live balances via Stellar Horizon for XLM and any SEP-41 asset
- Alert via Slack webhook, email (log stub), and custom webhook
- Redis-based cooldown to suppress duplicate alerts per wallet/asset
- Prometheus gauges: anchorpoint_hot_wallet_balance and
  anchorpoint_hot_wallet_below_threshold
- Singleton with env-driven defaults (HOT_WALLETS, ALERT_SLACK_WEBHOOK_URL,
  ALERT_EMAIL_RECIPIENTS, ALERT_WEBHOOK_URL, HOT_WALLET_CHECK_INTERVAL_MS,
  HOT_WALLET_ALERT_COOLDOWN_SEC)
- 14 tests covering balance fetch, threshold detection, alert de-duplication,
  multi-wallet polling, and start/stop lifecycle
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented Apr 26, 2026

@JojoFlex1 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Backend: Implement low-balance alerts for hot wallets

1 participant