From df9e939d8318d9e87484e19e3ea27e1258e5ec79 Mon Sep 17 00:00:00 2001 From: "C.Lee Taylor" <47312074+leet4tari@users.noreply.github.com> Date: Thu, 10 Oct 2024 06:09:11 +0200 Subject: [PATCH 1/8] chore(ci): include working cross-compile for linux platforms for opencl (#20) Cross compile of linux binaries for opencl feature for x86_64, arm64 and riscv64. --- .github/workflows/build_binaries.json | 6 +- .github/workflows/build_binaries.yml | 22 +- Cargo.lock | 1067 ++++++++++++++----------- Cargo.toml | 7 +- Cross.toml | 59 ++ rust-toolchain.toml | 2 + 6 files changed, 668 insertions(+), 495 deletions(-) create mode 100644 Cross.toml create mode 100644 rust-toolchain.toml diff --git a/.github/workflows/build_binaries.json b/.github/workflows/build_binaries.json index 5363223..38509c9 100644 --- a/.github/workflows/build_binaries.json +++ b/.github/workflows/build_binaries.json @@ -18,7 +18,7 @@ { "name": "opencl-linux-arm64", "runs-on": "ubuntu-latest", - "rust": "stable", + "rust": "nightly-2024-07-07", "target": "aarch64-unknown-linux-gnu", "cross": true, "features": "opencl3", @@ -28,7 +28,7 @@ { "name": "opencl-linux-riscv64", "runs-on": "ubuntu-latest", - "rust": "stable", + "rust": "nightly-2024-07-07", "target": "riscv64gc-unknown-linux-gnu", "cross": true, "features": "opencl3", @@ -37,7 +37,7 @@ }, { "name": "opencl-macos-x86_64", - "runs-on": "macos-12", + "runs-on": "macos-13", "rust": "stable", "target": "x86_64-apple-darwin", "cross": false, diff --git a/.github/workflows/build_binaries.yml b/.github/workflows/build_binaries.yml index e7e9e3c..c0b201c 100644 --- a/.github/workflows/build_binaries.yml +++ b/.github/workflows/build_binaries.yml @@ -249,7 +249,7 @@ jobs: --target ${{ matrix.builds.target }} \ --features "${{ matrix.builds.features }}" \ ${{ matrix.builds.flags }} \ - --bin xtrgpuminer + --bin ${{ env.TS_FILENAME }} - name: Build release binaries if: ${{ false }} @@ -257,6 +257,24 @@ jobs: run: | ls -alhtR target/${{ matrix.builds.target }}/${{ env.TS_BUILD }}/ + - name: Sign Windows files with Trusted Certificate + if: ${{ ( startsWith(runner.os,'Windows') ) && ( env.AZURE_TENANT_ID != '' ) }} + env: + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + uses: azure/trusted-signing-action@v0.4.0 + with: + azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} + azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} + azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} + endpoint: https://eus.codesigning.azure.net/ + trusted-signing-account-name: Tari + certificate-profile-name: Tarilabs + files-folder: ${{ github.workspace }}/target/${{ matrix.builds.target }}/${{ env.TS_BUILD }}/ + files-folder-filter: exe,dll + file-digest: SHA256 + timestamp-rfc3161: http://timestamp.acs.microsoft.com + timestamp-digest: SHA256 + - name: Archive and Checksum Binaries shell: bash run: | @@ -265,7 +283,7 @@ jobs: cd "$GITHUB_WORKSPACE/DIST" echo "Copying files for ${{ env.BINFILE }} to $(pwd)" ls -alht "$GITHUB_WORKSPACE/target/${{ matrix.builds.target }}/${{ env.TS_BUILD }}/" - cp -v $GITHUB_WORKSPACE/target/${{ matrix.builds.target }}/${{ env.TS_BUILD }}/xtrgpuminer${TS_EXT} . + cp -v $GITHUB_WORKSPACE/target/${{ matrix.builds.target }}/${{ env.TS_BUILD }}/${{ env.TS_FILENAME }}${TS_EXT} . echo "Archive ${{ env.BINFILE }} too ${{ env.BINFILE }}.zip" echo "Compute files shasum" ${SHARUN} * >> "${{ env.BINFILE }}.sha256" diff --git a/Cargo.lock b/Cargo.lock index eed49c1..75fd926 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] @@ -169,11 +169,22 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -182,74 +193,52 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] -name = "autocfg" -version = "1.3.0" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] -name = "axum" -version = "0.6.20" +name = "autocfg" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" -dependencies = [ - "async-trait", - "axum-core 0.3.4", - "bitflags 1.3.2", - "bytes 1.7.2", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.30", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper 0.1.2", - "tower 0.4.13", - "tower-layer", - "tower-service", -] +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", - "axum-core 0.4.4", + "axum-core", "bytes 1.7.2", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.4.1", + "hyper", "hyper-util", "itoa", "matchit", @@ -272,32 +261,15 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes 1.7.2", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "mime", - "rustversion", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes 1.7.2", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", @@ -320,7 +292,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -464,7 +436,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "syn_derive", ] @@ -524,9 +496,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.21" +version = "1.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" dependencies = [ "shlex", ] @@ -588,7 +560,7 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -645,9 +617,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.18" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -655,9 +627,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.18" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -674,7 +646,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -793,7 +765,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -863,7 +835,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -874,7 +846,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -946,7 +918,7 @@ dependencies = [ "dsl_auto_type", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -966,7 +938,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" dependencies = [ - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1018,7 +990,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1035,14 +1007,14 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] name = "enum-as-inner" -version = "0.4.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.79", ] [[package]] @@ -1149,9 +1121,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1164,9 +1136,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1174,15 +1146,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1191,38 +1163,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures 0.1.31", "futures-channel", @@ -1276,9 +1248,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glam" @@ -1308,17 +1280,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ + "atomic-waker", "bytes 1.7.2", "fnv", "futures-core", "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.5.0", + "http", + "indexmap 2.6.0", "slab", "tokio", "tokio-util 0.7.12", @@ -1333,9 +1305,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "hdrhistogram" @@ -1386,6 +1358,77 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "hickory-client" +version = "0.25.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90078f18923f3a7663f62fbd43c4030de758d16efae0071cdf3ef9c6358cbf49" +dependencies = [ + "cfg-if", + "data-encoding", + "futures-channel", + "futures-util", + "hickory-proto", + "once_cell", + "radix_trie", + "rand", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "hickory-proto" +version = "0.25.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8270a1857fb962b9914aafd46a89a187a4e63d0eb4190c327e7c7b8256a2d055" +dependencies = [ + "async-recursion", + "async-trait", + "bitflags 2.6.0", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand", + "ring", + "rustls", + "rustls-pemfile", + "thiserror", + "time", + "tinyvec", + "tokio", + "tokio-rustls", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.25.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c110355b5703070d9e29c344d79818a7cde3de9c27fc35750defea6074b0ad" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto", + "ipconfig", + "lru-cache", + "once_cell", + "parking_lot", + "rand", + "resolv-conf", + "smallvec", + "thiserror", + "tokio", + "tracing", +] + [[package]] name = "home" version = "0.5.9" @@ -1396,14 +1439,14 @@ dependencies = [ ] [[package]] -name = "http" -version = "0.2.12" +name = "hostname" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" dependencies = [ - "bytes 1.7.2", - "fnv", - "itoa", + "libc", + "match_cfg", + "winapi", ] [[package]] @@ -1417,17 +1460,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes 1.7.2", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -1435,7 +1467,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes 1.7.2", - "http 1.1.0", + "http", ] [[package]] @@ -1446,16 +1478,16 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes 1.7.2", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1469,30 +1501,6 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" -[[package]] -name = "hyper" -version = "0.14.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" -dependencies = [ - "bytes 1.7.2", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.4.1" @@ -1502,43 +1510,48 @@ dependencies = [ "bytes 1.7.2", "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", "pin-project-lite", "smallvec", "tokio", + "want", ] [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ - "hyper 0.14.30", + "hyper", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", + "tower-service", ] [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes 1.7.2", + "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "hyper 1.4.1", + "http", + "http-body", + "hyper", "pin-project-lite", + "socket2", "tokio", - "tower 0.4.13", "tower-service", + "tracing", ] [[package]] @@ -1570,17 +1583,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "0.5.0" @@ -1632,12 +1634,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] @@ -1655,11 +1657,23 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2", + "widestring", + "windows-sys 0.48.0", + "winreg", +] + [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is_terminal_polyfill" @@ -1685,6 +1699,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -1717,9 +1740,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "liblmdb-sys" @@ -1758,6 +1781,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -1830,10 +1859,19 @@ dependencies = [ ] [[package]] -name = "matches" -version = "0.1.10" +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "matchit" @@ -1903,16 +1941,16 @@ dependencies = [ [[package]] name = "minotari_app_grpc" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "argon2", "base64 0.13.1", "borsh", "chrono", "log", - "prost", - "prost-types", + "prost 0.13.3", + "prost-types 0.13.3", "rand", "rcgen", "subtle", @@ -1933,8 +1971,8 @@ dependencies = [ [[package]] name = "minotari_ledger_wallet_common" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "bs58 0.5.1", ] @@ -2023,6 +2061,12 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +[[package]] +name = "multimap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" + [[package]] name = "newtype-ops" version = "0.1.4" @@ -2078,7 +2122,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2112,18 +2156,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" dependencies = [ "critical-section", "portable-atomic", @@ -2209,7 +2253,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -2258,7 +2302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.5.0", + "indexmap 2.6.0", ] [[package]] @@ -2272,11 +2316,11 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ - "pin-project-internal 1.1.5", + "pin-project-internal 1.1.6", ] [[package]] @@ -2292,13 +2336,13 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2344,9 +2388,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d30538d42559de6b034bc76fd6dd4c38961b1ee5c6c56e3808c50128fdbc22ce" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -2373,6 +2417,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "prettyplease" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +dependencies = [ + "proc-macro2", + "syn 2.0.79", +] + [[package]] name = "primitive-types" version = "0.12.2" @@ -2430,9 +2484,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -2444,7 +2498,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" dependencies = [ "bytes 1.7.2", - "prost-derive", + "prost-derive 0.11.9", +] + +[[package]] +name = "prost" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +dependencies = [ + "bytes 1.7.2", + "prost-derive 0.13.3", ] [[package]] @@ -2458,17 +2522,38 @@ dependencies = [ "itertools 0.10.5", "lazy_static", "log", - "multimap", + "multimap 0.8.3", "petgraph", - "prettyplease", - "prost", - "prost-types", + "prettyplease 0.1.25", + "prost 0.11.9", + "prost-types 0.11.9", "regex", "syn 1.0.109", "tempfile", "which", ] +[[package]] +name = "prost-build" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" +dependencies = [ + "bytes 1.7.2", + "heck 0.5.0", + "itertools 0.13.0", + "log", + "multimap 0.10.0", + "once_cell", + "petgraph", + "prettyplease 0.2.22", + "prost 0.13.3", + "prost-types 0.13.3", + "regex", + "syn 2.0.79", + "tempfile", +] + [[package]] name = "prost-derive" version = "0.11.9" @@ -2482,15 +2567,43 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "prost-derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.79", +] + [[package]] name = "prost-types" version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" dependencies = [ - "prost", + "prost 0.11.9", +] + +[[package]] +name = "prost-types" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +dependencies = [ + "prost 0.13.3", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quote" version = "1.0.37" @@ -2559,9 +2672,9 @@ dependencies = [ [[package]] name = "randomx-rs" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14fb999f322669968fd0e80aeca5cb91e7a817a94ebf2b0fcd345a4a7c695203" +checksum = "9abb8f2aa3432700c2b64a67406ac0da4956d78991f50559509cecc2b6abf249" dependencies = [ "bitflags 1.3.2", "libc", @@ -2570,21 +2683,21 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.11.3" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" +checksum = "48406db8ac1f3cbc7dcdb56ec355343817958a356ff430259bb07baf7607e1e1" dependencies = [ "pem", - "ring 0.16.20", + "ring", "time", "yasna", ] [[package]] name = "redox_syscall" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -2602,9 +2715,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -2614,9 +2727,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -2625,23 +2738,18 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] -name = "ring" -version = "0.16.20" +name = "resolv-conf" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", + "hostname", + "quick-error", ] [[package]] @@ -2654,8 +2762,8 @@ dependencies = [ "cfg-if", "getrandom", "libc", - "spin 0.9.8", - "untrusted 0.9.0", + "spin", + "untrusted", "windows-sys 0.52.0", ] @@ -2695,32 +2803,43 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.9" +version = "0.23.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" +checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" dependencies = [ "log", - "ring 0.16.20", - "sct", - "webpki", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", ] [[package]] name = "rustls-pemfile" -version = "0.3.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee86d63972a7c661d1536fefe8c3c8407321c3df668891286de28abcd087360" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.13.1", + "rustls-pki-types", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls-pki-types" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "base64 0.21.7", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -2750,16 +2869,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", -] - [[package]] name = "sealed" version = "0.5.0" @@ -2769,7 +2878,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2805,7 +2914,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -2838,14 +2947,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -2868,7 +2977,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "itoa", "ryu", "serde", @@ -2974,12 +3083,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -3074,9 +3177,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -3092,7 +3195,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3158,8 +3261,8 @@ dependencies = [ [[package]] name = "tari_common" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "anyhow", "config", @@ -3168,7 +3271,7 @@ dependencies = [ "log4rs", "multiaddr", "path-clean", - "prost-build", + "prost-build 0.11.9", "serde", "serde_json", "serde_yaml", @@ -3182,8 +3285,8 @@ dependencies = [ [[package]] name = "tari_common_sqlite" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "diesel", "diesel_migrations", @@ -3196,8 +3299,8 @@ dependencies = [ [[package]] name = "tari_common_types" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "base64 0.21.7", "bitflags 2.6.0", @@ -3222,8 +3325,8 @@ dependencies = [ [[package]] name = "tari_comms" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "anyhow", "async-trait", @@ -3235,15 +3338,15 @@ dependencies = [ "data-encoding", "derivative", "digest", - "futures 0.3.30", + "futures 0.3.31", "lmdb-zero", "log", "log-mdc", "multiaddr", "nom", "once_cell", - "pin-project 1.1.5", - "prost", + "pin-project 1.1.6", + "prost 0.13.3", "rand", "serde", "serde_derive", @@ -3266,8 +3369,8 @@ dependencies = [ [[package]] name = "tari_comms_dht" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "anyhow", "bitflags 2.6.0", @@ -3278,11 +3381,11 @@ dependencies = [ "diesel", "diesel_migrations", "digest", - "futures 0.3.30", + "futures 0.3.31", "log", "log-mdc", "pin-project 0.4.30", - "prost", + "prost 0.13.3", "rand", "serde", "tari_common", @@ -3301,8 +3404,8 @@ dependencies = [ [[package]] name = "tari_comms_rpc_macros" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "proc-macro2", "quote", @@ -3311,8 +3414,8 @@ dependencies = [ [[package]] name = "tari_core" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "async-trait", "bincode", @@ -3327,7 +3430,7 @@ dependencies = [ "digest", "dirs-next", "fs2", - "futures 0.3.30", + "futures 0.3.31", "hex", "integer-encoding", "lmdb-zero", @@ -3340,7 +3443,7 @@ dependencies = [ "num-traits", "once_cell", "primitive-types", - "prost", + "prost 0.13.3", "rand", "randomx-rs", "serde", @@ -3402,13 +3505,13 @@ dependencies = [ [[package]] name = "tari_features" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" [[package]] name = "tari_hashing" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "borsh", "digest", @@ -3417,8 +3520,8 @@ dependencies = [ [[package]] name = "tari_key_manager" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "argon2", "async-trait", @@ -3431,7 +3534,7 @@ dependencies = [ "diesel", "diesel_migrations", "digest", - "futures 0.3.30", + "futures 0.3.31", "log", "rand", "serde", @@ -3450,8 +3553,8 @@ dependencies = [ [[package]] name = "tari_max_size" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "borsh", "serde", @@ -3461,8 +3564,8 @@ dependencies = [ [[package]] name = "tari_mmr" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "borsh", "digest", @@ -3475,15 +3578,17 @@ dependencies = [ [[package]] name = "tari_p2p" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "anyhow", "fs2", - "futures 0.3.30", + "futures 0.3.31", + "hickory-client", + "hickory-resolver", "lmdb-zero", "log", - "prost", + "prost 0.13.3", "rand", "rustls", "serde", @@ -3499,14 +3604,13 @@ dependencies = [ "tokio", "tokio-stream", "tower 0.4.13", - "trust-dns-client", - "webpki", + "webpki-roots", ] [[package]] name = "tari_script" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "blake2", "borsh", @@ -3523,12 +3627,12 @@ dependencies = [ [[package]] name = "tari_service_framework" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "anyhow", "async-trait", - "futures 0.3.30", + "futures 0.3.31", "log", "tari_shutdown", "thiserror", @@ -3538,16 +3642,16 @@ dependencies = [ [[package]] name = "tari_shutdown" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ - "futures 0.3.30", + "futures 0.3.31", ] [[package]] name = "tari_storage" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ "bincode", "lmdb-zero", @@ -3558,10 +3662,10 @@ dependencies = [ [[package]] name = "tari_test_utils" -version = "1.5.1-pre.0" -source = "git+http://github.com/tari-project/tari#fd41ba490470ff43fb3dc7e31fc6fc77266f264e" +version = "1.6.0-pre.0" +source = "git+http://github.com/tari-project/tari#b3ea19ae09bfcac007b3491ce299379df33ddd31" dependencies = [ - "futures 0.3.30", + "futures 0.3.31", "rand", "tari_comms", "tari_shutdown", @@ -3590,9 +3694,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -3627,7 +3731,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3733,16 +3837,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.4.0" @@ -3751,18 +3845,18 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ "rustls", + "rustls-pki-types", "tokio", - "webpki", ] [[package]] @@ -3837,11 +3931,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.21" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -3850,49 +3944,48 @@ dependencies = [ [[package]] name = "tonic" -version = "0.8.3" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", - "axum 0.6.20", - "base64 0.13.1", + "axum", + "base64 0.22.1", "bytes 1.7.2", - "futures-core", - "futures-util", "h2", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.30", + "http", + "http-body", + "http-body-util", + "hyper", "hyper-timeout", + "hyper-util", "percent-encoding", - "pin-project 1.1.5", - "prost", - "prost-derive", - "rustls-pemfile 1.0.4", + "pin-project 1.1.6", + "prost 0.13.3", + "rustls-pemfile", + "socket2", "tokio", "tokio-rustls", "tokio-stream", - "tokio-util 0.7.12", "tower 0.4.13", "tower-layer", "tower-service", "tracing", - "tracing-futures", ] [[package]] name = "tonic-build" -version = "0.8.4" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" +checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" dependencies = [ - "prettyplease", + "prettyplease 0.2.22", "proc-macro2", - "prost-build", + "prost-build 0.13.3", + "prost-types 0.13.3", "quote", - "syn 1.0.109", + "syn 2.0.79", ] [[package]] @@ -3905,7 +3998,7 @@ dependencies = [ "futures-util", "hdrhistogram", "indexmap 1.9.3", - "pin-project 1.1.5", + "pin-project 1.1.6", "pin-project-lite", "rand", "slab", @@ -3964,7 +4057,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -3976,69 +4069,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project 1.1.5", - "tracing", -] - -[[package]] -name = "trust-dns-client" -version = "0.21.0-alpha.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dfcea87b25f0810e2a527458dd621e252fd8a5827153329308d6e1f252d68" -dependencies = [ - "cfg-if", - "data-encoding", - "futures-channel", - "futures-util", - "lazy_static", - "log", - "radix_trie", - "rand", - "ring 0.16.20", - "rustls", - "thiserror", - "time", - "tokio", - "trust-dns-proto", - "webpki", -] - -[[package]] -name = "trust-dns-proto" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.3", - "ipnet", - "lazy_static", - "log", - "rand", - "ring 0.16.20", - "rustls", - "rustls-pemfile 0.3.0", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "tokio-rustls", - "url", - "webpki", -] - [[package]] name = "try-lock" version = "0.2.5" @@ -4074,9 +4104,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" @@ -4142,12 +4172,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -4161,7 +4185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", ] @@ -4232,7 +4256,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -4254,7 +4278,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4265,16 +4289,6 @@ version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" -[[package]] -name = "web-sys" -version = "0.3.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "web-time" version = "1.1.0" @@ -4286,13 +4300,12 @@ dependencies = [ ] [[package]] -name = "webpki" -version = "0.22.4" +name = "webpki-roots" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "rustls-pki-types", ] [[package]] @@ -4307,6 +4320,12 @@ dependencies = [ "rustix", ] +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + [[package]] name = "winapi" version = "0.3.9" @@ -4335,7 +4354,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[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.5", ] [[package]] @@ -4344,7 +4372,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -4353,7 +4381,22 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -4362,28 +4405,46 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -4396,24 +4457,48 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -4422,13 +4507,23 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "wyz" version = "0.5.1" @@ -4443,8 +4538,8 @@ name = "xtrgpuminer" version = "0.1.13" dependencies = [ "anyhow", - "axum 0.7.6", - "clap 4.5.18", + "axum", + "clap 4.5.20", "cust", "libsqlite3-sys", "log", @@ -4453,8 +4548,8 @@ dependencies = [ "num-format", "opencl-sys", "opencl3", - "prost", - "prost-types", + "prost 0.13.3", + "prost-types 0.13.3", "rand", "serde", "serde_json", @@ -4478,11 +4573,11 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a31b5e376a8b012bee9c423acdbb835fc34d45001cfa3106236a624e4b738028" dependencies = [ - "futures 0.3.30", + "futures 0.3.31", "log", "nohash-hasher", "parking_lot", - "pin-project 1.1.5", + "pin-project 1.1.6", "rand", "static_assertions", "web-time", @@ -4515,7 +4610,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -4535,5 +4630,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] diff --git a/Cargo.toml b/Cargo.toml index abcf9b5..abdb323 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,6 @@ name = "xtrgpuminer" version = "0.1.13" edition = "2021" - [dependencies] tari_core = { git = "https://github.com/tari-project/tari", default-features = false, features = [ "transactions", @@ -24,9 +23,9 @@ sha3 = "0.10" num-format = "0.4.4" tokio = { version = "1.36", features = ["full"] } -tonic = { version = "0.8.3" } -prost = "0.11.9" -prost-types = "0.11.9" +tonic = { version = "0.12.3" } +prost = "0.13.3" +prost-types = "0.13.3" rand = "0.8" libsqlite3-sys = { version = "0.25.1", features = ["bundled"] } diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 0000000..f37d01d --- /dev/null +++ b/Cross.toml @@ -0,0 +1,59 @@ +[build.env] +passthrough = [ + "CFLAGS", + "TARGET", + "RUST_TARGET", + "BUILD_TARGET", + "CARGO_BUILD_TARGET", + "TARGET_CFLAGS", + "CC_aarch64_unknown_linux_gnu", + "CC_riscv64_unknown_linux_gnu", + "PKG_CONFIG_SYSROOT_DIR", + "PKG_CONFIG_ALLOW_CROSS", + "RUSTFLAGS", + "RUST_BACKTRACE", + "RUST_DEBUG", + "RUST_LOG", + "ARCH", + "FEATURES", + "ROARING_ARCH", + "TARI_NETWORK", + "TARI_TARGET_NETWORK", + "TARI_NETWORK_DIR", +] + +[target.aarch64-unknown-linux-gnu] +#image.toolchain = ["linux/arm64=aarch64-unknown-linux-gnu", "linux/amd64=x86_64-unknown-linux-gnu"] +pre-build = [ + "dpkg --add-architecture $CROSS_DEB_ARCH", + "apt-get update && apt-get --assume-yes install libprotobuf-dev protobuf-compiler opencl-headers ocl-icd-opencl-dev:$CROSS_DEB_ARCH" +] + +[target.aarch64-unknown-linux-gnu.env] +passthrough = [ + "PKG_CONFIG_ALLOW_CROSS=true", +] + +[target.x86_64-unknown-linux-gnu] +#image.toolchain = ["linux/arm64=aarch64-unknown-linux-gnu", "linux/amd64=x86_64-unknown-linux-gnu"] +pre-build = [ + "dpkg --add-architecture $CROSS_DEB_ARCH", + "apt-get update && apt-get --assume-yes install libprotobuf-dev protobuf-compiler opencl-headers ocl-icd-opencl-dev:$CROSS_DEB_ARCH" +] + +[target.x86_64-unknown-linux-gnu.env] +passthrough = [ + "PKG_CONFIG_ALLOW_CROSS=true", +] + +[target.riscv64gc-unknown-linux-gnu] +#image.toolchain = ["linux/arm64=aarch64-unknown-linux-gnu", "linux/amd64=x86_64-unknown-linux-gnu", "linux/riscv64=riscv64gc-unknown-linux-gnu"] +pre-build = [ + "dpkg --add-architecture $CROSS_DEB_ARCH", + "apt-get update && apt-get --assume-yes install libprotobuf-dev protobuf-compiler opencl-headers ocl-icd-opencl-dev:$CROSS_DEB_ARCH" +] + +[target.riscv64gc-unknown-linux-gnu.env] +passthrough = [ + "PKG_CONFIG_ALLOW_CROSS=true", +] diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..804a8d6 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "nightly-2024-07-07" From d73d11561c5108b5f09d085f0d874b1cf4847192 Mon Sep 17 00:00:00 2001 From: stringhandler Date: Sat, 12 Oct 2024 00:16:07 +0200 Subject: [PATCH 2/8] fix: use cached template if template is not provided --- log4rs_sample.yml | 9 +++++- src/config_file.rs | 2 +- src/main.rs | 71 ++++++++++++++++++++++++++++---------------- src/opencl_engine.rs | 50 ++++++++++++++++--------------- 4 files changed, 81 insertions(+), 51 deletions(-) diff --git a/log4rs_sample.yml b/log4rs_sample.yml index fd1e590..166f72f 100644 --- a/log4rs_sample.yml +++ b/log4rs_sample.yml @@ -33,7 +33,14 @@ appenders: # Set the default logging level to "info" root: - level: info + level: warn appenders: - stdout - xtrgpuminer + +loggers: + tari: + level: info + appenders: + - stdout + - xtrgpuminer diff --git a/src/config_file.rs b/src/config_file.rs index 15f264c..284873d 100644 --- a/src/config_file.rs +++ b/src/config_file.rs @@ -34,7 +34,7 @@ impl Default for ConfigFile { // In range 1-1000 gpu_percentage: 1000, grid_size: 1000, - template_timeout_secs: 5, + template_timeout_secs: 1, } } } diff --git a/src/main.rs b/src/main.rs index a514a5c..843eb65 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,9 +7,12 @@ use cust::{ memory::{AsyncCopyDestination, DeviceCopy}, prelude::*, }; -use log::{error, info, warn}; +use log::{debug, error, info, warn}; use minotari_app_grpc::tari_rpc::{ - Block, BlockHeader as grpc_header, NewBlockTemplate, TransactionOutput as GrpcTransactionOutput, + Block, + BlockHeader as grpc_header, + NewBlockTemplate, + TransactionOutput as GrpcTransactionOutput, }; use num_format::{Locale, ToFormattedString}; use sha3::Digest; @@ -19,11 +22,13 @@ use tari_core::{ blocks::BlockHeader, consensus::ConsensusManager, transactions::{ - key_manager::create_memory_db_key_manager, tari_amount::MicroMinotari, transaction_components::RangeProofType, + key_manager::create_memory_db_key_manager, + tari_amount::MicroMinotari, + transaction_components::{CoinBaseExtra, RangeProofType}, }, }; use tari_shutdown::Shutdown; -use tokio::{runtime::Runtime, sync::RwLock}; +use tokio::{runtime::Runtime, sync::RwLock, time::sleep}; #[cfg(feature = "nvidia")] use crate::cuda_engine::CudaEngine; @@ -41,8 +46,6 @@ use crate::{ tari_coinbase::generate_coinbase, }; -use tari_core::transactions::transaction_components::CoinBaseExtra; - mod config_file; mod context_impl; #[cfg(feature = "nvidia")] @@ -148,7 +151,7 @@ struct Cli { async fn main_inner() -> Result<(), anyhow::Error> { let cli = Cli::parse(); - info!(target: LOG_TARGET, "Xtrgpuminer init"); + debug!(target: LOG_TARGET, "Xtrgpuminer init"); if let Some(ref log_dir) = cli.log_dir { tari_common::initialize_logging( &log_dir.join("log4rs_config.yml"), @@ -339,9 +342,14 @@ async fn main_inner() -> Result<(), anyhow::Error> { // for t in threads { // t.join().unwrap()?; // } + // let mut res = Ok(()); for t in threads { if let Err(err) = t.join() { error!(target: LOG_TARGET, "Thread join failed: {:?}", err); + // if res.is_ok() { + // res = Err(anyhow!(err)); + // } + // err?; } } @@ -377,14 +385,14 @@ fn run_thread( let gpu_function = gpu_engine.get_main_function(&context)?; - //let (mut grid_size, block_size) = gpu_function + // let (mut grid_size, block_size) = gpu_function // .suggested_launch_configuration() // .context("get suggest config")?; - //let (grid_size, block_size) = (23, 50); + // let (grid_size, block_size) = (23, 50); let (mut grid_size, block_size) = (config.grid_size, 896); - //grid_size = - // (grid_size as f64 / 1000f64 * cmp::max(cmp::min(100, config.gpu_percentage as usize), 1) as f64).round() as u32; - // let (mut grid_size, block_size) = gpu_function + // grid_size = + // (grid_size as f64 / 1000f64 * cmp::max(cmp::min(100, config.gpu_percentage as usize), 1) as f64).round() as + // u32; let (mut grid_size, block_size) = gpu_function // .suggested_launch_configuration() // .context("get suggest config")?; // let (grid_size, block_size) = (23, 50); @@ -397,6 +405,8 @@ fn run_thread( let mut data = vec![0u64; 6]; // let mut data_buf = data.as_slice().as_dbuf()?; + let mut previous_template = None; + loop { rounds += 1; if rounds > 101 { @@ -416,10 +426,21 @@ fn run_thread( block = res_block; header = res_header; mining_hash = res_mining_hash; + previous_template = Some((target_difficulty, block.clone(), header.clone(), mining_hash.clone())); }, Err(error) => { println!("Error during getting next block: {error:?}"); - continue; + error!(target: LOG_TARGET, "Error during getting next block: {:?}", error); + if previous_template.is_none() { + thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + let (res_target_difficulty, res_block, res_header, res_mining_hash) = + previous_template.as_ref().cloned().unwrap(); + target_difficulty = res_target_difficulty; + block = res_block; + header = res_header; + mining_hash = res_mining_hash; }, } @@ -440,9 +461,9 @@ fn run_thread( let mut max_diff = 0; let mut last_printed = Instant::now(); loop { - info!(target: LOG_TARGET, "Inside loop"); + debug!(target: LOG_TARGET, "Inside loop"); if elapsed.elapsed().as_secs() > config.template_refresh_secs { - info!(target: LOG_TARGET, "Elapsed {:?} > {:?}", elapsed.elapsed().as_secs(), config.template_refresh_secs ); + debug!(target: LOG_TARGET, "Elapsed {:?} > {:?}", elapsed.elapsed().as_secs(), config.template_refresh_secs ); break; } let num_iterations = 16; @@ -465,7 +486,7 @@ fn run_thread( ); let (nonce, hashes, diff) = match result { Ok(values) => { - info!(target: LOG_TARGET, + debug!(target: LOG_TARGET, "Mining successful: nonce={:?}, hashes={}, difficulty={}", values.0, values.1, values.2 ); @@ -483,9 +504,9 @@ fn run_thread( max_diff = diff; } nonce_start = nonce_start + hashes as u64; - info!(target: LOG_TARGET, "Nonce start {:?}", nonce_start.to_formatted_string(&Locale::en)); + debug!(target: LOG_TARGET, "Nonce start {:?}", nonce_start.to_formatted_string(&Locale::en)); if elapsed.elapsed().as_secs() > 1 { - info!(target: LOG_TARGET, "Elapsed {:?} > 1",elapsed.elapsed().as_secs()); + debug!(target: LOG_TARGET, "Elapsed {:?} > 1",elapsed.elapsed().as_secs()); if Instant::now() - last_printed > std::time::Duration::from_secs(2) { last_printed = Instant::now(); let hash_rate = (nonce_start - first_nonce) / elapsed.elapsed().as_secs(); @@ -508,9 +529,9 @@ fn run_thread( hash_rate.to_formatted_string(&Locale::en)); } } - info!(target: LOG_TARGET, "Inside loop nonce {:?}", nonce.clone().is_some()); + debug!(target: LOG_TARGET, "Inside loop nonce {:?}", nonce.clone().is_some()); if nonce.is_some() { - info!(target: LOG_TARGET, "Inside loop nonce is some {:?}", nonce.clone().is_some()); + debug!(target: LOG_TARGET, "Inside loop nonce is some {:?}", nonce.clone().is_some()); header.nonce = nonce.unwrap(); let mut mined_block = block.clone(); @@ -533,10 +554,10 @@ fn run_thread( println!("Error submitting block: {:?}", e); }, } - info!(target: LOG_TARGET, "Inside thread loop (nonce) break {:?}", num_threads); + debug!(target: LOG_TARGET, "Inside thread loop (nonce) break {:?}", num_threads); break; } - info!(target: LOG_TARGET, "Inside thread loop break {:?}", num_threads); + debug!(target: LOG_TARGET, "Inside thread loop break {:?}", num_threads); // break; } } @@ -573,7 +594,7 @@ async fn get_template( // p2pool enabled if config.p2pool_enabled { - info!(target: LOG_TARGET, "p2pool enabled"); + debug!(target: LOG_TARGET, "p2pool enabled"); let block_result = tokio::time::timeout( std::time::Duration::from_secs(config.template_timeout_secs), lock.get_new_block(NewBlockTemplate::default()), @@ -611,7 +632,7 @@ async fn get_template( fee, reward, height, - //config.coinbase_extra.as_bytes(), + // config.coinbase_extra.as_bytes(), &CoinBaseExtra::try_from(config.coinbase_extra.as_bytes().to_vec())?, &key_manager, &address, @@ -620,7 +641,7 @@ async fn get_template( RangeProofType::RevealedValue, ) .await?; - info!(target: LOG_TARGET, "Getting block template difficulty {:?}", miner_data.target_difficulty.clone()); + debug!(target: LOG_TARGET, "Getting block template difficulty {:?}", miner_data.target_difficulty.clone()); let body = block_template.body.as_mut().expect("no block body"); let grpc_output = GrpcTransactionOutput::try_from(coinbase_output.clone()).map_err(|s| anyhow!(s))?; body.outputs.push(grpc_output); diff --git a/src/opencl_engine.rs b/src/opencl_engine.rs index e8a20b7..1fee4a4 100644 --- a/src/opencl_engine.rs +++ b/src/opencl_engine.rs @@ -5,7 +5,7 @@ use std::{ }; use anyhow::Error; -use log::{error, info, warn}; +use log::{debug, error, warn}; use opencl3::{ command_queue::{CommandQueue, CL_QUEUE_PROFILING_ENABLE}, context::Context, @@ -18,7 +18,10 @@ use opencl3::{ }; use crate::{ - context_impl::ContextImpl, engine_impl::EngineImpl, function_impl::FunctionImpl, gpu_status_file::GpuStatus, + context_impl::ContextImpl, + engine_impl::EngineImpl, + function_impl::FunctionImpl, + gpu_status_file::GpuStatus, }; const LOG_TARGET: &str = "tari::gpuminer::opencl"; @@ -45,7 +48,7 @@ impl EngineImpl for OpenClEngine { type Function = OpenClFunction; fn init(&mut self) -> Result<(), anyhow::Error> { - info!(target: LOG_TARGET, "OpenClEngine: init engine"); + debug!(target: LOG_TARGET, "OpenClEngine: init engine"); let platforms = get_platforms()?; let mut lock = self.inner.write().unwrap(); lock.platforms = platforms; @@ -59,7 +62,7 @@ impl EngineImpl for OpenClEngine { let devices = platform.get_devices(CL_DEVICE_TYPE_GPU)?; total_devices += devices.len(); } - info!(target: LOG_TARGET, "OpenClEngine: total number of devices {:?}", total_devices); + debug!(target: LOG_TARGET, "OpenClEngine: total number of devices {:?}", total_devices); Ok(total_devices as u32) } @@ -70,12 +73,12 @@ impl EngineImpl for OpenClEngine { for platform in lock.platforms.iter() { let devices = platform.get_devices(CL_DEVICE_TYPE_GPU)?; - info!(target: LOG_TARGET, "OpenClEngine: platform name: {}", platform.name()?); + debug!(target: LOG_TARGET, "OpenClEngine: platform name: {}", platform.name()?); println!("List of the devices for the Platform: {}", platform.name()?); for device in devices { let dev = Device::new(device); let name = dev.name().unwrap_or_default() as String; - info!(target: LOG_TARGET, "Device index {:?}: {}", total_devices, &name); + debug!(target: LOG_TARGET, "Device index {:?}: {}", total_devices, &name); println!("device: {}", &name); let mut gpu = GpuStatus { device_name: name, @@ -83,7 +86,7 @@ impl EngineImpl for OpenClEngine { }; gpu_devices.push(gpu); total_devices += 1; - info!(target: LOG_TARGET, "Device nr {:?}: {}", total_devices, dev.name()?); + debug!(target: LOG_TARGET, "Device nr {:?}: {}", total_devices, dev.name()?); println!("Device nr {:?}: {}", total_devices, dev.name()?); } } @@ -94,7 +97,7 @@ impl EngineImpl for OpenClEngine { } fn create_context(&self, device_index: u32) -> Result { - info!(target: LOG_TARGET, "OpenClEngine: create context"); + debug!(target: LOG_TARGET, "OpenClEngine: create context"); let lock = self.inner.write().unwrap(); let mut devices = vec![]; for platform in lock.platforms.iter() { @@ -106,7 +109,7 @@ impl EngineImpl for OpenClEngine { } fn create_main_function(&self, context: &Self::Context) -> Result { - info!(target: LOG_TARGET, "OpenClEngine: create function"); + debug!(target: LOG_TARGET, "OpenClEngine: create function"); // let program = create_program_from_source(&context.context).unwrap(); let program = match create_program_from_source(&context.context) { Some(program) => program, @@ -139,11 +142,11 @@ impl EngineImpl for OpenClEngine { // 0 // )?; unsafe { - info!(target: LOG_TARGET, "OpenClEngine: mine unsafe"); + debug!(target: LOG_TARGET, "OpenClEngine: mine unsafe"); let queue = CommandQueue::create_default(&context.context, CL_QUEUE_PROFILING_ENABLE) .expect("could not create command queue"); - info!(target: LOG_TARGET, "OpenClEngine: created queue"); + debug!(target: LOG_TARGET, "OpenClEngine: created queue"); let batch_size = 1 << 19; // According to tests, but we can try work this out let global_dimensions = [batch_size as usize]; @@ -152,7 +155,7 @@ impl EngineImpl for OpenClEngine { // let max_work_items = queue.max_work_item_dimensions(); // dbg!(max_work_items); // dbg!("here"); - info!(target: LOG_TARGET, "OpenClEngine: cmax workgroups {:?}", max_workgroups); + debug!(target: LOG_TARGET, "OpenClEngine: cmax workgroups {:?}", max_workgroups); let mut buffer = match Buffer::::create(&context.context, CL_MEM_READ_ONLY, data.len(), ptr::null_mut()) { @@ -163,14 +166,14 @@ impl EngineImpl for OpenClEngine { }, }; match queue.enqueue_write_buffer(&mut buffer, CL_TRUE, 0, data, &[]) { - Ok(_) => info!(target: LOG_TARGET, "OpenClEngine: buffer created"), + Ok(_) => debug!(target: LOG_TARGET, "OpenClEngine: buffer created"), Err(e) => { error!(target: LOG_TARGET, "OpenClEngine: failed to enqueue write buffer: {}", e); return Err(e.into()); }, }; - info!(target: LOG_TARGET, "OpenClEngine: buffer created",); + debug!(target: LOG_TARGET, "OpenClEngine: buffer created",); let output_buffer = match Buffer::::create(&context.context, CL_MEM_WRITE_ONLY, 2, ptr::null_mut()) { Ok(buffer) => buffer, @@ -181,8 +184,8 @@ impl EngineImpl for OpenClEngine { }; // dbg!(block_size); // dbg!(grid_size); - info!(target: LOG_TARGET, "OpenClEngine: output buffer created",); - info!(target: LOG_TARGET, "OpenClEngine: kernel work_size: g:{:?}",(grid_size * block_size) as usize); + debug!(target: LOG_TARGET, "OpenClEngine: output buffer created",); + debug!(target: LOG_TARGET, "OpenClEngine: kernel work_size: g:{:?}",(grid_size * block_size) as usize); for kernel in kernels { match ExecuteKernel::new(&kernel) .set_arg(&buffer) @@ -196,7 +199,7 @@ impl EngineImpl for OpenClEngine { // .set_wait_event(&y_write_event) .enqueue_nd_range(&queue) { - Ok(_) => info!(target: LOG_TARGET, "Kernel enqueued successfully"), + Ok(_) => debug!(target: LOG_TARGET, "Kernel enqueued successfully"), Err(e) => { error!(target: LOG_TARGET, "Failed to enqueue kernel: {}", e); // TODO @@ -219,7 +222,7 @@ impl EngineImpl for OpenClEngine { queue.finish()?; let mut output = vec![0u64, 0u64]; - info!(target: LOG_TARGET, "OpenClEngine: mine output {:?}", output[0] > 0); + debug!(target: LOG_TARGET, "OpenClEngine: mine output {:?}", output[0] > 0); queue.enqueue_read_buffer(&output_buffer, CL_TRUE, 0, output.as_mut_slice(), &[])?; if output[0] > 0 { return Ok(( @@ -228,23 +231,22 @@ impl EngineImpl for OpenClEngine { u64::MAX / output[1], )); } - info!(target: LOG_TARGET, "OpenClEngine: mine unsafe return ok"); // if output[1] == 0 { // return Ok((None, grid_size * block_size * num_iterations, 0)); // } return Ok((None, grid_size * block_size * num_iterations, u64::MAX / output[1])); } - info!(target: LOG_TARGET, "OpenClEngine: mine return ok"); + debug!(target: LOG_TARGET, "OpenClEngine: mine return ok"); Ok((None, grid_size * block_size * num_iterations, 0)) } } fn create_program_from_source(context: &Context) -> Option { let opencl_code = include_str!("./opencl_sha3.cl"); - info!(target: LOG_TARGET, "OpenClEngine: create program from source"); + debug!(target: LOG_TARGET, "OpenClEngine: create program from source"); // Load the program from file. let mut program = match Program::create_from_source(&context, &opencl_code) { Ok(program) => { - info!(target: LOG_TARGET, "OpenClEngine: program created successfully"); + debug!(target: LOG_TARGET, "OpenClEngine: program created successfully"); program }, Err(error) => { @@ -257,7 +259,7 @@ fn create_program_from_source(context: &Context) -> Option { // Build the program. match program.build(context.devices(), "") { Ok(_) => { - info!(target: LOG_TARGET, "OpenClEngine: program built successfully"); + debug!(target: LOG_TARGET, "OpenClEngine: program built successfully"); Some(program) }, Err(error) => { @@ -266,7 +268,7 @@ fn create_program_from_source(context: &Context) -> Option { for device_id in context.devices() { match program.get_build_log(*device_id) { Ok(log) => { - info!(target: LOG_TARGET, "OpenClEngine: program log {}", log); + debug!(target: LOG_TARGET, "OpenClEngine: program log {}", log); println!("{}", log) }, Err(error) => { From d995f1f41f4c86047ea649e31c6d7b7fd0a99146 Mon Sep 17 00:00:00 2001 From: stringhandler Date: Sat, 12 Oct 2024 00:27:07 +0200 Subject: [PATCH 3/8] chore(release): v0.1.14 --- Cargo.lock | 2 +- Cargo.toml | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 75fd926..a1e3a47 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4535,7 +4535,7 @@ dependencies = [ [[package]] name = "xtrgpuminer" -version = "0.1.13" +version = "0.1.14" dependencies = [ "anyhow", "axum", diff --git a/Cargo.toml b/Cargo.toml index abdb323..3a9beb0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,41 +1,41 @@ [package] -name = "xtrgpuminer" -version = "0.1.13" edition = "2021" +name = "xtrgpuminer" +version = "0.1.14" [dependencies] -tari_core = { git = "https://github.com/tari-project/tari", default-features = false, features = [ - "transactions", -] } -minotari_app_grpc = { git = "http://github.com/tari-project/tari" } -tari_common_types = { git = "http://github.com/tari-project/tari" } -tari_common = { git = "http://github.com/tari-project/tari" } -tari_script = { git = "http://github.com/tari-project/tari" } -tari_key_manager = { git = "http://github.com/tari-project/tari" } -tari_shutdown = { git = "https://github.com/tari-project/tari.git" } -tari_crypto = { version = "0.20.3", features = ["borsh"] } -tari_utilities = "0.7" -serde = { version = "1.0.130", features = ["derive"] } -serde_json = "1.0.68" anyhow = "*" -clap = { version = "4.5.0", features = ["derive"] } -sha3 = "0.10" +clap = {version = "4.5.0", features = ["derive"]} +minotari_app_grpc = {git = "http://github.com/tari-project/tari"} num-format = "0.4.4" +serde = {version = "1.0.130", features = ["derive"]} +serde_json = "1.0.68" +sha3 = "0.10" +tari_common = {git = "http://github.com/tari-project/tari"} +tari_common_types = {git = "http://github.com/tari-project/tari"} +tari_core = {git = "https://github.com/tari-project/tari", default-features = false, features = [ + "transactions", +]} +tari_crypto = {version = "0.20.3", features = ["borsh"]} +tari_key_manager = {git = "http://github.com/tari-project/tari"} +tari_script = {git = "http://github.com/tari-project/tari"} +tari_shutdown = {git = "https://github.com/tari-project/tari.git"} +tari_utilities = "0.7" -tokio = { version = "1.36", features = ["full"] } -tonic = { version = "0.12.3" } +libsqlite3-sys = {version = "0.25.1", features = ["bundled"]} prost = "0.13.3" prost-types = "0.13.3" rand = "0.8" -libsqlite3-sys = { version = "0.25.1", features = ["bundled"] } +tokio = {version = "1.36", features = ["full"]} +tonic = {version = "0.12.3"} -cust = { version = "0.3.2", optional = true } -opencl3 = { version = "0.9.5", optional = true } -opencl-sys = "*" axum = "0.7.5" -thiserror = "1.0.63" +cust = {version = "0.3.2", optional = true} log = "0.4.22" log4rs = "1.3.0" +opencl-sys = "*" +opencl3 = {version = "0.9.5", optional = true} +thiserror = "1.0.63" [features] default = [] From e5f70e0924e770dbb97528c24c2c6d2cf85f367d Mon Sep 17 00:00:00 2001 From: stringhandler Date: Sun, 13 Oct 2024 14:18:16 +0200 Subject: [PATCH 4/8] feat: add better stats reporting (#21) --- .gitignore | 3 +- src/http/handlers/stats.rs | 28 ++++-- src/http/mod.rs | 1 + src/http/server.rs | 11 ++- src/http/stats_collector.rs | 181 ++++++++++++++++++++++++++++++++++++ src/main.rs | 49 +++++++--- 6 files changed, 242 insertions(+), 31 deletions(-) create mode 100644 src/http/stats_collector.rs diff --git a/.gitignore b/.gitignore index e99e560..a1df0b4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ /target config.json +data # Ignore OS files .DS_Store .idea/ .vscode/* -!.vscode/extensions.json +!.vscode/extensions.json \ No newline at end of file diff --git a/src/http/handlers/stats.rs b/src/http/handlers/stats.rs index 8aa6f65..3ca34b4 100644 --- a/src/http/handlers/stats.rs +++ b/src/http/handlers/stats.rs @@ -1,19 +1,27 @@ +use std::collections::HashMap; + use axum::{extract::State, http::StatusCode, Json}; use serde::{Deserialize, Serialize}; -use crate::http::server::AppState; +use crate::http::{ + server::AppState, + stats_collector::{AverageHashrate, GetHashrateResponse}, +}; -#[derive(Serialize, Deserialize)] +#[derive(Serialize)] pub struct Stats { - pub hashes_per_second: u64, - pub accepted_blocks: u64, - pub rejected_blocks: u64, + hashrate_per_device: HashMap, + total_hashrate: AverageHashrate, } pub async fn handle_get_stats(State(state): State) -> Result, StatusCode> { - Ok(Json(Stats { - hashes_per_second: state.stats_store.hashes_per_second(), - accepted_blocks: state.stats_store.accepted_blocks(), - rejected_blocks: state.stats_store.rejected_blocks(), - })) + let hashrate = state.stats_client.get_hashrate().await.map_err(|e| { + log::error!("Failed to get hashrate: {:?}", e); + StatusCode::INTERNAL_SERVER_ERROR + })?; + let stats = Stats { + hashrate_per_device: hashrate.devices, + total_hashrate: hashrate.total, + }; + Ok(Json(stats)) } diff --git a/src/http/mod.rs b/src/http/mod.rs index 1241660..e8eb967 100644 --- a/src/http/mod.rs +++ b/src/http/mod.rs @@ -1,3 +1,4 @@ pub mod config; mod handlers; pub mod server; +pub mod stats_collector; diff --git a/src/http/server.rs b/src/http/server.rs index 4a643d3..637838e 100644 --- a/src/http/server.rs +++ b/src/http/server.rs @@ -6,6 +6,7 @@ use tari_shutdown::ShutdownSignal; use thiserror::Error; use tokio::io; +use super::stats_collector::StatsClient; use crate::{ http::{ config, @@ -20,7 +21,7 @@ const LOG_TARGET: &str = "tari::gpuminer::server"; pub struct HttpServer { shutdown_signal: ShutdownSignal, config: config::Config, - stats_store: Arc, + stats_client: StatsClient, } #[derive(Error, Debug)] @@ -31,15 +32,15 @@ pub enum Error { #[derive(Clone)] pub struct AppState { - pub stats_store: Arc, + pub stats_client: StatsClient, } impl HttpServer { - pub fn new(shutdown_signal: ShutdownSignal, config: config::Config, stats_store: Arc) -> Self { + pub fn new(shutdown_signal: ShutdownSignal, config: config::Config, stats_client: StatsClient) -> Self { Self { shutdown_signal, config, - stats_store, + stats_client, } } @@ -49,7 +50,7 @@ impl HttpServer { .route("/version", get(version::handle_version)) .route("/stats", get(stats::handle_get_stats)) .with_state(AppState { - stats_store: self.stats_store.clone(), + stats_client: self.stats_client.clone(), }) } diff --git a/src/http/stats_collector.rs b/src/http/stats_collector.rs new file mode 100644 index 0000000..dbb33d4 --- /dev/null +++ b/src/http/stats_collector.rs @@ -0,0 +1,181 @@ +use std::{ + collections::{HashMap, VecDeque}, + thread::current, +}; + +use log::error; +use serde::Serialize; +use tari_shutdown::ShutdownSignal; +use tari_utilities::epoch_time::EpochTime; +use tokio::sync::{broadcast::Receiver, oneshot}; + +const LOG_TARGET: &str = "tari::gpu_miner::http::stats_collector"; + +pub(crate) struct StatsCollector { + shutdown_signal: ShutdownSignal, + hashrate_samples: HashMap>, + stats_broadcast_receiver: tokio::sync::broadcast::Receiver, + request_tx: tokio::sync::mpsc::Sender, + request_rx: tokio::sync::mpsc::Receiver, + first_stat_received: Option, +} + +pub(crate) enum StatsRequest { + GetHashrate(tokio::sync::oneshot::Sender), +} + +pub(crate) struct GetHashrateResponse { + pub devices: HashMap, + pub total: AverageHashrate, +} + +#[derive(Debug, Clone, Serialize)] +pub(crate) struct AverageHashrate { + ten_seconds: Option, + one_minute: Option, +} + +#[derive(Debug, Clone)] +pub(crate) struct HashrateSample { + pub(crate) device_id: u32, + pub(crate) timestamp: EpochTime, + pub(crate) hashrate: u64, +} + +#[derive(Debug, Clone)] +pub(crate) struct StatsClient { + request_tx: tokio::sync::mpsc::Sender, +} + +impl StatsClient { + pub async fn get_hashrate(&self) -> Result { + let (tx, rx) = oneshot::channel(); + self.request_tx.send(StatsRequest::GetHashrate(tx)).await?; + Ok(rx.await?) + } +} +impl StatsCollector { + pub(crate) fn new(shutdown_signal: ShutdownSignal, stats_broadcast_receiver: Receiver) -> Self { + let (tx, rx) = tokio::sync::mpsc::channel(100); + Self { + shutdown_signal, + hashrate_samples: HashMap::new(), + stats_broadcast_receiver, + request_rx: rx, + request_tx: tx, + first_stat_received: None, + } + } + + pub fn create_client(&self) -> StatsClient { + StatsClient { + request_tx: self.request_tx.clone(), + } + } + + fn calc_hashrate(&self) -> GetHashrateResponse { + let mut result = HashMap::::new(); + let current_time = EpochTime::now().as_u64(); + for (device_id, s) in self.hashrate_samples.iter() { + let mut samples: VecDeque<&HashrateSample> = s.iter().collect(); + let mut total_for_10_seconds = 0.0; + let mut total_for_60_seconds = 0.0; + for second in current_time - 60..current_time { + // clear out anything older than 60 seconds + loop { + if let Some(sample) = samples.front() { + if sample.timestamp.as_u64() < second { + samples.pop_front(); + } else { + break; + } + } else { + break; + } + } + + // only take the first sample we have for hashrate. + if let Some(sample) = samples.front() { + if sample.timestamp.as_u64() == second { + total_for_60_seconds += sample.hashrate as f64; + if second >= current_time - 10 { + total_for_10_seconds += sample.hashrate as f64; + } + samples.pop_front(); + } + } + } + let ten_seconds = total_for_10_seconds / 10.0; + let one_minute = total_for_60_seconds / 60.0; + let ten_seconds = if let Some(first_stat_received) = self.first_stat_received { + if first_stat_received.as_u64() + 10 < current_time { + Some(ten_seconds) + } else { + None + } + } else { + None + }; + let one_minute = if let Some(first_stat_received) = self.first_stat_received { + if first_stat_received.as_u64() + 60 < current_time { + Some(one_minute) + } else { + None + } + } else { + None + }; + result.insert(*device_id, AverageHashrate { + ten_seconds, + one_minute, + }); + } + GetHashrateResponse { + total: AverageHashrate { + ten_seconds: result.values().map(|v| v.ten_seconds).sum(), + one_minute: result.values().map(|v| v.one_minute).sum(), + }, + devices: result, + } + } + + pub(crate) async fn run(&mut self) { + loop { + tokio::select! { + _ = self.shutdown_signal.wait() => { + break; + }, + res = self.request_rx.recv() => { + match res { + Some(StatsRequest::GetHashrate(tx)) => { + let hashrate = self.calc_hashrate(); + let _ = tx.send(hashrate); + }, + None => { + break; + } + } + }, + res = self.stats_broadcast_receiver.recv() => { + match res { + Ok(sample) => { + if self.first_stat_received.is_none() { + self.first_stat_received = Some(sample.timestamp); + } + // Expect 2 samples per second per device + let entry = self.hashrate_samples.entry(sample.device_id).or_insert_with(|| VecDeque::with_capacity(181)); + if entry.len() > 180 { + entry.pop_front(); + } + entry.push_back(sample); + }, + Err(e) => { + error!(target: LOG_TARGET, "Error receiving hashrate sample: {:?}", e); + break; + } + } + } + } + } + } +} diff --git a/src/main.rs b/src/main.rs index 843eb65..bbb78f1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ use cust::{ memory::{AsyncCopyDestination, DeviceCopy}, prelude::*, }; +use http::stats_collector::{self, HashrateSample}; use log::{debug, error, info, warn}; use minotari_app_grpc::tari_rpc::{ Block, @@ -28,7 +29,12 @@ use tari_core::{ }, }; use tari_shutdown::Shutdown; -use tokio::{runtime::Runtime, sync::RwLock, time::sleep}; +use tari_utilities::epoch_time::EpochTime; +use tokio::{ + runtime::Runtime, + sync::{broadcast::Sender, RwLock}, + time::sleep, +}; #[cfg(feature = "nvidia")] use crate::cuda_engine::CudaEngine; @@ -227,11 +233,18 @@ async fn main_inner() -> Result<(), anyhow::Error> { // http server let mut shutdown = Shutdown::new(); - let stats_store = Arc::new(StatsStore::new()); + let (stats_tx, stats_rx) = tokio::sync::broadcast::channel(100); if config.http_server_enabled { + let mut stats_collector = stats_collector::StatsCollector::new(shutdown.to_signal(), stats_rx); + let stats_client = stats_collector.create_client(); + info!(target: LOG_TARGET, "Stats collector started"); + tokio::spawn(async move { + stats_collector.run().await; + info!(target: LOG_TARGET, "Stats collector shutdown"); + }); let http_server_config = Config::new(config.http_server_port); info!(target: LOG_TARGET, "HTTP server runs on port: {}", &http_server_config.port); - let http_server = HttpServer::new(shutdown.to_signal(), http_server_config, stats_store.clone()); + let http_server = HttpServer::new(shutdown.to_signal(), http_server_config, stats_client); info!(target: LOG_TARGET, "HTTP server enabled"); tokio::spawn(async move { if let Err(error) = http_server.start().await { @@ -332,9 +345,9 @@ async fn main_inner() -> Result<(), anyhow::Error> { if devices_to_use.contains(&i) { let c = config.clone(); let gpu = gpu_engine.clone(); - let curr_stats_store = stats_store.clone(); + let curr_stats_tx = stats_tx.clone(); threads.push(thread::spawn(move || { - run_thread(gpu, num_devices as u64, i as u32, c, benchmark, curr_stats_store) + run_thread(gpu, num_devices as u64, i as u32, c, benchmark, curr_stats_tx) })); } } @@ -364,7 +377,7 @@ fn run_thread( thread_index: u32, config: ConfigFile, benchmark: bool, - stats_store: Arc, + stats_tx: Sender, ) -> Result<(), anyhow::Error> { let tari_node_url = config.tari_node_url.clone(); let runtime = Runtime::new()?; @@ -414,10 +427,10 @@ fn run_thread( } let clone_node_client = node_client.clone(); let clone_config = config.clone(); - let mut target_difficulty: u64; - let mut block: Block; + let target_difficulty: u64; + let block: Block; let mut header: BlockHeader; - let mut mining_hash: FixedHash; + let mining_hash: FixedHash; match runtime.block_on(async move { get_template(clone_config, clone_node_client, rounds, benchmark).await }) { Ok((res_target_difficulty, res_block, res_header, res_mining_hash)) => { info!(target: LOG_TARGET, "Getting next block..."); @@ -456,10 +469,10 @@ fn run_thread( let mut nonce_start = (u64::MAX / num_threads) * thread_index as u64; let first_nonce = nonce_start; - let mut last_hash_rate = 0; let elapsed = Instant::now(); let mut max_diff = 0; let mut last_printed = Instant::now(); + let mut last_reported_stats = Instant::now(); loop { debug!(target: LOG_TARGET, "Inside loop"); if elapsed.elapsed().as_secs() > config.template_refresh_secs { @@ -506,11 +519,17 @@ fn run_thread( nonce_start = nonce_start + hashes as u64; debug!(target: LOG_TARGET, "Nonce start {:?}", nonce_start.to_formatted_string(&Locale::en)); if elapsed.elapsed().as_secs() > 1 { - debug!(target: LOG_TARGET, "Elapsed {:?} > 1",elapsed.elapsed().as_secs()); + let hash_rate = (nonce_start - first_nonce) / elapsed.elapsed().as_secs(); + if Instant::now() - last_reported_stats > std::time::Duration::from_millis(500) { + last_reported_stats = Instant::now(); + stats_tx.send(HashrateSample { + device_id: thread_index, + hashrate: hash_rate, + timestamp: EpochTime::now(), + })?; + } if Instant::now() - last_printed > std::time::Duration::from_secs(2) { last_printed = Instant::now(); - let hash_rate = (nonce_start - first_nonce) / elapsed.elapsed().as_secs(); - stats_store.update_hashes_per_second(hash_rate); println!( "[Thread:{}] total {:} grid: {} max_diff: {}, target: {} hashes/sec: {}", thread_index, @@ -546,11 +565,11 @@ fn run_thread( .await? }) { Ok(_) => { - stats_store.inc_accepted_blocks(); + // stats_store.inc_accepted_blocks(); println!("Block submitted"); }, Err(e) => { - stats_store.inc_rejected_blocks(); + // stats_store.inc_rejected_blocks(); println!("Error submitting block: {:?}", e); }, } From 9ab531023eadf2c73a1c5ec4b4ef0f389b283cbf Mon Sep 17 00:00:00 2001 From: stringhandler Date: Sun, 13 Oct 2024 14:20:15 +0200 Subject: [PATCH 5/8] chore(release): v0.1.15 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1e3a47..88e9279 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4535,7 +4535,7 @@ dependencies = [ [[package]] name = "xtrgpuminer" -version = "0.1.14" +version = "0.1.15" dependencies = [ "anyhow", "axum", diff --git a/Cargo.toml b/Cargo.toml index 3a9beb0..02c15d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] edition = "2021" name = "xtrgpuminer" -version = "0.1.14" +version = "0.1.15" [dependencies] anyhow = "*" From dd4b5a4664cc67249d765e88902e358916f76077 Mon Sep 17 00:00:00 2001 From: stringhandler Date: Sun, 13 Oct 2024 18:31:13 +0200 Subject: [PATCH 6/8] chore: cleanup --- src/node_client.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/node_client.rs b/src/node_client.rs index a92d35e..c4457c1 100644 --- a/src/node_client.rs +++ b/src/node_client.rs @@ -3,8 +3,16 @@ use std::time::{Duration, Instant}; use anyhow::anyhow; use log::{error, info, warn}; use minotari_app_grpc::tari_rpc::{ - base_node_client::BaseNodeClient, pow_algo::PowAlgos, sha_p2_pool_client::ShaP2PoolClient, Block, Empty, - GetNewBlockResult, NewBlockTemplate, NewBlockTemplateRequest, NewBlockTemplateResponse, PowAlgo, + base_node_client::BaseNodeClient, + pow_algo::PowAlgos, + sha_p2_pool_client::ShaP2PoolClient, + Block, + Empty, + GetNewBlockResult, + NewBlockTemplate, + NewBlockTemplateRequest, + NewBlockTemplateResponse, + PowAlgo, }; use tari_common_types::tari_address::TariAddress; use tonic::{async_trait, transport::Channel}; @@ -71,7 +79,6 @@ impl NodeClient for BaseNodeClientWrapper { async fn get_new_block(&mut self, template: NewBlockTemplate) -> Result { info!(target: LOG_TARGET, "Getting new block template"); let res = self.client.get_new_block(tonic::Request::new(template)).await?; - info!(target: LOG_TARGET, "Done getting new block template"); Ok(NewBlockResult::try_from(res.into_inner())?) } @@ -79,7 +86,6 @@ impl NodeClient for BaseNodeClientWrapper { info!(target: LOG_TARGET, "Submitting block"); // dbg!(&block); let res = self.client.submit_block(tonic::Request::new(block)).await?; - println!("Block submitted: {:?}", res); info!(target: LOG_TARGET, "Block submitted: {:?}", res); Ok(()) } From 0f310161039b621d75ae7309a72bb3f4d65654c2 Mon Sep 17 00:00:00 2001 From: stringhandler Date: Sun, 13 Oct 2024 18:31:40 +0200 Subject: [PATCH 7/8] chore(release): v0.1.16 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 88e9279..adb53fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4535,7 +4535,7 @@ dependencies = [ [[package]] name = "xtrgpuminer" -version = "0.1.15" +version = "0.1.16" dependencies = [ "anyhow", "axum", diff --git a/Cargo.toml b/Cargo.toml index 02c15d9..32ee422 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] edition = "2021" name = "xtrgpuminer" -version = "0.1.15" +version = "0.1.16" [dependencies] anyhow = "*" From c9f815a6a34a1d24e2a364425a38e455ccedcee3 Mon Sep 17 00:00:00 2001 From: "C.Lee Taylor" Date: Wed, 16 Oct 2024 08:51:46 +0200 Subject: [PATCH 8/8] xtrgpuminer to glytex merge change --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ab3cf01..772cbf1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4568,7 +4568,7 @@ dependencies = [ ] [[package]] -name = "xtrgpuminer" +name = "glytex" version = "0.1.16" dependencies = [ "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 3796912..ee78895 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "xtrgpuminer" +name = "glytex" version = "0.1.16" edition = "2021"