Skip to content

[pull] develop from smartcontractkit:develop#439

Merged
pull[bot] merged 5 commits into
bit-cook:developfrom
smartcontractkit:develop
Jun 17, 2026
Merged

[pull] develop from smartcontractkit:develop#439
pull[bot] merged 5 commits into
bit-cook:developfrom
smartcontractkit:develop

Conversation

@pull

@pull pull Bot commented Jun 17, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

bolekk and others added 5 commits June 16, 2026 18:46
…; enclave verifies (#22807)

* feat(confidentialrelay): gateway forwards relay responses as a bundle

Make the gateway a keyless dumb fan-in for confidential-relay responses
and move all signature verification to the enclave. Previously the gateway
counted unverified, attacker-supplied signer identities toward quorum, so a
single compromised relay node could forge quorum and starve the enclave of
the real result (a liveness break).

Gateway: replace the signature-counting aggregator with a bundler that
forwards every collected per-node response in one bundle, without merging,
trusting, or counting signatures. Forward at the 2F+1 response threshold
(so >=F+1 honest responses are guaranteed present) and forward a partial
bundle on timeout instead of erroring.

Relay node: emit a single Signature per response; keep populating the
deprecated Signatures array during the migration window.

Bumps chainlink-common to the bundle-types commit, pinned to the #2109
branch until it merges (PR is draft until then).

* chore: bump chainlink-common to merged #2109 relay bundle types

Re-point from the temporary #2109 branch pin to the merged main commit
(87b1e75d), now that chainlink-common#2109 has landed.

* fix(confidentialrelay): propagate common to sibling modules + resolve lint

- Bump chainlink-common to 87b1e75d in the 6 sibling modules (core/scripts,
  deployment, integration-tests{,/load}, system-tests/{lib,tests}) so the
  module graph is consistent (fixes Clean Go Tidy + deployment test builds).
- Lint: fmt.Errorf -> errors.New (perfsprint); []byte(fmt.Sprintf) -> fmt.Appendf
  and drop the generic ptr() wrapper (modernize); use assert instead of require
  inside test goroutines (testifylint).

* refactor(confidentialrelay): address review (drop bundle sort + deprecated array)

- bundler: stop sorting bundle entries by signer. Order is meaningless;
  the enclave groups by response hash and verifies each signature.
- relay node: emit only the single Signature. Drop the deprecated Signatures
  array; the migration shim earns nothing with no customers on the old field.

* refactor(confidentialrelay): keep populating Signatures array (still has readers)

Revert the array drop: other code still reads Signatures, so the relay node
keeps populating it alongside the single Signature. The array, its readers,
and the field get removed in a later coordinated cleanup (readers first, then
writers, then the field) to avoid coupling the in-flight PRs. The bundler
sort removal stays.

* gateway: gate timeout forward at F+1 signed responses

On the cleanup/timeout path the gateway forwarded any partial bundle it had
collected. A bundle with fewer than F+1 signed responses can never reach the
enclave's F+1-valid-signature quorum, so that forward is a guaranteed-reject
round trip. Gate the timeout forward at F+1 signed responses and return a
timeout error below the floor. Still a count check, not signature verification;
F+1 is necessary, not sufficient, so the path stays optimistic. The 2F+1 early
trigger is unchanged (it waits rather than fails when short).

* test: drop goroutine in TimeoutForwardsPartialBundle to satisfy modernize

The expiry sweep delivers the partial bundle synchronously, so the callback can
be read on the main goroutine after removeExpiredRequests instead of in a
WaitGroup goroutine. This clears the modernize 'waitgroup' lint finding without
moving require into a goroutine (which testifylint/concurrency would object to).

* test: add t.Parallel() to confidential relay handler tests

golangci paralleltest flags these test functions for the missing t.Parallel()
call. Each test builds its own handler with no shared mutable state, matching
the parallel convention already used in bundler_test.go. Verified with -race.
* Bump chainlink-starknet plugin for Starknet 0.14.3 smoke builds.

Pin starknet LOOPP to chainlink-starknet #695 (starknet.go v0.17.1) and temporarily replace chainlink-common/keystore with #2154 for OCR2 signing compatibility.

* Revert go.mod churn; keep only starknet plugin bump.

The keystore replace and go mod tidy pulled tablewriter v1.0.9, which
breaks chainlink-ccv compilation and fails dependency validation for
the unreleased chainlink-common/keystore commit.

* Run CI

* Bump starknet plugin pin to chainlink-starknet #695 head.

Point gitRef at cc5d106b (LatestHead block-by-number fix).

* Bump starknet plugin pin to chainlink-starknet #695 head.

Pick up LatestHead single latest-tag fetch fix (0b0430d6) for HeadReporter
RPC code 24 on Sepolia staging.

* Bump starknet plugin pin to chainlink-starknet develop (#695 merged).

Point plugins.public.yaml at develop merge commit 5d83a289 after
chainlink-starknet #695 (Starknet 0.14.3 / starknet.go v0.17.1) landed.
* Bump version and update CHANGELOG for v2.52.0

(cherry picked from commit cd72140)

* Add minor changeset for next release cycle

---------

Co-authored-by: chainlink-releases-bot <svc-chainlink-releases@smartcontract.com>
@pull pull Bot locked and limited conversation to collaborators Jun 17, 2026
@pull pull Bot added the ⤵️ pull label Jun 17, 2026
@pull pull Bot merged commit a21c4d7 into bit-cook:develop Jun 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants