From cb122ff85c31acb25b7d9ef1a734c67f0889471b Mon Sep 17 00:00:00 2001 From: 0xKitsune <0xKitsune@protonmail.com> Date: Sun, 26 Mar 2023 01:54:28 -0400 Subject: [PATCH 1/8] added price calc test --- src/pool/uniswap_v2.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/pool/uniswap_v2.rs b/src/pool/uniswap_v2.rs index 3efb588b..94587b26 100644 --- a/src/pool/uniswap_v2.rs +++ b/src/pool/uniswap_v2.rs @@ -420,6 +420,25 @@ mod tests { assert_eq!(pool.fee, 300); } + #[test] + fn test_calculate_price() { + let token_a = H160::from_str("0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270").unwrap(); + let token_b = H160::from_str("0x8f18dc399594b451eda8c5da02d0563c0b2d0f16").unwrap(); + let x = UniswapV2Pool { + address: H160::from_str("0x652a7b75c229850714d4a11e856052aac3e9b065").unwrap(), + token_a, + token_a_decimals: 18, + token_b, + token_b_decimals: 9, + reserve_0: 23595096345912178729927, + reserve_1: 154664232014390554564, + fee: 300, + }; + + dbg!(x.calculate_price(token_a).unwrap()); + dbg!(x.calculate_price(token_b).unwrap()); + } + #[tokio::test] async fn test_calculate_price_64_x_64() { let rpc_endpoint = From f2ee480758352b6534a576897b3418b5ac55f9d9 Mon Sep 17 00:00:00 2001 From: LeytonTaylor Date: Mon, 27 Mar 2023 17:47:44 -0500 Subject: [PATCH 2/8] Bandaid patch for evaluation to 0 in q64_to_f64 --- Cargo.lock | 28 ++++++++++++++++++++++++++++ Cargo.toml | 1 + src/pool/fixed_point_math.rs | 10 ++++------ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ca409bd3..a4c38270 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -122,6 +122,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "az" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" + [[package]] name = "base16ct" version = "0.2.0" @@ -615,6 +621,7 @@ dependencies = [ "indicatif 0.17.2", "num-bigfloat", "regex", + "rug", "serde", "serde_json", "thiserror", @@ -1383,6 +1390,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gmp-mpfr-sys" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b560063e2ffa8ce9c2ef9bf487f2944a97deca5b8de0b5bcd0ae6437ef8b75f" +dependencies = [ + "libc", + "windows-sys 0.42.0", +] + [[package]] name = "group" version = "0.13.0" @@ -2471,6 +2488,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "rug" +version = "1.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555e8b44763d034526db899c88cd56ccc4486cd38b444c8aa0e79d4e70ae5a34" +dependencies = [ + "az", + "gmp-mpfr-sys", + "libc", +] + [[package]] name = "ruint" version = "1.7.0" diff --git a/Cargo.toml b/Cargo.toml index ae46cb99..f5cf2437 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,3 +16,4 @@ serde = "1.0.145" num-bigfloat = "1.6.2" uniswap_v3_math = "0.2.26" regex = "1.7.1" +rug = "1.19" diff --git a/src/pool/fixed_point_math.rs b/src/pool/fixed_point_math.rs index ee024938..46b92fdb 100644 --- a/src/pool/fixed_point_math.rs +++ b/src/pool/fixed_point_math.rs @@ -1,6 +1,5 @@ use ethers::types::U256; - -use crate::errors::ArithmeticError; +use num_bigfloat::BigFloat; pub const U256_0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: U256 = U256([ 18446744073709551615, @@ -110,8 +109,7 @@ pub fn div_uu(x: U256, y: U256) -> Result { //Converts a Q64 fixed point to a Q16 fixed point -> f64 pub fn q64_to_f64(x: u128) -> f64 { - let decimals = ((x & 0xFFFFFFFFFFFFFFFF_u128) >> 48) as u32; - let integers = ((x >> 64) & 0xFFFF) as u32; - - ((integers << 16) + decimals) as f64 / 2_f64.powf(16.0) + let shift = 2_u128.pow(64); + BigFloat::from(x).div(&BigFloat::from(shift)).to_f64() } + From f9cf8822a8c5b62a3c720b1e2c19f692303c653e Mon Sep 17 00:00:00 2001 From: 0xOsiris Date: Mon, 27 Mar 2023 18:14:59 -0500 Subject: [PATCH 3/8] Added tests on q64_to_f64 v2 price conversion --- .github/workflows/rust.yml | 2 +- Cargo.lock | 408 +++++++++++------------- Cargo.toml | 2 +- README.md | 2 +- examples/create-new-pool.rs | 2 +- examples/generate-mainnet-checkpoint.rs | 2 +- examples/sync-pairs-with-throttle.rs | 2 +- examples/sync-pairs.rs | 2 +- src/dex/mod.rs | 2 +- src/pool/fixed_point_math.rs | 2 +- src/pool/uniswap_v2.rs | 31 +- src/pool/uniswap_v3.rs | 18 +- 12 files changed, 239 insertions(+), 236 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 64f2f895..0a37530e 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -9,7 +9,7 @@ on: - development env: - ETHEREUM_RPC_ENDPOINT: ${{ secrets.ETHEREUM_RPC_ENDPOINT }} + MAINNET_RPC_ENDPOINT: ${{ secrets.MAINNET_RPC_ENDPOINT }} name: Continuous integration diff --git a/Cargo.lock b/Cargo.lock index a4c38270..ee2dc2ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,7 +37,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" dependencies = [ "cfg-if", - "cipher 0.4.3", + "cipher 0.4.4", "cpufeatures", ] @@ -52,9 +52,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.69" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" [[package]] name = "arrayvec" @@ -79,7 +79,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.9", + "syn 2.0.10", ] [[package]] @@ -122,12 +122,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "az" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" - [[package]] name = "base16ct" version = "0.2.0" @@ -148,9 +142,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 = "bech32" @@ -221,9 +215,9 @@ dependencies = [ [[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", ] @@ -239,9 +233,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "byte-slice-cast" @@ -287,9 +281,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" +checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2" dependencies = [ "serde", ] @@ -319,9 +313,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" dependencies = [ "jobserver", ] @@ -334,9 +328,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[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 = [ "num-integer", "num-traits", @@ -353,9 +347,9 @@ dependencies = [ [[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", @@ -475,9 +469,9 @@ dependencies = [ [[package]] name = "console" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b6515d269224923b26b5febea2ed42b2d5f2ce37284a4dd670fedd6cb8347a" +checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" dependencies = [ "encode_unicode", "lazy_static", @@ -515,9 +509,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", ] @@ -608,7 +602,7 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher 0.4.3", + "cipher 0.4.4", ] [[package]] @@ -618,10 +612,9 @@ dependencies = [ "async-trait", "ethers", "futures", - "indicatif 0.17.2", + "indicatif 0.17.3", "num-bigfloat", "regex", - "rug", "serde", "serde_json", "thiserror", @@ -685,7 +678,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", ] @@ -731,9 +724,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "elliptic-curve" @@ -756,9 +749,9 @@ dependencies = [ [[package]] name = "ena" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e5d13ca2353ab7d0230988629def93914a8c4015f621f9b13ed2955614731d" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" dependencies = [ "log", ] @@ -771,9 +764,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ "cfg-if", ] @@ -956,7 +949,7 @@ dependencies = [ "serde_json", "syn 1.0.109", "tokio", - "toml 0.7.3", + "toml", "url", "walkdir", ] @@ -1232,9 +1225,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" dependencies = [ "futures-channel", "futures-core", @@ -1263,9 +1256,9 @@ checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" [[package]] name = "futures-executor" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" dependencies = [ "futures-core", "futures-task", @@ -1350,9 +1343,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 = [ "typenum", "version_check", @@ -1390,16 +1383,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gmp-mpfr-sys" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b560063e2ffa8ce9c2ef9bf487f2944a97deca5b8de0b5bcd0ae6437ef8b75f" -dependencies = [ - "libc", - "windows-sys 0.42.0", -] - [[package]] name = "group" version = "0.13.0" @@ -1413,9 +1396,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" dependencies = [ "bytes", "fnv", @@ -1447,9 +1430,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -1469,6 +1452,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 = "hex" version = "0.4.3" @@ -1495,9 +1484,9 @@ dependencies = [ [[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", "fnv", @@ -1529,9 +1518,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" dependencies = [ "bytes", "futures-channel", @@ -1620,9 +1609,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[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", "hashbrown", @@ -1634,7 +1623,7 @@ version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d207dc617c7a380ab07ff572a6e52fa202a2a8f355860ac9c38e23f8196be1b" dependencies = [ - "console 0.15.4", + "console 0.15.5", "lazy_static", "number_prefix", "regex", @@ -1642,11 +1631,11 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.2" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4295cbb7573c16d310e99e713cf9e75101eb190ab31fccd35f2d2691b4352b19" +checksum = "cef509aa9bc73864d6756f0d34d35504af3cf0844373afe9b8669a5b8005a729" dependencies = [ - "console 0.15.4", + "console 0.15.5", "number_prefix", "portable-atomic", "unicode-width", @@ -1672,19 +1661,32 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.4" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e" +checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" dependencies = [ + "hermit-abi 0.3.1", "libc", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] name = "ipnet" -version = "2.7.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917e" +checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" + +[[package]] +name = "is-terminal" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" +dependencies = [ + "hermit-abi 0.3.1", + "io-lifetimes", + "rustix", + "windows-sys 0.45.0", +] [[package]] name = "itertools" @@ -1697,9 +1699,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 = "jobserver" @@ -1712,9 +1714,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -1744,15 +1746,15 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.19.8" +version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30455341b0e18f276fa64540aff54deafb54c589de6aca68659c63dd2d5d823" +checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87" dependencies = [ "ascii-canvas", - "atty", "bit-set", "diff", "ena", + "is-terminal", "itertools", "lalrpop-util", "petgraph", @@ -1767,9 +1769,9 @@ dependencies = [ [[package]] name = "lalrpop-util" -version = "0.19.8" +version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf796c978e9b4d983414f4caedc9273aa33ee214c5b887bd55fde84c85d2dc4" +checksum = "e5c1f7869c94d214466c5fd432dfed12c379fd87786768d36455892d46b18edd" dependencies = [ "regex", ] @@ -1782,9 +1784,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" [[package]] name = "linux-raw-sys" @@ -1837,9 +1839,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 = "miniz_oxide" @@ -1852,14 +1854,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", "wasi", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -1974,15 +1976,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 = "parity-scale-codec" -version = "3.2.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a" +checksum = "637935964ff85a605d114591d4d2c13c5d1ba2806dae97cea6bf180238a749ac" dependencies = [ "arrayvec", "bitvec 1.0.1", @@ -1994,9 +1996,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" +checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2016,15 +2018,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -2241,13 +2243,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "thiserror", - "toml 0.5.10", + "toml_edit", ] [[package]] @@ -2276,9 +2277,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.53" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73" +checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" dependencies = [ "unicode-ident", ] @@ -2378,9 +2379,9 @@ dependencies = [ [[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", @@ -2389,15 +2390,15 @@ 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" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[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 = [ "base64 0.21.0", "bytes", @@ -2488,17 +2489,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "rug" -version = "1.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555e8b44763d034526db899c88cd56ccc4486cd38b444c8aa0e79d4e70ae5a34" -dependencies = [ - "az", - "gmp-mpfr-sys", - "libc", -] - [[package]] name = "ruint" version = "1.7.0" @@ -2534,23 +2524,23 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.7" +version = "0.36.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03" +checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] name = "rustls" -version = "0.20.7" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" dependencies = [ "log", "ring", @@ -2560,24 +2550,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" dependencies = [ - "base64 0.13.1", + "base64 0.21.0", ] [[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 = "salsa20" @@ -2585,7 +2575,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ - "cipher 0.4.3", + "cipher 0.4.4", ] [[package]] @@ -2599,9 +2589,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608" +checksum = "61471dff9096de1d8b2319efed7162081e96793f5ebb147e50db10d50d648a4d" dependencies = [ "cfg-if", "derive_more", @@ -2611,9 +2601,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "303959cf613a6f6efd19ed4b4ad5bf79966a13352716299ad532cfb115f4205c" +checksum = "219580e803a66b3f05761fd06f1f879a872444e49ce23f73694d26e5a954c7e6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2665,9 +2655,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" dependencies = [ "serde", ] @@ -2680,35 +2670,35 @@ checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" [[package]] name = "send_wrapper" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.152" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.10", ] [[package]] name = "serde_json" -version = "1.0.91" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" dependencies = [ "itoa", "ryu", @@ -2783,9 +2773,9 @@ dependencies = [ [[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", ] @@ -2808,9 +2798,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[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", ] @@ -2823,9 +2813,9 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[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", @@ -2868,9 +2858,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d69e88b23f23030bf4d0e9ca7b07434f70e1c1f4d3ca7e93ce958b373654d9f" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", @@ -2957,9 +2947,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.9" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da4a3c17e109f700685ec577c0f85efd9b19bcf15c913985f14dc1ac01775aa" +checksum = "5aad1363ed6d37b84299588d62d3a7d95b5a5c2d9aad5c85609fda12afaa1f40" dependencies = [ "proc-macro2", "quote", @@ -3023,22 +3013,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", "quote", - "syn 1.0.109", + "syn 2.0.10", ] [[package]] @@ -3077,20 +3067,19 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.26.0" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" dependencies = [ "autocfg", "bytes", "libc", - "memchr", "mio", "num_cpus", "parking_lot", @@ -3103,13 +3092,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.8.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.10", ] [[package]] @@ -3141,9 +3130,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" dependencies = [ "bytes", "futures-core", @@ -3153,15 +3142,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.3" @@ -3246,9 +3226,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" @@ -3291,15 +3271,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +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" @@ -3312,9 +3292,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" @@ -3380,12 +3360,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[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", "winapi-util", ] @@ -3407,9 +3386,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3417,9 +3396,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", "log", @@ -3432,9 +3411,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" dependencies = [ "cfg-if", "js-sys", @@ -3444,9 +3423,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3454,9 +3433,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", @@ -3467,15 +3446,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", @@ -3632,16 +3611,17 @@ dependencies = [ [[package]] name = "ws_stream_wasm" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ca1ab42f5afed7fc332b22b6e932ca5414b209465412c8cdf0ad23bc0de645" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" dependencies = [ "async_io_stream", "futures", "js-sys", + "log", "pharos", "rustc_version", - "send_wrapper 0.5.0", + "send_wrapper 0.6.0", "thiserror", "wasm-bindgen", "wasm-bindgen-futures", @@ -3665,9 +3645,9 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zeroize" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" [[package]] name = "zip" diff --git a/Cargo.toml b/Cargo.toml index f5cf2437..00417e37 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,4 +16,4 @@ serde = "1.0.145" num-bigfloat = "1.6.2" uniswap_v3_math = "0.2.26" regex = "1.7.1" -rug = "1.19" + diff --git a/README.md b/README.md index 7f276a81..2bfd081b 100644 --- a/README.md +++ b/README.md @@ -16,5 +16,5 @@ cargo doc --open ## Running Examples -To run any of the examples, first set a local environment variable called `ETHEREUM_RPC_ENDPOINT`. Then you can simply run `cargo run --example `. +To run any of the examples, first set a local environment variable called `MAINNET_RPC_ENDPOINT`. Then you can simply run `cargo run --example `. diff --git a/examples/create-new-pool.rs b/examples/create-new-pool.rs index dc607463..23ebe376 100644 --- a/examples/create-new-pool.rs +++ b/examples/create-new-pool.rs @@ -11,7 +11,7 @@ use damms::{dex::DexVariant, pool::Pool}; async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); //UniswapV2 usdc weth pool on Eth mainnet diff --git a/examples/generate-mainnet-checkpoint.rs b/examples/generate-mainnet-checkpoint.rs index f608d9fe..6e19a28d 100644 --- a/examples/generate-mainnet-checkpoint.rs +++ b/examples/generate-mainnet-checkpoint.rs @@ -14,7 +14,7 @@ use damms::{ async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let dexes = vec![ diff --git a/examples/sync-pairs-with-throttle.rs b/examples/sync-pairs-with-throttle.rs index 6f3da718..6117af9a 100644 --- a/examples/sync-pairs-with-throttle.rs +++ b/examples/sync-pairs-with-throttle.rs @@ -14,7 +14,7 @@ use damms::{ async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let dexes = vec![ diff --git a/examples/sync-pairs.rs b/examples/sync-pairs.rs index cac4a914..0f861d5b 100644 --- a/examples/sync-pairs.rs +++ b/examples/sync-pairs.rs @@ -14,7 +14,7 @@ use damms::{ async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let dexes = vec![ diff --git a/src/dex/mod.rs b/src/dex/mod.rs index 4d16751c..4ac1308a 100644 --- a/src/dex/mod.rs +++ b/src/dex/mod.rs @@ -471,7 +471,7 @@ mod tests { let provider = Arc::new( Provider::::try_from( - env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not initialize provider"), + env::var("MAINNET_RPC_ENDPOINT").expect("Could not initialize provider"), ) .unwrap(), ); diff --git a/src/pool/fixed_point_math.rs b/src/pool/fixed_point_math.rs index 46b92fdb..8d1c4ef1 100644 --- a/src/pool/fixed_point_math.rs +++ b/src/pool/fixed_point_math.rs @@ -1,6 +1,6 @@ use ethers::types::U256; use num_bigfloat::BigFloat; - +use crate::pool::ArithmeticError; pub const U256_0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: U256 = U256([ 18446744073709551615, 18446744073709551615, diff --git a/src/pool/uniswap_v2.rs b/src/pool/uniswap_v2.rs index 94587b26..fea98f2e 100644 --- a/src/pool/uniswap_v2.rs +++ b/src/pool/uniswap_v2.rs @@ -363,7 +363,7 @@ mod tests { #[tokio::test] async fn test_get_new_from_address() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV2Pool::new_from_address( @@ -393,7 +393,7 @@ mod tests { #[tokio::test] async fn test_get_pool_data() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV2Pool { @@ -421,7 +421,7 @@ mod tests { } #[test] - fn test_calculate_price() { + fn test_calculate_price_edge_case() { let token_a = H160::from_str("0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270").unwrap(); let token_b = H160::from_str("0x8f18dc399594b451eda8c5da02d0563c0b2d0f16").unwrap(); let x = UniswapV2Pool { @@ -438,11 +438,34 @@ mod tests { dbg!(x.calculate_price(token_a).unwrap()); dbg!(x.calculate_price(token_b).unwrap()); } + #[tokio::test] + async fn test_calculate_price() { + let rpc_endpoint = + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); + + let mut pool = UniswapV2Pool { + address: H160::from_str("0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc").unwrap(), + ..Default::default() + }; + + pool.get_pool_data(middleware.clone()).await.unwrap(); + + pool.reserve_0 = 47092140895915; + pool.reserve_1 = 28396598565590008529300; + + let price_a_64_x = pool.calculate_price(pool.token_a).unwrap(); + + let price_b_64_x = pool.calculate_price(pool.token_b).unwrap(); + + assert_eq!(1658.3725965327264, price_b_64_x); //No precision loss: 30591574867092394336528 / 2**64 + assert_eq!(0.0006030007985483893, price_a_64_x); //Precision loss: 11123401407064628 / 2**64 + } #[tokio::test] async fn test_calculate_price_64_x_64() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV2Pool { diff --git a/src/pool/uniswap_v3.rs b/src/pool/uniswap_v3.rs index fc111476..b2db9e03 100644 --- a/src/pool/uniswap_v3.rs +++ b/src/pool/uniswap_v3.rs @@ -857,7 +857,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_0() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -899,7 +899,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_1() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -941,7 +941,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_2() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -983,7 +983,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_3() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -1028,7 +1028,7 @@ mod test { #[tokio::test] async fn test_get_new_from_address() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -1060,7 +1060,7 @@ mod test { #[tokio::test] async fn test_get_pool_data() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { @@ -1092,7 +1092,7 @@ mod test { #[tokio::test] async fn test_sync_pool() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { @@ -1108,7 +1108,7 @@ mod test { #[tokio::test] async fn test_calculate_virtual_reserves() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { @@ -1154,7 +1154,7 @@ mod test { #[tokio::test] async fn test_calculate_price() { let rpc_endpoint = - std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); + std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { From bb3c2a3fc19009389674ddd10121f90e411f7129 Mon Sep 17 00:00:00 2001 From: 0xOsiris Date: Mon, 27 Mar 2023 18:16:35 -0500 Subject: [PATCH 4/8] fmt --- src/pool/fixed_point_math.rs | 3 +-- src/pool/uniswap_v2.rs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pool/fixed_point_math.rs b/src/pool/fixed_point_math.rs index 8d1c4ef1..363f3500 100644 --- a/src/pool/fixed_point_math.rs +++ b/src/pool/fixed_point_math.rs @@ -1,6 +1,6 @@ +use crate::pool::ArithmeticError; use ethers::types::U256; use num_bigfloat::BigFloat; -use crate::pool::ArithmeticError; pub const U256_0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: U256 = U256([ 18446744073709551615, 18446744073709551615, @@ -112,4 +112,3 @@ pub fn q64_to_f64(x: u128) -> f64 { let shift = 2_u128.pow(64); BigFloat::from(x).div(&BigFloat::from(shift)).to_f64() } - diff --git a/src/pool/uniswap_v2.rs b/src/pool/uniswap_v2.rs index fea98f2e..1a7ca91a 100644 --- a/src/pool/uniswap_v2.rs +++ b/src/pool/uniswap_v2.rs @@ -438,7 +438,7 @@ mod tests { dbg!(x.calculate_price(token_a).unwrap()); dbg!(x.calculate_price(token_b).unwrap()); } - #[tokio::test] + #[tokio::test] async fn test_calculate_price() { let rpc_endpoint = std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); From 8c959e949a52afcf70c56bc9befa2dcf7bc486f0 Mon Sep 17 00:00:00 2001 From: 0xOsiris Date: Mon, 27 Mar 2023 18:22:38 -0500 Subject: [PATCH 5/8] Renamed rpc env variables to match git token --- .github/workflows/rust.yml | 2 +- README.md | 2 +- examples/create-new-pool.rs | 2 +- examples/generate-mainnet-checkpoint.rs | 2 +- examples/sync-pairs-with-throttle.rs | 2 +- examples/sync-pairs.rs | 2 +- src/dex/mod.rs | 2 +- src/pool/uniswap_v2.rs | 8 ++++---- src/pool/uniswap_v3.rs | 18 +++++++++--------- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 0a37530e..64f2f895 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -9,7 +9,7 @@ on: - development env: - MAINNET_RPC_ENDPOINT: ${{ secrets.MAINNET_RPC_ENDPOINT }} + ETHEREUM_RPC_ENDPOINT: ${{ secrets.ETHEREUM_RPC_ENDPOINT }} name: Continuous integration diff --git a/README.md b/README.md index 2bfd081b..7f276a81 100644 --- a/README.md +++ b/README.md @@ -16,5 +16,5 @@ cargo doc --open ## Running Examples -To run any of the examples, first set a local environment variable called `MAINNET_RPC_ENDPOINT`. Then you can simply run `cargo run --example `. +To run any of the examples, first set a local environment variable called `ETHEREUM_RPC_ENDPOINT`. Then you can simply run `cargo run --example `. diff --git a/examples/create-new-pool.rs b/examples/create-new-pool.rs index 23ebe376..dc607463 100644 --- a/examples/create-new-pool.rs +++ b/examples/create-new-pool.rs @@ -11,7 +11,7 @@ use damms::{dex::DexVariant, pool::Pool}; async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); //UniswapV2 usdc weth pool on Eth mainnet diff --git a/examples/generate-mainnet-checkpoint.rs b/examples/generate-mainnet-checkpoint.rs index 6e19a28d..f608d9fe 100644 --- a/examples/generate-mainnet-checkpoint.rs +++ b/examples/generate-mainnet-checkpoint.rs @@ -14,7 +14,7 @@ use damms::{ async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let dexes = vec![ diff --git a/examples/sync-pairs-with-throttle.rs b/examples/sync-pairs-with-throttle.rs index 6117af9a..6f3da718 100644 --- a/examples/sync-pairs-with-throttle.rs +++ b/examples/sync-pairs-with-throttle.rs @@ -14,7 +14,7 @@ use damms::{ async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let dexes = vec![ diff --git a/examples/sync-pairs.rs b/examples/sync-pairs.rs index 0f861d5b..cac4a914 100644 --- a/examples/sync-pairs.rs +++ b/examples/sync-pairs.rs @@ -14,7 +14,7 @@ use damms::{ async fn main() -> Result<(), Box> { //Add rpc endpoint here: let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let provider = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let dexes = vec![ diff --git a/src/dex/mod.rs b/src/dex/mod.rs index 4ac1308a..4d16751c 100644 --- a/src/dex/mod.rs +++ b/src/dex/mod.rs @@ -471,7 +471,7 @@ mod tests { let provider = Arc::new( Provider::::try_from( - env::var("MAINNET_RPC_ENDPOINT").expect("Could not initialize provider"), + env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not initialize provider"), ) .unwrap(), ); diff --git a/src/pool/uniswap_v2.rs b/src/pool/uniswap_v2.rs index 1a7ca91a..bacca112 100644 --- a/src/pool/uniswap_v2.rs +++ b/src/pool/uniswap_v2.rs @@ -363,7 +363,7 @@ mod tests { #[tokio::test] async fn test_get_new_from_address() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV2Pool::new_from_address( @@ -393,7 +393,7 @@ mod tests { #[tokio::test] async fn test_get_pool_data() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV2Pool { @@ -441,7 +441,7 @@ mod tests { #[tokio::test] async fn test_calculate_price() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV2Pool { @@ -465,7 +465,7 @@ mod tests { #[tokio::test] async fn test_calculate_price_64_x_64() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV2Pool { diff --git a/src/pool/uniswap_v3.rs b/src/pool/uniswap_v3.rs index b2db9e03..fc111476 100644 --- a/src/pool/uniswap_v3.rs +++ b/src/pool/uniswap_v3.rs @@ -857,7 +857,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_0() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -899,7 +899,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_1() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -941,7 +941,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_2() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -983,7 +983,7 @@ mod test { #[tokio::test] async fn test_simulate_swap_3() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -1028,7 +1028,7 @@ mod test { #[tokio::test] async fn test_get_new_from_address() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let pool = UniswapV3Pool::new_from_address( @@ -1060,7 +1060,7 @@ mod test { #[tokio::test] async fn test_get_pool_data() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { @@ -1092,7 +1092,7 @@ mod test { #[tokio::test] async fn test_sync_pool() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { @@ -1108,7 +1108,7 @@ mod test { #[tokio::test] async fn test_calculate_virtual_reserves() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { @@ -1154,7 +1154,7 @@ mod test { #[tokio::test] async fn test_calculate_price() { let rpc_endpoint = - std::env::var("MAINNET_RPC_ENDPOINT").expect("Could not get MAINNET_RPC_ENDPOINT"); + std::env::var("ETHEREUM_RPC_ENDPOINT").expect("Could not get ETHEREUM_RPC_ENDPOINT"); let middleware = Arc::new(Provider::::try_from(rpc_endpoint).unwrap()); let mut pool = UniswapV3Pool { From 33844039968cebe1a5a49f113e86cb37c816431a Mon Sep 17 00:00:00 2001 From: 0xOsiris Date: Mon, 27 Mar 2023 18:23:18 -0500 Subject: [PATCH 6/8] fmt --- src/pool/uniswap_v2.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pool/uniswap_v2.rs b/src/pool/uniswap_v2.rs index bacca112..ebcfb5be 100644 --- a/src/pool/uniswap_v2.rs +++ b/src/pool/uniswap_v2.rs @@ -461,7 +461,6 @@ mod tests { assert_eq!(1658.3725965327264, price_b_64_x); //No precision loss: 30591574867092394336528 / 2**64 assert_eq!(0.0006030007985483893, price_a_64_x); //Precision loss: 11123401407064628 / 2**64 } - #[tokio::test] async fn test_calculate_price_64_x_64() { let rpc_endpoint = From 6918084d89df2c7ab96511b071f8a24b728b8b78 Mon Sep 17 00:00:00 2001 From: LeytonTaylor Date: Tue, 28 Mar 2023 13:19:02 -0500 Subject: [PATCH 7/8] Added pub const 2**64 in q64_to_f64 --- .env | 1 + src/pool/fixed_point_math.rs | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 00000000..1c7fa530 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +ETHEREUM_MAINNET_ENDPOINT="https://eth-mainnet.g.alchemy.com/v2/ODm6-zPdUFKWJb6xRHMvE7cXNJvIKp3j" \ No newline at end of file diff --git a/src/pool/fixed_point_math.rs b/src/pool/fixed_point_math.rs index 363f3500..06516ae5 100644 --- a/src/pool/fixed_point_math.rs +++ b/src/pool/fixed_point_math.rs @@ -10,6 +10,7 @@ pub const U256_0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: U256 = U256([ pub const U256_0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: U256 = U256([18446744073709551615, 18446744073709551615, 0, 0]); +pub const U128_0X10000000000000000: u128 = 18446744073709551616; pub const U256_0X100000000: U256 = U256([4294967296, 0, 0, 0]); pub const U256_0X10000: U256 = U256([65536, 0, 0, 0]); @@ -109,6 +110,7 @@ pub fn div_uu(x: U256, y: U256) -> Result { //Converts a Q64 fixed point to a Q16 fixed point -> f64 pub fn q64_to_f64(x: u128) -> f64 { - let shift = 2_u128.pow(64); - BigFloat::from(x).div(&BigFloat::from(shift)).to_f64() + BigFloat::from(x) + .div(&BigFloat::from(U128_0X10000000000000000)) + .to_f64() } From c8cc8278101dcfe6dec07158e4fa961332dab797 Mon Sep 17 00:00:00 2001 From: LeytonTaylor Date: Tue, 28 Mar 2023 13:19:31 -0500 Subject: [PATCH 8/8] Added .env to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index fd760ce9..57b3a85d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target /contracts/out /cache +.env \ No newline at end of file