mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 10:31:03 +00:00
implement bitfield signing subsystem (#1364)
* update guide to reduce confusion and TODOs * work from previous bitfield signing effort There were large merge issues with the old bitfield signing PR, so we're just copying all the work from that onto this and restarting. Much of the existing work will be discarded because we now have better tools available, but that's fine. * start rewriting bitfield signing in terms of the util module * implement construct_availability_bitvec It's not an ideal implementation--we can make it much more concurrent-- but at least it compiles. * implement the unimplemented portions of bitfield signing * get core availability concurrently, not sequentially * use sp-std instead of std for a parachain item * resolve type inference failure caused by multiple From impls * handle bitfield signing subsystem & Allmessages variant in overseer * fix more multi-From inference issues * more concisely handle overflow Co-authored-by: Andronik Ordian <write@reusable.software> * Revert "resolve type inference failure caused by multiple From impls" This reverts commit 7fc77805de5e5074a1b01037f8d4e3919e03e0e1. * Revert "fix more multi-From inference issues" This reverts commit f14ffe589e20d664d8a900ed62f68b6fb844a514. * impl From<i32> for ParaId * handle another instance of AllSubsystems * improve consistency when returning existing options Co-authored-by: Andronik Ordian <write@reusable.software>
This commit is contained in:
committed by
GitHub
parent
a1c704d446
commit
ba4bfa4dd0
@@ -80,6 +80,36 @@ impl From<u32> for Id {
|
||||
fn from(x: u32) -> Self { Id(x) }
|
||||
}
|
||||
|
||||
impl From<usize> for Id {
|
||||
fn from(x: usize) -> Self {
|
||||
use sp_std::convert::TryInto;
|
||||
// can't panic, so need to truncate
|
||||
let x = x.try_into().unwrap_or(u32::MAX);
|
||||
Id(x)
|
||||
}
|
||||
}
|
||||
|
||||
// When we added a second From impl for Id, type inference could no longer
|
||||
// determine which impl should apply for things like `5.into()`. It therefore
|
||||
// raised a bunch of errors in our test code, scattered throughout the
|
||||
// various modules' tests, that there is no impl of `From<i32>` (`i32` being
|
||||
// the default numeric type).
|
||||
//
|
||||
// We can't use `cfg(test)` here, because that configuration directive does not
|
||||
// propagate between crates, which would fail to fix tests in crates other than
|
||||
// this one.
|
||||
//
|
||||
// Instead, let's take advantage of the observation that what really matters for a
|
||||
// ParaId within a test context is that it is unique and constant. I believe that
|
||||
// there is no case where someone does `(-1).into()` anyway, but if they do, it
|
||||
// never matters whether the actual contained ID is `-1` or `4294967295`. Nobody
|
||||
// does arithmetic on a `ParaId`; doing so would be a bug.
|
||||
impl From<i32> for Id {
|
||||
fn from(x: i32) -> Self {
|
||||
Id(x as u32)
|
||||
}
|
||||
}
|
||||
|
||||
const USER_INDEX_START: u32 = 1000;
|
||||
|
||||
/// The ID of the first user (non-system) parachain.
|
||||
|
||||
Reference in New Issue
Block a user