Skip to content

Regenerate data feeds bindings for 32-byte ids and batched reads - #187

Closed
Fletch153 wants to merge 12 commits into
feature/DF-25434/data-feeds-deploymentfrom
feature/DF-25429/bindings-bytes32
Closed

Regenerate data feeds bindings for 32-byte ids and batched reads#187
Fletch153 wants to merge 12 commits into
feature/DF-25434/data-feeds-deploymentfrom
feature/DF-25429/bindings-bytes32

Conversation

@Fletch153

Copy link
Copy Markdown
Collaborator

Summary

  • Brings the bindings and deployment artifacts in line with the widened-id, fixed-decimals contracts.

Context

The cache readers now take a vector of 32-byte opaque ids and answer per id (chainlink-stellar #182 and #183). The Go bindings and the embedded deployment wasm still spoke the old single-id, 16-byte interface.

Changes

  • Contracts: merge of the 32-byte, fixed-18-decimals branch.
  • Bindings: regenerated cache and proxy interfaces and clients; readers now take [][32]byte and return per-id slices.
  • Generator: emits vectors of optional u32, optional String, and bool, which the batched readers return and the generator previously could not produce.
  • Artifacts: embedded cache and proxy wasm rebuilt from the merged contracts.

Testing

  • Bindings and deployment/data-feeds Go suites pass.
  • Contract suite passes on the merged branch.

Notes

  • deployment/adapters already fails to compile on the base branch (GetAllSignatureConfigs missing from committee verifier bindings); untouched here.
  • Unrelated binding drift from full regeneration (ccip_receiver, ramp_registry, rmn_remote) reverted to keep the diff scoped to data feeds.

The DON transmitter reads every feed's latest state each round to
gate on deviation and heartbeat; single-feed reads would cost one
consensus call per feed. latest_round now takes a Vec of ids and
returns an Option<RoundData> per id. Page sizing is the caller's
concern; the host's own budget and footprint limits bound oversized
calls either way.

The cache no longer cares about freeze on any read path: it holds
state and serves it raw, exposing only the is_frozen flag. The
proxy decides: every consumer read is prefixed with an is_frozen
check that fails with the same FeedFrozen error as before. The
check costs no extra ledger reads since every reader loads the
feed_state entry holding the flag anyway. Freezing blocks consumer
reads, never DON writes, so the transmitter keeps reading and
writing frozen feeds. Self-upgrade wasm fixtures are rebuilt.
The mock cache derived its latest round from an injected round list
with its own max-by-round-id logic, a transcription of cache
behavior that could silently drift from the real contract. Tests
now inject the exact RoundData the cache would return for
latest_round, and the freeze flag is injected explicitly for
is_frozen, so the mock holds answers rather than reimplementing
cache logic.
@Fletch153

Copy link
Copy Markdown
Collaborator Author

Superseded, regenerating directly on PR 162's branch

@Fletch153 Fletch153 closed this Aug 18, 2026
@Fletch153
Fletch153 deleted the feature/DF-25429/bindings-bytes32 branch August 18, 2026 13:27
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