Skip to content

feat: bind BLS pop to chainId and registrantAddress - #201

Merged
ItsANameToo merged 12 commits into
feat/mainsailfrom
feat/bls-pop-registrant
Oct 5, 2026
Merged

ItsANameToo merged 12 commits into
feat/mainsailfrom
feat/bls-pop-registrant

Conversation

@shahin-hq

@shahin-hq shahin-hq commented Oct 2, 2026 •

Copy link
Copy Markdown

Closes: https://app.clickup.com/t/2570579/86e3gp5ck

Summary

Updates BLS proof of possession to match Mainsail's new format (ArkEcosystem/mainsail#1506). Proofs are now tied to a chain and a registering address, so a key/proof pair can't be copied from the mempool or from another network and front-run.

  • DST is now MAINSAIL_BLS_POP_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_
  • The message is abi.encodePacked(chainId, registrantAddress, pk), with chainId taken from the configured network
  • validatorPassphrase() is renamed to validatorProof($passphrase, $registrantAddress), which is a breaking change
  • buildProofOfPossession(), fromMnemonic() and the TransactionEncoder validator methods now take $registrantAddress. It must be the address that signs the transaction.
  • Fixtures were regenerated, and the tests reproduce Mainsail's pinned vector byte for byte

Checklist

  • Documentation (if necessary)
  • Tests (if necessary)
  • Ready to be merged

@shahin-hq
shahin-hq changed the base branch from develop to feat/mainsail October 2, 2026 11:16
@shahin-hq
shahin-hq marked this pull request as ready for review October 2, 2026 11:32
@ItsANameToo
ItsANameToo merged commit e0ef572 into feat/mainsail Oct 5, 2026
2 checks passed
@ItsANameToo
ItsANameToo deleted the feat/bls-pop-registrant branch October 5, 2026 14:33
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.

2 participants