Conversation
📝 WalkthroughWalkthroughThis pull request adds comprehensive test vectors and data files for Ethereum EIP-7594 FuLu PeerDAS protocol testing. The changes include a README documenting the test suite and numerous YAML data files containing test cases for KZG cell proof verification operations across multiple scenarios. Changes
Estimated Code Review Effort🎯 2 (Simple) | ⏱️ ~15 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request integrates a substantial collection of test fixtures for EIP 7594, laying the groundwork for future PeerDAS support. The added data, primarily in YAML format, covers diverse test cases for KZG proof verification and cell recovery, ensuring robust validation for upcoming protocol changes. The focus is solely on providing essential test infrastructure. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
🧹 Nitpick comments (1)
tests/protocol_ethereum_eip7594_fulu_peerdas/README.md (1)
1-7: Good provenance documentation.The README clearly documents the official Ethereum sources for these test vectors, which is valuable for traceability and future updates.
Consider adding a trailing newline at the end of the file (POSIX convention).
📝 Suggested improvement
- Generator: https://github.com/ethereum/consensus-specs/tree/v1.7.0-alpha.3/tests/core/pyspec/eth_consensus_specs/test/fulu/kzg - Reference audited impl: https://github.com/ethereum/c-kzg-4844/tree/v2.1.7/tests +🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tests/protocol_ethereum_eip7594_fulu_peerdas/README.md` around lines 1 - 7, The README.md for the Ethereum Data Availability Sampling test vectors is missing a trailing newline; edit the README.md (the file containing the "# Ethereum Data Availability Sampling test vectors" header) and ensure the file ends with a single POSIX newline character so the file has a trailing newline at EOF.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/protocol_ethereum_eip7594_fulu_peerdas/README.md`:
- Around line 1-7: The README.md for the Ethereum Data Availability Sampling
test vectors is missing a trailing newline; edit the README.md (the file
containing the "# Ethereum Data Availability Sampling test vectors" header) and
ensure the file ends with a single POSIX newline character so the file has a
trailing newline at EOF.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 1c352991-7818-4198-a2b7-0b382df85f52
📒 Files selected for processing (83)
tests/protocol_ethereum_eip7594_fulu_peerdas/README.mdtests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_case_valid_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_case_valid_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_case_valid_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_case_valid_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_case_valid_4/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_case_valid_5/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_case_valid_6/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_invalid_blob_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_invalid_blob_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_invalid_blob_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells/kzg-mainnet/compute_cells_invalid_blob_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_invalid_blob_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_invalid_blob_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_invalid_blob_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_invalid_blob_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_valid_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_valid_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_valid_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_valid_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_valid_4/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_valid_5/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_cells_and_kzg_proofs/kzg-mainnet/compute_cells_and_kzg_proofs_case_valid_6/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_all_cells/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_duplicate_cells/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_empty/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_many_cells/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_max_cell_indices/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_mixed_commitment_indices/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_multiple_cells_multiple_blobs/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_multiple_cells_single_blob/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_non_sequential_indices/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/compute_verify_cell_kzg_proof_batch_challenge/kzg-mainnet/compute_verify_cell_kzg_proof_batch_challenge_case_single_cell/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_all_cells_are_missing/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_cell_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_cell_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_cell_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_cell_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_cell_index/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_duplicate_cell_index/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_more_cell_indices_than_cells/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_more_cells_than_cell_indices/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_more_cells_than_cells_per_ext_blob/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_more_than_half_missing/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_shuffled_half_missing/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_shuffled_no_missing/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_invalid_shuffled_one_missing/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_valid_half_missing_every_other_cell/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_valid_half_missing_first_half/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_valid_half_missing_second_half/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/recover_cells_and_kzg_proofs/kzg-mainnet/recover_cells_and_kzg_proofs_case_valid_no_missing/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_incorrect_cell/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_incorrect_commitment/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_incorrect_proof/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_cell_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_cell_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_cell_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_cell_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_cell_index/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_commitment_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_commitment_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_commitment_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_commitment_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_missing_cell/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_missing_cell_index/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_missing_commitment/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_missing_proof/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_proof_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_proof_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_proof_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_invalid_proof_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_0/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_2/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_3/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_4/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_5/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_6/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_multiple_blobs/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_not_sorted/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_regression1/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_same_cell_multiple_times/data.yamltests/protocol_ethereum_eip7594_fulu_peerdas/verify_cell_kzg_proof_batch/kzg-mainnet/verify_cell_kzg_proof_batch_case_valid_zero_cells/data.yaml
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive set of EIP 7594 test fixtures, primarily consisting of YAML files containing various test vectors for PeerDAS support. A README.md file has also been added to provide context for these new test vectors. The changes are purely preparatory, adding no new logic or code, which aligns with the PR's stated objective to avoid polluting future main contributions. No issues of medium, high, or critical severity were identified in the added test data or the README file.
This is a purely preparatory PR for PeerDAS support. No logic/code added, only over 22k lines of test vectors to avoid polluting the future main contribution.
Sources:
I explicitly downloaded the latest release which is from v1.6.0-beta0.
Summary by CodeRabbit
Documentation
Tests