Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parent issue for stable2409 LTS release #5583

Closed
acatangiu opened this issue Sep 4, 2024 · 19 comments
Closed

Parent issue for stable2409 LTS release #5583

acatangiu opened this issue Sep 4, 2024 · 19 comments

Comments

@acatangiu
Copy link
Contributor

acatangiu commented Sep 4, 2024

Parent issue tracking the stable2409 long term support release.

This issue is used to track the lifecycle of the release. See Polkadot-SDK Release Calendar.

Features included in this release can be tracked under the Stable2409 LTS Release project view.

@acatangiu acatangiu converted this from a draft issue Sep 4, 2024
@acatangiu acatangiu moved this to In progress in Stable2409 LTS Release Sep 4, 2024
@ggwpez
Copy link
Member

ggwpez commented Sep 4, 2024

What is the plan with these project boards? Do you need them for project planning?
We could probably create a bot to keep them in sync with the data from here https://github.com/paritytech/release-registry/

@acatangiu
Copy link
Contributor Author

It's a proposal for tracking release relevant dates and included features. If we deem it useful, we can either automate it as you say or keep it manual as it is minimal effort IMO, just copy previous board and update fields for every new planned release (a couple minutes once a month).

@acatangiu acatangiu changed the title stable2409 LTS Parent issue for stable2409 LTS release Sep 4, 2024
@ggwpez
Copy link
Member

ggwpez commented Sep 9, 2024

Status Update

(This is an experiment to try and coordinate comms inside & outside of Parity, please put feedback about improvements)

The release is cut-off and now being tested. The release draft can be found here. It is planned to be published on the 25th.

Screenshot 2024-09-09 at 14 29 44

Next Steps

@paritytech/parachains-core please start monitoring the burn-in deployments for abnormalities. Tracking issue https://github.com/paritytech/devops/issues/3539.

@paritytech/appsec please continue with the auditing and prioritization or the changes since the last release.

@SBalaguer @albertogallini @IkerAlus @Imod7 @ottovlotto the preliminary CHANGELOG for preparing announcements is attached below.

CHANGELOG

This release contains the changes from polkadot-stable2407-2 to v1.16.0-rc1.

Changelog

Changelog for Node Dev

ℹ️ These changes are relevant to: Those who build around the client side code. Alternative client builders, SMOLDOT, those who consume RPCs. These are people who are oblivious to the runtime changes. They only care about the meta-protocol, not the protocol itself.

