Redistribution commit/reveal fall back to a 500,000 gas floor that no longer fits under Glamsterdam (EIP-8038)
Maintainer thường phản hồi trong vòng 2 ngày
@sbackend123 đang làm issue này rồi.
Từ ngày 8/10/2026.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 85/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ệ
- go
- Lĩnh vực
- blockchain
Hướng nghiên cứu
Bắt đầu tại pkg/storageincentives/redistribution/redistribution.go ở các dòng 114, 137 và 160, nơi MinEstimatedGasLimit được đặt thành 500,000. Cũng kiểm tra pkg/transaction/transaction.go, nơi prepareTransaction sử dụng ngưỡng này. Tăng giới hạn cho Commit và Reveal lên ít nhất 1,000,000 để bao quát chi phí gas của Glamsterdam, sau đó chạy các bài kiểm thử để xác minh.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Context
Bee master at ba1238d913d75d5a1709e990d712e90087130115 (code reviewed, not run as a node). Network: Sepolia testnet, where Glamsterdam has been active since 2026-10-06 13:53:36 UTC. Measured from recorded Sepolia transactions and a public Sepolia RPC (geth). Related: #5650 (chequebook deployment, same gas repricing, different code path).
Swarm mainnet runs on Gnosis Chain, not Ethereum mainnet. So mainnet impact depends on Gnosis Chain adopting EIP-8037/8038; until then this affects testnet nodes only.
Summary
pkg/storageincentives/redistribution/redistribution.go sets MinEstimatedGasLimit: 500_000 for Claim (line 114), Commit (line 137) and Reveal (line 160). In pkg/transaction/transaction.go, prepareTransaction uses that value as the fallback when eth_estimateGas fails, and as the floor when the estimate plus 33% is lower. Before Glamsterdam the costliest reveal used 260,121 gas, so the floor always covered it. Under Glamsterdam the same calls can need about 740,000 (reveal) and 525,000 (commit), so a node that ends up on the 500,000 floor runs out of gas.
Expected behavior
Commit and reveal transactions get a gas limit that covers the call at execution.
Actual behavior
On the Sepolia Redistribution contract 0x5b718e36f5ce2f2f7e25a397040436ce6af3e89e, some nodes send commit and reveal at exactly 500,000 and run out of gas, while the same calls from other nodes succeed with higher estimated limits:
| call | before the fork (~72 h) | after the fork (~30 h) |
|---|---|---|
reveal at 500,000 |
949 sent, 7 failed, max gas used 260,121 | 74 sent, 38 failed |
reveal, estimated limits (~985,000) |
succeed, using 733,814 to 738,786 | |
commit at 500,000 |
958 sent, 1 failed, max gas used 231,884 | 68 sent, 35 failed |
commit, estimated limits (~684,000) |
succeed, using 509,183 to 523,461 |
Example: reveal 0x26294e6d7a7afe4088b37cb774198b81300b9ae883f46375b9a481d589170b6e (block 11864703) used all 500,000 and failed out of gas. eth_estimateGas for the same call at the parent block returns 243,665; plus 33% that is below 500,000, so the node used the floor. At execution the call took the more expensive path.
Why the call got more expensive: the costliest pre-fork reveal (0x072c5d03d68ef5ca8a01cdb8ba2af73011301f69b8e329e3ae0b3a9ce9c6ff8e, 260,121 gas) makes 57 SSTOREs, all to existing slots. EIP-8038 raises an existing-slot update from 2,900 to 10,100 gas (5,000 to 12,100 cold), about 7,100 more per write.
Steps to reproduce
- On a Sepolia node,
debug_traceTransaction 0x26294e6d7a7afe4088b37cb774198b81300b9ae883f46375b9a481d589170b6e '{"tracer":"callTracer"}': the top call to the Redistribution contract ends inout of gasat 500,000. eth_estimateGaswith the samefrom,toand input at block 11864702: 243,665.- Compare with any successful post-fork reveal from a node that sent a higher estimated limit (gas used 733,814 to 738,786).
debug_traceTransaction 0x072c5d03d68ef5ca8a01cdb8ba2af73011301f69b8e329e3ae0b3a9ce9c6ff8ewith the default struct logger plusprestateTracer: 57 SSTOREs, none to a new slot.
Possible solution
Raise MinEstimatedGasLimit for Commit and Reveal to at least 1,000,000, above the observed 738,786, or make it configurable. The 33% buffer on successful estimates can stay; the floor is what fails when the estimate comes back from a cheaper path or fails.
Claim uses the same floor, but I did not measure it here. #5473 notes a claim costs roughly 1.5 times a commit or reveal, so its floor should come from a measurement under Glamsterdam rather than this number.
Related: open PR #5473 lowers MinEstimatedGasLimit from 500,000 to 250,000. Under Glamsterdam that floor would cover even fewer commits and reveals (reveal needs about 740,000, commit about 525,000), so the two changes should be considered together.
AI Disclosure
- This issue contains suggestions and text generated by an LLM.
- I have reviewed the AI generated content thoroughly.
- I possess the technical expertise to responsibly review the AI generated content mentioned in this issue.
- Ngôn ngữ chính
- Go
- Star
- 1.5k
- Fork
- 390
- Merge trung bình
- 2 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 24
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 ethersphere/bee
-
Chequebook deployment uses a fixed 175,000 gas limit; it needs about 630,000 under Glamsterdam (live on Sepolia since 2026-10-06)Có thể đã có người làm @sbackend123 đã nhận 17 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
ethersphere/bee#5650 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
ethersphere/bee#5666 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Add a transaction inbox for outbound chain transactionsCó thể đã có người làm @sbackend123 đã nhận 11 ngày trước. Đang mởseen
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
ethersphere/bee#5660 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
ethersphere/bee#5659 · 6 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
accepted seen
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 40/100
ethersphere/bee#5648 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của ethersphere/bee
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
github/github-mcp-server#3581 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
agent-review-finding chore
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
jordansmall/spindrift#6033 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Replace UUID implementationĐang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
hyperledger/fabric-x-common#230 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
About.md no longer usedĐang mởbug
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 65/100
open-wanderer/wanderer#1443 · 3 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 75/100
Maintainer thường phản hồi trong vòng 1 ngày