Skip to content
This repository has been archived by the owner on Nov 29, 2024. It is now read-only.

Commit

Permalink
docs: updated README.md (#109)
Browse files Browse the repository at this point in the history
* docs: updated README

* docs: updated README more

* docs: improve command
  • Loading branch information
srdtrk authored Oct 4, 2024
1 parent 0c68154 commit ed80376
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
21 changes: 17 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
[license]: https://opensource.org/licenses/MIT
[license-badge]: https://img.shields.io/badge/License-MIT-blue.svg

This is a WIP example of an [ICS-07](https://github.com/cosmos/ibc/tree/main/spec/client/ics-007-tendermint-client) IBC light client on Ethereum powered by [SP1](https://github.com/succinctlabs/sp1) and [`ibc-rs`](https://github.com/cosmos/ibc-rs).
This is an [ICS-07](https://github.com/cosmos/ibc/tree/main/spec/client/ics-007-tendermint-client) IBC light client on Ethereum powered by [SP1](https://github.com/succinctlabs/sp1) and [`ibc-rs`](https://github.com/cosmos/ibc-rs).

![Light Mode Diagram](./sp1-ics07-tendermint-light.svg#gh-light-mode-only)![Dark Mode Diagram](./sp1-ics07-tendermint-dark.svg#gh-dark-mode-only)

Expand All @@ -27,6 +27,7 @@ This is a WIP example of an [ICS-07](https://github.com/cosmos/ibc/tree/main/spe
- [Overview](#overview)
- [Project Structure](#project-structure)
- [Programs](#programs)
- [Cloning the Repository](#cloning-the-repository)
- [Requirements](#requirements)
- [Build the programs](#build-the-programs)
- [Run ICS-07 Tendermint Light Client End to End](#run-ics-07-tendermint-light-client-end-to-end)
Expand All @@ -38,7 +39,12 @@ This is a WIP example of an [ICS-07](https://github.com/cosmos/ibc/tree/main/spe

## Overview

`sp1-ics07-tendermint` is an example ZK IBC tendermint light client on Ethereum.
`sp1-ics07-tendermint` is a ZK IBC tendermint light client on Ethereum that can:

- Update the client with new consensus states
- Verify the membership of any key-value pair in the counterparty's state at a given height.
- Verify the non-membership of any key in the counterparty's state at a given height.
- Detect misbehaviour in the counterparty's consensus (e.g. double signing, non-monotonic heights).

### Project Structure

Expand All @@ -50,15 +56,22 @@ This project is structured as a cargo workspace with the following directories:

### Programs

This project contains the following programs
This project contains the following SP1 programs

| **Programs** | **Description** | **Status** |
|:-------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------:|
| `update-client` | Once the initial client state and consensus state are submitted, future consensus states can be added to the client by submitting IBC Headers. These headers contain all necessary information to run the Comet BFT Light Client protocol. Also supports partial misbehavior check. ||
| `membership` | As consensus states are added to the client, they can be used for proof verification by relayers wishing to prove packet flow messages against a particular height on the counterparty. This uses the `verify_membership` and `verify_non_membership` methods on the tendermint client. ||
| `uc-and-membership` | This is a program that combines `update-client` and `membership` to update the client, and prove membership of packet flow messages against the new consensus state. ||
| `misbehaviour` | In case, the malicious subset of the validators exceeds the trust level of the client; then the client can be deceived into accepting invalid blocks and the connection is no longer secure. The tendermint client has some mitigations in place to prevent this. ||
| `upgrade-client` | The chain which this light client is tracking can elect to write a special pre-determined key in state to allow the light client to update its client state (e.g. with a new chain ID or revision). ||

## Cloning the Repository

This repository contains large files stored using Git LFS. These are only needed for the GitHub workflows and are not needed for local development/testing until [succinctlabs/sp1#1565](https://github.com/succinctlabs/sp1/issues/1565) is resolved. You can clone the repository without the large files by running the following command:

```sh
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/cosmos/sp1-ics07-tendermint
```

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion e2e/interchaintestv8/operator/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ type GenesisFixture struct {
UpdateClientVkey string `json:"updateClientVkey"`
MembershipVkey string `json:"membershipVkey"`
UcAndMembershipVkey string `json:"ucAndMembershipVkey"`
MisbehaviourVKey string `json:"misbehaviourVKey"`
MisbehaviourVKey string `json:"misbehaviourVkey"`
}

// membershipFixture is a struct that contains the membership proof and proof height
Expand Down

0 comments on commit ed80376

Please sign in to comment.