diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..c03109c --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# CODEOWNERS: https://help.github.com/articles/about-codeowners/ + +* @srdtrk diff --git a/LICENSE-MIT b/LICENSE-MIT index 626685c..e37cd7a 100644 --- a/LICENSE-MIT +++ b/LICENSE-MIT @@ -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 @@ -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. \ No newline at end of file +THE SOFTWARE. diff --git a/README.md b/README.md index 15b82d8..e2be599 100644 --- a/README.md +++ b/README.md @@ -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) @@ -22,11 +24,9 @@ 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. @@ -34,6 +34,17 @@ This project is structured as a cargo workspace with the following directories: * 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/) diff --git a/e2e/interchaintestv8/README.md b/e2e/interchaintestv8/README.md index 463ce79..6152022 100644 --- a/e2e/interchaintestv8/README.md +++ b/e2e/interchaintestv8/README.md @@ -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 ```