[pull] develop from smartcontractkit:develop#439
Merged
Conversation
…; 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 : )