Skip to content
Snippets Groups Projects
Select Git revision
  • 857a7b82b248611b895a156450ca4ab1cdc2a68f
  • master default protected
  • tuxmain/fix-change-owner-key
  • fix_picked_up_file_in_runtime_release
  • network/gtest-1000 protected
  • upgradable-multisig
  • runtime/gtest-1000
  • network/gdev-800 protected
  • cgeek/issue-297-cpu
  • gdev-800-tests
  • update-docker-compose-rpc-squid-names
  • fix-252
  • 1000i100-test
  • hugo/tmp-0.9.1
  • network/gdev-803 protected
  • hugo/endpoint-gossip
  • network/gdev-802 protected
  • hugo/distance-precompute
  • network/gdev-900 protected
  • tuxmain/anonymous-tx
  • debug/podman
  • gtest-1000-0.11.1 protected
  • gtest-1000-0.11.0 protected
  • gtest-1000 protected
  • gdev-900-0.10.1 protected
  • gdev-900-0.10.0 protected
  • gdev-900-0.9.2 protected
  • gdev-800-0.8.0 protected
  • gdev-900-0.9.1 protected
  • gdev-900-0.9.0 protected
  • gdev-803 protected
  • gdev-802 protected
  • runtime-801 protected
  • gdev-800 protected
  • runtime-800-bis protected
  • runtime-800 protected
  • runtime-800-backup protected
  • runtime-701 protected
  • runtime-700 protected
  • runtime-600 protected
  • runtime-500 protected
41 results

upgrade-substrate.md

Blame
  • transfer.rs 1.93 KiB
    use crate::*;
    
    #[cfg(any(feature = "dev", feature = "gdev"))] // find how to get runtime calls
    type Call = runtime::runtime_types::gdev_runtime::RuntimeCall;
    type BalancesCall = runtime::runtime_types::pallet_balances::pallet::Call;
    
    /// transfer balance to target
    pub async fn transfer(
    	data: &Data,
    	balance: u64,
    	dest: AccountId,
    	keep_alive: bool,
    ) -> Result<(), subxt::Error> {
    	let progress = if keep_alive {
    		data.client()
    			.tx()
    			.sign_and_submit_then_watch(
    				&runtime::tx().balances().transfer(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),
    				&PairSigner::new(data.keypair()),
    				BaseExtrinsicParamsBuilder::new(),
    			)
    			.await?
    	};
    
    	if data.args.no_wait {
    		return Ok(());
    	}
    	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
    pub async fn transfer_multiple(
    	data: &Data,
    	amount: u64,
    	dests: Vec<AccountId>,
    ) -> Result<(), subxt::Error> {
    	// build the list of transactions from the destination accounts
    	let transactions: Vec<Call> = dests
    		.into_iter()
    		.map(|dest| {
    			Call::Balances(BalancesCall::transfer_keep_alive {
    				dest: dest.into(),
    				value: amount,
    			})
    		})
    		.collect();
    
    	// wrap these calls in a batch call
    	let progress = data
    		.client()
    		.tx()
    		.sign_and_submit_then_watch(
    			&runtime::tx().utility().batch(transactions),
    			&PairSigner::new(data.keypair()),
    			BaseExtrinsicParamsBuilder::new(),
    		)
    		.await?;
    
    	if data.args.no_wait {
    		return Ok(());
    	}
    	let events = track_progress(progress).await?;
    	// TODO all transfer
    	if let Some(e) = events.find_first::<runtime::balances::events::Transfer>()? {
    		println!("{e:?}");
    	}
    	Ok(())
    }