Effectivement, si c’est le cas on pleure. On sature l’espace disque des nœuds qui ne font pas de block pruning (pas seulement des nœuds archive), on sature l’espace disque des indexeurs. On en revient toujours au même problème (Comment partager équitablement cette ressource commune qu'est la blockchain Ğ1?).
Je suppose que la solution qui nous correspondrait le mieux serait d’ajuster le seuil par bloc au-delà duquel les frais sont déclenchés. Actuellement on a :
// Maximal weight proportion of normal extrinsics per block
pub const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75);
/// We allow for 2 seconds of compute with a 6 second average block time.
pub BlockWeights: frame_system::limits::BlockWeights = frame_system::limits::BlockWeights::with_sensible_defaults(Weight::from_parts(WEIGHT_REF_TIME_PER_SECOND * 2u64, u64::MAX), NORMAL_DISPATCH_RATIO);
pub BlockLength: frame_system::limits::BlockLength = frame_system::limits::BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO);
let normal_max_length = *length.max.get(DispatchClass::Normal) as u64;
if current_block_weight
.get(DispatchClass::Normal)
.all_lt(Target::get() * normal_max_weight)
&& current_block_length < (Target::get() * normal_max_length)
&& fee_multiplier.is_one()
&& length_in_bytes.ref_time() < MAX_EXTRINSIC_LENGTH
{
0u32.into()
} else {
Self::Balance::saturated_from(
length_in_bytes.ref_time() / BYTES_PER_UNIT + BASE_EXTRINSIC_LENGTH_COST,
)
}
On peut modifier la ligne
&& current_block_length < (Target::get() * normal_max_length)
en remplaçant normal_max_length
par un truc du genre target_max_length
calculé pour que le débit de données soit acceptable.