informalsystems / informalsystems/interchain

ICS evidence handling

Open
#6 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
No language data
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

cc @jtremback @mpoke @romac @sainoe @MSalopek @josef-widder
Details of the proposal (work in progress) can be found [here](https://docs.google.com/document/d/1fe1uSJl1ZIYWXoME3Yf4Aodvz7V597Ric875JH-rigM/edit?usp=sharing).

What is required:
- [ ] ICS: Create test scripts/ CI that spawn provider and consumer chains and perform the double voting and light client attacks.
- [x] Manually create evidence for
- [x] [Light client attacks](https://gist.github.com/ancazamfir/5d7a055be94067119379c0faef0a321e)
- [x] [Double voting](https://gist.github.com/ancazamfir/c740be7bbfd3a4c15403b919efaecc3a)
- [ ] Create test scripts/CI for
- [x] Light client attacks
- [ ] Double voting
- [ ] ICS: Define two new messages, let's call them `MsgIcsMisbehaviourLightClient` and `MsgMisbehaviourDuplicateVoting`. Work together with ibc-go team. Involve informal protocol team.
- [x] ICS: Handling of `MsgIcsMisbehaviourLightClient`
- [x] for CheckTx: Implement `validateBasic()` in a similar way done [here](https://github.com/cosmos/ibc-go/blob/8c7e1b9bd8ccd85dd2c5b4e227d35c2ac2874ade/modules/light-clients/07-tendermint/misbehaviour.go#L46) or just call this function
- [x] for DeliverTx:
- [x] Implement `CheckMisbehaviourAndUpdateState()` in a similar way done [here](https://github.com/cosmos/ibc-go/blob/ecb845d5e43f53decf48f8ed88c7847a9a4375cb/modules/core/02-client/keeper/client.go#L192) or just call this function. Note: it is important to freeze the client before next step.
- [x] Retrieve the byzantine validators like it is done in [comet light client](https://github.com/cometbft/cometbft/blob/9d957b9bc9f1533fb25a92918003b249c4cfc075/light/detector.go#L408)
- [x] For each byzantine validator take action (slash, jail, etc)

- [ ] ICS: Handling of `MsgIcsMisbehaviourDoubleVote`

- [ ] IBC/ Hermes: Create an evidence relaying worker or separate agent that extracts evidence from Comet blocks on consumer chain and submits the `MsgMisbehaviour...` messages to the provider (see [tracking issue](https://github.com/informalsystems/hermes/issues/3175)).
- [ ] Temporary (PoC): Use `block` or `commit` RPC to check evidence at give height
- [ ] Ideally: Use new evidence notification from Comet or new RPC that checks for presence of evidence (see comet [issue](https://github.com/cometbft/cometbft/issues/537))
- [ ] Nice to have: check that the SDK evidence module stored the evidence and alert otherwise

- [ ] ICS: Ideally we move the ICS dependency to an official cosmos-sdk version, e.g. v0.47.x
~~- [ ] ICS: Don't allow validators to use the same consensus key on multiple chains~~

- [ ] Operations:
- [ ] Ensure light client agent runs with at least one consumer witness node different than the primary one
- [ ] Ensure hermes/evidence relayer runs for each consumer client

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.