From a8df1fdbf7aeab4519d9fa9c22e6aec1a955a12a Mon Sep 17 00:00:00 2001 From: Alex Miao Date: Wed, 20 Oct 2021 12:34:29 -0700 Subject: [PATCH 1/6] emit fill and out events with timestamp --- Cargo.lock | 1345 +++++++++++++++++++++++-------------------- dex/Cargo.toml | 1 + dex/src/events.rs | 94 +++ dex/src/fees.rs | 3 +- dex/src/lib.rs | 1 + dex/src/matching.rs | 203 ++++--- dex/src/state.rs | 2 +- 7 files changed, 923 insertions(+), 726 deletions(-) create mode 100644 dex/src/events.rs diff --git a/Cargo.lock b/Cargo.lock index b39fc41e..b1fc4428 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,12 +48,165 @@ dependencies = [ "memchr", ] +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + [[package]] name = "alloc-traits" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b2d54853319fd101b8dd81de382bcbf3e03410a64d8928bbee85a3e7dcde483" +[[package]] +name = "anchor-attribute-access-control" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b8ab97bfde16e49bc399586a857e9bd56e7c867a66a89ca809134d53d999138" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.24", + "quote 1.0.7", + "regex", + "syn 1.0.60", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40d3c2f1ebf823c4a8f0e41c57125991713177d4f02957600f8c1da8bd87adfd" +dependencies = [ + "anchor-syn", + "anyhow", + "bs58 0.4.0", + "proc-macro2 1.0.24", + "quote 1.0.7", + "rustversion", + "syn 1.0.60", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8b5b954878c4cb1ad373143b42765abaf789691e13dbd0a3a8707dbfd0612cd" +dependencies = [ + "anchor-syn", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418daba265c778d2386c27191b4ec927c24be270ed6a8667be81de9e541c7a3e" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + +[[package]] +name = "anchor-attribute-interface" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd2159348897db16999d76ff396ba8722fb101e0e0cc6845b3722eb7472bd0d0" +dependencies = [ + "anchor-syn", + "anyhow", + "heck", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6695b491d73439ad9839565beb0749107f5acca6d96b4cbaaaef428ba7b6c11" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + +[[package]] +name = "anchor-attribute-state" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcbbeade2b868e597b55d90418dc51334c4e388f988c0eea1af5d511083ed10" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc82ef304c38e7529883176c428acfab9a7bb9e851aa694fff53c8789fbc47b3" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + +[[package]] +name = "anchor-lang" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6b7025eb65638005fd2af58e2bd136b61c2ecbadda379e908a5af541351a3a" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-interface", + "anchor-attribute-program", + "anchor-attribute-state", + "anchor-derive-accounts", + "base64 0.13.0", + "borsh", + "bytemuck", + "solana-program", + "thiserror", +] + +[[package]] +name = "anchor-syn" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321cca8ea1c35b199956e11b2869e8b1b1ae2d547326a12fc45375d0806470c8" +dependencies = [ + "anyhow", + "bs58 0.3.1", + "heck", + "proc-macro2 1.0.24", + "proc-macro2-diagnostics", + "quote 1.0.7", + "serde", + "serde_json", + "sha2", + "syn 1.0.60", + "thiserror", +] + [[package]] name = "ansi_term" version = "0.11.0" @@ -236,11 +389,11 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "borsh" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a26c53ddf60281f18e7a29b20db7ba3db82a9d81b9650bfaa02d646f50d364" +checksum = "18dda7dc709193c0d86a1a51050a926dc3df1cf262ec46a23a25dba421ea1924" dependencies = [ - "borsh-derive", + "borsh-derive 0.9.1", "hashbrown", ] @@ -250,8 +403,21 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b637a47728b78a78cd7f4b85bf06d71ef4221840e059a38f048be2422bf673b2" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.8.1", + "borsh-schema-derive-internal 0.8.1", + "proc-macro-crate", + "proc-macro2 1.0.24", + "syn 1.0.60", +] + +[[package]] +name = "borsh-derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "684155372435f578c0fa1acd13ebbb182cc19d6b38b64ae7901da4393217d264" +dependencies = [ + "borsh-derive-internal 0.9.1", + "borsh-schema-derive-internal 0.9.1", "proc-macro-crate", "proc-macro2 1.0.24", "syn 1.0.60", @@ -268,6 +434,17 @@ dependencies = [ "syn 1.0.60", ] +[[package]] +name = "borsh-derive-internal" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2102f62f8b6d3edeab871830782285b64cc1830168094db05c8e458f209bc5c3" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + [[package]] name = "borsh-schema-derive-internal" version = "0.8.1" @@ -279,12 +456,29 @@ dependencies = [ "syn 1.0.60", ] +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196c978c4c9b0b142d446ef3240690bf5a8a33497074a113ff9a337ccb750483" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", +] + [[package]] name = "bs58" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + [[package]] name = "buf_redux" version = "0.8.4" @@ -348,9 +542,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 +569,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.49" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e450b8da92aa6f274e7c6437692f9f2ce6d701fb73bacfcf87897b3f89a4c20e" +checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" dependencies = [ "jobserver", - "num_cpus", ] [[package]] @@ -441,7 +634,6 @@ dependencies = [ "textwrap 0.12.1", "unicode-width", "vec_map", - "yaml-rust", ] [[package]] @@ -494,9 +686,9 @@ dependencies = [ [[package]] name = "console" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50aab2529019abfabfa93f1e6c41ef392f91fbf179b347a7e96abb524884a08" +checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" dependencies = [ "encode_unicode", "lazy_static", @@ -505,17 +697,6 @@ dependencies = [ "terminal_size", "unicode-width", "winapi 0.3.9", - "winapi-util", -] - -[[package]] -name = "console_error_panic_hook" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" -dependencies = [ - "cfg-if 0.1.10", - "wasm-bindgen", ] [[package]] @@ -559,18 +740,18 @@ 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", "sloggers", "solana-client", "solana-sdk", - "spl-token 3.1.0", + "spl-token 3.2.0", "threadpool", "tokio 0.2.23", "warp", @@ -605,17 +786,6 @@ dependencies = [ "crossbeam-utils 0.8.1", ] -[[package]] -name = "crossbeam-deque" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - [[package]] name = "crossbeam-deque" version = "0.8.0" @@ -623,25 +793,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ "cfg-if 1.0.0", - "crossbeam-epoch 0.9.1", + "crossbeam-epoch", "crossbeam-utils 0.8.1", ] -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg 1.0.1", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.6", - "scopeguard", -] - [[package]] name = "crossbeam-epoch" version = "0.9.1" @@ -652,21 +807,10 @@ dependencies = [ "const_fn", "crossbeam-utils 0.8.1", "lazy_static", - "memoffset 0.6.1", + "memoffset", "scopeguard", ] -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - [[package]] name = "crossbeam-utils" version = "0.7.2" @@ -697,22 +841,22 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.12.3", - "subtle 1.0.0", + "generic-array 0.14.4", + "subtle", ] [[package]] name = "crypto-mac" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +checksum = "58bcd97a54c7ca5ce2f6eb16f6bede5b0ab5f0055fedc17d2f0b4466e21671ca" dependencies = [ "generic-array 0.14.4", - "subtle 2.3.0", + "subtle", ] [[package]] @@ -722,7 +866,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" dependencies = [ "generic-array 0.14.4", - "subtle 2.3.0", + "subtle", ] [[package]] @@ -734,7 +878,20 @@ dependencies = [ "byteorder", "digest 0.8.1", "rand_core 0.5.1", - "subtle 2.3.0", + "subtle", + "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", "zeroize", ] @@ -755,6 +912,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 +981,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 +997,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 +1030,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", "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", +] + [[package]] name = "either" version = "1.6.1" @@ -907,9 +1099,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", @@ -958,7 +1150,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" dependencies = [ - "memoffset 0.6.1", + "memoffset", "rustc_version 0.3.3", ] @@ -970,7 +1162,7 @@ checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "winapi 0.3.9", ] @@ -1017,12 +1209,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" @@ -1045,12 +1231,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -[[package]] -name = "futures" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed" - [[package]] name = "futures" version = "0.3.8" @@ -1059,6 +1239,7 @@ checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" dependencies = [ "futures-channel", "futures-core", + "futures-executor", "futures-io", "futures-sink", "futures-task", @@ -1081,6 +1262,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 +1312,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 +1367,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 +1405,30 @@ dependencies = [ "indexmap", "slab", "tokio 0.2.23", - "tokio-util", + "tokio-util 0.3.1", "tracing", "tracing-futures", ] +[[package]] +name = "h2" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c06815895acec637cd6ed6e9662c935b866d20a106f8361892893a7d9234964" +dependencies = [ + "bytes 1.1.0", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 1.12.0", + "tokio-util 0.6.8", + "tracing", +] + [[package]] name = "hashbrown" version = "0.9.1" @@ -1242,9 +1465,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ "unicode-segmentation", ] @@ -1277,12 +1500,22 @@ dependencies = [ [[package]] name = "hmac" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.7.0", - "digest 0.8.1", + "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]] @@ -1297,13 +1530,13 @@ dependencies = [ [[package]] name = "hmac-drbg" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "digest 0.8.1", - "generic-array 0.12.3", - "hmac 0.7.1", + "digest 0.9.0", + "generic-array 0.14.4", + "hmac 0.8.1", ] [[package]] @@ -1327,6 +1560,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 +1599,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.6", + "http", + "http-body 0.4.3", + "httparse", + "httpdate", + "itoa", + "pin-project 1.0.2", + "socket2 0.4.2", + "tokio 1.12.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.12.0", "tokio-rustls", "webpki", ] @@ -1412,7 +1679,7 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7baab56125e25686df467fe470785512329883aab42696d661247aca2a2896e4" dependencies = [ - "console 0.13.0", + "console 0.14.1", "lazy_static", "number_prefix", "regex", @@ -1466,38 +1733,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 +1753,13 @@ dependencies = [ [[package]] name = "jsonrpc-core" -version = "15.1.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991fa" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.1.30", + "futures", + "futures-executor", + "futures-util", "log", "serde", "serde_derive", @@ -1556,9 +1793,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.86" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" +checksum = "7b2f96d100e1cf1929e7719b7edb3b90ab5298072638fccd77be9ce942ecdfce" [[package]] name = "libflate" @@ -1590,20 +1827,52 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.3.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" dependencies = [ "arrayref", - "crunchy", - "digest 0.8.1", + "base64 0.12.3", + "digest 0.9.0", "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", "rand 0.7.3", - "sha2 0.8.2", - "subtle 2.3.0", + "serde", + "sha2", "typenum", ] +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + [[package]] name = "linked-hash-map" version = "0.5.3" @@ -1664,15 +1933,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg 1.0.1", -] - [[package]] name = "memoffset" version = "0.6.1" @@ -1781,7 +2041,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", ] @@ -1989,37 +2249,28 @@ checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85" [[package]] name = "ouroboros" -version = "0.5.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc04551635026d3ac7bc646698ea1836a85ed2a26b7094fe1d15d8b14854c4a2" +checksum = "84236d64f1718c387232287cf036eb6632a5ecff226f4ff9dccb8c2b79ba0bde" dependencies = [ + "aliasable", "ouroboros_macro", "stable_deref_trait", ] [[package]] name = "ouroboros_macro" -version = "0.5.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec33dfceabec83cd0e95a5ce9d20e76ab3a5cbfef59659b8c927f69b93ed8ae" +checksum = "f463857a6eb96c0136b1d56e56c718350cef30412ec065b48294799a088bca68" dependencies = [ "Inflector", + "proc-macro-error", "proc-macro2 1.0.24", "quote 1.0.7", "syn 1.0.60", ] -[[package]] -name = "parking_lot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.6.2", - "rustc_version 0.2.3", -] - [[package]] name = "parking_lot" version = "0.10.2" @@ -2041,21 +2292,6 @@ dependencies = [ "parking_lot_core 0.8.0", ] -[[package]] -name = "parking_lot_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi 0.0.3", - "libc", - "redox_syscall", - "rustc_version 0.2.3", - "smallvec 0.6.13", - "winapi 0.3.9", -] - [[package]] name = "parking_lot_core" version = "0.7.2" @@ -2065,8 +2301,8 @@ dependencies = [ "cfg-if 0.1.10", "cloudabi 0.0.3", "libc", - "redox_syscall", - "smallvec 1.5.0", + "redox_syscall 0.1.57", + "smallvec", "winapi 0.3.9", ] @@ -2080,38 +2316,18 @@ dependencies = [ "cloudabi 0.1.0", "instant", "libc", - "redox_syscall", - "smallvec 1.5.0", + "redox_syscall 0.1.57", + "smallvec", "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 +2487,28 @@ dependencies = [ "unicode-xid 0.2.1", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.60", + "version_check", + "yansi", +] + +[[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 +2558,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 +2606,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom", + "getrandom 0.1.15", ] [[package]] @@ -2455,7 +2693,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ "autocfg 1.0.1", - "crossbeam-deque 0.8.0", + "crossbeam-deque", "either", "rayon-core", ] @@ -2467,7 +2705,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ "crossbeam-channel 0.5.0", - "crossbeam-deque 0.8.0", + "crossbeam-deque", "crossbeam-utils 0.8.1", "lazy_static", "num_cpus", @@ -2488,17 +2726,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 +2785,35 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.10.9" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb15d6255c792356a0f578d8a645c677904dc02e862bebe2ecc18e0c01b9a0ce" +checksum = "66d2927ca2f685faf0fc620ac4834690d29e7abb153add10f5812eef20b5e280" 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.12.0", "tokio-rustls", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-bindgen-test", "web-sys", "webpki-roots", "winreg", @@ -2566,13 +2821,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 +2894,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", @@ -2853,27 +3108,11 @@ version = "0.8.1-serum.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4fed3f601b23f15dc890f6e52ffdbfe2dcf16418a41e0aa016b5f10cf30c892" dependencies = [ - "borsh-derive", + "borsh-derive 0.8.1", "hashbrown", "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" @@ -2881,29 +3120,15 @@ dependencies = [ "anyhow", "arrayref", "bincode", - "bs58", + "bs58 0.3.1", "rand 0.7.3", - "serde", - "serde_json", - "serum-borsh", - "solana-client", - "solana-program", - "solana-sdk", - "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", + "serde", + "serde_json", + "serum-borsh", "solana-client", + "solana-program", "solana-sdk", + "spl-token 2.0.6", ] [[package]] @@ -2919,7 +3144,7 @@ dependencies = [ "serum-pool-schema", "slice-of-array", "solana-program", - "spl-token 3.1.0", + "spl-token 3.2.0", "thiserror", "zerocopy", ] @@ -2931,7 +3156,7 @@ dependencies = [ "serum-borsh", "serum-pool", "solana-program", - "spl-token 3.1.0", + "spl-token 3.2.0", ] [[package]] @@ -2959,8 +3184,9 @@ dependencies = [ [[package]] name = "serum_dex" -version = "0.3.1" +version = "0.4.0" dependencies = [ + "anchor-lang", "arrayref", "bincode", "bytemuck", @@ -2973,7 +3199,7 @@ dependencies = [ "safe-transmute", "serde", "solana-program", - "spl-token 3.1.0", + "spl-token 3.2.0", "static_assertions", "thiserror", "without-alloc", @@ -3004,18 +3230,6 @@ dependencies = [ "opaque-debug 0.3.0", ] -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - [[package]] name = "sha2" version = "0.9.3" @@ -3150,15 +3364,6 @@ dependencies = [ "trackable", ] -[[package]] -name = "smallvec" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -dependencies = [ - "maybe-uninit", -] - [[package]] name = "smallvec" version = "1.5.0" @@ -3173,20 +3378,30 @@ 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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" +dependencies = [ + "libc", "winapi 0.3.9", ] [[package]] name = "solana-account-decoder" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e9dd2ab538891f637c804ead93a3b2c625582e4f8d6afcb849cb50784e8e83" +checksum = "d89741082d52115e1d866befdf65a9c3197c50734b998f75cfb0a291c3555738" dependencies = [ "Inflector", "base64 0.12.3", "bincode", - "bs58", + "bs58 0.3.1", "bv", "lazy_static", "serde", @@ -3194,18 +3409,17 @@ dependencies = [ "serde_json", "solana-config-program", "solana-sdk", - "solana-stake-program", "solana-vote-program", - "spl-token 3.1.0", + "spl-token 3.2.0", "thiserror", "zstd", ] [[package]] name = "solana-clap-utils" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc0c9f6474c429d7e7f35856f8164282007b16d8167093a4a9f7e1a659e89c5" +checksum = "1ff790bd97dee3be05ec879b176875f0bb0ef0eb62e5e11e6b269a2d7dc8bf10" dependencies = [ "chrono", "clap 2.33.3", @@ -3214,18 +3428,33 @@ dependencies = [ "solana-sdk", "thiserror", "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-cli-config" +version = "1.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eb21cb2d46661d9e549293ce2ec4e4afa7205b66562e3768e16f5fe737f420f" +dependencies = [ + "dirs-next", + "lazy_static", + "serde", + "serde_derive", + "serde_yaml", "url", ] [[package]] name = "solana-client" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64f07b5e4a1f237102871e4ae38fe2332a07d3ec93140586b79e15a283b01fa6" +checksum = "779f90ee9f77c831426af58c9732902051314bb8f2607473ffd6089a3b008133" dependencies = [ "base64 0.13.0", "bincode", - "bs58", + "bs58 0.3.1", "clap 2.33.3", "indicatif", "jsonrpc-core", @@ -3239,21 +3468,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.12.0", "tungstenite 0.10.1", "url", ] [[package]] name = "solana-config-program" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5498102950c1f21ee990b49a02f314d5e7c39b486dd037cea07ab3215b85aded" +checksum = "e6cebea98645f683ed9bf32f7f1e50a643479ab85fc8e6ba1c287a4562f534a4" dependencies = [ "bincode", "chrono", @@ -3266,14 +3497,14 @@ dependencies = [ [[package]] name = "solana-crate-features" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "482146f96dfb27aa2d47c9bafe396befa6fbbc380a00992b279900e46c3d6bd3" +checksum = "23f7002fb7a602e75e9f077ba8aab67fff49e24327b958280648e731dab894a6" dependencies = [ "backtrace", "bytes 0.4.12", "cc", - "curve25519-dalek", + "curve25519-dalek 2.1.0", "ed25519-dalek", "either", "lazy_static", @@ -3281,20 +3512,43 @@ dependencies = [ "rand_chacha 0.2.2", "regex-syntax", "reqwest", + "ring", "serde", "syn 0.15.44", "syn 1.0.60", - "tokio 0.1.22", "winapi 0.3.9", ] +[[package]] +name = "solana-faucet" +version = "1.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ce6d1994d0bdcb0571eeaad0718c540b89b626c24df2bdf6987f80837af4c5" +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.12.0", +] + [[package]] name = "solana-frozen-abi" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9422b85d5a3c745fc295ce2b7fcf750b471ff7df024054364e9f1943c291579f" +checksum = "21ddfc2b65a555c0e0156c043bce092d473bc4f00daa7ca3c223d97d92d2e807" dependencies = [ - "bs58", + "bs58 0.3.1", "bv", "generic-array 0.14.4", "log", @@ -3302,7 +3556,7 @@ dependencies = [ "rustc_version 0.2.3", "serde", "serde_derive", - "sha2 0.9.3", + "sha2", "solana-frozen-abi-macro", "solana-logger", "thiserror", @@ -3310,11 +3564,10 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd067e75733685ce7de6a320cdf6413734d5b7f87d26979d3d55c296e56ca20" +checksum = "a876aa31298fdee6560c8ee0695ebed313bbdbb6fbbee439ac3b9df8aebfb87c" dependencies = [ - "lazy_static", "proc-macro2 1.0.24", "quote 1.0.7", "rustc_version 0.2.3", @@ -3323,9 +3576,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df776ad38b50574ad98a016afa6318200c480ddbd82cfeb162af30a2e4ff43ac" +checksum = "98a07290cc521e529bff0b0afd3aacd1d3904a41f35321ede6d1f3574efa3e94" dependencies = [ "env_logger", "lazy_static", @@ -3334,12 +3587,10 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9eebdb42760977cc566c7c75f6f40a2780e6f7412c93338ebad75e8c7e80fd7" +checksum = "b5ab24cb5a8fb2fdb32e151606e6a954a6d6e4d764102eb96616cb895622d284" dependencies = [ - "jemalloc-ctl", - "jemallocator", "log", "solana-metrics", "solana-sdk", @@ -3347,9 +3598,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbe99297d2271d9adac222d971abfe3cef599bff736bcf942868dd6044aab8e1" +checksum = "a49cfd9ec1637885f80d0ac33cf71c685fe13bad6de2bfd469e8aa7dc39967a3" dependencies = [ "env_logger", "gethostname", @@ -3361,9 +3612,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb6be9fe3ac6e62e7f11e7013c4fa861efa7f0f8f8190d7d9fb38ebb1aa881e8" +checksum = "2be3ee1237d9013cbd11f0d0af69a4473c703b700165e6c39b49cf0c0554d6f9" dependencies = [ "bincode", "clap 2.33.3", @@ -3372,29 +3623,32 @@ dependencies = [ "rand 0.7.3", "serde", "serde_derive", - "socket2", + "socket2 0.3.17", "solana-clap-utils", "solana-logger", + "solana-sdk", "solana-version", - "tokio 0.3.7", + "tokio 1.12.0", "url", ] [[package]] name = "solana-program" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b400512c2dae0c5773087f31ceb038e73cbea159902d2f3a613844aa6312f7dc" +checksum = "49ffc60d33a318300682e42d28ff4f1276327f6374cab9591c8620a54be7aec1" dependencies = [ "bincode", + "blake3", "borsh", - "borsh-derive", - "bs58", + "borsh-derive 0.9.1", + "bs58 0.3.1", "bv", - "curve25519-dalek", + "curve25519-dalek 2.1.0", "hex", "itertools", "lazy_static", + "libsecp256k1", "log", "num-derive", "num-traits", @@ -3404,7 +3658,8 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "sha2 0.9.3", + "sha2", + "sha3", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-logger", @@ -3414,9 +3669,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187fe2696341fe088908a5de485a20196c6b1dd3f793212f952efa295bf4bd56" +checksum = "e0375eae0722ae7303dbc5ce024104155b851017f31d7bc5096a871153540561" dependencies = [ "lazy_static", "num_cpus", @@ -3424,30 +3679,32 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb7094d080b0b9d94a88253e493b1d0d4ee8147eeb22fa986ac0e8958e63002" +checksum = "c2cfa60250c3f8f1c2de9258d35202021ddf1379a24a5820ec813de392af3d94" 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.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8632b5ef79468ca00ad223106ee92329135a4fe3e61f948d3cf2106eaf48ba43" +checksum = "58793cb7e9a2996ad3785816f58fddb7e29be245e6c12d0db62d8b4c6f6d17c2" dependencies = [ + "arrayref", "bincode", "blake3", "bv", @@ -3458,7 +3715,6 @@ dependencies = [ "dir-diff", "flate2", "fnv", - "fs_extra", "itertools", "lazy_static", "libc", @@ -3495,18 +3751,20 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "400e8646d1a17e8b62affceead9f014c020bb98d67537cb4941ca31d8cf042b7" +checksum = "95179bc7d87c5b61c86f3bbbac4e52a5d909432473593d33546e4f20dc582052" dependencies = [ "assert_matches", "bincode", - "bs58", + "bs58 0.3.1", "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,15 +3776,17 @@ 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", "serde_bytes", "serde_derive", "serde_json", - "sha2 0.9.3", + "sha2", "sha3", "solana-crate-features", "solana-frozen-abi", @@ -3535,15 +3795,16 @@ dependencies = [ "solana-program", "solana-sdk-macro", "thiserror", + "uriparse", ] [[package]] name = "solana-sdk-macro" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dd6ba0756969873d7ea48b9172f6d51a4cb462337cfbdab16d04ac77020bfc0" +checksum = "b453dca160617b1676c47e3cfd4361f455dc5bb1c93659ec84b0c5d566b5c039" dependencies = [ - "bs58", + "bs58 0.3.1", "proc-macro2 1.0.24", "quote 1.0.7", "rustversion", @@ -3552,24 +3813,18 @@ dependencies = [ [[package]] name = "solana-secp256k1-program" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1149fcf548c613270bf7e30782da458c7d9881ac4d9bb77797f69c1dd46c8b44" +checksum = "389178c92126e1e85189414688f93e9be836272bbe6ab03db04c804921eb09bd" dependencies = [ - "bincode", - "digest 0.9.0", - "libsecp256k1", - "rand 0.7.3", - "sha3", - "solana-logger", "solana-sdk", ] [[package]] name = "solana-stake-program" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c42d3aeeed82af9e43e1ac03468af0e64394017a82f05102dcceb26e8fd1b" +checksum = "2e690a0aed0ff8c854ee79ec9c437756f9c0a24cdb0c1d0e979b60db8b6a4513" dependencies = [ "bincode", "log", @@ -3589,14 +3844,14 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbc2d00d9db54d8a0c6342003adeff41a0ed8d1f4c91b258936d72bf1ddd000" +checksum = "692b993f3e2ee1d3ffd9eb50e079bc9cc702d6a3a833d0c2c14a46d9268ea750" dependencies = [ "Inflector", "base64 0.12.3", "bincode", - "bs58", + "bs58 0.3.1", "lazy_static", "serde", "serde_derive", @@ -3604,19 +3859,18 @@ dependencies = [ "solana-account-decoder", "solana-runtime", "solana-sdk", - "solana-stake-program", "solana-vote-program", - "spl-memo 2.0.1", - "spl-memo 3.0.0", - "spl-token 3.1.0", + "spl-associated-token-account", + "spl-memo", + "spl-token 3.2.0", "thiserror", ] [[package]] name = "solana-version" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5b9e8b925d699127a3c1c7b513c59cb3a712a0c49bfbf6f21d88825e89e8df7" +checksum = "de8d410e68becf2a80a582caa46349dca6959ecf1319fe722a11a33e46af229b" dependencies = [ "log", "rustc_version 0.2.3", @@ -3630,9 +3884,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.5.11" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20342656be3909158010bb24745f4144adcc65b7f2be7ad631b85c04f09a620f" +checksum = "4cc0bed4119e725a813a56ace42738ab5bbfbfc36152b169bd957ae38e62543a" dependencies = [ "bincode", "log", @@ -3656,19 +3910,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.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2b771f6146dec14ef5fbf498f9374652c54badc3befc8c40c1d426dd45d720" +checksum = "393e2240d521c3dd770806bff25c2c00d761ac962be106e14e22dd912007f428" dependencies = [ "solana-program", + "spl-token 3.2.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", ] @@ -3690,9 +3945,9 @@ dependencies = [ [[package]] name = "spl-token" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b795e50d15dfd35aa5460b80a16414503a322be115a417a43db987c5824c6798" +checksum = "93bfdd5bd7c869cb565c7d7635c4fafe189b988a0bdef81063cd9585c6b8dc01" dependencies = [ "arrayref", "num-derive", @@ -3726,12 +3981,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - [[package]] name = "subtle" version = "2.3.0" @@ -3786,13 +4035,12 @@ checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tar" -version = "0.4.30" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" +checksum = "d6f5515d3add52e0bbdcad7b83c388bb36ba7b754dda3b5f5bc2d38640cdba5c" dependencies = [ "filetime", "libc", - "redox_syscall", "xattr", ] @@ -3805,7 +4053,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 +4064,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 +4165,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", + "thiserror", "unicode-normalization", + "zeroize", ] [[package]] @@ -3946,30 +4196,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" -[[package]] -name = "tokio" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.30", - "mio 0.6.22", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", -] - [[package]] name = "tokio" version = "0.2.23" @@ -3996,13 +4222,12 @@ dependencies = [ [[package]] name = "tokio" -version = "0.3.7" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46409491c9375a693ce7032101970a54f8a2010efb77e13f70788f0d84489e39" +checksum = "c2c2416fdedca8443ae44b4527de1ea633af61d8f7169ffa6e72c5b53d24efcc" dependencies = [ "autocfg 1.0.1", - "bytes 0.6.0", - "futures-core", + "bytes 1.1.0", "libc", "memchr", "mio 0.7.9", @@ -4011,64 +4236,10 @@ dependencies = [ "parking_lot 0.11.1", "pin-project-lite 0.2.0", "signal-hook-registry", - "slab", - "tokio-macros 0.3.2", + "tokio-macros 1.5.0", "winapi 0.3.9", ] -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.30", - "tokio-io", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -dependencies = [ - "futures 0.1.30", - "tokio-executor", -] - -[[package]] -name = "tokio-executor" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.30", -] - -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.30", - "tokio-io", - "tokio-threadpool", -] - -[[package]] -name = "tokio-io" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.30", - "log", -] - [[package]] name = "tokio-macros" version = "0.2.6" @@ -4082,99 +4253,26 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "0.3.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46dfffa59fc3c8aad216ed61bdc2c263d2b9d87a9c8ac9de0c11a813e51b6db7" +checksum = "b2dd85aeaba7b68df939bd357c6afb36c87951be9e80bf9c859f2fc3e9fca0fd" dependencies = [ "proc-macro2 1.0.24", "quote 1.0.7", "syn 1.0.60", ] -[[package]] -name = "tokio-reactor" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.30", - "lazy_static", - "log", - "mio 0.6.22", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", -] - [[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.12.0", "webpki", ] -[[package]] -name = "tokio-sync" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" -dependencies = [ - "fnv", - "futures 0.1.30", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.30", - "iovec", - "mio 0.6.22", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -dependencies = [ - "crossbeam-deque 0.7.3", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.30", - "lazy_static", - "log", - "num_cpus", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-timer" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.30", - "slab", - "tokio-executor", -] - [[package]] name = "tokio-tungstenite" version = "0.11.0" @@ -4189,50 +4287,31 @@ dependencies = [ ] [[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.30", - "log", - "mio 0.6.22", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" +name = "tokio-util" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" +checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" dependencies = [ - "bytes 0.4.12", - "futures 0.1.30", - "iovec", - "libc", + "bytes 0.5.6", + "futures-core", + "futures-sink", "log", - "mio 0.6.22", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "pin-project-lite 0.1.11", + "tokio 0.2.23", ] [[package]] name = "tokio-util" -version = "0.3.1" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +checksum = "08d3725d3efa29485e87311c5b699de63cde14b00ed4d256b8318aa30ca452cd" dependencies = [ - "bytes 0.5.6", + "bytes 1.1.0", "futures-core", "futures-sink", "log", - "pin-project-lite 0.1.11", - "tokio 0.2.23", + "pin-project-lite 0.2.0", + "tokio 1.12.0", ] [[package]] @@ -4423,6 +4502,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" @@ -4493,10 +4582,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f41be6df54c97904af01aa23e613d4521eed7ab23537cede692d4058f6449407" dependencies = [ "bytes 0.5.6", - "futures 0.3.8", + "futures", "headers", "http", - "hyper", + "hyper 0.13.9", "log", "mime", "mime_guess", @@ -4533,8 +4622,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e" dependencies = [ "cfg-if 1.0.0", - "serde", - "serde_json", "wasm-bindgen-macro", ] @@ -4594,30 +4681,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 +4703,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", ] @@ -4736,6 +4799,12 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "yansi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71" + [[package]] name = "zerocopy" version = "0.3.0" diff --git a/dex/Cargo.toml b/dex/Cargo.toml index 2d9e43d3..01196928 100644 --- a/dex/Cargo.toml +++ b/dex/Cargo.toml @@ -33,6 +33,7 @@ num-traits = "0.2.12" arrayref = "0.3.6" bytemuck = { version = "1.4.0" } byteorder = "1.3.4" +anchor-lang = "0.17.0" [lib] crate-type = ["cdylib", "lib"] diff --git a/dex/src/events.rs b/dex/src/events.rs new file mode 100644 index 00000000..2df07a43 --- /dev/null +++ b/dex/src/events.rs @@ -0,0 +1,94 @@ +use crate::state::EventView; +use crate::{fees::FeeTier, matching::Side}; +use anchor_lang::prelude::*; +use bytemuck::cast; + +#[event] +pub struct FillEvent { + pub side: Side, + pub maker: bool, + pub native_qty_paid: u64, + pub native_qty_received: u64, + pub native_fee_or_rebate: u64, + pub order_id: u128, + #[index] + pub owner: Pubkey, + pub owner_slot: u8, + pub fee_tier: FeeTier, + pub client_order_id: Option, + #[index] + pub timestamp: i64, +} + +#[event] +pub struct OutEvent { + pub side: Side, + pub release_funds: bool, + pub native_qty_unlocked: u64, + pub native_qty_still_locked: u64, + pub order_id: u128, + #[index] + pub owner: Pubkey, + pub owner_slot: u8, + pub client_order_id: Option, + #[index] + pub timestamp: i64, +} + +impl EventView { + pub fn to_fill_event(self) -> Result { + match self { + EventView::Fill { + side, + maker, + native_qty_paid, + native_qty_received, + native_fee_or_rebate, + order_id, + owner, + owner_slot, + fee_tier, + client_order_id, + } => Ok(FillEvent { + side, + maker, + native_qty_paid, + native_qty_received, + native_fee_or_rebate, + order_id, + owner: Pubkey::new_from_array(cast(owner)), + owner_slot, + fee_tier, + client_order_id: client_order_id.map(|id| id.into()), + timestamp: Clock::get()?.unix_timestamp, + }), + _ => Err(ProgramError::InvalidAccountData), + } + } + + pub fn to_out_event(self) -> Result { + match self { + EventView::Out { + side, + release_funds, + native_qty_unlocked, + native_qty_still_locked, + order_id, + owner, + owner_slot, + client_order_id, + } => Ok(OutEvent { + side, + release_funds, + native_qty_unlocked, + native_qty_still_locked, + order_id, + owner: Pubkey::new_from_array(cast(owner)), + owner_slot, + client_order_id: client_order_id.map(|id| id.into()), + timestamp: Clock::get()?.unix_timestamp, + }), + _ => Err(ProgramError::InvalidAccountData), + } + } +} diff --git a/dex/src/fees.rs b/dex/src/fees.rs index 301a6e33..632c33fb 100644 --- a/dex/src/fees.rs +++ b/dex/src/fees.rs @@ -1,10 +1,11 @@ +use anchor_lang::prelude::*; use num_enum::{IntoPrimitive, TryFromPrimitive}; use std::convert::TryInto; #[cfg(test)] use proptest_derive::Arbitrary; -#[derive(Copy, Clone, IntoPrimitive, TryFromPrimitive, Debug)] +#[derive(Copy, Clone, IntoPrimitive, TryFromPrimitive, Debug, AnchorSerialize, AnchorDeserialize)] #[cfg_attr(test, derive(Arbitrary))] #[repr(u8)] pub enum FeeTier { diff --git a/dex/src/lib.rs b/dex/src/lib.rs index 7c58d40a..96167b21 100644 --- a/dex/src/lib.rs +++ b/dex/src/lib.rs @@ -12,6 +12,7 @@ mod fees; pub mod instruction; pub mod matching; pub mod state; +pub mod events; #[cfg(all(feature = "program", not(feature = "no-entrypoint")))] use solana_program::entrypoint; diff --git a/dex/src/matching.rs b/dex/src/matching.rs index 4b52a656..dcfbb2c1 100644 --- a/dex/src/matching.rs +++ b/dex/src/matching.rs @@ -1,20 +1,22 @@ +use anchor_lang::prelude::*; use std::num::NonZeroU64; -use crate::instruction::SelfTradeBehavior; -use num_enum::{IntoPrimitive, TryFromPrimitive}; -#[cfg(test)] -use proptest_derive::Arbitrary; -use serde::{Deserialize, Serialize}; -#[cfg(feature = "program")] -use solana_program::msg; - use crate::critbit::SlabTreeError; use crate::error::{DexErrorCode, DexResult, SourceFileId}; +use crate::events::FillEvent; +use crate::instruction::SelfTradeBehavior; use crate::{ critbit::{LeafNode, NodeHandle, Slab, SlabView}, fees::{self, FeeTier}, state::{Event, EventQueue, EventView, MarketState, OpenOrders, RequestView}, }; +use bytemuck::cast; +use num_enum::{IntoPrimitive, TryFromPrimitive}; +#[cfg(test)] +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; +#[cfg(feature = "program")] +use solana_program::msg; #[cfg(not(feature = "program"))] macro_rules! msg { @@ -23,7 +25,17 @@ macro_rules! msg { declare_check_assert_macros!(SourceFileId::Matching); #[derive( - Eq, PartialEq, Copy, Clone, TryFromPrimitive, IntoPrimitive, Debug, Serialize, Deserialize, + Eq, + PartialEq, + Copy, + Clone, + TryFromPrimitive, + IntoPrimitive, + Debug, + Serialize, + Deserialize, + AnchorSerialize, + AnchorDeserialize, )] #[cfg_attr(test, derive(Arbitrary))] #[cfg_attr(feature = "fuzz", derive(arbitrary::Arbitrary))] @@ -403,7 +415,7 @@ impl<'ob> OrderBookState<'ob> { }; let remaining_provide_size = bid_size - cancelled_provide_qty; - let provide_out = Event::new(EventView::Out { + let provide_out = EventView::Out { side: Side::Bid, release_funds: true, native_qty_unlocked: cancelled_provide_qty * trade_price.get() * pc_lot_size, @@ -414,10 +426,11 @@ impl<'ob> OrderBookState<'ob> { owner: best_bid_ref.owner(), owner_slot: best_bid_ref.owner_slot(), client_order_id: NonZeroU64::new(best_bid_ref.client_order_id()), - }); + }; event_q - .push_back(provide_out) + .push_back(Event::new(provide_out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(provide_out.to_out_event()?); if remaining_provide_size == 0 { self.orders_mut(Side::Bid) .remove_by_key(best_bid_id) @@ -427,7 +440,7 @@ impl<'ob> OrderBookState<'ob> { } unfilled_qty -= cancelled_take_qty; - let take_out = Event::new(EventView::Out { + let take_out = EventView::Out { side: Side::Ask, release_funds: false, native_qty_unlocked: cancelled_take_qty * coin_lot_size, @@ -436,10 +449,11 @@ impl<'ob> OrderBookState<'ob> { owner, owner_slot, client_order_id: NonZeroU64::new(client_order_id), - }); + }; event_q - .push_back(take_out) + .push_back(Event::new(take_out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(take_out.to_out_event()?); to_release.unlock_coin(cancelled_take_qty); let order_remaining = @@ -455,7 +469,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 = Event::new(EventView::Fill { + let maker_fill = EventView::Fill { side: Side::Bid, maker: true, native_qty_paid: native_maker_pc_qty - native_maker_rebate, @@ -466,29 +480,31 @@ impl<'ob> OrderBookState<'ob> { 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) + .push_back(Event::new(maker_fill)) .map_err(|_| DexErrorCode::EventQueueFull)?; - + emit!(maker_fill.to_fill_event()?); best_bid_ref.set_quantity(best_bid_ref.quantity() - trade_qty); unfilled_qty -= trade_qty; accum_fill_price += trade_qty * trade_price.get(); if best_bid_ref.quantity() == 0 { let best_bid_id = best_bid_ref.order_id(); + let out = EventView::Out { + side: Side::Bid, + release_funds: true, + native_qty_unlocked: 0, + native_qty_still_locked: 0, + order_id: best_bid_id, + owner: best_bid_ref.owner(), + owner_slot: best_bid_ref.owner_slot(), + client_order_id: NonZeroU64::new(best_bid_ref.client_order_id()), + }; event_q - .push_back(Event::new(EventView::Out { - side: Side::Bid, - release_funds: true, - native_qty_unlocked: 0, - native_qty_still_locked: 0, - order_id: best_bid_id, - owner: best_bid_ref.owner(), - owner_slot: best_bid_ref.owner_slot(), - client_order_id: NonZeroU64::new(best_bid_ref.client_order_id()), - })) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_fill_event()?); self.orders_mut(Side::Bid) .remove_by_key(best_bid_id) .unwrap(); @@ -508,7 +524,7 @@ impl<'ob> OrderBookState<'ob> { to_release.debit_coin(coin_lots_traded); if native_taker_pc_qty > 0 { - let taker_fill = Event::new(EventView::Fill { + let taker_fill = EventView::Fill { side: Side::Ask, maker: false, native_qty_paid: coin_lots_traded * coin_lot_size, @@ -519,10 +535,11 @@ impl<'ob> OrderBookState<'ob> { owner_slot, fee_tier, client_order_id: NonZeroU64::new(client_order_id), - }); + }; event_q - .push_back(taker_fill) + .push_back(Event::new(taker_fill)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(taker_fill.to_fill_event()?); } } @@ -558,7 +575,7 @@ impl<'ob> OrderBookState<'ob> { // boot out the least aggressive offer msg!("offers full! booting..."); let order = offers.remove_max().unwrap(); - let out = Event::new(EventView::Out { + let out = EventView::Out { side: Side::Ask, release_funds: true, native_qty_unlocked: order.quantity() * coin_lot_size, @@ -567,17 +584,18 @@ impl<'ob> OrderBookState<'ob> { owner: order.owner(), owner_slot: order.owner_slot(), client_order_id: NonZeroU64::new(order.client_order_id()), - }); + }; event_q - .push_back(out) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_out_event()?); offers.insert_leaf(&new_order).unwrap(); } else { insert_result.unwrap(); } } else { to_release.unlock_coin(unfilled_qty); - let out = Event::new(EventView::Out { + let out = EventView::Out { side: Side::Ask, release_funds: false, native_qty_unlocked: unfilled_qty * coin_lot_size, @@ -586,10 +604,11 @@ impl<'ob> OrderBookState<'ob> { owner, owner_slot, client_order_id: NonZeroU64::new(client_order_id), - }); + }; event_q - .push_back(out) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_out_event()?); } Ok(None) @@ -699,7 +718,7 @@ impl<'ob> OrderBookState<'ob> { }; let remaining_provide_qty = best_offer_ref.quantity() - cancelled_provide_qty; - let provide_out = Event::new(EventView::Out { + let provide_out = EventView::Out { side: Side::Ask, release_funds: true, native_qty_unlocked: cancelled_provide_qty * coin_lot_size, @@ -708,10 +727,11 @@ impl<'ob> OrderBookState<'ob> { owner: best_offer_ref.owner(), owner_slot: best_offer_ref.owner_slot(), client_order_id: NonZeroU64::new(best_offer_ref.client_order_id()), - }); + }; event_q - .push_back(provide_out) + .push_back(Event::new(provide_out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(provide_out.to_out_event()?); if remaining_provide_qty == 0 { self.orders_mut(Side::Ask) .remove_by_key(best_offer_id) @@ -749,7 +769,7 @@ impl<'ob> OrderBookState<'ob> { } }; to_release.unlock_native_pc(native_qty_unlocked); - let take_out = Event::new(EventView::Out { + let take_out = EventView::Out { side: Side::Bid, release_funds: false, native_qty_unlocked, @@ -758,10 +778,11 @@ impl<'ob> OrderBookState<'ob> { owner, owner_slot, client_order_id: NonZeroU64::new(client_order_id), - }); + }; event_q - .push_back(take_out) + .push_back(Event::new(take_out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(take_out.to_out_event()?); }; return Ok(order_remaining); @@ -771,7 +792,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 = Event::new(EventView::Fill { + let maker_fill = EventView::Fill { side: Side::Ask, maker: true, native_qty_paid: trade_qty * coin_lot_size, @@ -782,10 +803,11 @@ impl<'ob> OrderBookState<'ob> { 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) + .push_back(Event::new(maker_fill)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(maker_fill.to_fill_event()?); best_offer_ref.set_quantity(best_offer_ref.quantity() - trade_qty); coin_qty_remaining -= trade_qty; @@ -793,18 +815,20 @@ impl<'ob> OrderBookState<'ob> { if best_offer_ref.quantity() == 0 { let best_offer_id = best_offer_ref.order_id(); + let out = EventView::Out { + side: Side::Ask, + release_funds: true, + native_qty_unlocked: 0, + native_qty_still_locked: 0, + order_id: best_offer_id, + owner: best_offer_ref.owner(), + owner_slot: best_offer_ref.owner_slot(), + client_order_id: NonZeroU64::new(best_offer_ref.client_order_id()), + }; event_q - .push_back(Event::new(EventView::Out { - side: Side::Ask, - release_funds: true, - native_qty_unlocked: 0, - native_qty_still_locked: 0, - order_id: best_offer_id, - owner: best_offer_ref.owner(), - owner_slot: best_offer_ref.owner_slot(), - client_order_id: NonZeroU64::new(best_offer_ref.client_order_id()), - })) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_out_event()?); self.orders_mut(Side::Ask) .remove_by_key(best_offer_id) .unwrap(); @@ -826,7 +850,7 @@ impl<'ob> OrderBookState<'ob> { to_release.debit_native_pc(native_pc_paid); if native_accum_fill_price > 0 { - let taker_fill = Event::new(EventView::Fill { + let taker_fill = EventView::Fill { side: Side::Bid, maker: false, native_qty_paid: native_pc_paid, @@ -837,10 +861,11 @@ impl<'ob> OrderBookState<'ob> { owner_slot, fee_tier, client_order_id: NonZeroU64::new(client_order_id), - }); + }; event_q - .push_back(taker_fill) + .push_back(Event::new(taker_fill)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(taker_fill.to_fill_event()?); } } @@ -878,7 +903,7 @@ impl<'ob> OrderBookState<'ob> { to_release.unlock_native_pc(native_qty_unlocked); - Event::new(EventView::Out { + EventView::Out { side: Side::Bid, release_funds: false, native_qty_unlocked, @@ -887,11 +912,12 @@ impl<'ob> OrderBookState<'ob> { owner, owner_slot, client_order_id: NonZeroU64::new(client_order_id), - }) + } }; event_q - .push_back(out) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_out_event()?); if pc_qty_to_keep_locked > 0 { let bids = self.orders_mut(Side::Bid); @@ -908,7 +934,7 @@ impl<'ob> OrderBookState<'ob> { // boot out the least aggressive bid msg!("bids full! booting..."); let order = bids.remove_min().unwrap(); - let out = Event::new(EventView::Out { + let out = EventView::Out { side: Side::Bid, release_funds: true, native_qty_unlocked: order.quantity() * order.price().get() * pc_lot_size, @@ -917,10 +943,11 @@ impl<'ob> OrderBookState<'ob> { owner: order.owner(), owner_slot: order.owner_slot(), client_order_id: NonZeroU64::new(order.client_order_id()), - }); + }; event_q - .push_back(out) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_out_event()?); bids.insert_leaf(&new_leaf).unwrap(); } else { insert_result.unwrap(); @@ -980,18 +1007,20 @@ impl<'ob> OrderBookState<'ob> { open_orders.unlock_coin(native_qty_unlocked); } } + let out = EventView::Out { + side, + release_funds: false, + native_qty_unlocked, + native_qty_still_locked: 0, + order_id, + owner: open_orders_address, + owner_slot: open_orders_slot, + client_order_id: NonZeroU64::new(leaf_node.client_order_id()), + }; event_q - .push_back(Event::new(EventView::Out { - side, - release_funds: false, - native_qty_unlocked, - native_qty_still_locked: 0, - order_id, - owner: open_orders_address, - owner_slot: open_orders_slot, - client_order_id: NonZeroU64::new(leaf_node.client_order_id()), - })) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_out_event()?); Ok(()) } @@ -1018,18 +1047,20 @@ impl<'ob> OrderBookState<'ob> { } Side::Ask => leaf_node.quantity() * self.market_state.coin_lot_size, }; + let out = EventView::Out { + side, + release_funds: true, + native_qty_unlocked, + native_qty_still_locked: 0, + order_id, + owner: expected_owner, + owner_slot: expected_owner_slot, + client_order_id: NonZeroU64::new(leaf_node.client_order_id()), + }; event_q - .push_back(Event::new(EventView::Out { - side, - release_funds: true, - native_qty_unlocked, - native_qty_still_locked: 0, - order_id, - owner: expected_owner, - owner_slot: expected_owner_slot, - client_order_id: NonZeroU64::new(leaf_node.client_order_id()), - })) + .push_back(Event::new(out)) .map_err(|_| DexErrorCode::EventQueueFull)?; + emit!(out.to_out_event()?); } else { self.orders_mut(side).insert_leaf(&leaf_node).unwrap(); } diff --git a/dex/src/state.rs b/dex/src/state.rs index c29ebacd..f33ea0c9 100644 --- a/dex/src/state.rs +++ b/dex/src/state.rs @@ -1265,7 +1265,7 @@ impl Event { } } -#[derive(Debug)] +#[derive(Copy, Clone, Debug)] pub enum EventView { Fill { side: Side, From 437a3481051aeb3384e8f8b3d68ef6a162ecefd3 Mon Sep 17 00:00:00 2001 From: Alex Miao Date: Fri, 22 Oct 2021 08:13:15 -0700 Subject: [PATCH 2/6] add clock sysvar stub --- dex/Cargo.lock | 251 +++++++++++++++++++++++++++++++++++++++++--- dex/src/lib.rs | 6 +- dex/src/matching.rs | 2 - dex/src/tests.rs | 10 ++ 4 files changed, 252 insertions(+), 17 deletions(-) diff --git a/dex/Cargo.lock b/dex/Cargo.lock index 60dafd62..11086645 100644 --- a/dex/Cargo.lock +++ b/dex/Cargo.lock @@ -23,6 +23,159 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b2d54853319fd101b8dd81de382bcbf3e03410a64d8928bbee85a3e7dcde483" +[[package]] +name = "anchor-attribute-access-control" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b8ab97bfde16e49bc399586a857e9bd56e7c867a66a89ca809134d53d999138" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.28", + "quote 1.0.7", + "regex", + "syn 1.0.74", +] + +[[package]] +name = "anchor-attribute-account" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40d3c2f1ebf823c4a8f0e41c57125991713177d4f02957600f8c1da8bd87adfd" +dependencies = [ + "anchor-syn", + "anyhow", + "bs58 0.4.0", + "proc-macro2 1.0.28", + "quote 1.0.7", + "rustversion", + "syn 1.0.74", +] + +[[package]] +name = "anchor-attribute-error" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8b5b954878c4cb1ad373143b42765abaf789691e13dbd0a3a8707dbfd0612cd" +dependencies = [ + "anchor-syn", + "proc-macro2 1.0.28", + "quote 1.0.7", + "syn 1.0.74", +] + +[[package]] +name = "anchor-attribute-event" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418daba265c778d2386c27191b4ec927c24be270ed6a8667be81de9e541c7a3e" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.28", + "quote 1.0.7", + "syn 1.0.74", +] + +[[package]] +name = "anchor-attribute-interface" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd2159348897db16999d76ff396ba8722fb101e0e0cc6845b3722eb7472bd0d0" +dependencies = [ + "anchor-syn", + "anyhow", + "heck", + "proc-macro2 1.0.28", + "quote 1.0.7", + "syn 1.0.74", +] + +[[package]] +name = "anchor-attribute-program" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6695b491d73439ad9839565beb0749107f5acca6d96b4cbaaaef428ba7b6c11" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.28", + "quote 1.0.7", + "syn 1.0.74", +] + +[[package]] +name = "anchor-attribute-state" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcbbeade2b868e597b55d90418dc51334c4e388f988c0eea1af5d511083ed10" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.28", + "quote 1.0.7", + "syn 1.0.74", +] + +[[package]] +name = "anchor-derive-accounts" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc82ef304c38e7529883176c428acfab9a7bb9e851aa694fff53c8789fbc47b3" +dependencies = [ + "anchor-syn", + "anyhow", + "proc-macro2 1.0.28", + "quote 1.0.7", + "syn 1.0.74", +] + +[[package]] +name = "anchor-lang" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6b7025eb65638005fd2af58e2bd136b61c2ecbadda379e908a5af541351a3a" +dependencies = [ + "anchor-attribute-access-control", + "anchor-attribute-account", + "anchor-attribute-error", + "anchor-attribute-event", + "anchor-attribute-interface", + "anchor-attribute-program", + "anchor-attribute-state", + "anchor-derive-accounts", + "base64 0.13.0", + "borsh", + "bytemuck", + "solana-program", + "thiserror", +] + +[[package]] +name = "anchor-syn" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321cca8ea1c35b199956e11b2869e8b1b1ae2d547326a12fc45375d0806470c8" +dependencies = [ + "anyhow", + "bs58 0.3.1", + "heck", + "proc-macro2 1.0.28", + "proc-macro2-diagnostics", + "quote 1.0.7", + "serde", + "serde_json", + "sha2", + "syn 1.0.74", + "thiserror", +] + +[[package]] +name = "anyhow" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" + [[package]] name = "arbitrary" version = "0.4.6" @@ -77,6 +230,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + [[package]] name = "bincode" version = "1.3.1" @@ -190,6 +349,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + [[package]] name = "bumpalo" version = "3.4.0" @@ -429,6 +594,15 @@ dependencies = [ "ahash", ] +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "hermit-abi" version = "0.1.15" @@ -496,6 +670,12 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + [[package]] name = "keccak" version = "0.1.0" @@ -521,7 +701,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" dependencies = [ "arrayref", - "base64", + "base64 0.12.3", "digest 0.9.0", "hmac-drbg", "libsecp256k1-core", @@ -697,6 +877,19 @@ dependencies = [ "unicode-xid 0.2.1", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" +dependencies = [ + "proc-macro2 1.0.28", + "quote 1.0.7", + "syn 1.0.74", + "version_check", + "yansi", +] + [[package]] name = "proptest" version = "1.0.0" @@ -912,6 +1105,12 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + [[package]] name = "safe-transmute" version = "0.11.0" @@ -980,10 +1179,22 @@ dependencies = [ "syn 1.0.74", ] +[[package]] +name = "serde_json" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" +dependencies = [ + "itoa", + "ryu", + "serde", +] + [[package]] name = "serum_dex" version = "0.4.0" dependencies = [ + "anchor-lang", "arbitrary", "arrayref", "bincode", @@ -1035,11 +1246,11 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6760c1dd139c202ef6df28bff467c904aa35b1aa1a59be268c47aec8bc6c0" +checksum = "21ddfc2b65a555c0e0156c043bce092d473bc4f00daa7ca3c223d97d92d2e807" dependencies = [ - "bs58", + "bs58 0.3.1", "bv", "generic-array 0.14.4", "log", @@ -1055,9 +1266,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4dbe296c16dec41e8e6f4e6c2694c6224820d34c0ab11a2d3ff9683f44878ef" +checksum = "a876aa31298fdee6560c8ee0695ebed313bbdbb6fbbee439ac3b9df8aebfb87c" dependencies = [ "proc-macro2 1.0.28", "quote 1.0.7", @@ -1067,9 +1278,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af1959b520c0fc99bc6583ba9d82bfa15b1ac007516795bceeb4a951af77c7" +checksum = "98a07290cc521e529bff0b0afd3aacd1d3904a41f35321ede6d1f3574efa3e94" dependencies = [ "env_logger", "lazy_static", @@ -1078,15 +1289,15 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5e5dd99d642b5e89eeb20457310c3c23f20dbf44e67c64e473a02fbc50d646" +checksum = "49ffc60d33a318300682e42d28ff4f1276327f6374cab9591c8620a54be7aec1" dependencies = [ "bincode", "blake3", "borsh", "borsh-derive", - "bs58", + "bs58 0.3.1", "bv", "curve25519-dalek", "hex", @@ -1113,11 +1324,11 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.7.8" +version = "1.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee909dcddb5b4d349b3e5e1ae92f6660cd2f783dea392ae2e73210776aadc9b" +checksum = "b453dca160617b1676c47e3cfd4361f455dc5bb1c93659ec84b0c5d566b5c039" dependencies = [ - "bs58", + "bs58 0.3.1", "proc-macro2 1.0.28", "quote 1.0.7", "rustversion", @@ -1245,6 +1456,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +[[package]] +name = "unicode-segmentation" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" + [[package]] name = "unicode-xid" version = "0.1.0" @@ -1324,6 +1541,12 @@ dependencies = [ "alloc-traits", ] +[[package]] +name = "yansi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71" + [[package]] name = "zeroize" version = "1.1.0" diff --git a/dex/src/lib.rs b/dex/src/lib.rs index 96167b21..350a4bf7 100644 --- a/dex/src/lib.rs +++ b/dex/src/lib.rs @@ -8,11 +8,15 @@ pub mod error; mod tests; pub mod critbit; +pub mod events; mod fees; pub mod instruction; pub mod matching; pub mod state; -pub mod events; + +mod program_stubs { + mod clock {} +} #[cfg(all(feature = "program", not(feature = "no-entrypoint")))] use solana_program::entrypoint; diff --git a/dex/src/matching.rs b/dex/src/matching.rs index dcfbb2c1..455c41e4 100644 --- a/dex/src/matching.rs +++ b/dex/src/matching.rs @@ -3,14 +3,12 @@ use std::num::NonZeroU64; use crate::critbit::SlabTreeError; use crate::error::{DexErrorCode, DexResult, SourceFileId}; -use crate::events::FillEvent; use crate::instruction::SelfTradeBehavior; use crate::{ critbit::{LeafNode, NodeHandle, Slab, SlabView}, fees::{self, FeeTier}, state::{Event, EventQueue, EventView, MarketState, OpenOrders, RequestView}, }; -use bytemuck::cast; use num_enum::{IntoPrimitive, TryFromPrimitive}; #[cfg(test)] use proptest_derive::Arbitrary; diff --git a/dex/src/tests.rs b/dex/src/tests.rs index 3edc0604..0d9689ab 100644 --- a/dex/src/tests.rs +++ b/dex/src/tests.rs @@ -163,6 +163,14 @@ fn new_spl_token_program<'bump>(bump: &'bump Bump) -> AccountInfo<'bump> { ) } +pub struct ClockStubs; + +impl solana_program::program_stubs::SyscallStubs for ClockStubs { + fn sol_get_clock_sysvar(&self, _var_addr: *mut u8) -> u64 { + 0 + } +} + fn setup_market<'bump, R: Rng>(rng: &mut R, bump: &'bump Bump) -> MarketAccounts<'bump> { let program_id = random_pubkey(rng, bump); let market = new_dex_owned_account(rng, size_of::(), program_id, bump); @@ -255,6 +263,8 @@ fn test_initialize_market() { #[test] fn test_new_order() { + solana_program::program_stubs::set_syscall_stubs(Box::new(ClockStubs)); + let mut rng = StdRng::seed_from_u64(1); let bump = Bump::new(); From a67ad9f35530a612d6235c695117a3c4e7346cc1 Mon Sep 17 00:00:00 2001 From: Alex Miao Date: Fri, 22 Oct 2021 08:15:55 -0700 Subject: [PATCH 3/6] update solana version --- docker/development/Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/development/Dockerfile b/docker/development/Dockerfile index d9de48fb..2eec003f 100644 --- a/docker/development/Dockerfile +++ b/docker/development/Dockerfile @@ -3,7 +3,7 @@ FROM ubuntu:18.04 ARG DEBIAN_FRONTEND=noninteractive ARG SOLANA_CHANNEL=v1.2.17 -ARG SOLANA_CLI=v1.6.18 +ARG SOLANA_CLI=v1.7.11 ENV HOME="/root" ENV PATH="${HOME}/.cargo/bin:${PATH}" @@ -11,14 +11,14 @@ ENV PATH="${HOME}/.local/share/solana/install/active_release/bin:${PATH}" # Install base utilities. RUN mkdir -p /workdir && mkdir -p /tmp && \ - apt-get update -qq && apt-get upgrade -qq && apt-get install -qq \ - build-essential git curl wget jq pkg-config python3-pip \ - libssl-dev libudev-dev + apt-get update -qq && apt-get upgrade -qq && apt-get install -qq \ + build-essential git curl wget jq pkg-config python3-pip \ + libssl-dev libudev-dev # Install rust. RUN curl "https://sh.rustup.rs" -sfo rustup.sh && \ - sh rustup.sh -y && \ - rustup component add rustfmt clippy + sh rustup.sh -y && \ + rustup component add rustfmt clippy # Install Solana tools. RUN curl -sSf https://raw.githubusercontent.com/solana-labs/solana/${SOLANA_CLI}/install/solana-install-init.sh | sh -s - ${SOLANA_CLI} && \ From b586d8cfd72bfa06f3945b5545a0f61d1e761f80 Mon Sep 17 00:00:00 2001 From: Alex Miao Date: Fri, 22 Oct 2021 08:34:08 -0700 Subject: [PATCH 4/6] update travis solana version --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fbef734c..585d823b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ os: linux env: global: - NODE_VERSION="v14.7.0" - - SOLANA_VERSION="v1.6.18" + - SOLANA_VERSION="v1.7.11" _defaults: &defaults cache: false From f66409c3e67344198b2617a7f25109d81b7b97d2 Mon Sep 17 00:00:00 2001 From: Alex Miao Date: Fri, 22 Oct 2021 09:20:36 -0700 Subject: [PATCH 5/6] change to build docker image --- scripts/travis/run-docker.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/travis/run-docker.sh b/scripts/travis/run-docker.sh index 3f8fb318..9fe229b6 100755 --- a/scripts/travis/run-docker.sh +++ b/scripts/travis/run-docker.sh @@ -3,7 +3,7 @@ set -euxo pipefail main() { - docker pull projectserum/development:latest + docker pull projectserum/build:latest # # Bind the relevant host directories to the docker image so that the # files are synced. @@ -18,7 +18,7 @@ main() { # docker run -it -d --net host --name dev \ -v workdir:/workdir \ - projectserum/development:latest bash + projectserum/build:latest bash } main From 06c812c9b54c7f79c0ff71f03423bdcb56698dc2 Mon Sep 17 00:00:00 2001 From: Alex Miao Date: Fri, 22 Oct 2021 09:45:06 -0700 Subject: [PATCH 6/6] projectserum/build version 0.17.0 --- scripts/travis/run-docker.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/travis/run-docker.sh b/scripts/travis/run-docker.sh index 9fe229b6..67f1f261 100755 --- a/scripts/travis/run-docker.sh +++ b/scripts/travis/run-docker.sh @@ -3,7 +3,7 @@ set -euxo pipefail main() { - docker pull projectserum/build:latest + docker pull projectserum/build:v0.17.0 # # Bind the relevant host directories to the docker image so that the # files are synced. @@ -18,7 +18,7 @@ main() { # docker run -it -d --net host --name dev \ -v workdir:/workdir \ - projectserum/build:latest bash + projectserum/build:v0.17.0 bash } main