From 6b5831468f89f213e5a0ef53529b66b871525eea Mon Sep 17 00:00:00 2001 From: jarry-xiao Date: Mon, 13 Sep 2021 13:05:55 -0500 Subject: [PATCH 1/8] adding taker metadata changes to a new branch --- dex/src/matching.rs | 87 +++++++++++++++++++++++---------- dex/src/state.rs | 115 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 175 insertions(+), 27 deletions(-) diff --git a/dex/src/matching.rs b/dex/src/matching.rs index 4b52a656..1c2b7eab 100644 --- a/dex/src/matching.rs +++ b/dex/src/matching.rs @@ -1,6 +1,7 @@ use std::num::NonZeroU64; use crate::instruction::SelfTradeBehavior; +use crate::state::AccountFlag; use num_enum::{IntoPrimitive, TryFromPrimitive}; #[cfg(test)] use proptest_derive::Arbitrary; @@ -347,6 +348,9 @@ impl<'ob> OrderBookState<'ob> { let mut unfilled_qty = max_qty.get(); let mut accum_fill_price = 0; + let include_taker_metadata = + event_q.get_account_flags() & AccountFlag::IncludeTakerMetadata as u64 > 0; + let pc_lot_size = self.market_state.pc_lot_size; let coin_lot_size = self.market_state.coin_lot_size; @@ -455,18 +459,34 @@ impl<'ob> OrderBookState<'ob> { let native_maker_rebate = maker_fee_tier.maker_rebate(native_maker_pc_qty); accum_maker_rebates += native_maker_rebate; - let maker_fill = Event::new(EventView::Fill { - side: Side::Bid, - maker: true, - native_qty_paid: native_maker_pc_qty - native_maker_rebate, - native_qty_received: trade_qty * coin_lot_size, - native_fee_or_rebate: native_maker_rebate, - order_id: best_bid_ref.order_id(), - owner: best_bid_ref.owner(), - owner_slot: best_bid_ref.owner_slot(), - fee_tier: maker_fee_tier, - client_order_id: NonZeroU64::new(best_bid_ref.client_order_id()), - }); + let maker_fill = if !include_taker_metadata { + Event::new(EventView::MakerFill { + side: Side::Bid, + maker: true, + native_qty_paid: native_maker_pc_qty - native_maker_rebate, + native_qty_received: trade_qty * coin_lot_size, + native_fee_or_rebate: native_maker_rebate, + order_id: best_bid_ref.order_id(), + owner: best_bid_ref.owner(), + owner_slot: best_bid_ref.owner_slot(), + fee_tier: maker_fee_tier, + client_order_id: NonZeroU64::new(best_bid_ref.client_order_id()), + taker: owner, + }) + } else { + Event::new(EventView::Fill { + side: Side::Bid, + maker: true, + native_qty_paid: native_maker_pc_qty - native_maker_rebate, + native_qty_received: trade_qty * coin_lot_size, + native_fee_or_rebate: native_maker_rebate, + order_id: best_bid_ref.order_id(), + owner: best_bid_ref.owner(), + owner_slot: best_bid_ref.owner_slot(), + fee_tier: maker_fee_tier, + client_order_id: NonZeroU64::new(best_bid_ref.client_order_id()), + }) + }; event_q .push_back(maker_fill) .map_err(|_| DexErrorCode::EventQueueFull)?; @@ -636,6 +656,8 @@ impl<'ob> OrderBookState<'ob> { let pc_lot_size = self.market_state.pc_lot_size; let coin_lot_size = self.market_state.coin_lot_size; + let include_taker_metadata = + event_q.get_account_flags() & AccountFlag::IncludeTakerMetadata as u64 > 0; let max_pc_qty = fee_tier.remove_taker_fee(native_pc_qty_locked.get()) / pc_lot_size; @@ -770,19 +792,34 @@ impl<'ob> OrderBookState<'ob> { let native_maker_pc_qty = trade_qty * trade_price.get() * pc_lot_size; let native_maker_rebate = maker_fee_tier.maker_rebate(native_maker_pc_qty); accum_maker_rebates += native_maker_rebate; - - let maker_fill = Event::new(EventView::Fill { - side: Side::Ask, - maker: true, - native_qty_paid: trade_qty * coin_lot_size, - native_qty_received: native_maker_pc_qty + native_maker_rebate, - native_fee_or_rebate: native_maker_rebate, - order_id: best_offer_ref.order_id(), - owner: best_offer_ref.owner(), - owner_slot: best_offer_ref.owner_slot(), - fee_tier: maker_fee_tier, - client_order_id: NonZeroU64::new(best_offer_ref.client_order_id()), - }); + let maker_fill = if include_taker_metadata { + Event::new(EventView::MakerFill { + side: Side::Ask, + maker: true, + native_qty_paid: trade_qty * coin_lot_size, + native_qty_received: native_maker_pc_qty + native_maker_rebate, + native_fee_or_rebate: native_maker_rebate, + order_id: best_offer_ref.order_id(), + owner: best_offer_ref.owner(), + owner_slot: best_offer_ref.owner_slot(), + fee_tier: maker_fee_tier, + client_order_id: NonZeroU64::new(best_offer_ref.client_order_id()), + taker: owner, + }) + } else { + Event::new(EventView::Fill { + side: Side::Ask, + maker: true, + native_qty_paid: trade_qty * coin_lot_size, + native_qty_received: native_maker_pc_qty + native_maker_rebate, + native_fee_or_rebate: native_maker_rebate, + order_id: best_offer_ref.order_id(), + owner: best_offer_ref.owner(), + owner_slot: best_offer_ref.owner_slot(), + fee_tier: maker_fee_tier, + client_order_id: NonZeroU64::new(best_offer_ref.client_order_id()), + }) + }; event_q .push_back(maker_fill) .map_err(|_| DexErrorCode::EventQueueFull)?; diff --git a/dex/src/state.rs b/dex/src/state.rs index c29ebacd..c40732c3 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -60,6 +60,7 @@ pub enum AccountFlag { Closed = 1u64 << 8, Permissioned = 1u64 << 9, CrankAuthorityRequired = 1u64 << 10, + IncludeTakerMetadata = 1u64 << 11, } // Versioned frontend for market accounts. @@ -1057,6 +1058,13 @@ pub struct EventQueueHeader { count: u64, seq_num: u64, } + +impl EventQueueHeader { + pub fn get_account_flags(&self) -> u64 { + self.account_flags + } +} + unsafe impl Zeroable for EventQueueHeader {} unsafe impl Pod for EventQueueHeader {} @@ -1088,6 +1096,12 @@ impl QueueHeader for EventQueueHeader { pub type EventQueue<'a> = Queue<'a, EventQueueHeader>; +impl<'a> EventQueue<'a> { + pub fn get_account_flags(&self) -> u64 { + self.header.get_account_flags() + } +} + #[derive(Copy, Clone, BitFlags, Debug)] #[repr(u8)] enum EventFlag { @@ -1182,6 +1196,44 @@ impl Event { } } + EventView::MakerFill { + side, + maker, + native_qty_paid, + native_qty_received, + native_fee_or_rebate, + order_id, + owner, + owner_slot, + fee_tier, + client_order_id, + taker: _, + } => { + let maker_flag = if maker { + BitFlags::from_flag(EventFlag::Maker).bits() + } else { + 0 + }; + let event_flags = + (EventFlag::from_side(side) | EventFlag::Fill).bits() | maker_flag; + Event { + event_flags, + owner_slot, + fee_tier: fee_tier.into(), + + _padding: Zeroable::zeroed(), + + native_qty_released: native_qty_received, + native_qty_paid, + native_fee_or_rebate, + + order_id, + owner, + + client_order_id: client_order_id.map_or(0, NonZeroU64::get), + } + } + EventView::Out { side, release_funds, @@ -1279,6 +1331,19 @@ pub enum EventView { fee_tier: FeeTier, client_order_id: Option, }, + MakerFill { + side: Side, + maker: bool, + native_qty_paid: u64, + native_qty_received: u64, + native_fee_or_rebate: u64, + order_id: u128, + owner: [u64; 4], + owner_slot: u8, + fee_tier: FeeTier, + client_order_id: Option, + taker: [u64; 4], + }, Out { side: Side, release_funds: bool, @@ -1294,7 +1359,9 @@ pub enum EventView { impl EventView { fn side(&self) -> Side { match self { - &EventView::Fill { side, .. } | &EventView::Out { side, .. } => side, + &EventView::Fill { side, .. } + | &EventView::MakerFill { side, .. } + | &EventView::Out { side, .. } => side, } } } @@ -2789,6 +2856,44 @@ impl State { ); } } + EventView::MakerFill { + side, + maker, + native_qty_paid, + native_qty_received, + native_fee_or_rebate, + fee_tier: _, + order_id: _, + owner: _, + owner_slot, + client_order_id, + taker: _, + } => { + match side { + Side::Bid if maker => { + open_orders.native_pc_total -= native_qty_paid; + open_orders.native_coin_total += native_qty_received; + open_orders.native_coin_free += native_qty_received; + open_orders.native_pc_free += native_fee_or_rebate; + } + Side::Ask if maker => { + open_orders.native_coin_total -= native_qty_paid; + open_orders.native_pc_total += native_qty_received; + open_orders.native_pc_free += native_qty_received; + } + _ => (), + }; + if !maker { + let referrer_rebate = fees::referrer_rebate(native_fee_or_rebate); + open_orders.referrer_rebates_accrued += referrer_rebate; + } + if let Some(client_id) = client_order_id { + debug_assert_eq!( + client_id.get(), + identity(open_orders.client_order_ids[owner_slot as usize]) + ); + } + } EventView::Out { side, release_funds, @@ -3098,9 +3203,15 @@ impl State { if eq_buf.len() < 128 { Err(DexErrorCode::EventQueueTooSmall)? } + let account_flags = if market_authority.is_some() { + (AccountFlag::Initialized | AccountFlag::EventQueue | AccountFlag::IncludeTakerMetadata) + .bits() + } else { + (AccountFlag::Initialized | AccountFlag::EventQueue).bits() + }; let eq_hdr: &mut EventQueueHeader = try_cast_mut(eq_hdr_array).or(check_unreachable!())?; *eq_hdr = EventQueueHeader { - account_flags: (AccountFlag::Initialized | AccountFlag::EventQueue).bits(), + account_flags, head: 0, count: 0, seq_num: 0, From 7797852dccd3a0d73421699bc2a69caa166f5b38 Mon Sep 17 00:00:00 2001 From: jarry-xiao Date: Wed, 15 Sep 2021 13:53:05 -0500 Subject: [PATCH 2/8] Recent changes --- Cargo.lock | 678 +++++++++++++++++++++++++++++------------------ dex/src/state.rs | 12 +- 2 files changed, 424 insertions(+), 266 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b39fc41e..374eb970 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -348,9 +348,9 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "0.6.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0dcbc35f504eb6fc275a6d20e4ebcda18cf50d40ba6fabff8c711fa16cb3b16" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "bzip2" @@ -375,12 +375,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.49" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e450b8da92aa6f274e7c6437692f9f2ce6d701fb73bacfcf87897b3f89a4c20e" +checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" dependencies = [ "jobserver", - "num_cpus", ] [[package]] @@ -441,7 +440,6 @@ dependencies = [ "textwrap 0.12.1", "unicode-width", "vec_map", - "yaml-rust", ] [[package]] @@ -509,13 +507,18 @@ dependencies = [ ] [[package]] -name = "console_error_panic_hook" -version = "0.1.6" +name = "console" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" +checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" dependencies = [ - "cfg-if 0.1.10", - "wasm-bindgen", + "encode_unicode", + "lazy_static", + "libc", + "regex", + "terminal_size", + "unicode-width", + "winapi 0.3.9", ] [[package]] @@ -559,11 +562,11 @@ dependencies = [ "anyhow", "clap 3.0.0-beta.2", "debug_print", + "enumflags2", "log", "rand 0.7.3", "safe-transmute", "serum-common", - "serum-context", "serum_dex", "slog-scope", "slog-stdlog", @@ -715,6 +718,16 @@ dependencies = [ "subtle 2.3.0", ] +[[package]] +name = "crypto-mac" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58bcd97a54c7ca5ce2f6eb16f6bede5b0ab5f0055fedc17d2f0b4466e21671ca" +dependencies = [ + "generic-array 0.14.4", + "subtle 2.3.0", +] + [[package]] name = "crypto-mac" version = "0.10.0" @@ -738,6 +751,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle 2.3.0", + "zeroize", +] + [[package]] name = "dashmap" version = "4.0.2" @@ -755,6 +781,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f215f9b7224f49fb73256115331f677d868b34d18b65dbe4db392e6021eea90" +[[package]] +name = "derivation-path" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193388a8c8c75a490b604ff61775e236541b8975e98e5ca1f6ea97d122b7e2db" +dependencies = [ + "failure", +] + [[package]] name = "derivative" version = "2.1.1" @@ -815,12 +850,13 @@ dependencies = [ ] [[package]] -name = "dirs" -version = "3.0.1" +name = "dirs-next" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142995ed02755914747cc6ca76fc7e4583cd18578746716d0508ea6ed558b9ff" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" dependencies = [ - "dirs-sys", + "cfg-if 1.0.0", + "dirs-sys-next", ] [[package]] @@ -830,7 +866,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" dependencies = [ "libc", - "redox_users", + "redox_users 0.3.5", + "winapi 0.3.9", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users 0.4.0", "winapi 0.3.9", ] @@ -852,18 +899,32 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "1.0.0-pre.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a8a37f4e8b35af971e6db5e3897e7a6344caa3f92f6544f88125a1f5f0035a" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", + "curve25519-dalek 3.2.0", "ed25519", "rand 0.7.3", "serde", - "sha2 0.8.2", + "serde_bytes", + "sha2 0.9.3", "zeroize", ] +[[package]] +name = "ed25519-dalek-bip32" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057f328f31294b5ab432e6c39642f54afd1531677d6d4ba2905932844cc242f3" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "failure", + "hmac 0.9.0", + "sha2 0.9.3", +] + [[package]] name = "either" version = "1.6.1" @@ -907,9 +968,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26ecb66b4bdca6c1409b40fb255eefc2bd4f6d135dab3c3124f80ffa2a9661e" +checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" dependencies = [ "atty", "humantime", @@ -970,7 +1031,7 @@ checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "winapi 0.3.9", ] @@ -1017,12 +1078,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs_extra" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" - [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -1059,6 +1114,7 @@ checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" dependencies = [ "futures-channel", "futures-core", + "futures-executor", "futures-io", "futures-sink", "futures-task", @@ -1081,6 +1137,17 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" +[[package]] +name = "futures-executor" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + [[package]] name = "futures-io" version = "0.3.8" @@ -1120,6 +1187,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" dependencies = [ + "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1174,6 +1242,17 @@ dependencies = [ "wasi 0.9.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", +] + [[package]] name = "gimli" version = "0.23.0" @@ -1201,11 +1280,30 @@ dependencies = [ "indexmap", "slab", "tokio 0.2.23", - "tokio-util", + "tokio-util 0.3.1", "tracing", "tracing-futures", ] +[[package]] +name = "h2" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7f3675cfef6a30c8031cf9e6493ebdc3bb3272a3fea3923c4210d1830e6a472" +dependencies = [ + "bytes 1.1.0", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 1.11.0", + "tokio-util 0.6.8", + "tracing", +] + [[package]] name = "hashbrown" version = "0.9.1" @@ -1285,6 +1383,26 @@ dependencies = [ "digest 0.8.1", ] +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deae6d9dbb35ec2c502d62b8f7b1c000a0822c3b0794ba36b3149c0a1c840dff" +dependencies = [ + "crypto-mac 0.9.1", + "digest 0.9.0", +] + [[package]] name = "hmac" version = "0.10.1" @@ -1327,6 +1445,17 @@ dependencies = [ "http", ] +[[package]] +name = "http-body" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399c583b2979440c60be0821a6199eca73bc3c8dcd9d070d75ac726e2c6186e5" +dependencies = [ + "bytes 1.1.0", + "http", + "pin-project-lite 0.2.0", +] + [[package]] name = "httparse" version = "1.3.4" @@ -1355,32 +1484,55 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.2.7", "http", - "http-body", + "http-body 0.3.1", "httparse", "httpdate", "itoa", "pin-project 1.0.2", - "socket2", + "socket2 0.3.17", "tokio 0.2.23", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf09f61b52cfcf4c00de50df88ae423d6c02354e385a86341133b5338630ad1" +dependencies = [ + "bytes 1.1.0", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.4", + "http", + "http-body 0.4.3", + "httparse", + "httpdate", + "itoa", + "pin-project 1.0.2", + "socket2 0.4.1", + "tokio 1.11.0", + "tower-service", + "tracing", + "want", +] + [[package]] name = "hyper-rustls" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ - "bytes 0.5.6", "futures-util", - "hyper", + "hyper 0.14.5", "log", "rustls", - "tokio 0.2.23", + "tokio 1.11.0", "tokio-rustls", "webpki", ] @@ -1466,38 +1618,6 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" -[[package]] -name = "jemalloc-ctl" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7" -dependencies = [ - "jemalloc-sys", - "libc", - "paste", -] - -[[package]] -name = "jemalloc-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" -dependencies = [ - "cc", - "fs_extra", - "libc", -] - -[[package]] -name = "jemallocator" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" -dependencies = [ - "jemalloc-sys", - "libc", -] - [[package]] name = "jobserver" version = "0.1.21" @@ -1518,11 +1638,13 @@ dependencies = [ [[package]] name = "jsonrpc-core" -version = "15.1.0" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991fa" +checksum = "d4467ab6dfa369b69e52bd0692e480c4d117410538526a57a304a0f2250fd95e" dependencies = [ - "futures 0.1.30", + "futures 0.3.8", + "futures-executor", + "futures-util", "log", "serde", "serde_derive", @@ -1556,9 +1678,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.86" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" +checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" [[package]] name = "libflate" @@ -1781,7 +1903,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897" dependencies = [ - "socket2", + "socket2 0.3.17", "winapi 0.3.9", ] @@ -2050,7 +2172,7 @@ dependencies = [ "cfg-if 0.1.10", "cloudabi 0.0.3", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "rustc_version 0.2.3", "smallvec 0.6.13", "winapi 0.3.9", @@ -2065,7 +2187,7 @@ dependencies = [ "cfg-if 0.1.10", "cloudabi 0.0.3", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "smallvec 1.5.0", "winapi 0.3.9", ] @@ -2080,38 +2202,18 @@ dependencies = [ "cloudabi 0.1.0", "instant", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "smallvec 1.5.0", "winapi 0.3.9", ] -[[package]] -name = "paste" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" -dependencies = [ - "paste-impl", - "proc-macro-hack", -] - -[[package]] -name = "paste-impl" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" -dependencies = [ - "proc-macro-hack", -] - [[package]] name = "pbkdf2" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" dependencies = [ - "byteorder", - "crypto-mac 0.7.0", + "crypto-mac 0.8.0", ] [[package]] @@ -2271,6 +2373,15 @@ dependencies = [ "unicode-xid 0.2.1", ] +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -2320,7 +2431,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom", + "getrandom 0.1.15", "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", @@ -2368,7 +2479,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom", + "getrandom 0.1.15", ] [[package]] @@ -2488,17 +2599,36 @@ version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +[[package]] +name = "redox_syscall" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_users" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ - "getrandom", - "redox_syscall", + "getrandom 0.1.15", + "redox_syscall 0.1.57", "rust-argon2", ] +[[package]] +name = "redox_users" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" +dependencies = [ + "getrandom 0.2.3", + "redox_syscall 0.2.10", +] + [[package]] name = "regex" version = "1.4.2" @@ -2528,37 +2658,35 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.10.9" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb15d6255c792356a0f578d8a645c677904dc02e862bebe2ecc18e0c01b9a0ce" +checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22" dependencies = [ "base64 0.13.0", - "bytes 0.5.6", + "bytes 1.1.0", "encoding_rs", "futures-core", "futures-util", "http", - "http-body", - "hyper", + "http-body 0.4.3", + "hyper 0.14.5", "hyper-rustls", "ipnet", "js-sys", "lazy_static", "log", "mime", - "mime_guess", "percent-encoding", "pin-project-lite 0.2.0", "rustls", "serde", "serde_json", "serde_urlencoded 0.7.0", - "tokio 0.2.23", + "tokio 1.11.0", "tokio-rustls", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-bindgen-test", "web-sys", "webpki-roots", "winreg", @@ -2566,13 +2694,13 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.12" +version = "0.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba5a8ec64ee89a76c98c549af81ff14813df09c3e6dc4766c3856da48597a0c" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" dependencies = [ "cc", - "lazy_static", "libc", + "once_cell", "spin", "untrusted", "web-sys", @@ -2639,11 +2767,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.18.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ - "base64 0.12.3", + "base64 0.13.0", "log", "ring", "sct", @@ -2858,22 +2986,6 @@ dependencies = [ "solana-program", ] -[[package]] -name = "serum-cli" -version = "0.1.0" -dependencies = [ - "anyhow", - "clap 3.0.0-beta.2", - "crank", - "serde_json", - "serum-common", - "serum-context", - "serum_dex", - "solana-client", - "solana-sdk", - "spl-token 2.0.6", -] - [[package]] name = "serum-common" version = "0.1.0" @@ -2892,20 +3004,6 @@ dependencies = [ "spl-token 2.0.6", ] -[[package]] -name = "serum-context" -version = "0.1.0" -dependencies = [ - "anyhow", - "clap 3.0.0-beta.2", - "dirs 3.0.1", - "serde", - "serde_yaml", - "serum-common", - "solana-client", - "solana-sdk", -] - [[package]] name = "serum-pool" version = "0.1.0" @@ -2959,7 +3057,7 @@ dependencies = [ [[package]] name = "serum_dex" -version = "0.3.1" +version = "0.4.0" dependencies = [ "arrayref", "bincode", @@ -3173,15 +3271,25 @@ checksum = "2c29947abdee2a218277abeca306f25789c938e500ea5a9d4b12a5a504466902" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.1.57", + "winapi 0.3.9", +] + +[[package]] +name = "socket2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad" +dependencies = [ + "libc", "winapi 0.3.9", ] [[package]] name = "solana-account-decoder" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e9dd2ab538891f637c804ead93a3b2c625582e4f8d6afcb849cb50784e8e83" +checksum = "73ca2ebdb1e7f983da67240e83ed907f022ea5180aedfa4ccdb4c30b97fbcd40" dependencies = [ "Inflector", "base64 0.12.3", @@ -3203,9 +3311,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc0c9f6474c429d7e7f35856f8164282007b16d8167093a4a9f7e1a659e89c5" +checksum = "3ebff534a91278691011b96558bd60d95528c1e56b7f1190ee6d798176f06e89" dependencies = [ "chrono", "clap 2.33.3", @@ -3214,14 +3322,29 @@ dependencies = [ "solana-sdk", "thiserror", "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-cli-config" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fc060ba727a5f81df3ac0d5fcc92f7796448d38b492f1989ce365da7ca920e" +dependencies = [ + "dirs-next", + "lazy_static", + "serde", + "serde_derive", + "serde_yaml", "url", ] [[package]] name = "solana-client" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64f07b5e4a1f237102871e4ae38fe2332a07d3ec93140586b79e15a283b01fa6" +checksum = "abab0da9b2d6e30516a53e7653e95bf8b04e929bf1e99965f836d6c0931404e5" dependencies = [ "base64 0.13.0", "bincode", @@ -3239,21 +3362,23 @@ dependencies = [ "serde_json", "solana-account-decoder", "solana-clap-utils", + "solana-faucet", "solana-net-utils", "solana-sdk", "solana-transaction-status", "solana-version", "solana-vote-program", "thiserror", + "tokio 1.11.0", "tungstenite 0.10.1", "url", ] [[package]] name = "solana-config-program" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5498102950c1f21ee990b49a02f314d5e7c39b486dd037cea07ab3215b85aded" +checksum = "ec8c1a9e79f557587096010eb96ec099605abd364c723bbb721783bbcec60f42" dependencies = [ "bincode", "chrono", @@ -3266,14 +3391,14 @@ dependencies = [ [[package]] name = "solana-crate-features" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "482146f96dfb27aa2d47c9bafe396befa6fbbc380a00992b279900e46c3d6bd3" +checksum = "48b4d7b50a436a4d7df7be70beb436b918a188105f63b5798a4457c3cb657c87" dependencies = [ "backtrace", "bytes 0.4.12", "cc", - "curve25519-dalek", + "curve25519-dalek 2.1.0", "ed25519-dalek", "either", "lazy_static", @@ -3281,6 +3406,7 @@ dependencies = [ "rand_chacha 0.2.2", "regex-syntax", "reqwest", + "ring", "serde", "syn 0.15.44", "syn 1.0.60", @@ -3288,11 +3414,34 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "solana-faucet" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b58e17a6c1bf7ae4e9c2270e34f8d0fa9f9d9748f1f61cca7e65288684b1e50" +dependencies = [ + "bincode", + "byteorder", + "clap 2.33.3", + "log", + "serde", + "serde_derive", + "solana-clap-utils", + "solana-cli-config", + "solana-logger", + "solana-metrics", + "solana-sdk", + "solana-version", + "spl-memo", + "thiserror", + "tokio 1.11.0", +] + [[package]] name = "solana-frozen-abi" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9422b85d5a3c745fc295ce2b7fcf750b471ff7df024054364e9f1943c291579f" +checksum = "95c481f0f29753f5b2d382628abae98a1dd87b572ddc7cbe5fe55ca62b6f7f07" dependencies = [ "bs58", "bv", @@ -3310,11 +3459,10 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd067e75733685ce7de6a320cdf6413734d5b7f87d26979d3d55c296e56ca20" +checksum = "f2068bcc47160ac9081893439b10a05e4bbe85cc0f6bccb6f1b0815423fbdd0c" dependencies = [ - "lazy_static", "proc-macro2 1.0.24", "quote 1.0.7", "rustc_version 0.2.3", @@ -3323,9 +3471,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df776ad38b50574ad98a016afa6318200c480ddbd82cfeb162af30a2e4ff43ac" +checksum = "7ea5932e186629f47859924b3773cfd8bcb4b8796898ac85c1fa0a6a2024e5c6" dependencies = [ "env_logger", "lazy_static", @@ -3334,12 +3482,10 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9eebdb42760977cc566c7c75f6f40a2780e6f7412c93338ebad75e8c7e80fd7" +checksum = "02245c245ae1376845a3d62d7f9d64181c521166da019dfd18924a6ac3e1dc67" dependencies = [ - "jemalloc-ctl", - "jemallocator", "log", "solana-metrics", "solana-sdk", @@ -3347,9 +3493,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe99297d2271d9adac222d971abfe3cef599bff736bcf942868dd6044aab8e1" +checksum = "156a031ebbdb2a1751d443289218c6946806852468deded96548406808f9365a" dependencies = [ "env_logger", "gethostname", @@ -3361,9 +3507,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb6be9fe3ac6e62e7f11e7013c4fa861efa7f0f8f8190d7d9fb38ebb1aa881e8" +checksum = "f49b7930c8a2aa8ab3ee158d360cb18ae551ead7fd6c339455ee9693417f82e2" dependencies = [ "bincode", "clap 2.33.3", @@ -3372,26 +3518,27 @@ dependencies = [ "rand 0.7.3", "serde", "serde_derive", - "socket2", + "socket2 0.3.17", "solana-clap-utils", "solana-logger", "solana-version", - "tokio 0.3.7", + "tokio 1.11.0", "url", ] [[package]] name = "solana-program" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b400512c2dae0c5773087f31ceb038e73cbea159902d2f3a613844aa6312f7dc" +checksum = "7a2df39c63e21c5b58e2012e7675bed5e8dd5100470ffddedcafb78f5a7e3abe" dependencies = [ "bincode", + "blake3", "borsh", "borsh-derive", "bs58", "bv", - "curve25519-dalek", + "curve25519-dalek 2.1.0", "hex", "itertools", "lazy_static", @@ -3405,6 +3552,7 @@ dependencies = [ "serde_bytes", "serde_derive", "sha2 0.9.3", + "sha3", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-logger", @@ -3414,9 +3562,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187fe2696341fe088908a5de485a20196c6b1dd3f793212f952efa295bf4bd56" +checksum = "a99177e163c4da6f94320e105132def2a08368d6a6ff897195223ab9d6758c63" dependencies = [ "lazy_static", "num_cpus", @@ -3424,30 +3572,32 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb7094d080b0b9d94a88253e493b1d0d4ee8147eeb22fa986ac0e8958e63002" +checksum = "6a591490d0cd13ebcea6f717592f5ad1bce5c1268573e708079665a5a6a0eaa1" dependencies = [ "base32", - "console 0.11.3", + "console 0.14.1", "dialoguer", "hidapi", "log", "num-derive", "num-traits", "parking_lot 0.10.2", + "qstring", "semver 0.9.0", "solana-sdk", "thiserror", - "url", + "uriparse", ] [[package]] name = "solana-runtime" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8632b5ef79468ca00ad223106ee92329135a4fe3e61f948d3cf2106eaf48ba43" +checksum = "c968934633ed389bb492a7f080deffd4082c3897b9486ca57ecd90afaa2f2c09" dependencies = [ + "arrayref", "bincode", "blake3", "bv", @@ -3458,7 +3608,6 @@ dependencies = [ "dir-diff", "flate2", "fnv", - "fs_extra", "itertools", "lazy_static", "libc", @@ -3495,9 +3644,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "400e8646d1a17e8b62affceead9f014c020bb98d67537cb4941ca31d8cf042b7" +checksum = "fac80d6452327448116f1a50f2e616ce51c1db6c74f1db30aa7d801bab4e410c" dependencies = [ "assert_matches", "bincode", @@ -3505,8 +3654,10 @@ dependencies = [ "bv", "byteorder", "chrono", + "derivation-path", "digest 0.9.0", "ed25519-dalek", + "ed25519-dalek-bip32", "generic-array 0.14.4", "hex", "hmac 0.10.1", @@ -3518,8 +3669,10 @@ dependencies = [ "num-derive", "num-traits", "pbkdf2 0.6.0", + "qstring", "rand 0.7.3", "rand_chacha 0.2.2", + "rand_core 0.6.2", "rustc_version 0.2.3", "rustversion", "serde", @@ -3535,13 +3688,14 @@ dependencies = [ "solana-program", "solana-sdk-macro", "thiserror", + "uriparse", ] [[package]] name = "solana-sdk-macro" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dd6ba0756969873d7ea48b9172f6d51a4cb462337cfbdab16d04ac77020bfc0" +checksum = "6473d8fa445520564c84e8803320721404d160ffd876a125326a726541f11534" dependencies = [ "bs58", "proc-macro2 1.0.24", @@ -3552,9 +3706,9 @@ dependencies = [ [[package]] name = "solana-secp256k1-program" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1149fcf548c613270bf7e30782da458c7d9881ac4d9bb77797f69c1dd46c8b44" +checksum = "239da198d43584bf0929ce175c93448f239b5fe4b8f542fd752a4624a93bf10f" dependencies = [ "bincode", "digest 0.9.0", @@ -3567,9 +3721,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c42d3aeeed82af9e43e1ac03468af0e64394017a82f05102dcceb26e8fd1b" +checksum = "d11ad775a21e4ecbdaf7d576501cf577a7582154fef3c49cfe6bd131c76955de" dependencies = [ "bincode", "log", @@ -3589,9 +3743,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbc2d00d9db54d8a0c6342003adeff41a0ed8d1f4c91b258936d72bf1ddd000" +checksum = "cec0a504cc01260b3b9b38318fe4055a0362b912d82189c8d881802c577d725a" dependencies = [ "Inflector", "base64 0.12.3", @@ -3606,17 +3760,17 @@ dependencies = [ "solana-sdk", "solana-stake-program", "solana-vote-program", - "spl-memo 2.0.1", - "spl-memo 3.0.0", + "spl-associated-token-account", + "spl-memo", "spl-token 3.1.0", "thiserror", ] [[package]] name = "solana-version" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5b9e8b925d699127a3c1c7b513c59cb3a712a0c49bfbf6f21d88825e89e8df7" +checksum = "236bab3619ee2050ab6211187ea7506c9df1e4b86fcb2aaf59319ca9522a6681" dependencies = [ "log", "rustc_version 0.2.3", @@ -3630,9 +3784,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.5.11" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20342656be3909158010bb24745f4144adcc65b7f2be7ad631b85c04f09a620f" +checksum = "e7a8b6534569e68f249130dfda9b2653017d626dedb6e2cb5508fb7963b32708" dependencies = [ "bincode", "log", @@ -3656,19 +3810,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] -name = "spl-memo" -version = "2.0.1" +name = "spl-associated-token-account" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2b771f6146dec14ef5fbf498f9374652c54badc3befc8c40c1d426dd45d720" +checksum = "4adc47eebe5d2b662cbaaba1843719c28a67e5ec5d0460bc3ca60900a51f74e2" dependencies = [ "solana-program", + "spl-token 3.1.0", ] [[package]] name = "spl-memo" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e76b60c6f58279b5469beb1705744e9778ee94d643c8e3e2ff91874c59bb3c63" +checksum = "bd0dc6f70db6bacea7ff25870b016a65ba1d1b6013536f08e4fd79a8f9005325" dependencies = [ "solana-program", ] @@ -3792,7 +3947,7 @@ checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" dependencies = [ "filetime", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "xattr", ] @@ -3805,7 +3960,7 @@ dependencies = [ "cfg-if 0.1.10", "libc", "rand 0.7.3", - "redox_syscall", + "redox_syscall 0.1.57", "remove_dir_all", "winapi 0.3.9", ] @@ -3816,7 +3971,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0863a3345e70f61d613eab32ee046ccd1bcc5f9105fe402c61fcd0c13eeb8b5" dependencies = [ - "dirs 2.0.2", + "dirs", "winapi 0.3.9", ] @@ -3917,18 +4072,20 @@ dependencies = [ [[package]] name = "tiny-bip39" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0165e045cc2ae1660270ca65e1676dbaab60feb0f91b10f7d0665e9b47e31f2" +checksum = "d9e44c4759bae7f1032e286a7ef990bd9ed23fe831b7eeba0beb97484c2e59b8" dependencies = [ - "failure", - "hmac 0.7.1", + "anyhow", + "hmac 0.8.1", "once_cell", - "pbkdf2 0.3.0", + "pbkdf2 0.4.0", "rand 0.7.3", "rustc-hash", - "sha2 0.8.2", + "sha2 0.9.3", + "thiserror", "unicode-normalization", + "zeroize", ] [[package]] @@ -3996,13 +4153,12 @@ dependencies = [ [[package]] name = "tokio" -version = "0.3.7" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46409491c9375a693ce7032101970a54f8a2010efb77e13f70788f0d84489e39" +checksum = "b4efe6fc2395938c8155973d7be49fe8d03a843726e285e100a8a383cc0154ce" dependencies = [ "autocfg 1.0.1", - "bytes 0.6.0", - "futures-core", + "bytes 1.1.0", "libc", "memchr", "mio 0.7.9", @@ -4011,8 +4167,7 @@ dependencies = [ "parking_lot 0.11.1", "pin-project-lite 0.2.0", "signal-hook-registry", - "slab", - "tokio-macros 0.3.2", + "tokio-macros 1.3.0", "winapi 0.3.9", ] @@ -4082,9 +4237,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "0.3.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46dfffa59fc3c8aad216ed61bdc2c263d2b9d87a9c8ac9de0c11a813e51b6db7" +checksum = "54473be61f4ebe4efd09cec9bd5d16fa51d70ea0192213d754d2d500457db110" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.7", @@ -4112,13 +4267,12 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.14.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" dependencies = [ - "futures-core", "rustls", - "tokio 0.2.23", + "tokio 1.11.0", "webpki", ] @@ -4235,6 +4389,20 @@ dependencies = [ "tokio 0.2.23", ] +[[package]] +name = "tokio-util" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d3725d3efa29485e87311c5b699de63cde14b00ed4d256b8318aa30ca452cd" +dependencies = [ + "bytes 1.1.0", + "futures-core", + "futures-sink", + "log", + "pin-project-lite 0.2.0", + "tokio 1.11.0", +] + [[package]] name = "toml" version = "0.5.7" @@ -4423,6 +4591,16 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "uriparse" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e515b1ada404168e145ac55afba3c42f04cf972201a8552d42e2abb17c1b7221" +dependencies = [ + "fnv", + "lazy_static", +] + [[package]] name = "url" version = "2.2.0" @@ -4496,7 +4674,7 @@ dependencies = [ "futures 0.3.8", "headers", "http", - "hyper", + "hyper 0.13.9", "log", "mime", "mime_guess", @@ -4594,30 +4772,6 @@ version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" -[[package]] -name = "wasm-bindgen-test" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0355fa0c1f9b792a09b6dcb6a8be24d51e71e6d74972f9eb4a44c4c004d24a25" -dependencies = [ - "console_error_panic_hook", - "js-sys", - "scoped-tls", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-bindgen-test-macro", -] - -[[package]] -name = "wasm-bindgen-test-macro" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27e07b46b98024c2ba2f9e83a10c2ef0515f057f2da299c1762a2017de80438b" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", -] - [[package]] name = "web-sys" version = "0.3.46" @@ -4640,9 +4794,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f20dea7535251981a9670857150d571846545088359b28e4951d350bdaf179f" +checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" dependencies = [ "webpki", ] diff --git a/dex/src/state.rs b/dex/src/state.rs index c40732c3..b48c8bb2 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -1,9 +1,6 @@ #![cfg_attr(not(feature = "program"), allow(unused))] use num_enum::TryFromPrimitive; -use std::{ - cell::RefMut, convert::identity, convert::TryInto, mem::size_of, num::NonZeroU64, ops::Deref, - ops::DerefMut, -}; +use std::{cell::RefMut, convert::TryInto, convert::identity, mem::size_of, num::NonZeroU64, ops::Deref, ops::{DerefMut, Index}, process::Output}; use arrayref::{array_ref, array_refs, mut_array_refs}; @@ -803,6 +800,13 @@ impl<'a, H: QueueHeader> Queue<'a, H> { } } +impl<'a, H: QueueHeader> Index for Queue<'a, H> { + type Output = H::Item; + fn index(&self, i: usize) -> &Self::Output { + &self.buf[(self.header.head() as usize + i) % self.buf.len()] + } +} + struct QueueIterator<'a, 'b, H: QueueHeader> { queue: &'b Queue<'a, H>, index: u64, From 3acc3c80f6703fe665722b2a04d1e6ab1c5d86c9 Mon Sep 17 00:00:00 2001 From: jarry-xiao Date: Wed, 15 Sep 2021 13:56:16 -0500 Subject: [PATCH 3/8] bug --- dex/src/matching.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dex/src/matching.rs b/dex/src/matching.rs index 1c2b7eab..e74ac48f 100644 --- a/dex/src/matching.rs +++ b/dex/src/matching.rs @@ -459,7 +459,7 @@ impl<'ob> OrderBookState<'ob> { let native_maker_rebate = maker_fee_tier.maker_rebate(native_maker_pc_qty); accum_maker_rebates += native_maker_rebate; - let maker_fill = if !include_taker_metadata { + let maker_fill = if include_taker_metadata { Event::new(EventView::MakerFill { side: Side::Bid, maker: true, From b9fcec5593e07cf92024779555c378cd89f33b9c Mon Sep 17 00:00:00 2001 From: jarry-xiao Date: Wed, 15 Sep 2021 14:00:33 -0500 Subject: [PATCH 4/8] bug --- dex/src/state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dex/src/state.rs b/dex/src/state.rs index b48c8bb2..c32ff409 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -3207,7 +3207,7 @@ impl State { if eq_buf.len() < 128 { Err(DexErrorCode::EventQueueTooSmall)? } - let account_flags = if market_authority.is_some() { + let account_flags = if crank_authority.is_some() { (AccountFlag::Initialized | AccountFlag::EventQueue | AccountFlag::IncludeTakerMetadata) .bits() } else { From ebd0d74db9c2cbeea6b3bea9aa5fde81c2fff11c Mon Sep 17 00:00:00 2001 From: jarry-xiao Date: Wed, 15 Sep 2021 14:02:07 -0500 Subject: [PATCH 5/8] rebase --- dex/src/state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dex/src/state.rs b/dex/src/state.rs index c32ff409..be6952eb 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -3207,7 +3207,7 @@ impl State { if eq_buf.len() < 128 { Err(DexErrorCode::EventQueueTooSmall)? } - let account_flags = if crank_authority.is_some() { + let account_flags = if consume_events_authority.is_some() { (AccountFlag::Initialized | AccountFlag::EventQueue | AccountFlag::IncludeTakerMetadata) .bits() } else { From e5a58080dcca9c0b3a245dbf4a93b5cd7cb13839 Mon Sep 17 00:00:00 2001 From: jarry-xiao Date: Wed, 15 Sep 2021 15:17:20 -0500 Subject: [PATCH 6/8] Fix changes from integration tests --- dex/src/state.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/dex/src/state.rs b/dex/src/state.rs index be6952eb..f6924fd3 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -239,7 +239,7 @@ impl MarketStateV2 { .map_err(|_| DexErrorCode::InvalidMarketFlags)?; let required_flags = AccountFlag::Initialized | AccountFlag::Market | AccountFlag::Permissioned; - if flags != required_flags { + if !flags.contains(required_flags) { Err(DexErrorCode::InvalidMarketFlags)? } Ok(()) @@ -451,9 +451,8 @@ impl MarketState { let (header, buf) = strip_header::(queue, false)?; let flags = BitFlags::from_bits(header.account_flags).unwrap(); - check_assert_eq!( - &flags, - &(AccountFlag::Initialized | AccountFlag::EventQueue) + check_assert!( + flags.contains(AccountFlag::Initialized | AccountFlag::EventQueue) )?; Ok(Queue { header, buf }) } @@ -1649,7 +1648,7 @@ pub(crate) mod account_parser { instruction: &'a InitializeMarketInstruction, accounts: &'a [AccountInfo<'b>], ) -> DexResult { - check_assert!(accounts.len() >= 10 && accounts.len() <= 12)?; + check_assert!(accounts.len() >= 10 && accounts.len() <= 13)?; let ( unchecked_serum_dex_accounts, unchecked_vaults, From 2a9d7b99f601b6a77d8d8aedb0a6004348e11c70 Mon Sep 17 00:00:00 2001 From: armaniferrante Date: Mon, 1 Nov 2021 11:05:24 -0700 Subject: [PATCH 7/8] Remove IncludeTakerMetadata flag --- dex/src/matching.rs | 12 ++++++------ dex/src/state.rs | 12 +++--------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/dex/src/matching.rs b/dex/src/matching.rs index e74ac48f..6d9fc9aa 100644 --- a/dex/src/matching.rs +++ b/dex/src/matching.rs @@ -348,8 +348,8 @@ impl<'ob> OrderBookState<'ob> { let mut unfilled_qty = max_qty.get(); let mut accum_fill_price = 0; - let include_taker_metadata = - event_q.get_account_flags() & AccountFlag::IncludeTakerMetadata as u64 > 0; + let is_permissioned_crank = + event_q.get_account_flags() & AccountFlag::CrankAuthorityRequired as u64 > 0; let pc_lot_size = self.market_state.pc_lot_size; let coin_lot_size = self.market_state.coin_lot_size; @@ -459,7 +459,7 @@ impl<'ob> OrderBookState<'ob> { let native_maker_rebate = maker_fee_tier.maker_rebate(native_maker_pc_qty); accum_maker_rebates += native_maker_rebate; - let maker_fill = if include_taker_metadata { + let maker_fill = if is_permissioned_crank { Event::new(EventView::MakerFill { side: Side::Bid, maker: true, @@ -656,8 +656,8 @@ impl<'ob> OrderBookState<'ob> { let pc_lot_size = self.market_state.pc_lot_size; let coin_lot_size = self.market_state.coin_lot_size; - let include_taker_metadata = - event_q.get_account_flags() & AccountFlag::IncludeTakerMetadata as u64 > 0; + let is_permissioned_crank = + event_q.get_account_flags() & AccountFlag::CrankAuthorityRequired as u64 > 0; let max_pc_qty = fee_tier.remove_taker_fee(native_pc_qty_locked.get()) / pc_lot_size; @@ -792,7 +792,7 @@ impl<'ob> OrderBookState<'ob> { let native_maker_pc_qty = trade_qty * trade_price.get() * pc_lot_size; let native_maker_rebate = maker_fee_tier.maker_rebate(native_maker_pc_qty); accum_maker_rebates += native_maker_rebate; - let maker_fill = if include_taker_metadata { + let maker_fill = if is_permissioned_crank { Event::new(EventView::MakerFill { side: Side::Ask, maker: true, diff --git a/dex/src/state.rs b/dex/src/state.rs index d90def72..1b05ef23 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -66,7 +66,6 @@ pub enum AccountFlag { Closed = 1u64 << 8, Permissioned = 1u64 << 9, CrankAuthorityRequired = 1u64 << 10, - IncludeTakerMetadata = 1u64 << 11, } // Versioned frontend for market accounts. @@ -844,13 +843,6 @@ impl<'a, H: QueueHeader> Queue<'a, H> { } } -impl<'a, H: QueueHeader> Index for Queue<'a, H> { - type Output = H::Item; - fn index(&self, i: usize) -> &Self::Output { - &self.buf[(self.header.head() as usize + i) % self.buf.len()] - } -} - struct QueueIterator<'a, 'b, H: QueueHeader> { queue: &'b Queue<'a, H>, index: u64, @@ -3252,7 +3244,9 @@ impl State { Err(DexErrorCode::EventQueueTooSmall)? } let account_flags = if consume_events_authority.is_some() { - (AccountFlag::Initialized | AccountFlag::EventQueue | AccountFlag::IncludeTakerMetadata) + (AccountFlag::Initialized + | AccountFlag::EventQueue + | AccountFlag::CrankAuthorityRequired) .bits() } else { (AccountFlag::Initialized | AccountFlag::EventQueue).bits() From 12295790bf6ad5eb7c5137ca7aa41b6f0a2a17aa Mon Sep 17 00:00:00 2001 From: armaniferrante Date: Mon, 1 Nov 2021 11:10:46 -0700 Subject: [PATCH 8/8] Cleanup event view match statements --- dex/src/state.rs | 55 ++---------------------------------------------- 1 file changed, 2 insertions(+), 53 deletions(-) diff --git a/dex/src/state.rs b/dex/src/state.rs index 1b05ef23..0aa7f77f 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -1210,33 +1210,8 @@ impl Event { owner_slot, fee_tier, client_order_id, - } => { - let maker_flag = if maker { - BitFlags::from_flag(EventFlag::Maker).bits() - } else { - 0 - }; - let event_flags = - (EventFlag::from_side(side) | EventFlag::Fill).bits() | maker_flag; - Event { - event_flags, - owner_slot, - fee_tier: fee_tier.into(), - - _padding: Zeroable::zeroed(), - - native_qty_released: native_qty_received, - native_qty_paid, - native_fee_or_rebate, - - order_id, - owner, - - client_order_id: client_order_id.map_or(0, NonZeroU64::get), - } } - - EventView::MakerFill { + | EventView::MakerFill { side, maker, native_qty_paid, @@ -1273,7 +1248,6 @@ impl Event { client_order_id: client_order_id.map_or(0, NonZeroU64::get), } } - EventView::Out { side, release_funds, @@ -2870,33 +2844,8 @@ impl State { owner: _, owner_slot, client_order_id, - } => { - match side { - Side::Bid if maker => { - open_orders.native_pc_total -= native_qty_paid; - open_orders.native_coin_total += native_qty_received; - open_orders.native_coin_free += native_qty_received; - open_orders.native_pc_free += native_fee_or_rebate; - } - Side::Ask if maker => { - open_orders.native_coin_total -= native_qty_paid; - open_orders.native_pc_total += native_qty_received; - open_orders.native_pc_free += native_qty_received; - } - _ => (), - }; - if !maker { - let referrer_rebate = fees::referrer_rebate(native_fee_or_rebate); - open_orders.referrer_rebates_accrued += referrer_rebate; - } - if let Some(client_id) = client_order_id { - debug_assert_eq!( - client_id.get(), - identity(open_orders.client_order_ids[owner_slot as usize]) - ); - } } - EventView::MakerFill { + | EventView::MakerFill { side, maker, native_qty_paid,