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

Include sp1 groth16 circuits in Docker image #89

Open
rootulp opened this issue Jan 24, 2025 · 0 comments
Open

Include sp1 groth16 circuits in Docker image #89

rootulp opened this issue Jan 24, 2025 · 0 comments

Comments

@rootulp
Copy link
Collaborator

rootulp commented Jan 24, 2025

Context

I was working on #67

Problem

Note: I can't get the celestia-prover to generate a proof in Docker. I can only get it to generate a proof if I run it locally. In Docker it times out while downloading the groth16 circuit artifacts:

2025-01-24 10:49:56 [sp1] groth16 circuit artifacts for version v3.0.0 do not exist at /home/prover/.sp1/circuits/groth16/v3.0.0. downloading...
2025-01-24 10:55:17 [sp1] downloaded https://sp1-circuits.s3-us-east-2.amazonaws.com/v3.0.0-groth16.tar.gz to "/home/prover/.sp1/circuits/groth16/v3.0.0"
2025-01-24 10:55:18 thread 'tokio-runtime-worker' panicked at /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/sp1-recursion-gnark-ffi-3.4.0/src/ffi/docker.rs:31:9:
2025-01-24 10:55:18 Failed to run `docker info`. Please ensure that docker is installed and running.
2025-01-24 10:55:18 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Proposal

Download those artifacts and include them in the Docker image

rootulp added a commit that referenced this issue Jan 28, 2025
Closes step two of
#31.

A few changes in this PR, can split them into separate PRs if reviewers
request:
1. Checkout submodules in CI workflows lint and test.
2. Sort makefile commands alphabetically. Add a new `make relay` command
that does step 2.
3. Update README with an important step to apply a diff in
`solidity-ibc-eureka/justfile`. The diff is needed so that the
Tendermint light client on the EVM roll-up supports Groth16 and has the
correct verifier key (from the celestia-prover)
4. Enable debug mode on Reth node (can revert if requested)
5. Add `curl` to the Celestia-prover for debugging purposes (can revert
if requested)
6. Update solidity-ibc-eureka version
7. Modify the prover proto to return hex-encoded verifier keys. This
made it easier to plumb directly into the EVM contract and Tendermint
light client set-up (can revert if requested)
8. Add a line to celestia-prover README to show example usage of `Info`
endpoint
9. Add a debug-txhash script to help debug failed EVM transactions (can
revert if requested)
10. Refactor the `extractDeployedContractAddresses` to utils package so
that it can be used in multiple places
11. Refactor the `transfer` script

## Testing

I can't run the celestia-prover in Docker because
#89 but if
I run it locally, it works:

```
$ make relay
go run testing/demo/pkg/relay/main.go
Extracted deployed contract addresses: utils.ContractAddresses{ERC20:"0xa05915fd6e32a1aa7e67d800164cacb12487142d", Escrow:"0xc4515dd838dd640d6839933b33ff8d19640c1231", IBCStore:"0xf73bd8a7184bec941b3f9ef5e6f6df981e105535", ICS07Tendermint:"0xe53275a1fca119e1c5eeb32e7a72e54835a63936", ICS20Transfer:"0xb1c938f5ba4b3593377f399e12175e8db0c787ff", ICS26Router:"0x48fd1226d797400779bbfaf1706f5fb8da04ae91", ICSCore:"0x7e7ad18adc99b94d4c728fdf13d4de97b926a0d8"}
Getting celestia prover info...
Got celestia prover info. StateTransitionVerifierKey: 0x0081282e1279b92586a3330c1cd83a3f0910299bdc7be90ac1a24b2a0826523bInvoking icsCore.UpdateClient...
Transaction hash: 0x6370b144be660a5d8f798c45fe3f1942735e7a86063dc1834b61013f04de3b11
Block number: 170
Gas used: 289132
Logs: []
recvBlockNumber 170
```
ninabarbakadze pushed a commit that referenced this issue Jan 29, 2025
Closes step two of
#31.

A few changes in this PR, can split them into separate PRs if reviewers
request:
1. Checkout submodules in CI workflows lint and test.
2. Sort makefile commands alphabetically. Add a new `make relay` command
that does step 2.
3. Update README with an important step to apply a diff in
`solidity-ibc-eureka/justfile`. The diff is needed so that the
Tendermint light client on the EVM roll-up supports Groth16 and has the
correct verifier key (from the celestia-prover)
4. Enable debug mode on Reth node (can revert if requested)
5. Add `curl` to the Celestia-prover for debugging purposes (can revert
if requested)
6. Update solidity-ibc-eureka version
7. Modify the prover proto to return hex-encoded verifier keys. This
made it easier to plumb directly into the EVM contract and Tendermint
light client set-up (can revert if requested)
8. Add a line to celestia-prover README to show example usage of `Info`
endpoint
9. Add a debug-txhash script to help debug failed EVM transactions (can
revert if requested)
10. Refactor the `extractDeployedContractAddresses` to utils package so
that it can be used in multiple places
11. Refactor the `transfer` script

I can't run the celestia-prover in Docker because
#89 but if
I run it locally, it works:

```
$ make relay
go run testing/demo/pkg/relay/main.go
Extracted deployed contract addresses: utils.ContractAddresses{ERC20:"0xa05915fd6e32a1aa7e67d800164cacb12487142d", Escrow:"0xc4515dd838dd640d6839933b33ff8d19640c1231", IBCStore:"0xf73bd8a7184bec941b3f9ef5e6f6df981e105535", ICS07Tendermint:"0xe53275a1fca119e1c5eeb32e7a72e54835a63936", ICS20Transfer:"0xb1c938f5ba4b3593377f399e12175e8db0c787ff", ICS26Router:"0x48fd1226d797400779bbfaf1706f5fb8da04ae91", ICSCore:"0x7e7ad18adc99b94d4c728fdf13d4de97b926a0d8"}
Getting celestia prover info...
Got celestia prover info. StateTransitionVerifierKey: 0x0081282e1279b92586a3330c1cd83a3f0910299bdc7be90ac1a24b2a0826523bInvoking icsCore.UpdateClient...
Transaction hash: 0x6370b144be660a5d8f798c45fe3f1942735e7a86063dc1834b61013f04de3b11
Block number: 170
Gas used: 289132
Logs: []
recvBlockNumber 170
```
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

No branches or pull requests

1 participant