Skip to content

Add HOP promotion: runtime-side#348

Open
franciscoaguirre wants to merge 2 commits intomainfrom
hop-promotion
Open

Add HOP promotion: runtime-side#348
franciscoaguirre wants to merge 2 commits intomainfrom
hop-promotion

Conversation

@franciscoaguirre
Copy link
Contributor

@franciscoaguirre franciscoaguirre commented Mar 24, 2026

In order to support promotion to Bulletin in HOP, we need both node-side and runtime-side changes.
This PR adds the runtime-side changes in order to test them before we move Bulletin Polkadot to fellowships.
The node-side changes are in paritytech/polkadot-sdk#11484.

How promotion works

The node regularly scans for entries about to expire and for each, it calls the runtime API HopPromotionAPI to get the promote() extrinsic it needs from pallet-hop-promotion. This extrinsic is authorized only if it comes from the local transaction pool, meaning it can't be sent from the outside world. It can only be used by collators building a block to promote. Since the extrinsic is also given a low priority from the runtime, it'll only be included in a block if it has space available after all user extrinsics.

sp-hop was created here mimicking the same crate on the sdk until we merge that PR.

Approach

The promote() extrinsic:

  • Uses general transactions via FRAME's #[pallet::authorize] macro
  • No signature is required. Calls are submitted by collators without signatures
  • No fees. Protocol-level operation not submittable by regular users
  • Priority 0, the minimum. To make sure all user transactions take precedence over these ones.
  • Local-only, TransactionSource::External gets rejected.
  • Not propagated to other nodes
  • Longevity 5: probably too little, can be increased. It will however be constantly re-created if needed by the node long-running task.
  • Delegates to pallet_transaction_storage::Pallet::do_store(data, Blake2b256, RAW_CODEC)

Companion: sdk

The companion to this PR also declares the runtime API and uses that to submit these promote() extrinsics.

@franciscoaguirre franciscoaguirre changed the title Add pallet-hop-promotion Add HOP promotion: runtime-side Mar 24, 2026
@franciscoaguirre franciscoaguirre marked this pull request as ready for review March 24, 2026 18:20
@franciscoaguirre franciscoaguirre self-assigned this Mar 24, 2026
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