Skip to content

chore(deps): bump taiko client protocol to v2.3.0 - #268

Merged
davidtaikocha merged 2 commits into
mainfrom
chore/bump-taiko-client-protocol-v2.3.0
Sep 28, 2026
Merged

davidtaikocha merged 2 commits into
mainfrom
chore/bump-taiko-client-protocol-v2.3.0

Conversation

@smtmfft

@smtmfft smtmfft commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • pin taiko-client-protocol to taiko-alethia-client-rs-v2.3.0 (taikoxyz/taiko-mono@06bd6b0e)
  • pick up the manifest decoding fixes from taikoxyz/taiko-mono#22173 (aa3a24f5, a direct parent of the v2.3.0 release commit)
  • update the workspace and guest lockfiles, removing the obsolete indirect alethia-reth v1.3 dependency set
  • rebuild and commit the RISC0 and SP1 guest artifacts and provenance for the new protocol revision
  • pin the gaiko2 TEE provider source to taikoxyz/gaiko2#60 head a88ae8b4, which applies the same decoding rules and taiko-geth v2.7.0

The regenerated image IDs / verifying keys and the new gaiko2 enclave measurement must be registered as part of the eventual v0.9.0 release. This PR does not build the TEE image, deploy, or register anything.

Validation

  • cargo test -p raiko2-protocol-shasta -p raiko2-guest-common — passed, 128 tests
  • just build-guest risc0 — passed
  • just build-guest sp1 — passed
  • prebuilt xtask-build-guest all --check — passed; both provenance manifests and all committed ELF/VK hashes are current
  • cargo fmt --all --check — passed
  • git diff --check — passed
  • independent adversarial review — passed with no material findings
  • independent verification — passed; dependency ancestry, artifact hashes/inventory, and the focused tests were rechecked
  • provider-pin TOML parse and field comparison — passed; only providers.gaiko2.commit changed and it matches gaiko2 PR fix(risc0): consolidate Shasta aggregation guest #60 exactly

cargo clippy --workspace -- -D warnings reached the updated protocol v2.3.0 and project crates but could not finish because the risc0-circuit-recursion v4.0.4 build script received HTTP 400 while downloading its upstream ZKR artifact from RISC0 S3. No lint or source compilation error was reported before that external download failure.

The previous PR head passed every GitHub CI lane, including clippy, all Rust test groups, and xtask. The provider-pin follow-up has triggered a new CI run.


Note

High Risk
Changes protocol decoding and zkVM guest binaries/verification keys, which can break proof compatibility until new image IDs/VKs are registered; gaiko2 release pin also shifts TEE build provenance.

Overview
Pins taiko-client-protocol to v2.3.0 (taikoxyz/taiko-mono@06bd6b0e), picking up manifest decoding fixes from the upstream release line. Workspace and guest Cargo.lock files are refreshed so protocol/bindings 2.3.0 replace 2.2.0 and the stale indirect alethia-reth 1.3 crate entries are dropped in favor of a single 1.4.1 dependency graph.

RISC Zero and SP1 Shasta (and lab) guest ELF/VK artifacts are rebuilt and their risc0.provenance.json / sp1.provenance.json hashes updated so committed zkVM images match the new protocol revision (on-chain image ID / VK registration is explicitly left for a later release).

Also bumps the pinned gaiko2 TEE provider commit in release/providers.toml to a88ae8b4 for release provenance alignment with the dependency refresh.

Reviewed by Cursor Bugbot for commit c3a0710. Bugbot is set up for automated code reviews on this repo. Configure here.

Copilot AI lite review requested due to automatic review settings September 28, 2026 15:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Consensus-relevant protocol and zkVM artifacts require final human review.

Review effort: Lite
Findings: None

What changed in this PR

Updates taiko-client-protocol to v2.3.0 with manifest-decoding fixes, refreshed dependencies, and regenerated guest artifact provenance.

Changes:

  • Pins workspace and guest dependencies to v2.3.0.
  • Removes obsolete Alethia Reth v1.3 lockfile entries.
  • Updates RISC0/SP1 artifact provenance.
File Description
guests/​sp1/​Cargo.lock Refreshes SP1 guest dependencies.
guests/​risc0/​Cargo.lock Refreshes RISC0 guest dependencies.
crates/​guests/​elf/​sp1.provenance.json Records regenerated SP1 artifact hashes.
crates/​guests/​elf/​risc0.provenance.json Records regenerated RISC0 artifact hashes.
Cargo.toml Updates the protocol revision.
Cargo.lock Refreshes workspace dependencies.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

cursor[bot]
cursor Bot previously approved these changes Sep 28, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved: Cursor Bugbot completed successfully with no review findings that need human attention. No extra reviewers were assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Protocol decoding and zkVM artifact changes require human review and later image/VK registration.

Review effort: Lite
Findings: None

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved: Cursor Bugbot completed successfully with no review findings that need human attention. No extra reviewers were assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router

@davidtaikocha davidtaikocha left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving at c3a07108. Nothing blocks the merge. Items 1–4 below must be done before v0.9.0 is trusted on-chain.

