Skip to content

feat(#549/#550/#552/#555): fee-bump, SEP-41 allowances, path payment,…#716

Merged
joelpeace48-cell merged 1 commit into
FinesseStudioLab:mainfrom
Jayy4rl:feat/549-550-552-555-feebump-sep41-pathpayment-monitoring
Jun 28, 2026
Merged

feat(#549/#550/#552/#555): fee-bump, SEP-41 allowances, path payment,…#716
joelpeace48-cell merged 1 commit into
FinesseStudioLab:mainfrom
Jayy4rl:feat/549-550-552-555-feebump-sep41-pathpayment-monitoring

Conversation

@Jayy4rl

@Jayy4rl Jayy4rl commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

… operator monitoring

Closes #555 Fee-bump / sponsored transactions:

  • POST /api/v1/fee-bump wraps a signed inner tx XDR with a sponsor fee-bump
  • Op allowlist (invokeHostFunction, payment, claimClaimableBalance, changeTrust, createAccount)
  • Per-wallet daily quota (default 10, configurable via FEE_BUMP_DAILY_QUOTA)
  • Circuit breaker: rejects when sponsor XLM < MIN_SPONSOR_BALANCE
  • GET /api/v1/fee-bump/quota/:wallet to inspect remaining quota
  • Migration 025_fee_bump_quota.js tracks daily usage per wallet
  • Frontend helpers: isEligibleForSponsorship(), wrapWithFeeBump()

Closes #552 Operator balance monitoring:

  • operatorBalanceService checks XLM balance of operator/sponsor accounts via Horizon
  • Emits structured log.warn + metrics.operatorLowBalance when below threshold
  • Optional auto-topup (guarded by AUTO_TOPUP_ENABLED env flag)
  • operatorBalanceJob polls every 5 min (OPERATOR_BALANCE_CHECK_INTERVAL_MS)
  • Migration 026_operator_balance_log.js stores per-check audit history

Closes #550 SEP-41 allowance / approve / transfer_from flows:

  • 8 new Rust tests in contracts/rewards/src/test.rs covering: approve + allowance read, transfer_from consumes allowance, over-spend rejection, expiration rejection, re-approve resets amount+expiry, zero-amount approve clears allowance, burn_from, token mode gate
  • Frontend helpers: submitApproveTransaction, fetchAllowance, submitTransferFromTransaction, submitBurnFromTransaction
  • docs/CONTRACTS_API.md: new SEP-41 section with edge-case table, mutual exclusivity note, and TypeScript usage examples

Closes #549 Path payment for multi-asset claims:

  • GET /api/v1/payment-paths proxies Horizon /paths/strict-receive with trustline pre-check and structured error for missing trustline
  • POST /api/v1/payment-paths/claim validates slippage (0-500bps, default 100) and returns adjusted maxSendAmount for wallet to sign
  • Frontend helpers: fetchPaymentPaths(), submitPathPaymentClaimTransaction()
  • Integration tests in backend/src/integration/feeBump.test.js

…inesseStudioLab#555): fee-bump, SEP-41 allowances, path payment, operator monitoring

FinesseStudioLab#555 Fee-bump / sponsored transactions:
- POST /api/v1/fee-bump wraps a signed inner tx XDR with a sponsor fee-bump
- Op allowlist (invokeHostFunction, payment, claimClaimableBalance, changeTrust, createAccount)
- Per-wallet daily quota (default 10, configurable via FEE_BUMP_DAILY_QUOTA)
- Circuit breaker: rejects when sponsor XLM < MIN_SPONSOR_BALANCE
- GET /api/v1/fee-bump/quota/:wallet to inspect remaining quota
- Migration 025_fee_bump_quota.js tracks daily usage per wallet
- Frontend helpers: isEligibleForSponsorship(), wrapWithFeeBump()

FinesseStudioLab#552 Operator balance monitoring:
- operatorBalanceService checks XLM balance of operator/sponsor accounts via Horizon
- Emits structured log.warn + metrics.operatorLowBalance when below threshold
- Optional auto-topup (guarded by AUTO_TOPUP_ENABLED env flag)
- operatorBalanceJob polls every 5 min (OPERATOR_BALANCE_CHECK_INTERVAL_MS)
- Migration 026_operator_balance_log.js stores per-check audit history

FinesseStudioLab#550 SEP-41 allowance / approve / transfer_from flows:
- 8 new Rust tests in contracts/rewards/src/test.rs covering:
  approve + allowance read, transfer_from consumes allowance, over-spend
  rejection, expiration rejection, re-approve resets amount+expiry,
  zero-amount approve clears allowance, burn_from, token mode gate
- Frontend helpers: submitApproveTransaction, fetchAllowance,
  submitTransferFromTransaction, submitBurnFromTransaction
- docs/CONTRACTS_API.md: new SEP-41 section with edge-case table,
  mutual exclusivity note, and TypeScript usage examples

FinesseStudioLab#549 Path payment for multi-asset claims:
- GET /api/v1/payment-paths proxies Horizon /paths/strict-receive with
  trustline pre-check and structured error for missing trustline
- POST /api/v1/payment-paths/claim validates slippage (0-500bps, default 100)
  and returns adjusted maxSendAmount for wallet to sign
- Frontend helpers: fetchPaymentPaths(), submitPathPaymentClaimTransaction()
- Integration tests in backend/src/integration/feeBump.test.js
@vercel

vercel Bot commented Jun 28, 2026

Copy link
Copy Markdown

@Jayy4rl is attempting to deploy a commit to the joelpeace48-cell's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jun 28, 2026

Copy link
Copy Markdown

@Jayy4rl 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

@joelpeace48-cell joelpeace48-cell merged commit 121a7b3 into FinesseStudioLab:main Jun 28, 2026
3 of 16 checks passed
joelpeace48-cell added a commit that referenced this pull request Jun 30, 2026
…41-pathpayment-monitoring

feat(#549/#550/#552/#555): fee-bump, SEP-41 allowances, path payment,…
joelpeace48-cell added a commit that referenced this pull request Jun 30, 2026
…41-pathpayment-monitoring

feat(#549/#550/#552/#555): fee-bump, SEP-41 allowances, path payment,…
joelpeace48-cell added a commit that referenced this pull request Jun 30, 2026
…41-pathpayment-monitoring

feat(#549/#550/#552/#555): fee-bump, SEP-41 allowances, path payment,…
joelpeace48-cell added a commit that referenced this pull request Jun 30, 2026
…41-pathpayment-monitoring

feat(#549/#550/#552/#555): fee-bump, SEP-41 allowances, path payment,…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants