Conversation
The CI was failing because the workflow was still using bal@v3.0.1 which doesn't exist. Updated to bal@v5.1.0 and changed the fixture filename from fixtures_develop.tar.gz to fixtures_bal.tar.gz to match the Amsterdam fork update.
🤖 Kimi Code ReviewReview SummaryThis PR introduces Amsterdam fork support and related testing infrastructure. Here are the key findings: Critical Issues
Security Concerns
Performance & Correctness
Minor Issues
Recommendations
The PR appears to be well-structured overall, with good separation of concerns between the testing infrastructure and core logic changes. Automated review by Kimi (Moonshot AI) · custom prompt |
🤖 Codex Code ReviewFindings (ordered by severity)
Notes / Minor
If you want, I can check upstream error handling for Automated review by OpenAI Codex · custom prompt |
🤖 Claude Code ReviewNow I have a comprehensive understanding of the changes. Let me compile my review. PR Review: bal-devnet-2 Tracking Branch (Amsterdam Fork Support)OverviewThis PR adds Amsterdam fork support and updates Hive testing infrastructure. The changes span CI configuration, EVM execution logic (EIP-7928 BAL tracking), and documentation. This is a draft tracking branch with 651 additions and 92 deletions across 14 files. Critical Issues1. Type Coercion Safety Issue in
|
Lines of code reportTotal lines added: Detailed view |
Benchmark Results ComparisonNo significant difference was registered for any benchmark run. Detailed ResultsBenchmark Results: BubbleSort
Benchmark Results: ERC20Approval
Benchmark Results: ERC20Mint
Benchmark Results: ERC20Transfer
Benchmark Results: Factorial
Benchmark Results: FactorialRecursive
Benchmark Results: Fibonacci
Benchmark Results: FibonacciRecursive
Benchmark Results: ManyHashes
Benchmark Results: MstoreBench
Benchmark Results: Push
Benchmark Results: SstoreBench_no_opt
|
…lidation compute_hash() sorts the BAL by address before hashing (per EIP-7928), which is correct for locally-computed BALs but wrong for BALs received via Engine API: sorting "fixes" corrupted ordering, producing a different hash and causing block hash mismatches. Hash the raw RLP bytes from the JSON payload before deserialization instead, preserving the exact encoding for accurate validation.
The pre-refund gas check (EIP-7778) was using a different error message
("Block gas used overflow") for Amsterdam+ vs pre-Amsterdam ("Gas
allowance exceeded"), but both are the same validation: transaction
gas doesn't fit in the block. Use the standard message consistently.
…rdam+" This reverts commit 526435e.
Use tx.gas_limit() > block.gas_limit to decide the error message instead of the record_bal flag. When a single tx exceeds the block gas limit, return "Gas allowance exceeded" (TransactionException). When accumulated pre-refund gas overflows, return "Block gas used overflow" (BlockException). This matches EELS test expectations for both cases.
…ock gas overflow Track the sum of tx gas limits separately from block_gas_used (which includes EIP-7623 calldata floor inflation). When accumulated gas exceeds the block gas limit, check if the gas limits alone would overflow (GAS_ALLOWANCE_EXCEEDED) or only the inflated block_gas_used overflows (GAS_USED_OVERFLOW).
Summary
Fixes for running ethrex in bal-devnet-2 (Gloas/Amsterdam fork):
engine_getPayloadV6+engine_newPayloadV5capabilitygas_spentfor receiptcumulative_gas_used, pre-refundgas_usedfor block gas accounting. Block re-execution already handled this correctly.engine_getClientVersionV1commit hash (use full SHA from build.rs)--syncmode=fullworkaroundTest plan
make -C tooling/ef_tests/blockchain testpasses (6158/6158)