Luganodes recovery on mainnet at electra1 fork#2822
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2822 +/- ##
==========================================
- Coverage 60.75% 60.64% -0.12%
==========================================
Files 354 354
Lines 16652 16673 +21
==========================================
- Hits 10117 10111 -6
- Misses 5747 5773 +26
- Partials 788 789 +1
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull Request Overview
This PR introduces automated recovery for Luganode validators by injecting a hardcoded deposit during the Electra1 fork on mainnet.
- Inserted a new
processElectra1Fixeshook into the fork processing flow - Added
processLuganodesRecoveryto create a one-time BLS deposit for Luganode validators - Defined constants and credentials for the hardcoded deposit in a new file
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| state-transition/core/state_processor_forks.go | Calls processElectra1Fixes before logging the Electra1 fork |
| state-transition/core/state_processor_fixes.go | Implements fork fixes including Luganode deposit recovery |
Comments suppressed due to low confidence (2)
state-transition/core/state_processor_fixes.go:55
- This new recovery logic should be covered by unit tests to ensure the deposit is only added once and errors are handled correctly.
func (sp *StateProcessor) processLuganodesRecovery(st *state.StateDB) error {
state-transition/core/state_processor_fixes.go:41
- There's a TODO placeholder for withdrawal credentials. Ensure this is updated to the correct value before release to avoid injecting invalid credentials.
var fixCredentials = ctypes.WithdrawalCredentials{0x00} // TODO: update this to a correct value
960820f to
3c2d955
Compare
| forkChainID = uint64(80094) // avoid import cycle | ||
| luganodesPubKey = "0xafd0ad061f698eae0d483098948e26e254f4b7089244bda897895257c668196ffd5e2ddf458fdf8bcea295b7d47a5b37" | ||
| luganodesCreds = "0x010000000000000000000000b0c615224a053236ac7d1c239f6c1b5fbf8f0617" | ||
| luganodesAmount = 901_393_690_000_000 * params.Wei // 901_393.69 Gwei |
There was a problem hiding this comment.
Did the math on my side and this value looks correct
| const ( | ||
| forkChainID = uint64(80094) // avoid import cycle | ||
| luganodesPubKey = "0xafd0ad061f698eae0d483098948e26e254f4b7089244bda897895257c668196ffd5e2ddf458fdf8bcea295b7d47a5b37" | ||
| luganodesCreds = "0x010000000000000000000000b0c615224a053236ac7d1c239f6c1b5fbf8f0617" |
There was a problem hiding this comment.
How can we validate the credentials?
There was a problem hiding this comment.
@rezbera we could ask them to verify their comet credentials.
rezzmah
left a comment
There was a problem hiding this comment.
lgtm pending someone tripple checking the credentials
Co-authored-by: abear <abear@berachain.com>
See proposal in https://forum.berachain.com/t/validator-state-recovery-following-deposit-signature-mismatch-incident/196