From bea7e02e2d9e216bcf0b3de5c12a87e26331d00d Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Mon, 23 Oct 2023 18:45:05 +0200
Subject: [PATCH] update runtime and refac

---
 res/metadata.scale       | Bin 131104 -> 133013 bytes
 src/cache.rs             |   3 +-
 src/commands/account.rs  |   3 +-
 src/commands/expire.rs   |  40 +-------------------
 src/commands/smith.rs    |  15 ++++++--
 src/commands/transfer.rs |  79 +++++++++++++++++++++------------------
 src/indexer.rs           |   3 +-
 src/main.rs              |   8 ++--
 src/runtime_config.rs    |   3 +-
 9 files changed, 66 insertions(+), 88 deletions(-)

diff --git a/res/metadata.scale b/res/metadata.scale
index 5ca3e2273e371e7e0f42789281bf44892e42e55b..ff2e4c744170ba9f541fe08fb699d41f1a28eb0a 100644
GIT binary patch
delta 21995
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
J#-3T${|y;Pb8P?s

delta 20128
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

diff --git a/src/cache.rs b/src/cache.rs
index bec5bae..5662335 100644
--- a/src/cache.rs
+++ b/src/cache.rs
@@ -1,5 +1,4 @@
-use crate::indexer::*;
-use crate::*;
+use crate::{indexer::*, *};
 
 use std::collections::{hash_map, HashMap};
 
diff --git a/src/commands/account.rs b/src/commands/account.rs
index 59856a4..dc86d70 100644
--- a/src/commands/account.rs
+++ b/src/commands/account.rs
@@ -18,7 +18,6 @@ pub enum Subcommand {
 		/// Use universal dividends instead of units
 		#[clap(short = 'u', long = "ud")]
 		is_ud: bool,
-		
 	},
 	/// Transfer the same amount for each space-separated address.
 	/// If an address appears mutiple times, it will get multiple times the same amount
@@ -42,7 +41,7 @@ pub async fn handle_command(data: Data, command: Subcommand) -> anyhow::Result<(
 			amount,
 			dest,
 			keep_alive,
-			is_ud
+			is_ud,
 		} => {
 			commands::transfer::transfer(&data, amount, dest, keep_alive, is_ud).await?;
 		}
diff --git a/src/commands/expire.rs b/src/commands/expire.rs
index 7fe2518..43d7d98 100644
--- a/src/commands/expire.rs
+++ b/src/commands/expire.rs
@@ -3,7 +3,7 @@ use crate::*;
 use futures::join;
 use std::collections::BTreeMap;
 
