Skip to content

[pull] develop from smartcontractkit:develop#431

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

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

Conversation

@pull

@pull pull Bot commented Jun 11, 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 : )

jmank88 and others added 8 commits June 11, 2026 13:43
…22806)

* Add support for configuring fault-tolerance (F) and node set updates in DON changesets

* Update test to use 3-node
* Update solana trigger e2e tests for guaranteed delivery

* bump caps

* update helper

* fix lint

* bump cap version
)

* fix(vault): align JWT replay guard expiry with validation leeway
Replay protection now retains request digests through exp + 1 minute so
duplicate JWT-authenticated Vault requests cannot be replayed during the
JWT validation leeway window.

* lint fixes
…r (PRIV-458) (#22516)

* Verify enclave config against onchain DON in confidentialrelay handler (PRIV-458)

The handler now compares the attested EnclaveConfig in every incoming
SecretsRequestParams and CapabilityRequestParams against the local
node's WorkflowDON membership and fault tolerance, after Nitro
attestation validation succeeds. Closes Sigma Prime CL112-01 on the
relay-DON path.

The relay DON runs on the same nodes as the workflow DON, so
localNode.WorkflowDON.Members is the right comparison target. LocalNode
is an O(1) in-memory map lookup populated by the registry syncer on a
~12s tick, so the check stays off the RPC hot path. Up to ~12s
staleness applies during DON membership rotations and is acceptable
given how rare those events are.

Tests cover match-accepts, F mismatch, signers-count mismatch, signer
value mismatch, order-independent comparison, and the secrets-get
path. Existing tests updated to fill EnclaveConfig in fixtures with
a matching WorkflowDON.Members in the mock registry.

Bumps chainlink-common to v0.11.2-0.20260518112011-40a8e4cedaa8 to pick
up the EnclaveConfig field on confidentialrelay request params
(smartcontractkit/chainlink-common#2063).

Companion PRs:
- smartcontractkit/confidential-compute#329 (pool.go-side check).
- smartcontractkit/chainlink-common#2063 (field on params).
- smartcontractkit/confidential-compute#330 (enclave fills field).

* Fix lint findings in confidentialrelay handler test

GolangCI flagged three issues introduced by this PR's test fixtures:
- gosec G115: uint32->uint8 narrowing in WorkflowDON.F assignment.
  Replaced with an untyped testEnclaveF const used by both
  EnclaveConfig.F (uint32) and WorkflowDON.F (uint8), so no conversion.
- gocritic assignOp x2: badCfg.F = badCfg.F + 5 and
  params.EnclaveConfig.F = ... + 5 rewritten with +=.

* Align chainlink-common pin across dependent submodules

Root go.mod was bumped to chainlink-common b1205469 (post-#2063, adds
EnclaveConfig). The deployment, integration-tests, integration-tests/load,
system-tests/lib, system-tests/tests, and core/scripts modules replace
chainlink => ../ and so build against the root's confidentialrelay code,
but still pinned the pre-#2063 common (883689d). That skew broke
"make generate" (deployment error: exit status 1) because EnclaveConfig
was undefined when building root packages from those modules.

Bump all six to b1205469 and tidy.

* Fix gateway confidentialrelay test fixtures for mandatory EnclaveConfig

The chainlink-common bump in this PR makes confidentialrelay.Validate
require a non-empty EnclaveConfig (Signers, F, MasterPublicKey). The
gateway aggregator test fixtures (validCapParams/validSecretsParams)
didn't set it, so Hash() errored, no signed responses formed, and
TestConfidentialRelayHandler_QuorumWithRealAggregator blocked on quorum
until the 15m test timeout.

Add a valid EnclaveConfig to both fixtures. Gateway production code is
unaffected (nodes and gateway share one build, so hashing stays
consistent); only the stale test fixtures needed the field.

* Address review: fetch LocalNode once; gofmt test fixtures

- verifyEnclaveConfigMatchesDON now takes a localNode snapshot instead of
  fetching it itself. handleSecretsGet fetched LocalNode twice (once for
  the config check, once for request metadata); now it fetches once and
  passes the snapshot, avoiding the redundant lookup and any inconsistency
  if registry state changes between calls. handleCapabilityExecute fetches
  once and passes it too.
- gofmt the handler test: the EnclaveConfig struct literals added earlier
  were mis-indented.
- Drop the audit tag from the doc comment, matching the chainlink-common
  cleanup (keep PRIV-458).

* Fix err shadow in confidentialrelay handlers

The LocalNode-once refactor introduced `localNode, err :=` then kept
`if err := verifyEnclaveConfigMatchesDON(...)`, shadowing err (govet).
Use `=` so it assigns the existing err.

* Bump chainlink-common for optional EnclaveConfig; handle nil

chainlink-common #2111 made EnclaveConfig optional (*EnclaveConfig). Bump
common to 208ae6dd across the root and the dependent submodules that
replace chainlink => ../, and adapt the relay handler:

- verifyEnclaveConfigMatchesDON takes *EnclaveConfig and skips the check
  when nil (sender on an older protocol that omits it), verifying only
  when present.
- Node-handler and gateway-aggregator test fixtures use the pointer form;
  add a node-handler subtest covering nil-config acceptance.
…e binary_url (#22809)

* confidential: stop setting the deprecated outside-envelope binary_url

binary_url moves back into the hash: keep WorkflowExecution.binary_url (inside
PublicData, the canonical locator) and stop also setting the now-deprecated
request-level ConfidentialWorkflowRequest.binary_url, which the enclave never
reads. Pairs with chainlink-protos #387 / chainlink-common #2144.

No behavior change for the enclave (it reads execution.BinaryUrl); this just
removes the redundant copy that #2144 marks deprecated.

* changeset
@pull pull Bot locked and limited conversation to collaborators Jun 11, 2026
@pull pull Bot added the ⤵️ pull label Jun 11, 2026
@pull pull Bot merged commit 9e62173 into bit-cook:develop Jun 11, 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.

6 participants