Reserve nonces for signing (#6834)
* Nonce future - reserve and dispatch * Single thread nonce tests * Track status of reserved nonces. * Initialization of nonce reservations. * Prospective Signer * Fix cli tests.
This commit is contained in:
committed by
Arkadiy Paronyan
parent
4b3c26f991
commit
b861ad37a4
@@ -470,7 +470,7 @@ usage! {
|
||||
"--jsonrpc-hosts=[HOSTS]",
|
||||
"List of allowed Host header values. This option will validate the Host header sent by the browser, it is additional security against some attack vectors. Special options: \"all\", \"none\",.",
|
||||
|
||||
ARG arg_jsonrpc_threads: (usize) = 0usize, or |c: &Config| otry!(c.rpc).processing_threads,
|
||||
ARG arg_jsonrpc_threads: (usize) = 4usize, or |c: &Config| otry!(c.rpc).processing_threads,
|
||||
"--jsonrpc-threads=[THREADS]",
|
||||
"Turn on additional processing threads in all RPC servers. Setting this to non-zero value allows parallel cpu-heavy queries execution.",
|
||||
|
||||
@@ -1449,7 +1449,7 @@ mod tests {
|
||||
arg_jsonrpc_apis: "web3,eth,net,parity,traces,rpc,secretstore".into(),
|
||||
arg_jsonrpc_hosts: "none".into(),
|
||||
arg_jsonrpc_server_threads: None,
|
||||
arg_jsonrpc_threads: 0,
|
||||
arg_jsonrpc_threads: 4,
|
||||
|
||||
// WS
|
||||
flag_no_ws: false,
|
||||
|
||||
@@ -62,7 +62,7 @@ impl Default for HttpConfiguration {
|
||||
cors: None,
|
||||
hosts: Some(Vec::new()),
|
||||
server_threads: 1,
|
||||
processing_threads: 0,
|
||||
processing_threads: 4,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,10 +239,10 @@ impl FullDependencies {
|
||||
use parity_rpc::v1::*;
|
||||
|
||||
macro_rules! add_signing_methods {
|
||||
($namespace:ident, $handler:expr, $deps:expr) => {
|
||||
($namespace:ident, $handler:expr, $deps:expr, $nonces:expr) => {
|
||||
{
|
||||
let deps = &$deps;
|
||||
let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone());
|
||||
let dispatcher = FullDispatcher::new(deps.client.clone(), deps.miner.clone(), $nonces);
|
||||
if deps.signer_service.is_enabled() {
|
||||
$handler.extend_with($namespace::to_delegate(SigningQueueClient::new(&deps.signer_service, dispatcher, deps.remote.clone(), &deps.secret_store)))
|
||||
} else {
|
||||
@@ -252,7 +252,12 @@ impl FullDependencies {
|
||||
}
|
||||
}
|
||||
|
||||
let dispatcher = FullDispatcher::new(self.client.clone(), self.miner.clone());
|
||||
let nonces = Arc::new(Mutex::new(dispatch::Reservations::with_pool(self.fetch.pool())));
|
||||
let dispatcher = FullDispatcher::new(
|
||||
self.client.clone(),
|
||||
self.miner.clone(),
|
||||
nonces.clone(),
|
||||
);
|
||||
for api in apis {
|
||||
match *api {
|
||||
Api::Web3 => {
|
||||
@@ -281,7 +286,7 @@ impl FullDependencies {
|
||||
let filter_client = EthFilterClient::new(self.client.clone(), self.miner.clone());
|
||||
handler.extend_with(filter_client.to_delegate());
|
||||
|
||||
add_signing_methods!(EthSigning, handler, self);
|
||||
add_signing_methods!(EthSigning, handler, self, nonces.clone());
|
||||
}
|
||||
},
|
||||
Api::EthPubSub => {
|
||||
@@ -318,7 +323,7 @@ impl FullDependencies {
|
||||
).to_delegate());
|
||||
|
||||
if !for_generic_pubsub {
|
||||
add_signing_methods!(ParitySigning, handler, self);
|
||||
add_signing_methods!(ParitySigning, handler, self, nonces.clone());
|
||||
}
|
||||
},
|
||||
Api::ParityPubSub => {
|
||||
@@ -435,6 +440,7 @@ impl<C: LightChainClient + 'static> LightDependencies<C> {
|
||||
self.on_demand.clone(),
|
||||
self.cache.clone(),
|
||||
self.transaction_queue.clone(),
|
||||
Arc::new(Mutex::new(dispatch::Reservations::with_pool(self.fetch.pool()))),
|
||||
);
|
||||
|
||||
macro_rules! add_signing_methods {
|
||||
|
||||
Reference in New Issue
Block a user