mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 14:01:02 +00:00
Use a BoundedVec in ValidationResult (#6603)
* Use a `BoundedVec` in `ValidationResult` > Use a `BoundedVec` for `upward_messages` and `horizontal_messages` in order to > limit the number of individual messages/memory allocations right at decoding > time. The reason for this is that the `ValidationResult` may contain a code > upgrade (including a full PVF binary), so the total size limit can't be set > too low and this limit will still allow several millions of upward messages, > which will (due to the memory allocator overhead) already have a > non-negligible memory footprint in decoded form. * List all fields when hashing so we don't miss one * Define types for `BoundedVec`s of messages * Fix test compile errors * Depend on `bounded-collections` 0.1.4 (fixes allocation issue) * Fix compilation issue * Derive `Hash` instead of manual `impl` * Avoid use of unwrap
This commit is contained in:
@@ -22,6 +22,7 @@ use crate::shared;
|
||||
use frame_support::{pallet_prelude::*, weights::constants::WEIGHT_REF_TIME_PER_MILLIS};
|
||||
use frame_system::pallet_prelude::*;
|
||||
use parity_scale_codec::{Decode, Encode};
|
||||
use polkadot_parachain::primitives::{MAX_HORIZONTAL_MESSAGE_NUM, MAX_UPWARD_MESSAGE_NUM};
|
||||
use primitives::{Balance, SessionIndex, MAX_CODE_SIZE, MAX_HEAD_DATA_SIZE, MAX_POV_SIZE};
|
||||
use sp_runtime::traits::Zero;
|
||||
use sp_std::prelude::*;
|
||||
@@ -322,8 +323,12 @@ pub enum InconsistentError<BlockNumber> {
|
||||
},
|
||||
/// `validation_upgrade_delay` is less than or equal 1.
|
||||
ValidationUpgradeDelayIsTooLow { validation_upgrade_delay: BlockNumber },
|
||||
/// Maximum UMP message size (`MAX_UPWARD_MESSAGE_SIZE_BOUND`) exceeded.
|
||||
/// Maximum UMP message size ([`MAX_UPWARD_MESSAGE_SIZE_BOUND`]) exceeded.
|
||||
MaxUpwardMessageSizeExceeded { max_message_size: u32 },
|
||||
/// Maximum HRMP message num ([`MAX_HORIZONTAL_MESSAGE_NUM`]) exceeded.
|
||||
MaxHorizontalMessageNumExceeded { max_message_num: u32 },
|
||||
/// Maximum UMP message num ([`MAX_UPWARD_MESSAGE_NUM`]) exceeded.
|
||||
MaxUpwardMessageNumExceeded { max_message_num: u32 },
|
||||
/// Maximum number of HRMP outbound channels exceeded.
|
||||
MaxHrmpOutboundChannelsExceeded,
|
||||
/// Maximum number of HRMP inbound channels exceeded.
|
||||
@@ -396,6 +401,18 @@ where
|
||||
})
|
||||
}
|
||||
|
||||
if self.hrmp_max_message_num_per_candidate > MAX_HORIZONTAL_MESSAGE_NUM {
|
||||
return Err(MaxHorizontalMessageNumExceeded {
|
||||
max_message_num: self.hrmp_max_message_num_per_candidate,
|
||||
})
|
||||
}
|
||||
|
||||
if self.max_upward_message_num_per_candidate > MAX_UPWARD_MESSAGE_NUM {
|
||||
return Err(MaxUpwardMessageNumExceeded {
|
||||
max_message_num: self.max_upward_message_num_per_candidate,
|
||||
})
|
||||
}
|
||||
|
||||
if self.hrmp_max_parachain_outbound_channels > crate::hrmp::HRMP_MAX_OUTBOUND_CHANNELS_BOUND
|
||||
{
|
||||
return Err(MaxHrmpOutboundChannelsExceeded)
|
||||
|
||||
Reference in New Issue
Block a user