[#5410]: Reactive syncing metrics

Syncing metrics are now updated immediate as changes happen rather than every 1100ms as it was happening before.
This resulted in minor, but breaking API changes.

[#5288]: Added polkadot-parachain-lib helper library that can be used to build a parachain node

This PR adds the polkadot-parachain-lib helper library that can be used to build a parachain node.

[#4993]: Added BEEFY equivocation-related methods to BeefyApi

This PR adds the generate_ancestry_proof, submit_report_fork_voting_unsigned_extrinsic and
submit_report_future_block_voting_unsigned_extrinsic to BeefyApi and bumps the BeefyApi version
from 4 to 5.

[#5393]: Allow to enable full PoV size

A feature is introduced allowing a collator to enable full PoV size at compile time.
WARNING: To use this feature, security considerations must be understood and the latest
SDK version must be used.

[#5065]: Replace env_logger with sp_tracing

This PR replaces env_logger with sp_tracing because of an issue with env_logger and gum #4660

[#5344]: Fix storage weight reclaim bug.

Improvement in slot worker loop that will not call create inherent data providers if the major sync is in progress. Before it was called every slot and the results were discarded during major sync.

[#5396]: Simplify SyncingEngine::new()

Tiny changes to simplify the internal implemenation of API SyncingEngine::new() to prevent panics while fetching the genesis hash and to eliminate unnecessary allocation for reserved peers.

[#4845]: Make approval-distribution logic runnable on a separate thread

Pass SubsystemSender trait inside approval-distribution instead of passing SubsystemContext everywhere.

This allows us in the future to be able to run multiple approval-distribution instances on different workers.

[#5364]: Improve sc-service API

This improves sc-service API by not requiring the whole &Configuration, using specific configuration options
instead. RpcConfiguration and ExecutorConfiguration were also extracted from Configuration to group all RPC
and executor options together.
If sc-service is used as a library with lower-level APIs, Configuration can now be avoided in most cases.

This mainly impacts you on your node implementation. There you need to change this:

with_execution_method(config.wasm_method)

to this:

with_execution_method(config.executor.wasm_method)

There are similar changes required as well, but all are around the initialization of the wasm executor.

[#4739]: parachain-template - genesis config presets added

  • common DEV_RUNTIME_PRESET ("development") const added to sp-genesis-builder.
  • parachain-templates are now using presets.

[#5195]: Bump Aura authoring duration to 2s.

This PR bumps the Aura authoring duration in the asynchronous backing
guide and the polkadot-parachain service file to 2s in order to make
better use of the provided coretime.

[#5142]: Move decompression to worker processes

Candidate validation subsystem performed the PVF code decompression as well as the PoV
decompression itself which might affect the subsystem main loop performance and required
it to run on the blocking threadpool. This change moves the decompression to PVF host
workers running synchronously in separate processes.

[#5431]: Remove the need to wait for target block header in warp sync implementation

Previously warp sync needed to wait for target block header of the relay chain to become available before warp
sync can start, which resulted in cumbersome APIs. Parachain initialization was refactored to initialize warp sync
with target block header from the very beginning, improving and simplifying sync API.

[#5527]: Report BestBlock events only for newBlock reports

This PR ensures that the chainHead_v1_follow method of the RPC-v2 API is always
reporting a BestBlock event after a NewBlock.
There was a race condition in the chainHead follow logic which led to the BestBlock
event to be emitted without an associated NewBlock event.

[#4928]: Move assignment VRF check and vote signature in approval-distribution

This PR moves the assignment VRF check and approval vote signature from approval-voting into approval-distribution.
This optimization creates a better pipelining for processing new messages, because in this way approval-distribution
does not have to wait after approval-voting anymore and it will just notify it when it received a valid message that
is ready to be imported.

[#5450]: Sync status refactoring

SyncingService API in sc-network-sync has changed with some of the redundant methods related to sync status
removed that were mostly used internally or for testing purposes and is unlikely to impact external code.
ExtendedPeerInfo now has working Clone and Copy implementation.

[#5424]: Suppress the log output for transaction propagation when no transactions are present

Previously, the log message Propagating transactions would always be printed, even when there were no transactions to propagate. This patch optimizes the logging by returning early when no transactions are present, resulting in cleaner and more relevant log output.

[#5250]: Export MetricsService and add public constructor to RpcHandlers

sc-service was missing just a couple of things in public API in order to make it possible to recreate its
spawn_tasks, specifically MetricsService struct and RpcHandlers didn't have public constructor, which were
both finally addressed.

[#5029]: Backoff slow peers to avoid duplicate requests

This PR introduces a backoff strategy mechanism. Whenever a peer disconnects with an inflight
block (or state) request, the peer is backed off for a period of time before receiving requests.
After several attempts, the peer is disconnected and banned. The strategy aims to offload
the pressure from peers that are slow to respond or overloaded.

[#5339]: Replace unnecessary &mut self with &self in BlockImport::import_block()

Simplifies block import API to match intended design where independent blocks can technically be imported
concurrently and in practice was called through Arc anyway

[#5352]: Aura: Ensure parachains are building on all relay chain forks

Ensure that parachains using the basic collator are building on all relay chain forks.

[#5269]: Added the possibility to build a parachain node with block number u64

Added the possibility to build a parachain node with block number u64.

[#3786]: Make changing of peer-id while active a bit more robust

Implemetation of polkadot-fellows/RFCs#91, to use creation_time field to determine
the newest DHT record and to update nodes known to have the old record.

Gossip-support is modified to try to re-resolve new address authorithies every 5 minutes instead of each session,
so that we pick autorithies that changed their address faster and try to connect to them.

[#5252]: Additional logging in dispute-coordinator subsystem

Additional logging in dispute-coordinator subsystem tracing the list of offchain disabled
validators and the reason why an import statement is considered spam.

[#5316]: add timestamp function to sp-consensus-slots

Added timestamp function to sp-consensus-slots to get the first timestamp
of the given slot.

[#3996]: asset-hub-rococo - genesis config presets added

asset-hub-rococo genesis state was moved to runtime.

[#5356]: Fix OurViewChange small race

Always queue OurViewChange event before we send view changes to our peers, because otherwise we risk
the peers sending us a message that can be processed by our subsystems before OurViewChange.
Normally, this is not really a problem because the latency of the ViewChange we send to our peers
is way higher than that of our subsystem processing OurViewChange, however on testnets like versi
where CPUs are sometimes overcommitted this race gets triggered occasionally, so let's fix it by
sending the messages in the right order.

[#2923]: Use console crate instead of ansi_term

This PR replace obsoleted ansi_term to console.

[#5538]: collator-protocol: Remove race condition

Remove a race condition in the collator protocol that could lead
to collations not being announced to a validator.

Changelog for Runtime Dev

ℹ️ These changes are relevant to: All of those who rely on the runtime. A parachain team that is using a pallet. A DApp that is using a pallet. These are people who care about the protocol (WASM, not the meta-protocol (client).)

[#4963]: Removed pallet::getter usage from the pallet-proxy

This PR removed pallet::getters from pallet-proxys storage items.
When accessed inside the pallet, use the syntax StorageItem::<T>::get().

[#5132]: Add from_mel for Footprint

This introduces a new way to generate the Footprint type by calculating the max encoded
length of some generic type. This allows you to generate a Footprint of a type without
actually constructing that type.

[#5262]: Correct some typos in crates' descriptions

Corrected typos and copy-paste errors in crates' descriptions.

[#4962]: Removed pallet::getter usage from the pallet-treasury

This PR removed pallet::getters from pallet-treasurys storage items.
Instead use the syntax StorageItem::<T, I>::get().

[#5513]: Add more logs to trace AcceptanceCheckErr

Debug was derived on AcceptanceCheckErr to print the error. This PR adds more logs to trace the error.

[#4706]: Rename assigner_on_demand pallet to on_demand

Renames assigner_on_demand pallet to on_demand

[#5114]: Remove not-audited warning

Pallets tx-pause and safe-mode have passed audit, this just removes a warning in the docs
to not use them.

[#5173]: Umbrella crate: exclude chain-specific crates

The polkadot-sdk umbrella crate does now not contain chain-specific crates. The reasoning is
that the SDK should be mostly chain-agnostic. Please check out
psvm to select matching version numbers for chain-
specific crates.

[#5078]: Add possibility to inject non-authorities session-keys in genesis

Allows to inject a set of registered session-keys in pallet-session that are not
part of the first initial set of validators

[#4527]: Call implementation for transfer_all

This PR introduces the transfer_all call for pallet-assets.
The parameters are analog to the same call in pallet-balances.
This change is expected to be backwards-compatible.
This change requires running benchmarkings to set accurate weights for
the call.

[#4487]: Remove pallet::getter usage from pallet-election-provider-multi-phase

This PR removes the pallet::getters from pallet-election-provider-multi-phase.
The syntax StorageItem::<T, I>::get() should be used instead.

[#5369]: Fix failing XCM from relay to Coretime Chain when revenue is zero

The coretime assigner now always includes UnpaidExecution when calling notify_revenue via a
Transact, not just when revenue is nonzero. This fixes an issue where the XCM would fail to
process on the receiving side.

[#4998]: Ensure members can always exit the pool gracefully

Ensures when a member wants to withdraw all funds but the pool is not able to provide all their funds, the member
can receive as much as possible and exit pool. Also handles cases where some extra funds held in member's account
is released when they are removed.

[#5467]: Make PendingConfigs storage item public

Make PendingConfigs storage item in polkadot's configuration crate public.

[#4956]: Add build options to the srtool build step and delete disanle-logging feature

This PR adds possibility to set BUILD_OPTIONS to the "Srtool Build" step in the release pipeline while building runtimes.
And deletes the disable-logging feature from test runtimes to be able to build those with an activated logging.

[#4564]: Make OnUnbalanced::on_unbalanceds work with fungibles imbalances

The on_unbalanceds function of OnUnbalanced trait accepts the fungibles imbalances
imbalances. This is done by replacing the Imbalance trait bound on imbalance type with
the TryMerge trait bound. The TryMerge trait is implemented for all imbalance types.

Migration for OnUnbalanced trait implementations:

In case if you have a custom implementation of on_unbalanceds trait function, remove
it's <B> type argument.

Migration for custom imbalance types:

If you have your own imbalance types implementations, implement the TryMerge trait for it
introduced with this update.

[#5201]: Snowbridge free consensus updates

Allow free consensus updates to the Snowbridge Ethereum client if the headers are more than a certain
number of headers apart. Relayers providing valid consensus updates are refunded for updates. Bridge
users are not affected.

[#4976]: Add pub to xcm::v4::PalletInfo

Forgot to make v4 PalletInfo fields public. Without them we cannot make use of the struct.

[#5074]: Snowbridge on Westend

Since Rococo is now deprecated, we need another testnet to detect bleeding-edge changes
to Substrate, Polkadot, BEEFY consensus protocols that could brick the bridge.

[#5074]: Snowbridge on Westend

Like Rococo this PR enables the fast-runtime feature by default which is easier
for testing beefy stuff on westend-local.

[#5055]: Only log error in UnixTime::now call of the pallet-timestamp implementation if called at genesis

This minor patch re-introduces a check to ensure that the UnixTime::now implementation in the timestamp only
logs an error if called at the genesis block.

[#5131]: Swap for paying delivery fees in different assets

Using the AssetExchanger XCM config item, the executor now swaps fees to use for delivery fees,
if possible.
If you want your runtime to support this, you need to configure this new item.
Thankfully, xcm-builder now has a new adapter for this, which lets you use pallet-asset-conversion
or any type that implements the SwapCredit and QuotePrice traits.
It's called SingleAssetExchangeAdapter, you can read more about it in its rust docs.
This item is already configured in Asset Hub.

IMPORTANT: The executor now only takes the first asset for delivery fees. If you have configured a custom router
that returns more than one asset for delivery fees, then only the first one will be taken into account.
This is most likely not what you want.

[#5130]: Add SingleAssetExchangeAdapter

SingleAssetExchangeAdapter is an adapter in xcm-builder that can be used
to configure the AssetExchanger in XCM to use pallet-asset-conversion,
or any other type that implements the SwapCredit and QuotePrice traits.
It can be configured as follows:

pub type AssetExchanger = SingleAssetExchangeAdapter<
  // pallet-assets-conversion, as named in `construct_runtime`.
  AssetConversion,
  // The fungibles implementation that brings together all assets in pools.
  // This may be created using `fungible::UnionOf` to mix the native token
  // with more tokens.
  Fungibles,
  // The matcher for making sure which assets should be handled by this exchanger.
  Matcher,
>;

It's called "single asset" since it will only allow exchanging one asset for another.
It will error out if more than one asset tries to be exchanged.

Also, a new method was added to the xcm_executor::traits::AssetExchange trait:
quote_exchange_price. This is used to get the exchange price between two asset collections.
If you were using the trait, you now need to also implement this new function.

[#4936]: Balances Pallet: Emit events when TI is updated in currency impl

Previously, in the Currency impl, the implementation of pallet_balances was not emitting any instances of Issued and Rescinded events, even though the Fungible equivalent was. This PR adds the Issued and Rescinded events in appropriate places in impl_currency along with tests.

[#5442]: Derive Clone on EncodableOpaqueLeaf

Clone was derived on EncodableOpaqueLeaf for convenience of downstream users

[#5354]: Fix benchmark failures when using insecure_zero_ed flag

Currently, when the pallet is compiled with the insecure_zero_ed flag, benchmarks fail because the minimum balance is set to zero.

The PR aims to resolve this issue by implementing a placeholder value for the minimum balance when the insecure_zero_ed flag is active. it ensures that benchmarks run successfully regardless of whether this flag is used or not

[#4822]: Ensure as many as possible pool members can migrate to DelegateStake

  1. Allows pool members to use their total balance while joining pool with DelegateStake.
  2. Gates call mutating pool or member in unmigrated state.
  3. Runtime apis for reading pool and member balance.

[#5204]: Pallet assets: fix doc: start_destroy never required asset to be frozen

In pallet assets calling start_destroy doesn't require the asset to be frozen. Doc is fixed.

[#5465]: try-state check invariant for nomination-pools (points >= stake)

Adds a new try-state invariant to the nomination pools that checks that for each bonded pool, the pool's points can never be lower than its staked balance.

[#4460]: xcm-executor: allow deposit of multiple assets if at least one of them satisfies ED

XCM programs that deposit assets to some new (empty) account will now succeed if at least
one of the deposited assets satisfies ED. Before this change, the requirement was that the
first asset had to satisfy ED, but assets order can be changed during reanchoring so it
is not reliable. Now, ordering doesn't matter, any one(s) of them can satisfy ED for the
whole deposit to work.

[#5443]: change try-runtime rpc domains

as part of https://github.com/paritytech/devops/issues/3502, try-runtime nodes were migrated to a new provider with a new domain address. The PR fixes all the references to try-runtime nodes on rococo, westend, kusama and polkadot networks

[#5430]: pallet-collator-selection: correctly register weight in new_session

  • Fixes an incorrect usage of the WeightInfo trait for new_session.

[#5604]: Clear other messages before dry-running

The DryRunApi.dry_run_call and DryRunApi.dry_run_xcm functions used to populate
forwarded_xcms with all the existing messages in the queues at the time.
Now, existing (irrelevant) messages are cleared when dry-running, meaning only the
messages produced by the dry-run call (or xcm) will be returned in forwarded_xcms.

[#5257]: Enable proof-recording in benchmarking

We now enable proof recording in the timing benchmarks. This affects the standalone frame-omni-bencher as well
as the integrated benchmarking commands of the node. For parachains on recent versions of polkadot-sdk this is the
correct default setting, since PoV-reclaim requires proof recording to be enabled on block import.
This comes with a slight increase in timing weight due to the additional overhead. Relay- or solo-chains
which do not need proof recording can restore the old behaviour by passing --disable-proof-recording to the
benchmarking command.

In addition, the ProofSizeExt extension is available during benchmarking.

[#5293]: Add initial version of pallet_revive

Adds initial experimental version of the new pallet_revive. It will run PolkaVM
contracts which were recompiled from YUL using the revive compiler. Do not use the
pallet in production, yet. It is work in progress.

[#5174]: Wasm-builder: Set the resolver version to 2

Set the resolver version to 2 in the generated Cargo.toml.

[#4751]: Use all parachain heads for BEEFY MMR extra data

Previously, the extra data in an MMR leaf nodes was only computed based on lease-based parachain heads.
This PR extends the extra data to include others, including on-demand parachain heads.
Currently, the number of heads is limited to the first 1024 heads sorted by para id.

[#4999]: Fixes entropy for derivation of proxy delegator account.

This fixes how ProxyDelegator accounts are derived but may cause issues in Westend since it would use the old
derivative accounts. Does not affect Polkadot/Kusama as this pallet is not deployed to them yet.

[#4959]: relax XcmFeeToAccount trait bound on AccountId

This PR relaxes the trait bound on AccountId for the XcmFeeToAccount struct by introducing a new struct called SendXcmFeeToAccount.
The old one (XcmFeeToAccount) will be deprecated at January 2025.

[#4930]: Add test macro to emulated chains

This PR adds a portable test macro that can be used to test trapped assets can be
claimed in an emulated chain.

[#4586]: Removed pallet::getter usage from pallet-identity

This PR removed the pallet::getters from pallet-identity.
The syntax StorageItem::<T, I>::get() should be used instead.

[#4970]: Remove pallet::getter usage from the transaction-payment pallet

This PR removes the pallet::getters from pallet-transaction-payment.
The syntax StorageItem::<T, I>::get() should be used instead.

[#5380]: Fix leases with gaps and time slice calculation in MigrateToCoretime

Agile Coretime storage migration wasn't transferring correctly leases with gaps and was
miscalculating time lease period. This patch provides fixes for both issues.

[#5348]: allow for u8 to be used as hold/freeze reason

Allows for u8 type to be configured as HoldReason and FreezeReason

[#5155]: Use umbrella crate for minimal template

Minor additions to the polkadot-sdk-frame crate and making it ready for usage in more templates. This PR already integrates it in the minimal template.

[#5113]: Make the candidate relay parent progression check more strict for elastic scaling

Previously, the relay chain runtime was checking if the relay parent of a new candidate does
not move backwards from the latest included on-chain candidate. This was fine prior to elastic scaling.
We now need to also check that the relay parent progresses from the latest pending availability candidate,
as well as check the progression within the candidate chain in the inherent data.
Prospective-parachains is already doing this check but it's also needed in the runtime.

[#4967]: Remove pallet::getter usage from the balances pallet

This PR removes the pallet::getters from pallet-balances.
The syntax StorageItem::<T, I>::get() should be used instead.

[#5082]: Fix ParaInherent weight overestimation

This PR fixes the relay chain inherent weight overestimation allowing it
to support more cores and validators.

[#3996]: asset-hub-rococo - genesis config presets added

asset-hub-rococo genesis state was moved to runtime.

[#4949]: [bridges-v2] Permissionless lanes

This PR adds support for opening and closing dynamic, also known as permissionless, lanes.
This means that authorized origins (relay chain, sibling parachains)
can open and close bridges with other bridged (substrate-like) consensuses supported by Bridge Hubs.
The Bridge Hubs, particularly the pallet-xcm-bridge-hub, introduce new extrinsics open_bridge and close_bridge,
which can be called using xcm::Transact.

[#4488]: Tx Payment: drop ED requirements for tx payments with exchangeable asset

Drop the Existential Deposit requirement for the asset amount exchangeable for the fee asset
(eg. DOT/KSM) during transaction payments.

This achieved by using SwapCredit implementation of asset conversion, which works with
imbalances and does not require a temporary balance account within the transaction payment.

This is a breaking change for the pallet-asset-conversion-tx-payment pallet, use examples
from PR for the migration.

[#5270]: Inclusion: account for enact_candidate weight

We are now properly accounting for the enact_candidates weight in
processing of a relay chain block inherent. This may result in some
of the user relay chain transactions not being included in the block if
it's really heavy. This should be fine though as we are moving towards
the minimal relay chain.

[#5384]: MaybeConsideration extension trait for Consideration

The trait allows for the management of tickets that may represent no cost. While
the MaybeConsideration still requires proper handling, it introduces the ability
to determine if a ticket represents no cost and can be safely forgotten without any
side effects.

The new trait is particularly useful when a consumer expects the cost to be zero under
certain conditions (e.g., when the proposal count is below a threshold N) and does not want
to store such consideration tickets in storage. The extension approach allows us to avoid
breaking changes to the existing trait and to continue using it as a non-optional version
for migrating pallets that utilize the Currency and fungible traits for holds and
freezes, without requiring any storage migration.

[#5359]: Make ticket non-optional and add ensure_successful method to Consideration trait

Make ticket non-optional and add ensure_successful method to Consideration trait.

Reverts the optional return ticket type for the new function introduced in
polkadot-sdk/4596 and adds a helper
ensure_successful function for the runtime benchmarks.
Since the existing FRAME pallet represents zero cost with a zero balance type rather than
None in an option, maintaining the ticket type as a non-optional balance is beneficial
for backward compatibility and helps avoid unnecessary migrations.

[#5466]: frame-omni-bencher maintenance

Changes:

  • Set default level to Info again. Seems like a dependency update set it to something higher.
  • Fix docs to not use --locked since we rely on dependency bumps via cargo.
  • Add README with rust docs.
  • Fix bug where the node ignored --heap-pages argument.

Changelog for Node Operator

ℹ️ These changes are relevant to: Those who don't write any code and only run code.

[#5129]: Prevent finalized notification hoarding in beefy gadget

This PR fixes the error message "Notification block pinning limit
reached." during warp sync. Finality notifications in BEEFY are now
constantly being consumed and don't keep blocks pinned for extended
periods of time.

[#5326]: Update Readme of the polkadot crate

Updated Readme of the polkadot crate.

[#5436]: Add Polkadot Coretime Chain genesis chain-spec

The Polkadot Coretime Chain can now be run as all other system parachains without specifying a
chain-spec. However this will soon be deprecated and --chain ./chain-spec.json should continue
to be used instead.

[#5240]: Warn on empty public-addr when starting a validator node

This PR shows a warning when the --public-addr CLI parameter is missing for validators.
In the future, we'll transform this warning into a hard failure.
Validators are encouraged to provide this parameter for better availability over the network.

[#5197]: Prevent ConsensusReset by tolerating runtime API errors in BEEFY

After warp sync, the BEEFY worker was trying to execute runtime calls on
blocks which had their state already pruned. This led to an error and restarting
of the beefy subsystem in a loop. After this PR, the worker tolerates call errors and therefore prevents this
worker restart loop.

[#4792]: rpc: bind to ipv6 if available and add CLI --experimental-rpc-endpoint to specify listen addr

This PR changes/adds the following:

  1. The default setting is that substrate starts a rpc server that listens to localhost both ipv4 and ipv6 on the same port.
    ipv6 is allowed to fail because some platforms may not support it
  2. A new RPC CLI option --experimental-rpc-endpoint is introduced which allows to configure arbitrary listen addresses including the port,
    if this is enabled no other interfaces are enabled.
  3. If the local addr is not found for any of the sockets the server is not started and throws an error.
  4. Remove the deny_unsafe from the RPC implementations instead this is an extension to allow different polices for different interfaces/sockets
    such one may enable unsafe on local interface and safe on only the external interface.
  5. This new --experimental-rpc-endpoint has several options and in the help menu all possible parameters are documented.
  6. The log emitted by jsonrpc server when it has been started has been modified to indicate all started rpc endpoints.

So for instance it's now possible to start up three RPC endpoints as follows:

$ polkadot --experimental-rpc-endpoint "listen-addr=127.0.0.1:9944,methods=unsafe" --experimental-rpc-endpoint "listen-addr=0.0.0.0:9945,methods=safe,rate-limit=100" --experimental-rpc-endpoint "listen-addr=[::1]:9944,optional=true"

[#5196]: Bring benchmark inline with reference machine used for weights

  • BLAKE2-256 reference values were too low(~30%) when compared with the machine used for generating
    the weights, so it was brought in sync with results on the reference hardware recommended here:
    https://wiki.polkadot.network/docs/maintain-guides-how-to-validate-polkadot#reference-hardware
  • SR25519-Verify reference values were too low(~10%) when compared with the machine used for generating
    the weights, so it was brought in sync with results on the reference hardware recommended here:
    https://wiki.polkadot.network/docs/maintain-guides-how-to-validate-polkadot#reference-hardware
  • Validators where the BLAKE2-256 and SR25519-Verify were barely passing, might received the
    warning that they are not compliant anymore, this should not be treated as critical, but they
    should take the necessary steps to become compliant in the near/mid-term future.
  • Note!: The reference hardware requirements have not been increased we just fixed the benchmark which
    was wrongly reporting lower spec HW as being compliant.

[#5124]: Add Polkadot Chain genesis chainspec

The Polkadot People Chain can now be run as all other system parachains without specifying a
chainspec. However this will soon be deprecated and --chain ./chainspec.json should continue
to be used instead.

[#5214]: make polkadot-parachain startup errors pretty

Changed the format of how polkadot-parachain prints the startup errors to include
the full displayable context.

[#5392]: Don't disconnect disabled nodes sending us dispute messages

No longer disconnect peers which we consider disabled when raising
disputes as this will affect the approval process and thus finality.

Changelog for Runtime User

ℹ️ These changes are relevant to: Anyone using the runtime. This can be a token holder or a dev writing a front end for a chain.

[#5036]: [pallet_contracts] Modify the storage host function benchmarks to be run on an unbalanced storage trie

This PR modifies the storage host function benchmarks. Previously, they were run
on an empty storage trie. Now, they are run on an unbalanced storage trie
to reflect the worst-case scenario. This approach increases the storage host
function weights and decreases the probability of DoS attacks.

[#4424]: Coretime auto renewal

With the additions in this PR, any task that utilizes a core that can be auto-renewed
can enable auto-renewal. The renewal is paid from the task's sovereign account.
The two new extrinsics for controlling auto-renewal are enable_auto_renew and
disable_auto_renew.

[#4613]: pallet-conviction-voting: Include events for vote and remove vote

Introduce event called Voted: { who: T::AccountId, vote: AccountVote<BalanceOf<T, I>> } and VoteRemoved: { who: T::AccountId, vote: AccountVote<BalanceOf<T, I>> }

[#5436]: Add Polkadot Coretime Chain genesis chain-spec

The Polkadot Coretime Chain chain-specs have been added to the polkadot-sdk repo and can now be
pulled from there along with all other system chains.

[#4938]: introduce pallet-parameters to Westend to parameterize inflation

This PR adds pallet-parameters to the Westend runtime, and makes the inflation formula be
adjustable based on this.

Moreover, the old era_payout function has been removed from polkadot_runtime_common and is
replaced by relay_era_payout. This function is only meant to be used in the Polkadot relay
chains, and other users are encouraged to provide their own implementation of type EraPayout.

[#5131]: Swap for paying delivery fees in different assets

If the AssetExchanger is configured on a runtime, the XCM executor is now able to swap assets
to pay for delivery fees.
This was already possible for execution fees via the SwapFirstAssetTrader.
A runtime where this will be possible is Asset Hub.
That means reserve asset transfers from Parachain A to Parachain B passing through Asset Hub no
longer need to have any DOT to pay for fees on AssetHub.
They can have any asset in a pool with DOT on Asset Hub, for example USDT or USDC.

[#4460]: xcm-executor: allow deposit of multiple assets if at least one of them satisfies ED

XCM programs that deposit assets to some new (empty) account will now succeed if at least
one of the deposited assets satisfies ED. Before this change, the requirement was that the
first asset had to satisfy ED, but assets order can be changed during reanchoring so it
is not reliable. Now, ordering doesn't matter, any one(s) of them can satisfy ED for the
whole deposit to work.

[#4973]: [pallet_contracts] Increase the weight of the deposit_event host function to limit the memory used by events.

This PR updates the weight of the deposit_event host function by adding
a fixed ref_time of 60,000 picoseconds per byte. Given a block time of 2 seconds
and this specified ref_time, the total allocation size is 32MB.

[#5124]: Add Polkadot Chain genesis chainspec

The Polkadot People Chain chainspecs have been added to the polkadot-sdk repo and can now be
pulled from there along with all other system chains.

[#5067]: Fix region nonfungible implementation

PR fixes the issue with the current implementation where minting causes
the region coremask to be set to Coremask::complete regardless of the
actual coremask of the region.

Rust compiler versions

This release was built and tested against the following versions of rustc.
Other versions may work.

  • Rust Stable: "1.77.0"

Runtimes

The information about the runtimes included in this release can be found below.
The runtimes have been built using srtool v0.15.0 and rustc 1.77.0 (aedd173a2 2024-03-17).

Rococo

🏋️ Runtime Size:          1.92 MB (2017855 bytes)
🔥 Core Version:          rococo-1016000 (parity-rococo-v2.0-0.tx26.au0)
🗜 Compressed:            Yes: 78.47%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xe6bb20692e2daeabb59c823dabcd839677a870b9424ac7e8050103697ab29ef6
🗳️ authorizeUpgrade hash: 0xe2f9b9ee2126fbcbeb5ab170699790783a3a2b8c4d41ad0d344440f0a5a1d0c0
🗳️ Blake2-256 hash:       0xd2fcb910ba638a5c4ee2d7fd7f6d12a8b87fc525b932c293ca31a9ff42fc60fe
📦 IPFS:                  QmVCu8rHqkjWpsaAxFuvfKUstk3A73EHuiTXGDE6i2qP2H

Rococo Assethub

🏋️ Runtime Size:          1.53 MB (1602358 bytes)
🔥 Core Version:          statemine-1016000 (statemine-0.tx16.au1)
🗜 Compressed:            Yes: 79.03%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x2fffa3d8ecc7dee72a58e4852c468f041d6dbf17a188afe8a55616a546a64faa
🗳️ authorizeUpgrade hash: 0x9a7920d9d8052115e09ca464fc7f3ee54b9b3aa1cfc589e78338af846c90f071
🗳️ Blake2-256 hash:       0xc59c39bce06808052f622a6aed554234ab1c0f0841a50edf82bf26a25953afc1
📦 IPFS:                  Qmd4xELpUU38VgAjF1snbdZsYSixGoPaAwX8zMCGQKgaWj

Rococo Bridgehub

🏋️ Runtime Size:          1.43 MB (1494925 bytes)
🔥 Core Version:          bridge-hub-rococo-1016000 (bridge-hub-rococo-0.tx5.au1)
🗜 Compressed:            Yes: 78.38%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xad99b4bb2b4ed45714f0231ae3077d39c7fbef99a95f45054907c7b7a275e801
🗳️ authorizeUpgrade hash: 0x1c0ada7aa021c8fe012271f78bdabc9b41454f8f5d5b668cc6aa1a98ce1c2d04
🗳️ Blake2-256 hash:       0x108a0f2a50076270b3c537bdd3151d544aded9bb1257c47b9204122d9a2c4b29
📦 IPFS:                  QmQ5v3iSpXZhyqMgrPcS8r2Pm7j88pP8pGeYG6moUQd6Lm

Rococo Contracts

🏋️ Runtime Size:          1.46 MB (1530334 bytes)
🔥 Core Version:          contracts-rococo-1016000 (contracts-rococo-0.tx7.au1)
🗜 Compressed:            Yes: 80.02%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x38c6df1f93a40a3c62c040b06f2306e05bf2b1911a3e1c8db7b5006cc54107ff
🗳️ authorizeUpgrade hash: 0x4a8a561da97807e074490eec00a638db8b308a7989a5afc4ac183b6c868f8232
🗳️ Blake2-256 hash:       0x63bdc13934c685098f1158ae604b1acd955b32089af8aa4183f8bdb456216cf2
📦 IPFS:                  QmWtU77Fp26mAXcsj3ZsVdvaXAxjxSwUEDo41UdAxXvXN7

Rococo Coretime

🏋️ Runtime Size:          1.03 MB (1082435 bytes)
🔥 Core Version:          coretime-rococo-1016000 (coretime-rococo-0.tx2.au1)
🗜 Compressed:            Yes: 78.69%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x897f758ebd8a1ec5533d14b2837a55cbbac7e4e1be6939e1e4a3878a5cce2ac2
🗳️ authorizeUpgrade hash: 0x421ab2e62feea87604dfa2bb758983d79138ba78c05547825d18b218259b0158
🗳️ Blake2-256 hash:       0x0560909baf0ece024d770518941fd8311abe6661acfcc5f48f585741cc749708
📦 IPFS:                  QmNhFzSN6Cpq5zPh1C7A7cdY2xsbu2EgmxR1ZVe6wsKuLV

Rococo People

🏋️ Runtime Size:          1.00 MB (1050564 bytes)
🔥 Core Version:          people-rococo-1016000 (people-rococo-0.tx1.au1)
🗜 Compressed:            Yes: 78.82%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x965c489f72fc35a21cacd03bbe9ee39d6b833918ae668dcc23540d48a6bb94db
🗳️ authorizeUpgrade hash: 0x07399e4e938400bdd5a51172aaeae8f4a62a5edba48278fe8968d9d282ac042d
🗳️ Blake2-256 hash:       0x0b1bdb422e56982347a68e4075e98560a7702000824be9ed10a614b13af17f48
📦 IPFS:                  QmRbQ6r1fp2iH2jja2VqHgis98owJjRzffffScZcZhhdjV

Westend

🏋️ Runtime Size:          1.89 MB (1982607 bytes)
🔥 Core Version:          westend-1016000 (parity-westend-0.tx26.au2)
🗜 Compressed:            Yes: 78.82%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0xf41ed23cb5806cb7b8c51da8e98dcefbd6882ee7e8f93ddad02e3a48e541f2a3
🗳️ authorizeUpgrade hash: 0x6ff1e2ddf761cbc5d1126b38a73dc24f547e9296c3a708ca2cce95f13603e824
🗳️ Blake2-256 hash:       0x5d052b902fb2499ee65a1ced928b4d5ea02b1f6d9de6dd11eb465d2b2d75616f
📦 IPFS:                  QmSpRDgwr8KJtAKweahU9GwjDJatGkfenKk4SFGdvtLMA1

Westend Assethub

🏋️ Runtime Size:          1.40 MB (1471821 bytes)
🔥 Core Version:          westmint-1016000 (westmint-0.tx16.au1)
🗜 Compressed:            Yes: 80.25%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x0673507a6fdfd253af77f87227c5178a32aa35c63d3333577e34815d58f01dfb
🗳️ authorizeUpgrade hash: 0xfda6eb3c25183c0859720962cd2d35e54461ba6ea7a2a8539a217bd6899854c9
🗳️ Blake2-256 hash:       0xf7223bb770eec18c885e4d227e490194264bdcaab7c5b8312f669b2fa8e9f0be
📦 IPFS:                  QmS3qFHnX77BFkgtzREUmBDdBHVZrhXV5HQhtuUDqg4sUa

Westend Bridgehub

🏋️ Runtime Size:          1.42 MB (1485703 bytes)
🔥 Core Version:          bridge-hub-westend-1016000 (bridge-hub-westend-0.tx5.au1)
🗜 Compressed:            Yes: 77.88%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x063b42e15c4a527432f6e7ce53fc7a12881aff571d24053fc1e3ea54fb915e3f
🗳️ authorizeUpgrade hash: 0x0077514ae0d41ce2e12698fd99cf4e7cae9651c43444a687780b36a3756f3812
🗳️ Blake2-256 hash:       0xd1c1cf195a2f1cbe17a2018a5b0c9daa66b6eca70f6e7a3f1bbfc7f023830a46
📦 IPFS:                  QmccTPEqsKtfZpHU6FvF73xiwWtyubnTkH3FHWg1EEjF5U

Westend Collectives

🏋️ Runtime Size:          1.21 MB (1268280 bytes)
🔥 Core Version:          collectives-westend-1016000 (collectives-westend-0.tx6.au1)
🗜 Compressed:            Yes: 79.81%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x481b71d2f3baf053e266f9d3569680aec45219c8aedd1d9d7cd651d094cdb918
🗳️ authorizeUpgrade hash: 0x4271e87f41e55d603494efb893dfb31255592b19b696e9be848d836ba2b6e35d
🗳️ Blake2-256 hash:       0x618f1f8413b112a31de7eafdee3f7c63d6f0934eba80650d8672ffa659168f3d
📦 IPFS:                  QmbwwNQB5DQ6b1ph7bqwt7WGBiuaijXHi4nRqpGncjdhGE

Westend Coretime

🏋️ Runtime Size:          1.02 MB (1072068 bytes)
🔥 Core Version:          coretime-westend-1016000 (coretime-westend-0.tx2.au1)
🗜 Compressed:            Yes: 78.67%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x209382a3ace962b92228210d8f7d5865c512f417d57a6553b690321dfe5adebf
🗳️ authorizeUpgrade hash: 0xea161d17af8fcd87368f481275bf9ba78d1abf8c742d3b98f70dc9cc1b3d2a3a
🗳️ Blake2-256 hash:       0x6a361d75fb8246b1597ab2251e1172b50e886afa3fe6e0db50ae8d42f323e407
📦 IPFS:                  QmPF86hGAGFdp9fq88gCTjAQSTjNwi7Yr4MG87z4Sf5QGu

Westend Glutton

🏋️ Runtime Size:          613.27 kB (627988 bytes)
🔥 Core Version:          glutton-westend-1016000 (glutton-westend-0.tx1.au1)
🗜 Compressed:            Yes: 76.49%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x6c55da96d8ce49d4ae7d2fcb2c204bd5bc6ce38c6cac31cd6b7f2c9ac4a74bb3
🗳️ authorizeUpgrade hash: 0x7c3a1f32d1d0804079ade4bcfdc033eff7d12826713b46c75e890c2a9fd2d4f5
🗳️ Blake2-256 hash:       0x74ad9321637522054b21f8e0f45140cb7168fb0cac7dd50bd73cd9140b564abc
📦 IPFS:                  Qme75xViFGs11kJjRWfJRrLpa1RVBGtqj1aFoteczJB99r

Westend People

🏋️ Runtime Size:          1.00 MB (1053041 bytes)
🔥 Core Version:          people-westend-1016000 (people-westend-0.tx1.au1)
🗜 Compressed:            Yes: 78.77%
🎁 Metadata version:      V14
🗳️ system.setCode hash:   0x50a194e4a898ca7cc48d1eedfb62173a7c41de1688e2387c0c6856439bfdb44e
🗳️ authorizeUpgrade hash: 0x63501a1adb9a5d43a81a93147b8b42a69c0e66117ee87e2b9789c1281b6fbdf3
🗳️ Blake2-256 hash:       0xa22f6d549225b1fd5d86a9991402e1529dac5ea86f78dcf647cc875a29bd22d9
📦 IPFS:                  QmZUe6FpZ2GUh9dpmCiW5EiVQoAvXzMSRAQf3bCCbbHQ89

Docker images

The docker images for the polkadot node binary and the polkadot-parachain binary can be found at Docker hub (will be available a few minutes after the release has been published):

You may also pull it with:

docker pull parity/polkadot:latest

or

docker pull parity/polkadot-parachain:latest

@EgorPopelyaev
Copy link
Contributor

EgorPopelyaev commented Sep 9, 2024

The current release candidate is released as pre-release so that it will be available for the external teams to test. The westend, roccoco and their parachains are updated to this rc version as well:

@paritytech paritytech deleted a comment from Polkadot-Forum Sep 9, 2024
@alexggh
Copy link
Contributor

alexggh commented Sep 10, 2024

The current release candidate is released as pre-release so that it will be available for the external teams to test. The westend, roccoco and their parachains are updated to this rc version as well:

The polkadot node for Rococo and Westend does not seem to be updated is that just a miss or is it work in progress ?

@EgorPopelyaev
Copy link
Contributor

It is work in progress yet

@sandreim
Copy link
Contributor

What is actually planned in the QA Testing phase. Is there a test plan for it ?

@ggwpez
Copy link
Member

ggwpez commented Sep 10, 2024

What is actually planned in the QA Testing phase. Is there a test plan for it ?

There is no testing plan, but it would be good to have one, yes. The only thing we do now is to update the nodes&runtimes and then wait if someone reports a bug.
Do you have something specific in mind? Maybe stress testing the node internally or so?

@sandreim
Copy link
Contributor

The only thing we do now is to update the nodes&runtimes and then wait if someone reports a bug.

This probably is enough, but it depends on how much external teams actually test.

Do you have something specific in mind? Maybe stress testing the node internally or so?

One thing that we could do is burn-in the release candidate on a few Kusama validators.

@BulatSaif
Copy link
Contributor

I found small bug in stable2409 release: #5677

@BulatSaif
Copy link
Contributor

The only thing we do now is to update the nodes&runtimes and then wait if someone reports a bug.

The first bug was reported. ^

Is this the correct place to post bugs, or do we have a better place for that?

@ggwpez
Copy link
Member

ggwpez commented Sep 11, 2024

Is this the correct place to post bugs, or do we have a better place for that?

Yes this is perfect, thanks 😄

@acatangiu
Copy link
Contributor Author

I found small bug in stable2409 release: #5677

We should also put #5677 on stable2409s project board if we want/need to fix it in this release.

@ggwpez
Copy link
Member

ggwpez commented Sep 13, 2024

@EgorPopelyaev @BulatSaif what is the status of the nodes being upgraded?
Please post updates in here - if any.

@BulatSaif
Copy link
Contributor

BulatSaif commented Sep 15, 2024

@EgorPopelyaev @BulatSaif what is the status of the nodes being upgraded? Please post updates in here - if any.

Most of the nodes were upgraded as requested by https://github.com/paritytech/devops/issues/3539. You can check the version in Telemetry.

However, RPC nodes (Kusama and Polkadot) were not updated because the new version exposes unsafe RPC methods by default. This issue has already been fixed in #5678.

@alexggh
Copy link
Contributor

alexggh commented Sep 16, 2024

Most of the nodes were upgraded as requested by https://github.com/paritytech/devops/issues/3539. You can check the version in Telemetry.

Both Westend and Rococo relay chain node don't seem to have been updated, shouldn't we updating those as well ?

@BulatSaif
Copy link
Contributor

Most of the nodes were upgraded as requested by paritytech/devops#3539. You can check the version in Telemetry.

Both Westend and Rococo relay chain node don't seem to have been updated, shouldn't we updating those as well ?

Yes, it should. I have reopened the issue.

@ggwpez
Copy link
Member

ggwpez commented Sep 19, 2024

Westend should be updated now @alexggh

@ggwpez
Copy link
Member

ggwpez commented Sep 27, 2024

Status Update

The release is now out and ready to be used. Next step is for The Fellowship to pick it up and integrate it into the runtimes repo. Full changelog is here.

Screenshot 2024-09-27 at 13 25 39

We should update the testnet runtimes and all nodes to the new version.

@kianenigma kianenigma pinned this issue Oct 1, 2024
@acatangiu acatangiu moved this from QA and Security Audit to Released in Polkadot-SDK Release Calendar Oct 14, 2024
@acatangiu acatangiu closed this as completed by moving to Released in Polkadot-SDK Release Calendar Oct 14, 2024
@github-project-automation github-project-automation bot moved this from In progress to Done in Stable2409 LTS Release Oct 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Released
Status: Done
Development

No branches or pull requests

6 participants