chainlink icon indicating copy to clipboard operation
chainlink copied to clipboard

capability registry offchain

Open makramkd opened this issue 1 year ago • 2 comments

High level arch diagram of the offchain registry system is below, with some example flows from the top down.

  • Onchain Capability Registry: source of truth of all DONs, capability configurations, etc.
  • CRSyncer: this is an offchain component that is responsible solely for replicating the onchain capability registry state offchain. It syncs the full state. This is because some downstream components (e.g a Workflow Registry) may need more info than others (e.g a Capability Launcher).
  • Local: this is an offchain component that implements the capreg.Local interface (name TBD). Basically, this consumes all state updates from the CRSyncer and decides what to do with it. For example, a capability launcher may have to instruct some capabilities to update themselves due to new configuration, or a workflow registry might need to update optimal capability routes.
flowchart TD
    D[Onchain CapabilityRegistry] --> |Full sync on tick| A
    A[CRSyncer] -->|Call sync fn| B(CapabilityLauncher)
    A[CRSyncer] -->|Call sync fn| C(WorkflowRegistry)
    A[CRSyncer] -->|Call sync fn| F(SomeOtherConsumer)
    B[CapabilityLauncher] -->|Call start fn| G(CCIP)
    B[CapabilityLauncher] -->|Call start fn| H(Transmission)
    G[CCIP] -->|Launch New Oracle| I(Ethereum)
    G[CCIP] -->|Launch New Oracle| K(Arbitrum)
    G[CCIP] -->|Launch New Oracle| L(Optimism)
    H[Transmission] -->|Launch New Transmitter| M(Polygon)
    C[WorkflowRegistry] -->|Capability routing| WE(Workflow Engine)

makramkd avatar May 01 '24 14:05 makramkd

I see you updated files related to core. Please run pnpm changeset in the root directory to add a changeset as well as in the text include at least one of the following tags:

  • #added For any new functionality added.
  • #breaking_change For any functionality that requires manual action for the node to boot.
  • #bugfix For bug fixes.
  • #changed For any change to the existing functionality.
  • #db_update For any feature that introduces updates to database schema.
  • #deprecation_notice For any upcoming deprecation functionality.
  • #internal For changesets that need to be excluded from the final changelog.
  • #nops For any feature that is NOP facing and needs to be in the official Release Notes for the release.
  • #removed For any functionality/config that is removed.
  • #updated For any functionality that is updated.
  • #wip For any change that is not ready yet and external communication about it should be held off till it is feature complete.

github-actions[bot] avatar May 01 '24 14:05 github-actions[bot]

Quality Gate failed Quality Gate failed

Failed conditions
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube

Catch issues before they fail your Quality Gate with our IDE extension SonarLint SonarLint