Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
parity
Mirrored projects
polkadot
Commits
1afd6382
Unverified
Commit
1afd6382
authored
Jan 26, 2021
by
Tomasz Drwięga
Browse files
Merge branch 'master' into td-mmr
parents
cf535c19
8eea1ac9
Pipeline
#121823
passed with stages
in 23 minutes and 17 seconds
Changes
34
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
.github/workflows/release-bot.yml
View file @
1afd6382
name
:
Push
release not
es to internal release notes
channel
name
:
Send new
release not
ification to matrix
channel
s
on
:
release
:
types
:
-
published
jobs
:
ping_matrix
:
strategy
:
matrix
:
channel
:
-
'
!LhjZccBOqFNYKLdmbb:polkadot.builders'
# #KusamaValidatorLounge:polkadot.builders
-
'
!FMwxpQnYhRCNDRsYGI:matrix.parity.io'
# #kusama-announcements:matrix.parity.io
-
'
!NZrbtteFeqYKCUGQtr:matrix.parity.io'
# #polkadotvalidatorlounge:web3.foundation
-
'
!UqHPWiCBGZWxrmYBkF:matrix.parity.io'
# #polkadot-announcements:matrix.parity.io
-
'
!NTogofoetwjbTwOoPi:matrix.parity.io'
# Internal release-notes channel
runs-on
:
ubuntu-latest
steps
:
-
name
:
Internal Release Notes Channel
uses
:
s3krit/matrix-message-action@v0.0.3
-
uses
:
s3krit/matrix-message-action@v0.0.3
with
:
room_id
:
${{
secrets.MATRIX_ROOM_ID }}
room_id
:
${{
matrix.channel }}
# heh
access_token
:
${{ secrets.MATRIX_ACCESS_TOKEN }}
message
:
"
**${{github.event.repository.full_name}}:**
A
release
has
been
${{github.event.action}}<br/>Release
version
[${{github.event.release.tag_name}}](${{github.event.release.html_url}})<br/><br/>***Description:***<br/>${{github.event.release.body}}<br/>"
server
:
"
matrix.parity.io"
-
name
:
Validator Lounge
uses
:
s3krit/matrix-message-action@v0.0.3
with
:
room_id
:
${{ secrets.VALIDATOR_LOUNGE_MATRIX_ROOM_ID }}
access_token
:
${{ secrets.MATRIX_ACCESS_TOKEN }}
message
:
"
***Polkadot
${{github.event.release.tag_name}}
has
been
released!***<br/>Please
update
at
your
earliest
convenience.<br/>${{github.event.release.html_url}}<br/><br/>${{github.event.release.body}}<br/>"
server
:
"
matrix.parity.io"
-
name
:
Polkadot Announcements
uses
:
s3krit/matrix-message-action@v0.0.3
with
:
room_id
:
${{ secrets.KUSAMA_ANNOUNCEMENTS_MATRIX_ROOM_ID }}
access_token
:
${{ secrets.MATRIX_ACCESS_TOKEN }}
message
:
"
***Polkadot
${{github.event.release.tag_name}}
has
been
released!***<br/>Please
update
at
your
earliest
convenience.<br/>${{github.event.release.html_url}}<br/><br/>${{github.event.release.body}}<br/>"
message
:
"
***Polkadot
${{github.event.release.tag_name}}
has
been
released!***<br/>${{github.event.release.html_url}}<br/><br/>${{github.event.release.body}}<br/>"
server
:
"
matrix.parity.io"
Cargo.lock
View file @
1afd6382
This diff is collapsed.
Click to expand it.
Cargo.toml
View file @
1afd6382
...
...
@@ -52,6 +52,7 @@ members = [
"node/core/proposer"
,
"node/core/provisioner"
,
"node/core/runtime-api"
,
"node/network/approval-distribution"
,
"node/network/bridge"
,
"node/network/pov-distribution"
,
"node/network/protocol"
,
...
...
node/collation-generation/src/lib.rs
View file @
1afd6382
...
...
@@ -333,6 +333,7 @@ async fn handle_new_activations<Context: SubsystemContext>(
persisted_validation_data_hash
,
pov_hash
,
erasure_root
,
para_head
:
commitments
.head_data
.hash
(),
},
};
...
...
@@ -738,6 +739,7 @@ mod tests {
persisted_validation_data_hash
:
expect_validation_data_hash
,
pov_hash
:
expect_pov_hash
,
erasure_root
:
Default
::
default
(),
// this isn't something we're checking right now
para_head
:
test_collation
()
.head_data
.hash
(),
};
assert_eq!
(
sent_messages
.len
(),
1
);
...
...
node/core/candidate-validation/src/lib.rs
View file @
1afd6382
...
...
@@ -459,6 +459,10 @@ fn validate_candidate_exhaustive<B: ValidationBackend, S: SpawnNamed + 'static>(
Ok
(
ValidationResult
::
Invalid
(
InvalidCandidate
::
ExecutionError
(
e
.to_string
()))),
Err
(
ValidationError
::
Internal
(
e
))
=>
Err
(
ValidationFailed
(
e
.to_string
())),
Ok
(
res
)
=>
{
if
res
.head_data
.hash
()
!=
descriptor
.para_head
{
return
Ok
(
ValidationResult
::
Invalid
(
InvalidCandidate
::
ParaHeadHashMismatch
));
}
let
outputs
=
CandidateCommitments
{
head_data
:
res
.head_data
,
upward_messages
:
res
.upward_messages
,
...
...
@@ -887,15 +891,17 @@ mod tests {
let
validation_data
=
PersistedValidationData
{
max_pov_size
:
1024
,
..
Default
::
default
()
};
let
pov
=
PoV
{
block_data
:
BlockData
(
vec!
[
1
;
32
])
};
let
head_data
=
HeadData
(
vec!
[
1
,
1
,
1
]);
let
mut
descriptor
=
CandidateDescriptor
::
default
();
descriptor
.pov_hash
=
pov
.hash
();
descriptor
.para_head
=
head_data
.hash
();
collator_sign
(
&
mut
descriptor
,
Sr25519Keyring
::
Alice
);
assert!
(
perform_basic_checks
(
&
descriptor
,
validation_data
.max_pov_size
,
&
pov
)
.is_ok
());
let
validation_result
=
WasmValidationResult
{
head_data
:
HeadData
(
vec!
[
1
,
1
,
1
])
,
head_data
,
new_validation_code
:
Some
(
vec!
[
2
,
2
,
2
]
.into
()),
upward_messages
:
Vec
::
new
(),
horizontal_messages
:
Vec
::
new
(),
...
...
node/network/approval-distribution/Cargo.toml
0 → 100644
View file @
1afd6382
[package]
name
=
"polkadot-approval-distribution"
version
=
"0.1.0"
authors
=
[
"Parity Technologies <admin@parity.io>"
]
edition
=
"2018"
[dependencies]
polkadot-node-primitives
=
{
path
=
"../../primitives"
}
polkadot-node-network-protocol
=
{
path
=
"../protocol"
}
polkadot-node-subsystem
=
{
path
=
"../../subsystem"
}
polkadot-node-subsystem-util
=
{
path
=
"../../subsystem-util"
}
polkadot-primitives
=
{
path
=
"../../../primitives"
}
futures
=
"0.3.8"
tracing
=
"0.1.22"
tracing-futures
=
"0.2.4"
[dev-dependencies]
sp-core
=
{
git
=
"https://github.com/paritytech/substrate"
,
branch
=
"master"
,
features
=
["std"]
}
polkadot-node-subsystem-util
=
{
path
=
"../../subsystem-util"
}
polkadot-node-subsystem-test-helpers
=
{
path
=
"../../subsystem-test-helpers"
}
assert_matches
=
"1.4.0"
schnorrkel
=
{
version
=
"0.9.1"
,
default-features
=
false
}
rand_core
=
"0.5.1"
# should match schnorrkel
env_logger
=
"0.8.2"
log
=
"0.4.13"
node/network/approval-distribution/src/lib.rs
0 → 100644
View file @
1afd6382
This diff is collapsed.
Click to expand it.
node/network/approval-distribution/src/tests.rs
0 → 100644
View file @
1afd6382
This diff is collapsed.
Click to expand it.
node/network/bridge/src/lib.rs
View file @
1afd6382
...
...
@@ -30,7 +30,7 @@ use polkadot_subsystem::{
use
polkadot_subsystem
::
messages
::{
NetworkBridgeMessage
,
AllMessages
,
AvailabilityDistributionMessage
,
BitfieldDistributionMessage
,
PoVDistributionMessage
,
StatementDistributionMessage
,
CollatorProtocolMessage
,
CollatorProtocolMessage
,
ApprovalDistributionMessage
,
};
use
polkadot_primitives
::
v1
::{
Hash
,
BlockNumber
};
use
polkadot_node_network_protocol
::{
...
...
@@ -401,7 +401,9 @@ async fn handle_peer_messages<M>(
for
message
in
messages
{
outgoing_messages
.push
(
match
message
{
WireMessage
::
ViewUpdate
(
new_view
)
=>
{
if
new_view
.heads
.len
()
>
MAX_VIEW_HEADS
{
if
new_view
.heads
.len
()
>
MAX_VIEW_HEADS
||
new_view
.finalized_number
<
peer_data
.view.finalized_number
{
net
.report_peer
(
peer
.clone
(),
MALFORMED_VIEW_COST
,
...
...
@@ -502,7 +504,11 @@ async fn dispatch_validation_events_to_all<I>(
StatementDistributionMessage
::
NetworkBridgeUpdateV1
(
m
)
)));
a
.chain
(
b
)
.chain
(
p
)
.chain
(
s
)
.filter_map
(|
x
|
x
)
let
ap
=
std
::
iter
::
once
(
event
.focus
()
.ok
()
.map
(|
m
|
AllMessages
::
ApprovalDistribution
(
ApprovalDistributionMessage
::
NetworkBridgeUpdateV1
(
m
)
)));
a
.chain
(
b
)
.chain
(
p
)
.chain
(
s
)
.chain
(
ap
)
.filter_map
(|
x
|
x
)
};
ctx
.send_messages
(
events
.into_iter
()
.flat_map
(
messages_for
))
.await
...
...
@@ -545,8 +551,11 @@ mod tests {
use
sc_network
::
Event
as
NetworkEvent
;
use
polkadot_subsystem
::
messages
::{
StatementDistributionMessage
,
BitfieldDistributionMessage
};
use
polkadot_subsystem
::{
ActiveLeavesUpdate
,
FromOverseer
,
OverseerSignal
};
use
polkadot_subsystem
::
messages
::{
StatementDistributionMessage
,
BitfieldDistributionMessage
,
ApprovalDistributionMessage
,
};
use
polkadot_node_subsystem_test_helpers
::{
SingleItemSink
,
SingleItemStream
,
TestSubsystemContextHandle
,
};
...
...
@@ -742,6 +751,13 @@ mod tests {
StatementDistributionMessage
::
NetworkBridgeUpdateV1
(
e
)
)
if
e
==
event
.focus
()
.expect
(
"could not focus message"
)
);
assert_matches!
(
virtual_overseer
.recv
()
.await
,
AllMessages
::
ApprovalDistribution
(
ApprovalDistributionMessage
::
NetworkBridgeUpdateV1
(
e
)
)
if
e
==
event
.focus
()
.expect
(
"could not focus message"
)
);
}
async
fn
assert_sends_collation_event_to_all
(
...
...
@@ -1246,6 +1262,46 @@ mod tests {
});
}
#[test]
fn
view_finalized_number_can_not_go_down
()
{
test_harness
(|
test_harness
|
async
move
{
let
TestHarness
{
mut
network_handle
,
..
}
=
test_harness
;
let
peer_a
=
PeerId
::
random
();
network_handle
.connect_peer
(
peer_a
.clone
(),
PeerSet
::
Validation
,
ObservedRole
::
Full
,
)
.await
;
network_handle
.peer_message
(
peer_a
.clone
(),
PeerSet
::
Validation
,
WireMessage
::
<
protocol_v1
::
ValidationProtocol
>
::
ViewUpdate
(
View
{
heads
:
vec!
[
Hash
::
repeat_byte
(
0x01
)],
finalized_number
:
1
},
)
.encode
(),
)
.await
;
network_handle
.peer_message
(
peer_a
.clone
(),
PeerSet
::
Validation
,
WireMessage
::
<
protocol_v1
::
ValidationProtocol
>
::
ViewUpdate
(
View
{
heads
:
vec!
[],
finalized_number
:
0
},
)
.encode
(),
)
.await
;
let
actions
=
network_handle
.next_network_actions
(
1
)
.await
;
assert_network_actions_contains
(
&
actions
,
&
NetworkAction
::
ReputationChange
(
peer_a
.clone
(),
MALFORMED_VIEW_COST
,
),
);
});
}
#[test]
fn
send_messages_to_peers
()
{
test_harness
(|
test_harness
|
async
move
{
...
...
node/network/protocol/src/lib.rs
View file @
1afd6382
...
...
@@ -282,15 +282,18 @@ impl View {
pub
mod
v1
{
use
polkadot_primitives
::
v1
::{
Hash
,
CollatorId
,
Id
as
ParaId
,
ErasureChunk
,
CandidateReceipt
,
SignedAvailabilityBitfield
,
PoV
,
CandidateHash
,
ValidatorIndex
,
SignedAvailabilityBitfield
,
PoV
,
CandidateHash
,
ValidatorIndex
,
CandidateIndex
,
};
use
polkadot_node_primitives
::{
SignedFullStatement
,
approval
::{
IndirectAssignmentCert
,
IndirectSignedApprovalVote
},
};
use
polkadot_node_primitives
::
SignedFullStatement
;
use
parity_scale_codec
::{
Encode
,
Decode
};
use
super
::
RequestId
;
use
std
::
convert
::
TryFrom
;
/// Network messages used by the availability distribution subsystem
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
AvailabilityDistributionMessage
{
/// An erasure chunk for a given candidate hash.
#[codec(index
=
"0"
)]
...
...
@@ -298,7 +301,7 @@ pub mod v1 {
}
/// Network messages used by the availability recovery subsystem.
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
AvailabilityRecoveryMessage
{
/// Request a chunk for a given candidate hash and validator index.
RequestChunk
(
RequestId
,
CandidateHash
,
ValidatorIndex
),
...
...
@@ -308,7 +311,7 @@ pub mod v1 {
}
/// Network messages used by the bitfield distribution subsystem.
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
BitfieldDistributionMessage
{
/// A signed availability bitfield for a given relay-parent hash.
#[codec(index
=
"0"
)]
...
...
@@ -316,7 +319,7 @@ pub mod v1 {
}
/// Network messages used by the PoV distribution subsystem.
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
PoVDistributionMessage
{
/// Notification that we are awaiting the given PoVs (by hash) against a
/// specific relay-parent hash.
...
...
@@ -329,14 +332,27 @@ pub mod v1 {
}
/// Network messages used by the statement distribution subsystem.
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
StatementDistributionMessage
{
/// A signed full statement under a given relay-parent.
#[codec(index
=
"0"
)]
Statement
(
Hash
,
SignedFullStatement
)
}
#[derive(Debug,
Clone,
Copy,
PartialEq,
thiserror::Error)]
/// Network messages used by the approval distribution subsystem.
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq,
Eq)]
pub
enum
ApprovalDistributionMessage
{
/// Assignments for candidates in recent, unfinalized blocks.
///
/// Actually checking the assignment may yield a different result.
#[codec(index
=
"0"
)]
Assignments
(
Vec
<
(
IndirectAssignmentCert
,
CandidateIndex
)
>
),
/// Approvals for candidates in some recent, unfinalized block.
#[codec(index
=
"1"
)]
Approvals
(
Vec
<
IndirectSignedApprovalVote
>
),
}
#[derive(Debug,
Clone,
Copy,
PartialEq,
Eq,
thiserror::Error)]
#[allow(missing_docs)]
pub
enum
CompressedPoVError
{
#[error(
"Failed to compress a PoV"
)]
...
...
@@ -350,7 +366,7 @@ pub mod v1 {
}
/// SCALE and Zstd encoded [`PoV`].
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
struct
CompressedPoV
(
Vec
<
u8
>
);
impl
CompressedPoV
{
...
...
@@ -398,7 +414,7 @@ pub mod v1 {
}
/// Network messages used by the collator protocol subsystem
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
CollatorProtocolMessage
{
/// Declare the intent to advertise collations under a collator ID.
#[codec(index
=
"0"
)]
...
...
@@ -416,7 +432,7 @@ pub mod v1 {
}
/// All network messages on the validation peer-set.
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
ValidationProtocol
{
/// Availability distribution messages
#[codec(index
=
"0"
)]
...
...
@@ -433,15 +449,19 @@ pub mod v1 {
/// Availability recovery messages
#[codec(index
=
"4"
)]
AvailabilityRecovery
(
AvailabilityRecoveryMessage
),
/// Approval distribution messages
#[codec(index
=
"5"
)]
ApprovalDistribution
(
ApprovalDistributionMessage
),
}
impl_try_from!
(
ValidationProtocol
,
AvailabilityDistribution
,
AvailabilityDistributionMessage
);
impl_try_from!
(
ValidationProtocol
,
BitfieldDistribution
,
BitfieldDistributionMessage
);
impl_try_from!
(
ValidationProtocol
,
PoVDistribution
,
PoVDistributionMessage
);
impl_try_from!
(
ValidationProtocol
,
StatementDistribution
,
StatementDistributionMessage
);
impl_try_from!
(
ValidationProtocol
,
ApprovalDistribution
,
ApprovalDistributionMessage
);
/// All network messages on the collation peer-set.
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq)]
#[derive(Debug,
Clone,
Encode,
Decode,
PartialEq
,
Eq
)]
pub
enum
CollationProtocol
{
/// Collator protocol messages
#[codec(index
=
"0"
)]
...
...
node/overseer/src/lib.rs
View file @
1afd6382
...
...
@@ -84,8 +84,8 @@ use polkadot_subsystem::messages::{
CandidateSelectionMessage
,
ChainApiMessage
,
StatementDistributionMessage
,
AvailabilityDistributionMessage
,
BitfieldSigningMessage
,
BitfieldDistributionMessage
,
ProvisionerMessage
,
PoVDistributionMessage
,
RuntimeApiMessage
,
AvailabilityStoreMessage
,
NetworkBridgeMessage
,
AllMessages
,
CollationGenerationMessage
,
CollatorProtocolMessage
,
AvailabilityRecoveryMessage
,
AvailabilityStoreMessage
,
NetworkBridgeMessage
,
AllMessages
,
CollationGenerationMessage
,
CollatorProtocolMessage
,
AvailabilityRecoveryMessage
,
ApprovalDistributionMessage
,
};
pub
use
polkadot_subsystem
::{
Subsystem
,
SubsystemContext
,
OverseerSignal
,
FromOverseer
,
SubsystemError
,
SubsystemResult
,
...
...
@@ -558,6 +558,9 @@ pub struct Overseer<S> {
/// A Collator Protocol subsystem.
collator_protocol_subsystem
:
OverseenSubsystem
<
CollatorProtocolMessage
>
,
/// An Approval Distribution subsystem.
approval_distribution_subsystem
:
OverseenSubsystem
<
ApprovalDistributionMessage
>
,
/// Spawner to spawn tasks to.
s
:
S
,
...
...
@@ -598,7 +601,7 @@ pub struct Overseer<S> {
/// subsystems are implemented and the rest can be mocked with the [`DummySubsystem`].
pub
struct
AllSubsystems
<
CV
=
(),
CB
=
(),
CS
=
(),
SD
=
(),
AD
=
(),
AR
=
(),
BS
=
(),
BD
=
(),
P
=
(),
PoVD
=
(),
RA
=
(),
AS
=
(),
NB
=
(),
CA
=
(),
CG
=
(),
CP
=
(),
PoVD
=
(),
RA
=
(),
AS
=
(),
NB
=
(),
CA
=
(),
CG
=
(),
CP
=
(),
ApD
=
(),
>
{
/// A candidate validation subsystem.
pub
candidate_validation
:
CV
,
...
...
@@ -632,10 +635,12 @@ pub struct AllSubsystems<
pub
collation_generation
:
CG
,
/// A Collator Protocol subsystem.
pub
collator_protocol
:
CP
,
/// An Approval Distribution subsystem.
pub
approval_distribution
:
ApD
,
}
impl
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
impl
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
/// Create a new instance of [`AllSubsystems`].
///
...
...
@@ -665,7 +670,8 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
DummySubsystem
,
DummySubsystem
,
DummySubsystem
,
DummySubsystem
DummySubsystem
,
DummySubsystem
,
>
{
AllSubsystems
{
candidate_validation
:
DummySubsystem
,
...
...
@@ -684,6 +690,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
DummySubsystem
,
collation_generation
:
DummySubsystem
,
collator_protocol
:
DummySubsystem
,
approval_distribution
:
DummySubsystem
,
}
}
...
...
@@ -691,7 +698,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_candidate_validation
<
NEW
>
(
self
,
candidate_validation
:
NEW
,
)
->
AllSubsystems
<
NEW
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
NEW
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -709,6 +716,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -716,7 +724,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_candidate_backing
<
NEW
>
(
self
,
candidate_backing
:
NEW
,
)
->
AllSubsystems
<
CV
,
NEW
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
NEW
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
,
...
...
@@ -734,6 +742,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -741,7 +750,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_candidate_selection
<
NEW
>
(
self
,
candidate_selection
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
NEW
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
NEW
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -759,6 +768,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -766,7 +776,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_statement_distribution
<
NEW
>
(
self
,
statement_distribution
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
NEW
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
NEW
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -784,6 +794,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -791,7 +802,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_availability_distribution
<
NEW
>
(
self
,
availability_distribution
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
NEW
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
NEW
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -809,6 +820,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -816,7 +828,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_availability_recovery
<
NEW
>
(
self
,
availability_recovery
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
NEW
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
NEW
,
BS
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -834,6 +846,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -841,7 +854,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_bitfield_signing
<
NEW
>
(
self
,
bitfield_signing
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
NEW
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
NEW
,
BD
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -859,6 +872,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -866,7 +880,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_bitfield_distribution
<
NEW
>
(
self
,
bitfield_distribution
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
NEW
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
NEW
,
P
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -884,6 +898,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -891,7 +906,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_provisioner
<
NEW
>
(
self
,
provisioner
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
NEW
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
NEW
,
PoVD
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -909,6 +924,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -916,7 +932,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_pov_distribution
<
NEW
>
(
self
,
pov_distribution
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
NEW
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
NEW
,
RA
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -934,6 +950,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -941,7 +958,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_runtime_api
<
NEW
>
(
self
,
runtime_api
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
NEW
,
AS
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
NEW
,
AS
,
NB
,
CA
,
CG
,
CP
,
ApD
>
{
AllSubsystems
{
candidate_validation
:
self
.candidate_validation
,
candidate_backing
:
self
.candidate_backing
,
...
...
@@ -959,6 +976,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
chain_api
:
self
.chain_api
,
collation_generation
:
self
.collation_generation
,
collator_protocol
:
self
.collator_protocol
,
approval_distribution
:
self
.approval_distribution
,
}
}
...
...
@@ -966,7 +984,7 @@ impl<CV, CB, CS, SD, AD, AR, BS, BD, P, PoVD, RA, AS, NB, CA, CG, CP>
pub
fn
replace_availability_store
<
NEW
>
(
self
,
availability_store
:
NEW
,
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR
,
BS
,
BD
,
P
,
PoVD
,
RA
,
NEW
,
NB
,
CA
,
CG
,
CP
>
{
)
->
AllSubsystems
<
CV
,
CB
,
CS
,
SD
,
AD
,
AR