[Audit] Duplicate/retried withdraw requests double-count `withdrawnAmount`
Maintainer thường phản hồi trong vòng 7 ngày
@Martinsbab đang làm issue này rồi.
Từ ngày 29/8/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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:
sorobanWithdrawreturns a deterministic, non-uniquetxHash('simulated-withdraw-' + streamId), so theStreamEventupsert (keyed ontransactionHash+eventType) correctly no-ops on a retry — but the adjacentprisma.stream.updatethat incrementswithdrawnAmountis not guarded by the same dedup check and runs unconditionally on every call. - Evidence:
StreamEventupsert has anupdate: {}no-op branch; thestream.updateabove 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
withdrawnAmountby 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.
- Ngôn ngữ chính
- TypeScript
- Star
- 18
- Fork
- 250
- Merge trung bình
- 5 ngày 6 giờ
- Pull request đã merge (30 ngày)
- 82
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của LabsCrypt/flowfi
-
backend points: 150 testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 7 ngày
-
backend points: 150 testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 7 ngày
-
backend points: 150 testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 7 ngày
-
backend points: 150 testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 7 ngày
-
backend points: 150 testing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 7 ngày
Tất cả issue của LabsCrypt/flowfi
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Nimblesite/SharpLsp#468 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Bundled uv is never updated and trusts the compromised eMudhra certificatesCó thể đã có người làm @FabienDanieau đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
bg_wait's blocking mode (stopOnAttention: false) is under-documented and effectively undiscoverableĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
nicobailon/pi-subagents#3019 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
db-ux-design-system/core-web#8613 ·
Maintainer thường phản hồi trong vòng 1 ngày