diff --git a/mass-transfer-2/config.yaml b/mass-transfer-2/config.yaml index e12a290..2982dcc 100644 --- a/mass-transfer-2/config.yaml +++ b/mass-transfer-2/config.yaml @@ -1,10 +1,10 @@ transfers: - sender: - pubkey: BqrHGjskCWo9Sx6gWeoVHVZbpi6KoE9q6BspdaaGDkmc - privkey: BEYTkFt8uZp2uKtXrWTvt8CzVHjF9BvjvMQnWKvAwGrB - receiver: Sysvar1nstructions1111111111111111111111111 + pubkey: 6VKVAHy2GcQ8EexKgp4RPRQMEW5j12k7bjHFB8acPe8e + privkey: GiLKdLTczFTD5ZQKmcWJHmMz2LYyFVHRznezoHmsaD9p + receiver: DyoR8dJyoZ983TpHBEH6uDzBsqgEAEkFjvK19nKYDtKi - sender: - pubkey: EvsGrL9cXhCJn3KxfHnxKjRJwZgHt2tmHuvn7WMq1Vxu - privkey: 6dWCFhZXSHsdQapb9wks6qR8EvkjgEQhZtcJnR5GS1dc - receiver: HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny + pubkey: HP9QKWx6dhCFQm2XX3CbGdyutL3MUeDrozcQNuf7J8rc + privkey: DA3bffxJouzoxwRxS6dkrLRMC4i3W86zNoA6kPfgSYTq + receiver: AFUr4kCcxx9BFUqJ3qtbNZNzWiU99PTC8mKr5spdkJHN solana_url: https://api.devnet.solana.com \ No newline at end of file diff --git a/mass-transfer-2/src/main.rs b/mass-transfer-2/src/main.rs index 09f0366..d568ea4 100644 --- a/mass-transfer-2/src/main.rs +++ b/mass-transfer-2/src/main.rs @@ -74,7 +74,6 @@ async fn main() -> Result<(), Box> { config.solana_url.clone(), CommitmentConfig::confirmed(), )); - let accounts_from = config .transfers .iter() @@ -86,6 +85,11 @@ async fn main() -> Result<(), Box> { .map(|s| s.receiver) .collect::>(); + //**// create account + // create_account(client.clone(), &config.transfers[0].sender, &Keypair::new()).await?; + // return Ok(()); + //**// + // for acc in &accounts_from { // println!("requesting airdrop for {acc}"); // let signature = client.request_airdrop(&acc, LAMPORTS_PER_SOL).await?; @@ -96,7 +100,10 @@ async fn main() -> Result<(), Box> { print_balances(client.clone(), all_accounts.clone()).await?; let transfer_amount = LAMPORTS_PER_SOL / 100; - println!("sending {transfer_amount} SOL"); + println!( + "sending {} SOL", + transfer_amount as f64 / LAMPORTS_PER_SOL as f64 + ); let transactions = run_batch(config.transfers.iter().map(|tr| { let instruction = @@ -136,6 +143,37 @@ async fn wait_for_confirmation( Ok(()) } +async fn create_account( + client: Arc, + payer: &Keypair, + new_account: &Keypair, +) -> Result<(), ClientError> { + let data_len = 0; + let rent_exemption_amount = client + .get_minimum_balance_for_rent_exemption(data_len) + .await?; + println!("pubkey: {}", new_account.pubkey()); + println!( + "privkey: {}", + bs58::encode(new_account.secret().as_bytes()).into_string() + ); + let instruction = system_instruction::create_account( + &payer.pubkey(), + &new_account.pubkey(), + rent_exemption_amount, + data_len as u64, + &Pubkey::from_str("11111111111111111111111111111111").unwrap(), + ); + let mut transaction = Transaction::new_with_payer(&[instruction], Some(&payer.pubkey())); + transaction.sign( + &[&payer, &new_account], + client.get_latest_blockhash().await?, + ); + client.send_and_confirm_transaction(&transaction).await?; + println!("account {} created", new_account.pubkey()); + Ok(()) +} + async fn run_batch( tasks: impl IntoIterator>>, ) -> Result, ClientError> {