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

docs: updated README.md and LICENSE #63

Merged
merged 5 commits into from
Jul 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# CODEOWNERS: https://help.github.com/articles/about-codeowners/

* @srdtrk
4 changes: 2 additions & 2 deletions LICENSE-MIT
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2024 Succinct Labs
Copyright (c) 2024 COSMOS

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
THE SOFTWARE.
21 changes: 16 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ This is a WIP example of an [ICS-07](https://github.com/cosmos/ibc/tree/main/spe
- [SP1 ICS07-Tendermint IBC Light Client](#sp1-ics07-tendermint-ibc-light-client)
- [Table of Contents](#table-of-contents)
- [Overview](#overview)
- [Project Structure](#project-structure)
- [Programs](#programs)
- [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 @@ -22,18 +24,27 @@ This is a WIP example of an [ICS-07](https://github.com/cosmos/ibc/tree/main/spe

## Overview

This, `sp1-ics07-tendermint`, is an example of a ZK IBC tendermint light client on Ethereum. It's goal is to demonstrate how to use SP1 to generate proofs for:
- Updating the light client state (including historical headers) - implemented in `programs/update-client`
- Verify membership (for IBC) - implemented in `programs/membership`
- Verify non-membership (for IBC packets) - in `programs/membership`
- Misbehaviour detection (freezing the light client) - not implemented yet
`sp1-ics07-tendermint` is an example ZK IBC tendermint light client on Ethereum.

### Project Structure

This project is structured as a cargo workspace with the following directories:
* The `contracts` directory contains a Solidity contract that implements the ICS-07 Tendermint light client which can verify SP1 proofs. This is a [`foundry`](https://github.com/foundry-rs/foundry) project, and not a part of the cargo workspace.
* The `operator` directory contains a Rust program that interacts with the Solidity contract. It fetches the latest header (although it could also fetch historical headers) and generates a proof of the update using `ibc-rs`, and then updates the contract with the proof. It also contains several scripts to generate fixtures and proofs for testing.
* The `programs` directory contains the SP1 programs that are compiled to RiscV and run on the SP1's zkVM.
* The `packages` directory contains a shared rust library that is used by the `operator` and `programs` directories.

### Programs

This project contains the following 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. | ⏳ |

## Requirements

- [Rust](https://rustup.rs/)
Expand Down
4 changes: 2 additions & 2 deletions e2e/interchaintestv8/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ To run the tests locally, run the following commands from this directory:
go test -v . -run=$TEST_SUITE_FN/$TEST_NAME
```

where `$TEST_NAME` is one of the test names of the `$TEST_SUITE_FN`. For example, to run the `TestBasic` test, you would run:
where `$TEST_NAME` is one of the test names of the `$TEST_SUITE_FN`. For example, to run the `TestDeploy` test, you would run:

```text
go test -v . -run=TestWithBasicTestSuite/TestBasic
go test -v . -run=TestWithSP1ICS07TendermintTestSuite/TestDeploy
```
Loading