Skip to content

vault: add raw_vault_public_key to Observations for pure StateTransition - #2427

Merged
prashantkumar1982 merged 1 commit into
mainfrom
vault-observations-raw-public-key
Sep 29, 2026
Merged

prashantkumar1982 merged 1 commit into
mainfrom
vault-observations-raw-public-key

Conversation

@prashantkumar1982

Copy link
Copy Markdown
Contributor

Motivation

Follow-up to the Vault reshare zero-downtime PublicKey work. The GetSecrets OCR response carries raw_vault_public_key so decrypt-side callers read the live DKG key from the response instead of static config. In the initial implementation the Vault plugin populated that field inside StateTransition by reading node-local config (r.cfg.PublicKey + the gate), which makes StateTransition depend on inputs outside (query, observations) and can diverge during a staggered gate rollout.

Per review feedback, the public key should travel through the node's Observation and be aggregated in StateTransition, keeping the transition a pure function of observations.

Change

Add bytes raw_vault_public_key = 5; to the Observations message. Each node broadcasts its view of the DKG public key once per observation (when the include-public-key gate is open); the chainlink Vault plugin aggregates the quorum-agreed value onto GetSecretsResponse.raw_vault_public_key.

  • pkg/capabilities/actions/vault/messages.proto — new field on Observations.
  • pkg/capabilities/actions/vault/messages.pb.go — regenerated via make generate.

Named to match the existing GetSecretsResponse.raw_vault_public_key.

Downstream

Prerequisite for the chainlink-side plugin change (smartcontractkit/chainlink#23834), which consumes Observations.GetRawVaultPublicKey() and will bump to this version once published.

@prashantkumar1982
prashantkumar1982 requested a review from a team as a code owner September 29, 2026 16:31
@github-actions

Copy link
Copy Markdown
Contributor

👋 prashantkumar1982, thanks for creating this pull request!

To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team.

Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks!

@github-actions

Copy link
Copy Markdown
Contributor

✅ API Diff Results - github.com/smartcontractkit/chainlink-common

✅ Compatible Changes (2)

pkg/capabilities/actions/vault.(*Observations) (1)
  • GetRawVaultPublicKey — ➕ Added
pkg/capabilities/actions/vault.Observations (1)
  • RawVaultPublicKey — ➕ Added

📄 View full apidiff report

@prashantkumar1982
prashantkumar1982 added this pull request to the merge queue Sep 29, 2026
Merged via the queue into main with commit d603ed6 Sep 29, 2026
36 of 37 checks passed
@prashantkumar1982
prashantkumar1982 deleted the vault-observations-raw-public-key branch September 29, 2026 16:58
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