smartcontractkit / smartcontractkit/chainlink-canton

Deprecate Canton min-NOP bypass wrappers (*AllowingCantonMinNOPs)

Open
#717 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
4
Forks
3
Avg merge
1d 9h
Merged PRs (30d)
102

Description

Deprecate Canton min-NOP bypass wrappers (*AllowingCantonMinNOPs)

Problem

ccv currently wraps generic cross-family changesets with Canton-specific *AllowingCantonMinNOPs helpers (see chainlink-deployments offchain_pipelines.go). This is an antipattern — family logic should live in adapters, not wrapper changesets.

Resolution (min-NOP)

Already fixed in adapter layer: CantonChainFamilyAdapter.ValidateNOPsTopology enforces 9 (mainnet) / 4 (testnet). Generic ValidateForEnvironment delegates per family; Canton never hits EVM's 15-NOP rule.

WithCantonProductionMinNOPCheckBypassed and lane/offchain *AllowingCantonMinNOPs wrappers are legacy and can be removed for full production topologies.

Remaining gap (separate from min-NOP)

JD ListNodeChainConfigs validation in apply-executor-config. Proposed fix: RequiresNodeChainSupportInJD() bool on ExecutorConfigAdapter (chainlink-ccip); Canton adapter returns false during rollout.

Tasks
  • Deprecate then remove *AllowingCantonMinNOPs in chainlink-canton
  • ccv: revert generic apply-executor-config to v2_0_0.ApplyExecutorConfig(registry, chainFamilyRegistry)
  • chainlink-ccip: adapter-driven JD validation skip
  • Remove duplicated applyExecutorConfigSkippingChainSupportValidation

Tracking doc (branch): docs/issues/deprecate-min-nop-bypass-wrappers.md

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with docs/issues/deprecate-min-nop-bypass-wrappers.md and the chainlink-deployments offchain_pipelines.go reference, then inspect the CantonChainFamilyAdapter.ValidateNOPsTopology and generic ValidateForEnvironment flow. Trace the *AllowingCantonMinNOPs wrappers and apply-executor-config call sites across the listed repositories; done means the legacy wrappers and duplicated validation path are removed and the adapter-driven JD validation approach is in place.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.