Skip to content

Use CeloCanoeVerifierAddressFetcher instead of CanoeVerifierAddressFetcherDeployedByEigenLabs#106

Open
seolaoh wants to merge 10 commits intodevelopfrom
seolaoh/use-celo-router-addr
Open

Use CeloCanoeVerifierAddressFetcher instead of CanoeVerifierAddressFetcherDeployedByEigenLabs#106
seolaoh wants to merge 10 commits intodevelopfrom
seolaoh/use-celo-router-addr

Conversation

@seolaoh
Copy link
Collaborator

@seolaoh seolaoh commented Jan 29, 2026

  • Complete updating elfs (eigenda-range-elf-embedded, aggregation-elf), while generating eigenda-range-elf-embedded, got an error
    cd programs/range/eigenda && cargo prove build --output-directory ../../../elf --elf-name eigenda-range-elf-embedded --docker --tag v5.2.4 --features embedded && cd ../../aggregation && cargo prove build --output-directory ../../elf --elf-name aggregation-elf --docker --tag v5.2.4

@ezdac
Copy link

ezdac commented Feb 4, 2026

I finally figured out what the issue was with ELF compilation:

We put the CeloCanoeVerifierAddressFetcher in celo-kona's celo-host crate and made the range-eigenda depend on it.
celo-host's dependency tree is quite large, thus we might not want this as a dependency in range-eigenda anyways.

Now the actual elf compilation issue was:

  • blst was added to range-eigenda as a transitive dependency and cargo prove has to compile it
  • blst requires a C compiler and linking - since we are compiling to an "obscure" 32bit-riscv target gcc requires extra cross-compilation toolchains
  • the docker-image that is used in the reproducible sp1 build toolchain cargo prove --docker does not have this c toolchain available

In any case I think we don't want to pull in and compile the whole celo-host dependency in the eigenda program.

As a temporary fix in op-succinct I just inlined the fetcher in the range-eigenda crate directly, but we might also consider putting it in a small crate e.g. in celo-kona

…lation issue

The celo-host crate pulls in alloy-eips -> c-kzg -> blst, which has C
code
that cannot compile for the RISC-V zkVM target. Extract the lightweight
CeloCanoeVerifierAddressFetcher implementation directly into the eigenda
range program to avoid this dependency chain.

Then import and use the extracted CeloCanoeVerifierAddressFetcher from
the local celo_verifier_fetcher module.
@ezdac ezdac force-pushed the seolaoh/use-celo-router-addr branch from a6167cb to 4d9f74d Compare February 4, 2026 16:08
@github-actions
Copy link

github-actions bot commented Feb 4, 2026

Performance Comparison (ELF: eigenda-range-elf-embedded)

Range 17008592~17008597

Metric Base Branch Current PR Diff (%)
Total Instructions 2189506280 2191007840 0.07%
Oracle Verify Cycles 100069536 100069536 0.00%
Derivation Cycles 815553517 817186774 0.20%
Block Execution Cycles 95949703 96302315 0.37%
Blob Verification Cycles 728 728 0.00%
Total SP1 Gas 2837801305 2838595922 0.03%
Cycles per Block 437901256 438201568 0.07%
Cycles per Transaction 312786611 313001120 0.07%
BN Pair Cycles 0 0 0.00%
BN Add Cycles 0 0 0.00%
BN Mul Cycles 0 0 0.00%
KZG Eval Cycles 0 0 0.00%
EC Recover Cycles 0 0 0.00%
P256 Verify Cycles 0 0 0.00%

@ezdac ezdac force-pushed the seolaoh/use-celo-router-addr branch from 4d9f74d to b4ca1d9 Compare February 4, 2026 17:12
@ezdac ezdac force-pushed the seolaoh/use-celo-router-addr branch from 70be887 to 3a8cc90 Compare February 5, 2026 12:28
@ezdac
Copy link

ezdac commented Feb 5, 2026

Now the fetcher is put in a utils crate and is used by the range-eigenda program as well as in the eigenda-host

@ezdac ezdac marked this pull request as ready for review February 5, 2026 13:34
@ezdac ezdac requested a review from piersy February 5, 2026 13:34
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

Successfully merging this pull request may close these issues.

2 participants