mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 08:11:03 +00:00
Downward & Upward messages (#1266)
* Downward messages, the front-end.
* Move types around to make them accessible from Parachains
* Fix compilation
* Fix branch
* Make it compile for Cumulus
* Update the branch names
* Add default generic parameter
* Implement `Partialeq`
* Move upward messages into the `ValidationResult`
* Support disabling of the runtime api
* Update branch
* Adds support for handling downward messages
* Implement sending XCMP messages as up/downward messages
* service: update to latest ServiceBuilder changes
* Make it compile
* Initial commit
Forked at: ef2aa428d7
Parent branch: origin/master
* Update substrate branch to cecton-update-polkadot-substrate
* Update substrate & polkadot to cumulus-branch
* Reset branch
* Update primitives/src/parachain.rs
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update runtime/common/src/parachains.rs
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update runtime/common/src/parachains.rs
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Minor fixes
* Fix wasm build
Co-authored-by: Gav Wood <gavin@parity.io>
Co-authored-by: André Silva <andre.beat@gmail.com>
Co-authored-by: Cecile Tonglet <cecile.tonglet@cecton.com>
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
This commit is contained in:
@@ -9,6 +9,7 @@ build = "build.rs"
|
||||
[dependencies]
|
||||
parachain = { package = "polkadot-parachain", path = "../../", default-features = false, features = [ "wasm-api" ] }
|
||||
codec = { package = "parity-scale-codec", version = "1.3.0", default-features = false, features = ["derive"] }
|
||||
sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||
tiny-keccak = "1.5.0"
|
||||
dlmalloc = { version = "0.1.3", features = [ "global" ] }
|
||||
|
||||
@@ -20,4 +21,7 @@ wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.
|
||||
|
||||
[features]
|
||||
default = [ "std" ]
|
||||
std = ["parachain/std"]
|
||||
std = [
|
||||
"parachain/std",
|
||||
"sp-std/std",
|
||||
]
|
||||
|
||||
@@ -23,7 +23,7 @@ use adder::{HeadData as AdderHead, BlockData as AdderBody};
|
||||
use sp_core::Pair;
|
||||
use codec::{Encode, Decode};
|
||||
use primitives::{
|
||||
Hash,
|
||||
Hash, DownwardMessage,
|
||||
parachain::{HeadData, BlockData, Id as ParaId, LocalValidationData, GlobalValidationSchedule},
|
||||
};
|
||||
use collator::{ParachainContext, Network, BuildParachainContext, Cli, SubstrateCli};
|
||||
@@ -60,6 +60,7 @@ impl ParachainContext for AdderContext {
|
||||
_relay_parent: Hash,
|
||||
_global_validation: GlobalValidationSchedule,
|
||||
local_validation: LocalValidationData,
|
||||
_: Vec<DownwardMessage>,
|
||||
) -> Self::ProduceCandidate
|
||||
{
|
||||
let adder_head = match AdderHead::decode(&mut &local_validation.parent_head.0[..]).ok() {
|
||||
|
||||
@@ -21,22 +21,6 @@ use core::{intrinsics, panic};
|
||||
use parachain::primitives::{ValidationResult, HeadData as GenericHeadData};
|
||||
use codec::{Encode, Decode};
|
||||
|
||||
#[panic_handler]
|
||||
#[no_mangle]
|
||||
pub fn panic(_info: &panic::PanicInfo) -> ! {
|
||||
unsafe {
|
||||
intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
#[alloc_error_handler]
|
||||
#[no_mangle]
|
||||
pub fn oom(_: core::alloc::Layout) -> ! {
|
||||
unsafe {
|
||||
intrinsics::abort();
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern fn validate_block(params: *const u8, len: usize) -> u64 {
|
||||
let params = unsafe { parachain::load_params(params, len) };
|
||||
@@ -53,6 +37,8 @@ pub extern fn validate_block(params: *const u8, len: usize) -> u64 {
|
||||
&ValidationResult {
|
||||
head_data: GenericHeadData(new_head.encode()),
|
||||
new_validation_code: None,
|
||||
upward_messages: sp_std::vec::Vec::new(),
|
||||
processed_downward_messages: 0,
|
||||
}
|
||||
),
|
||||
Err(_) => panic!("execution failure"),
|
||||
|
||||
@@ -9,6 +9,7 @@ build = "build.rs"
|
||||
[dependencies]
|
||||
parachain = { package = "polkadot-parachain", path = "../../", default-features = false, features = [ "wasm-api" ] }
|
||||
codec = { package = "parity-scale-codec", version = "1.1.0", default-features = false, features = ["derive"] }
|
||||
sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||
tiny-keccak = "1.5.0"
|
||||
dlmalloc = { version = "0.1.3", features = [ "global" ] }
|
||||
|
||||
@@ -20,4 +21,7 @@ wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.
|
||||
|
||||
[features]
|
||||
default = [ "std" ]
|
||||
std = ["parachain/std"]
|
||||
std = [
|
||||
"parachain/std",
|
||||
"sp-std/std",
|
||||
]
|
||||
|
||||
@@ -21,22 +21,6 @@ use core::{intrinsics, panic};
|
||||
use parachain::primitives::{ValidationResult, HeadData as GenericHeadData};
|
||||
use codec::{Encode, Decode};
|
||||
|
||||
#[panic_handler]
|
||||
#[no_mangle]
|
||||
pub fn panic(_info: &panic::PanicInfo) -> ! {
|
||||
unsafe {
|
||||
intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
#[alloc_error_handler]
|
||||
#[no_mangle]
|
||||
pub fn oom(_: core::alloc::Layout) -> ! {
|
||||
unsafe {
|
||||
intrinsics::abort();
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern fn validate_block(params: *const u8, len: usize) -> u64 {
|
||||
let params = unsafe { parachain::load_params(params, len) };
|
||||
@@ -64,6 +48,8 @@ pub extern fn validate_block(params: *const u8, len: usize) -> u64 {
|
||||
&ValidationResult {
|
||||
head_data: GenericHeadData(output.head_data.encode()),
|
||||
new_validation_code: output.new_validation_code,
|
||||
upward_messages: sp_std::vec::Vec::new(),
|
||||
processed_downward_messages: 0,
|
||||
}
|
||||
),
|
||||
Err(_) => panic!("execution failure"),
|
||||
|
||||
@@ -16,15 +16,11 @@
|
||||
|
||||
//! Basic parachain that adds a number as part of its state.
|
||||
|
||||
use crate::{
|
||||
DummyExt,
|
||||
parachain,
|
||||
parachain::primitives::{
|
||||
RelayChainBlockNumber,
|
||||
BlockData as GenericBlockData,
|
||||
HeadData as GenericHeadData,
|
||||
ValidationParams,
|
||||
},
|
||||
use parachain::primitives::{
|
||||
RelayChainBlockNumber,
|
||||
BlockData as GenericBlockData,
|
||||
HeadData as GenericHeadData,
|
||||
ValidationParams,
|
||||
};
|
||||
use codec::{Decode, Encode};
|
||||
|
||||
@@ -83,7 +79,6 @@ pub fn execute_good_on_parent() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap();
|
||||
|
||||
@@ -123,7 +118,6 @@ fn execute_good_chain_on_parent() {
|
||||
relay_chain_height: number as RelayChainBlockNumber + 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap();
|
||||
|
||||
@@ -164,7 +158,6 @@ fn execute_bad_on_parent() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap_err();
|
||||
}
|
||||
|
||||
@@ -16,15 +16,10 @@
|
||||
|
||||
//! Basic parachain that adds a number as part of its state.
|
||||
|
||||
use parachain;
|
||||
|
||||
use crate::{
|
||||
DummyExt,
|
||||
parachain::primitives::{
|
||||
BlockData as GenericBlockData,
|
||||
HeadData as GenericHeadData,
|
||||
ValidationParams, ValidationCode,
|
||||
},
|
||||
use parachain::primitives::{
|
||||
BlockData as GenericBlockData,
|
||||
HeadData as GenericHeadData,
|
||||
ValidationParams, ValidationCode,
|
||||
};
|
||||
use codec::{Decode, Encode};
|
||||
use code_upgrader::{hash_state, HeadData, BlockData, State};
|
||||
@@ -56,7 +51,6 @@ pub fn execute_good_no_upgrade() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap();
|
||||
|
||||
@@ -93,7 +87,6 @@ pub fn execute_good_with_upgrade() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: Some(20),
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap();
|
||||
|
||||
@@ -137,7 +130,6 @@ pub fn code_upgrade_not_allowed() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap();
|
||||
}
|
||||
@@ -168,7 +160,6 @@ pub fn applies_code_upgrade_after_delay() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: Some(2),
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap();
|
||||
|
||||
@@ -204,7 +195,6 @@ pub fn applies_code_upgrade_after_delay() {
|
||||
relay_chain_height: 2,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
).unwrap();
|
||||
|
||||
|
||||
@@ -18,16 +18,7 @@ mod adder;
|
||||
mod code_upgrader;
|
||||
mod wasm_executor;
|
||||
|
||||
use parachain::{
|
||||
self, primitives::UpwardMessage, wasm_executor::{Externalities, run_worker},
|
||||
};
|
||||
|
||||
struct DummyExt;
|
||||
impl Externalities for DummyExt {
|
||||
fn post_upward_message(&mut self, _: UpwardMessage) -> Result<(), String> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
use parachain::wasm_executor::run_worker;
|
||||
|
||||
// This is not an actual test, but rather an entry point for out-of process WASM executor.
|
||||
// When executing tests the executor spawns currently executing binary, which happens to be test binary.
|
||||
|
||||
@@ -16,9 +16,8 @@
|
||||
|
||||
//! Basic parachain that adds a number as part of its state.
|
||||
|
||||
use parachain;
|
||||
use crate::{adder, DummyExt};
|
||||
use crate::parachain::{
|
||||
use crate::adder;
|
||||
use parachain::{
|
||||
primitives::{BlockData, ValidationParams},
|
||||
wasm_executor::EXECUTION_TIMEOUT_SEC,
|
||||
};
|
||||
@@ -40,7 +39,6 @@ fn terminates_on_timeout() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
);
|
||||
match result {
|
||||
@@ -70,7 +68,6 @@ fn parallel_execution() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool2),
|
||||
).ok());
|
||||
let _ = parachain::wasm_executor::validate_candidate(
|
||||
@@ -83,7 +80,6 @@ fn parallel_execution() {
|
||||
relay_chain_height: 1,
|
||||
code_upgrade_allowed: None,
|
||||
},
|
||||
DummyExt,
|
||||
parachain::wasm_executor::ExecutionMode::RemoteTest(&pool),
|
||||
);
|
||||
thread.join().unwrap();
|
||||
|
||||
Reference in New Issue
Block a user