Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Statemine v4 Release Checklist #627

Closed
11 tasks done
apopiak opened this issue Sep 29, 2021 · 5 comments
Closed
11 tasks done

Statemine v4 Release Checklist #627

apopiak opened this issue Sep 29, 2021 · 5 comments
Labels
T7-system_parachains This PR/Issue is related to System Parachains.

Comments

@apopiak
Copy link
Contributor

apopiak commented Sep 29, 2021

Release Checklist

This is the release checklist for Statemine v4. All following
checks should be completed before publishing a new release of the
Statemine runtime. The current release candidate can be
checked out with git checkout release-statemine-v4

Runtime Releases

These checks should be performed on the codebase.

The following checks can be performed after we have forked off to the release-
candidate branch or started an additional release candidate branch (rc-2, rc-3, etc)

  • Verify new migrations complete successfully, and the
    runtime state is correctly updated for any public (non-private/test)
    networks. (There should be no migrations for this release.)
  • Verify Polkadot JS API are up to date with the latest
    runtime changes.
  • Push runtime upgrade to Westmint and verify network stability.

All Releases

Notes

Burn In

Ensure that Parity DevOps has run the new release on Westmint and Statemine collators prior to publishing the release.

Build Artifacts

Add any necessary assets to the release. They should include:

  • Linux binary
  • GPG signature of the Linux binary
  • SHA256 of binary
  • Source code
  • Wasm binaries of any runtimes

Release notes

The release notes should list:

  • The priority of the release (i.e., how quickly users should upgrade) - this is
    based on the max priority of any client changes.
  • Which native runtimes and their versions are included
  • The proposal hashes of the runtimes as built with
    srtool
  • Any changes in this release that are still awaiting audit

The release notes may also list:

  • Free text at the beginning of the notes mentioning anything important
    regarding this release
  • Notable changes separated into sections.

Spec Version

A runtime upgrade must bump the spec number. This may follow a pattern with the
client release (e.g. runtime v12 corresponds to v0.8.12, even if the current
runtime is not v11).

Old Migrations Removed

Previous on_runtime_upgrade functions from old upgrades should be removed.

New Migrations

Ensure that any migrations that are required due to storage or logic changes
are included in the on_runtime_upgrade function of the appropriate pallets.

Extrinsic Ordering

Offline signing libraries depend on a consistent ordering of call indices and
functions. Compare the metadata of the current and new runtimes and ensure that
the module index, call index tuples map to the same set of functions. In case
of a breaking change, increase transaction_version.

To verify the order has not changed:

  1. Download the latest release-candidate binary either from the draft-release
    on Github.
  • Todo: Add release link for cumulus in template here?
  1. Run the release-candidate binary using a local chain:
  • Todo: Add polkadot-collator invocation for Statemine and Westmint in template here.
  1. Use polkadot-js-tools to compare
    the metadata:
  • Todo: Add Statemine endpoint in template here
  1. Things to look for in the output are lines like:
  • [Identity] idx 28 -> 25 (calls 15) - indicates the index for Identity has changed
  • [+] Society, Recovery - indicates the new version includes 2 additional modules/pallets.
  • If no indices have changed, every modules line should look something like [Identity] idx 25 (calls 15)

Note: Adding new functions to the runtime does not constitute a breaking change
as long as they are added to the end of a pallet (i.e., does not break any
other call index).

Proxy Filtering

The runtime contains proxy filters that map proxy types to allowable calls. If
the new runtime contains any new calls, verify that the proxy filters are up to
date to include them.

Benchmarks

  • Todo: Update the below instructions for Statemint
    There are three benchmarking machines reserved for updating the weights at
    release-time. To initialise a benchmark run for each production runtime
    (westend, kusama, polkadot):
  • Go to https://gitlab.parity.io/parity/polkadot/-/pipelines?page=1&scope=branches&ref=master
  • Click the link to the last pipeline run for master
  • Start each of the manual jobs:
    • 'update_westend_weights'
    • 'update_polkadot_weights'
    • 'update_kusama_weights'
  • When these jobs have completed (it takes a few hours), a git PATCH file will
    be available to download as an artifact.
  • On your local machine, branch off master
  • Download the patch file and apply it to your branch with git patch patchfile.patch
  • Commit the changes to your branch and submit a PR against master
  • The weights should be (Currently manually) checked to make sure there are no
    big outliers (i.e., twice or half the weight).

Polkadot JS

Ensure that a release of Polkadot JS API contains any new types or
interfaces necessary to interact with the new runtime.

@apopiak
Copy link
Contributor Author

apopiak commented Sep 29, 2021

release candidate: #626

@chevdor
Copy link
Contributor

chevdor commented Sep 29, 2021

Introduced in #572, merged on the 13.8.
Statemine v3 was released on the 18.8 including #572.

@apopiak
Copy link
Contributor Author

apopiak commented Sep 29, 2021

need to bump transaction version because of paritytech/polkadot#3693

@chevdor
Copy link
Contributor

chevdor commented Sep 29, 2021

I 👍 the above from another angle:

statemine