What was verified

  • Pin.
    • 06bd6b0e is the taiko-alethia-client-rs-v2.3.0 tag commit, and its only parent is aa3a24f5 (taiko-mono#22173).
    • In 170f50bb..06bd6b0e, #22173 is the only change that affects derivation. The Masaya removal, the upstream security bumps and bindings (version line only) don't change anything in raiko2.
    • Each lockfile graph now has a single alethia-reth 1.4.1 set.
  • Guest artifacts.
    • A forced docker rebuild of the PR source reproduced all 12 artifacts byte-for-byte: 2 RISC0 ELFs (r0.1.91.1 image), and 5 SP1 ELFs plus 5 VKs (v6.8.1 image).
    • xtask-build-guest all --check passes, and the SP1 VKs re-derive from their ELFs.
    • The providers.toml commit touches no guest input.
  • Decoding.
    • All 136 upstream vectors (testdata/derivation_vectors/manifest_cases.json @06bd6b0e) were blob-encoded with real KZG versioned hashes and replayed through:
      • the protocol crate;
      • decode_blob_backed_manifest;
      • prepare_source_manifest_with_max_blocks (normal and forced-inclusion);
      • the guest's derive_expected_shasta_blocks and tx reconstruction;
      • host preflight;
      • alethia-reth's engine tx decoder.
    • The PR matches the expected result on 136/136 at every layer.
    • Main differs on 27 (18 framing, 6 zlib, 3 blob-sidecar), which is the intended alignment.
    • On no vector does one side hard-error while the other falls back to the default manifest.
    • Both proposal ELFs link C zlib (libz-sys), which the new decoder requires.
  • gaiko2 pin a88ae8b (taikoxyz/gaiko2#60).
    • The same corpus gives 0/136 mismatches against the expected results and against new raiko2, on both the direct decode path and the blob-backed path.
    • Its corpus copy is byte-identical to upstream's.
    • validateManifestTransactions is semantically identical to taiko-client @aa3a24f5, runs on every decoded source before any per-tx filtering, and falls back to the default source on failure.
    • The taiko-geth bump 4e001283 → 8e98046b is the single release 2.7.0 changelog commit.
    • raiko2 and gaiko2 go from 37 disagreeing vectors to 0.
  • CI: all 14 checks are green at c3a07108.

Owed before v0.9.0

  1. Re-pin gaiko2 after gaiko2#60 merges.

    • gaiko2 squash-merges, so a88ae8b will never be on gaiko2 main.
    • release-tee-providers does git clone then git checkout <sha> (xtask/src/release_tee_providers.rs:434-450), so it only finds the commit while fix/align-manifest-decoding exists.
    • Once #60 has a human review and merges, re-pin to its main commit, as #266 did for #59.
  2. Cutover ordering. #22173 has no fork gate: the new rules apply to every proposal as soon as the new code runs.

    • Trust the new identifiers only once the L2 drivers run #22173. That means taiko-client-rs ≥ v2.3.0, and a Go taiko-client release that contains it (v2.6.0 does not; 2.7.0 is unreleased).
    • Rotate all of these in one on-chain action and untrust the old ones: RISC0 image IDs, SP1 VKs, the SGX-RETH MRENCLAVE (sgx-runtime links protocol), and gaiko2's new SGX-GETH MRENCLAVE. While old and new are both trusted, a proposal in one of the 27 changed classes has two provable transitions: RISC0+SP1 alone satisfies ZkRequiredVerifier.
    • Before the cutover, re-derive all Shasta proposals on mainnet and hoodi with both decoders and confirm none hits a changed class. Forced inclusion is permissionless, so anyone could have created one.
  3. Identifiers to register (computed with guest-digests at this head):

    Object Digest
    RISC0 proposal image_id 0x88712dad7dc78126ee7bb592282d3102569c706f1b9db80580a582e5ffd1dfb0
    RISC0 aggregation image_id 0x04480b22e244d60165f3d0898bc61ea084d9c76221464a8a3c3343c74889040a
    SP1 proposal vk_bn254 0x0012b97234e59f2319d44202c7b093fed9c9a51b2068e38d26625c139d668c97
    SP1 aggregation vk_bn254 0x0017912dfd72308e2e2cd4211b05ed73a97eb7f576816adec2606a37507de51e
  4. zkGas model pins. crates/prover/models/risc0-zkgas.json and estimation.rs now lag 3 rebuilds (proposal) and 2 (aggregation). Recalibrate before any strategy = "estimated" cutover.

Nit (fine to fold into the next dependency PR)

  • cargo update -p protocol re-pointed 7 ranged edges in the root Cargo.lock at older versions already in the lock:
    • hyper-util, quinn and quinn-udp → socket2 0.5.10;
    • prost-build and prost-derive → itertools 0.11.0;
    • winapi-util → windows-sys 0.48.0.
  • This is harmless: no crate version was added or removed, no advisories apply, and the root lock is not a guest build input. It is still not minimal.
  • git checkout origin/main -- Cargo.lock && cargo metadata --format-version 1 >/dev/null produces the minimal lock.

@davidtaikocha
davidtaikocha merged commit fe646ca into main Sep 28, 2026
16 checks passed
@davidtaikocha
davidtaikocha deleted the chore/bump-taiko-client-protocol-v2.3.0 branch September 28, 2026 21:29
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.

3 participants