Skip to content

🐛 fix: BloomFilter now uses Keccak-256 per Yellow Paper#265

Merged
roninjin10 merged 1 commit intomainfrom
fix/issue-110-bloom-filter
Jan 4, 2026
Merged

🐛 fix: BloomFilter now uses Keccak-256 per Yellow Paper#265
roninjin10 merged 1 commit intomainfrom
fix/issue-110-bloom-filter

Conversation

@roninjin10
Copy link
Contributor

Summary

Test plan

  • Exact bit position verification
  • ERC-20 Transfer event compatibility
  • No false negatives guarantee
  • All 95 tests pass

🤖 Generated with Claude Code

BloomFilter was using a simple multiplicative hash function instead of
Ethereum's specified algorithm. Per Yellow Paper m(x,i) = KEC(x)[i,i+1] mod 2048,
bloom filter bit positions must be derived from Keccak-256 hash bytes.

This fix:
- Updates hash.js to use Keccak-256 and extract bit positions from byte pairs
- Adds hashFromKeccak() for efficiency when computing multiple seeds
- Updates add.js and contains.js to compute Keccak once per item
- Adds Yellow Paper compliance tests with known bit position verification

Fixes #110

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@vercel
Copy link

vercel bot commented Jan 4, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
dist Error Error Jan 4, 2026 8:29am
voltaire Error Error Jan 4, 2026 8:29am

Copy link
Contributor Author

@roninjin10 roninjin10 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review summary for PR #265 — 🐛 fix: BloomFilter now uses Keccak-256 per Yellow Paper\n\nTouched areas: BloomFilter | Files changed: 5 (+172/-15)\n\n- Tests: yes\n- Types & API: yes\n- Docs: ensure behavior is documented where user-facing.\n- Performance: consider micro-allocations in tight loops.\n\nFocus points:\n - Validate Keccak-256 endianness and 3-bit mapping per Yellow Paper.\n - Add fixture tests vs known Ethereum logs (positive/negative).\n\nOutcome: Comment-only review; no blocking issues spotted. Please consider the above suggestions.\n

@roninjin10 roninjin10 merged commit 58cfdc8 into main Jan 4, 2026
20 of 49 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Filter.matches() may have incorrect bloom filter check

1 participant