Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ER::domain_block_hash #1889

Closed
Tracked by #1706
vedhavyas opened this issue Aug 28, 2023 · 0 comments · Fixed by #2125
Closed
Tracked by #1706

ER::domain_block_hash #1889

vedhavyas opened this issue Aug 28, 2023 · 0 comments · Fixed by #2125
Assignees

Comments

@vedhavyas
Copy link
Contributor

vedhavyas commented Aug 28, 2023

Detect if the external ER has a different domain_block_hash field, if so the operator will need to construct a fraud proof that includes all components necessary to construct the domain block header and data that prove the integrity of these components:

  • ER, the targeted invalid ER, and storage proof that proves this ER is indeed included in the consensus chain state
  • parent_er, and storage proof that proves this parent_er is indeed included in the consensus chain state
  • digest, and storage proof of the pallet_system::Digest storage item of the domain chain

Verification steps:

  • Verify the ER storage proof with the consensus chain state root
  • Verify the parent_er storage proof with the consensus chain state root
  • Verify ER::parent_domain_block_receipt_hash == parent_er.hash()
  • Verify the digest storage with ER::final_state_root
  • Construct the expected_domain_header with:
Header::new(ER::domain_block_number, ER::domain_block_extrinsic_root, ER::final_state_root, parent_er.domain_block_hash, digest)
  • Verify that expected_domain_header.hash() != ER::domain_block_hash

Estimation: 2 days

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

3 participants