mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 10:27:59 +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:
@@ -24,7 +24,9 @@ use log::warn;
|
||||
use hash_db::Hasher;
|
||||
use heapsize::HeapSizeOf;
|
||||
use parity_codec::{Decode, Encode};
|
||||
use primitives::{storage::well_known_keys, NativeOrEncoded, NeverNativeValue, OffchainExt};
|
||||
use primitives::{
|
||||
storage::well_known_keys, NativeOrEncoded, NeverNativeValue, OffchainExt
|
||||
};
|
||||
|
||||
pub mod backend;
|
||||
mod changes_trie;
|
||||
@@ -52,7 +54,10 @@ pub use changes_trie::{
|
||||
oldest_non_pruned_trie as oldest_non_pruned_changes_trie
|
||||
};
|
||||
pub use overlayed_changes::OverlayedChanges;
|
||||
pub use proving_backend::{create_proof_check_backend, create_proof_check_backend_storage};
|
||||
pub use proving_backend::{
|
||||
create_proof_check_backend, create_proof_check_backend_storage,
|
||||
Recorder as ProofRecorder, ProvingBackend,
|
||||
};
|
||||
pub use trie_backend_essence::{TrieBackendStorage, Storage};
|
||||
pub use trie_backend::TrieBackend;
|
||||
|
||||
|
||||
@@ -16,12 +16,16 @@
|
||||
|
||||
//! Proving state machine backend.
|
||||
|
||||
use std::cell::RefCell;
|
||||
use std::{cell::RefCell, rc::Rc};
|
||||
use log::debug;
|
||||
use hash_db::Hasher;
|
||||
use heapsize::HeapSizeOf;
|
||||
use hash_db::HashDB;
|
||||
use trie::{Recorder, MemoryDB, PrefixedMemoryDB, TrieError, default_child_trie_root, read_trie_value_with, read_child_trie_value_with, record_all_keys};
|
||||
use trie::{
|
||||
MemoryDB, PrefixedMemoryDB, TrieError, default_child_trie_root,
|
||||
read_trie_value_with, read_child_trie_value_with, record_all_keys
|
||||
};
|
||||
pub use trie::Recorder;
|
||||
use crate::trie_backend::TrieBackend;
|
||||
use crate::trie_backend_essence::{Ephemeral, TrieBackendEssence, TrieBackendStorage};
|
||||
use crate::{Error, ExecutionError, Backend};
|
||||
@@ -87,7 +91,7 @@ impl<'a, S, H> ProvingBackendEssence<'a, S, H>
|
||||
/// These can be sent to remote node and used as a proof of execution.
|
||||
pub struct ProvingBackend<'a, S: 'a + TrieBackendStorage<H>, H: 'a + Hasher> {
|
||||
backend: &'a TrieBackend<S, H>,
|
||||
proof_recorder: RefCell<Recorder<H::Out>>,
|
||||
proof_recorder: Rc<RefCell<Recorder<H::Out>>>,
|
||||
}
|
||||
|
||||
impl<'a, S: 'a + TrieBackendStorage<H>, H: 'a + Hasher> ProvingBackend<'a, S, H> {
|
||||
@@ -95,14 +99,27 @@ impl<'a, S: 'a + TrieBackendStorage<H>, H: 'a + Hasher> ProvingBackend<'a, S, H>
|
||||
pub fn new(backend: &'a TrieBackend<S, H>) -> Self {
|
||||
ProvingBackend {
|
||||
backend,
|
||||
proof_recorder: RefCell::new(Recorder::new()),
|
||||
proof_recorder: Rc::new(RefCell::new(Recorder::new())),
|
||||
}
|
||||
}
|
||||
|
||||
/// Create new proving backend with the given recorder.
|
||||
pub fn new_with_recorder(
|
||||
backend: &'a TrieBackend<S, H>,
|
||||
proof_recorder: Rc<RefCell<Recorder<H::Out>>>,
|
||||
) -> Self {
|
||||
ProvingBackend {
|
||||
backend,
|
||||
proof_recorder,
|
||||
}
|
||||
}
|
||||
|
||||
/// Consume the backend, extracting the gathered proof in lexicographical order
|
||||
/// by value.
|
||||
pub fn extract_proof(self) -> Vec<Vec<u8>> {
|
||||
self.proof_recorder.into_inner().drain()
|
||||
self.proof_recorder
|
||||
.borrow_mut()
|
||||
.drain()
|
||||
.into_iter()
|
||||
.map(|n| n.data.to_vec())
|
||||
.collect()
|
||||
|
||||
Reference in New Issue
Block a user