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

Detect light client attacks and report them to both the chain and the RPC node #3224

Merged
merged 45 commits into from
May 19, 2023

Conversation

romac
Copy link
Member

@romac romac commented Apr 4, 2023

Closes: #2772

Description


PR author checklist:

  • Added changelog entry, using unclog.
  • Added tests: integration (for Hermes) or unit/mock tests (for modules).
  • Linked to GitHub issue.
  • Updated code comments and documentation (e.g., docs/).
  • Tagged one reviewer who will be the one responsible for shepherding this PR.

Reviewer checklist:

  • Reviewed Files changed in the GitHub PR explorer.
  • Manually tested (in case integration/unit/mock tests are absent).

@romac romac requested a review from ancazamfir April 4, 2023 13:28
@romac romac force-pushed the romac/attack-detector branch from dd44561 to 2893270 Compare April 4, 2023 13:35
@romac romac force-pushed the romac/attack-detector branch from 2893270 to f7093e8 Compare April 4, 2023 13:36
Copy link
Collaborator

@ancazamfir ancazamfir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work @romac!!! Did a fist pass in parallel with the tendermint-rs changes.

crates/relayer/src/light_client/tendermint.rs Outdated Show resolved Hide resolved
.github/workflows/misbehaviour.yml Show resolved Hide resolved
crates/relayer/src/light_client/tendermint.rs Show resolved Hide resolved
crates/relayer/src/light_client/tendermint.rs Outdated Show resolved Hide resolved
crates/relayer/src/light_client/tendermint.rs Outdated Show resolved Hide resolved
@romac romac marked this pull request as ready for review May 5, 2023 08:36
Copy link
Collaborator

@ancazamfir ancazamfir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing job @romac!

@ancazamfir ancazamfir mentioned this pull request May 19, 2023
8 tasks
@ancazamfir ancazamfir merged commit 3277a0b into master May 19, 2023
@ancazamfir ancazamfir deleted the romac/attack-detector branch May 19, 2023 10:08
pratikbin pushed a commit to pratikbin/hermes that referenced this pull request May 24, 2023
… RPC node (informalsystems#3224)

* Prepare for generating light client attacks

* Remove redundant message

* Improve script

* Use tendermint-rs with new misbehavior detector

* Small refactor in client worker

* Cleanup and notes in ForeignClient

* Some more cleanup

* Call to the new attack detector

* Build evidence to report to the chain

* Fix client updates

* It's working, I think

* Move create_fork.sh to scripts folder

* Use tendermint-rs branch

* Use new light client detector crate

* Remove explicit dependency on `tendermint-light-client-verifier`

* Update to latest detector

* Add integration test for misbehavior detection

* Fix clippy warnings

* Print Hermes logs

* Update to latest detector

* Update to latest detector

* Remove unused `headers_compatible`

* Remove unused import

* Get current time from chain's sync status

* Compute proper supporting headers

* Infallible height conversions

* Refactor to include trusted and target headers in supporting headers but omit them from minimal set

* Always omit target header from supporting set

* Use trusted height and not height of last supporting header

* Use target header of new round of verification to get trusted height and validators

* Update tendermint-rs to v0.31.1

* Update `ibc-proto` to v0.30.0

* Compilation fixes after detector update

* Use witness trace computed by the detector instead of verifying again (informalsystems#3277)

* Fix merge issues

* Update to latest detector

* Ensure trusted validator set matches the fetched one

* Update to latest detector

* Update to tendermint-rs v0.32.0 and `ibc-proto` v0.31.0-alpha.2

* Add changelog entry

---------

Signed-off-by: Romain Ruetschi <romain@informal.systems>
Co-authored-by: Anca Zamfir <zamfiranca@gmail.com>
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.

Submit the light client attack evidence to the reference chain
2 participants