From 6287f1c3446d2575d03020224fa73a0e44e26db5 Mon Sep 17 00:00:00 2001 From: Maximilian Schneider Date: Sat, 4 Feb 2023 02:14:14 +0900 Subject: [PATCH] actually spawn tasks --- service-mango-crank/src/blockhash_poller.rs | 2 +- service-mango-crank/src/main.rs | 2 ++ service-mango-crank/src/transaction_builder.rs | 9 +++++---- service-mango-crank/src/transaction_sender.rs | 7 +++++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/service-mango-crank/src/blockhash_poller.rs b/service-mango-crank/src/blockhash_poller.rs index 6c5e495..84c3f0f 100644 --- a/service-mango-crank/src/blockhash_poller.rs +++ b/service-mango-crank/src/blockhash_poller.rs @@ -38,7 +38,7 @@ pub async fn init(client: Arc) -> Arc> { let join_hdl = { // create a thread-local reference to blockhash let blockhash_c = blockhash.clone(); - spawn(async move { poll_loop(blockhash_c, client) }) + spawn(async move { poll_loop(blockhash_c, client).await }) }; return blockhash; diff --git a/service-mango-crank/src/main.rs b/service-mango-crank/src/main.rs index 0c3d8cd..dfc9add 100644 --- a/service-mango-crank/src/main.rs +++ b/service-mango-crank/src/main.rs @@ -112,6 +112,8 @@ async fn main() -> anyhow::Result<()> { ) .expect("init transaction builder"); + // TODO: throttle cranking, currently runs very fast + // TODO: use real keypair from config / env transaction_sender::init(instruction_receiver, blockhash, rpc_client, Keypair::new()); info!( diff --git a/service-mango-crank/src/transaction_builder.rs b/service-mango-crank/src/transaction_builder.rs index 92bc691..45cebe7 100644 --- a/service-mango-crank/src/transaction_builder.rs +++ b/service-mango-crank/src/transaction_builder.rs @@ -97,7 +97,7 @@ pub fn init( Ok(account_info) => { // only process if the account state changed let evq_version = (account_info.slot, account_info.write_version); - trace!("evq={evq_b58} write_version={:?}", evq_version); + trace!("mango perp evq={evq_b58} write_version={:?}", evq_version); if evq_version == *last_evq_version { continue; } @@ -110,7 +110,6 @@ pub fn init( account.data().borrow_mut(), ) .unwrap(); - trace!("evq={evq_b58} seq_num={}", event_queue.header.seq_num); if !event_queue.empty() { let mango_accounts: HashSet<_> = event_queue @@ -157,6 +156,7 @@ pub fn init( ), }; + info!("mango perp evq={evq_b58} count={} limit=10", event_queue.iter().count()); instruction_sender.send(vec![ix]).await; } } @@ -172,11 +172,11 @@ pub fn init( Ok(account_info) => { // only process if the account state changed let evq_version = (account_info.slot, account_info.write_version); - trace!("evq={evq_b58} write_version={:?}", evq_version); + trace!("serum evq={evq_b58} write_version={:?}", evq_version); if evq_version == *last_evq_version { continue; } - last_evq_versions.insert(evq_b58, evq_version); + last_evq_versions.insert(evq_b58.clone(), evq_version); let account = &account_info.account; @@ -234,6 +234,7 @@ pub fn init( data: MarketInstruction::ConsumeEvents(count as u16).pack(), }; + info!("serum evq={evq_b58} count={count}"); instruction_sender.send(vec![ix]).await; } } diff --git a/service-mango-crank/src/transaction_sender.rs b/service-mango-crank/src/transaction_sender.rs index 0df35da..3471941 100644 --- a/service-mango-crank/src/transaction_sender.rs +++ b/service-mango-crank/src/transaction_sender.rs @@ -1,3 +1,4 @@ +use log::*; use solana_client::{nonblocking::rpc_client::RpcClient, rpc_config::RpcSendTransactionConfig}; use solana_sdk::{ hash::Hash, instruction::Instruction, signature::Keypair, signature::Signer, @@ -12,12 +13,14 @@ pub async fn send_loop( client: Arc, keypair: Keypair, ) { + info!("signing with keypair pk={:?}", keypair.pubkey()); let cfg = RpcSendTransactionConfig { skip_preflight: true, ..RpcSendTransactionConfig::default() }; loop { if let Ok(ixs) = ixs_rx.recv().await { + // TODO add priority fee let tx = Transaction::new_signed_with_payer( &ixs, Some(&keypair.pubkey()), @@ -25,6 +28,7 @@ pub async fn send_loop( *blockhash.read().unwrap(), ); // TODO: collect metrics + info!("send tx={:?}", tx.signatures[0]); client.send_transaction_with_config(&tx, cfg).await; } } @@ -36,6 +40,5 @@ pub fn init( client: Arc, keypair: Keypair, ) { - // launch task - spawn(async move { send_loop(ixs_rx, blockhash, client, keypair) }); + spawn(async move { send_loop(ixs_rx, blockhash, client, keypair).await }); }