Skip to content

feat: add Bulletin Chain (para 1010) as a Paseo system chain#395

Open
AlexD10S wants to merge 14 commits into
mainfrom
feat/bulletin-paseo
Open

feat: add Bulletin Chain (para 1010) as a Paseo system chain#395
AlexD10S wants to merge 14 commits into
mainfrom
feat/bulletin-paseo

Conversation

@AlexD10S

@AlexD10S AlexD10S commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Used https://github.com/paritytech/polkadot-bulletin-chain/tree/main/runtimes as reference

Key config decisions:

MaxPermanentStorageSize = 1 TiB. Hard cap on total bytes committed to permanent storage (via renew) across all authorizations.

RetentionPeriod: how long any stored data (not just renewed/permanent) survives before garbage collection, currently the pallet's own default (14 days).

AuthorizationPeriod = 14 days, unchanged from bulletin-westend, how long a granted authorization (byte/tx allowance) stays valid before it expires and is swept.

AllowedParachainIds = [People (1004)]: sibling parachains allowed to authorize storage over XCM without needing Root. People Chain is the documented primary use case (it primes Bulletin via authorize_preimage for PoP-linked data)-> https://github.com/paritytech/polkadot-bulletin-chain/blob/main/runtimes/bulletin-paseo/src/xcm_config.rs#L136 GovernanceParachainIds = [AssetHub (1000)]: separate, more privileged list — grants full Root over Bulletin via XCM, matching bulletin-westend's GovernanceLocation = AssetHubLocation. Root/sudo itself can always authorize directly regardless of either list.

Collators require --ipfs-server , not optional. It's what turns on Bitswap serving of stored data; without it the chain still stores data but nothing can fetch it by CID. Reflected in the local zombienet config's collator args.

To discuss

Note: Review dependencies:

bulletin-pallets-common = { git = "https://github.com/paritytech/polkadot-bulletin-chain", tag = "v0.0.20-paseo", default-features = false }
using https://github.com/paritytech/polkadot-bulletin-chain/releases

Note2: In Parity Paseo testnet authorizations are managed with a console UI: https://paritytech.github.io/polkadot-bulletin-chain/ and is managed by test account //Eve: https://github.com/paritytech/polkadot-bulletin-chain/blob/main/console-ui/src/pages/Authorizations/Authorizations.tsx#L671 & https://github.com/paritytech/polkadot-bulletin-chain/blob/main/runtimes/bulletin-westend/src/genesis_config_presets.rs#L95 --> To discuss here but for live use Sudo not Eve

@AlexD10S AlexD10S marked this pull request as ready for review July 7, 2026 06:38
@AlexD10S AlexD10S requested review from al3mart and tsenovilla July 7, 2026 06:38
AlexD10S and others added 5 commits July 7, 2026 10:53
- Fix the 4 tests broken by the governance/authorizer para-ID switch
  (1500/1502/5140 -> Asset Hub/People). The PeopleNext test now exercises
  extending the storage-backed AllowedParachainIds allowlist at runtime,
  and the Fellows-plurality case expects a Barrier rejection since the
  fellowship carve-out was removed.
- Set SS58Prefix to 42, matching the relay chain (sibling system paras
  use 0); also set ss58Format=42 in generate_chain_specs.sh and
  regenerate the local chain spec.
- Add a 'live' genesis preset for launch: sudo
  5EyFpXybSYon74HVGUZVyvtYxTLy4EuqUxMhgXcmLM2qz1BL and two invulnerable
  collators as clearly-marked well-known-key placeholders, to be swapped
  for the providers' real keys before the launch spec is generated. Add a
  bulletin-paseo (live) entry to generate_chain_specs.sh and
  preset-build tests for all presets.
- Wire IdleMaxServiceWeight to the intended MessageQueueIdleServiceWeight.
…naming

- Live preset: authorize the sudo account for storage at genesis
  (1k txs / 10 GiB, subject to the 14-day AuthorizationPeriod) and
  register it as an authorizer (100k txs / 100 GiB budget) so it can
  grant authorizations with plain signed calls.
- Rename people_next_chain_can_authorize_storage_with_transact: 5140
  (PeopleNext) is a Westend-era ID with no meaning on Paseo, where People
  is 1004. The test now covers governance extending the storage-backed
  AllowedParachainIds allowlist for an arbitrary para at runtime.
- Regenerate the local chain spec (presets are compiled into :code).

@al3mart al3mart left a comment

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.

We are missing one of the collator keys. but we seem good once we bring this one in!

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.

2 participants