Repository navigation
refactor: update PoP to include registrantAddress and chainId - #210
Merged
Merged
Conversation
Bind the validator BLS proof of possession to the registering account and the configured network so it can't be replayed by another sender or on another chain. - DST is now MAINSAIL_BLS_POP_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_ - message = abi.encodePacked(uint256 chainId, address registrantAddress, bytes pk) - chainId is read from Network.get() - registrantAddress must pass EIP-55 checksum validation, otherwise InvalidProofOfPossessionException is thrown - validatorPassphrase(passphrase) is renamed to validatorProof(passphrase, registrantAddress) on the registration and update builders; TransactionEncoder.validatorRegistration/validatorUpdate take registrantAddress too - tests cover Mainsail's reference vector (chainId 10_000), binding, address validation, and the regenerated bls-keys.json dataset; builder fixtures are regenerated Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shahin-hq
marked this pull request as ready for review
October 6, 2026 10:59
ItsANameToo
approved these changes
Oct 9, 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.
Closes: https://app.clickup.com/t/2570579/86e3kj5jt
Summary
Validator proofs of possession are now tied to the account that registers the validator and to the network it's registered on. Before this, a proof could be copied and reused by another account or on another chain.
Changes
validatorPassphrase(passphrase)is renamed tovalidatorProof(passphrase, registrantAddress)on the validator registration and update builders.TransactionEncoder.validatorRegistrationandvalidatorUpdatealso take the registrant address.Summary
Checklist