-pub async fn monitor_expirations(data: &Data, blocks: u32, sessions: u32) -> anyhow::Result<()> {
+pub async fn monitor_expirations(data: &Data, blocks: u32, _sessions: u32) -> anyhow::Result<()> {
 	let client = data.client();
 	let indexer = data.indexer.clone();
 
@@ -14,7 +14,7 @@ pub async fn monitor_expirations(data: &Data, blocks: u32, sessions: u32) -> any
 		.unwrap();
 	let addr_current_block = runtime::storage().system().number();
 	let addr_current_session = runtime::storage().session().current_index();
-	let (current_block, current_session) = join!(
+	let (current_block, _current_session) = join!(
 		client
 			.storage()
 			.fetch(&addr_current_block, Some(parent_hash)),
@@ -23,47 +23,11 @@ pub async fn monitor_expirations(data: &Data, blocks: u32, sessions: u32) -> any
 			.fetch(&addr_current_session, Some(parent_hash),)
 	);
 	let current_block = current_block?.unwrap_or_default();
-	let current_session = current_session?.unwrap_or_default();
 
 	let end_block = current_block + blocks;
-	let end_session = current_session + sessions;
 
 	let mut identity_cache = cache::IdentityCache::new(client.clone(), indexer);
 
-	// Rotate keys
-	let mut must_rotate_keys_before_iter = client
-		.storage()
-		.iter(
-			runtime::storage()
-				.authority_members()
-				.must_rotate_keys_before(0),
-			10,
-			Some(parent_hash),
-		)
-		.await?;
-	let mut must_rotate_keys_before = BTreeMap::new();
-	while let Some((k, v)) = must_rotate_keys_before_iter.next().await? {
-		let session_index = u32::from_le_bytes(k.as_ref()[40..44].try_into().unwrap());
-		if session_index < end_session {
-			must_rotate_keys_before.insert(session_index - current_session, v);
-		}
-	}
-
-	println!("\nAuthority members:");
-	for (sessions_left, identity_ids) in must_rotate_keys_before {
-		println!("Must rotate keys before {sessions_left} sessions:");
-		for identity_id in identity_ids {
-			println!(
-				"  {} ({})",
-				identity_cache
-					.fetch_identity(identity_id, parent_hash)
-					.await
-					.unwrap_or_else(|_| "?".into()),
-				identity_id
-			);
-		}
-	}
-
 	// Certifications
 	let mut basic_certs_iter = client
 		.storage()
diff --git a/src/commands/smith.rs b/src/commands/smith.rs
index 865a9ed..8a69b7a 100644
--- a/src/commands/smith.rs
+++ b/src/commands/smith.rs
@@ -86,7 +86,9 @@ pub async fn handle_command(data: Data, command: Subcommand) -> anyhow::Result<(
 				data.client()
 					.storage()
 					.fetch(
-						&runtime::storage().smith_membership().counter_for_membership(),
+						&runtime::storage()
+							.smith_membership()
+							.counter_for_membership(),
 						None,
 					)
 					.await?
@@ -103,7 +105,13 @@ pub async fn rotate_keys(client: &Client) -> Result<SessionKeys, anyhow::Error>
 	client
 		.rpc()
 		.rotate_keys()
-		.await.map_err(|e| anyhow!("Please make sure you are connected to your validator node with the unsafe RPC API enabled {e}"))?
+		.await
+		.map_err(|e| {
+			anyhow!(
+				"Please make sure you are connected to your validator node with the unsafe RPC \
+				 API enabled {e}"
+			)
+		})?
 		.deref()
 		.try_into()
 		.map_err(|e| anyhow!("Session keys have wrong length: {:?}", e))
@@ -190,7 +198,8 @@ pub async fn go_online(data: &Data) -> Result<(), GcliError> {
 		runtime::authority_members::events::MemberGoOnline,
 		StaticTxPayload<runtime::authority_members::calls::GoOnline>,
 	>(data, &runtime::tx().authority_members().go_online())
-	.await.map_err(|e| e.into())
+	.await
+	.map_err(|e| e.into())
 }
 
 /// claim smith membership
diff --git a/src/commands/transfer.rs b/src/commands/transfer.rs
index aca2273..c49512b 100644
--- a/src/commands/transfer.rs
+++ b/src/commands/transfer.rs
@@ -12,49 +12,54 @@ pub async fn transfer(
 	keep_alive: bool,
 	is_ud: bool,
 ) -> Result<(), subxt::Error> {
-	let progress = if keep_alive {
-		if is_ud {data.client()
-			.tx()
-			.sign_and_submit_then_watch(
-				&runtime::tx().universal_dividend().transfer_ud(dest.into(), balance),
-				&PairSigner::new(data.keypair()),
-				BaseExtrinsicParamsBuilder::new(),
+	match (keep_alive, is_ud) {
+		(true, false) => {
+			submit_call_and_look_event::<
+				runtime::balances::events::Transfer,
+				StaticTxPayload<runtime::balances::calls::TransferKeepAlive>,
+			>(
+				data,
+				&runtime::tx()
+					.balances()
+					.transfer_keep_alive(dest.into(), balance),
 			)
-			.await?} else {data.client()
-			.tx()
-			.sign_and_submit_then_watch(
+			.await
+		}
+		(false, false) => {
+			submit_call_and_look_event::<
+				runtime::balances::events::Transfer,
+				StaticTxPayload<runtime::balances::calls::Transfer>,
+			>(
+				data,
 				&runtime::tx().balances().transfer(dest.into(), balance),
-				&PairSigner::new(data.keypair()),
-				BaseExtrinsicParamsBuilder::new(),
 			)
-			.await?}
-	} else {
-		if is_ud {data.client()
-			.tx()
-			.sign_and_submit_then_watch(
-				&runtime::tx().universal_dividend().transfer_ud_keep_alive(dest.into(), balance),
-				&PairSigner::new(data.keypair()),
-				BaseExtrinsicParamsBuilder::new(),
+			.await
+		}
+		(true, true) => {
+			submit_call_and_look_event::<
+				runtime::balances::events::Transfer,
+				StaticTxPayload<runtime::universal_dividend::calls::TransferUdKeepAlive>,
+			>(
+				data,
+				&runtime::tx()
+					.universal_dividend()
+					.transfer_ud_keep_alive(dest.into(), balance),
 			)
-			.await?} else {data.client()
-			.tx()
-			.sign_and_submit_then_watch(
-				&runtime::tx().balances().transfer_keep_alive(dest.into(), balance),
-				&PairSigner::new(data.keypair()),
-				BaseExtrinsicParamsBuilder::new(),
+			.await
+		}
+		(false, true) => {
+			submit_call_and_look_event::<
+				runtime::balances::events::Transfer,
+				StaticTxPayload<runtime::universal_dividend::calls::TransferUd>,
+			>(
+				data,
+				&runtime::tx()
+					.universal_dividend()
+					.transfer_ud(dest.into(), balance),
 			)
-			.await?}
-	};
-
-	if data.args.no_wait {
-		return Ok(());
+			.await
+		}
 	}
-	let events = track_progress(progress).await?;
-
-	if let Some(e) = events.find_first::<runtime::balances::events::Transfer>()? {
-		println!("{e:?}");
-	}
-	Ok(())
 }
 
 /// transfer balance to multiple target
diff --git a/src/indexer.rs b/src/indexer.rs
index 25473cb..51677d6 100644
--- a/src/indexer.rs
+++ b/src/indexer.rs
@@ -1,5 +1,4 @@
-use graphql_client::reqwest::post_graphql;
-use graphql_client::GraphQLQuery;
+use graphql_client::{reqwest::post_graphql, GraphQLQuery};
 
 use crate::*;
 
diff --git a/src/main.rs b/src/main.rs
index b976245..e4c0b00 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -15,9 +15,11 @@ use keys::*;
 use runtime_config::*;
 use serde::Deserialize;
 use sp_core::{sr25519::Pair, Pair as _};
-use subxt::blocks::ExtrinsicEvents;
-use subxt::events::StaticEvent;
-use subxt::tx::{BaseExtrinsicParamsBuilder, PairSigner, TxPayload, TxStatus, StaticTxPayload};
+use subxt::{
+	blocks::ExtrinsicEvents,
+	events::StaticEvent,
+	tx::{BaseExtrinsicParamsBuilder, PairSigner, StaticTxPayload, TxPayload, TxStatus},
+};
 use utils::*;
 
 /// define command line arguments
diff --git a/src/runtime_config.rs b/src/runtime_config.rs
index e1c2a19..d62c5e1 100644
--- a/src/runtime_config.rs
+++ b/src/runtime_config.rs
@@ -14,7 +14,8 @@ pub type Client = subxt::OnlineClient<Runtime>;
 pub type AccountId = subxt::ext::sp_runtime::AccountId32;
 pub type TxProgress = subxt::tx::TxProgress<Runtime, Client>;
 pub type Balance = u64;
-pub type AccountData = runtime::runtime_types::pallet_duniter_account::types::AccountData<Balance>;
+pub type AccountData =
+	runtime::runtime_types::pallet_duniter_account::types::AccountData<Balance, u32>;
 pub type AccountInfo = runtime::runtime_types::frame_system::AccountInfo<u32, AccountData>;
 pub type Hash = sp_core::H256;
 
-- 
GitLab