diff --git a/src/commands/account.rs b/src/commands/account.rs index e1f6d8dcebabbd4d771ec0ed851df306d518073c..59856a4cb2fbfd8901454ae90340578270ba057a 100644 --- a/src/commands/account.rs +++ b/src/commands/account.rs @@ -15,6 +15,10 @@ pub enum Subcommand { /// Prevent from going below account existential deposit #[clap(short = 'k', long = "keep-alive")] keep_alive: bool, + /// 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 @@ -38,8 +42,9 @@ pub async fn handle_command(data: Data, command: Subcommand) -> anyhow::Result<( amount, dest, keep_alive, + is_ud } => { - commands::transfer::transfer(&data, amount, dest, keep_alive).await?; + commands::transfer::transfer(&data, amount, dest, keep_alive, is_ud).await?; } Subcommand::TransferMultiple { amount, dests } => { commands::transfer::transfer_multiple(&data, amount, dests).await?; diff --git a/src/commands/transfer.rs b/src/commands/transfer.rs index 547797d50072d5d8ff82cea883e20a2fb3d6655f..aca2273a9bd9fbf87d391adb3e5b77d61b030f73 100644 --- a/src/commands/transfer.rs +++ b/src/commands/transfer.rs @@ -10,27 +10,40 @@ pub async fn transfer( balance: u64, dest: AccountId, keep_alive: bool, + is_ud: bool, ) -> Result<(), subxt::Error> { let progress = if keep_alive { - data.client() + 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(), + ) + .await?} else {data.client() .tx() .sign_and_submit_then_watch( &runtime::tx().balances().transfer(dest.into(), balance), &PairSigner::new(data.keypair()), BaseExtrinsicParamsBuilder::new(), ) - .await? + .await?} } else { - data.client() + 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?} else {data.client() .tx() .sign_and_submit_then_watch( - &runtime::tx() - .balances() - .transfer_keep_alive(dest.into(), balance), + &runtime::tx().balances().transfer_keep_alive(dest.into(), balance), &PairSigner::new(data.keypair()), BaseExtrinsicParamsBuilder::new(), ) - .await? + .await?} }; if data.args.no_wait {