From 363fc83b8de04614b13b1c806803c9570c7ef59d Mon Sep 17 00:00:00 2001 From: alpo Date: Fri, 16 Feb 2024 15:11:44 -0800 Subject: [PATCH 1/3] move orderbook module contents into root, rename order_book to orderbook, rename root crate to orderbook --- Beaker.toml | 2 +- contracts/orderbook/Cargo.toml | 2 +- contracts/orderbook/README.md | 2 +- contracts/orderbook/src/bin/schema.rs | 2 +- contracts/orderbook/src/contract.rs | 51 ++----------------- contracts/orderbook/src/lib.rs | 2 + .../orderbook/src/{orderbook => }/mod.rs | 0 .../orderbook/src/{orderbook => }/order.rs | 0 .../src/{orderbook => }/orderbook.rs | 6 +-- contracts/orderbook/src/state.rs | 28 +++++----- .../orderbook/src/{orderbook => }/tick.rs | 0 .../src/{orderbook => }/tick_math.rs | 0 .../src/{orderbook => }/types/mod.rs | 0 .../src/{orderbook => }/types/order.rs | 0 .../src/{orderbook => }/types/orderbook.rs | 0 ts/sdk/README.md | 2 +- ts/sdk/package.json | 2 +- ts/sdk/typedoc.json | 2 +- 18 files changed, 31 insertions(+), 70 deletions(-) rename contracts/orderbook/src/{orderbook => }/mod.rs (100%) rename contracts/orderbook/src/{orderbook => }/order.rs (100%) rename contracts/orderbook/src/{orderbook => }/orderbook.rs (78%) rename contracts/orderbook/src/{orderbook => }/tick.rs (100%) rename contracts/orderbook/src/{orderbook => }/tick_math.rs (100%) rename contracts/orderbook/src/{orderbook => }/types/mod.rs (100%) rename contracts/orderbook/src/{orderbook => }/types/order.rs (100%) rename contracts/orderbook/src/{orderbook => }/types/orderbook.rs (100%) diff --git a/Beaker.toml b/Beaker.toml index 2892efa..b25136a 100644 --- a/Beaker.toml +++ b/Beaker.toml @@ -1 +1 @@ -name = "perpetuals" +name = "orderbook" diff --git a/contracts/orderbook/Cargo.toml b/contracts/orderbook/Cargo.toml index cef1c88..5cee1dc 100644 --- a/contracts/orderbook/Cargo.toml +++ b/contracts/orderbook/Cargo.toml @@ -1,7 +1,7 @@ [package] authors = ["alpo "] edition = "2021" -name = "perpetuals" +name = "orderbook" version = "0.1.0" exclude = [ diff --git a/contracts/orderbook/README.md b/contracts/orderbook/README.md index 6634eb2..6fad043 100644 --- a/contracts/orderbook/README.md +++ b/contracts/orderbook/README.md @@ -1 +1 @@ -# perpetuals +# orderbook diff --git a/contracts/orderbook/src/bin/schema.rs b/contracts/orderbook/src/bin/schema.rs index c11784f..7626819 100644 --- a/contracts/orderbook/src/bin/schema.rs +++ b/contracts/orderbook/src/bin/schema.rs @@ -1,6 +1,6 @@ use cosmwasm_schema::write_api; -use perpetuals::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use orderbook::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; fn main() { write_api! { diff --git a/contracts/orderbook/src/contract.rs b/contracts/orderbook/src/contract.rs index 7c0980d..476bd50 100644 --- a/contracts/orderbook/src/contract.rs +++ b/contracts/orderbook/src/contract.rs @@ -7,9 +7,10 @@ use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; use crate::orderbook; +use crate::order; // version info for migration info -const CONTRACT_NAME: &str = "crates.io:perpetuals"; +const CONTRACT_NAME: &str = "crates.io:orderbook"; const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); /// Handling contract instantiation @@ -68,55 +69,13 @@ pub fn execute( ), // Places limit order on given market - ExecuteMsg::PlaceLimit => orderbook::place_limit(_deps, _env, _info), + ExecuteMsg::PlaceLimit => order::place_limit(_deps, _env, _info), // Cancels limit order with given ID - ExecuteMsg::CancelLimit => orderbook::cancel_limit(_deps, _env, _info), + ExecuteMsg::CancelLimit => order::cancel_limit(_deps, _env, _info), // Places a market order on the passed in market - ExecuteMsg::PlaceMarket => orderbook::place_market(_deps, _env, _info), - - - // === Margin === - - // depositCollateral - - // withdrawCollateral: withdraw collateral from account if initial margin satisfied - - // collateralizationCheckForOrder: check if the passed in order pushes the account passed initial margin requirements - - // syntheticBorrow: borrow synthetic assets for accounting purposes (add to assets & liabilities) - // TODO: is this necessary? - - // isLiquidatable: check if an account is liquidatable - - // liquidate: liquidate an account - - - // === Funding === - - // settleFundingForAccount: settle funding accumulators for all markets - - - // === Risk === - - // updateRiskParamsForMarket - - - // === Emergency === - - // depositToInsuranceFund: deposit collateral to insurance fund - - // pauseMarket: freeze trading on a specific market - - // deleverMarket: settle highest leverage positions against profitable positions to lower market leverage - - // initiateInsuranceFund - // TODO: this should likely be governance-gated - - - // === Oracle === - // TODO: mock oracle until slinky interface is known/ready + ExecuteMsg::PlaceMarket => order::place_market(_deps, _env, _info), } } diff --git a/contracts/orderbook/src/lib.rs b/contracts/orderbook/src/lib.rs index 2af524a..7c6ba75 100644 --- a/contracts/orderbook/src/lib.rs +++ b/contracts/orderbook/src/lib.rs @@ -1,7 +1,9 @@ pub mod contract; mod error; pub mod msg; +pub mod types; pub mod state; mod orderbook; +mod order; pub use crate::error::ContractError; diff --git a/contracts/orderbook/src/orderbook/mod.rs b/contracts/orderbook/src/mod.rs similarity index 100% rename from contracts/orderbook/src/orderbook/mod.rs rename to contracts/orderbook/src/mod.rs diff --git a/contracts/orderbook/src/orderbook/order.rs b/contracts/orderbook/src/order.rs similarity index 100% rename from contracts/orderbook/src/orderbook/order.rs rename to contracts/orderbook/src/order.rs diff --git a/contracts/orderbook/src/orderbook/orderbook.rs b/contracts/orderbook/src/orderbook.rs similarity index 78% rename from contracts/orderbook/src/orderbook/orderbook.rs rename to contracts/orderbook/src/orderbook.rs index 9999f05..6c6e9b8 100644 --- a/contracts/orderbook/src/orderbook/orderbook.rs +++ b/contracts/orderbook/src/orderbook.rs @@ -1,6 +1,6 @@ use crate::error::ContractError; -use crate::orderbook::types::Orderbook; -use crate::state::new_order_book_id; +use crate::types::Orderbook; +use crate::state::new_orderbook_id; use cosmwasm_std::{DepsMut, Env, MessageInfo, Response}; pub fn create_orderbook( @@ -10,7 +10,7 @@ pub fn create_orderbook( quote_denom: String, base_denom: String, ) -> Result { - let book_id = new_order_book_id(deps.storage).unwrap(); + let book_id = new_orderbook_id(deps.storage).unwrap(); let _book = Orderbook { book_id, quote_denom, diff --git a/contracts/orderbook/src/state.rs b/contracts/orderbook/src/state.rs index 96de75a..a02fd56 100644 --- a/contracts/orderbook/src/state.rs +++ b/contracts/orderbook/src/state.rs @@ -1,21 +1,21 @@ -use crate::orderbook::types::{LimitOrder, Orderbook}; +use crate::types::{LimitOrder, Orderbook}; use crate::ContractError; use cosmwasm_std::{Storage, Uint128}; use cw_storage_plus::{Item, Map}; -pub const ORDER_BOOKS: Map<&u64, Orderbook> = Map::new("order_books"); -/// Key: (order_book_id, tick) +pub const ORDERBOOKS: Map<&u64, Orderbook> = Map::new("orderbooks"); +/// Key: (orderbook_id, tick) pub const TICK_LIQUIDITY: Map<&(u64, i64), Uint128> = Map::new("tick_liquidity"); -/// Key: (order_book_id, tick, order_id) +/// Key: (orderbook_id, tick, order_id) pub const ORDERS: Map<&(u64, i64, u64), LimitOrder> = Map::new("tick_orders"); // Counters for ID tracking pub const ORDER_ID: Item = Item::new("order_id"); -pub const ORDER_BOOK_ID: Item = Item::new("order_book_id"); +pub const ORDERBOOK_ID: Item = Item::new("orderbook_id"); -pub fn new_order_book_id(storage: &mut dyn Storage) -> Result { - let id = ORDER_BOOK_ID.load(storage).unwrap_or_default(); - ORDER_BOOK_ID.save(storage, &(id + 1))?; +pub fn new_orderbook_id(storage: &mut dyn Storage) -> Result { + let id = ORDERBOOK_ID.load(storage).unwrap_or_default(); + ORDERBOOK_ID.save(storage, &(id + 1))?; Ok(id) } @@ -28,16 +28,16 @@ pub fn new_order_id(storage: &mut dyn Storage) -> Result { #[cfg(test)] mod test { use super::*; - use crate::orderbook::types::OrderDirection; + use crate::types::OrderDirection; use cosmwasm_std::testing::MockStorage; use cosmwasm_std::{Addr, Order}; #[test] - fn test_new_order_book_id() { + fn test_new_orderbook_id() { let mut storage = MockStorage::new(); - let id = new_order_book_id(&mut storage).unwrap(); + let id = new_orderbook_id(&mut storage).unwrap(); assert_eq!(id, 0); - let id = new_order_book_id(&mut storage).unwrap(); + let id = new_orderbook_id(&mut storage).unwrap(); assert_eq!(id, 1); } @@ -53,7 +53,7 @@ mod test { #[test] fn test_tick_iteration() { let mut storage = MockStorage::new(); - let book_id = new_order_book_id(&mut storage).unwrap(); + let book_id = new_orderbook_id(&mut storage).unwrap(); let tick_amount = 50; for i in -tick_amount..tick_amount { TICK_LIQUIDITY @@ -79,7 +79,7 @@ mod test { fn test_order_iteration() { let mut storage = MockStorage::new(); let order_amount = 50; - let book_id = new_order_book_id(&mut storage).unwrap(); + let book_id = new_orderbook_id(&mut storage).unwrap(); let tick = 0; for i in 0..order_amount { let order_id = new_order_id(&mut storage).unwrap(); diff --git a/contracts/orderbook/src/orderbook/tick.rs b/contracts/orderbook/src/tick.rs similarity index 100% rename from contracts/orderbook/src/orderbook/tick.rs rename to contracts/orderbook/src/tick.rs diff --git a/contracts/orderbook/src/orderbook/tick_math.rs b/contracts/orderbook/src/tick_math.rs similarity index 100% rename from contracts/orderbook/src/orderbook/tick_math.rs rename to contracts/orderbook/src/tick_math.rs diff --git a/contracts/orderbook/src/orderbook/types/mod.rs b/contracts/orderbook/src/types/mod.rs similarity index 100% rename from contracts/orderbook/src/orderbook/types/mod.rs rename to contracts/orderbook/src/types/mod.rs diff --git a/contracts/orderbook/src/orderbook/types/order.rs b/contracts/orderbook/src/types/order.rs similarity index 100% rename from contracts/orderbook/src/orderbook/types/order.rs rename to contracts/orderbook/src/types/order.rs diff --git a/contracts/orderbook/src/orderbook/types/orderbook.rs b/contracts/orderbook/src/types/orderbook.rs similarity index 100% rename from contracts/orderbook/src/orderbook/types/orderbook.rs rename to contracts/orderbook/src/types/orderbook.rs diff --git a/ts/sdk/README.md b/ts/sdk/README.md index 57e4e4b..c76308d 100644 --- a/ts/sdk/README.md +++ b/ts/sdk/README.md @@ -1 +1 @@ -# perpetuals-sdk +# orderbook-sdk diff --git a/ts/sdk/package.json b/ts/sdk/package.json index dd6cad2..bb0e60a 100644 --- a/ts/sdk/package.json +++ b/ts/sdk/package.json @@ -1,5 +1,5 @@ { - "name": "perpetuals-sdk", + "name": "orderbook-sdk", "version": " 0.0.1", "description": "", "cdn": "dist/index.umd.js", diff --git a/ts/sdk/typedoc.json b/ts/sdk/typedoc.json index 2519802..1f8e8f8 100644 --- a/ts/sdk/typedoc.json +++ b/ts/sdk/typedoc.json @@ -1,6 +1,6 @@ { "out": "./docs", - "name": "perpetuals", + "name": "orderbook", "theme": "markdown", "readme": "none", "tsconfig": "./tsconfig.bundle.json" From d7986893a584e337fca1076c928c043b19ea89ee Mon Sep 17 00:00:00 2001 From: alpo Date: Fri, 16 Feb 2024 15:25:05 -0800 Subject: [PATCH 2/3] create skeleton for test folder --- contracts/orderbook/tests/mod.rs | 1 + contracts/orderbook/tests/test_create_orderbook.rs | 0 2 files changed, 1 insertion(+) create mode 100644 contracts/orderbook/tests/mod.rs create mode 100644 contracts/orderbook/tests/test_create_orderbook.rs diff --git a/contracts/orderbook/tests/mod.rs b/contracts/orderbook/tests/mod.rs new file mode 100644 index 0000000..d1b7281 --- /dev/null +++ b/contracts/orderbook/tests/mod.rs @@ -0,0 +1 @@ +mod test_create_orderbook; \ No newline at end of file diff --git a/contracts/orderbook/tests/test_create_orderbook.rs b/contracts/orderbook/tests/test_create_orderbook.rs new file mode 100644 index 0000000..e69de29 From e33ea77c0fa78d69dbcf1401c71c6b7eb7ae1eb8 Mon Sep 17 00:00:00 2001 From: alpo Date: Fri, 16 Feb 2024 23:37:42 -0800 Subject: [PATCH 3/3] remove tests folder --- contracts/orderbook/tests/mod.rs | 1 - contracts/orderbook/tests/test_create_orderbook.rs | 0 2 files changed, 1 deletion(-) delete mode 100644 contracts/orderbook/tests/mod.rs delete mode 100644 contracts/orderbook/tests/test_create_orderbook.rs diff --git a/contracts/orderbook/tests/mod.rs b/contracts/orderbook/tests/mod.rs deleted file mode 100644 index d1b7281..0000000 --- a/contracts/orderbook/tests/mod.rs +++ /dev/null @@ -1 +0,0 @@ -mod test_create_orderbook; \ No newline at end of file diff --git a/contracts/orderbook/tests/test_create_orderbook.rs b/contracts/orderbook/tests/test_create_orderbook.rs deleted file mode 100644 index e69de29..0000000