🛠  modules.0.constants.4.value.                       "2473746174656D696E652473746174656D696E6501000000030000000000000028DD718D5CC53262D401000000DF6ACB689907609B0300000037E397FC7C91F5E40100000040FE3AD401F8959A05000000D2BC9897EED08F1503000000F78B278BE53F454C02000000AB3C0572291FEB8B01000000BC9D89904F5B923F0100000037C8BB1350A9A2A801000000EA93E3F16F3D69620100000001000000" --> "2473746174656D696E652473746174656D696E6501000000040000000000000028DD718D5CC53262D401000000DF6ACB689907609B0300000037E397FC7C91F5E40100000040FE3AD401F8959A05000000D2BC9897EED08F1503000000F78B278BE53F454C02000000AB3C0572291FEB8B01000000BC9D89904F5B923F0100000037C8BB1350A9A2A801000000EA93E3F16F3D69620100000001000000"
🛠  modules.13.calls.0.arguments.0.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.13.calls.0.arguments.1.ty.                            "Xcm<()>" --> "Box<VersionedXcm<()>>"
🛠  modules.13.calls.1.arguments.0.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.13.calls.1.arguments.1.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.13.calls.1.arguments.2.ty.                    "Vec<MultiAsset>" --> "Box<VersionedMultiAssets>"
🛠  modules.13.calls.1.arguments.3.name.                      "dest_weight" --> "fee_asset_item"
🛠  modules.13.calls.1.arguments.3.ty.                             "Weight" --> "u32"
🛠  modules.13.calls.2.arguments.0.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.13.calls.2.arguments.1.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.13.calls.2.arguments.2.ty.                    "Vec<MultiAsset>" --> "Box<VersionedMultiAssets>"
🛠  modules.13.calls.2.arguments.3.name.                      "dest_weight" --> "fee_asset_item"
🛠  modules.13.calls.2.arguments.3.ty.                             "Weight" --> "u32"
🛠  modules.13.calls.3.arguments.0.ty.                  "Box<Xcm<T::Call>>" --> "Box<VersionedXcm<T::Call>>"
🛠  modules.13.event.0.arguments.0.                      "xcm::v0::Outcome" --> "xcm::latest::Outcome"
🛠  modules.16.constants.0.value.                                "822D0000" --> "3EF80000"
Changes:
- unmodified    = 80.00% (96)
- added         =  3.33% (4)
- modified      = 16.67% (20)
- removed       =  0.00% (0)
Skipped:
- documentation =     4
- bytes         =     0

westmint

🛠  modules.0.constants.4.value.                       "20776573746D696E7420776573746D696E7401000000030000000000000028DD718D5CC53262D401000000DF6ACB689907609B0300000037E397FC7C91F5E40100000040FE3AD401F8959A05000000D2BC9897EED08F1503000000F78B278BE53F454C02000000AB3C0572291FEB8B01000000BC9D89904F5B923F0100000037C8BB1350A9A2A801000000EA93E3F16F3D69620100000001000000" --> "20776573746D696E7420776573746D696E7401000000040000000000000028DD718D5CC53262D401000000DF6ACB689907609B0300000037E397FC7C91F5E40100000040FE3AD401F8959A05000000D2BC9897EED08F1503000000F78B278BE53F454C02000000AB3C0572291FEB8B01000000BC9D89904F5B923F0100000037C8BB1350A9A2A801000000EA93E3F16F3D69620100000001000000"
🛠  modules.13.constants.0.value.                                "822D0000" --> "3EF80000"
🛠  modules.18.calls.0.arguments.0.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.18.calls.0.arguments.1.ty.                            "Xcm<()>" --> "Box<VersionedXcm<()>>"
🛠  modules.18.calls.1.arguments.0.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.18.calls.1.arguments.1.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.18.calls.1.arguments.2.ty.                    "Vec<MultiAsset>" --> "Box<VersionedMultiAssets>"
🛠  modules.18.calls.1.arguments.3.name.                      "dest_weight" --> "fee_asset_item"
🛠  modules.18.calls.1.arguments.3.ty.                             "Weight" --> "u32"
🛠  modules.18.calls.2.arguments.0.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.18.calls.2.arguments.1.ty.                      "MultiLocation" --> "Box<VersionedMultiLocation>"
🛠  modules.18.calls.2.arguments.2.ty.                    "Vec<MultiAsset>" --> "Box<VersionedMultiAssets>"
🛠  modules.18.calls.2.arguments.3.name.                      "dest_weight" --> "fee_asset_item"
🛠  modules.18.calls.2.arguments.3.ty.                             "Weight" --> "u32"
🛠  modules.18.calls.3.arguments.0.ty.                  "Box<Xcm<T::Call>>" --> "Box<VersionedXcm<T::Call>>"
🛠  modules.18.event.0.arguments.0.                      "xcm::v0::Outcome" --> "xcm::latest::Outcome"
Changes:
- unmodified    = 80.17% (97)
- added         =  3.31% (4)
- modified      = 16.53% (20)
- removed       =  0.00% (0)
Skipped:
- documentation =     4
- bytes         =     0

@apopiak apopiak added the T7-system_parachains This PR/Issue is related to System Parachains. label Oct 5, 2021
@apopiak
Copy link
Contributor Author

apopiak commented Oct 14, 2021

released https://github.com/paritytech/cumulus/releases/tag/statemine_v4 🎉

@apopiak apopiak closed this as completed Oct 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
T7-system_parachains This PR/Issue is related to System Parachains.
Projects
None yet
Development

No branches or pull requests

2 participants