Skip to content

Commit

Permalink
dbg
Browse files Browse the repository at this point in the history
  • Loading branch information
soundsonacid committed Mar 29, 2024
1 parent b3c73e0 commit ac4f1e2
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 55 deletions.
12 changes: 6 additions & 6 deletions rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ edition = "2021"
anchor-client = "0.27.0"
jit-proxy = { git = "https://github.com/soundsonacid/jit-proxy", commit = "740bc36" }
solana-sdk = "1.14.16"
drift-sdk = { git = "https://github.com/soundsonacid/drift-rs", commit = "3f1b0fb" }
drift-sdk = { git = "https://github.com/soundsonacid/drift-rs", commit = "c825659" }
tokio = { version = "1.35.1", features = ["full"] }
drift = { git = "https://github.com/drift-labs/protocol-v2.git", commit = "2bbe28c", features = ["mainnet-beta"]}
thiserror = "1.0.38"
Expand Down
10 changes: 6 additions & 4 deletions rust/src/jit_proxy_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ impl<T: AccountProvider> JitProxyClient<T> {
}

pub async fn jit(&self, params: JitIxParams, start: std::time::Instant) -> JitResult<Signature> {
let start_jit = std::time::Instant::now();
if let Some(order) = params
.taker
.orders
Expand Down Expand Up @@ -141,13 +142,13 @@ impl<T: AccountProvider> JitProxyClient<T> {
if order.market_type == MarketType::Spot {
let spot_market_vault = self
.drift_client
.get_spot_market_info(order.market_index)
.await?
.get_spot_market_account(order.market_index)
.expect("spot market")
.vault;
let quote_spot_market_vault = self
.drift_client
.get_spot_market_info(QUOTE_SPOT_MARKET_INDEX)
.await?
.get_spot_market_account(QUOTE_SPOT_MARKET_INDEX)
.expect("spot market")
.vault;
accounts.push(AccountMeta::new_readonly(spot_market_vault, false));
accounts.push(AccountMeta::new_readonly(quote_spot_market_vault, false));
Expand Down Expand Up @@ -202,6 +203,7 @@ impl<T: AccountProvider> JitProxyClient<T> {
.await;

log::error!("fill time: {:?}", start.elapsed());
log::error!("jit time: {:?}", start_jit.elapsed());
sig.map_err(|e| {
log::error!("Error: {}", e);
JitError::Sdk(e.to_string())
Expand Down
73 changes: 29 additions & 44 deletions rust/src/jitter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ pub trait JitterStrategy {
order_sig: String,
referrer_info: Option<ReferrerInfo>,
params: JitParams,
now: std::time::Instant,
) -> JitResult<()>;
}

Expand Down Expand Up @@ -165,7 +166,7 @@ impl<T: AccountProvider + Clone> Jitter<T> {
// Subscribe to auction events and start listening for them
pub async fn subscribe(self: Arc<Self>, url: String) -> JitResult<()> {
let (auction_sender, mut auction_receiver): (
Sender<Box<dyn Event>>,
Sender<Box<(dyn Event)>>,
Receiver<Box<dyn Event>>,
) = mpsc::channel(100);

Expand Down Expand Up @@ -213,27 +214,20 @@ impl<T: AccountProvider + Clone> Jitter<T> {
pub async fn on_auction(&self, event: Box<dyn Event>) -> JitResult<()> {
if let Some(auction) = event.as_any().downcast_ref::<ProgramAccountUpdate<User>>() {
log::info!("Auction received");
let now = std::time::Instant::now();

let user_pubkey = auction.pubkey.clone();
let user_pubkey = &auction.pubkey;
let user = auction.data_and_slot.data.clone();
let user_stats_key = Wallet::derive_stats_account(&user.authority, &drift_program);

for order in user.orders {
if order.status != OrderStatus::Open {
continue;
}

if !order.has_auction() {
continue;
}

if self.exclusion_criteria.load(Ordering::Relaxed) {
if order.status != OrderStatus::Open || !order.has_auction() || self.exclusion_criteria.load(Ordering::Relaxed) {
continue;
}

let order_sig = self.get_order_signatures(&user_pubkey, order.order_id);

if let Some(_) = self.ongoing_auctions.get(&order_sig) {
if self.ongoing_auctions.contains_key(&order_sig) {
continue;
}

Expand All @@ -242,34 +236,25 @@ impl<T: AccountProvider + Clone> Jitter<T> {
if let Some(param) = self.perp_params.get(&order.market_index) {
let perp_market: PerpMarket = self
.drift_client
.get_perp_market_info(order.market_index)
.await?;
.get_perp_market_account(order.market_index).expect("perp market");
let remaining = order.base_asset_amount - order.base_asset_amount_filled;
let min_order_size = perp_market.amm.min_order_size;

if order.base_asset_amount - order.base_asset_amount_filled
< perp_market.amm.min_order_size
{
log::warn!("Order filled within min order size");
log::warn!(
"Remaining: {}",
order.base_asset_amount - order.base_asset_amount_filled
);
if remaining < min_order_size {
log::warn!(
"Minimum order size: {}",
perp_market.amm.min_order_size
"Order filled within min order size\nRemaining: {}\nMinimum order size: {}",
remaining,
min_order_size
);
return Ok(());
}

if (order.base_asset_amount as i128)
- (order.base_asset_amount_filled as i128)
< param.min_position.into()
{
log::warn!("Order filled within min position");
if (remaining as i128) < param.min_position.into() {
log::warn!(
"Remaining: {}",
order.base_asset_amount - order.base_asset_amount_filled
"Order filled within min position\nRemaining: {}\nMin position: {}",
remaining,
param.min_position
);
log::warn!("Min position: {}", param.min_position);
return Ok(());
}

Expand All @@ -281,7 +266,7 @@ impl<T: AccountProvider + Clone> Jitter<T> {
.drift_client
.get_user_stats(&user.authority)
.await
.unwrap();
.expect("user stats");
let referrer_info = ReferrerInfo::get_referrer_info(taker_stats);

let param = param.clone();
Expand All @@ -295,6 +280,7 @@ impl<T: AccountProvider + Clone> Jitter<T> {
order_signature.clone(),
referrer_info,
param.clone(),
now
)
.await;
});
Expand All @@ -309,31 +295,29 @@ impl<T: AccountProvider + Clone> Jitter<T> {
if let Some(param) = self.spot_params.get(&order.market_index) {
let spot_market = self
.drift_client
.get_spot_market_info(order.market_index)
.await?;
.get_spot_market_account(order.market_index)
.expect("spot market");

if order.base_asset_amount - order.base_asset_amount_filled
< spot_market.min_order_size
{
log::warn!("Order filled within min order size");
log::warn!(
"Remaining: {}",
order.base_asset_amount - order.base_asset_amount_filled
"Order filled within min order size\nRemaining: {}\nMinimum order size: {}",
order.base_asset_amount - order.base_asset_amount_filled,
spot_market.min_order_size
);
log::warn!("Minimum order size: {}", spot_market.min_order_size);
return Ok(());
}

if (order.base_asset_amount as i128)
- (order.base_asset_amount_filled as i128)
< param.min_position.into()
{
log::warn!("Order filled within min position");
log::warn!(
"Remaining: {}",
order.base_asset_amount - order.base_asset_amount_filled
"Order filled within min order size\nRemaining: {}\nMinimum order size: {}",
order.base_asset_amount - order.base_asset_amount_filled,
spot_market.min_order_size
);
log::warn!("Min position: {}", param.min_position);
return Ok(());
}

Expand All @@ -356,6 +340,7 @@ impl<T: AccountProvider + Clone> Jitter<T> {
order_signature.clone(),
referrer_info,
param.clone(),
now
)
.await;
});
Expand Down Expand Up @@ -415,9 +400,9 @@ impl<T: AccountProvider> JitterStrategy for Shotgun<T> {
order_sig: String,
referrer_info: Option<ReferrerInfo>,
params: JitParams,
now: std::time::Instant,
) -> JitResult<()> {
log::info!("Trying to fill with Shotgun:");
let now = std::time::Instant::now();
log_details(&order);

for i in 0..order.auction_duration {
Expand Down
2 changes: 2 additions & 0 deletions rust/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ async fn main() {
.await
.unwrap();

drift_client.subscribe().await.unwrap();

let config = RpcSendTransactionConfig::default();

let cu_params = ComputeBudgetParams::new(100_000, 1_400_000);
Expand Down

0 comments on commit ac4f1e2

Please sign in to comment.