From 74ce1c421cddd9d3fd843fef6bc9a8692e43821e Mon Sep 17 00:00:00 2001 From: maxrobot Date: Mon, 4 Mar 2024 14:56:30 +0000 Subject: [PATCH] added orderbook print --- .../injective-cosmwasm-mock/src/contract.rs | 14 ++++--- contracts/injective-cosmwasm-mock/src/msg.rs | 20 ++++++--- .../src/testing/query_exchange_test.rs | 41 +++++++++++++++---- 3 files changed, 56 insertions(+), 19 deletions(-) diff --git a/contracts/injective-cosmwasm-mock/src/contract.rs b/contracts/injective-cosmwasm-mock/src/contract.rs index 7ef1e541..7cecb28c 100644 --- a/contracts/injective-cosmwasm-mock/src/contract.rs +++ b/contracts/injective-cosmwasm-mock/src/contract.rs @@ -9,7 +9,7 @@ use cosmos_sdk_proto::{cosmos::authz::v1beta1::MsgExec, traits::Message, Any}; use cosmwasm_std::{entry_point, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Reply, ReplyOn, Response, StdResult, SubMsg}; use cw2::set_contract_version; use injective_cosmwasm::{create_deposit_msg, InjectiveMsgWrapper, InjectiveQuerier, InjectiveQueryWrapper, OrderType}; -use injective_math::FPDecimal; +use injective_math::{scale::Scaled, FPDecimal}; const CONTRACT_NAME: &str = "crates.io:injective:dummy"; const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -35,15 +35,19 @@ pub fn execute( ExecuteMsg::TestDepositMsg { subaccount_id, amount } => { Ok(Response::new().add_message(create_deposit_msg(env.contract.address, subaccount_id, amount))) } - ExecuteMsg::TestTraderTransientSpotOrders { market_id, subaccount_id, price, quantity } => { + ExecuteMsg::TestTraderTransientSpotOrders { + market_id, + subaccount_id, + price, + quantity, + } => { let querier: InjectiveQuerier = InjectiveQuerier::new(&deps.querier); let spot_market = querier.query_spot_market(&market_id).unwrap().market.unwrap(); - deps.api.debug(&info.sender.as_str()); let order_msg = create_spot_market_order( - FPDecimal::must_from_str(price.as_str()), - FPDecimal::must_from_str(quantity.as_str()), + FPDecimal::must_from_str(price.as_str()).scaled(18), + FPDecimal::must_from_str(quantity.as_str()).scaled(18), OrderType::Buy, &info.sender.as_str(), subaccount_id.as_str(), diff --git a/contracts/injective-cosmwasm-mock/src/msg.rs b/contracts/injective-cosmwasm-mock/src/msg.rs index 561be59c..25682b11 100644 --- a/contracts/injective-cosmwasm-mock/src/msg.rs +++ b/contracts/injective-cosmwasm-mock/src/msg.rs @@ -4,8 +4,7 @@ use injective_math::FPDecimal; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -pub const MSG_CREATE_SPOT_MARKET_ORDER_ENDPOINT: &str = - "/injective.exchange.v1beta1.MsgCreateSpotMarketOrder"; +pub const MSG_CREATE_SPOT_MARKET_ORDER_ENDPOINT: &str = "/injective.exchange.v1beta1.MsgCreateSpotMarketOrder"; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] pub struct InstantiateMsg {} @@ -13,9 +12,20 @@ pub struct InstantiateMsg {} #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum ExecuteMsg { - TestDepositMsg { subaccount_id: SubaccountId, amount: Coin }, - TestTraderTransientSpotOrders { market_id: MarketId, subaccount_id: SubaccountId, price:String, quantity: String }, - TestTraderTransientDerivativeOrders { market_id: MarketId, subaccount_id: SubaccountId }, + TestDepositMsg { + subaccount_id: SubaccountId, + amount: Coin, + }, + TestTraderTransientSpotOrders { + market_id: MarketId, + subaccount_id: SubaccountId, + price: String, + quantity: String, + }, + TestTraderTransientDerivativeOrders { + market_id: MarketId, + subaccount_id: SubaccountId, + }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] diff --git a/contracts/injective-cosmwasm-mock/src/testing/query_exchange_test.rs b/contracts/injective-cosmwasm-mock/src/testing/query_exchange_test.rs index 418be8c0..9929c50c 100644 --- a/contracts/injective-cosmwasm-mock/src/testing/query_exchange_test.rs +++ b/contracts/injective-cosmwasm-mock/src/testing/query_exchange_test.rs @@ -22,7 +22,7 @@ use injective_cosmwasm::{ use injective_math::FPDecimal; use injective_std::types::injective::exchange::v1beta1::{ Deposit, MsgDeposit, MsgInstantPerpetualMarketLaunch, MsgInstantSpotMarketLaunch, OrderType, QueryAggregateMarketVolumeResponse, - QuerySubaccountDepositsRequest, + QuerySpotOrderbookRequest, QuerySubaccountDepositsRequest, }; use injective_test_tube::injective_cosmwasm::get_default_subaccount_id_for_checked_address; use injective_test_tube::{Account, Exchange, Module, RunnerResult, Wasm}; @@ -485,23 +485,32 @@ fn test_query_spot_market_orderbook() { assert_eq!( buys_price_level[1], PriceLevel { - p: human_to_dec(liquidity_orders[sells_price_level.len()+1].price.as_str(), QUOTE_DECIMALS - BASE_DECIMALS), - q: human_to_dec(liquidity_orders[sells_price_level.len()+1].quantity.as_str(), BASE_DECIMALS), + p: human_to_dec( + liquidity_orders[sells_price_level.len() + 1].price.as_str(), + QUOTE_DECIMALS - BASE_DECIMALS + ), + q: human_to_dec(liquidity_orders[sells_price_level.len() + 1].quantity.as_str(), BASE_DECIMALS), } ); assert_eq!( sells_price_level[0], PriceLevel { - p: human_to_dec(liquidity_orders[sells_price_level.len()-1].price.as_str(), QUOTE_DECIMALS - BASE_DECIMALS), - q: human_to_dec(liquidity_orders[sells_price_level.len()-1].quantity.as_str(), BASE_DECIMALS), + p: human_to_dec( + liquidity_orders[sells_price_level.len() - 1].price.as_str(), + QUOTE_DECIMALS - BASE_DECIMALS + ), + q: human_to_dec(liquidity_orders[sells_price_level.len() - 1].quantity.as_str(), BASE_DECIMALS), } ); assert_eq!( sells_price_level[1], PriceLevel { - p: human_to_dec(liquidity_orders[sells_price_level.len()-2].price.as_str(), QUOTE_DECIMALS - BASE_DECIMALS), - q: human_to_dec(liquidity_orders[sells_price_level.len()-2].quantity.as_str(), BASE_DECIMALS), + p: human_to_dec( + liquidity_orders[sells_price_level.len() - 2].price.as_str(), + QUOTE_DECIMALS - BASE_DECIMALS + ), + q: human_to_dec(liquidity_orders[sells_price_level.len() - 2].quantity.as_str(), BASE_DECIMALS), } ); } @@ -742,6 +751,7 @@ fn test_query_derivative_orders_to_cancel_up_to_amount() {} #[cfg_attr(not(feature = "integration"), ignore)] fn test_query_trader_transient_spot_orders() { let env = Setup::new(ExchangeType::Spot); + let exchange = Exchange::new(&env.app); let wasm = Wasm::new(&env.app); let market_id = env.market_id.unwrap(); @@ -753,13 +763,26 @@ fn test_query_trader_transient_spot_orders() { let (scale_price, scale_quantity) = scale_price_quantity_for_spot_market_dec("9.8", "1", &BASE_DECIMALS, "E_DECIMALS); + println!("{:?}", scale_price); + println!("{:?}", scale_quantity); + + let res = exchange.query_spot_market_orderbook(&QuerySpotOrderbookRequest { + market_id: market_id.clone(), + order_side: 0i32, + limit_cumulative_quantity: "".to_string(), + limit_cumulative_notional: "".to_string(), + limit: 0u64, + }); + + println!("{:#?}", res); + let res = wasm.execute( &env.contract_address, &ExecuteMsg::TestTraderTransientSpotOrders { market_id: MarketId::new(market_id).unwrap(), subaccount_id: subaccount_id.clone(), - price:dec_to_proto(scale_price), - quantity: dec_to_proto(scale_quantity), + price: scale_price.to_string(), + quantity: scale_quantity.to_string(), }, &[], &env.users[0].account,