orders/immediate scans the whole order book (O(book)); needs an asset-pair index
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu tại x/orders/transactions/immediate/transaction_keeper.go và lần theo cách các order được dùng làm key cũng như cách các counterparty được quét dưới store prefix. Điều tra các ràng buộc về indexing và iteration của store, sau đó xác định index theo asset-pair (và, nếu phù hợp, theo price) để các lần đọc phục vụ matching chỉ đọc phía book liên quan. Hoàn tất khi các immediate order không thể fill và các immediate order trong thin book không còn quét toàn bộ order book.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
orders/immediate matching iterates every order under the store prefix to find asset-compatible counterparties (x/orders/transactions/immediate/transaction_keeper.go). The recent fix added early termination once the collected counterparties can fill the incoming order, so the common fillable case is bounded, but an unfillable or thin-book order still scans the entire book, and store reads are gas-metered — an attacker who grows the book raises the cost of every immediate order and can push it past the block gas limit (liveness).
The root cause is that orders are keyed only by their hash, with no secondary index by (makerAsset, takerAsset) pair, so "find counterparties for pair X/Y" cannot be a prefix scan.
Proposed fix
Add a secondary index keyed by the asset pair (and ideally price) so matching iterates only the relevant book side. Larger change; deferred behind the correctness fixes.
Fix-priority scorecard
| SEC | UX | AUTO | YAGNI | DELTA | FIN |
|---|---|---|---|---|---|
| 50 | 40 | 30 | 35 | 25 | 37 |
- Ngôn ngữ chính
- Go
- Star
- 21
- Fork
- 12
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
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 AssetMantle/modules
-
orders: exchange-rate encoding panics on rate>1 and collapses same-rate mirrors to one OrderIDĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
AssetMantle/modules#464 ·
-
Send Asset allows empty assetid in message/restCó thể làm lại được @deepanshutr đã nhận 1139 ngày trước và không có pull request nào đang mở. Đang mở
AssetMantle/modules#426 · 1 người được giao ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
AssetMantle/modules#387 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 30/100
AssetMantle/modules#386 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
AssetMantle/modules#384 ·
Tất cả issue của AssetMantle/modules
Issue tương tự
-
netrc credential source accepts a password with an embedded CR/LF that every other source rejectsĐang mởagent-butler-finding bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
jordansmall/spindrift#6268 ·
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 62/100
Maintainer thường phản hồi trong vòng 7 ngày
-
kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
kmesh-net/kmesh#1979 · 1 bình luận ·
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
caddyserver/caddy#8314 · 1 bình luận ·
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