Skip to content

feat(consensus/ocr3): OCR3_1 plugin scaffold + libocr bump#2000

Draft
wentzeld wants to merge 1 commit intomainfrom
OCRBump
Draft

feat(consensus/ocr3): OCR3_1 plugin scaffold + libocr bump#2000
wentzeld wants to merge 1 commit intomainfrom
OCRBump

Conversation

@wentzeld
Copy link
Copy Markdown
Contributor

OCR3_1 scaffold for the CRE production consensus
plugin. Second OCR3_1 user after Vault. Motivated by a customer blocked on >512 KiB observation payloads. Plan + rollout: see internal OCR3_1
migration plan, Part 7/10. Verified locally: go build/vet/test ./... clean. Do not merge until: (1) integration tests cover the OCR3_1 path, (2)
preflight item 4 (libocr blob durability across restart) is answered.

  Adds parallel OCR3_1 implementation alongside the existing OCR3 plugin so the CRE consensus DON can move bulk observation payloads onto blobs (>512
  KiB customer payloads no longer fit under OCR3_1's halved cap).

  - New files: factory_ocr3_1.go, ocr3_1.go, reporting_plugin_ocr3_1.go (+ test). End-to-end blob path wired (Observation broadcasts,
  ValidateObservation parses handles, StateTransition fetches with materializeBlobs).
  - Versioned KV via OutcomeEnvelope{Version:1}; reads reject unknown versions.
  - Deterministic encoder tiebreak fix (count desc, sha asc) for the OCR3 map-iteration bug.
  - Proto extended: BlobbedObservation, OutcomeEnvelope, plus 7 OCR3_1-only ReportingPluginConfig fields including the three mandatory blob/KV
  rate-limits.
  - libocr bumped to v0.0.0-20260403184524-b6409238958d to align with chainlink. Canonical names: ReportingPluginInfo1, KeyValueStateReader/ReadWriter,
  *Bytes limit fields.
  - Verified: go build/vet/test ./... clean (294 packages).
@github-actions
Copy link
Copy Markdown

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

✅ Compatible Changes (18)

pkg/capabilities/consensus/ocr3 (2)
  • CapabilityOCR3_1 — ➕ Added

  • NewOCR3_1 — ➕ Added

pkg/capabilities/consensus/ocr3/types (2)
  • BlobbedObservation — ➕ Added

  • OutcomeEnvelope — ➕ Added

pkg/capabilities/consensus/ocr3/types.(*ReportingPluginConfig) (7)
  • GetBlobExpirationK — ➕ Added

  • GetMaxBlobPayloadBytes — ➕ Added

  • GetMaxKeyValueModifiedKeys — ➕ Added

  • GetMaxKeyValueModifiedKeysPlusValuesBytes — ➕ Added

  • GetMaxPerOracleUnexpiredBlobCount — ➕ Added

  • GetMaxPerOracleUnexpiredBlobCumulativePayloadBytes — ➕ Added

  • GetMaxReportsPlusPrecursorBytes — ➕ Added

pkg/capabilities/consensus/ocr3/types.ReportingPluginConfig (7)
  • BlobExpirationK — ➕ Added

  • MaxBlobPayloadBytes — ➕ Added

  • MaxKeyValueModifiedKeys — ➕ Added

  • MaxKeyValueModifiedKeysPlusValuesBytes — ➕ Added

  • MaxPerOracleUnexpiredBlobCount — ➕ Added

  • MaxPerOracleUnexpiredBlobCumulativePayloadBytes — ➕ Added

  • MaxReportsPlusPrecursorBytes — ➕ Added


📄 View full apidiff report

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.

1 participant