Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Audit] Duplicate/retried withdraw requests double-count `withdrawnAmount`

未关闭
#1,216 6 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 7 天内回复

@Martinsbab 已经在做这个了。

开始于 2026年8月29日。

  • #1 来自 @freebuff-web —— 未关闭
  • #1410 来自 @Martinsbab —— 未关闭

评估

这个 Issue 还没有评估数据。

描述

backend bug second-wave-audit Stellar Wave

Filed from the second-wave repository audit (issue 14/100). See the audit summary for full category context.

  • Location: backend/src/routes/v1/streams/withdraw.ts:106-144
  • Problem: sorobanWithdraw returns a deterministic, non-unique txHash ('simulated-withdraw-' + streamId), so the StreamEvent upsert (keyed on transactionHash+eventType) correctly no-ops on a retry — but the adjacent prisma.stream.update that increments withdrawnAmount is not guarded by the same dedup check and runs unconditionally on every call.
  • Evidence: StreamEvent upsert has an update: {} no-op branch; the stream.update above it has no equivalent guard.
  • Suggested implementation: Wrap both writes in one transaction gated by the same duplicate-event check, or make the balance update itself idempotent (compute from indexed on-chain state rather than incrementing).
  • Acceptance criteria: Calling withdraw twice for the same claimable window increases withdrawnAmount by the claimed amount exactly once, verified by a new integration test.
  • Difficulty: M
  • Expected impact: Fixes a real fund-accounting bug reachable via a simple double-click or client retry.
主要语言
TypeScript
星标
18
派生
250
平均合并
5 天 6 小时
30 天内合并 PR
82

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

LabsCrypt/flowfi 的其他 Issue

查看 LabsCrypt/flowfi 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。