mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 02:17:58 +00:00
Cumulus changes version 2 (#2313)
* ensure imbalances are properly accounted for (#2183) * ensure imbalances are properly accounted for * bump runtime version * Update node/runtime/src/lib.rs * implement contract events (#2161) * implement contract events * update runtime * renaming * update test code hash * improve complexity details * add deposit event base cost * add test * Revert "add deposit event base cost" This reverts commit 58ec010c0f4f4f0e16935ad41da32aedd17a8c57. * update test * Revert "update test" This reverts commit 6fe61a593ccf0d41f09a0b97472b28ed8751a999. * Revert "Revert "add deposit event base cost"" This reverts commit 145e8a9bac15313a4c380aa66b94fd4d36fa3f6d. * Fix format a bit * Replace Vec<u8> with [u8; 32] for contract storage key (#2184) * Replace Vec<u8> with [u8; 32] for contract storage key * Read storage keys from sandbox memory into fixed size buffer * Increment `impl_version` * Remove redundant Ok(()) and explicitly specify StorageKey buffer type (#2188) * Switch to `derive(Encode, Decode)` for `Call` (#2178) * Add some tests * More tests * Switch to `derive(Encode, Decode)` for `Call` * Update lock files * Simplify the macro cases * Cache changes trie config in db storage (#2170) * cache changes trie config in db storage * Update core/client/db/src/lib.rs Co-Authored-By: svyatonik <svyatonik@gmail.com> * Update core/client/db/src/lib.rs Co-Authored-By: svyatonik <svyatonik@gmail.com> * Fix version check for renamed runtime api methods (#2190) * Add feature to disable including the test-runtime wasm blob * Enable `std` feature for `consensus_authorities` * Implement `skip_initialize_block` and `initialize_block` for runtime api * Add test and fixes bug * Begin to implement support for passing the `ProofRecorder` * Make sure proof generation works as intended * Fixes tests * Make `BlockBuilder` generate proofs on request. * Adds `TestClientBuilder` to simplify creating a test client * Add `include-wasm-blob` to `test-client` as well * Make `test-client` compile without including the wasm file * Disable more stuff in test-client without wasm * Reorganize the re-exports * Use correct bounds * Update docs * Update core/client/src/block_builder/block_builder.rs Co-Authored-By: bkchr <bkchr@users.noreply.github.com> * Extend test to actually generated proof * Switch to enum for `skip_initialize_block` * Some wasm files updates
This commit is contained in:
@@ -32,7 +32,12 @@ pub struct GenesisConfig {
|
||||
}
|
||||
|
||||
impl GenesisConfig {
|
||||
pub fn new(support_changes_trie: bool, authorities: Vec<AuthorityId>, endowed_accounts: Vec<AccountId>, balance: u64) -> Self {
|
||||
pub fn new(
|
||||
support_changes_trie: bool,
|
||||
authorities: Vec<AuthorityId>,
|
||||
endowed_accounts: Vec<AccountId>,
|
||||
balance: u64
|
||||
) -> Self {
|
||||
GenesisConfig {
|
||||
changes_trie_config: match support_changes_trie {
|
||||
true => Some(super::changes_trie_config()),
|
||||
@@ -44,11 +49,13 @@ impl GenesisConfig {
|
||||
}
|
||||
|
||||
pub fn genesis_map(&self) -> HashMap<Vec<u8>, Vec<u8>> {
|
||||
#[cfg(feature = "include-wasm-blob")]
|
||||
let wasm_runtime = include_bytes!("../wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm").to_vec();
|
||||
let mut map: HashMap<Vec<u8>, Vec<u8>> = self.balances.iter()
|
||||
.map(|&(ref account, balance)| (account.to_keyed_vec(b"balance:"), vec![].and(&balance)))
|
||||
.map(|(k, v)| (blake2_256(&k[..])[..].to_vec(), v.to_vec()))
|
||||
.chain(vec![
|
||||
#[cfg(feature = "include-wasm-blob")]
|
||||
(well_known_keys::CODE.into(), wasm_runtime),
|
||||
(well_known_keys::HEAP_PAGES.into(), vec![].and(&(16 as u64))),
|
||||
(well_known_keys::AUTHORITY_COUNT.into(), vec![].and(&(self.authorities.len() as u32))),
|
||||
|
||||
@@ -102,8 +102,7 @@ pub enum Extrinsic {
|
||||
}
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
impl serde::Serialize for Extrinsic
|
||||
{
|
||||
impl serde::Serialize for Extrinsic {
|
||||
fn serialize<S>(&self, seq: S) -> Result<S::Ok, S::Error> where S: ::serde::Serializer {
|
||||
self.using_encoded(|bytes| seq.serialize_bytes(bytes))
|
||||
}
|
||||
@@ -240,6 +239,13 @@ cfg_if! {
|
||||
fn use_trie() -> u64;
|
||||
fn benchmark_indirect_call() -> u64;
|
||||
fn benchmark_direct_call() -> u64;
|
||||
/// Returns the initialized block number.
|
||||
fn get_block_number() -> u64;
|
||||
/// Takes and returns the initialized block number.
|
||||
fn take_block_number() -> Option<u64>;
|
||||
/// Returns if no block was initialized.
|
||||
#[skip_initialize_block]
|
||||
fn without_initialize_block() -> bool;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -264,6 +270,13 @@ cfg_if! {
|
||||
fn use_trie() -> u64;
|
||||
fn benchmark_indirect_call() -> u64;
|
||||
fn benchmark_direct_call() -> u64;
|
||||
/// Returns the initialized block number.
|
||||
fn get_block_number() -> u64;
|
||||
/// Takes and returns the initialized block number.
|
||||
fn take_block_number() -> Option<u64>;
|
||||
/// Returns if no block was initialized.
|
||||
#[skip_initialize_block]
|
||||
fn without_initialize_block() -> bool;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -417,6 +430,18 @@ cfg_if! {
|
||||
fn benchmark_direct_call() -> u64 {
|
||||
(0..1000).fold(0, |p, i| p + benchmark_add_one(i))
|
||||
}
|
||||
|
||||
fn get_block_number() -> u64 {
|
||||
system::get_block_number().expect("Block number is initialized")
|
||||
}
|
||||
|
||||
fn without_initialize_block() -> bool {
|
||||
system::get_block_number().is_none()
|
||||
}
|
||||
|
||||
fn take_block_number() -> Option<u64> {
|
||||
system::take_block_number()
|
||||
}
|
||||
}
|
||||
|
||||
impl consensus_aura::AuraApi<Block> for Runtime {
|
||||
@@ -537,10 +562,20 @@ cfg_if! {
|
||||
fn benchmark_direct_call() -> u64 {
|
||||
(0..10000).fold(0, |p, i| p + benchmark_add_one(i))
|
||||
}
|
||||
|
||||
fn get_block_number() -> u64 {
|
||||
system::get_block_number().expect("Block number is initialized")
|
||||
}
|
||||
|
||||
fn without_initialize_block() -> bool {
|
||||
system::get_block_number().is_none()
|
||||
}
|
||||
|
||||
fn take_block_number() -> Option<u64> {
|
||||
system::take_block_number()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
impl consensus_aura::AuraApi<Block> for Runtime {
|
||||
fn slot_duration() -> u64 { 1 }
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ const BALANCE_OF: &[u8] = b"balance:";
|
||||
storage_items! {
|
||||
ExtrinsicData: b"sys:xtd" => required map [ u32 => Vec<u8> ];
|
||||
// The current block number being processed. Set by `execute_block`.
|
||||
Number: b"sys:num" => required BlockNumber;
|
||||
Number: b"sys:num" => BlockNumber;
|
||||
ParentHash: b"sys:pha" => required Hash;
|
||||
NewAuthorities: b"sys:new_auth" => Vec<AuthorityId>;
|
||||
}
|
||||
@@ -70,6 +70,14 @@ pub fn initialize_block(header: &Header) {
|
||||
storage::unhashed::put(well_known_keys::EXTRINSIC_INDEX, &0u32);
|
||||
}
|
||||
|
||||
pub fn get_block_number() -> Option<BlockNumber> {
|
||||
Number::get()
|
||||
}
|
||||
|
||||
pub fn take_block_number() -> Option<BlockNumber> {
|
||||
Number::take()
|
||||
}
|
||||
|
||||
/// Actually execute all transitioning for `block`.
|
||||
pub fn polish_block(block: &mut Block) {
|
||||
let header = &mut block.header;
|
||||
@@ -167,7 +175,9 @@ pub fn validate_transaction(utx: Extrinsic) -> TransactionValidity {
|
||||
let mut deps = Vec::new();
|
||||
deps.push(hash(&tx.from, tx.nonce - 1));
|
||||
deps
|
||||
} else { Vec::new() };
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
|
||||
let provides = {
|
||||
let mut p = Vec::new();
|
||||
@@ -200,7 +210,7 @@ pub fn finalize_block() -> Header {
|
||||
let txs = txs.iter().map(Vec::as_slice).collect::<Vec<_>>();
|
||||
let extrinsics_root = enumerated_trie_root::<Blake2Hasher>(&txs).into();
|
||||
|
||||
let number = <Number>::take();
|
||||
let number = <Number>::take().expect("Number is set by `initialize_block`");
|
||||
let parent_hash = <ParentHash>::take();
|
||||
let storage_root = BlakeTwo256::storage_root();
|
||||
let storage_changes_root = BlakeTwo256::storage_changes_root(parent_hash, number - 1);
|
||||
|
||||
Reference in New Issue
Block a user