mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 22:47:56 +00:00
Statement store (#13701)
* WIP Statement store * Sync with networking changes in master * WIP statement pallet * Statement validation * pallet tests * Validation queue * Store maintenance * Basic statement refactoring + tests + docs * Store metrics * Store tests * Store maintenance test * cargo fmt * Build fix * OCW Api * Offchain worker * Enable host functions * fmt * Minor tweaks * Fixed a warning * Removed tracing * Manual expiration * Reworked constraint management * Updated pallet constraint calculation * Added small test * Added remove function to the APIs * Copy-paste spec into readme * Comments * Made the store optional * Removed network protocol controller * fmt * Clippy fixes * fmt * fmt * More clippy fixes * More clippy fixes * More clippy fixes * Update client/statement-store/README.md Co-authored-by: cheme <emericchevalier.pro@gmail.com> * Apply suggestions from code review Co-authored-by: Bastian Köcher <git@kchr.de> * Removed sstore from node-template * Sort out data path * Added offline check * Removed dispatch_statement * Renamed into_generic * Fixed commit placement * Use HashSet for tracking peers/statements * fmt * Use ExtendedHostFunctions * Fixed benches * Tweaks * Apply suggestions from code review Co-authored-by: cheme <emericchevalier.pro@gmail.com> * Fixed priority mixup * Rename * newtypes for priorities * Added MAX_TOPICS * Fixed key filtering logic * Remove empty entrie * Removed prefix from signing * More documentation * fmt * Moved store setup from sc-service to node * Handle maintenance task in sc-statement-store * Use statement iterator * Renamed runtime API mod * fmt * Remove dump_encoded * fmt * Apply suggestions from code review Co-authored-by: Bastian Köcher <git@kchr.de> * Apply suggestions from code review Co-authored-by: Bastian Köcher <git@kchr.de> * Fixed build after applying review suggestions * License exceptions * fmt * Store options * Moved pallet consts to config trait * Removed global priority * Validate fields when decoding * Limit validation channel size * Made a comment into module doc * Removed submit_encoded --------- Co-authored-by: cheme <emericchevalier.pro@gmail.com> Co-authored-by: Bastian Köcher <git@kchr.de>
This commit is contained in:
@@ -166,7 +166,7 @@ pub struct ExecutionExtensions<Block: BlockT> {
|
||||
strategies: ExecutionStrategies,
|
||||
keystore: Option<KeystorePtr>,
|
||||
offchain_db: Option<Box<dyn DbExternalitiesFactory>>,
|
||||
// FIXME: these two are only RwLock because of https://github.com/paritytech/substrate/issues/4587
|
||||
// FIXME: these three are only RwLock because of https://github.com/paritytech/substrate/issues/4587
|
||||
// remove when fixed.
|
||||
// To break retain cycle between `Client` and `TransactionPool` we require this
|
||||
// extension to be a `Weak` reference.
|
||||
@@ -174,6 +174,7 @@ pub struct ExecutionExtensions<Block: BlockT> {
|
||||
// during initialization.
|
||||
transaction_pool: RwLock<Option<Weak<dyn OffchainSubmitTransaction<Block>>>>,
|
||||
extensions_factory: RwLock<Box<dyn ExtensionsFactory<Block>>>,
|
||||
statement_store: RwLock<Option<Weak<dyn sp_statement_store::StatementStore>>>,
|
||||
read_runtime_version: Arc<dyn ReadRuntimeVersion>,
|
||||
}
|
||||
|
||||
@@ -186,6 +187,7 @@ impl<Block: BlockT> ExecutionExtensions<Block> {
|
||||
read_runtime_version: Arc<dyn ReadRuntimeVersion>,
|
||||
) -> Self {
|
||||
let transaction_pool = RwLock::new(None);
|
||||
let statement_store = RwLock::new(None);
|
||||
let extensions_factory = Box::new(());
|
||||
Self {
|
||||
strategies,
|
||||
@@ -193,6 +195,7 @@ impl<Block: BlockT> ExecutionExtensions<Block> {
|
||||
offchain_db,
|
||||
extensions_factory: RwLock::new(extensions_factory),
|
||||
transaction_pool,
|
||||
statement_store,
|
||||
read_runtime_version,
|
||||
}
|
||||
}
|
||||
@@ -215,6 +218,11 @@ impl<Block: BlockT> ExecutionExtensions<Block> {
|
||||
*self.transaction_pool.write() = Some(Arc::downgrade(pool) as _);
|
||||
}
|
||||
|
||||
/// Register statement store extension.
|
||||
pub fn register_statement_store(&self, store: Arc<dyn sp_statement_store::StatementStore>) {
|
||||
*self.statement_store.write() = Some(Arc::downgrade(&store) as _);
|
||||
}
|
||||
|
||||
/// Based on the execution context and capabilities it produces
|
||||
/// the extensions object to support desired set of APIs.
|
||||
pub fn extensions(
|
||||
@@ -245,6 +253,11 @@ impl<Block: BlockT> ExecutionExtensions<Block> {
|
||||
}
|
||||
}
|
||||
|
||||
if capabilities.contains(offchain::Capabilities::STATEMENT_STORE) {
|
||||
if let Some(store) = self.statement_store.read().as_ref().and_then(|x| x.upgrade()) {
|
||||
extensions.register(sp_statement_store::runtime_api::StatementStoreExt(store));
|
||||
}
|
||||
}
|
||||
if capabilities.contains(offchain::Capabilities::OFFCHAIN_DB_READ) ||
|
||||
capabilities.contains(offchain::Capabilities::OFFCHAIN_DB_WRITE)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user