Repository navigation
feat(cli)!: configure ProverServices with a prover block instead of type: remote - #1559
Conversation
Vulnerable dependencies2 advisories across 2 libraries need attention, 2 accepted. 🚨 Needs attention
|
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2025-3684 | — | no fix yet | Cosmos EVM Allows Partial Precompile State Writes in github.com/cosmos/evm |
Go standard library
In use: go1.26.9 — reached from cli, e2e, gen/go/solidity-abi
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2026-6809 | CVE-2026-111943 | go1.26.10 |
Distrust compromised intermediate certificates in crypto/x509 |
Run make vulncheck for the call paths. Either upgrade the library, or add the
advisory to .govulncheck-ignore with a reason if no fix exists yet.
Accepted
Listed in .govulncheck-ignore with a reason.
github.com/pion/dtls/v2
In use: v2.2.12 — reached from cli
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2026-4479 | CVE-2026-26014 | no fix yet | Usage of random nonce generation with AES GCM ciphers risks leaking the authentication key in github.com/pion/dtls |
golang.org/x/crypto
In use: v0.57.0 — reached from cli, e2e
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2026-5932 | — | no fix yet | The golang.org/x/crypto/openpgp package is unmaintained, unsafe by design, and has known security issues |
From make vulncheck-json on this run: logs.
06de56d to
c06e76b
Compare
7061a67 to
0274e49
Compare
[Medium impact] The PR appears safe to merge. SummaryMoves remote proving from
|
|
DCO Sign-off not found |
2414317 to
2695d15
Compare
598e240 to
83c5144
Compare
|
@greptile review |
86ee9cf to
4908e10
Compare
…remote A client end's type now always names its on-chain light client. A ProverService is selected with a separate proverUrl, with proverTls for an https:// one, so a besu-qbft or attestation end can be proven remotely without losing its type, and a light client the CLI does not implement is declared with any type plus a proverUrl. This removes the remote exception from deployment config merging, labels prover metrics with the real client type, and drops the params block, which only the remote type used. proverUrl follows the same address rules as a remote attestor's grpc: a bare host:port is dialed as http://, and https:// turns TLS on. Signed-off-by: Gjermund Garaba <gjermund@garaba.net>
proverUrl and proverTls become prover.url and prover.tls, so a client end's ProverService validates and resolves through the same helpers as remote attestors and signers, and a bad TLS block reports the same path at validation and at startup. The attestor and the prover share checkEndpointAddr for their address rules. ClientEnd.Type becomes a plain string: with a prover it accepts any value, so the generated reference lists it as a string instead of the built-in types alone. Signed-off-by: Gjermund Garaba <gjermund@garaba.net>
…nal prover - Use config's client type constants directly; the deploy aliases only re-exported them. - Rename the prover metrics field to clientType, which it now holds. - Cover that reconciling a deployment keeps an operator's prover block. - refgen: a key required inside a block the file can omit renders as "required in `<block>`", so prover.url no longer reads as required on every client end. Remove the unused OPAQUE_TYPES hook. - Explain the prover block beside the connections table. Signed-off-by: Gjermund Garaba <gjermund@garaba.net>
Signed-off-by: Gjermund Garaba <gjermund@garaba.net>
Signed-off-by: Gjermund Garaba <gjermund@garaba.net>
Signed-off-by: Gjermund Garaba <gjermund@garaba.net>
4908e10 to
747dc89
Compare
…ype: remote (#1559) * feat(cli)!: configure ProverServices with proverUrl instead of type: remote A client end's type now always names its on-chain light client. A ProverService is selected with a separate proverUrl, with proverTls for an https:// one, so a besu-qbft or attestation end can be proven remotely without losing its type, and a light client the CLI does not implement is declared with any type plus a proverUrl. This removes the remote exception from deployment config merging, labels prover metrics with the real client type, and drops the params block, which only the remote type used. proverUrl follows the same address rules as a remote attestor's grpc: a bare host:port is dialed as http://, and https:// turns TLS on. Signed-off-by: Gjermund Garaba <gjermund@garaba.net> * refactor(cli)!: nest the ProverService endpoint in a prover block proverUrl and proverTls become prover.url and prover.tls, so a client end's ProverService validates and resolves through the same helpers as remote attestors and signers, and a bad TLS block reports the same path at validation and at startup. The attestor and the prover share checkEndpointAddr for their address rules. ClientEnd.Type becomes a plain string: with a prover it accepts any value, so the generated reference lists it as a string instead of the built-in types alone. Signed-off-by: Gjermund Garaba <gjermund@garaba.net> * refactor(cli): drop deploy client-type aliases and document the optional prover - Use config's client type constants directly; the deploy aliases only re-exported them. - Rename the prover metrics field to clientType, which it now holds. - Cover that reconciling a deployment keeps an operator's prover block. - refgen: a key required inside a block the file can omit renders as "required in `<block>`", so prover.url no longer reads as required on every client end. Remove the unused OPAQUE_TYPES hook. - Explain the prover block beside the connections table. Signed-off-by: Gjermund Garaba <gjermund@garaba.net> * docs(cli): fix the ProverConfig doc comment Signed-off-by: Gjermund Garaba <gjermund@garaba.net> * docs(cli): drop the stale params.url generator-gap note Signed-off-by: Gjermund Garaba <gjermund@garaba.net> * refactor(cli)!: name the ProverService block remoteProver Signed-off-by: Gjermund Garaba <gjermund@garaba.net> --------- Signed-off-by: Gjermund Garaba <gjermund@garaba.net> Co-authored-by: dianab-cl <diana@cosmoslabs.io> Signed-off-by: Diana Borbe <diana@cosmoslabs.io>
Description
Selecting a remote prover previously replaced the configured light-client type with
remote, forcing deployment config merging to skip its client-type consistency check. This change keeps the declared client type and moves the prover endpoint into a separateremoteProverblock, so the same manifest comparison applies to local and remote proving:Why this is useful
ibc deploy render-configcompares each declared client type with the deployment manifest and rejects a mismatch. Remote proving no longer needs an exemption. This compares configuration records; it does not verify the type against the chain or the ProverService.type=remote.params, whose only settings were the remote URL and TLS options, also removes the empty per-type structs, interface methods and decoder.host:portuses HTTP,https://enables TLS, and other URL schemes fail validation.The prover interface, the ProverService proto and the relay pipeline are unchanged.
The docs generator now marks a key that is required inside a block the file can leave out as "required in
<block>" (today onlyremoteProver.url), so the configuration reference no longer suggests every client end needs a remoteProver. Its unusedOPAQUE_TYPEShook, which only servedparams, is removed.Most important to review:
cli/internal/config/relayer.go(fields and validation) andcli/internal/relay/prover/prover.go(newProver).closes: FOU-1893
This came out of FOU-1699, which was closed without adopting its trusted-height parameter; this is the config cleanup from that work.
Breaking changes
type: remotewithparamsis replaced by the client's declared light-clienttypeplus aremoteProverblock with the sameurlandtlskeys. Without aremoteProver,typemust beattestationorbesu-qbft; with one, any non-empty type is accepted.paramsblock is removed. An oldparams:key now fails to load as an unknown field.remoteProver.urlwith a scheme other thanhttporhttpsis rejected.typelabel for ProverService-backed ends is the declared client type instead ofremote.Validation
go test ./...inclipasses on this commit.refgen --checkreports the docs up to date.golangci-lint run(Go 1.26.9) reports no issues.TestRemoteProver_*(3) pass on the latest commit. The Besu QBFT tests (TestDeployBesuQBFTConnection,TestTransferBesuQBFT_AutoRelay,TestTransferBesuQBFT_TimeoutRefund) passed in complete mode before the rebase onto feat: Add TLS support #1503 (TLS) and the later config edits. The fast suite has not been rerun since.docs/6-ibc-cli/tools/test-refgen-e2e.py: 67 passed, including a new case for the "required inremoteProver" rendering.docs/6-ibc-cli/tools/test-refgen.py: 88 passed, 1 failed. The failure is onTLSClientConfig, as onmainsince feat: Add TLS support #1503; nothing in this PR adds to it.CHANGELOG.mddoes not track CLI changes yet.remoteProverblock.docs/) if anything is changed. Configuration reference regenerated, with a hand-written paragraph onremoteProverbelow the connections table; Besu light client page and otel README updated.godoccomments if relevant.Files changedin the GitHub PR explorer.🤖 Generated with Claude Code