Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
3dad49f
Initial commit
Dec 17, 2019
9c536b3
Update to 3e65111
Jan 6, 2020
53288ef
Merge pull request #1 from substrate-developer-hub/ricardo-upgrade-su…
riusricardo Jan 6, 2020
724dd66
Add cfg_attr ... no_std
JoshOrndorff Jan 13, 2020
1607e61
Merge pull request #2 from substrate-developer-hub/joshy-no-std
riusricardo Jan 13, 2020
c975811
Fix version
Jan 13, 2020
97eecd6
Merge pull request #3 from substrate-developer-hub/ricardo-fix-version
riusricardo Jan 13, 2020
dd8e606
WIP: add really simple validate_block insert validity check
coriolinus Mar 6, 2020
4f11307
WIP: create a parachain upgrade pallet
coriolinus Mar 11, 2020
4608f40
Implement basic admin-auth pallet functionality.
coriolinus Mar 13, 2020
9d7546b
use a better storage name
coriolinus Mar 13, 2020
ae38de5
Add checks ensuring runtime versions increase
coriolinus Mar 18, 2020
cf5c2b2
fix tests
coriolinus Mar 18, 2020
6bd97f0
WIP: add tests from frame/system set_code
coriolinus Mar 20, 2020
8508ea8
cause tests to pass
coriolinus Mar 20, 2020
93fb0a1
Add overlapping upgrades test
coriolinus Mar 20, 2020
e70ebdc
Fix some logic errors
coriolinus Mar 23, 2020
607c3c2
WIP: delegate most code upgrade permissions checks
coriolinus Mar 23, 2020
c9d9a13
fix tests after delegating runtime checks to can_set_code
coriolinus Mar 23, 2020
970c60e
WIP: events test
coriolinus Mar 23, 2020
af44f0d
fully initialize and finalize in event test
coriolinus Mar 24, 2020
a63c99c
fix events test
coriolinus Mar 24, 2020
6497890
cleanup and move crate to subdirectory
coriolinus Mar 24, 2020
dec80db
Merge branch 'master' of github.com:coriolinus/parachain-upgrade-pall…
coriolinus Mar 24, 2020
e66d403
Merge remote-tracking branch 'origin/master' into prgn-upgrade-parach…
coriolinus Mar 25, 2020
76cbb6d
provisionally incorporate polkadot changes to hook everything together
coriolinus Mar 25, 2020
341bc30
WIP: further updates to work with the polkadot implementation
coriolinus Mar 26, 2020
97b96a9
update pallet-parachain-upgrade appropriately to handle new expectations
coriolinus Mar 27, 2020
af2620d
remove test which set a real WASM blob
coriolinus Mar 30, 2020
08647ef
add test that storage gets manipulated as expected
coriolinus Mar 30, 2020
8d29a92
get validate_block tests compiling again
coriolinus Mar 30, 2020
c457271
Check validation function size against polkadot parameters
coriolinus Mar 31, 2020
5574b1d
demonstrate that block tests run
coriolinus Mar 31, 2020
b0a0b71
don't actually store any magic values in parachain storage
coriolinus Mar 31, 2020
ffe578f
Merge remote-tracking branch 'origin/master' into prgn-upgrade-parach…
coriolinus Apr 15, 2020
8e1c138
Add reference to polkadot_client to Collator
coriolinus Apr 15, 2020
6df9b2a
remove unused imports
coriolinus Apr 15, 2020
8169b45
Remove VFPX; build VFP from existing data structures
coriolinus Apr 15, 2020
7735312
WIP: add cumulus-validation-function-params crate
coriolinus Apr 15, 2020
cde2709
refactor: get rid of validation-function-params crate
coriolinus Apr 16, 2020
e7998a6
WIP: get VFP from inherent, when possible
coriolinus Apr 16, 2020
e55314d
ensure VFPs are available during block production and validation
coriolinus Apr 17, 2020
3dca9e5
cleanup in preparation for review request
coriolinus Apr 17, 2020
ae7c286
Copy cumulus-primitives crate from bkchr-message-broker
coriolinus Apr 20, 2020
91f12d9
move mod validation_function_params to cumulus_primitives
coriolinus Apr 20, 2020
2f67e37
convert indentation to tabs
coriolinus Apr 20, 2020
b749394
rename parachain upgrade pallet per PR review
coriolinus Apr 20, 2020
f5fcea5
use compact form for dependencies
coriolinus Apr 20, 2020
89a73af
remove pallet readme
coriolinus Apr 20, 2020
18ad21b
Merge remote-tracking branch 'origin/master' into prgn-upgrade-parach…
coriolinus Apr 21, 2020
1a9787d
Add weight data in compliance with updated substrate requirements
coriolinus Apr 21, 2020
f4f4b40
use anonymous fatal error type for brevity
coriolinus Apr 21, 2020
2e9fa3c
Create, use a Call for setting VFPs
coriolinus Apr 21, 2020
d5eaac3
fix pallet tests
coriolinus Apr 21, 2020
f9cb39b
Apply suggestions from code review
coriolinus Apr 22, 2020
a7d2894
fix formatting
coriolinus Apr 22, 2020
fa056cb
add license header
coriolinus Apr 22, 2020
ceaec34
refactor primitive inherents / keys into appropriate modules
coriolinus Apr 22, 2020
265bea2
impl From<(GlobalValidationSchedule, LocalValidationData)> for Valida…
coriolinus Apr 22, 2020
3aeef74
extract inherent data vfp injection into a function
coriolinus Apr 22, 2020
5428836
collapse parachain dependency into compact form
coriolinus Apr 22, 2020
d5fa4c1
always store vfps under same storage key
coriolinus Apr 22, 2020
5203419
fix docs
coriolinus Apr 22, 2020
2e4f92f
use minimum weight for VFP inherent
coriolinus Apr 22, 2020
7b7cb27
rename module methods for clarity
coriolinus Apr 22, 2020
c3ecb92
fix tests: set_code -> schedule_upgrade
coriolinus Apr 22, 2020
3eb1618
Apply pending validation function at inherent creation, not init
coriolinus Apr 24, 2020
f741cf0
typo: default_features -> default-features
coriolinus Apr 27, 2020
db26357
do not panic in create_inherent
coriolinus Apr 27, 2020
aaee1c0
revert f741cf0f2bc; don't change behavior, but use correct spelling
coriolinus Apr 27, 2020
e9cf4f8
move block initialization logic from inherent creation into the inherent
coriolinus Apr 27, 2020
008d3ea
re-disable default features
coriolinus Apr 28, 2020
a0f8cc9
Merge remote-tracking branch 'origin/master' into prgn-upgrade-parach…
coriolinus Apr 29, 2020
916033b
regenerate Cargo.lock
coriolinus Apr 29, 2020
6c332ae
fix checks given new dependencies
coriolinus Apr 29, 2020
3785356
fix tests given new dependencies
coriolinus Apr 29, 2020
e00bdc0
add another check preventing block VFPs from contaminating validity c…
coriolinus Apr 29, 2020
8c408d4
Add OnValidationFunctionParams trait so other modules can callback
coriolinus Apr 30, 2020
4dcf3f1
Add get_validation_function_params
coriolinus Apr 30, 2020
aebf70d
upgrade substrate: panic on div by 0
coriolinus May 5, 2020
b3c2a5e
Apply whitespace suggestions from code review
coriolinus May 5, 2020
365b8b6
Apply semantic from code review
coriolinus May 5, 2020
62c8422
add documentation to ValidationFunction type
coriolinus May 5, 2020
6b49e0e
removing panicing private fn validation_function_params()
coriolinus May 5, 2020
a0f190f
expect validation function params to be in inherent data
coriolinus May 5, 2020
27a3e33
move OnValidationFunctionParams to primitives
coriolinus May 5, 2020
e81eb29
resolve weird formatting
coriolinus May 5, 2020
a324261
move mod validation_function_params into its own file
coriolinus May 5, 2020
58fe19c
add license to new file
coriolinus May 5, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8,530 changes: 4,222 additions & 4,308 deletions Cargo.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ members = [
"consensus",
"message-broker",
"network",
"parachain-upgrade",
"primitives",
"runtime",
"test/runtime",
Expand Down
3 changes: 3 additions & 0 deletions collator/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@ sc-cli = { git = "https://github.com/paritytech/substrate", branch = "cumulus-br
# Polkadot dependencies
polkadot-collator = { git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch" }
polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch" }
polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch" }
polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch" }
polkadot-validation = { git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch" }

# Cumulus dependencies
cumulus-consensus = { path = "../consensus" }
cumulus-runtime = { path = "../runtime" }
cumulus-primitives = { path = "../primitives" }

# Other dependencies
log = "0.4.8"
Expand Down
51 changes: 39 additions & 12 deletions collator/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,17 @@

//! Cumulus Collator implementation for Substrate.

use cumulus_primitives::{
inherents::VALIDATION_FUNCTION_PARAMS_IDENTIFIER as VFP_IDENT,
validation_function_params::ValidationFunctionParams,
};
use cumulus_runtime::ParachainBlockData;

use sp_consensus::{
BlockImport, BlockImportParams, BlockOrigin, Environment, Error as ConsensusError,
ForkChoiceStrategy, Proposal, Proposer, RecordProof,
};
use sp_inherents::InherentDataProviders;
use sp_inherents::{InherentData, InherentDataProviders};
use sp_runtime::traits::{Block as BlockT, Header as HeaderT, HashFor};
use sp_api::{ApiExt, ProvideRuntimeApi};
use sc_client_api::{StateBackend, UsageProvider, Finalizer, BlockchainEvents};
Expand Down Expand Up @@ -77,6 +81,38 @@ impl<Block, PF, BI> Collator<Block, PF, BI> {
block_import: Arc::new(Mutex::new(block_import)),
}
}

/// Get the inherent data with validation function parameters injected
fn inherent_data(
inherent_providers: InherentDataProviders,
global_validation: GlobalValidationSchedule,
local_validation: LocalValidationData,
) -> Result<InherentData, InvalidHead> {
let mut inherent_data = inherent_providers
.create_inherent_data()
.map_err(|e| {
error!(
target: "cumulus-collator",
"Failed to create inherent data: {:?}",
e,
);
InvalidHead
})?;

inherent_data.put_data(
VFP_IDENT,
&ValidationFunctionParams::from((global_validation, local_validation))
).map_err(|e| {
error!(
target: "cumulus-collator",
"Failed to inject validation function params into inherents: {:?}",
e,
);
InvalidHead
})?;

Ok(inherent_data)
}
}

impl<Block, PF, BI> Clone for Collator<Block, PF, BI> {
Expand Down Expand Up @@ -112,7 +148,7 @@ where
fn produce_candidate(
&mut self,
_relay_chain_parent: PHash,
_global_validation: GlobalValidationSchedule,
global_validation: GlobalValidationSchedule,
local_validation: LocalValidationData,
) -> Self::ProduceCandidate {
let factory = self.proposer_factory.clone();
Expand Down Expand Up @@ -147,16 +183,7 @@ where
InvalidHead
})?;

let inherent_data = inherent_providers
.create_inherent_data()
.map_err(|e| {
error!(
target: "cumulus-collator",
"Failed to create inherent data: {:?}",
e,
);
InvalidHead
})?;
let inherent_data = Self::inherent_data(inherent_providers, global_validation, local_validation)?;

let Proposal {
block,
Expand Down
47 changes: 47 additions & 0 deletions parachain-upgrade/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
[package]
name = "cumulus-parachain-upgrade"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
description = "pallet to manage parachain upgrades"

[features]
default = ['std']
std = [
'serde',
'codec/std',
'frame-support/std',
'pallet-balances/std',
'cumulus-runtime/std',
'sp-core/std',
'sp-runtime/std',
'sp-io/std',
'system/std',
'cumulus-primitives/std',
]

[dependencies]
# Cumulus dependencies
cumulus-primitives = { path = "../primitives", default-features = false }
cumulus-runtime = { path = "../runtime", default-features = false }

# Polkadot dependencies
parachain = { package = "polkadot-parachain", git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch", default-features = false }

# Substrate dependencies
frame-support = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
pallet-balances = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
sp-core = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", version = "2.0.0-dev", default-features = false }
sp-inherents = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
sp-io = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
sp-runtime = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
sp-version = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
system = { package = "frame-system", git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }

# Other Dependencies
codec = { package = "parity-scale-codec", version = "1.0.0", default-features = false, features = ["derive"]}
serde = { version = "1.0.101", optional = true, features = ["derive"] }

[dev-dependencies]
sp-externalities = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
substrate-test-runtime-client = { git = "https://github.com/paritytech/substrate.git", branch = "cumulus-branch", default-features = false }
Loading