diff --git a/Cargo.lock b/Cargo.lock index da840617fd660609a1d57c45b6072a486abdad2c..29cf6363dd7ff79512765e58f517deb93b67e060 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -815,6 +815,7 @@ dependencies = [ "anyhow", "clap", "env_logger", + "futures", "graphql_client", "hex", "logs", diff --git a/Cargo.toml b/Cargo.toml index 14f68a20c91b60f4644a2e47f2334284bfcea1b8..0e63b9e2aa58750f8268c981f4074c747e08d7f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,7 @@ anyhow = "1.0" clap = { version = "3.0", features = ["derive"] } codec = { package = "parity-scale-codec", version = "3.1.5" } env_logger = "0.9.0" +futures = "0.3.21" graphql_client = { version = "0.11.0", features = ["reqwest"] } hex = "0.4.3" logs = "0.5" diff --git a/src/main.rs b/src/main.rs index a177c96b4c0964f2ed10ffaf2a0c8fb75e70dc0a..dba81f986296fe6032ee5620762732b5332ed1d5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ mod indexer; use anyhow::{anyhow, Result}; use clap::Parser; use codec::Encode; +use futures::join; use sp_core::{ crypto::{AccountId32, DeriveJunction, Pair as _, Ss58Codec}, sr25519::Pair, @@ -271,19 +272,19 @@ async fn main() -> Result<()> { .fetch(&gdev_300::storage().system().parent_hash(), None) .await? .unwrap(); - let current_block = client - .storage() - .fetch(&gdev_300::storage().system().number(), Some(parent_hash)) - .await? - .unwrap(); - let current_session = client - .storage() - .fetch( - &gdev_300::storage().session().current_index(), - Some(parent_hash), - ) - .await? - .unwrap(); + let addr_current_block = gdev_300::storage().system().number(); + let addr_current_session = gdev_300::storage().session().current_index(); + let (current_block, current_session) = join!( + client + .storage() + .fetch(&addr_current_block, Some(parent_hash)), + client + .storage() + .fetch(&addr_current_session, Some(parent_hash),) + ); + let current_block = current_block?.unwrap(); + let current_session = current_session?.unwrap(); + let end_block = current_block + blocks; let end_session = current_session + sessions; @@ -592,20 +593,16 @@ async fn main() -> Result<()> { async fn gen_revoc_doc(api: &Client, pair: &Pair) -> Result<()> { let account_id: sp_core::crypto::AccountId32 = pair.public().into(); - let idty_index = api - .storage() - .fetch( - &gdev_300::storage() - .identity() - .identity_index_of(&account_id), - None, - ) - .await?; - let genesis_hash = api - .storage() - .fetch(&gdev_300::storage().system().block_hash(0), None) - .await? - .unwrap(); + let addr_idty_index = gdev_300::storage() + .identity() + .identity_index_of(&account_id); + let addr_block_hash = gdev_300::storage().system().block_hash(0); + let (idty_index, genesis_hash) = join!( + api.storage().fetch(&addr_idty_index, None,), + api.storage().fetch(&addr_block_hash, None) + ); + let idty_index = idty_index?.unwrap(); + let genesis_hash = genesis_hash?.unwrap(); let payload = (b"revo", genesis_hash, idty_index).encode(); let signature = pair.sign(&payload);