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

To polkadot-stable2407 #1643

Merged
merged 44 commits into from
Dec 30, 2024
Merged

To polkadot-stable2407 #1643

merged 44 commits into from
Dec 30, 2024

Conversation

aurexav
Copy link
Member

@aurexav aurexav commented Dec 25, 2024

No description provided.

Signed-off-by: Xavier Lau <x@acg.box>

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

jiguantong
jiguantong previously approved these changes Dec 30, 2024
@jiguantong
Copy link
Member

XCM related changes LGTM

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

Copy link

Check a3443f0 koi-dev

Check runtime version

RuntimeVersion {
    spec_name: "Darwinia Koi",
    impl_name: "DarwiniaOfficialRust",
    authoring_version: 0,
-   spec_version: 6800,
+   spec_version: 6810,
    impl_version: 0,
    transaction_version: 0,
    state_version: 0,
}

Check runtime storage

- Pallet: "DmpQueue"
+ Pallet: "XcmWeightTrader"

Pallet AssetManager
- Entry: StorageEntryMetadata { name: "AssetTypeUnitsPerSecond", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 233, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 6, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Stores the units per second for local execution for a AssetType.", " This is used to know how to charge for XCM execution in a particular", " asset", " Not all assets might contain units per second, hence the different storage"] }
- Entry: StorageEntryMetadata { name: "SupportedFeePaymentAssets", modifier: Default, ty: Plain(UntrackedSymbol { id: 498, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [] }

Pallet Assets
+ Entry: StorageEntryMetadata { name: "NextAssetId", modifier: Optional, ty: Plain(UntrackedSymbol { id: 12, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The asset ID enforced for the next asset creation, if any present. Otherwise, this storage", " item has no effect.", "", " This can be useful for setting up constraints for IDs of the new assets. For example, by", " providing an initial [`NextAssetId`] and using the [`crate::AutoIncAssetId`] callback, an", " auto-increment model can be applied to all new asset IDs.", "", " The initial next asset ID can be set using the [`GenesisConfig`] or the", " [SetNextAssetId](`migration::next_asset_id::SetNextAssetId`) migration."] }

Pallet Aura
+ Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 379, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The current authority set."] }
- Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 382, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The current authority set."] }

Pallet AuraExt
+ Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 379, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Serves as cache for the authorities.", "", " The authorities in AuRa are overwritten in `on_initialize` when we switch to a new session,", " but we require the old authorities to verify the seal when validating a PoV. This will", " always be updated to the latest AuRa authorities in `on_finalize`."] }
- Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 382, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Serves as cache for the authorities.", "", " The authorities in AuRa are overwritten in `on_initialize` when we switch to a new session,", " but we require the old authorities to verify the seal when validating a PoV. This will", " always be updated to the latest AuRa authorities in `on_finalize`."] }

Pallet Balances
+ Entry: StorageEntryMetadata { name: "Freezes", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 345, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Freeze locks on account balances."] }
- Entry: StorageEntryMetadata { name: "Freezes", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 349, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Freeze locks on account balances."] }
+ Entry: StorageEntryMetadata { name: "Holds", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 340, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Holds on account balances."] }
- Entry: StorageEntryMetadata { name: "Holds", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 344, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Holds on account balances."] }
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 333, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock.", "", " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 337, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
+ Entry: StorageEntryMetadata { name: "Reserves", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 337, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Named reserves on some account balances.", "", " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] }
- Entry: StorageEntryMetadata { name: "Reserves", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 341, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Named reserves on some account balances."] }

Pallet DarwiniaStaking
+ Entry: StorageEntryMetadata { name: "UnissuedReward", modifier: Default, ty: Plain(UntrackedSymbol { id: 6, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" Unissued reward to Treasury."] }

Pallet Deposit
+ Entry: StorageEntryMetadata { name: "MigrationFailures", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 364, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Failures of migration.", "", " The first value is the deposits that failed to migrate,", " the second value is the type of failure."] }

Pallet Ethereum
+ Entry: StorageEntryMetadata { name: "CurrentTransactionStatuses", modifier: Optional, ty: Plain(UntrackedSymbol { id: 503, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The current transaction statuses."] }
- Entry: StorageEntryMetadata { name: "CurrentTransactionStatuses", modifier: Optional, ty: Plain(UntrackedSymbol { id: 517, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The current transaction statuses."] }
+ Entry: StorageEntryMetadata { name: "Pending", modifier: Default, ty: Plain(UntrackedSymbol { id: 488, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Current building block's transactions and receipts."] }
- Entry: StorageEntryMetadata { name: "Pending", modifier: Default, ty: Plain(UntrackedSymbol { id: 502, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Current building block's transactions and receipts."] }

Pallet ParachainSystem
+ Entry: StorageEntryMetadata { name: "AggregatedUnincludedSegment", modifier: Optional, ty: Plain(UntrackedSymbol { id: 315, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Storage field that keeps track of bandwidth used by the unincluded segment along with the", " latest HRMP watermark. Used for limiting the acceptance of new blocks with", " respect to relay chain constraints."] }
- Entry: StorageEntryMetadata { name: "AggregatedUnincludedSegment", modifier: Optional, ty: Plain(UntrackedSymbol { id: 319, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Storage field that keeps track of bandwidth used by the unincluded segment along with the", " latest HRMP watermark. Used for limiting the acceptance of new blocks with", " respect to relay chain constraints."] }
+ Entry: StorageEntryMetadata { name: "HostConfiguration", modifier: Optional, ty: Plain(UntrackedSymbol { id: 323, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The parachain host configuration that was obtained from the relay parent.", "", " This field is meant to be updated each block with the validation data inherent. Therefore,", " before processing of the inherent, e.g. in `on_initialize` this data may be stale.", "", " This data is also absent from the genesis."] }
- Entry: StorageEntryMetadata { name: "HostConfiguration", modifier: Optional, ty: Plain(UntrackedSymbol { id: 327, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The parachain host configuration that was obtained from the relay parent.", "", " This field is meant to be updated each block with the validation data inherent. Therefore,", " before processing of the inherent, e.g. in `on_initialize` this data may be stale.", "", " This data is also absent from the genesis."] }
+ Entry: StorageEntryMetadata { name: "HrmpOutboundMessages", modifier: Default, ty: Plain(UntrackedSymbol { id: 329, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" HRMP messages that were sent in a block.", "", " This will be cleared in `on_initialize` of each new block."] }
- Entry: StorageEntryMetadata { name: "HrmpOutboundMessages", modifier: Default, ty: Plain(UntrackedSymbol { id: 333, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" HRMP messages that were sent in a block.", "", " This will be cleared in `on_initialize` of each new block."] }
+ Entry: StorageEntryMetadata { name: "RelevantMessagingState", modifier: Optional, ty: Plain(UntrackedSymbol { id: 318, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The snapshot of some state related to messaging relevant to the current parachain as per", " the relay parent.", "", " This field is meant to be updated each block with the validation data inherent. Therefore,", " before processing of the inherent, e.g. in `on_initialize` this data may be stale.", "", " This data is also absent from the genesis."] }
- Entry: StorageEntryMetadata { name: "RelevantMessagingState", modifier: Optional, ty: Plain(UntrackedSymbol { id: 322, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The snapshot of some state related to messaging relevant to the current parachain as per", " the relay parent.", "", " This field is meant to be updated each block with the validation data inherent. Therefore,", " before processing of the inherent, e.g. in `on_initialize` this data may be stale.", "", " This data is also absent from the genesis."] }
+ Entry: StorageEntryMetadata { name: "UnincludedSegment", modifier: Default, ty: Plain(UntrackedSymbol { id: 306, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Latest included block descendants the runtime accepted. In other words, these are", " ancestors of the currently executing block which have not been included in the observed", " relay-chain state.", "", " The segment length is limited by the capacity returned from the [`ConsensusHook`] configured", " in the pallet."] }
- Entry: StorageEntryMetadata { name: "UnincludedSegment", modifier: Default, ty: Plain(UntrackedSymbol { id: 310, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Latest included block descendants the runtime accepted. In other words, these are", " ancestors of the currently executing block which have not been included in the observed", " relay-chain state.", "", " The segment length is limited by the capacity returned from the [`ConsensusHook`] configured", " in the pallet."] }
+ Entry: StorageEntryMetadata { name: "UpgradeGoAhead", modifier: Default, ty: Plain(UntrackedSymbol { id: 313, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Optional upgrade go-ahead signal from the relay-chain.", "", " This storage item is a mirror of the corresponding value for the current parachain from the", " relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is", " set after the inherent."] }
- Entry: StorageEntryMetadata { name: "UpgradeGoAhead", modifier: Default, ty: Plain(UntrackedSymbol { id: 317, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Optional upgrade go-ahead signal from the relay-chain.", "", " This storage item is a mirror of the corresponding value for the current parachain from the", " relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is", " set after the inherent."] }
+ Entry: StorageEntryMetadata { name: "UpgradeRestrictionSignal", modifier: Default, ty: Plain(UntrackedSymbol { id: 316, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" An option which indicates if the relay-chain restricts signalling a validation code upgrade.", " In other words, if this is `Some` and [`NewValidationCode`] is `Some` then the produced", " candidate will be invalid.", "", " This storage item is a mirror of the corresponding value for the current parachain from the", " relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is", " set after the inherent."] }
- Entry: StorageEntryMetadata { name: "UpgradeRestrictionSignal", modifier: Default, ty: Plain(UntrackedSymbol { id: 320, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" An option which indicates if the relay-chain restricts signalling a validation code upgrade.", " In other words, if this is `Some` and [`NewValidationCode`] is `Some` then the produced", " candidate will be invalid.", "", " This storage item is a mirror of the corresponding value for the current parachain from the", " relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is", " set after the inherent."] }
+ Entry: StorageEntryMetadata { name: "ValidationData", modifier: Optional, ty: Plain(UntrackedSymbol { id: 57, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The [`PersistedValidationData`] set for this block.", " This value is expected to be set only once per block and it's never stored", " in the trie."] }
- Entry: StorageEntryMetadata { name: "ValidationData", modifier: Optional, ty: Plain(UntrackedSymbol { id: 57, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The [`PersistedValidationData`] set for this block.", " This value is expected to be set only once per block and it's never stored", " in the trie."] }

Pallet PolkadotXcm
+ Entry: StorageEntryMetadata { name: "RecordedXcm", modifier: Optional, ty: Plain(UntrackedSymbol { id: 197, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" If [`ShouldRecordXcm`] is set to true, then the last XCM program executed locally", " will be stored here.", " Runtime APIs can fetch the XCM that was executed by accessing this value.", "", " Only relevant if this pallet is being used as the [`xcm_executor::traits::RecordXcm`]", " implementation in the XCM executor configuration."] }
+ Entry: StorageEntryMetadata { name: "ShouldRecordXcm", modifier: Default, ty: Plain(UntrackedSymbol { id: 8, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Whether or not incoming XCMs (both executed locally and received) should be recorded.", " Only one XCM program will be recorded at a time.", " This is meant to be used in runtime APIs, and it's advised it stays false", " for all other use cases, so as to not degrade regular performance.", "", " Only relevant if this pallet is being used as the [`xcm_executor::traits::RecordXcm`]", " implementation in the XCM executor configuration."] }

Pallet Scheduler
+ Entry: StorageEntryMetadata { name: "Retries", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 125, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 432, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Retry configurations for items to be executed, indexed by task address."] }

Pallet Session
+ Entry: StorageEntryMetadata { name: "NextKeys", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 79, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" The next session keys for a validator."] }
- Entry: StorageEntryMetadata { name: "NextKeys", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 79, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" The next session keys for a validator."] }
+ Entry: StorageEntryMetadata { name: "QueuedKeys", modifier: Default, ty: Plain(UntrackedSymbol { id: 373, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The queued keys for the next session. When the next session begins, these keys", " will be used to determine the validator's session keys."] }
- Entry: StorageEntryMetadata { name: "QueuedKeys", modifier: Default, ty: Plain(UntrackedSymbol { id: 376, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The queued keys for the next session. When the next session begins, these keys", " will be used to determine the validator's session keys."] }

Pallet System
+ Entry: StorageEntryMetadata { name: "InherentsApplied", modifier: Default, ty: Plain(UntrackedSymbol { id: 8, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" Whether all inherents have been applied."] }

Pallet TechnicalCommittee
+ Entry: StorageEntryMetadata { name: "Prime", modifier: Optional, ty: Plain(UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The prime member that helps determine the default vote behavior in case of abstentions."] }
- Entry: StorageEntryMetadata { name: "Prime", modifier: Optional, ty: Plain(UntrackedSymbol { id: 0, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The prime member that helps determine the default vote behavior in case of absentations."] }

Pallet XcmpQueue
+ Entry: StorageEntryMetadata { name: "OutboundXcmpMessages", modifier: Default, ty: Map { hashers: [Blake2_128Concat, Twox64Concat], key: UntrackedSymbol { id: 461, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 462, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" The messages outbound in a given XCMP channel."] }
- Entry: StorageEntryMetadata { name: "OutboundXcmpMessages", modifier: Default, ty: Map { hashers: [Blake2_128Concat, Twox64Concat], key: UntrackedSymbol { id: 463, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 14, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" The messages outbound in a given XCMP channel."] }
+ Entry: StorageEntryMetadata { name: "OutboundXcmpStatus", modifier: Default, ty: Plain(UntrackedSymbol { id: 457, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The non-empty XCMP channels in order of becoming non-empty, and the index of the first", " and last outbound message. If the two indices are equal, then it indicates an empty", " queue and there must be a non-`Ok` `OutboundStatus`. We assume queues grow no greater", " than 65535 items. Queue indices for normal messages begin at one; zero is reserved in", " case of the need to send a high-priority signal message this block.", " The bool is true if there is a signal message waiting to be sent."] }
- Entry: StorageEntryMetadata { name: "OutboundXcmpStatus", modifier: Default, ty: Plain(UntrackedSymbol { id: 460, marker: PhantomData<fn() -> core::any::TypeId> }), default: [0], docs: [" The non-empty XCMP channels in order of becoming non-empty, and the index of the first", " and last outbound message. If the two indices are equal, then it indicates an empty", " queue and there must be a non-`Ok` `OutboundStatus`. We assume queues grow no greater", " than 65535 items. Queue indices for normal messages begin at one; zero is reserved in", " case of the need to send a high-priority signal message this block.", " The bool is true if there is a signal message waiting to be sent."] }
+ Entry: StorageEntryMetadata { name: "SignalMessages", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 64, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 462, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Any signal messages waiting to be sent."] }
- Entry: StorageEntryMetadata { name: "SignalMessages", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 64, marker: PhantomData<fn() -> core::any::TypeId> }, value: UntrackedSymbol { id: 14, marker: PhantomData<fn() -> core::any::TypeId> } }, default: [0], docs: [" Any signal messages waiting to be sent."] }

Copy link

Check a3443f0 crab-dev

Check runtime version

Check runtime storage

Copy link

Check a3443f0 darwinia-dev

Check runtime version

Check runtime storage

@aurexav aurexav merged commit 8476af2 into main Dec 30, 2024
10 checks passed
@aurexav aurexav deleted the x/stable2407 branch December 30, 2024 10:58
// For each foreign asset, the fee is computed based on its relative price (also
// stored in the XcmWeightTrader pallet) against the native asset.
// For the native asset fee is computed using WeightToFee implementation.
type Trader = pallet_xcm_weight_trader::Trader<Runtime>;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add migration.

@aurexav aurexav mentioned this pull request Jan 14, 2025
@aurexav aurexav added S-Audited [Security] Audited and removed S-Need Audit PR contains changes to fund-managing logic that should be properly reviewed and externally audited labels Jan 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bk-API [Break] This changes API; next release should be major. Bk-Storage [Break] This changes Storage; next release should be major. C-Pallet [Component] Something about pallet C-Runtime [Component] Something about runtime C-Test [Component] Something about test C-XCM [Component] Something about XCM D-Crate [Dependency] From crates.io D-Frontier [Dependency] From Frontier D-Moonbeam [Dependency] From Moonbeam D-PolkadotSDK [Dependency] From polkadot-sdk S-Audited [Security] Audited
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants