Polkadot v1.13.0
This release contains the changes from polkadot-v1.12.0
to polkadot-v1.13.0
.
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.
[#4431]: Statement-Distribution validator disabling changes
In preparation for launching re-enabling (#2418), we need to adjust the disabling strategy of statement-distribution to use the relay parent's state instead of the latest state (union of active leaves). This will also ensure no raciness of getting the latest state vs accepting statements from disabling validators at the cost of being more lenient/potentially accepting more statements from disabled validators.
[#4410]: [sc-chain-spec] Remove deprecated code
The RuntimeGenesisConfig generic type parameter was removed from GenericChainSpec struct.
ChainSpec::from_genesis method was removed.
Removed related deprecated code from sc-chain-spec
.
This change simplifies the codebase and ensures the use of up-to-date definitions.
[#4555]: Move para_id
to MockValidationDataInherentDataProvider
This moves the para_id
from MockXcmConfig
to MockValidationDataInherentDataProvider
to make it more prominent. The para_id
should be set to the parachain id of the parachain that gets mocked to ensure that the relay chain storage proof is setup correctly etc.
[#4595]: Remove elastic-scaling-experimental
feature flag
The feature was masking the ability of collators to respond with CollationWithParentHeadData
to validator collation fetch requests, a requirement for elastic scaling.
Please note that CollationWithParentHeadData
is only sent by collators of parachains with multiple cores assigned, otherwise collators must respond with CollationFetchingResponse::Collation
[#1644]: Add availability-recovery from systematic chunks
Implements polkadot-fellows/RFCs#47 and adds the logic for availability recovery from systematic chunks.
The /req_chunk/1 req-response protocol is now considered deprecated in favour of /req_chunk/2. Systematic recovery is guarded by a configuration bit in the runtime (bit with index 2 of the node_features field from the HostConfiguration) and must not be enabled until all (or almost all) validators have upgraded to the node version that includes this PR.
[#4471]: Remove prospective-parachains subsystem from collator nodes
Removes the prospective-parachains subsystem from collators. The GetMinimumRelayParents of the implicit view is replaced by direct ChainAPI and runtime calls. The subsystem was causing performance problems when collating connected to an RPC node, due to the high number of runtime API calls, which were unneccessary for a collator.
[#4198]: Replace Multiaddr
& related types with substrate-specific types
Introduce custom types / substrate wrappers for Multiaddr
, multiaddr::Protocol
, Multihash
, ed25519::*
and supplementary еypes like errors and iterators.
Common code in substrate uses these custom types, while libp2p
& litep2p
network backends use their corresponding libraries types.
This is needed to independently upgrade libp2p
& litep2p
dependencies.
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).)
[#3935]: Introduce Polkadot-SDK umbrella crate
Introduces a new "umbrella" crate that re-exports all published crates of the Polkadot-SDK.
This helps developers to select a valid set of versions for all underlying dependencies.
You can now use this create and remove lots of dependencies from your runtime and node crates.
The staging-node-cli
and kitchensink-runtime
both adopt this pattern as an example.
Full docs in docs/sdk/src/reference_docs/umbrella_crate.rs
.
[#4646]: [Identity] Remove double encoding username signature payload
The signature payload for setting a username for an account in pallet-identity
is now just the raw bytes of said username (still including the suffix), removing the need to first encode these bytes before signing.
[#4510]: [Contracts] Remove internal topic index
This PR removes topics from internal events emitted by pallet_contracts. It does not touch the deposit_event
host function used by
smart contracts that can still include topics.
Event topics incurs significant Storage costs, and are only used by light clients to index events and avoid downloading the entire block.
They are not used by Dapp or Indexers that download the whole block anyway.
[#4392]: Remove pallet::getter
usage from both bounties and child bounties pallet
This PR removes pallet::getter
s from pallet-bounties
and pallet-child-bounties
.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#4444]: Rococo AH: cleanup storage
Remove old storage that is left over in the Rococo AH storage.
[#4514]: Removed pallet::getter
usage from pallet-fast-unstake
This PR removed the pallet::getter
s from pallet-fast-unstake
.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#3952]: Storage bound the XCMP queue pallet
Enforce upper limits for the number of active XCMP channels, the number of outgoing XCMP messages per channel and the number of signals per channel.
Integration
If you see this error in your try-runtime-cli:
Max message size for channel is too large.
This means that the V5 migration can be front-run and an attacker could place a large message just right before the migration to make other messages un-decodable.
Please either increase `MaxPageSize` or decrease the `max_message_size` for this channel.
Channel max: 102400, MaxPageSize: 65535
Then increase the MaxPageSize
of the cumulus_pallet_xcmp_queue
to something like this:
type MaxPageSize = ConstU32<{ 103 * 1024 }>;
[#4380]: Remove parametrized-consensus-hook
feature
parametrized-consensus-hook
feature is obsolete and is removed by this PR. The long-deprecated CheckInherents
trait is set to be removed by September 2024.
[#4465]: Bridge: added force_set_pallet_state call to pallet-bridge-grandpa
Added force_set_pallet_state
to the pallet-bridge-grandpa
. It is only callable by the root (governance or sudo) and may be used to update current authorities set and the best finalized header without any additional checks.
[#3905]: Allows Nomination Pool to use different staking strategies including a new DelegateStake strategy.
This PR introduces a new staking strategy called DelegateStake
. This strategy allows the nomination pool to delegate its stake to a validator, that is, funds are locked in user account itself instead of being transferred to the pool account. Includes migration of pools to this strategy for Westend.
[#4274]: Introduce CheckMetadataHash
signed extension
Introduces the new CheckMetadataHash
signed extension. This extension can be added to a runtime to support verifying the metadata hash as described in RFC78.
This removes the requirement for having a metadata portal and in general a centralized authentication of the metadata. With this signed extension the runtime is able to verify that the metadata used by the wallet was correct. This is mainly useful for offline wallets which users need to trust any way, not that useful for online wallets.
There is a guide generate_metadata_hash
for how to integrate this into a runtime that should make it quite easy to integrate the signed extension.
[#4472]: Remove pallet::getter
usage from pallet-democracy
This PR removes the pallet::getter
s from pallet-democracy
.
The syntax StorageItem::<T, I>::get()
should be used instead.
[#4634]: Implement XcmPaymentApi and DryRunApi on all system parachains
The new XcmPaymentApi and DryRunApi have been implement on all westend and rococo system parachains.
These can be used to build UIs that estimate XCM execution and sending, using libraries like PAPI or PJS.
[#4233]: [pallet_contracts] Update Host fn benchnmarks
Update how the host functions are benchmarked.
Instead of benchnarking a contract that calls the host functions, we now benchmark the host functions directly.
[#4249]: Moves runtime macro out of experimental flag
Now that the runtime macro (Construct Runtime V2) has been successfully deployed on Westend, this PR moves it out of the experimental feature flag and makes it generally available for runtime devs.
[#4475]: Deprecate dmp-queue pallet
Schedule the DMP queue pallet for deletion. It is not needed anymore sine #1246.
[#4521]: AdaptPrice trait is now price controlled
The broker pallet price adaptation interface is changed to be less opinionated and more information is made available to the AdaptPrice
trait. A new example impl is included which adapts the price based not on the number of cores sold, but rather on the price that was achieved during the sale to mitigate a potential price manipulation vector. More information here: #4360
[#4571]: Ignore mandatory extrinsics in total PoV size check
The CheckWeight
extension is checking that extrinsic length and used storage proof weight together do not exceed the PoV size limit. This lead to problems when the PoV size was already reached before mandatory extrinsics were applied.The CheckWeight
extension will now allow extrinsics of DispatchClass::Mandatory
to be applied even if the limit is reached.
[#4478]: Snowbridge - Ethereum Client - Reject finalized updates without a sync committee in next store period
Bug fix in the Ethereum light client that stalls the light client when an update in the next sync committee period is received without receiving the next sync committee update in the next period.
[#4131]: Deprecate XCMv2
XCMv2 has been deprecated. It will be removed when XCMv5 is released.
Use version 3 or 4 instead.
[#4621]: Change XcmDryRunApi::dry_run_extrinsic to take a call instead
The XcmDryRunApi::dry_run_extrinsic function was replaced by XcmDryRunApi::dry_run_call.
This new function takes an origin (OriginCaller, the encodable inner variant) and a call instead of an extrinsic.
This was needed to not require the user signing twice, once for the dry-run and a second time to actually submit the extrinsic.
Additionally, calls can now be dry-run for different accounts.
The implementation for this runtime API is now simpler, being call.dispatch(origin.into())
instead of using the Executive
.
[#4645]: make all storage items in parachain-system public
All storage items in cumulus-pallet-parachain-systemare now public. This allows the usage of these storage items from within other runtime-pallets or the runtime itself. For instance, it should allow to read the latests relay state proof to read a certain well-known-key.
Changelog for Node Operator
ℹ️ These changes are relevant to: Those who don't write any code and only run code.
[#4541]: Remove warning about BadCertificate
Version 2
The node was printing the following warning from time to time:
Sending fatal alert BadCertificate
This is not an user error and thus, the warning will now not be printed anymore.
[#4533]: Fixed RPC subscriptions leak when subscription stream is finished
The node may leak RPC subscriptions in some cases, e.g. during author_submitAndWatchExtrinsic
calls. This PR fixes the issue.
[#4595]: Remove elastic-scaling-experimental
feature flag
This change enables elastic scaling support in collators. Please upgrade to latest version, otherwise validator nodes will not be able to back elastic parachain blocks leading to missed rewards.
[#4542]: Adds ability to specify chain type in chain-spec-builder
Currently, chain-spec-builder
only creates a spec with Live chain type. This PR adds the ability to specify it while keeping the same default.
[#1644]: Add availability-recovery from systematic chunks
Implements polkadot-fellows/RFCs#47. This optimisation is guarded by a configuration bit in the runtime and will only be enabled once a supermajority of the validators have upgraded to this version.
It's strongly advised to upgrade to this version.
[#4721]: Skip tree route calculation if no forks present
Fixes an issue with synchronisation on parachains. Once they reached the tip of the chain, nodes would show Preparing 0.0 bps
. This is shown because the node is blocked on calculating the tree route from genesis to the tip of the chain many times. This PR solves that by skipping tree route calculation if there is only one leave. In addition, further optimizations have been done to alleviate long finalization distances.
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.
[#4534]: Add Extra Check in Primary Username Setter
Setting primary usernames requires an additional verification.
[#4503]: Patch pool to handle extra consumer ref when destroying.
An erroneous consumer reference on the pool account is preventing pools from being destroyed. This patch removes the extra reference if it exists when the pool account is destroyed.
[#4646]: [Identity] Remove double encoding username signature payload
The signature payload for setting a username for an account in pallet-identity
is now just the raw bytes of said username (still including the suffix), removing the need to first encode these bytes before signing.
[#4274]: Introduce CheckMetadataHash
signed extension
This brings support for the new Ledger app and similar hardware wallets. These hardware wallets will be able to decode the transaction using the metadata. The runtime will ensure that the metadata used for this decoding process is correct and that the online
wallet did not tried to trick you.
[#4634]: Implement XcmPaymentApi and DryRunApi on all system parachains
The new XcmPaymentApi and DryRunApi have been implement on all westend and rococo system parachains.
You can test them out.
[#3393]: Add MaxRank
Config to pallet-core-fellowship
This PR adds a new Config MaxRank
to the core fellowship pallet. Initially, the maximum rank was set to IX (Grand Master) on the core-fellowship pallet, corresponding to the establishment of the Technical Fellowship and setting the default member count to nine. However, with the introduction of new collectives, this maximum rank is expected to evolve.
[#4339]: Improving on_demand_assigner emitted events
Registering OnDemandOrderPlaced event that is useful for indexers to save data related to on demand orders. Adds SpotPriceSet as a new event to monitor on-demand spot prices. It updates whenever the price changes due to traffic.
[#4418]: [pallet_contracts] Add READ_ONLY
flag to contract call
function
This PR implements the READ_ONLY
flag to be used as a Callflag
in the contract call
function.
The flag indicates that the callee is restricted from modifying the state during call execution.
It is equivalent to Ethereum's STATICCALL.
[#4537]: Runtime apis to help with delegate-stake based Nomination Pools.
Introduces a new set of runtime apis to facilitate dapps and wallets to integrate with delegate-stake functionalities of Nomination Pools. These apis support pool and member migration, as well as lazy application of pending slashes of the pool members.
[#4521]: AdaptPrice trait is now price controlled
The price controller of the Rococo and Westend Coretime chain will be adjusted with this release. This will very likely be used in the
fellowship production runtime to have a much larger leadin. This fixes a price manipulation issue we discovered with the Kusama launch.
[#4131]: Deprecate XCMv2
XCMv2 has been deprecated. It will be removed when XCMv5 is released.
Use version 3 or 4 instead.
[#4621]: Change XcmDryRunApi::dry_run_extrinsic to take a call instead
The XcmDryRunApi now dry-run calls instead of extrinsics.
This means it's possible to dry-run an extrinsic before signing it, allowing for seamless dry-running in dapps.
Additionally, calls can now be dry-run for different accounts.
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.85 MB (1940025 bytes)
🔥 Core Version: rococo-1013000 (parity-rococo-v2.0-0.tx26.au0)
🗜 Compressed: Yes: 78.77%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x4fc2f78361819e76535461db7c9ecd6102425610e4ca4ebeef0fe66cbb7a4899
🗳️ authorizeUpgrade hash: 0xd0dbfb445038fbadfc71aafbe2219d917f270446e8f08d2c6dc30237b31380af
🗳️ Blake2-256 hash: 0x9e2ef9def2d1deae663a0f42447115abf02af9ef3d2775e5a05a403cc4e82bb5
📦 IPFS: QmauLvX5xjWqRkdsTZFHo56CW5CZrHGsjc3T4SFosDJjRb
Rococo Assethub
🏋️ Runtime Size: 1.32 MB (1384465 bytes)
🔥 Core Version: statemine-1013000 (statemine-0.tx16.au1)
🗜 Compressed: Yes: 80.14%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x3fa4fbbd2f68ba09354d196f9140e0403939941949e9a09a07e04769cda06652
🗳️ authorizeUpgrade hash: 0x1de2858c083ef295ef0b487776aed2abd671aafe61b1f3279f1db60c969291d4
🗳️ Blake2-256 hash: 0x54d5f3b61b601eedd3d4866e1a9047426bf17ad5be28455adf79eef15c3b80ab
📦 IPFS: QmZVMw3KHunpW3xWYVw8YbiKVasQNN3eqWK5dkjXzuKvEC
Rococo Bridgehub
🏋️ Runtime Size: 1.35 MB (1420727 bytes)
🔥 Core Version: bridge-hub-rococo-1013000 (bridge-hub-rococo-0.tx5.au1)
🗜 Compressed: Yes: 78.11%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xb6246b2e01b06c9d71f128ebbec6df5fd7d37924d2811f2a7a8e285078e704f6
🗳️ authorizeUpgrade hash: 0x779604b4b1005718955db5a16ca87e7278930011f059656560979cd001472e6a
🗳️ Blake2-256 hash: 0xc84179bbcc8ec7c3b5309677fda2dca6ad8e57e3ff7dec2dc621d0b6e390ec3c
📦 IPFS: QmXu2XcZN4rDxv9cA5fZiVaHtQnmzBmhNF4pTzQy7HAbuP
Rococo Contracts
🏋️ Runtime Size: 1.27 MB (1327995 bytes)
🔥 Core Version: contracts-rococo-1013000 (contracts-rococo-0.tx7.au1)
🗜 Compressed: Yes: 79.54%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x842993994b07ac78fd304f1b41eb0d7a3c25f938f910476a5c34a33863d36c15
🗳️ authorizeUpgrade hash: 0xb2312b4f21075e33c5fe8a8909ecf200a1bff5b67c987195be3318614267c2d7
🗳️ Blake2-256 hash: 0x447646ca204267443e02e0d3261382ac943cd3b8beec174010b2ce5d476b21e6
📦 IPFS: QmacHcVMRiyEjNp4j8d6rvY3AdYJza8Y4yQMSEDaopqnPT
Rococo Coretime
🏋️ Runtime Size: 1016.36 kB (1040757 bytes)
🔥 Core Version: coretime-rococo-1013000 (coretime-rococo-0.tx1.au1)
🗜 Compressed: Yes: 78.78%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x1c9d128567ee6e8e3d23a9296df3cb5a6bcaf4af2b6d6e318d0288e559a40101
🗳️ authorizeUpgrade hash: 0x2c55c97838bf338a504e1bc7e3e84ef3ee59babcd860d78afd47833cfa687228
🗳️ Blake2-256 hash: 0x961ca182225b46608982c0cc29f6e85cbb186ac3aeefb4f4dfd0144a340b71ec
📦 IPFS: QmQwyw5qk34kurfnhzYVcPff8g6wmZoa35VtB2x6SPDtui
Rococo People
🏋️ Runtime Size: 1004.00 kB (1028100 bytes)
🔥 Core Version: people-rococo-1013000 (people-rococo-0.tx1.au1)
🗜 Compressed: Yes: 78.72%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x5f2b60cd14c0f7da34c9cce22be2e7ebf6d501932b01ec1c5dbbbb5a669f4b89
🗳️ authorizeUpgrade hash: 0xfc027b3147889c6e78b3a22d9746adf55100bc419ab68f3c7c8706911409832b
🗳️ Blake2-256 hash: 0x2d954e8d116bc83142b4c7a57576192c525394b3cb76064b033f1f3c632ec680
📦 IPFS: QmZCMdU1gWSTsYpmHxjbntXxUJPiH8pHQrfkJwgPFW4J91
Westend
🏋️ Runtime Size: 1.81 MB (1900429 bytes)
🔥 Core Version: westend-1013000 (parity-westend-0.tx26.au2)
🗜 Compressed: Yes: 79%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x2318c8aabc961ea84fe609c7d3b774d5e47de47f4f2046e7512fab876cb47893
🗳️ authorizeUpgrade hash: 0x3d22058e2f025f6c9d0e07ab65fa76244cc8be8f95b28c3a06cece47ef4c184a
🗳️ Blake2-256 hash: 0x5a698e68b9f214a1a18cd90ea7c8bf86dc027230099a38217b71b23cb0181bb2
📦 IPFS: QmbR56akWRfhsWrzKiSAGGYP8XGbLXdRtL8tNLpynHE6Hk
Westend Assethub
🏋️ Runtime Size: 1.35 MB (1416190 bytes)
🔥 Core Version: westmint-1013000 (westmint-0.tx16.au1)
🗜 Compressed: Yes: 80.13%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x5c6d68dc3a471baf282d79b6affb488b44b85acff0824f7f6025f41ff28bfca0
🗳️ authorizeUpgrade hash: 0xec787dc077b1ed3ef521310c22ac80235395b17cbaeccef19ec609aefd14bcb3
🗳️ Blake2-256 hash: 0x477be279fc5bd3f19e05959cbfd6a8d38b30db5240737edfa0139b401ce705b4
📦 IPFS: QmNjnyWJdV6hJ6R832u1QmMuJvx1pnWb8v1Vd1XovrwKNF
Westend Bridgehub
🏋️ Runtime Size: 1.07 MB (1125320 bytes)
🔥 Core Version: bridge-hub-westend-1013000 (bridge-hub-westend-0.tx5.au1)
🗜 Compressed: Yes: 78.4%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0xa6694e1242aafc0296f75df0f3326dc06fc09a5038fb36fa1a18b63d26b20e9e
🗳️ authorizeUpgrade hash: 0x1bfc3b640819832d3fb0048bbd5d63ca6acd17fc9b523ed3dfb89c65e95f1f33
🗳️ Blake2-256 hash: 0xbb667c7302e119f8f7942305bee17cb6a6eb67773d98587ec3509e6781385596
📦 IPFS: QmNTgm2d3gWdUnLvV3QNY8ayrTmiqEJwHMhRMFhE9LrASy
Westend Collectives
🏋️ Runtime Size: 1.17 MB (1230894 bytes)
🔥 Core Version: collectives-westend-1013000 (collectives-westend-0.tx6.au1)
🗜 Compressed: Yes: 79.72%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x7717bc32268957d5e7374328495562addac334bde9443d62cadefafb83f91b7d
🗳️ authorizeUpgrade hash: 0xf3334181826cd0604dc29534a7ca7e865635dc5ff72d86f085075950469bdcbe
🗳️ Blake2-256 hash: 0xf8803186efda29e70f3197d2d8a2bbe468c4f56e4988b16e46508dfab20f94ec
📦 IPFS: QmcDvG541QizwqTu93ZSH69UCKmKKrSGKkwbWmz2h6DMWk
Westend Coretime
🏋️ Runtime Size: 1011.67 kB (1035946 bytes)
🔥 Core Version: coretime-westend-1013000 (coretime-westend-0.tx1.au1)
🗜 Compressed: Yes: 78.6%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x4eb2e0c24ef995e1c3912d3c57b1f2f14c88c731798c83595c5e0323c29774dc
🗳️ authorizeUpgrade hash: 0xcf38b0abee0500cd86bc1d71bbb689c81c92548d3ce31c0f84143b1d0dcd5a1e
🗳️ Blake2-256 hash: 0x347aa78dd538ad26b87334b62d1da323cb27d08b5a34bc195c0a640e235840b7
📦 IPFS: QmYdLXoooTiQSFpZ6yrKbT9uGAUfbnVqxx837ckCiFVern
Westend Glutton
🏋️ Runtime Size: 591.43 kB (605629 bytes)
🔥 Core Version: glutton-westend-1013000 (glutton-westend-0.tx1.au1)
🗜 Compressed: Yes: 76.44%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x7289cb0c7f13b97a37eb5e16d0ae8b0e7407ea9cd72ffb115156f64be29703e0
🗳️ authorizeUpgrade hash: 0xd12823eed2390a3312d199fc55275a5e98be0f0ad93ae87aa8f731aa7fd17cb7
🗳️ Blake2-256 hash: 0x6fd70964f68ae4ed5ed3ef308f20e26eab57d1963059f34d9bc3f14f619f7bf7
📦 IPFS: QmSVNBE8froU8BpDc5EpW2RbG7Pp762y1Ld2HEv8U4PrLf
Westend People
🏋️ Runtime Size: 1005.19 kB (1029311 bytes)
🔥 Core Version: people-westend-1013000 (people-westend-0.tx1.au1)
🗜 Compressed: Yes: 78.7%
🎁 Metadata version: V14
🗳️ system.setCode hash: 0x9b8485d5e5ca70db7331c05fe8574baced116c3881b2fb3d2614d13115f3091a
🗳️ authorizeUpgrade hash: 0xff06a6cb8622451258d1c85cf55da801cb2a35159e90de9935e8373ebdc253cf
🗳️ Blake2-256 hash: 0xf95cbf7f1fce1acf599244c374d33ee9557411bd145d79b3ac916dfa037d9524
📦 IPFS: QmZjy6TxwiX5AFP77cFCQBnKwHQp2tA42GATQDGYnHytr3
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