Skip to content

E2E: verify cdm.json contract pin matches on-chain registry #61

@ottovlotto

Description

@ottovlotto

Follow-up to #48.

Problem

cdm.json in this repo pins @w3s/playground-registry to a specific version + address (currently version: 4 at 0x17a7Bdc44B39472A7243Ba9b21099de26c12CbA5). The CLI uses that pin for every registry interaction — dot deploy --playground publishes through it, dot mod reads from it, etc.

If the on-chain ContractRegistry is updated (new version published, address re-deployed) and cdm.json isn't bumped to match, the CLI silently drifts from production. Users would see deploy/mod failures with no obvious cause.

The E2E suite from #48 doesn't catch this — its registry fixture queries the contract at the address baked into cdm.json, so the tests pass even when the pin is stale.

What to add

A daily E2E test that:

  1. Reads the pinned version + address for @w3s/playground-registry from cdm.json.
  2. Queries the on-chain ContractRegistry on Paseo Asset Hub for the canonical latest version + address of @w3s/playground-registry.
  3. Asserts they match. Fails with a clear message naming the drift if they don't (e.g. "cdm.json pins v4 at 0x17a7…, but on-chain registry has v5 at 0xabcd… — run cdm install to update").

Probably belongs alongside the existing on-chain checks in e2e/cli/fixtures/registry.ts, or as a new e2e/cli/version-pin.test.ts.

Why daily

The contract is frozen 18 April 2025 for the V1 audit window, so drift is unlikely day-to-day — but this is exactly the kind of thing that breaks silently when the audit lands and a new address goes live. The daily CI schedule is the right place to catch it.

Stretch (optional)

Also assert the ABI in cdm.json matches the on-chain ABI (fetched via the registered metadata CID on Bulletin). Catches ABI drift even when the version number hasn't moved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions