diff --git a/Cargo.lock b/Cargo.lock index 973290c..16facad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -60,7 +60,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", + "once_cell", + "version_check 0.9.4", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if 1.0.0", "once_cell", "version_check 0.9.4", ] @@ -104,104 +115,104 @@ checksum = "6b2d54853319fd101b8dd81de382bcbf3e03410a64d8928bbee85a3e7dcde483" [[package]] name = "anchor-attribute-access-control" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "regex", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "anchor-attribute-account" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", "anyhow", "bs58 0.4.0", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "rustversion", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "anchor-attribute-constant" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", - "proc-macro2 1.0.50", - "syn 1.0.107", + "proc-macro2 1.0.56", + "syn 1.0.109", ] [[package]] name = "anchor-attribute-error" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "anchor-attribute-event" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "anchor-attribute-interface" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", "anyhow", "heck 0.3.3", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "anchor-attribute-program" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "anchor-attribute-state" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "anchor-client" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-lang", "anyhow", @@ -217,19 +228,19 @@ dependencies = [ [[package]] name = "anchor-derive-accounts" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-syn", "anyhow", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "anchor-lang" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", @@ -243,7 +254,7 @@ dependencies = [ "arrayref", "base64 0.13.1", "bincode", - "borsh", + "borsh 0.9.3", "bytemuck", "solana-program", "thiserror", @@ -252,7 +263,7 @@ dependencies = [ [[package]] name = "anchor-spl" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-lang", "solana-program", @@ -263,18 +274,18 @@ dependencies = [ [[package]] name = "anchor-syn" version = "0.25.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anyhow", "bs58 0.3.1", "heck 0.3.3", - "proc-macro2 1.0.50", + "proc-macro2 1.0.56", "proc-macro2-diagnostics", - "quote 1.0.23", + "quote 1.0.26", "serde", "serde_json", "sha2 0.9.9", - "syn 1.0.107", + "syn 1.0.109", "thiserror", ] @@ -298,9 +309,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.68" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" [[package]] name = "arc-swap" @@ -316,9 +327,9 @@ checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -334,9 +345,9 @@ checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" [[package]] name = "asn1-rs" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ "asn1-rs-derive", "asn1-rs-impl", @@ -345,7 +356,7 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -354,9 +365,9 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", "synstructure", ] @@ -366,9 +377,9 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -413,40 +424,41 @@ dependencies = [ [[package]] name = "async-once-cell" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61305cacf1d0c5c9d3ee283d22f8f1f8c743a18ceb44a1b102bd53476c141de" +checksum = "5b49bd4c5b769125ea6323601c39815848972880efd33ffb2d01f9f909adc699" [[package]] name = "async-stream" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", + "pin-project-lite", ] [[package]] name = "async-stream-impl" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] name = "async-trait" -version = "0.1.64" +version = "0.1.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -477,18 +489,18 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "autotools" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8138adefca3e5d2e73bfba83bd6eeaf904b26a7ac1b4a19892cfe16cc7e1701" +checksum = "aef8da1805e028a172334c3b680f93e71126f2327622faef2ec3d893c0a4ad77" dependencies = [ "cc", ] [[package]] name = "axum" -version = "0.6.4" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5694b64066a2459918d8074c2ce0d5a88f409431994c2356617c8ae0c4721fc" +checksum = "113713495a32dd0ab52baf5c10044725aa3aec00b31beda84218e469029b72a3" dependencies = [ "async-trait", "axum-core", @@ -497,34 +509,33 @@ dependencies = [ "futures-util", "http", "http-body", - "hyper 0.14.24", + "hyper 0.14.26", "itoa", "matchit", "memchr", - "mime 0.3.16", + "mime 0.3.17", "percent-encoding 2.2.0", "pin-project-lite", "rustversion", "serde", "sync_wrapper", "tower", - "tower-http", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", "bytes 1.4.0", "futures-util", "http", "http-body", - "mime 0.3.16", + "mime 0.3.17", "rustversion", "tower-layer", "tower-service", @@ -543,7 +554,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "futures-core", - "getrandom 0.2.8", + "getrandom 0.2.9", "instant", "pin-project-lite", "rand 0.8.5", @@ -589,9 +600,9 @@ checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "base64ct" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "beef" @@ -613,9 +624,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.60.1" +version = "0.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" +checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" dependencies = [ "bitflags", "cexpr", @@ -623,11 +634,12 @@ dependencies = [ "lazy_static", "lazycell", "peeking_take_while", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "regex", "rustc-hash", "shlex", + "syn 1.0.109", ] [[package]] @@ -678,16 +690,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "block-padding 0.2.1", - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -711,21 +723,44 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" dependencies = [ - "borsh-derive", + "borsh-derive 0.9.3", "hashbrown 0.11.2", ] +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", + "hashbrown 0.13.2", +] + [[package]] name = "borsh-derive" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.50", - "syn 1.0.107", + "proc-macro2 1.0.56", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", + "proc-macro-crate 0.1.5", + "proc-macro2 1.0.56", + "syn 1.0.109", ] [[package]] @@ -734,9 +769,20 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -745,9 +791,20 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -785,24 +842,14 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bstr" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f0778972c64420fdedc63f09919c8a88bda7b25135357fd25a5d9f3257e832" +checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" dependencies = [ "memchr", "serde", ] -[[package]] -name = "buf_redux" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" -dependencies = [ - "memchr", - "safemem", -] - [[package]] name = "bumpalo" version = "3.12.0" @@ -827,43 +874,44 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytecheck" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11cac2c12b5adc6570dad2ee1b87eff4955dac476fe12d81e5fdd352e52406f" +checksum = "13fe11640a23eb24562225322cd3e452b93a3d4091d62fab69c70542fcd17d1f" dependencies = [ "bytecheck_derive", "ptr_meta", + "simdutf8", ] [[package]] name = "bytecheck_derive" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf" +checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "bytemuck" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322" +checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -949,22 +997,11 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "checked_math" -version = "0.1.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" -dependencies = [ - "proc-macro-error", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", -] - [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" dependencies = [ "iana-time-zone", "js-sys", @@ -991,14 +1028,14 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] name = "cipher" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", @@ -1006,9 +1043,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.4.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", @@ -1055,40 +1092,6 @@ dependencies = [ "os_str_bytes", ] -[[package]] -name = "client" -version = "0.3.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" -dependencies = [ - "anchor-client", - "anchor-lang", - "anchor-spl", - "anyhow", - "async-once-cell", - "async-trait", - "base64 0.13.1", - "bincode", - "fixed", - "fixed-macro", - "futures 0.3.26", - "itertools 0.10.5", - "log 0.4.17", - "mango-v4", - "pyth-sdk-solana", - "reqwest", - "serde", - "serde_json", - "serum_dex 0.5.6", - "shellexpand", - "solana-account-decoder", - "solana-address-lookup-table-program", - "solana-client", - "solana-sdk", - "spl-associated-token-account", - "thiserror", - "tokio", -] - [[package]] name = "cloudabi" version = "0.0.3" @@ -1123,11 +1126,11 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" dependencies = [ - "crossbeam-utils 0.8.14", + "crossbeam-utils 0.8.15", ] [[package]] @@ -1155,9 +1158,9 @@ dependencies = [ [[package]] name = "console_log" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" dependencies = [ "log 0.4.17", "web-sys", @@ -1171,9 +1174,9 @@ checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" [[package]] name = "constant_time_eq" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279" +checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b" [[package]] name = "convert_case" @@ -1193,9 +1196,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "core_affinity" @@ -1211,9 +1214,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" dependencies = [ "libc", ] @@ -1229,35 +1232,35 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.14", + "crossbeam-utils 0.8.15", ] [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", - "crossbeam-utils 0.8.14", + "crossbeam-utils 0.8.15", ] [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg 1.1.0", "cfg-if 1.0.0", - "crossbeam-utils 0.8.14", - "memoffset 0.7.1", + "crossbeam-utils 0.8.15", + "memoffset 0.8.0", "scopeguard", ] @@ -1274,9 +1277,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if 1.0.0", ] @@ -1293,7 +1296,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "typenum", ] @@ -1303,7 +1306,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "subtle", ] @@ -1332,9 +1335,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc831ee6a32dd495436e317595e639a587aa9907bef96fe6e6abc290ab6204e9" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" dependencies = [ "cc", "cxxbridge-flags", @@ -1344,34 +1347,34 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94331d54f1b1a8895cd81049f7eaaaef9d05a7dcb4d1fd08bf3ff0806246789d" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" dependencies = [ "cc", "codespan-reporting", "once_cell", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "scratch", - "syn 1.0.107", + "syn 2.0.15", ] [[package]] name = "cxxbridge-flags" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dcd35ba14ca9b40d6e4b4b39961f23d835dbb8eed74565ded361d93e1feb8a" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" [[package]] name = "cxxbridge-macro" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bbeb29798b407ccd82a3324ade1a7286e0d29851475990b612670f6f5124d2" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -1413,9 +1416,9 @@ dependencies = [ [[package]] name = "der-parser" -version = "8.1.0" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ "asn1-rs", "displaydoc", @@ -1437,9 +1440,9 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -1449,17 +1452,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "rustc_version 0.4.0", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "dialoguer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af3c796f3b0b408d9fd581611b47fa850821fcb84aa640b83a3c1a5be2d691f2" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" dependencies = [ "console", "shell-words", @@ -1482,7 +1485,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -1491,7 +1494,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer 0.10.3", + "block-buffer 0.10.4", "crypto-common", "subtle", ] @@ -1552,9 +1555,9 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -1582,9 +1585,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b0705efd4599c15a38151f4721f7bc388306f61084d3bfd50bd07fbca5cb60" +checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" [[package]] name = "eager" @@ -1663,9 +1666,9 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8958699f9359f0b04e691a13850d48b7de329138023876d07cbd024c2c820598" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -1675,9 +1678,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2" dependencies = [ "once_cell", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -1695,9 +1698,9 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -1713,6 +1716,27 @@ dependencies = [ "termcolor", ] +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "event-listener" version = "2.5.3" @@ -1742,9 +1766,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] @@ -1757,73 +1781,50 @@ checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" [[package]] name = "field-offset" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" dependencies = [ - "memoffset 0.6.5", - "rustc_version 0.3.3", + "memoffset 0.8.0", + "rustc_version 0.4.0", ] [[package]] name = "filetime" -version = "0.2.19" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.2.16", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "fixed" version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80a9a8cb2e34880a498f09367089339bda5e12d6f871640f947850f7113058c0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "az", - "borsh", + "borsh 0.9.3", "bytemuck", - "half", + "half 1.8.2", "serde", "typenum", ] [[package]] -name = "fixed-macro" -version = "1.2.0" +name = "fixed" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0c48af8cb14e02868f449f8a2187bd78af7a08da201fdc78d518ecb1675bc" +checksum = "79386fdcec5e0fde91b1a6a5bcd89677d1f9304f7f986b154a1b9109038854d9" dependencies = [ - "fixed", - "fixed-macro-impl", - "fixed-macro-types", -] - -[[package]] -name = "fixed-macro-impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c93086f471c0a1b9c5e300ea92f5cd990ac6d3f8edf27616ef624b8fa6402d4b" -dependencies = [ - "fixed", - "paste", - "proc-macro-error", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", -] - -[[package]] -name = "fixed-macro-types" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "044a61b034a2264a7f65aa0c3cd112a01b4d4ee58baace51fead3f21b993c7e4" -dependencies = [ - "fixed", - "fixed-macro-impl", + "az", + "bytemuck", + "half 2.2.1", + "serde", + "typenum", ] [[package]] @@ -1884,9 +1885,9 @@ dependencies = [ [[package]] name = "fs_extra" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "fuchsia-cprng" @@ -1918,9 +1919,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -1933,9 +1934,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", "futures-sink", @@ -1943,15 +1944,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-executor" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ "futures-core", "futures-task", @@ -1961,38 +1962,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-macro" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] name = "futures-sink" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures 0.1.31", "futures-channel", @@ -2027,9 +2028,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "serde", "typenum", @@ -2061,9 +2062,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2098,7 +2099,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8af59a261bcf42f45d1b261232847b9b850ba0a1419d6100698246fb66e9240" dependencies = [ "arc-swap", - "futures 0.3.26", + "futures 0.3.28", "log 0.4.17", "reqwest", "serde", @@ -2106,7 +2107,7 @@ dependencies = [ "serde_json", "simpl", "smpl_jwt", - "time 0.3.17", + "time 0.3.20", "tokio", ] @@ -2123,9 +2124,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21" dependencies = [ "bytes 1.4.0", "fnv", @@ -2146,6 +2147,15 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +[[package]] +name = "half" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", +] + [[package]] name = "hash32" version = "0.2.1" @@ -2161,7 +2171,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash", + "ahash 0.7.6", ] [[package]] @@ -2170,7 +2180,16 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash", + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.3", ] [[package]] @@ -2185,7 +2204,7 @@ dependencies = [ "headers-core", "http", "httpdate", - "mime 0.3.16", + "mime 0.3.17", "sha1 0.10.5", ] @@ -2231,6 +2250,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "histogram" version = "0.6.9" @@ -2263,15 +2288,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", - "generic-array 0.14.6", + "generic-array 0.14.7", "hmac 0.8.1", ] [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes 1.4.0", "fnv", @@ -2289,12 +2314,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http-range-header" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" - [[package]] name = "httparse" version = "1.8.0" @@ -2334,9 +2353,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.24" +version = "0.14.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" +checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" dependencies = [ "bytes 1.4.0", "futures-channel", @@ -2363,10 +2382,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" dependencies = [ "bytes 1.4.0", - "futures 0.3.26", + "futures 0.3.28", "headers", "http", - "hyper 0.14.24", + "hyper 0.14.26", "hyper-tls", "native-tls", "tokio", @@ -2381,7 +2400,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" dependencies = [ "http", - "hyper 0.14.24", + "hyper 0.14.26", "rustls", "tokio", "tokio-rustls", @@ -2393,7 +2412,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.24", + "hyper 0.14.26", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -2406,7 +2425,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes 1.4.0", - "hyper 0.14.24", + "hyper 0.14.26", "native-tls", "tokio", "tokio-native-tls", @@ -2414,16 +2433,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi 0.3.9", + "windows", ] [[package]] @@ -2487,9 +2506,9 @@ checksum = "5a9d968042a4902e08810946fc7cd5851eb75e80301342305af755ca06cb82ce" [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg 1.1.0", "hashbrown 0.12.3", @@ -2514,7 +2533,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -2526,6 +2545,17 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "io-lifetimes" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "iovec" version = "0.1.4" @@ -2537,9 +2567,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" [[package]] name = "itertools" @@ -2561,9 +2591,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "jemalloc-sys" @@ -2588,9 +2618,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] @@ -2611,8 +2641,9 @@ source = "git+https://github.com/ckamm/jsonrpc.git?branch=ckamm/http-with-gzip-d dependencies = [ "derive_more", "flate2 0.2.20", - "futures 0.3.26", - "hyper 0.14.24", + "futures 0.3.28", + "hyper 0.14.26", + "hyper-tls", "jsonrpc-core 18.0.0 (git+https://github.com/ckamm/jsonrpc.git?branch=ckamm/http-with-gzip-default-v18.0.0)", "jsonrpc-pubsub 18.0.0 (git+https://github.com/ckamm/jsonrpc.git?branch=ckamm/http-with-gzip-default-v18.0.0)", "log 0.4.17", @@ -2629,7 +2660,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.3.26", + "futures 0.3.28", "futures-executor", "futures-util", "log 0.4.17", @@ -2643,7 +2674,7 @@ name = "jsonrpc-core" version = "18.0.0" source = "git+https://github.com/ckamm/jsonrpc.git?branch=ckamm/http-with-gzip-default-v18.0.0#48566963667af263622724e2ea3971847141269c" dependencies = [ - "futures 0.3.26", + "futures 0.3.28", "futures-executor", "futures-util", "log 0.4.17", @@ -2657,7 +2688,7 @@ name = "jsonrpc-core-client" version = "18.0.0" source = "git+https://github.com/ckamm/jsonrpc.git?branch=ckamm/http-with-gzip-default-v18.0.0#48566963667af263622724e2ea3971847141269c" dependencies = [ - "futures 0.3.26", + "futures 0.3.28", "jsonrpc-client-transports", ] @@ -2668,9 +2699,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" dependencies = [ "proc-macro-crate 0.1.5", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -2679,8 +2710,8 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ - "futures 0.3.26", - "hyper 0.14.24", + "futures 0.3.28", + "hyper 0.14.26", "jsonrpc-core 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-server-utils", "log 0.4.17", @@ -2695,7 +2726,7 @@ version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" dependencies = [ - "futures 0.3.26", + "futures 0.3.28", "jsonrpc-core 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static", "log 0.4.17", @@ -2709,7 +2740,7 @@ name = "jsonrpc-pubsub" version = "18.0.0" source = "git+https://github.com/ckamm/jsonrpc.git?branch=ckamm/http-with-gzip-default-v18.0.0#48566963667af263622724e2ea3971847141269c" dependencies = [ - "futures 0.3.26", + "futures 0.3.28", "jsonrpc-core 18.0.0 (git+https://github.com/ckamm/jsonrpc.git?branch=ckamm/http-with-gzip-default-v18.0.0)", "lazy_static", "log 0.4.17", @@ -2725,7 +2756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" dependencies = [ "bytes 1.4.0", - "futures 0.3.26", + "futures 0.3.28", "globset", "jsonrpc-core 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static", @@ -2760,7 +2791,7 @@ dependencies = [ "beef", "futures-channel", "futures-util", - "hyper 0.14.24", + "hyper 0.14.26", "jsonrpsee-types", "parking_lot 0.12.1", "rand 0.8.5", @@ -2782,7 +2813,7 @@ dependencies = [ "futures-channel", "futures-util", "globset", - "hyper 0.14.24", + "hyper 0.14.26", "jsonrpsee-core", "jsonrpsee-types", "lazy_static", @@ -2846,9 +2877,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" [[package]] name = "libloading" @@ -2868,9 +2899,9 @@ checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" [[package]] name = "librocksdb-sys" -version = "0.8.0+7.4.4" +version = "0.8.3+7.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611804e4666a25136fcc5f8cf425ab4d26c7f74ea245ffe92ea23b85b6420b5d" +checksum = "557b255ff04123fcc176162f56ed0c9cd42d8f357cf55b3fabeb60f7413741b3" dependencies = [ "bindgen", "bzip2-sys", @@ -2954,6 +2985,12 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +[[package]] +name = "linux-raw-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b085a4f2cde5781fc4b1717f2e86c62f5cda49de7ba99a7c2eae02b61c9064c" + [[package]] name = "lock_api" version = "0.3.4" @@ -3022,12 +3059,37 @@ dependencies = [ [[package]] name = "mango-feeds-connector" -version = "0.1.0" +version = "0.1.1" dependencies = [ "anyhow", "async-channel", "async-trait", - "futures 0.3.26", + "futures 0.3.28", + "jsonrpc-core 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client", + "log 0.4.17", + "rustls", + "serde", + "serde_derive", + "solana-account-decoder", + "solana-client", + "solana-rpc", + "solana-sdk", + "tokio", + "warp", + "yellowstone-grpc-proto", +] + +[[package]] +name = "mango-feeds-connector" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd44869f0fa0cfb336229e97eff192ddf734446bfeed1a7ae9b07c762532368" +dependencies = [ + "anyhow", + "async-channel", + "async-trait", + "futures 0.3.28", "jsonrpc-core 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core-client", "log 0.4.17", @@ -3056,14 +3118,14 @@ dependencies = [ "bytemuck", "bytes 1.4.0", "chrono", - "fixed", - "futures 0.3.26", + "fixed 1.23.1", + "futures 0.3.28", "futures-core", "itertools 0.10.5", "jsonrpc-core 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core-client", "log 0.4.17", - "mango-feeds-connector", + "mango-feeds-connector 0.1.1", "mango-v4", "native-tls", "postgres-native-tls", @@ -3086,24 +3148,22 @@ dependencies = [ [[package]] name = "mango-v4" -version = "0.6.0" -source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#0ba7ecd5061e666addd90e6d3a4293ec1381f9c0" +version = "0.14.0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" dependencies = [ "anchor-lang", "anchor-spl", "arrayref", "bincode", - "borsh", + "borsh 0.9.3", "bytemuck", - "checked_math", "default-env", "derivative", - "fixed", - "fixed-macro", + "fixed 1.11.0", "num_enum", "pyth-sdk-solana", "serde", - "serum_dex 0.5.6", + "serum_dex 0.5.10 (git+https://github.com/openbook-dex/program)", "solana-address-lookup-table-program", "solana-program", "solana-sdk", @@ -3113,6 +3173,45 @@ dependencies = [ "switchboard-v2", ] +[[package]] +name = "mango-v4-client" +version = "0.3.0" +source = "git+https://github.com/blockworks-foundation/mango-v4?branch=dev#497012042c125238329381711dce7c736334099d" +dependencies = [ + "anchor-client", + "anchor-lang", + "anchor-spl", + "anyhow", + "async-channel", + "async-once-cell", + "async-trait", + "base64 0.13.1", + "bincode", + "fixed 1.11.0", + "futures 0.3.28", + "itertools 0.10.5", + "jsonrpc-core 18.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client", + "log 0.4.17", + "mango-feeds-connector 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "mango-v4", + "pyth-sdk-solana", + "reqwest", + "serde", + "serde_json", + "serum_dex 0.5.10 (git+https://github.com/openbook-dex/program)", + "shellexpand", + "solana-account-decoder", + "solana-address-lookup-table-program", + "solana-client", + "solana-rpc", + "solana-sdk", + "spl-associated-token-account", + "thiserror", + "tokio", + "tokio-stream", +] + [[package]] name = "matches" version = "0.1.10" @@ -3148,9 +3247,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -3166,9 +3265,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg 1.1.0", ] @@ -3196,9 +3295,9 @@ dependencies = [ [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" @@ -3206,7 +3305,7 @@ version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ - "mime 0.3.16", + "mime 0.3.17", "unicase 2.6.0", ] @@ -3316,9 +3415,9 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -3328,21 +3427,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] -name = "multipart" -version = "0.18.0" +name = "multiparty" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182" +checksum = "ed1ec6589a6d4a1e0b33b4c0a3f6ee96dfba88ebdb3da51403fd7cf0a24a4b04" dependencies = [ - "buf_redux", + "bytes 1.4.0", + "futures-core", "httparse", - "log 0.4.17", - "mime 0.3.16", - "mime_guess", - "quick-error", - "rand 0.8.5", - "safemem", - "tempfile", - "twoway", + "memchr", + "pin-project-lite", + "try-lock", ] [[package]] @@ -3396,15 +3491,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nom8" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" -dependencies = [ - "memchr", -] - [[package]] name = "ntapi" version = "0.3.7" @@ -3466,9 +3552,9 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -3525,23 +3611,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d829733185c1ca374f17e52b762f24f535ec625d2cc1f070e34c8a9068f341b" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be1598bf1c313dcdd12092e3f1920f463462525a21b7b4e11b4168353d0123e" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate 1.3.0", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro-crate 1.3.1", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -3561,9 +3647,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "opaque-debug" @@ -3579,9 +3665,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.45" +version = "0.10.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" +checksum = "7e30d8bc91859781f0a943411186324d580f2bbeb71b452fe91ae344806af3f1" dependencies = [ "bitflags", "cfg-if 1.0.0", @@ -3594,13 +3680,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -3611,20 +3697,19 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.24.0+1.1.1s" +version = "111.25.2+1.1.1t" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3498f259dab01178c6228c6b00dcef0ed2a2d5e20d648c017861227773ea4abd" +checksum = "320708a054ad9b3bf314688b5db87cf4d6683d64cfc835e2337924ae62bf4431" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.80" +version = "0.9.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" +checksum = "0d3d193fb1488ad46ffe3aaabc912cc931d02ee8518fe2959aea8ef52718b0c0" dependencies = [ - "autocfg 1.1.0", "cc", "libc", "openssl-src", @@ -3634,15 +3719,15 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" [[package]] name = "ouroboros" -version = "0.15.5" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbb50b356159620db6ac971c6d5c9ab788c9cc38a6f49619fca2a27acb062ca" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" dependencies = [ "aliasable", "ouroboros_macro", @@ -3650,15 +3735,15 @@ dependencies = [ [[package]] name = "ouroboros_macro" -version = "0.15.5" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0d9d1a6191c4f391f87219d1ea42b23f09ee84d64763cd05ee6ea88d9f384d" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -3735,12 +3820,6 @@ dependencies = [ "windows-sys 0.45.0", ] -[[package]] -name = "paste" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" - [[package]] name = "pbkdf2" version = "0.4.0" @@ -3795,21 +3874,11 @@ dependencies = [ "num", ] -[[package]] -name = "pest" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab62d2fa33726dbe6321cc97ef96d8cde531e3eeaf858a058de53a8a6d40d8f" -dependencies = [ - "thiserror", - "ucd-trie", -] - [[package]] name = "petgraph" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" dependencies = [ "fixedbitset", "indexmap", @@ -3848,9 +3917,9 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -3902,13 +3971,13 @@ dependencies = [ [[package]] name = "postgres-derive" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76c801e97c9cf696097369e517785b98056e98b21149384c812febfc5912f2" +checksum = "070ffaa78859c779b19f9358ce035480479cf2619e968593ffbe72abcb6e0fcf" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -3917,7 +3986,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d442770e2b1e244bb5eb03b31c79b65bb2568f413b899eaba850fa945a65954" dependencies = [ - "futures 0.3.26", + "futures 0.3.28", "native-tls", "tokio", "tokio-native-tls", @@ -3926,11 +3995,11 @@ dependencies = [ [[package]] name = "postgres-protocol" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878c6cbf956e03af9aa8204b407b9cbf47c072164800aa918c516cd4b056c50c" +checksum = "78b7fa9f396f51dffd61546fd8573ee20592287996568e6175ceb0f8699ad75d" dependencies = [ - "base64 0.13.1", + "base64 0.21.0", "byteorder", "bytes 1.4.0", "fallible-iterator", @@ -3944,9 +4013,9 @@ dependencies = [ [[package]] name = "postgres-types" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73d946ec7d256b04dfadc4e6a3292324e6f417124750fc5c0950f981b703a0f1" +checksum = "f028f05971fe20f512bcc679e2c10227e57809a3af86a7606304435bc8896cd6" dependencies = [ "array-init", "bytes 1.4.0", @@ -3962,7 +4031,7 @@ version = "0.3.3" source = "git+https://github.com/nolanderc/rust-postgres-query?rev=b4422051c8a31fbba4a35f88004c1cefb1878dd5#b4422051c8a31fbba4a35f88004c1cefb1878dd5" dependencies = [ "async-trait", - "futures 0.3.26", + "futures 0.3.28", "postgres-types", "postgres_query_macro", "proc-macro-hack", @@ -3977,9 +4046,9 @@ version = "0.3.3" source = "git+https://github.com/nolanderc/rust-postgres-query?rev=b4422051c8a31fbba4a35f88004c1cefb1878dd5#b4422051c8a31fbba4a35f88004c1cefb1878dd5" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -3990,12 +4059,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.1.23" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "proc-macro2 1.0.50", - "syn 1.0.107", + "proc-macro2 1.0.56", + "syn 1.0.109", ] [[package]] @@ -4009,12 +4078,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit 0.18.1", + "toml_edit", ] [[package]] @@ -4024,9 +4093,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", "version_check 0.9.4", ] @@ -4036,8 +4105,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "version_check 0.9.4", ] @@ -4058,9 +4127,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] @@ -4071,9 +4140,9 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", "version_check 0.9.4", "yansi", ] @@ -4090,12 +4159,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" dependencies = [ "bytes 1.4.0", - "prost-derive 0.11.6", + "prost-derive 0.11.9", ] [[package]] @@ -4120,9 +4189,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ "bytes 1.4.0", "heck 0.4.1", @@ -4132,10 +4201,10 @@ dependencies = [ "multimap", "petgraph", "prettyplease", - "prost 0.11.6", - "prost-types 0.11.6", + "prost 0.11.9", + "prost-types 0.11.9", "regex", - "syn 1.0.107", + "syn 1.0.109", "tempfile", "which", ] @@ -4148,22 +4217,22 @@ checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" dependencies = [ "anyhow", "itertools 0.10.5", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "prost-derive" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", "itertools 0.10.5", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -4178,12 +4247,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" dependencies = [ - "bytes 1.4.0", - "prost 0.11.6", + "prost 0.11.9", ] [[package]] @@ -4210,9 +4278,9 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -4221,8 +4289,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "446ff07d7ef3bd98214f9b4fe6a611a69e36b5aad74b18cdbad5150193c1f204" dependencies = [ - "borsh", - "borsh-derive", + "borsh 0.9.3", + "borsh-derive 0.9.3", "schemars", "serde", ] @@ -4233,8 +4301,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27a648739aa69cab94edd900a0d7ca37d8a789e9c88741b23deec11fab418d16" dependencies = [ - "borsh", - "borsh-derive", + "borsh 0.9.3", + "borsh-derive 0.9.3", "bytemuck", "num-derive", "num-traits", @@ -4253,12 +4321,6 @@ dependencies = [ "percent-encoding 2.2.0", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quick-protobuf" version = "0.8.0" @@ -4332,11 +4394,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ - "proc-macro2 1.0.50", + "proc-macro2 1.0.56", ] [[package]] @@ -4442,7 +4504,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", ] [[package]] @@ -4527,9 +4589,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -4537,13 +4599,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", - "crossbeam-utils 0.8.14", + "crossbeam-utils 0.8.15", "num_cpus", ] @@ -4555,7 +4617,7 @@ checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" dependencies = [ "pem", "ring", - "time 0.3.17", + "time 0.3.20", "yasna", ] @@ -4583,13 +4645,22 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_users" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.9", "redox_syscall 0.2.16", "thiserror", ] @@ -4606,14 +4677,14 @@ dependencies = [ "lru", "parking_lot 0.11.2", "smallvec 1.10.0", - "spin 0.9.4", + "spin 0.9.8", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" dependencies = [ "aho-corasick", "memchr", @@ -4622,33 +4693,24 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi 0.3.9", -] +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "rend" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79af64b4b6362ffba04eef3a4e10829718a4896dac19daa741851c86781edf95" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.14" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +checksum = "27b71749df584b7f4cac2c426c127a7c785a5106cc98f7a8feb044115f0fa254" dependencies = [ "async-compression", "base64 0.21.0", @@ -4659,13 +4721,13 @@ dependencies = [ "h2", "http", "http-body", - "hyper 0.14.24", + "hyper 0.14.26", "hyper-rustls", "hyper-tls", "ipnet", "js-sys", "log 0.4.17", - "mime 0.3.16", + "mime 0.3.17", "native-tls", "once_cell", "percent-encoding 2.2.0", @@ -4705,9 +4767,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.39" +version = "0.7.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec2b3485b07d96ddfd3134767b8a447b45ea4eb91448d0a35180ec0ffd5ed15" +checksum = "21499ed91807f07ae081880aabb2ccc0235e9d88011867d984525e9a4c3cfa3e" dependencies = [ "bytecheck", "hashbrown 0.12.3", @@ -4719,13 +4781,13 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.39" +version = "0.7.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4" +checksum = "ac1c672430eb41556291981f45ca900a0239ad007242d1cb4b4167af842db666" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -4752,12 +4814,12 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.28.0" +version = "1.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe32e8c89834541077a5c5bbe5691aa69324361e27e6aeb3552a737db4a70c8" +checksum = "26bd36b60561ee1fb5ec2817f198b6fd09fa571c897a5e86d1487cfc2b096dfc" dependencies = [ "arrayvec", - "borsh", + "borsh 0.10.3", "bytecheck", "byteorder", "bytes 1.4.0", @@ -4770,19 +4832,19 @@ dependencies = [ [[package]] name = "rust_decimal_macros" -version = "1.28.0" +version = "1.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71a78314ee3b7e684f34f1574fe0935cac8eb453217974473be82f032d9b4ee" +checksum = "0e773fd3da1ed42472fdf3cfdb4972948a555bc3d73f5e0bdb99d17e7b54c687" dependencies = [ - "quote 1.0.23", + "quote 1.0.26", "rust_decimal", ] [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -4799,22 +4861,13 @@ dependencies = [ "semver 0.9.0", ] -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.16", + "semver 1.0.17", ] [[package]] @@ -4826,6 +4879,20 @@ dependencies = [ "nom", ] +[[package]] +name = "rustix" +version = "0.37.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79bef90eb6d984c72722595b5b1348ab39275a5e5123faca6863bf07d75a4e0" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + [[package]] name = "rustls" version = "0.20.8" @@ -4870,15 +4937,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "safe-transmute" @@ -4912,9 +4979,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5fb6c61f29e723026dc8e923d94c694313212abbecbbe5f55a7748eec5b307" +checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" dependencies = [ "dyn-clone", "schemars_derive", @@ -4924,14 +4991,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f188d036977451159430f3b8dc82ec76364a42b7e289c2b18a9a18f4470058e9" +checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "serde_derive_internals", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -4948,9 +5015,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scratch" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" [[package]] name = "scroll" @@ -4967,9 +5034,9 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -5017,23 +5084,14 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0", + "semver-parser", ] [[package]] name = "semver" -version = "0.11.0" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.2", -] - -[[package]] -name = "semver" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "semver-parser" @@ -5041,42 +5099,33 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - [[package]] name = "serde" -version = "1.0.152" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718dc5fff5b36f99093fc49b280cfc96ce6fc824317783bff5a1fed0c7a64819" +checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -5085,16 +5134,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "serde_json" -version = "1.0.91" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ "itoa", "ryu", @@ -5134,29 +5183,6 @@ dependencies = [ "yaml-rust", ] -[[package]] -name = "serum_dex" -version = "0.5.6" -source = "git+https://github.com/blockworks-foundation/serum-dex.git?branch=ckamm/find_by_key#c0b9f559daa74ec5960cc371a8bed610029a656b" -dependencies = [ - "arrayref", - "bincode", - "bytemuck", - "byteorder", - "enumflags2", - "field-offset", - "itertools 0.9.0", - "num-traits", - "num_enum", - "safe-transmute", - "serde", - "solana-program", - "spl-token", - "static_assertions", - "thiserror", - "without-alloc", -] - [[package]] name = "serum_dex" version = "0.5.10" @@ -5218,12 +5244,12 @@ dependencies = [ "async-trait", "bs58 0.4.0", "bytemuck", - "client", "futures-channel", "futures-util", "log 0.4.17", "mango-feeds-lib", "mango-v4", + "mango-v4-client", "serde", "serde_derive", "serde_json", @@ -5232,8 +5258,8 @@ dependencies = [ "solana-logger", "solana-sdk", "tokio", - "tokio-tungstenite", - "toml 0.7.1", + "tokio-tungstenite 0.17.2", + "toml 0.7.3", "ws", ] @@ -5250,8 +5276,7 @@ dependencies = [ "bs58 0.4.0", "bytemuck", "chrono", - "client", - "futures 0.3.26", + "futures 0.3.28", "futures-channel", "futures-core", "futures-util", @@ -5259,6 +5284,7 @@ dependencies = [ "log 0.4.17", "mango-feeds-lib", "mango-v4", + "mango-v4-client", "native-tls", "postgres-native-tls", "postgres-types", @@ -5272,8 +5298,8 @@ dependencies = [ "tokio", "tokio-postgres", "tokio-postgres-rustls", - "tokio-tungstenite", - "toml 0.7.1", + "tokio-tungstenite 0.17.2", + "toml 0.7.3", "ws", ] @@ -5288,13 +5314,13 @@ dependencies = [ "async-trait", "bs58 0.4.0", "bytemuck", - "client", "futures-channel", "futures-util", "itertools 0.10.5", "log 0.4.17", "mango-feeds-lib", "mango-v4", + "mango-v4-client", "serde", "serde_derive", "serde_json", @@ -5302,8 +5328,8 @@ dependencies = [ "solana-logger", "solana-sdk", "tokio", - "tokio-tungstenite", - "toml 0.7.1", + "tokio-tungstenite 0.17.2", + "toml 0.7.3", "ws", ] @@ -5317,12 +5343,12 @@ dependencies = [ "async-trait", "bs58 0.3.1", "bytemuck", - "client", - "fixed", + "fixed 1.23.1", "jsonrpsee", "log 0.4.17", "mango-feeds-lib", "mango-v4", + "mango-v4-client", "serde", "serde_derive", "solana-logger", @@ -5431,9 +5457,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +checksum = "54c2bb1a323307527314a36bfb73f24febb08ce2b8a554bf4ffd6f51ad15198c" dependencies = [ "digest 0.10.6", "keccak", @@ -5462,9 +5488,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] @@ -5475,6 +5501,12 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + [[package]] name = "simpl" version = "0.1.0" @@ -5499,9 +5531,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg 1.1.0", ] @@ -5534,14 +5566,14 @@ dependencies = [ "serde_derive", "serde_json", "simpl", - "time 0.3.17", + "time 0.3.20", ] [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi 0.3.9", @@ -5555,7 +5587,7 @@ checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64 0.13.1", "bytes 1.4.0", - "futures 0.3.26", + "futures 0.3.28", "httparse", "log 0.4.17", "rand 0.8.5", @@ -5564,9 +5596,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04c1316932017ae5f947e83d77cc0356c4a395130a480cdc17ffb0570a0c115" +checksum = "fd1d1d16c04e7867408f2e0383a863e272dba2eda2c4b7095c70aa1a7ad4ff36" dependencies = [ "Inflector", "base64 0.13.1", @@ -5582,16 +5614,16 @@ dependencies = [ "solana-sdk", "solana-vote-program", "spl-token", - "spl-token-2022", + "spl-token-2022 0.6.0", "thiserror", "zstd", ] [[package]] name = "solana-address-lookup-table-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be490ed850c99286a4e4ba169ce20695336fe666c56bd823bfd8db689d23a58" +checksum = "de353d486f6e4a20cd163fc0c8391d01ff52e0ce504dbce7a45433362218b6d7" dependencies = [ "bincode", "bytemuck", @@ -5610,9 +5642,9 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c64d35ea22e63b5296cebf77c1cfc085a7f437c04ad31da0e6c50606bb8448" +checksum = "30f7f54103cf16ea0731149e345bdd8ad1677c3b802747d7406f3e7fdb5884bb" dependencies = [ "bv", "fnv", @@ -5629,9 +5661,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddde9efdbca9681b3c59592cbcd3e24a4c3768134fad12dc0a649c4d5313ac8c" +checksum = "685347b658b1dfb5adf9f42007c4608a4d1954b8b9e36dd1035fd8fcb0918c8b" dependencies = [ "bincode", "byteorder", @@ -5648,9 +5680,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fbbc3a256dd22f5dae449098edef9e9c16a2732a6df61228b382ccfff8a578" +checksum = "ae7219df17935400ead19e838b0a3c583dd7735745c52fca77f7966d39d41100" dependencies = [ "log 0.4.17", "memmap2", @@ -5663,9 +5695,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36228e03e14bc7d7707189b66f625981993f1a000b0b192d5b42367349901d91" +checksum = "30c261007a3f9424c7793d9a23e478c615f31ebc24e3ba5e52904575db36b865" dependencies = [ "chrono", "clap 2.34.0", @@ -5681,9 +5713,9 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c43b08f24fd605eaeaafe0e834dc9b209137ac253bc874d32a5bdd791cbd318" +checksum = "86c13afaa04bef4814c6eac7b48c47118d31ecce3dc03a609e0405a42fbddc12" dependencies = [ "dirs-next", "lazy_static", @@ -5697,9 +5729,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e270b1afd0b360c2aec42ae302ae7980ebb226017275b32a6156ab2ccbdad9" +checksum = "0e803c468b3609af59298721f3a66ad145fa68416bfa420775f190ed9cfc6355" dependencies = [ "async-mutex", "async-trait", @@ -5710,7 +5742,7 @@ dependencies = [ "clap 2.34.0", "crossbeam-channel", "enum_dispatch", - "futures 0.3.26", + "futures 0.3.28", "futures-util", "indexmap", "indicatif", @@ -5725,7 +5757,7 @@ dependencies = [ "rayon", "reqwest", "rustls", - "semver 1.0.16", + "semver 1.0.17", "serde", "serde_derive", "serde_json", @@ -5740,20 +5772,20 @@ dependencies = [ "solana-transaction-status", "solana-version", "solana-vote-program", - "spl-token-2022", + "spl-token-2022 0.6.0", "thiserror", "tokio", "tokio-stream", - "tokio-tungstenite", - "tungstenite", + "tokio-tungstenite 0.17.2", + "tungstenite 0.17.3", "url 2.3.1", ] [[package]] name = "solana-compute-budget-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57103610e5cd924399ac520238a11b7c65a869b14d89ce651f4f3b60072b5cdb" +checksum = "47c9af546a45bb12d281bc714a688a104d3d9bfe4a0472bd249a5ebacb658f3d" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -5761,9 +5793,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb275d80a482134f0f0c5439b0c40ba3f04bef70dbc46c0e47f6107f6ae482a8" +checksum = "877de8a7d14e47e948f969277396b759e5361de662fa404980df9fd69d562964" dependencies = [ "bincode", "chrono", @@ -5775,9 +5807,9 @@ dependencies = [ [[package]] name = "solana-entry" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244058478f97730e248a382a71c40ddc9a260b8db22eb37d570b78a12d78eece" +checksum = "20a163a063a5f171477fb4bc7bebbaf94e14d2dac39fbdbe7f028eb9cea54a32" dependencies = [ "bincode", "crossbeam-channel", @@ -5798,9 +5830,9 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ef95ad1f87b8c011d0e4d85a46f4a703e9dd7e722459659b395ed70d6ba924" +checksum = "1d202bbd0e7cbea5e291692efbc7b633b4d6d0f2de5aa0e466d6fa7bf40fd98b" dependencies = [ "bincode", "byteorder", @@ -5822,11 +5854,11 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f44a019070a6cec4d3ad8605c5caa65bdaa13f00b5f1849340f44ffea63b625b" +checksum = "f53e63c8f2aac07bc21167e7ede9b9d010ae25523fff5c01b171d9bab9a5a394" dependencies = [ - "ahash", + "ahash 0.7.6", "blake3", "block-buffer 0.9.0", "bs58 0.4.0", @@ -5834,7 +5866,7 @@ dependencies = [ "byteorder", "cc", "either", - "generic-array 0.14.6", + "generic-array 0.14.7", "getrandom 0.1.16", "hashbrown 0.12.3", "im", @@ -5856,21 +5888,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be23cc7a382f54dfe1348edb94610e5cc146b8eb21563cdd04062a403c75ba62" +checksum = "daeaaa2713c06a2fe4bcdcfe7e1af55ee8a89c4d6693860b4041997af667207a" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "rustc_version 0.4.0", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] name = "solana-gossip" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60151d329d5522f3091fc2c2e6b632db713b28f05322d75e0b9a55d3f7ffa10e" +checksum = "5e46887acca45ea75f4996b7411d98ffe55ac047d3150c7c3337681a810e8cd6" dependencies = [ "bincode", "bv", @@ -5913,9 +5945,9 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5a1687d71770a6b5ff311821331bf35de97d2ce537306dee9c6e4e377d93f" +checksum = "67468004fa190feea7980bc809fe5957e113bdafb2853b0190d32d51f578ca9d" dependencies = [ "assert_matches", "bincode", @@ -5926,7 +5958,7 @@ dependencies = [ "crossbeam-channel", "dashmap", "fs_extra", - "futures 0.3.26", + "futures 0.3.28", "itertools 0.10.5", "lazy_static", "libc", @@ -5934,7 +5966,7 @@ dependencies = [ "lru", "num_cpus", "num_enum", - "prost 0.11.6", + "prost 0.11.9", "rand 0.7.3", "rand_chacha 0.2.2", "rayon", @@ -5962,7 +5994,7 @@ dependencies = [ "solana-transaction-status", "solana-vote-program", "spl-token", - "spl-token-2022", + "spl-token-2022 0.6.0", "static_assertions", "tempfile", "thiserror", @@ -5973,9 +6005,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447d16a70a1b5383736ef44801050c0e1affd022303b22ed899352f958c2de4b" +checksum = "2b502866be84a799633c0744e1d72b819a256337149e9fb6c7eee4db84ec63f5" dependencies = [ "env_logger", "lazy_static", @@ -5984,9 +6016,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2400d2534a19f7605c5059060edea0499600a223f1a1f6a4b172666c04946a77" +checksum = "098178fabb0f0be17ed45ca52aea2754e49d4c41a443be5f98e1bce99b5c12bb" dependencies = [ "log 0.4.17", "solana-sdk", @@ -5994,9 +6026,9 @@ dependencies = [ [[package]] name = "solana-merkle-tree" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a72516e08968628e17764cf74796bae30685cb10f7b2d86ec9d68821bf43783" +checksum = "13c52e5ba4967a069a89fd1dcb605e819deabe7ebdd915601b94a0f79c339947" dependencies = [ "fast-math", "matches", @@ -6005,9 +6037,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68aaa3d683945dc3b6ca38923ef952ca1f96a27b61f898a1ddf9f4cd79f2df92" +checksum = "01dcd00c029063c09f15a1e2632570f5a549052cb3647db3bb06c2062e8351c4" dependencies = [ "crossbeam-channel", "gethostname", @@ -6019,9 +6051,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6d7093739e143d5e2edf3e81e523d47228adb802b847d66f4ab819be7ad6dc8" +checksum = "088b41440725aab4858d7e614fe4bb2c930ea60bba494485ed7640ed2b908724" dependencies = [ "bincode", "clap 3.2.23", @@ -6041,11 +6073,11 @@ dependencies = [ [[package]] name = "solana-perf" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc742f8d53f0a6e6f3a27ed11c1d0764b5486813c721d625c56094fcd14e984" +checksum = "7e9460658e4e92257ead496f8f3e36d8ec6778e09b476b7be6a518121bf0bd74" dependencies = [ - "ahash", + "ahash 0.7.6", "bincode", "bv", "caps", @@ -6068,9 +6100,9 @@ dependencies = [ [[package]] name = "solana-poh" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e608c2c1802dcb781c7a1323b14e0ced6951843606cc2ed6fc7f411bfcc51c" +checksum = "4dfb9c48b90258c0954d149592943e92fc2370b94425066a73240f1badd8aa61" dependencies = [ "core_affinity", "crossbeam-channel", @@ -6087,16 +6119,16 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0937481f080f5dd495fae456c94718a7bacf30fb5fdabb02dcb8a9622e446d5" +checksum = "d66c02ad6002fbe7903ec96edd16352fe7964d3ee43b02053112f5304529849f" dependencies = [ "base64 0.13.1", "bincode", "bitflags", "blake3", - "borsh", - "borsh-derive", + "borsh 0.9.3", + "borsh-derive 0.9.3", "bs58 0.4.0", "bv", "bytemuck", @@ -6104,7 +6136,7 @@ dependencies = [ "console_error_panic_hook", "console_log", "curve25519-dalek", - "getrandom 0.2.8", + "getrandom 0.2.9", "itertools 0.10.5", "js-sys", "lazy_static", @@ -6124,7 +6156,7 @@ dependencies = [ "serde_derive", "serde_json", "sha2 0.10.6", - "sha3 0.10.6", + "sha3 0.10.7", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-sdk-macro", @@ -6136,9 +6168,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4d12047608bac77fca000e18f7a2df3c7fa90656d7c7d387b1cd7faf18b238c" +checksum = "7d57bc75db0cbfb8e0620cef48b4de3388ed1ea5fbdcc68769da0c2b1ccf69bc" dependencies = [ "base64 0.13.1", "bincode", @@ -6163,9 +6195,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6eca67181e0381532db4bc69a625b1f96a047be461ff9050c451add0165424f" +checksum = "b2093a3edf87c3753e9548ac00d01a03da479f7fd7859f2d375528d543ecd101" dependencies = [ "lazy_static", "num_cpus", @@ -6173,9 +6205,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b83d035ee90035ebcb07ec73672fdc0272e5b98899846dd29fcb31f856ac78c" +checksum = "1844aed08fd8fc006732cc84fef8f4e0188d52188d7cdc859a5893553063b197" dependencies = [ "console", "dialoguer", @@ -6184,7 +6216,7 @@ dependencies = [ "num-traits", "parking_lot 0.12.1", "qstring", - "semver 1.0.16", + "semver 1.0.17", "solana-sdk", "thiserror", "uriparse", @@ -6192,9 +6224,9 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b1fcf0dbad773e4ac97ac0540c0ad3fbcc606eb55064323cc2a2a132c5d2f" +checksum = "e102d22a5d825c4a7f15511cc88379c52f55546bfbe4e1071d7dce3d07c1bc24" dependencies = [ "base64 0.13.1", "bincode", @@ -6236,7 +6268,7 @@ dependencies = [ "solana-version", "solana-vote-program", "spl-token", - "spl-token-2022", + "spl-token-2022 0.6.0", "stream-cancel", "thiserror", "tokio", @@ -6245,9 +6277,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8557969bd479d91902b50cb204d3343e783ce34fc976dc92df28e87f3ebdb" +checksum = "3460b7a188de4b92ce5379e82ff370139cc0174c210df849e4126e701ff6885c" dependencies = [ "arrayref", "bincode", @@ -6306,15 +6338,15 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390e7481c56dda2ceab2652beeda30a533e9667b34861a2eb4eec92fa1d826d7" +checksum = "60cbad77fa09d23fa5e05029dec6c88e4b784be76cf6ae390f82cc04b8089e73" dependencies = [ "assert_matches", "base64 0.13.1", "bincode", "bitflags", - "borsh", + "borsh 0.9.3", "bs58 0.4.0", "bytemuck", "byteorder", @@ -6323,7 +6355,7 @@ dependencies = [ "digest 0.10.6", "ed25519-dalek", "ed25519-dalek-bip32", - "generic-array 0.14.6", + "generic-array 0.14.7", "hmac 0.12.1", "itertools 0.10.5", "js-sys", @@ -6344,7 +6376,7 @@ dependencies = [ "serde_derive", "serde_json", "sha2 0.10.6", - "sha3 0.10.6", + "sha3 0.10.7", "solana-frozen-abi", "solana-frozen-abi-macro", "solana-logger", @@ -6357,15 +6389,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d0acbad862093ea123f3a27364336dcb0c8373522cd6810496a34e932c56c1" +checksum = "b73f54502e7d537472bf393ffce0c252c55b534f16797029a1614d79ec0209c9" dependencies = [ "bs58 0.4.0", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "rustversion", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -6376,9 +6408,9 @@ checksum = "7e0461f3afb29d8591300b3dd09b5472b3772d65688a2826ad960b8c0d5fa605" [[package]] name = "solana-send-transaction-service" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f539ebfe19fc2e3412bfcb5de06fc23d6a70cf44412a4e8edc6ac715db708b3" +checksum = "7b4db241054803501f57820c467b712556722ff2248e58e22b5728f773bd4fdd" dependencies = [ "crossbeam-channel", "log 0.4.17", @@ -6391,9 +6423,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513db9a3afe6ef1acf70b1cde59ffdf9d0f5b1db8806e01ca39b50c6a984312" +checksum = "780cfa177de42c88a523acd3368cf16852bc1b0c4a9e7f3c893382dd4c9c10cb" dependencies = [ "bincode", "log 0.4.17", @@ -6414,9 +6446,9 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9620c627a3393d4259b2410693b7b75925e1726562a5da8ad26c43b97715952" +checksum = "a05caf459a2279d2c22bb0a11d190c7b10d78b8186e2559d5dc335e0357379ee" dependencies = [ "backoff", "bincode", @@ -6424,15 +6456,15 @@ dependencies = [ "bzip2", "enum-iterator", "flate2 1.0.25", - "futures 0.3.26", + "futures 0.3.28", "goauth", "http", - "hyper 0.14.24", + "hyper 0.14.26", "hyper-proxy", "log 0.4.17", "openssl", - "prost 0.11.6", - "prost-types 0.11.6", + "prost 0.11.9", + "prost-types 0.11.9", "serde", "serde_derive", "smpl_jwt", @@ -6448,13 +6480,13 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb4b45eaa051b26d2758316009afe417d6743ff5b2f92da59ae0b8bd77b80" +checksum = "3186e8259702bf02d3acc4276bf6ee62565c23d19a9bc22d1c36907721719bff" dependencies = [ "bincode", "bs58 0.4.0", - "prost 0.11.6", + "prost 0.11.9", "protobuf-src", "serde", "solana-account-decoder", @@ -6465,9 +6497,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853b0187fdf233c13e8b7ba76e61d0c7cb49ca92c5fdb3b7568ad5ca30e2cf88" +checksum = "1b7834c7b6281d1e9f6d8207d544da0095b7e562a95b99ecbb7461408cec56eb" dependencies = [ "crossbeam-channel", "futures-util", @@ -6494,9 +6526,9 @@ dependencies = [ [[package]] name = "solana-sys-tuner" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26e984382275edfb1e3e8a58a39bb2563464d096422bab70089e4344d6225d7" +checksum = "81c94e46d8caceaaeb7e00ae19c9cf4f15ea03192f0748adfda7c454a418ec9d" dependencies = [ "clap 2.34.0", "libc", @@ -6511,14 +6543,14 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5bbdaed99403e4a17763bee60c1e0e3418524503c72b514ebff62efbcc9d33" +checksum = "feacea79beaefa2aec4ea02bd56573845bcf2a480858f7d666077138928fc259" dependencies = [ "Inflector", "base64 0.13.1", "bincode", - "borsh", + "borsh 0.9.3", "bs58 0.4.0", "lazy_static", "log 0.4.17", @@ -6534,19 +6566,19 @@ dependencies = [ "spl-associated-token-account", "spl-memo", "spl-token", - "spl-token-2022", + "spl-token-2022 0.6.0", "thiserror", ] [[package]] name = "solana-version" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a46c9ecb15ccd5388511cec0c5bfb989589425f8286ce432ff64b55dc7bf61e" +checksum = "2301b32765f9c37786b1d76b46c0d21be9475ad39d2f0e0494cb9cfe06182149" dependencies = [ "log 0.4.17", "rustc_version 0.4.0", - "semver 1.0.16", + "semver 1.0.17", "serde", "serde_derive", "solana-frozen-abi", @@ -6556,9 +6588,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ab9ff8928282cb42871a370435dd4713f700854801afb476cf63066f1337db" +checksum = "fa94c3c98a33f9825c83ea3d68db39fcbfa94b66772d9a8eb9e16e711966b453" dependencies = [ "bincode", "log 0.4.17", @@ -6577,9 +6609,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b02e1c183fc3ef5f2be0292619a6835860ef0151e505c9803bde5ffa8f47bc48" +checksum = "c7ebd4f7b2ed789d3c122b40e6590c0fcdb34d1029a6eb7ebb463e96beb5db35" dependencies = [ "bytemuck", "getrandom 0.1.16", @@ -6592,9 +6624,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.14.13" +version = "1.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cebca4083e982ae01583d1a590c4d679e6f648a4761364ddfb43026d2c433142" +checksum = "b28c5ec36aa1393174f7ea18c0cb809af82c10977bc5b2e1240a6b4b048b8f24" dependencies = [ "aes-gcm-siv", "arrayref", @@ -6602,7 +6634,7 @@ dependencies = [ "bincode", "bytemuck", "byteorder", - "cipher 0.4.3", + "cipher 0.4.4", "curve25519-dalek", "getrandom 0.1.16", "itertools 0.10.5", @@ -6647,9 +6679,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.4" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spki" @@ -6668,12 +6700,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbc000f0fdf1f12f99d77d398137c1751345b18c88258ce0f99b7872cf6c9bd6" dependencies = [ "assert_matches", - "borsh", + "borsh 0.9.3", "num-derive", "num-traits", "solana-program", "spl-token", - "spl-token-2022", + "spl-token-2022 0.5.0", "thiserror", ] @@ -6719,6 +6751,24 @@ dependencies = [ "thiserror", ] +[[package]] +name = "spl-token-2022" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67fcd758e8d22c5fce17315015f5ff319604d1a6e57a73c72795639dba898890" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-program", + "solana-zk-token-sdk", + "spl-memo", + "spl-token", + "thiserror", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -6774,10 +6824,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", "rustversion", - "syn 1.0.107", + "syn 1.0.109", ] [[package]] @@ -6799,7 +6849,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534d4b2d45907427fc8d2cd151465cfaee3709c4742491734bc34e5a458ebd09" dependencies = [ "bincode", - "borsh", + "borsh 0.9.3", "bytemuck", "byteorder", "quick-protobuf", @@ -6815,7 +6865,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e2d89875ff72d12ea7918d6ccd82d1ac5eab54b3a9d1bd7356fa6905801aa72" dependencies = [ "bincode", - "borsh", + "borsh 0.9.3", "byteorder", "quick-protobuf", ] @@ -6827,7 +6877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac1d68193aa1669e34d16087db0f96e6597d2f78868378aabc1387b8b29172e" dependencies = [ "bincode", - "borsh", + "borsh 0.9.3", "bytemuck", "byteorder", "quick-protobuf", @@ -6870,12 +6920,23 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", + "proc-macro2 1.0.56", + "quote 1.0.26", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +dependencies = [ + "proc-macro2 1.0.56", + "quote 1.0.26", "unicode-ident", ] @@ -6891,9 +6952,9 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", "unicode-xid 0.2.4", ] @@ -6923,16 +6984,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.3.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ "cfg-if 1.0.0", "fastrand", - "libc", - "redox_syscall 0.2.16", - "remove_dir_all", - "winapi 0.3.9", + "redox_syscall 0.3.5", + "rustix", + "windows-sys 0.45.0", ] [[package]] @@ -6961,22 +7021,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -6992,9 +7052,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.17" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" dependencies = [ "itoa", "serde", @@ -7010,9 +7070,9 @@ checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" dependencies = [ "time-core", ] @@ -7119,16 +7179,16 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] name = "tokio-native-tls" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", "tokio", @@ -7164,7 +7224,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "606f2b73660439474394432239c82249c0d45eb5f23d91f401be1e33590444a7" dependencies = [ - "futures 0.3.26", + "futures 0.3.28", "ring", "rustls", "tokio", @@ -7204,9 +7264,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" dependencies = [ "futures-core", "pin-project-lite", @@ -7259,11 +7319,23 @@ dependencies = [ "rustls", "tokio", "tokio-rustls", - "tungstenite", + "tungstenite 0.17.3", "webpki", "webpki-roots", ] +[[package]] +name = "tokio-tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" +dependencies = [ + "futures-util", + "log 0.4.17", + "tokio", + "tungstenite 0.18.0", +] + [[package]] name = "tokio-util" version = "0.6.10" @@ -7304,22 +7376,16 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772c1426ab886e7362aedf4abc9c0d1348a979517efedfc25862944d10137af0" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" dependencies = [ "serde", "serde_spanned", - "toml_datetime 0.6.1", - "toml_edit 0.19.1", + "toml_datetime", + "toml_edit", ] -[[package]] -name = "toml_datetime" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" - [[package]] name = "toml_datetime" version = "0.6.1" @@ -7331,26 +7397,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.18.1" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" dependencies = [ "indexmap", - "nom8", - "toml_datetime 0.5.1", -] - -[[package]] -name = "toml_edit" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90a238ee2e6ede22fb95350acc78e21dc40da00bb66c0334bde83de4ed89424e" -dependencies = [ - "indexmap", - "nom8", "serde", "serde_spanned", - "toml_datetime 0.6.1", + "toml_datetime", + "winnow", ] [[package]] @@ -7369,12 +7424,12 @@ dependencies = [ "h2", "http", "http-body", - "hyper 0.14.24", + "hyper 0.14.26", "hyper-timeout", "percent-encoding 2.2.0", "pin-project", - "prost 0.11.6", - "prost-derive 0.11.6", + "prost 0.11.9", + "prost-derive 0.11.9", "rustls-pemfile 1.0.2", "tokio", "tokio-rustls", @@ -7393,10 +7448,10 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" dependencies = [ - "proc-macro2 1.0.50", + "proc-macro2 1.0.56", "prost-build 0.9.0", - "quote 1.0.23", - "syn 1.0.107", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -7406,10 +7461,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" dependencies = [ "prettyplease", - "proc-macro2 1.0.50", - "prost-build 0.11.6", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "prost-build 0.11.9", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -7432,25 +7487,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "tower-http" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" -dependencies = [ - "bitflags", - "bytes 1.4.0", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", -] - [[package]] name = "tower-layer" version = "0.3.2" @@ -7482,9 +7518,9 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", ] [[package]] @@ -7547,12 +7583,22 @@ dependencies = [ ] [[package]] -name = "twoway" -version = "0.1.8" +name = "tungstenite" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" dependencies = [ - "memchr", + "base64 0.13.1", + "byteorder", + "bytes 1.4.0", + "http", + "httparse", + "log 0.4.17", + "rand 0.8.5", + "sha1 0.10.5", + "thiserror", + "url 2.3.1", + "utf-8", ] [[package]] @@ -7567,12 +7613,6 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" -[[package]] -name = "ucd-trie" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" - [[package]] name = "unicase" version = "1.4.2" @@ -7593,15 +7633,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "unicode-normalization" @@ -7642,7 +7682,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "subtle", ] @@ -7759,12 +7799,11 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi 0.3.9", "winapi-util", ] @@ -7780,30 +7819,30 @@ dependencies = [ [[package]] name = "warp" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7b8be92646fc3d18b06147664ebc5f48d222686cb11a8755e561a735aacc6d" +checksum = "27e1a710288f0f91a98dd8a74f05b76a10768db245ce183edf64dc1afdc3016c" dependencies = [ "bytes 1.4.0", "futures-channel", "futures-util", "headers", "http", - "hyper 0.14.24", + "hyper 0.14.26", "log 0.4.17", - "mime 0.3.16", + "mime 0.3.17", "mime_guess", - "multipart", + "multiparty", "percent-encoding 2.2.0", "pin-project", - "rustls-pemfile 0.2.1", + "rustls-pemfile 1.0.2", "scoped-tls", "serde", "serde_json", "serde_urlencoded", "tokio", "tokio-stream", - "tokio-tungstenite", + "tokio-tungstenite 0.18.0", "tokio-util 0.7.2", "tower-service", "tracing", @@ -7846,9 +7885,9 @@ dependencies = [ "bumpalo", "log 0.4.17", "once_cell", - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", "wasm-bindgen-shared", ] @@ -7870,7 +7909,7 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ - "quote 1.0.23", + "quote 1.0.26", "wasm-bindgen-macro-support", ] @@ -7880,9 +7919,9 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8017,19 +8056,28 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.0", +] + [[package]] name = "windows-sys" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -8038,65 +8086,140 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", ] [[package]] name = "windows-targets" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +dependencies = [ + "memchr", +] [[package]] name = "winreg" @@ -8160,7 +8283,7 @@ dependencies = [ "oid-registry", "rusticata-macros", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -8189,21 +8312,21 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "yasna" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aed2e7a52e3744ab4d0c05c20aa065258e84c49fd4226f5191b2ed29712710b4" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" dependencies = [ - "time 0.3.17", + "time 0.3.20", ] [[package]] name = "yellowstone-grpc-proto" -version = "1.0.1+solana.1.15.2" +version = "1.1.0+solana.1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f80b9fe53333bb46c7dec611089faef2553ad6ced1c6dde52d78d2eaaf1db5c" +checksum = "8c2688c6f1d930f21f580829f6f896d7d38f90d5b2272e53a8f69a82e72b656f" dependencies = [ "anyhow", - "prost 0.11.6", + "prost 0.11.9", "protobuf-src", "tonic", "tonic-build 0.8.4", @@ -8220,14 +8343,13 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.3" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.50", - "quote 1.0.23", - "syn 1.0.107", - "synstructure", + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 2.0.15", ] [[package]] @@ -8251,9 +8373,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.6+zstd.1.5.2" +version = "2.0.8+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a3f9792c0c3dc6c165840a75f47ae1f4da402c2d006881129579f6597e801b" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" dependencies = [ "cc", "libc", diff --git a/ci/rust-version.sh b/ci/rust-version.sh index 4530093..1dec5f0 100755 --- a/ci/rust-version.sh +++ b/ci/rust-version.sh @@ -23,7 +23,7 @@ if [[ -n $RUST_STABLE_VERSION ]]; then stable_version="$RUST_STABLE_VERSION" else - stable_version=1.59.0 + stable_version=1.67.0 fi if [[ -n $RUST_NIGHTLY_VERSION ]]; then @@ -91,7 +91,7 @@ export rust_nightly_docker_image=solanalabs/rust-nightly:"$nightly_version" if [[ -n $RUST_STABLE_VERSION ]]; then stable_version="$RUST_STABLE_VERSION" else - stable_version=1.59.0 + stable_version=1.67.0 fi if [[ -n $RUST_NIGHTLY_VERSION ]]; then diff --git a/connector/Cargo.toml b/connector/Cargo.toml index b44d8fa..d8bca3c 100644 --- a/connector/Cargo.toml +++ b/connector/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mango-feeds-connector" -version = "0.1.0" +version = "0.1.1" authors = ["Christian Kamm "] edition = "2021" license = "AGPL-3.0-or-later" @@ -8,15 +8,19 @@ description = "Listen to Solana account updates via geyser or websockets" [lib] +[features] +default = ["solana-1-14"] +solana-1-14 = [] +solana-1-15 = [] [dependencies] jsonrpc-core = "18.0.0" jsonrpc-core-client = { version = "18.0.0", features = ["ws", "http"] } -solana-rpc = "~1.14.9" -solana-client = "~1.14.9" -solana-account-decoder = "~1.14.9" -solana-sdk = "~1.14.9" +solana-rpc = "1.14.9" +solana-client = "1.14.9" +solana-account-decoder = "1.14.9" +solana-sdk = "1.14.9" tokio = { version = "1", features = ["full"] } rustls = "0.20.8" @@ -34,4 +38,4 @@ async-trait = "0.1" warp = "0.3" -yellowstone-grpc-proto = "1.0.1" +yellowstone-grpc-proto = "1.1.0" diff --git a/connector/src/account_write_filter.rs b/connector/src/account_write_filter.rs index 9654804..d3e24ab 100644 --- a/connector/src/account_write_filter.rs +++ b/connector/src/account_write_filter.rs @@ -5,6 +5,7 @@ use crate::{ }; use async_trait::async_trait; +use log::*; use solana_sdk::{account::WritableAccount, pubkey::Pubkey, stake_history::Epoch}; use std::{ collections::{BTreeSet, HashMap}, @@ -53,7 +54,7 @@ pub fn init( let all_queue_pks: BTreeSet = routes .iter() .flat_map(|r| r.matched_pubkeys.iter()) - .map(|pk| pk.clone()) + .copied() .collect(); // update handling thread, reads both slots and account updates @@ -61,8 +62,11 @@ pub fn init( loop { tokio::select! { Ok(account_write) = account_write_queue_receiver.recv() => { - if all_queue_pks.contains(&account_write.pubkey) { + if !all_queue_pks.contains(&account_write.pubkey) { + trace!("account write skipped {:?}", account_write.pubkey); continue; + } else { + trace!("account write processed {:?}", account_write.pubkey); } chain_data.update_account( @@ -81,7 +85,8 @@ pub fn init( ); } Ok(slot_update) = slot_queue_receiver.recv() => { - chain_data.update_slot(SlotData { + trace!("slot update processed {:?}", slot_update); + chain_data.update_slot(SlotData { slot: slot_update.slot, parent: slot_update.parent, status: slot_update.status, @@ -89,13 +94,18 @@ pub fn init( }); } + else => { + warn!("channels closed, filter shutting down pks={all_queue_pks:?}"); + break; + } + } chain_data_metrics.report(&chain_data); for route in routes.iter() { for pk in route.matched_pubkeys.iter() { - match chain_data.account(&pk) { + match chain_data.account(pk) { Ok(account_info) => { let pk_b58 = pk.to_string(); if let Some(record) = last_updated.get(&pk_b58) { @@ -104,6 +114,7 @@ pub fn init( let is_throttled = record.timestamp.elapsed() < route.timeout_interval; if is_unchanged || is_throttled { + trace!("skipped is_unchanged={is_unchanged} is_throttled={is_throttled} pk={pk_b58}"); continue; } }; @@ -120,12 +131,14 @@ pub fn init( }, ); } - Err(_skip_reason) => { + Err(skip_reason) => { + debug!("sink process skipped reason={skip_reason} pk={pk_b58}"); // todo: metrics } } } Err(_) => { + debug!("could not find pk in chain data pk={:?}", pk); // todo: metrics } } diff --git a/connector/src/chain_data.rs b/connector/src/chain_data.rs index e4a2c4d..6955e1b 100644 --- a/connector/src/chain_data.rs +++ b/connector/src/chain_data.rs @@ -144,10 +144,8 @@ impl ChainData { writes .retain(|w| w.slot == newest_rooted_write || w.slot > self.newest_rooted_slot); self.account_versions_stored += writes.len(); - self.account_bytes_stored += writes - .iter() - .map(|w| w.account.data().len()) - .fold(0, |acc, l| acc + l) + self.account_bytes_stored += + writes.iter().map(|w| w.account.data().len()).sum::() } // now it's fine to drop any slots before the new rooted head diff --git a/connector/src/grpc_plugin_source.rs b/connector/src/grpc_plugin_source.rs index 508b2b4..09de5a5 100644 --- a/connector/src/grpc_plugin_source.rs +++ b/connector/src/grpc_plugin_source.rs @@ -1,12 +1,9 @@ use futures::stream::once; use jsonrpc_core::futures::StreamExt; -use jsonrpc_core_client::transports::http; -use solana_account_decoder::{UiAccount, UiAccountEncoding}; -use solana_client::rpc_config::{RpcAccountInfoConfig, RpcProgramAccountsConfig}; -use solana_client::rpc_response::{OptionalContext, RpcKeyedAccount}; -use solana_rpc::rpc::rpc_accounts::AccountsDataClient; -use solana_sdk::{account::Account, commitment_config::CommitmentConfig, pubkey::Pubkey}; +use solana_account_decoder::UiAccount; +use solana_client::rpc_response::OptionalContext; +use solana_sdk::{account::Account, pubkey::Pubkey}; use futures::{future, future::FutureExt}; use yellowstone_grpc_proto::tonic::{ @@ -26,12 +23,12 @@ use yellowstone_grpc_proto::prelude::{ SubscribeUpdateSlotStatus, }; +use crate::snapshot::{get_snapshot_gma, get_snapshot_gpa}; use crate::FilterConfig; use crate::{ chain_data::SlotStatus, metrics::{MetricType, Metrics}, - AccountWrite, AnyhowWrap, GrpcSourceConfig, SlotUpdate, SnapshotSourceConfig, SourceConfig, - TlsConfig, + AccountWrite, GrpcSourceConfig, SlotUpdate, SnapshotSourceConfig, SourceConfig, TlsConfig, }; struct SnapshotData { @@ -43,59 +40,6 @@ enum Message { Snapshot(SnapshotData), } -async fn get_snapshot_gpa( - rpc_http_url: String, - program_id: String, -) -> anyhow::Result>> { - let rpc_client = http::connect::(&rpc_http_url) - .await - .map_err_anyhow()?; - - let account_info_config = RpcAccountInfoConfig { - encoding: Some(UiAccountEncoding::Base64), - commitment: Some(CommitmentConfig::finalized()), - data_slice: None, - min_context_slot: None, - }; - let program_accounts_config = RpcProgramAccountsConfig { - filters: None, - with_context: Some(true), - account_config: account_info_config.clone(), - }; - - info!("requesting snapshot {}", program_id); - let account_snapshot = rpc_client - .get_program_accounts(program_id.clone(), Some(program_accounts_config.clone())) - .await - .map_err_anyhow()?; - info!("snapshot received {}", program_id); - Ok(account_snapshot) -} - -async fn get_snapshot_gma( - rpc_http_url: String, - ids: Vec, -) -> anyhow::Result>>> { - let rpc_client = http::connect::(&rpc_http_url) - .await - .map_err_anyhow()?; - - let account_info_config = RpcAccountInfoConfig { - encoding: Some(UiAccountEncoding::Base64), - commitment: Some(CommitmentConfig::finalized()), - data_slice: None, - min_context_slot: None, - }; - - info!("requesting snapshot {:?}", ids); - let account_snapshot = rpc_client - .get_multiple_accounts(ids.clone(), Some(account_info_config)) - .await - .map_err_anyhow()?; - info!("snapshot received {:?}", ids); - Ok(account_snapshot) -} - async fn feed_data_geyser( grpc_config: &GrpcSourceConfig, tls_config: Option, @@ -139,6 +83,7 @@ async fn feed_data_geyser( SubscribeRequestFilterAccounts { account: filter_config.account_ids.clone(), owner: filter_config.program_ids.clone(), + filters: vec![], }, ); let mut slots = HashMap::new(); @@ -238,9 +183,9 @@ async fn feed_data_geyser( if snapshot_needed && max_rooted_slot - rooted_to_finalized_slots > first_full_slot { snapshot_needed = false; - if filter_config.account_ids.len() > 0 { + if !filter_config.account_ids.is_empty() { snapshot_gma = tokio::spawn(get_snapshot_gma(rpc_http_url.clone(), filter_config.account_ids.clone())).fuse(); - } else if filter_config.program_ids.len() > 0 { + } else if !filter_config.program_ids.is_empty() { snapshot_gpa = tokio::spawn(get_snapshot_gpa(rpc_http_url.clone(), filter_config.program_ids[0].clone())).fuse(); } } @@ -268,7 +213,7 @@ async fn feed_data_geyser( }, }; - let pubkey_bytes = Pubkey::new(&write.pubkey).to_bytes(); + let pubkey_bytes = Pubkey::try_from(write.pubkey).unwrap().to_bytes(); let write_version_mapping = pubkey_writes.entry(pubkey_bytes).or_insert(WriteVersion { global: write.write_version, slot: 1, // write version 0 is reserved for snapshots @@ -401,7 +346,7 @@ pub async fn process_events( // Make TLS config if configured let tls_config = grpc_source.tls.as_ref().map(make_tls_config).or_else(|| { - if grpc_source.connection_string.starts_with(&"https") { + if grpc_source.connection_string.starts_with("https") { Some(ClientTlsConfig::new()) } else { None @@ -499,7 +444,8 @@ pub async fn process_events( // Skip writes that a different server has already sent let pubkey_writes = latest_write.entry(info.slot).or_default(); - let pubkey_bytes = Pubkey::new(&update.pubkey).to_bytes(); + let pubkey_bytes = + Pubkey::try_from(update.pubkey.clone()).unwrap().to_bytes(); let writes = pubkey_writes.entry(pubkey_bytes).or_insert(0); if update.write_version <= *writes { continue; @@ -510,11 +456,11 @@ pub async fn process_events( // zstd_decompress(&update.data, &mut uncompressed).unwrap(); account_write_queue_sender .send(AccountWrite { - pubkey: Pubkey::new(&update.pubkey), + pubkey: Pubkey::try_from(update.pubkey.clone()).unwrap(), slot: info.slot, write_version: update.write_version, lamports: update.lamports, - owner: Pubkey::new(&update.owner), + owner: Pubkey::try_from(update.owner.clone()).unwrap(), executable: update.executable, rent_epoch: update.rent_epoch, data: update.data, diff --git a/connector/src/lib.rs b/connector/src/lib.rs index 65bad57..6614027 100644 --- a/connector/src/lib.rs +++ b/connector/src/lib.rs @@ -2,6 +2,7 @@ pub mod account_write_filter; pub mod chain_data; pub mod grpc_plugin_source; pub mod metrics; +pub mod snapshot; pub mod websocket_source; use { @@ -9,6 +10,18 @@ use { solana_sdk::{account::Account, pubkey::Pubkey}, }; +#[cfg(all(feature = "solana-1-14", feature = "solana-1-15"))] +compile_error!( + "feature \"solana-1-14\" and feature \"solana-1-15\" cannot be enabled at the same time" +); + +#[cfg(feature = "solana-1-14")] +use solana_rpc::rpc::rpc_accounts::AccountsDataClient as GetProgramAccountsClient; +#[cfg(feature = "solana-1-15")] +use solana_rpc::rpc::rpc_accounts_scan::AccountsScanClient as GetProgramAccountsClient; + +pub use solana_sdk; + trait AnyhowWrap { type Value; fn map_err_anyhow(self) -> anyhow::Result; @@ -38,7 +51,7 @@ impl AccountWrite { fn from(pubkey: Pubkey, slot: u64, write_version: u64, account: Account) -> AccountWrite { AccountWrite { pubkey, - slot: slot, + slot, write_version, lamports: account.lamports, owner: account.owner, diff --git a/connector/src/metrics.rs b/connector/src/metrics.rs index 0b27196..2a90a77 100644 --- a/connector/src/metrics.rs +++ b/connector/src/metrics.rs @@ -120,7 +120,7 @@ impl Metrics { let mut registry = self.registry.write().unwrap(); let value = registry.entry(name).or_insert(Value::U64 { value: Arc::new(atomic::AtomicU64::new(0)), - metric_type: metric_type, + metric_type, }); MetricU64 { value: match value { @@ -137,7 +137,7 @@ impl Metrics { let mut registry = self.registry.write().unwrap(); let value = registry.entry(name).or_insert(Value::I64 { value: Arc::new(atomic::AtomicI64::new(0)), - metric_type: metric_type, + metric_type, }); MetricI64 { value: match value { @@ -191,7 +191,7 @@ impl Metrics { metric_type: t, } => { let bool_to_int = if *v.lock().unwrap() { 1 } else { 0 }; - (format!("{}", bool_to_int), t.to_string()) + (format!("{bool_to_int}"), t.to_string()) } }; vec.push((name.clone(), value_str, type_str)); @@ -205,7 +205,7 @@ async fn handle_prometheus_poll(metrics: Metrics) -> Result = metrics .labels .iter() - .map(|(name, value)| format!("{}=\"{}\"", name, value)) + .map(|(name, value)| format!("{name}=\"{value}\"")) .collect(); let lines: Vec = metrics .get_registry_vec() @@ -301,12 +301,11 @@ pub fn start(config: MetricsConfig, process_name: String) -> Metrics { } => { let new_value = v.lock().unwrap(); let previous_value = if let Some(PrevValue::Bool(v)) = previous_value { - let mut prev = new_value.clone(); + let mut prev = *new_value; std::mem::swap(&mut prev, v); prev } else { - previous_values - .insert(name.clone(), PrevValue::Bool(new_value.clone())); + previous_values.insert(name.clone(), PrevValue::Bool(*new_value)); false }; if *new_value == previous_value { diff --git a/connector/src/snapshot.rs b/connector/src/snapshot.rs new file mode 100644 index 0000000..d25960f --- /dev/null +++ b/connector/src/snapshot.rs @@ -0,0 +1,104 @@ +use anyhow::anyhow; +use jsonrpc_core_client::transports::http; +use log::*; +use solana_account_decoder::{UiAccount, UiAccountEncoding}; +use solana_client::{ + rpc_config::{RpcAccountInfoConfig, RpcProgramAccountsConfig}, + rpc_response::{OptionalContext, RpcKeyedAccount}, +}; +use solana_rpc::rpc::rpc_accounts::AccountsDataClient; +use solana_sdk::{commitment_config::CommitmentConfig, slot_history::Slot}; + +use crate::{AnyhowWrap, FilterConfig}; + +pub async fn get_snapshot_gpa( + rpc_http_url: String, + program_id: String, +) -> anyhow::Result>> { + let rpc_client = http::connect::(&rpc_http_url) + .await + .map_err_anyhow()?; + + let account_info_config = RpcAccountInfoConfig { + encoding: Some(UiAccountEncoding::Base64), + commitment: Some(CommitmentConfig::finalized()), + data_slice: None, + min_context_slot: None, + }; + let program_accounts_config = RpcProgramAccountsConfig { + filters: None, + with_context: Some(true), + account_config: account_info_config.clone(), + }; + + info!("requesting snapshot {}", program_id); + let account_snapshot = rpc_client + .get_program_accounts(program_id.clone(), Some(program_accounts_config.clone())) + .await + .map_err_anyhow()?; + info!("snapshot received {}", program_id); + Ok(account_snapshot) +} + +pub async fn get_snapshot_gma( + rpc_http_url: String, + ids: Vec, +) -> anyhow::Result>>> { + let rpc_client = http::connect::(&rpc_http_url) + .await + .map_err_anyhow()?; + + let account_info_config = RpcAccountInfoConfig { + encoding: Some(UiAccountEncoding::Base64), + commitment: Some(CommitmentConfig::finalized()), + data_slice: None, + min_context_slot: None, + }; + + info!("requesting snapshot {:?}", ids); + let account_snapshot = rpc_client + .get_multiple_accounts(ids.clone(), Some(account_info_config)) + .await + .map_err_anyhow()?; + info!("snapshot received {:?}", ids); + Ok(account_snapshot) +} + +pub async fn get_snapshot( + rpc_http_url: String, + filter_config: &FilterConfig, +) -> anyhow::Result<(Slot, Vec<(String, Option)>)> { + if !filter_config.account_ids.is_empty() { + let response = + get_snapshot_gma(rpc_http_url.clone(), filter_config.account_ids.clone()).await; + if let Ok(snapshot) = response { + let accounts: Vec<(String, Option)> = filter_config + .account_ids + .iter() + .zip(snapshot.value) + .map(|x| (x.0.clone(), x.1)) + .collect(); + Ok((snapshot.context.slot, accounts)) + } else { + Err(anyhow!("invalid gma response {:?}", response)) + } + } else if !filter_config.program_ids.is_empty() { + let response = + get_snapshot_gpa(rpc_http_url.clone(), filter_config.program_ids[0].clone()).await; + if let Ok(OptionalContext::Context(snapshot)) = response { + let accounts: Vec<(String, Option)> = snapshot + .value + .iter() + .map(|x| { + let deref = x.clone(); + (deref.pubkey, Some(deref.account)) + }) + .collect(); + Ok((snapshot.context.slot, accounts)) + } else { + Err(anyhow!("invalid gpa response {:?}", response)) + } + } else { + Err(anyhow!("invalid filter_config")) + } +} diff --git a/connector/src/websocket_source.rs b/connector/src/websocket_source.rs index 0b12054..f16f591 100644 --- a/connector/src/websocket_source.rs +++ b/connector/src/websocket_source.rs @@ -1,13 +1,15 @@ use jsonrpc_core::futures::StreamExt; -use jsonrpc_core_client::transports::{http, ws}; +use jsonrpc_core_client::transports::ws; -use solana_account_decoder::UiAccountEncoding; +use solana_account_decoder::{UiAccount, UiAccountEncoding}; use solana_client::{ rpc_config::{RpcAccountInfoConfig, RpcProgramAccountsConfig}, - rpc_response::{OptionalContext, Response, RpcKeyedAccount}, + rpc_response::{Response, RpcKeyedAccount}, +}; +use solana_rpc::rpc_pubsub::RpcSolPubSubClient; +use solana_sdk::{ + account::Account, commitment_config::CommitmentConfig, pubkey::Pubkey, slot_history::Slot, }; -use solana_rpc::{rpc::rpc_accounts::AccountsDataClient, rpc_pubsub::RpcSolPubSubClient}; -use solana_sdk::{account::Account, commitment_config::CommitmentConfig, pubkey::Pubkey}; use log::*; use std::{ @@ -16,29 +18,31 @@ use std::{ time::{Duration, Instant}, }; -use crate::{chain_data::SlotStatus, AccountWrite, AnyhowWrap, SlotUpdate, SourceConfig}; +use crate::{ + chain_data::SlotStatus, snapshot::get_snapshot, AccountWrite, AnyhowWrap, FilterConfig, + SlotUpdate, SourceConfig, +}; enum WebsocketMessage { SingleUpdate(Response), - SnapshotUpdate(Response>), + SnapshotUpdate((Slot, Vec<(String, Option)>)), SlotUpdate(Arc), } // TODO: the reconnecting should be part of this async fn feed_data( config: &SourceConfig, + filter_config: &FilterConfig, sender: async_channel::Sender, ) -> anyhow::Result<()> { + debug!("feed_data {config:?}"); + let program_id = Pubkey::from_str(&config.snapshot.program_id)?; let snapshot_duration = Duration::from_secs(300); let connect = ws::try_connect::(&config.rpc_ws_url).map_err_anyhow()?; let client = connect.await.map_err_anyhow()?; - let rpc_client = http::connect::(&config.snapshot.rpc_http_url) - .await - .map_err_anyhow()?; - let account_info_config = RpcAccountInfoConfig { encoding: Some(UiAccountEncoding::Base64), commitment: Some(CommitmentConfig::processed()), @@ -59,24 +63,25 @@ async fn feed_data( .map_err_anyhow()?; let mut slot_sub = client.slots_updates_subscribe().map_err_anyhow()?; - let mut last_snapshot = Instant::now() - snapshot_duration; + let mut last_snapshot = Instant::now().checked_sub(snapshot_duration).unwrap(); loop { // occasionally cause a new snapshot to be produced // including the first time if last_snapshot + snapshot_duration <= Instant::now() { - let account_snapshot = rpc_client - .get_program_accounts( - program_id.to_string(), - Some(program_accounts_config.clone()), - ) - .await - .map_err_anyhow()?; - if let OptionalContext::Context(account_snapshot_response) = account_snapshot { + let snapshot = get_snapshot(config.snapshot.rpc_http_url.clone(), filter_config).await; + if let Ok((slot, accounts)) = snapshot { + debug!( + "fetched new snapshot slot={slot} len={:?} time={:?}", + accounts.len(), + Instant::now() - snapshot_duration - last_snapshot + ); sender - .send(WebsocketMessage::SnapshotUpdate(account_snapshot_response)) + .send(WebsocketMessage::SnapshotUpdate((slot, accounts))) .await .expect("sending must succeed"); + } else { + error!("failed to parse snapshot") } last_snapshot = Instant::now(); } @@ -115,16 +120,18 @@ async fn feed_data( // TODO: rename / split / rework pub async fn process_events( config: &SourceConfig, + filter_config: &FilterConfig, account_write_queue_sender: async_channel::Sender, slot_queue_sender: async_channel::Sender, ) { // Subscribe to program account updates websocket let (update_sender, update_receiver) = async_channel::unbounded::(); let config = config.clone(); + let filter_config = filter_config.clone(); tokio::spawn(async move { // if the websocket disconnects, we get no data in a while etc, reconnect and try again loop { - let out = feed_data(&config, update_sender.clone()); + let out = feed_data(&config, &filter_config, update_sender.clone()); let _ = out.await; } }); @@ -148,15 +155,21 @@ pub async fn process_events( .await .expect("send success"); } - WebsocketMessage::SnapshotUpdate(update) => { - trace!("snapshot update"); - for keyed_account in update.value { - let account: Account = keyed_account.account.decode().unwrap(); - let pubkey = Pubkey::from_str(&keyed_account.pubkey).unwrap(); - account_write_queue_sender - .send(AccountWrite::from(pubkey, update.context.slot, 0, account)) - .await - .expect("send success"); + WebsocketMessage::SnapshotUpdate((slot, accounts)) => { + trace!("snapshot update {slot}"); + for (pubkey, account) in accounts { + if let Some(account) = account { + let pubkey = Pubkey::from_str(&pubkey).unwrap(); + account_write_queue_sender + .send(AccountWrite::from( + pubkey, + slot, + 0, + account.decode().unwrap(), + )) + .await + .expect("send success"); + } } } WebsocketMessage::SlotUpdate(update) => { diff --git a/lib/src/postgres_types_numeric.rs b/lib/src/postgres_types_numeric.rs index c9ef94f..9620251 100644 --- a/lib/src/postgres_types_numeric.rs +++ b/lib/src/postgres_types_numeric.rs @@ -137,7 +137,7 @@ impl ToSql for SqlNumericI128 { _: &postgres_types::Type, out: &mut BytesMut, ) -> Result> { - let abs_val = self.0.abs() as u128; + let abs_val = self.0.unsigned_abs(); let decimals = if self.0 != 0 { int_log::u128(abs_val) } else { diff --git a/service-mango-crank/Cargo.toml b/service-mango-crank/Cargo.toml index e6cd3da..6ffcc58 100644 --- a/service-mango-crank/Cargo.toml +++ b/service-mango-crank/Cargo.toml @@ -28,7 +28,7 @@ tokio-tungstenite = "0.17" bytemuck = "1.7.2" mango-v4 = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } -client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } +mango-v4-client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } serum_dex = { git = "https://github.com/openbook-dex/program" } anchor-lang = "0.25.0" anchor-client = "0.25.0" diff --git a/service-mango-crank/src/blockhash_poller.rs b/service-mango-crank/src/blockhash_poller.rs index b9c6f9b..859bd8a 100644 --- a/service-mango-crank/src/blockhash_poller.rs +++ b/service-mango-crank/src/blockhash_poller.rs @@ -41,5 +41,5 @@ pub async fn init(client: Arc) -> Arc> { spawn(async move { poll_loop(blockhash_c, client).await }) }; - return blockhash; + blockhash } diff --git a/service-mango-crank/src/main.rs b/service-mango-crank/src/main.rs index 7afa1b0..e023768 100644 --- a/service-mango-crank/src/main.rs +++ b/service-mango-crank/src/main.rs @@ -10,11 +10,12 @@ use anchor_client::{ }; use anchor_lang::prelude::Pubkey; use bytemuck::bytes_of; -use client::{Client, MangoGroupContext}; use log::*; +use mango_v4_client::{Client, MangoGroupContext, TransactionBuilderConfig}; use solana_client::nonblocking::rpc_client::RpcClient; use std::{ collections::HashSet, + convert::TryFrom, fs::File, io::Read, str::FromStr, @@ -67,9 +68,11 @@ async fn main() -> anyhow::Result<()> { let client = Client::new( cluster.clone(), CommitmentConfig::processed(), - &Keypair::new(), + Arc::new(Keypair::new()), Some(rpc_timeout), - 0, + TransactionBuilderConfig { + prioritization_micro_lamports: None, + }, ); let group_pk = Pubkey::from_str(&config.mango_group).unwrap(); let group_context = @@ -77,15 +80,15 @@ async fn main() -> anyhow::Result<()> { let perp_queue_pks: Vec<_> = group_context .perp_markets - .iter() - .map(|(_, context)| (context.address, context.market.event_queue)) + .values() + .map(|context| (context.address, context.market.event_queue)) .collect(); // fetch all serum/openbook markets to find their event queues let serum_market_pks: Vec<_> = group_context .serum3_markets - .iter() - .map(|(_, context)| context.market.serum_market_external) + .values() + .map(|context| context.market.serum_market_external) .collect(); let serum_market_ais = client @@ -109,7 +112,10 @@ async fn main() -> anyhow::Result<()> { &pair.1.data[5..5 + std::mem::size_of::()], ); let event_q = market_state.event_q; - (serum_market_pks[pair.0], Pubkey::new(bytes_of(&event_q))) + ( + serum_market_pks[pair.0], + Pubkey::try_from(bytes_of(&event_q)).unwrap(), + ) }) .collect(); @@ -162,6 +168,7 @@ async fn main() -> anyhow::Result<()> { } else { websocket_source::process_events( &config.source, + &filter_config, account_write_queue_sender, slot_queue_sender, ) diff --git a/service-mango-crank/src/mango_v4_perp_crank_sink.rs b/service-mango-crank/src/mango_v4_perp_crank_sink.rs index 1d45474..061800b 100644 --- a/service-mango-crank/src/mango_v4_perp_crank_sink.rs +++ b/service-mango-crank/src/mango_v4_perp_crank_sink.rs @@ -33,7 +33,7 @@ impl MangoV4PerpCrankSink { instruction_sender: Sender>, ) -> Self { Self { - pks: pks.iter().map(|e| e.clone()).collect(), + pks: pks.iter().copied().collect(), group_pk, instruction_sender, } @@ -50,8 +50,7 @@ impl AccountWriteSink for MangoV4PerpCrankSink { // only crank if at least 1 fill or a sufficient events of other categories are buffered let contains_fill_events = event_queue .iter() - .find(|e| e.event_type == mango_v4::state::EventType::Fill as u8) - .is_some(); + .any(|e| e.event_type == mango_v4::state::EventType::Fill as u8); let has_backlog = event_queue.iter().count() > MAX_BACKLOG; if !contains_fill_events && !has_backlog { return Err("throttled".into()); @@ -78,7 +77,7 @@ impl AccountWriteSink for MangoV4PerpCrankSink { let mkt_pk = self .pks .get(pk) - .expect(&format!("{pk:?} is a known public key")); + .unwrap_or_else(|| panic!("{:?} is a known public key", pk)); let mut ams: Vec<_> = anchor_lang::ToAccountMetas::to_account_metas( &mango_v4::accounts::PerpConsumeEvents { group: self.group_pk, diff --git a/service-mango-crank/src/openbook_crank_sink.rs b/service-mango-crank/src/openbook_crank_sink.rs index f8b0d3d..0fe4f20 100644 --- a/service-mango-crank/src/openbook_crank_sink.rs +++ b/service-mango-crank/src/openbook_crank_sink.rs @@ -26,7 +26,7 @@ pub struct OpenbookCrankSink { impl OpenbookCrankSink { pub fn new(pks: Vec<(Pubkey, Pubkey)>, instruction_sender: Sender>) -> Self { Self { - pks: pks.iter().map(|e| e.clone()).collect(), + pks: pks.iter().copied().collect(), instruction_sender, } } @@ -60,8 +60,7 @@ impl AccountWriteSink for OpenbookCrankSink { // only crank if at least 1 fill or a sufficient events of other categories are buffered let contains_fill_events = events .iter() - .find(|e| matches!(e, serum_dex::state::EventView::Fill { .. })) - .is_some(); + .any(|e| matches!(e, serum_dex::state::EventView::Fill { .. })); let has_backlog = events.len() > MAX_BACKLOG; if !contains_fill_events && !has_backlog { @@ -86,7 +85,7 @@ impl AccountWriteSink for OpenbookCrankSink { let mkt_pk = self .pks .get(pk) - .expect(&format!("{pk:?} is a known public key")); + .unwrap_or_else(|| panic!("{:?} is a known public key", pk)); ams.append( &mut [mkt_pk, pk, /*coin_pk*/ pk, /*pc_pk*/ pk] .iter() diff --git a/service-mango-crank/src/transaction_builder.rs b/service-mango-crank/src/transaction_builder.rs index b05ca03..2781c6a 100644 --- a/service-mango-crank/src/transaction_builder.rs +++ b/service-mango-crank/src/transaction_builder.rs @@ -11,6 +11,7 @@ use crate::{ mango_v4_perp_crank_sink::MangoV4PerpCrankSink, openbook_crank_sink::OpenbookCrankSink, }; +#[allow(clippy::type_complexity)] pub fn init( perp_queue_pks: Vec<(Pubkey, Pubkey)>, serum_queue_pks: Vec<(Pubkey, Pubkey)>, @@ -26,10 +27,7 @@ pub fn init( let routes = vec![ AccountWriteRoute { - matched_pubkeys: serum_queue_pks - .iter() - .map(|(_, evq_pk)| evq_pk.clone()) - .collect(), + matched_pubkeys: serum_queue_pks.iter().map(|(_, evq_pk)| *evq_pk).collect(), sink: Arc::new(OpenbookCrankSink::new( serum_queue_pks, instruction_sender.clone(), @@ -37,21 +35,18 @@ pub fn init( timeout_interval: Duration::default(), }, AccountWriteRoute { - matched_pubkeys: perp_queue_pks - .iter() - .map(|(_, evq_pk)| evq_pk.clone()) - .collect(), + matched_pubkeys: perp_queue_pks.iter().map(|(_, evq_pk)| *evq_pk).collect(), sink: Arc::new(MangoV4PerpCrankSink::new( perp_queue_pks, group_pk, - instruction_sender.clone(), + instruction_sender, )), timeout_interval: Duration::default(), }, ]; let (account_write_queue_sender, slot_queue_sender) = - account_write_filter::init(routes, metrics_sender.clone())?; + account_write_filter::init(routes, metrics_sender)?; Ok(( account_write_queue_sender, diff --git a/service-mango-fills/Cargo.toml b/service-mango-fills/Cargo.toml index 0977b78..95971e8 100644 --- a/service-mango-fills/Cargo.toml +++ b/service-mango-fills/Cargo.toml @@ -40,7 +40,7 @@ postgres_query = { git = "https://github.com/nolanderc/rust-postgres-query", rev base64 = "0.21.0" mango-v4 = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } -client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } +mango-v4-client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } serum_dex = { git = "https://github.com/jup-ag/openbook-program", branch = "feat/expose-things", features = ["no-entrypoint"] } anchor-lang = "0.25.0" anchor-client = "0.25.0" diff --git a/service-mango-fills/src/fill_event_filter.rs b/service-mango-fills/src/fill_event_filter.rs index 187ff91..4ebfc6f 100644 --- a/service-mango-fills/src/fill_event_filter.rs +++ b/service-mango-fills/src/fill_event_filter.rs @@ -32,6 +32,7 @@ use service_mango_fills::*; // couldn't compile the correct struct size / math on m1, fixed sizes resolve this issue type EventQueueEvents = [AnyEvent; MAX_NUM_EVENTS as usize]; +#[allow(clippy::too_many_arguments)] fn publish_changes_perp( slot: u64, write_version: u64, @@ -46,12 +47,9 @@ fn publish_changes_perp( metric_events_change: &mut MetricU64, metric_events_drop: &mut MetricU64, metric_head_update: &mut MetricU64, - metric_head_revoke: &mut MetricU64, ) { // seq_num = N means that events (N-QUEUE_LEN) until N-1 are available - let start_seq_num = max(prev_seq_num, header.seq_num) - .checked_sub(MAX_NUM_EVENTS as u64) - .unwrap_or(0); + let start_seq_num = max(prev_seq_num, header.seq_num).saturating_sub(MAX_NUM_EVENTS as u64); let mut checkpoint = Vec::new(); let mkt_pk_string = mkt.0.to_string(); let evq_pk_string = mkt.1.event_queue.to_string(); @@ -191,7 +189,7 @@ fn publish_changes_perp( // publish a head update event if the head changed (events were consumed) if head != prev_head { metric_head_update.increment(); - + fill_update_sender .try_send(FillEventFilterMessage::HeadUpdate(HeadUpdate { head, @@ -218,6 +216,7 @@ fn publish_changes_perp( .unwrap() } +#[allow(clippy::too_many_arguments)] fn publish_changes_serum( _slot: u64, _write_version: u64, @@ -404,7 +403,7 @@ pub async fn init( async_channel::Sender, async_channel::Receiver, )> { - let metrics_sender = metrics_sender.clone(); + let metrics_sender = metrics_sender; let mut metric_events_new = metrics_sender.register_u64("fills_feed_events_new".into(), MetricType::Counter); @@ -420,8 +419,6 @@ pub async fn init( metrics_sender.register_u64("fills_feed_events_drop_serum".into(), MetricType::Counter); let mut metrics_head_update = metrics_sender.register_u64("fills_feed_head_update".into(), MetricType::Counter); - let mut metrics_head_revoke = - metrics_sender.register_u64("fills_feed_head_revoke".into(), MetricType::Counter); // The actual message may want to also contain a retry count, if it self-reinserts on failure? let (account_write_queue_sender, account_write_queue_receiver) = @@ -435,7 +432,7 @@ pub async fn init( let (fill_update_sender, fill_update_receiver) = async_channel::unbounded::(); - let account_write_queue_receiver_c = account_write_queue_receiver.clone(); + let account_write_queue_receiver_c = account_write_queue_receiver; let mut chain_cache = ChainData::new(); let mut chain_data_metrics = ChainDataMetrics::new(&metrics_sender); @@ -455,7 +452,7 @@ pub async fn init( .map(|x| x.1.event_queue) .collect(); let all_queue_pks: HashSet = - HashSet::from_iter([perp_queue_pks.clone(), spot_queue_pks.clone()].concat()); + HashSet::from_iter([perp_queue_pks, spot_queue_pks].concat()); // update handling thread, reads both sloths and account updates tokio::spawn(async move { @@ -545,7 +542,7 @@ pub async fn init( Some(prev_events) => publish_changes_perp( account_info.slot, account_info.write_version, - &mkt, + mkt, &event_queue.header, &event_queue.buf, *prev_seq_num, @@ -556,7 +553,6 @@ pub async fn init( &mut metric_events_change, &mut metrics_events_drop, &mut metrics_head_update, - &mut metrics_head_revoke, ), _ => { info!("perp_events_cache could not find {}", evq_pk_string) @@ -565,12 +561,9 @@ pub async fn init( _ => info!("seq_num/head cache could not find {}", evq_pk_string), } - seq_num_cache - .insert(evq_pk_string.clone(), event_queue.header.seq_num.clone()); - head_cache - .insert(evq_pk_string.clone(), event_queue.header.head()); - perp_events_cache - .insert(evq_pk_string.clone(), event_queue.buf.clone()); + seq_num_cache.insert(evq_pk_string.clone(), event_queue.header.seq_num); + head_cache.insert(evq_pk_string.clone(), event_queue.header.head()); + perp_events_cache.insert(evq_pk_string.clone(), event_queue.buf); } else { let inner_data = &account.data()[5..&account.data().len() - 7]; let header_span = std::mem::size_of::(); @@ -583,7 +576,7 @@ pub async fn init( let new_len = rest.len() - slop; let events = &rest[..new_len]; debug!("evq {} header_span {} header_seq_num {} header_count {} inner_len {} events_len {} sizeof Event {}", evq_pk_string, header_span, seq_num, count, inner_data.len(), events.len(), std::mem::size_of::()); - let events: &[serum_dex::state::Event] = bytemuck::cast_slice(&events); + let events: &[serum_dex::state::Event] = bytemuck::cast_slice(events); match seq_num_cache.get(&evq_pk_string) { Some(prev_seq_num) => { @@ -593,7 +586,7 @@ pub async fn init( account_info.write_version, mkt, &header, - &events, + events, *prev_seq_num, prev_events, &fill_update_sender, @@ -612,10 +605,9 @@ pub async fn init( _ => debug!("seq_num_cache could not find {}", evq_pk_string), } - seq_num_cache.insert(evq_pk_string.clone(), seq_num.clone()); + seq_num_cache.insert(evq_pk_string.clone(), seq_num); head_cache.insert(evq_pk_string.clone(), header.head as usize); - serum_events_cache - .insert(evq_pk_string.clone(), events.clone().to_vec()); + serum_events_cache.insert(evq_pk_string.clone(), events.to_vec()); } } Err(_) => debug!("chain_cache could not find {}", mkt.1.event_queue), diff --git a/service-mango-fills/src/fill_event_postgres_target.rs b/service-mango-fills/src/fill_event_postgres_target.rs index 2cca666..9fdba62 100644 --- a/service-mango-fills/src/fill_event_postgres_target.rs +++ b/service-mango-fills/src/fill_event_postgres_target.rs @@ -144,8 +144,8 @@ async fn process_update(client: &Caching, update: &FillUpdate) -> anyhow let market = &update.market_key; let seq_num = update.event.seq_num as i64; let fill_timestamp = Utc.timestamp_opt(update.event.timestamp as i64, 0).unwrap(); - let price = update.event.price as f64; - let quantity = update.event.quantity as f64; + let price = update.event.price; + let quantity = update.event.quantity; let slot = update.slot as i64; let write_version = update.write_version as i64; @@ -251,7 +251,7 @@ pub async fn init( .await; let mut iter = results.iter(); batch.retain(|_| iter.next().unwrap().is_err()); - if batch.len() > 0 { + if !batch.is_empty() { metric_retries.add(batch.len() as u64); error_count += 1; if error_count - 1 < config.retry_query_max_count { diff --git a/service-mango-fills/src/lib.rs b/service-mango-fills/src/lib.rs index b05d7ad..fdb223f 100644 --- a/service-mango-fills/src/lib.rs +++ b/service-mango-fills/src/lib.rs @@ -1,4 +1,4 @@ -use std::convert::identity; +use std::convert::{identity, TryFrom}; use anchor_lang::prelude::Pubkey; use bytemuck::cast_slice; @@ -110,15 +110,15 @@ impl FillEvent { event_type: FillEventType::Perp, maker: event.maker.to_string(), taker: event.taker.to_string(), - taker_side: taker_side, + taker_side, timestamp: event.timestamp, seq_num: event.seq_num, maker_client_order_id: event.maker_client_order_id, taker_client_order_id: event.taker_client_order_id, maker_fee: event.maker_fee, taker_fee: event.taker_fee, - price: price, - quantity: quantity, + price, + quantity, } } @@ -167,8 +167,8 @@ impl FillEvent { None => 0u64, }; - let base_multiplier = 10u64.pow(config.base_decimals.into()) as u64; - let quote_multiplier = 10u64.pow(config.quote_decimals.into()) as u64; + let base_multiplier = 10u64.pow(config.base_decimals.into()); + let quote_multiplier = 10u64.pow(config.quote_decimals.into()); let (price, quantity) = match maker_side { OrderbookSide::Bid => { @@ -197,9 +197,13 @@ impl FillEvent { FillEvent { event_type: FillEventType::Spot, - maker: Pubkey::new(cast_slice(&identity(maker_owner) as &[_])).to_string(), - taker: Pubkey::new(cast_slice(&identity(taker_owner) as &[_])).to_string(), - taker_side: taker_side, + maker: Pubkey::try_from(cast_slice(&identity(maker_owner) as &[_])) + .unwrap() + .to_string(), + taker: Pubkey::try_from(cast_slice(&identity(taker_owner) as &[_])) + .unwrap() + .to_string(), + taker_side, timestamp, seq_num, maker_client_order_id, diff --git a/service-mango-fills/src/main.rs b/service-mango-fills/src/main.rs index f9963d7..7494ce0 100644 --- a/service-mango-fills/src/main.rs +++ b/service-mango-fills/src/main.rs @@ -6,7 +6,6 @@ use anchor_client::{ Cluster, }; use anchor_lang::prelude::Pubkey; -use client::{Client, MangoGroupContext}; use futures_channel::mpsc::{unbounded, UnboundedSender}; use futures_util::{ future::{self, Ready}, @@ -19,6 +18,7 @@ use mango_feeds_lib::{ websocket_source, FilterConfig, MarketConfig, MetricsConfig, PostgresConfig, SourceConfig, StatusResponse, }; +use mango_v4_client::{Client, MangoGroupContext, TransactionBuilderConfig}; use service_mango_fills::{Command, FillCheckpoint, FillEventFilterMessage, FillEventType}; use std::{ collections::{HashMap, HashSet}, @@ -147,7 +147,7 @@ fn handle_commands( checkpoint_map: CheckpointMap, market_ids: HashMap, ) -> Ready> { - let msg_str = msg.clone().into_text().unwrap(); + let msg_str = msg.into_text().unwrap(); let command: Result = serde_json::from_str(&msg_str); let mut peers = peer_map.lock().unwrap(); let peer = peers.get_mut(&addr).expect("peer should be in map"); @@ -156,42 +156,77 @@ fn handle_commands( Ok(Command::Subscribe(cmd)) => { let mut wildcard = true; // DEPRECATED - match cmd.market_id { - Some(market_id) => { - wildcard = false; - match market_ids.get(&market_id) { - None => { - let res = StatusResponse { - success: false, - message: "market not found", - }; - peer.sender - .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) - .unwrap(); - return future::ok(()); - } - _ => {} - } - let subscribed = peer.market_subscriptions.insert(market_id.clone()); - - let res = if subscribed { - StatusResponse { - success: true, - message: "subscribed", - } - } else { - StatusResponse { - success: false, - message: "already subscribed", - } + if let Some(market_id) = cmd.market_id { + wildcard = false; + if market_ids.get(&market_id).is_none() { + let res = StatusResponse { + success: false, + message: "market not found", }; peer.sender .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) .unwrap(); + return future::ok(()); + } + let subscribed = peer.market_subscriptions.insert(market_id.clone()); - if subscribed { + let res = if subscribed { + StatusResponse { + success: true, + message: "subscribed", + } + } else { + StatusResponse { + success: false, + message: "already subscribed", + } + }; + peer.sender + .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) + .unwrap(); + + if subscribed { + let checkpoint_map = checkpoint_map.lock().unwrap(); + let checkpoint = checkpoint_map.get(&market_id); + match checkpoint { + Some(checkpoint) => { + peer.sender + .unbounded_send(Message::Text( + serde_json::to_string(&checkpoint).unwrap(), + )) + .unwrap(); + } + None => info!( + "no checkpoint available on client subscription for market {}", + &market_id + ), + }; + } + } + if let Some(cmd_market_ids) = cmd.market_ids { + wildcard = false; + for market_id in cmd_market_ids { + if market_ids.get(&market_id).is_none() { + let res = StatusResponse { + success: false, + message: &format!("market {} not found", &market_id), + }; + peer.sender + .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) + .unwrap(); + return future::ok(()); + } + if peer.market_subscriptions.insert(market_id.clone()) { let checkpoint_map = checkpoint_map.lock().unwrap(); let checkpoint = checkpoint_map.get(&market_id); + let res = StatusResponse { + success: true, + message: &format!("subscribed to market {}", &market_id), + }; + + peer.sender + .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) + .unwrap(); match checkpoint { Some(checkpoint) => { peer.sender @@ -207,73 +242,21 @@ fn handle_commands( }; } } - None => {} } - match cmd.market_ids { - Some(cmd_market_ids) => { - wildcard = false; - for market_id in cmd_market_ids { - match market_ids.get(&market_id) { - None => { - let res = StatusResponse { - success: false, - message: &format!("market {} not found", &market_id), - }; - peer.sender - .unbounded_send(Message::Text( - serde_json::to_string(&res).unwrap(), - )) - .unwrap(); - return future::ok(()); - } - _ => {} - } - if peer.market_subscriptions.insert(market_id.clone()) { - let checkpoint_map = checkpoint_map.lock().unwrap(); - let checkpoint = checkpoint_map.get(&market_id); - let res = StatusResponse { - success: true, - message: &format!("subscribed to market {}", &market_id), - }; + if let Some(account_ids) = cmd.account_ids { + wildcard = false; + for account_id in account_ids { + if peer.account_subscriptions.insert(account_id.clone()) { + let res = StatusResponse { + success: true, + message: &format!("subscribed to account {}", &account_id), + }; - peer.sender - .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) - .unwrap(); - match checkpoint { - Some(checkpoint) => { - peer.sender - .unbounded_send(Message::Text( - serde_json::to_string(&checkpoint).unwrap(), - )) - .unwrap(); - } - None => info!( - "no checkpoint available on client subscription for market {}", - &market_id - ), - }; - } + peer.sender + .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) + .unwrap(); } } - None => {} - } - match cmd.account_ids { - Some(account_ids) => { - wildcard = false; - for account_id in account_ids { - if peer.account_subscriptions.insert(account_id.clone()) { - let res = StatusResponse { - success: true, - message: &format!("subscribed to account {}", &account_id), - }; - - peer.sender - .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) - .unwrap(); - } - } - } - None => {} } if wildcard { for (market_id, market_name) in market_ids { @@ -377,9 +360,11 @@ async fn main() -> anyhow::Result<()> { let client = Client::new( cluster.clone(), CommitmentConfig::processed(), - &Keypair::new(), + Arc::new(Keypair::new()), Some(rpc_timeout), - 0, + TransactionBuilderConfig { + prioritization_micro_lamports: None, + }, ); let group_context = Arc::new( MangoGroupContext::new_from_rpc( @@ -392,8 +377,8 @@ async fn main() -> anyhow::Result<()> { // todo: reload markets at intervals let perp_market_configs: Vec<(Pubkey, MarketConfig)> = group_context .perp_markets - .iter() - .map(|(_, context)| { + .values() + .map(|context| { let quote_decimals = match group_context.tokens.get(&context.market.settle_token_index) { Some(token) => token.decimals, @@ -417,8 +402,8 @@ async fn main() -> anyhow::Result<()> { let spot_market_configs: Vec<(Pubkey, MarketConfig)> = group_context .serum3_markets - .iter() - .map(|(_, context)| { + .values() + .map(|context| { let base_decimals = match group_context.tokens.get(&context.market.base_token_index) { Some(token) => token.decimals, None => panic!("token not found for market"), // todo: default? @@ -445,14 +430,14 @@ async fn main() -> anyhow::Result<()> { let perp_queue_pks: Vec<(Pubkey, Pubkey)> = group_context .perp_markets - .iter() - .map(|(_, context)| (context.address, context.market.event_queue)) + .values() + .map(|context| (context.address, context.market.event_queue)) .collect(); let _a: Vec<(String, String)> = group_context .serum3_markets - .iter() - .map(|(_, context)| { + .values() + .map(|context| { ( context.market.serum_market_external.to_string(), context.market.name().to_owned(), @@ -461,8 +446,8 @@ async fn main() -> anyhow::Result<()> { .collect(); let b: Vec<(String, String)> = group_context .perp_markets - .iter() - .map(|(_, context)| { + .values() + .map(|context| { ( context.address.to_string(), context.market.name().to_owned(), @@ -524,11 +509,10 @@ async fn main() -> anyhow::Result<()> { } // send fills to db let update_c = update.clone(); - match (postgres_update_sender.clone(), update_c.event.event_type) { - (Some(sender), FillEventType::Perp) => { - sender.send(update_c).await.unwrap(); - } - _ => {} + if let (Some(sender), FillEventType::Perp) = + (postgres_update_sender.clone(), update_c.event.event_type) + { + sender.send(update_c).await.unwrap(); } } FillEventFilterMessage::Checkpoint(checkpoint) => { @@ -641,6 +625,7 @@ async fn main() -> anyhow::Result<()> { } else { websocket_source::process_events( &config.source, + &filter_config, account_write_queue_sender, slot_queue_sender, ) diff --git a/service-mango-orderbook/Cargo.toml b/service-mango-orderbook/Cargo.toml index 1eb10f9..3ca7951 100644 --- a/service-mango-orderbook/Cargo.toml +++ b/service-mango-orderbook/Cargo.toml @@ -29,7 +29,7 @@ itertools = "0.10.5" solana-sdk = "~1.14.9" mango-v4 = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } -client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } +mango-v4-client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } serum_dex = { git = "https://github.com/jup-ag/openbook-program", branch = "feat/expose-things", features = ["no-entrypoint"] } anchor-lang = "0.25.0" anchor-client = "0.25.0" diff --git a/service-mango-orderbook/src/main.rs b/service-mango-orderbook/src/main.rs index 78c2d08..cd45610 100644 --- a/service-mango-orderbook/src/main.rs +++ b/service-mango-orderbook/src/main.rs @@ -5,13 +5,13 @@ use anchor_client::{ Cluster, }; use anchor_lang::prelude::Pubkey; -use client::{Client, MangoGroupContext}; use futures_channel::mpsc::{unbounded, UnboundedSender}; use futures_util::{ future::{self, Ready}, pin_mut, SinkExt, StreamExt, TryStreamExt, }; use log::*; +use mango_v4_client::{Client, MangoGroupContext, TransactionBuilderConfig}; use std::{ collections::{HashMap, HashSet}, fs::File, @@ -157,25 +157,22 @@ fn handle_commands( checkpoint_map: CheckpointMap, market_ids: HashMap, ) -> Ready> { - let msg_str = msg.clone().into_text().unwrap(); + let msg_str = msg.into_text().unwrap(); let command: Result = serde_json::from_str(&msg_str); let mut peers = peer_map.lock().unwrap(); let peer = peers.get_mut(&addr).expect("peer should be in map"); match command { Ok(Command::Subscribe(cmd)) => { - let market_id = cmd.clone().market_id; - match market_ids.get(&market_id) { - None => { - let res = StatusResponse { - success: false, - message: "market not found", - }; - peer.sender - .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) - .unwrap(); - return future::ok(()); - } - _ => {} + let market_id = cmd.market_id; + if market_ids.get(&market_id).is_none() { + let res = StatusResponse { + success: false, + message: "market not found", + }; + peer.sender + .unbounded_send(Message::Text(serde_json::to_string(&res).unwrap())) + .unwrap(); + return future::ok(()); } let subscribed = peer.subscriptions.insert(market_id.clone()); @@ -286,9 +283,11 @@ async fn main() -> anyhow::Result<()> { let client = Client::new( cluster.clone(), CommitmentConfig::processed(), - &Keypair::new(), + Arc::new(Keypair::new()), Some(rpc_timeout), - 0, + TransactionBuilderConfig { + prioritization_micro_lamports: None, + }, ); let group_context = Arc::new( MangoGroupContext::new_from_rpc( @@ -301,8 +300,8 @@ async fn main() -> anyhow::Result<()> { // todo: reload markets at intervals let market_configs: Vec<(Pubkey, MarketConfig)> = group_context .perp_markets - .iter() - .map(|(_, context)| { + .values() + .map(|context| { let quote_decimals = match group_context.tokens.get(&context.market.settle_token_index) { Some(token) => token.decimals, @@ -326,8 +325,8 @@ async fn main() -> anyhow::Result<()> { let serum_market_configs: Vec<(Pubkey, MarketConfig)> = group_context .serum3_markets - .iter() - .map(|(_, context)| { + .values() + .map(|context| { let base_decimals = match group_context.tokens.get(&context.market.base_token_index) { Some(token) => token.decimals, None => panic!("token not found for market"), // todo: default? @@ -432,17 +431,18 @@ async fn main() -> anyhow::Result<()> { .map(|c| c.connection_string.clone()) .collect::() ); + + let relevant_pubkeys = [market_configs.clone()] + .concat() + .iter() + .flat_map(|m| [m.1.bids.to_string(), m.1.asks.to_string()]) + .collect(); + let filter_config = FilterConfig { + program_ids: vec![], + account_ids: relevant_pubkeys, + }; let use_geyser = true; if use_geyser { - let relevant_pubkeys = [market_configs.clone()] - .concat() - .iter() - .flat_map(|m| [m.1.bids.to_string(), m.1.asks.to_string()]) - .collect(); - let filter_config = FilterConfig { - program_ids: vec![], - account_ids: relevant_pubkeys, - }; grpc_plugin_source::process_events( &config.source, &filter_config, @@ -455,6 +455,7 @@ async fn main() -> anyhow::Result<()> { } else { websocket_source::process_events( &config.source, + &filter_config, account_write_queue_sender, slot_queue_sender, ) diff --git a/service-mango-orderbook/src/orderbook_filter.rs b/service-mango-orderbook/src/orderbook_filter.rs index 9ad8e15..a2c8cb2 100644 --- a/service-mango-orderbook/src/orderbook_filter.rs +++ b/service-mango-orderbook/src/orderbook_filter.rs @@ -31,6 +31,7 @@ use std::{ time::{SystemTime, UNIX_EPOCH}, }; +#[allow(clippy::too_many_arguments)] fn publish_changes( slot: u64, write_version: u64, @@ -80,11 +81,11 @@ fn publish_changes( "C {} {} -> {}", current_order[0], previous_order[1], current_order[1] ); - update.push(current_order.clone()); + update.push(*current_order); } None => { info!("A {} {}", current_order[0], current_order[1]); - update.push(current_order.clone()) + update.push(*current_order) } } } @@ -108,14 +109,14 @@ fn publish_changes( None => info!("other bookside not in cache"), } - if update.len() == 0 { + if update.is_empty() { return; } orderbook_update_sender .try_send(OrderbookFilterMessage::Update(OrderbookUpdate { market: mkt.0.to_string(), - side: side.clone(), + side, update, slot, write_version, @@ -133,8 +134,6 @@ pub async fn init( async_channel::Sender, async_channel::Receiver, )> { - let metrics_sender = metrics_sender.clone(); - let mut metric_events_new = metrics_sender.register_u64("orderbook_updates".into(), MetricType::Counter); @@ -150,8 +149,6 @@ pub async fn init( let (fill_update_sender, fill_update_receiver) = async_channel::unbounded::(); - let account_write_queue_receiver_c = account_write_queue_receiver.clone(); - let mut chain_cache = ChainData::new(); let mut chain_data_metrics = ChainDataMetrics::new(&metrics_sender); let mut bookside_cache: HashMap> = HashMap::new(); @@ -168,7 +165,7 @@ pub async fn init( tokio::spawn(async move { loop { tokio::select! { - Ok(account_write) = account_write_queue_receiver_c.recv() => { + Ok(account_write) = account_write_queue_receiver.recv() => { if !relevant_pubkeys.contains(&account_write.pubkey) { continue; } @@ -256,9 +253,7 @@ pub async fn init( mkt.1.quote_lot_size, ), base_lots_to_ui_perp( - group - .map(|(_, quantity)| quantity) - .fold(0, |acc, x| acc + x), + group.map(|(_, quantity)| quantity).sum(), mkt.1.base_decimals, mkt.1.base_lot_size, ), @@ -275,7 +270,7 @@ pub async fn init( mkt, side, &bookside, - &old_bookside, + old_bookside, other_bookside, &fill_update_sender, &mut metric_events_new, @@ -330,9 +325,7 @@ pub async fn init( mkt.1.quote_decimals, ), base_lots_to_ui( - group - .map(|(_, quantity)| quantity) - .fold(0, |acc, x| acc + x), + group.map(|(_, quantity)| quantity).sum(), mkt.1.base_decimals, mkt.1.base_lot_size, ), diff --git a/service-mango-pnl/Cargo.toml b/service-mango-pnl/Cargo.toml index 6279586..3edae2e 100644 --- a/service-mango-pnl/Cargo.toml +++ b/service-mango-pnl/Cargo.toml @@ -23,6 +23,6 @@ tokio = { version = "1", features = ["full"] } serde = "1.0.130" serde_derive = "1.0.130" mango-v4 = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } -client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } +mango-v4-client = { git = "https://github.com/blockworks-foundation/mango-v4", branch = "dev" } anchor-lang = "0.25.0" anchor-client = "0.25.0" diff --git a/service-mango-pnl/src/main.rs b/service-mango-pnl/src/main.rs index e841e52..f829f6b 100644 --- a/service-mango-pnl/src/main.rs +++ b/service-mango-pnl/src/main.rs @@ -16,10 +16,12 @@ use { use anchor_client::Cluster; use anchor_lang::Discriminator; -use client::{chain_data, health_cache, AccountFetcher, Client, MangoGroupContext}; use fixed::types::I80F48; use mango_feeds_lib::metrics::*; use mango_v4::state::{MangoAccount, MangoAccountValue, PerpMarketIndex}; +use mango_v4_client::{ + chain_data, health_cache, AccountFetcher, Client, MangoGroupContext, TransactionBuilderConfig, +}; use solana_sdk::commitment_config::CommitmentConfig; use solana_sdk::{account::ReadableAccount, signature::Keypair}; #[derive(Clone, Debug, Deserialize)] @@ -67,7 +69,7 @@ async fn compute_pnl( } else { return None; }; - Some((pp.market_index, settleable_pnl)) + Some((pp.market_index, I80F48::from_bits(settleable_pnl.to_bits()))) }) .collect::>(); @@ -126,7 +128,7 @@ fn start_pnl_updater( // Alternatively, we could prepare the sorted and limited lists for each // market here. That would be faster and cause less contention on the pnl_data // lock, but it looks like it's very far from being an issue. - pnls.push((pubkey.clone(), pnl_vals)); + pnls.push((*pubkey, pnl_vals)); } *pnl_data.write().unwrap() = pnls; @@ -248,9 +250,11 @@ async fn main() -> anyhow::Result<()> { let client = Client::new( cluster.clone(), commitment, - &Keypair::new(), + Arc::new(Keypair::new()), Some(rpc_timeout), - 0, + TransactionBuilderConfig { + prioritization_micro_lamports: None, + }, ); let group_context = Arc::new( MangoGroupContext::new_from_rpc(