Skip to content

cumulus on jam - scope of work - #12714

Open
michalkucharczyk wants to merge 6 commits into
bkchr-parachain-service-docfrom
mku-cumulus-on-jam-doc
Open

cumulus on jam - scope of work#12714
michalkucharczyk wants to merge 6 commits into
bkchr-parachain-service-docfrom
mku-cumulus-on-jam-doc

Conversation

@michalkucharczyk

Copy link
Copy Markdown
Contributor

@paritytech-workflow-stopper

Copy link
Copy Markdown

All GitHub workflows were cancelled due to failure one of the required jobs.
Failed workflow url: https://github.com/paritytech/polkadot-sdk/actions/runs/29840169772
Failed job name: check-runtime-migration

@michalkucharczyk michalkucharczyk changed the title cumus on jam - scope of work cumulus on jam - scope of work Jul 21, 2026
@michalkucharczyk michalkucharczyk added R0-no-crate-publish-required The change does not require any crates to be re-published. T19-skip-zombienet_tests Skip triggering of zombienet CI tests labels Jul 22, 2026
- Drop the relay-state-proof inherent; the PVF reads its inputs in-core. **Open [\[1\]](#ref-1) gap**:
§4.3 exposes only preimage-by-hash lookups and the refine context — there is no generic
service-state read (para head, KV) host call; [\[1\]](#ref-1) says state arrives "through the
validation inputs" without defining the mechanism. Needs resolution on the [\[1\]](#ref-1) side.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes sense to have two extrinsics per para work items:

  • Para state Proof
  • Service state proof (downward data and proof, like current relay chain state proof)

And the put the metadata into the refine Payload. The extrinsics can be loaded chunked, so for large proofs it could help to not go OOM.

- AURA remap (runtime + node in lockstep): `can_build_upon`/`AuraUnincludedSegmentApi` and
aura-ext `FixedVelocityConsensusHook` compare against the relay slot — must compare against
the JAM timeslot. The AURA pre-digest/seal itself is unchanged (no relay dependency).
- `RelayParentOffset` (anchor N blocks behind the tip to reduce para forks; used by live

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still need this with Safrole ? AFAIK forks should be very special occasion.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. But we would still need to address it somehow. If not in runtime - then on collator side and with JAM backend we should build on recent RC block.

Also "very special occasion" does not mean impossible - so the open question if we want to keep RelayParentOffset feature.

@ggwpez ggwpez Jul 27, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Forks can still happen from networking issues I assume, but true that from protocol alone it should not.

@sandreim sandreim Jul 27, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this RelayParentOffset is now an optimization for an edge case in JAM.

chain observation (see 3).
- Guarantor pre-connect (direct-JAMNP phase): the gap is guarantor-identity → JAMNP address
discovery (today backing-group connections ride authority-discovery DHT).
- `ApprovedPeer` (para approves its collator peer-id; emitted by parachain-system, carried via

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is used in Polkadot for maintaining the reputation of collators. It is mainly a spam protection mechanism. Validators prefer to fetch collations from higher reputation collators. We might want such a system in JAM that applies to all WP.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well if we have the authorizer check and granted that it'd not possible to have multiple authorities valid for authorship at the same time, we don't need the reputation system I believe.
Moreover, if we have all the valid authorities of a parachain registered on the coretime chain, we can reject connections coming from different peers so we also got connection spam covered.

@bkchr I remember you saying that there are smth like 8 possible valid authors at any given point in time?
I still don't fully understand how that would work.

weights (opens the benchmarking pandora jar).

#### 11. **PVM executor & tooling**
- Soft proposal: keep the WASM executor for block building in phase 1 — technically the PoV

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can start with PVM. We already have a working PoC here.

advancement, and **resubmission** — anchors expire with the recent-history window, a stuck
WP must be rebuilt on a fresh anchor; the `Failed` status enumerates the cases (anchor on
other fork / not reported / not available in time). No cumulus analog today.
- Decide whether WPs can also be built from imported (not self-authored) blocks —

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we want proper resubmissions we do need this. We have a prototype in polkadot that will be merged soonish, which will make use of that proof consumer that is now unused

1 = submit via RPC to a (trusted) JAM node; direct JAMNP submission from the collator later.
- Post-submission tracking: JIP-2 `workPackageStatus` (Reportable → Reported → Ready; no
Accumulated status by design — accumulation observed via `subscribeServiceValue`) replaces
the collator-protocol "seconded" signal. Drives: announcement, unincluded-segment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the seconded signal is pretty much useless in polkadot now

the collator key is generated ad hoc by the relay-node builder, not the keystore).

#### 5. **Parent selection & pipelining** (replaces `find_parent_for_building`)
- Today: included head from `persisted_validation_data` + pending-availability candidates.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

plus the longest chain of built blocks even if they weren't yet backed

building the work report; the collator submits only the bundle.
- PoV compression: zstd today — decide if the WP extrinsic carries compressed PoV and who
decompresses (Refine gas cost).
- Submission: JIP-2 `submitWorkPackage(core, package, extrinsics)`; the node routes to the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just pointing out that with the current protocol low latency resubmissions will not be possible IIUC.
on Polkadot (in draft PRs still), we advertise entire portions of the unincluded segment to validators so that they get to fetch whichever blocks they do not have (with some per-core grouping so that we don't have multiple cores validating the same block simulatenously).

This achieves fast resubmissions without periodic polling of the collation status (which IIUC is also not possible on current JAM protocol, if we'll only rely on on-chain data for viewing the WP status).

We can still do resubmissions but not with such a low latency and reliability

chain observation (see 3).
- Guarantor pre-connect (direct-JAMNP phase): the gap is guarantor-identity → JAMNP address
discovery (today backing-group connections ride authority-discovery DHT).
- `ApprovedPeer` (para approves its collator peer-id; emitted by parachain-system, carried via

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well if we have the authorizer check and granted that it'd not possible to have multiple authorities valid for authorship at the same time, we don't need the reputation system I believe.
Moreover, if we have all the valid authorities of a parachain registered on the coretime chain, we can reject connections coming from different peers so we also got connection spam covered.

@bkchr I remember you saying that there are smth like 8 possible valid authors at any given point in time?
I still don't fully understand how that would work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

R0-no-crate-publish-required The change does not require any crates to be re-published. T19-skip-zombienet_tests Skip triggering of zombienet CI tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants