feat: implement BLS-to-Execution withdrawal credentials change pipeline#85
Merged
JamesEjembi merged 5 commits intoJun 25, 2026
Conversation
- Add complete multi-sig governance workflow for withdrawal credential changes - Implement SSZ encoding and message construction per Ethereum consensus spec - Add tamper-evident audit logging with SHA-256 hash chain - Create IndexedDB persistence layer for durable storage - Implement 6-state request lifecycle management (Draft -> Confirmed) - Add multi-step wizard UI component for user workflow - Support concurrent requests for up to 50 validators - Implement 7-day auto-expiry for pending requests - Add comprehensive test suite (57 tests, all passing) - Include React hooks and Zustand store for state management - Add validator settings page integration Technical details: - BLSToExecutionChange message format: 76 bytes (validator_index + from_bls_pubkey + to_execution_address) - Configurable N-of-M governance approval threshold - ECDSA signatures over SHA-256 hash of SSZ-encoded messages - Complete audit trail with hash chain integrity verification - Type-safe TypeScript implementation throughout Files added: - 8 core implementation files - 3 test files (19 + 17 + 21 tests) - 2 documentation files - 1 integration page - Updated vitest config for proper path resolution
Contributor
|
@pauljuliet9900-netizen ci failed |
added 4 commits
June 25, 2026 10:08
- Remove unused requestId variable in validators settings page - Fix React effect cascading render warning in WithdrawalChangeWizard by using useRef and setTimeout to defer state update - Remove unused vi import from governanceService tests All tests passing (57/57) and linting clean
- Fix import paths to use @ alias without /src prefix - All 88 unit tests now passing
- Comprehensive feature implementation summary - Pull request template with all details - Testing evidence and verification checklist - Ready for PR creation
- Fix useExpiryCleanup to properly use React useEffect - Add useEffect import from react - Fix crypto.subtle.digest type compatibility with BufferSource cast - All 88 tests passing, lint clean, production build successful
JamesEjembi
approved these changes
Jun 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Technical details:
Files added:
closes #54