token-fundraiser: large valid targets cause contribution-limit overflow
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
- #791 của @Bismithblde — đã đóng, không merge
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 82/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- rust
- Lĩnh vực
- blockchain
Hướng nghiên cứu
Bắt đầu với programs/fundraiser/src/instructions/contribute.rs:67, nơi giới hạn cho mỗi người đóng góp bị tràn số, và kiểm tra cách giới hạn đó được dùng lại trong các bước kiểm tra giao dịch và tổng đóng góp. Thêm hoặc chạy kiểm thử hồi quy LiteSVM cho các giá trị mục tiêu u64::MAX / 10 + 1 và u64::MAX; hoàn tất khi các khoản đóng góp đúng bằng giới hạn thành công, các khoản vượt giới hạn thất bại, và số dư cùng các khoản đóng góp được ghi nhận đều chính xác.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
The Anchor fundraiser accepts u64 fundraising targets, but calculating the per-contributor 10% limit uses u64 multiplication before division. For a target greater than u64::MAX / 10, target * 10 overflows and contributions panic, even when the contribution is small and the final limit fits in u64.
Reproduction
A Rust LiteSVM integration test creates a six-decimal mint, initializes a fundraiser with a target of u64::MAX / 10 + 1, then contributes 1,000,000 base units (one token).
Initialization succeeds. The contribution fails with attempt to multiply with overflow at programs/fundraiser/src/instructions/contribute.rs:67.
The same issue affects a target of u64::MAX. The existing initialization instruction accepts both values.
Proposed fix
Calculate the percentage once in u128 and reuse it for the per-transaction and cumulative contributor limits. Compare the cumulative contribution in u128 as well. This preserves the 10% policy and integer rounding.
The regression fails against the original program and passes after the fix. It covers both targets, acceptance up to the exact cap, rejection above the cap, and resulting balances and recorded contributions. All three fundraiser integration tests pass locally.
- Ngôn ngữ chính
- Rust
- Star
- 1.4k
- Fork
- 562
- Merge trung bình
- 23 giờ 5 phút
- Pull request đã merge (30 ngày)
- 19
Chuẩn bị môi trường
- Không có Dockerfile hay 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 solana-foundation/program-examples
-
Migrate deprecated .accounts() to .accountsPartial() in Anchor testsCó thể làm lại được @ankittiwari-04 đã nhận 27 ngày trước và không có pull request nào đang mở. Đang mởaccepted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
solana-foundation/program-examples#747 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
basics/pda-rent-payer: create_new_account has no caller check — worth a note for people copying it?Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
solana-foundation/program-examples#671 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
native/pinocchio examples: deploy script points at program.so, which the build never producesCó thể đã có người làm @MarkFeder đã nhận hôm nay. Đang mởaccepted
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 35/100
solana-foundation/program-examples#787 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
token-2022/cpi-guard: add a Pinocchio versionCó thể đã có người làm @MarkFeder đã nhận hôm nay. Đang mởaccepted
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 20/100
solana-foundation/program-examples#786 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
token-2022/memo-transfer: add a Pinocchio versionCó thể đã có người làm @MarkFeder đã nhận hôm nay. Đang mởaccepted
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
solana-foundation/program-examples#785 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của solana-foundation/program-examples
Issue tương tự
-
SPLADE `/embed_sparse` output depends on the other inputs in the batch (candle BertModel / DistilBertModel)Có thể đã có người làm @0z5a đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
huggingface/text-embeddings-inference#979 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
servo/rust-smallvec#874 ·
-
Expression with ill-formed typeĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 94/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 2 ngày
-
ci enhancement need-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 1 ngày