diff --git a/.github/workflows/ci-crates-publish-dry-run.yml b/.github/workflows/ci-crates-publish-dry-run.yml new file mode 100644 index 00000000000..f57efbe87ea --- /dev/null +++ b/.github/workflows/ci-crates-publish-dry-run.yml @@ -0,0 +1,79 @@ +name: Publish to crates.io (dry run) + +on: + workflow_dispatch: + inputs: + version: + description: "Version to publish (e.g. 1.21.0)" + required: true + type: string + +env: + CI_BOT_AUTHOR: "Nym bot" + CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" + +jobs: + publish-dry-run: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Configure git identity + run: | + git config --global user.name "${{ env.CI_BOT_AUTHOR }}" + git config --global user.email "${{ env.CI_BOT_EMAIL }}" + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Validate version format + run: | + if ! npx semver "${{ inputs.version }}"; then + echo "Error: '${{ inputs.version }}' is not valid semver" + exit 1 + fi + + - name: Get current version + id: current_version + run: | + VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Update workspace dependencies + run: | + sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + + - name: Bump versions (local only) + run: | + cargo workspaces version custom ${{ inputs.version }} \ + --allow-branch ${{ github.ref_name }} \ + --no-git-commit \ + + # Dry run may show cascading dependency errors because packages aren't + # actually uploaded - these are expected and ignored. We check for real + # errors like packaging failures, missing metadata, or invalid Cargo.toml. + - name: Publish (dry run) + run: | + output=$(cargo workspaces publish --dry-run --allow-dirty 2>&1) || true + echo "$output" + + # Check for real errors (not cascading dependency errors) + # Cascading errors mention "crates.io index", real errors mention "Cargo.toml" + echo "$output" | grep -i "Cargo.toml" && exit 1 || true + + # Show the list of packages published + - name: Show package versions + run: cargo workspaces list --long diff --git a/.github/workflows/ci-crates-publish-resume.yml b/.github/workflows/ci-crates-publish-resume.yml new file mode 100644 index 00000000000..77f448a2b81 --- /dev/null +++ b/.github/workflows/ci-crates-publish-resume.yml @@ -0,0 +1,59 @@ +# This is in case, for whatever reason, a publication run fails, and we need to restart halfway down the list, of unbumped/unpublished crates. +name: Resume crates.io publish + +on: + workflow_dispatch: + inputs: + resume_after: + description: "Last successfully published crate (will start from the next one)" + required: true + type: string + publish_interval: + description: "Seconds to wait between publishes" + required: false + default: "600" + type: string + +jobs: + publish: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + # Get crates in publish order, skip up to and including resume_after + - name: Publish remaining crates + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + CRATES=$(cargo workspaces plan 2>/dev/null | sed -n '/^${{ inputs.resume_after }}$/,$p' | tail -n +2) + + if [ -z "$CRATES" ]; then + echo "Error: No crates found after '${{ inputs.resume_after }}'" + echo "Check the crate name matches exactly from 'cargo workspaces plan'" + exit 1 + fi + + echo "Will publish the following crates:" + echo "$CRATES" + echo "" + + echo "$CRATES" | while read crate; do + echo "Publishing $crate..." + cargo publish -p "$crate" --allow-dirty + echo "Waiting ${{ inputs.publish_interval }}s before next publish..." + sleep ${{ inputs.publish_interval }} + done + + - name: Show package versions + run: cargo workspaces list --long diff --git a/.github/workflows/ci-crates-publish.yml b/.github/workflows/ci-crates-publish.yml new file mode 100644 index 00000000000..3c7250d241c --- /dev/null +++ b/.github/workflows/ci-crates-publish.yml @@ -0,0 +1,86 @@ +name: Publish crates to crates.io + +on: + workflow_dispatch: + inputs: + publish_interval: + description: "Seconds to wait between publishes (600 for first publish, 60 after)" + required: false + default: "600" + type: string + backup_author: + description: "Second team member added as owner of the crate" + required: false + default: "jstuczyn" + type: string + +jobs: + publish: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + # `--publish-as-is` skips version bumping since that's done in a separate CI job. + - name: Publish + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + cargo workspaces publish \ + --publish-as-is \ + --publish-interval ${{ inputs.publish_interval }} + + - name: Show package versions + run: cargo workspaces list --long + + - name: Add team as crate owners + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + TEAM="github:nymtech:core" + echo "Checking and adding $TEAM as owner to workspace crates..." + + cargo workspaces list | while read crate; do + echo "Checking $crate..." + + if cargo owner --list "$crate" 2>/dev/null | grep -q "$TEAM"; then + echo " $TEAM already owns $crate, skipping" + else + echo " Adding $TEAM as owner of $crate..." + cargo owner --add "$TEAM" "$crate" + sleep 2 + fi + done + + echo "Done!" + + - name: Add secondary member as crate owner + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + TEAM_MEMBER="${{ inputs.backup_author }}" + echo "Checking and adding $TEAM_MEMBER as owner to workspace crates..." + + cargo workspaces list | while read crate; do + echo "Checking $crate..." + + if cargo owner --list "$crate" 2>/dev/null | grep -q "$TEAM_MEMBER"; then + echo " $TEAM_MEMBER already owns $crate, skipping" + else + echo " Adding $TEAM_MEMBER as owner of $crate..." + cargo owner --add "$TEAM_MEMBER" "$crate" + sleep 2 + fi + done + + echo "Done!" diff --git a/.github/workflows/ci-crates-version-bump.yml b/.github/workflows/ci-crates-version-bump.yml new file mode 100644 index 00000000000..790e2a062a7 --- /dev/null +++ b/.github/workflows/ci-crates-version-bump.yml @@ -0,0 +1,74 @@ +name: Bump crate versions + +on: + workflow_dispatch: + inputs: + version: + description: "Version to set (e.g. 1.21.0)" + required: true + type: string + +env: + CI_BOT_AUTHOR: "Nym bot" + CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" + +jobs: + version-bump: + runs-on: arc-linux-latest + permissions: + contents: write + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Configure git identity + run: | + git config --global user.name "${{ env.CI_BOT_AUTHOR }}" + git config --global user.email "${{ env.CI_BOT_EMAIL }}" + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Validate version format + run: | + if ! npx semver "${{ inputs.version }}"; then + echo "Error: '${{ inputs.version }}' is not valid semver" + exit 1 + fi + + - name: Get current version + id: current_version + run: | + VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Update workspace dependencies + run: | + sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + + - name: Bump versions + run: | + cargo workspaces version custom ${{ inputs.version }} \ + --no-git-commit \ + --yes + + - name: Commit and push version bump + run: | + git add -A + git commit -m "crates release: bump version to ${{ inputs.version }}" + git push + + - name: Show package versions + run: cargo workspaces list --long diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml deleted file mode 100644 index 2025df7bc48..00000000000 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Publish to crates.io (dry run) - -on: - workflow_dispatch: - inputs: - version: - description: "Version to publish (e.g. 1.21.0)" - required: true - type: string - -jobs: - publish-dry-run: - runs-on: arc-ubuntu-22.04-dind - steps: - - name: Checkout repo - uses: actions/checkout@v6 - - - name: Install rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install cargo-workspaces - run: cargo install cargo-workspaces - - - name: Bump versions (local only) - run: | - cargo workspaces version ${{ inputs.version }} \ - --no-git-commit \ - --no-git-tag \ - --no-git-push \ - --yes - - # Note: Dry run may show cascading dependency errors because packages - # aren't actually uploaded. Check if the missing dependency has an - # "aborting upload due to dry run" message earlier in the output - if so, - # it would succeed in a real publish since cargo-workspaces publishes in - # dependency order. cargo-workspaces doesn't fail on err, so there isn't - # a good way to check this at the moment. - - name: Publish (dry run) - run: cargo workspaces publish --from-git --dry-run --allow-dirty diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml deleted file mode 100644 index 68a0cd064ce..00000000000 --- a/.github/workflows/publish-crates-io.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Publish to crates.io - -on: - workflow_dispatch: - inputs: - version: - description: "Version to publish (e.g. 1.21.0)" - required: true - type: string - -jobs: - publish: - runs-on: arc-ubuntu-22.04-dind - steps: - - name: Checkout repo - uses: actions/checkout@v6 - - - name: Install rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install cargo-workspaces - run: cargo install cargo-workspaces - - # - name: Configure git - # run: | - # git config user.name "github-actions[bot]" - # git config user.email "github-actions[bot]@users.noreply.github.com" - - - name: Bump versions - run: | - cargo workspaces version ${{ inputs.version }} \ - --no-git-push \ - --no-git-tag \ - --yes - - - name: Publish - env: - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo workspaces publish --from-git --no-git-commit - - # - name: Push version commit - # run: | - # git push origin HEAD diff --git a/.github/workflows/resume-publish-crates-io.yml b/.github/workflows/resume-publish-crates-io.yml new file mode 100644 index 00000000000..ef322790d7c --- /dev/null +++ b/.github/workflows/resume-publish-crates-io.yml @@ -0,0 +1,41 @@ +name: Resume publish to crates.io + +on: + workflow_dispatch: + inputs: + resume_after: + description: "Last successfully published crate (will start from the next one)" + required: true + type: string + +jobs: + publish: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + - name: Publish remaining crates + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + # Get crates in publish order, skip up to and including resume_after + cargo workspaces plan 2>/dev/null | sed -n '/^${{ inputs.resume_after }}$/,$p' | tail -n +2 | while read crate; do + echo "Publishing $crate..." + cargo publish -p "$crate" --allow-dirty + echo "Waiting 600s before next publish..." + sleep 600 + done + + - name: Show package versions + run: cargo workspaces list --long diff --git a/Cargo.lock b/Cargo.lock index 30db56699bd..10195c74564 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2440,7 +2440,7 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "easy-addr" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-std", "quote", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "nym-api" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -5400,7 +5400,7 @@ dependencies = [ [[package]] name = "nym-api-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bs58", "cosmrs", @@ -5438,7 +5438,7 @@ dependencies = [ [[package]] name = "nym-async-file-watcher" -version = "1.20.1" +version = "1.20.4" dependencies = [ "futures", "log", @@ -5448,7 +5448,7 @@ dependencies = [ [[package]] name = "nym-authenticator-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "futures", @@ -5470,7 +5470,7 @@ dependencies = [ [[package]] name = "nym-authenticator-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "base64 0.22.1", "bincode", @@ -5494,7 +5494,7 @@ dependencies = [ [[package]] name = "nym-bandwidth-controller" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "log", @@ -5511,7 +5511,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "clap", "clap_complete", @@ -5550,7 +5550,7 @@ dependencies = [ [[package]] name = "nym-cache" -version = "1.20.1" +version = "1.20.4" dependencies = [ "tokio", ] @@ -5581,7 +5581,7 @@ dependencies = [ [[package]] name = "nym-cli-commands" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "base64 0.22.1", @@ -5677,7 +5677,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "base64 0.22.1", @@ -5738,7 +5738,7 @@ dependencies = [ [[package]] name = "nym-client-core-config-types" -version = "1.20.1" +version = "1.20.4" dependencies = [ "humantime-serde", "nym-config", @@ -5753,7 +5753,7 @@ dependencies = [ [[package]] name = "nym-client-core-gateways-storage" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -5772,7 +5772,7 @@ dependencies = [ [[package]] name = "nym-client-core-surb-storage" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -5818,7 +5818,7 @@ dependencies = [ [[package]] name = "nym-client-websocket-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-sphinx", "serde", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "nym-coconut-dkg-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -5840,7 +5840,7 @@ dependencies = [ [[package]] name = "nym-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "tracing", "tracing-test", @@ -5848,7 +5848,7 @@ dependencies = [ [[package]] name = "nym-compact-ecash" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "bs58", @@ -5872,7 +5872,7 @@ dependencies = [ [[package]] name = "nym-config" -version = "1.20.1" +version = "1.20.4" dependencies = [ "dirs", "handlebars", @@ -5904,7 +5904,7 @@ dependencies = [ [[package]] name = "nym-contracts-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -5921,7 +5921,7 @@ dependencies = [ [[package]] name = "nym-contracts-common-testing" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "cosmwasm-std", @@ -5935,7 +5935,7 @@ dependencies = [ [[package]] name = "nym-cpp-ffi" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -5998,7 +5998,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-lib" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "axum", @@ -6036,7 +6036,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "nym-credentials", @@ -6060,7 +6060,7 @@ dependencies = [ [[package]] name = "nym-credential-storage" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -6083,7 +6083,7 @@ dependencies = [ [[package]] name = "nym-credential-utils" -version = "1.20.1" +version = "1.20.4" dependencies = [ "log", "nym-bandwidth-controller", @@ -6101,7 +6101,7 @@ dependencies = [ [[package]] name = "nym-credential-verification" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "bs58", @@ -6129,7 +6129,7 @@ dependencies = [ [[package]] name = "nym-credentials" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "cosmrs", @@ -6153,7 +6153,7 @@ dependencies = [ [[package]] name = "nym-credentials-interface" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-bls12_381-fork", "nym-compact-ecash", @@ -6171,7 +6171,7 @@ dependencies = [ [[package]] name = "nym-crypto" -version = "1.20.1" +version = "1.20.4" dependencies = [ "aead", "aes 0.8.4", @@ -6243,7 +6243,7 @@ dependencies = [ [[package]] name = "nym-dkg" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bitvec", "bs58", @@ -6265,7 +6265,7 @@ dependencies = [ [[package]] name = "nym-ecash-contract-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bs58", "cosmwasm-schema", @@ -6279,7 +6279,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check" -version = "1.20.1" +version = "1.20.4" dependencies = [ "futures", "nym-ecash-signer-check-types", @@ -6295,7 +6295,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check-types" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-coconut-dkg-common", "nym-crypto", @@ -6310,7 +6310,7 @@ dependencies = [ [[package]] name = "nym-ecash-time" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-compact-ecash", "time", @@ -6318,7 +6318,7 @@ dependencies = [ [[package]] name = "nym-exit-policy" -version = "1.20.1" +version = "1.20.4" dependencies = [ "reqwest 0.12.28", "serde", @@ -6330,7 +6330,7 @@ dependencies = [ [[package]] name = "nym-ffi-shared" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -6406,7 +6406,7 @@ dependencies = [ [[package]] name = "nym-gateway-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "futures", "getrandom 0.2.16", @@ -6497,7 +6497,7 @@ dependencies = [ [[package]] name = "nym-gateway-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -6529,7 +6529,7 @@ dependencies = [ [[package]] name = "nym-gateway-stats-storage" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "nym-node-metrics", @@ -6545,7 +6545,7 @@ dependencies = [ [[package]] name = "nym-gateway-storage" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -6564,7 +6564,7 @@ dependencies = [ [[package]] name = "nym-go-ffi" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "lazy_static", @@ -6581,7 +6581,7 @@ dependencies = [ [[package]] name = "nym-group-contract-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cw-controllers", @@ -6592,7 +6592,7 @@ dependencies = [ [[package]] name = "nym-http-api-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "bincode", @@ -6624,7 +6624,7 @@ dependencies = [ [[package]] name = "nym-http-api-client-macro" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-http-api-client", "proc-macro-crate", @@ -6637,7 +6637,7 @@ dependencies = [ [[package]] name = "nym-http-api-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "axum", "axum-client-ip", @@ -6659,7 +6659,7 @@ dependencies = [ [[package]] name = "nym-id" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-credential-storage", "nym-credentials", @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "nym-inclusion-probability" -version = "1.20.1" +version = "1.20.4" dependencies = [ "log", "rand 0.8.5", @@ -6694,7 +6694,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "bytes", @@ -6709,7 +6709,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "bytes", @@ -6727,7 +6727,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-router" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -6803,7 +6803,7 @@ dependencies = [ [[package]] name = "nym-ledger" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bip32", "k256", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "nym-metrics" -version = "1.20.1" +version = "1.20.4" dependencies = [ "dashmap", "lazy_static", @@ -6899,7 +6899,7 @@ dependencies = [ [[package]] name = "nym-mixnet-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "dashmap", "futures", @@ -6916,7 +6916,7 @@ dependencies = [ [[package]] name = "nym-mixnet-contract-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bs58", "cosmwasm-schema", @@ -6939,7 +6939,7 @@ dependencies = [ [[package]] name = "nym-mixnode-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -6966,7 +6966,7 @@ dependencies = [ [[package]] name = "nym-multisig-contract-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -6981,7 +6981,7 @@ dependencies = [ [[package]] name = "nym-network-defaults" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cargo_metadata 0.19.2", "dotenvy", @@ -7166,7 +7166,7 @@ dependencies = [ [[package]] name = "nym-node-metrics" -version = "1.20.1" +version = "1.20.4" dependencies = [ "dashmap", "futures", @@ -7180,7 +7180,7 @@ dependencies = [ [[package]] name = "nym-node-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "celes", @@ -7300,7 +7300,7 @@ dependencies = [ [[package]] name = "nym-node-tester-utils" -version = "1.20.1" +version = "1.20.4" dependencies = [ "futures", "log", @@ -7340,7 +7340,7 @@ dependencies = [ [[package]] name = "nym-noise" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "arc-swap", @@ -7363,7 +7363,7 @@ dependencies = [ [[package]] name = "nym-noise-keys" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-crypto", "schemars 0.8.22", @@ -7373,7 +7373,7 @@ dependencies = [ [[package]] name = "nym-nonexhaustive-delayqueue" -version = "1.20.1" +version = "1.20.4" dependencies = [ "tokio", "tokio-stream", @@ -7399,7 +7399,7 @@ dependencies = [ [[package]] name = "nym-ordered-buffer" -version = "1.20.1" +version = "1.20.4" dependencies = [ "log", "thiserror 2.0.17", @@ -7407,7 +7407,7 @@ dependencies = [ [[package]] name = "nym-outfox" -version = "1.20.1" +version = "1.20.4" dependencies = [ "blake3", "chacha20", @@ -7426,7 +7426,7 @@ dependencies = [ [[package]] name = "nym-pemstore" -version = "1.20.1" +version = "1.20.4" dependencies = [ "pem", "tracing", @@ -7435,7 +7435,7 @@ dependencies = [ [[package]] name = "nym-performance-contract-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7448,7 +7448,7 @@ dependencies = [ [[package]] name = "nym-pool-contract-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7461,7 +7461,7 @@ dependencies = [ [[package]] name = "nym-registration-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -7488,7 +7488,7 @@ dependencies = [ [[package]] name = "nym-registration-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "nym-authenticator-requests", @@ -7504,7 +7504,7 @@ dependencies = [ [[package]] name = "nym-sdk" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -7563,7 +7563,7 @@ dependencies = [ [[package]] name = "nym-serde-helpers" -version = "1.20.1" +version = "1.20.4" dependencies = [ "base64 0.22.1", "bs58", @@ -7574,7 +7574,7 @@ dependencies = [ [[package]] name = "nym-service-provider-requests-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "serde", @@ -7583,19 +7583,15 @@ dependencies = [ [[package]] name = "nym-service-providers-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ - "anyhow", "async-trait", "log", "nym-bin-common", - "nym-sdk", - "nym-socks5-requests", "nym-sphinx-anonymous-replies", "serde", "serde_json", "thiserror 2.0.17", - "tokio", ] [[package]] @@ -7653,7 +7649,7 @@ dependencies = [ [[package]] name = "nym-socks5-client-core" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "dirs", @@ -7685,7 +7681,7 @@ dependencies = [ [[package]] name = "nym-socks5-proxy-helpers" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -7700,7 +7696,7 @@ dependencies = [ [[package]] name = "nym-socks5-requests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "log", @@ -7715,7 +7711,7 @@ dependencies = [ [[package]] name = "nym-sphinx" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-crypto", "nym-metrics", @@ -7741,7 +7737,7 @@ dependencies = [ [[package]] name = "nym-sphinx-acknowledgements" -version = "1.20.1" +version = "1.20.4" dependencies = [ "generic-array 0.14.7", "nym-crypto", @@ -7759,7 +7755,7 @@ dependencies = [ [[package]] name = "nym-sphinx-addressing" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bincode", "nym-crypto", @@ -7772,7 +7768,7 @@ dependencies = [ [[package]] name = "nym-sphinx-anonymous-replies" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bs58", "nym-crypto", @@ -7790,7 +7786,7 @@ dependencies = [ [[package]] name = "nym-sphinx-chunking" -version = "1.20.1" +version = "1.20.4" dependencies = [ "dashmap", "log", @@ -7808,7 +7804,7 @@ dependencies = [ [[package]] name = "nym-sphinx-cover" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-crypto", "nym-sphinx-acknowledgements", @@ -7825,7 +7821,7 @@ dependencies = [ [[package]] name = "nym-sphinx-forwarding" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-anonymous-replies", @@ -7836,7 +7832,7 @@ dependencies = [ [[package]] name = "nym-sphinx-framing" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bytes", "cfg-if", @@ -7853,7 +7849,7 @@ dependencies = [ [[package]] name = "nym-sphinx-params" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-crypto", "nym-sphinx-types", @@ -7863,7 +7859,7 @@ dependencies = [ [[package]] name = "nym-sphinx-routing" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-types", @@ -7872,7 +7868,7 @@ dependencies = [ [[package]] name = "nym-sphinx-types" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-outfox", "sphinx-packet", @@ -7881,7 +7877,7 @@ dependencies = [ [[package]] name = "nym-sqlx-pool-guard" -version = "1.20.1" +version = "1.20.4" dependencies = [ "proc_pidinfo", "sqlx", @@ -7924,7 +7920,7 @@ dependencies = [ [[package]] name = "nym-statistics-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "futures", "log", @@ -7949,7 +7945,7 @@ dependencies = [ [[package]] name = "nym-store-cipher" -version = "1.20.1" +version = "1.20.4" dependencies = [ "aes-gcm", "argon2", @@ -7964,7 +7960,7 @@ dependencies = [ [[package]] name = "nym-task" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "cfg-if", @@ -7982,7 +7978,7 @@ dependencies = [ [[package]] name = "nym-test-utils" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "futures", @@ -7994,7 +7990,7 @@ dependencies = [ [[package]] name = "nym-ticketbooks-merkle" -version = "1.20.1" +version = "1.20.4" dependencies = [ "nym-credentials-interface", "nym-serde-helpers", @@ -8011,7 +8007,7 @@ dependencies = [ [[package]] name = "nym-topology" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "nym-api-requests", @@ -8033,7 +8029,7 @@ dependencies = [ [[package]] name = "nym-tun" -version = "1.20.1" +version = "1.20.4" dependencies = [ "etherparse", "log", @@ -8045,7 +8041,7 @@ dependencies = [ [[package]] name = "nym-types" -version = "1.20.1" +version = "1.20.4" dependencies = [ "base64 0.22.1", "cosmrs", @@ -8076,7 +8072,7 @@ dependencies = [ [[package]] name = "nym-upgrade-mode-check" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "jwt-simple", @@ -8094,7 +8090,7 @@ dependencies = [ [[package]] name = "nym-validator-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -8188,7 +8184,7 @@ dependencies = [ [[package]] name = "nym-verloc" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -8209,7 +8205,7 @@ dependencies = [ [[package]] name = "nym-vesting-contract-common" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -8223,7 +8219,7 @@ dependencies = [ [[package]] name = "nym-vpn-api-lib-wasm" -version = "1.20.1" +version = "1.20.4" dependencies = [ "bs58", "getrandom 0.2.16", @@ -8268,7 +8264,7 @@ dependencies = [ [[package]] name = "nym-wasm-client-core" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "console_error_panic_hook", @@ -8302,7 +8298,7 @@ dependencies = [ [[package]] name = "nym-wasm-storage" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "getrandom 0.2.16", @@ -8318,7 +8314,7 @@ dependencies = [ [[package]] name = "nym-wasm-utils" -version = "1.20.1" +version = "1.20.4" dependencies = [ "console_error_panic_hook", "futures", @@ -8334,7 +8330,7 @@ dependencies = [ [[package]] name = "nym-wireguard" -version = "1.20.1" +version = "1.20.4" dependencies = [ "base64 0.22.1", "defguard_wireguard_rs", @@ -8361,7 +8357,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "nym-http-api-client", @@ -8371,7 +8367,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-server" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -8391,7 +8387,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-shared" -version = "1.20.1" +version = "1.20.4" dependencies = [ "axum", "bincode", @@ -8404,7 +8400,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-tests" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "axum", @@ -8428,7 +8424,7 @@ dependencies = [ [[package]] name = "nym-wireguard-types" -version = "1.20.1" +version = "1.20.4" dependencies = [ "base64 0.22.1", "nym-crypto", @@ -8440,7 +8436,7 @@ dependencies = [ [[package]] name = "nymvisor" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "bytes", @@ -8518,7 +8514,7 @@ dependencies = [ [[package]] name = "nyxd-scraper-shared" -version = "1.20.1" +version = "1.20.4" dependencies = [ "async-trait", "base64 0.22.1", @@ -13891,7 +13887,7 @@ dependencies = [ [[package]] name = "zknym-lib" -version = "1.20.1" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -13964,7 +13960,7 @@ dependencies = [ [[package]] name = "zulip-client" -version = "1.20.1" +version = "1.20.4" dependencies = [ "itertools 0.14.0", "nym-bin-common", diff --git a/Cargo.toml b/Cargo.toml index 7cf7fbe6d2a..a0371959058 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -206,7 +206,7 @@ edition = "2024" license = "Apache-2.0" rust-version = "1.85" readme = "README.md" -version = "1.20.1" +version = "1.20.4" [workspace.dependencies] addr = "0.15.6" @@ -381,7 +381,7 @@ url = "2.5" utoipa = "5.2" utoipa-swagger-ui = "8.1" utoipauto = "0.2" -uuid = "*" +uuid = "1.19.0" vergen = { version = "=8.3.1", default-features = false } vergen-gitcl = { version = "1.0.8", default-features = false } walkdir = "2" @@ -391,105 +391,105 @@ zeroize = "1.7.0" prometheus = { version = "0.14.0" } # Workspace dep definitions required by crates.io publication - we need a workspace version since `cargo workspaces` doesn't work with path imports from crate manifests -nym-api-requests = { version = "1.20.1", path = "nym-api/nym-api-requests" } -nym-authenticator-requests = { version = "1.20.1", path = "common/authenticator-requests" } -nym-async-file-watcher = { version = "1.20.1", path = "common/async-file-watcher" } -nym-authenticator-client = { version = "1.20.1", path = "nym-authenticator-client" } -nym-bandwidth-controller = { version = "1.20.1", path = "common/bandwidth-controller" } -nym-bin-common = { version = "1.20.1", path = "common/bin-common" } -nym-cache = { version = "1.20.1", path = "common/nym-cache" } -nym-client-core = { version = "1.20.1", path = "common/client-core", default-features = false } -nym-client-core-config-types = { version = "1.20.1", path = "common/client-core/config-types" } -nym-client-core-gateways-storage = { version = "1.20.1", path = "common/client-core/gateways-storage" } -nym-client-core-surb-storage = { version = "1.20.1", path = "common/client-core/surb-storage" } -nym-client-websocket-requests = { version = "1.20.1", path = "clients/native/websocket-requests" } -nym-common = { version = "1.20.1", path = "common/nym-common" } -nym-compact-ecash = { version = "1.20.1", path = "common/nym_offline_compact_ecash" } -nym-config = { version = "1.20.1", path = "common/config" } -nym-contracts-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/contracts-common" } -nym-coconut-dkg-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/coconut-dkg" } -nym-credential-storage = { version = "1.20.1", path = "common/credential-storage" } -nym-credential-utils = { version = "1.20.1", path = "common/credential-utils" } -nym-credential-proxy-lib = { version = "1.20.1", path = "common/credential-proxy" } -nym-credentials = { version = "1.20.1", path = "common/credentials", default-features = false } -nym-credentials-interface = { version = "1.20.1", path = "common/credentials-interface" } -nym-credential-proxy-requests = { version = "1.20.1", path = "nym-credential-proxy/nym-credential-proxy-requests", default-features = false } -nym-credential-verification = { version = "1.20.1", path = "common/credential-verification" } -nym-crypto = { version = "1.20.1", path = "common/crypto", default-features = false } -nym-dkg = { version = "1.20.1", path = "common/dkg" } -nym-ecash-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/ecash-contract" } -nym-ecash-signer-check = { version = "1.20.1", path = "common/ecash-signer-check" } -nym-ecash-signer-check-types = { version = "1.20.1", path = "common/ecash-signer-check-types" } -nym-ecash-time = { version = "1.20.1", path = "common/ecash-time" } -nym-exit-policy = { version = "1.20.1", path = "common/exit-policy" } -nym-ffi-shared = { version = "1.20.1", path = "sdk/ffi/shared" } -nym-gateway-client = { version = "1.20.1", path = "common/client-libs/gateway-client", default-features = false } -nym-gateway-requests = { version = "1.20.1", path = "common/gateway-requests" } -nym-gateway-storage = { version = "1.20.1", path = "common/gateway-storage" } -nym-gateway-stats-storage = { version = "1.20.1", path = "common/gateway-stats-storage" } -nym-group-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/group-contract" } -nym-http-api-client = { version = "1.20.1", path = "common/http-api-client" } -nym-http-api-client-macro = { version = "1.20.1", path = "common/http-api-client-macro" } -nym-http-api-common = { version = "1.20.1", path = "common/http-api-common", default-features = false } -nym-id = { version = "1.20.1", path = "common/nym-id" } -nym-ip-packet-client = { version = "1.20.1", path = "nym-ip-packet-client" } -nym-ip-packet-requests = { version = "1.20.1", path = "common/ip-packet-requests" } -nym-metrics = { version = "1.20.1", path = "common/nym-metrics" } -nym-mixnet-client = { version = "1.20.1", path = "common/client-libs/mixnet-client" } -nym-mixnet-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/mixnet-contract" } -nym-multisig-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/multisig-contract" } -nym-network-defaults = { version = "1.20.1", path = "common/network-defaults" } -nym-node-tester-utils = { version = "1.20.1", path = "common/node-tester-utils" } -nym-noise = { version = "1.20.1", path = "common/nymnoise" } -nym-noise-keys = { version = "1.20.1", path = "common/nymnoise/keys" } -nym-nonexhaustive-delayqueue = { version = "1.20.1", path = "common/nonexhaustive-delayqueue" } -nym-node-requests = { version = "1.20.1", path = "nym-node/nym-node-requests", default-features = false } -nym-node-metrics = { version = "1.20.1", path = "nym-node/nym-node-metrics" } -nym-ordered-buffer = { version = "1.20.1", path = "common/socks5/ordered-buffer" } -nym-outfox = { version = "1.20.1", path = "nym-outfox" } -nym-registration-common = { version = "1.20.1", path = "common/registration" } -nym-pemstore = { version = "1.20.1", path = "common/pemstore" } -nym-performance-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/nym-performance-contract" } -nym-sdk = { version = "1.20.1", path = "sdk/rust/nym-sdk" } -nym-serde-helpers = { version = "1.20.1", path = "common/serde-helpers" } -nym-service-providers-common = { version = "1.20.1", path = "service-providers/common" } -nym-service-provider-requests-common = { version = "1.20.1", path = "common/service-provider-requests-common" } -nym-socks5-client-core = { version = "1.20.1", path = "common/socks5-client-core" } -nym-socks5-proxy-helpers = { version = "1.20.1", path = "common/socks5/proxy-helpers" } -nym-socks5-requests = { version = "1.20.1", path = "common/socks5/requests" } -nym-sphinx = { version = "1.20.1", path = "common/nymsphinx" } -nym-sphinx-acknowledgements = { version = "1.20.1", path = "common/nymsphinx/acknowledgements" } -nym-sphinx-addressing = { version = "1.20.1", path = "common/nymsphinx/addressing" } -nym-sphinx-anonymous-replies = { version = "1.20.1", path = "common/nymsphinx/anonymous-replies" } -nym-sphinx-chunking = { version = "1.20.1", path = "common/nymsphinx/chunking" } -nym-sphinx-cover = { version = "1.20.1", path = "common/nymsphinx/cover" } -nym-sphinx-forwarding = { version = "1.20.1", path = "common/nymsphinx/forwarding" } -nym-sphinx-framing = { version = "1.20.1", path = "common/nymsphinx/framing" } -nym-sphinx-params = { version = "1.20.1", path = "common/nymsphinx/params" } -nym-sphinx-routing = { version = "1.20.1", path = "common/nymsphinx/routing" } -nym-sphinx-types = { version = "1.20.1", path = "common/nymsphinx/types" } -nym-statistics-common = { version = "1.20.1", path = "common/statistics" } -nym-store-cipher = { version = "1.20.1", path = "common/store-cipher" } -nym-task = { version = "1.20.1", path = "common/task" } -nym-tun = { version = "1.20.1", path = "common/tun" } -nym-test-utils = { version = "1.20.1", path = "common/test-utils" } -nym-ticketbooks-merkle = { version = "1.20.1", path = "common/ticketbooks-merkle" } -nym-topology = { version = "1.20.1", path = "common/topology" } -nym-types = { version = "1.20.1", path = "common/types" } -nym-upgrade-mode-check = { version = "1.20.1", path = "common/upgrade-mode-check" } -nym-validator-client = { version = "1.20.1", path = "common/client-libs/validator-client", default-features = false } -nym-vesting-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/vesting-contract" } -nym-verloc = { version = "1.20.1", path = "common/verloc" } -nym-wireguard = { version = "1.20.1", path = "common/wireguard" } -nym-wireguard-types = { version = "1.20.1", path = "common/wireguard-types" } -nym-wireguard-private-metadata-shared = { version = "1.20.1", path = "common/wireguard-private-metadata/shared" } -nym-wireguard-private-metadata-client = { version = "1.20.1", path = "common/wireguard-private-metadata/client" } -nym-wireguard-private-metadata-server = { version = "1.20.1", path = "common/wireguard-private-metadata/server" } +nym-api-requests = { version = "1.20.4", path = "nym-api/nym-api-requests" } +nym-authenticator-requests = { version = "1.20.4", path = "common/authenticator-requests" } +nym-async-file-watcher = { version = "1.20.4", path = "common/async-file-watcher" } +nym-authenticator-client = { version = "1.20.4", path = "nym-authenticator-client" } +nym-bandwidth-controller = { version = "1.20.4", path = "common/bandwidth-controller" } +nym-bin-common = { version = "1.20.4", path = "common/bin-common" } +nym-cache = { version = "1.20.4", path = "common/nym-cache" } +nym-client-core = { version = "1.20.4", path = "common/client-core", default-features = false } +nym-client-core-config-types = { version = "1.20.4", path = "common/client-core/config-types" } +nym-client-core-gateways-storage = { version = "1.20.4", path = "common/client-core/gateways-storage" } +nym-client-core-surb-storage = { version = "1.20.4", path = "common/client-core/surb-storage" } +nym-client-websocket-requests = { version = "1.20.4", path = "clients/native/websocket-requests" } +nym-common = { version = "1.20.4", path = "common/nym-common" } +nym-compact-ecash = { version = "1.20.4", path = "common/nym_offline_compact_ecash" } +nym-config = { version = "1.20.4", path = "common/config" } +nym-contracts-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/contracts-common" } +nym-coconut-dkg-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/coconut-dkg" } +nym-credential-storage = { version = "1.20.4", path = "common/credential-storage" } +nym-credential-utils = { version = "1.20.4", path = "common/credential-utils" } +nym-credential-proxy-lib = { version = "1.20.4", path = "common/credential-proxy" } +nym-credentials = { version = "1.20.4", path = "common/credentials", default-features = false } +nym-credentials-interface = { version = "1.20.4", path = "common/credentials-interface" } +nym-credential-proxy-requests = { version = "1.20.4", path = "nym-credential-proxy/nym-credential-proxy-requests", default-features = false } +nym-credential-verification = { version = "1.20.4", path = "common/credential-verification" } +nym-crypto = { version = "1.20.4", path = "common/crypto", default-features = false } +nym-dkg = { version = "1.20.4", path = "common/dkg" } +nym-ecash-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/ecash-contract" } +nym-ecash-signer-check = { version = "1.20.4", path = "common/ecash-signer-check" } +nym-ecash-signer-check-types = { version = "1.20.4", path = "common/ecash-signer-check-types" } +nym-ecash-time = { version = "1.20.4", path = "common/ecash-time" } +nym-exit-policy = { version = "1.20.4", path = "common/exit-policy" } +nym-ffi-shared = { version = "1.20.4", path = "sdk/ffi/shared" } +nym-gateway-client = { version = "1.20.4", path = "common/client-libs/gateway-client", default-features = false } +nym-gateway-requests = { version = "1.20.4", path = "common/gateway-requests" } +nym-gateway-storage = { version = "1.20.4", path = "common/gateway-storage" } +nym-gateway-stats-storage = { version = "1.20.4", path = "common/gateway-stats-storage" } +nym-group-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/group-contract" } +nym-http-api-client = { version = "1.20.4", path = "common/http-api-client" } +nym-http-api-client-macro = { version = "1.20.4", path = "common/http-api-client-macro" } +nym-http-api-common = { version = "1.20.4", path = "common/http-api-common", default-features = false } +nym-id = { version = "1.20.4", path = "common/nym-id" } +nym-ip-packet-client = { version = "1.20.4", path = "nym-ip-packet-client" } +nym-ip-packet-requests = { version = "1.20.4", path = "common/ip-packet-requests" } +nym-metrics = { version = "1.20.4", path = "common/nym-metrics" } +nym-mixnet-client = { version = "1.20.4", path = "common/client-libs/mixnet-client" } +nym-mixnet-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/mixnet-contract" } +nym-multisig-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/multisig-contract" } +nym-network-defaults = { version = "1.20.4", path = "common/network-defaults" } +nym-node-tester-utils = { version = "1.20.4", path = "common/node-tester-utils" } +nym-noise = { version = "1.20.4", path = "common/nymnoise" } +nym-noise-keys = { version = "1.20.4", path = "common/nymnoise/keys" } +nym-nonexhaustive-delayqueue = { version = "1.20.4", path = "common/nonexhaustive-delayqueue" } +nym-node-requests = { version = "1.20.4", path = "nym-node/nym-node-requests", default-features = false } +nym-node-metrics = { version = "1.20.4", path = "nym-node/nym-node-metrics" } +nym-ordered-buffer = { version = "1.20.4", path = "common/socks5/ordered-buffer" } +nym-outfox = { version = "1.20.4", path = "nym-outfox" } +nym-registration-common = { version = "1.20.4", path = "common/registration" } +nym-pemstore = { version = "1.20.4", path = "common/pemstore" } +nym-performance-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/nym-performance-contract" } +nym-sdk = { version = "1.20.4", path = "sdk/rust/nym-sdk" } +nym-serde-helpers = { version = "1.20.4", path = "common/serde-helpers" } +nym-service-providers-common = { version = "1.20.4", path = "service-providers/common" } +nym-service-provider-requests-common = { version = "1.20.4", path = "common/service-provider-requests-common" } +nym-socks5-client-core = { version = "1.20.4", path = "common/socks5-client-core" } +nym-socks5-proxy-helpers = { version = "1.20.4", path = "common/socks5/proxy-helpers" } +nym-socks5-requests = { version = "1.20.4", path = "common/socks5/requests" } +nym-sphinx = { version = "1.20.4", path = "common/nymsphinx" } +nym-sphinx-acknowledgements = { version = "1.20.4", path = "common/nymsphinx/acknowledgements" } +nym-sphinx-addressing = { version = "1.20.4", path = "common/nymsphinx/addressing" } +nym-sphinx-anonymous-replies = { version = "1.20.4", path = "common/nymsphinx/anonymous-replies" } +nym-sphinx-chunking = { version = "1.20.4", path = "common/nymsphinx/chunking" } +nym-sphinx-cover = { version = "1.20.4", path = "common/nymsphinx/cover" } +nym-sphinx-forwarding = { version = "1.20.4", path = "common/nymsphinx/forwarding" } +nym-sphinx-framing = { version = "1.20.4", path = "common/nymsphinx/framing" } +nym-sphinx-params = { version = "1.20.4", path = "common/nymsphinx/params" } +nym-sphinx-routing = { version = "1.20.4", path = "common/nymsphinx/routing" } +nym-sphinx-types = { version = "1.20.4", path = "common/nymsphinx/types" } +nym-statistics-common = { version = "1.20.4", path = "common/statistics" } +nym-store-cipher = { version = "1.20.4", path = "common/store-cipher" } +nym-task = { version = "1.20.4", path = "common/task" } +nym-tun = { version = "1.20.4", path = "common/tun" } +nym-test-utils = { version = "1.20.4", path = "common/test-utils" } +nym-ticketbooks-merkle = { version = "1.20.4", path = "common/ticketbooks-merkle" } +nym-topology = { version = "1.20.4", path = "common/topology" } +nym-types = { version = "1.20.4", path = "common/types" } +nym-upgrade-mode-check = { version = "1.20.4", path = "common/upgrade-mode-check" } +nym-validator-client = { version = "1.20.4", path = "common/client-libs/validator-client", default-features = false } +nym-vesting-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/vesting-contract" } +nym-verloc = { version = "1.20.4", path = "common/verloc" } +nym-wireguard = { version = "1.20.4", path = "common/wireguard" } +nym-wireguard-types = { version = "1.20.4", path = "common/wireguard-types" } +nym-wireguard-private-metadata-shared = { version = "1.20.4", path = "common/wireguard-private-metadata/shared" } +nym-wireguard-private-metadata-client = { version = "1.20.4", path = "common/wireguard-private-metadata/client" } +nym-wireguard-private-metadata-server = { version = "1.20.4", path = "common/wireguard-private-metadata/server" } nym-sqlx-pool-guard = { version = "1.2.0", path = "nym-sqlx-pool-guard" } -nym-wasm-client-core = { version = "1.20.1", path = "common/wasm/client-core" } -nym-wasm-storage = { version = "1.20.1", path = "common/wasm/storage" } -nym-wasm-utils = { version = "1.20.1", path = "common/wasm/utils", default-features = false } -nyxd-scraper-shared = { version = "1.20.1", path = "common/nyxd-scraper-shared" } +nym-wasm-client-core = { version = "1.20.4", path = "common/wasm/client-core" } +nym-wasm-storage = { version = "1.20.4", path = "common/wasm/storage" } +nym-wasm-utils = { version = "1.20.4", path = "common/wasm/utils", default-features = false } +nyxd-scraper-shared = { version = "1.20.4", path = "common/nyxd-scraper-shared" } # coconut/DKG related # unfortunately until https://github.com/zkcrypto/nym-bls12_381-fork/issues/10 is resolved, we have to rely on the fork diff --git a/common/network-defaults/Cargo.toml b/common/network-defaults/Cargo.toml index 5c3a73e2793..a5d01e48fcc 100644 --- a/common/network-defaults/Cargo.toml +++ b/common/network-defaults/Cargo.toml @@ -6,6 +6,9 @@ edition.workspace = true authors.workspace = true license.workspace = true repository.workspace = true +# Exclude build.rs from published crate - it's only used for dev-time sync +# of env files and requires workspace context +exclude = ["build.rs"] [dependencies] dotenvy = { workspace = true, optional = true } diff --git a/common/nym-kcp/Cargo.toml b/common/nym-kcp/Cargo.toml index 488c9fff8a6..3f435e94e54 100644 --- a/common/nym-kcp/Cargo.toml +++ b/common/nym-kcp/Cargo.toml @@ -6,6 +6,7 @@ edition = { workspace = true } authors = { workspace = true } license = { workspace = true } repository = { workspace = true } +publish = false [lib] name = "nym_kcp" diff --git a/contracts/Cargo.lock b/contracts/Cargo.lock index 92d73ca89e6..f7f8f0ccfeb 100644 --- a/contracts/Cargo.lock +++ b/contracts/Cargo.lock @@ -825,7 +825,7 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "easy-addr" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-std", "quote", @@ -1248,7 +1248,9 @@ dependencies = [ [[package]] name = "nym-coconut-dkg-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a95dc43ef8954a4f79846e3224434cf389d4a9c14b77f526dae3cfd2221c6141" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1261,7 +1263,9 @@ dependencies = [ [[package]] name = "nym-contracts-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47bb3e8427c193cd500c802274b11879086863c3643525b6ece3e9ab1c77bddc" dependencies = [ "bs58", "cosmwasm-schema", @@ -1275,7 +1279,9 @@ dependencies = [ [[package]] name = "nym-contracts-common-testing" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3628aac6715e844f3ab20e3b8ae8c4684f144ccb78e205f002c1c3ae375e956" dependencies = [ "anyhow", "cosmwasm-std", @@ -1289,7 +1295,9 @@ dependencies = [ [[package]] name = "nym-crypto" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b710addc28c9950dd961e7dd3837ef3b479492d2b21b5f2437eb7d2899403027" dependencies = [ "base64 0.22.1", "bs58", @@ -1335,7 +1343,9 @@ dependencies = [ [[package]] name = "nym-ecash-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022e85291bf51877fbbf4688bc3762c605fdaee3b98c6407414f7c358bc5610" dependencies = [ "bs58", "cosmwasm-schema", @@ -1349,7 +1359,9 @@ dependencies = [ [[package]] name = "nym-group-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb13102740426a4a2b683f54bbd6614fe9ecd745f5117bcf197c49c300b15edf" dependencies = [ "cosmwasm-schema", "cw-controllers", @@ -1384,7 +1396,9 @@ dependencies = [ [[package]] name = "nym-mixnet-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c21bceb3bb8ee2789851b3f381fc035485af825bf7290b7c99a5af4e8f6ba1" dependencies = [ "bs58", "cosmwasm-schema", @@ -1404,7 +1418,9 @@ dependencies = [ [[package]] name = "nym-multisig-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a20b931ee849f6179ce2b387accd058720017f644ffbc8c2422f3e9ac3ff54" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1419,7 +1435,9 @@ dependencies = [ [[package]] name = "nym-network-defaults" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9834193b4641acdf9f360aea684a6bd841cad287930bc0d7c3241a133756464" dependencies = [ "cargo_metadata 0.19.2", "regex", @@ -1427,7 +1445,9 @@ dependencies = [ [[package]] name = "nym-pemstore" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03077f9ebeb40caf8aa8e6f7bf8728449f73733e7a246986e492fa34ad3e70ab" dependencies = [ "pem", "tracing", @@ -1455,7 +1475,9 @@ dependencies = [ [[package]] name = "nym-performance-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42129a72f4b0dc0304a48b0ca1769b27694d913687ace5692d4c6924ca9f2a13" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1483,7 +1505,9 @@ dependencies = [ [[package]] name = "nym-pool-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70239cc26beda3ad19289188c50d554522af29646d7d3f855bda6fc8ed332fe7" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1495,7 +1519,9 @@ dependencies = [ [[package]] name = "nym-sphinx-types" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba662d39fd6da9e13166fa1162ff41c2cfaed78a77c70df72fbda6fef5eb4f5" dependencies = [ "sphinx-packet", "thiserror 2.0.12", @@ -1524,7 +1550,9 @@ dependencies = [ [[package]] name = "nym-vesting-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676c2793efbf9ccdf86bb788c903f778a2d5993a5174729303f9511a297f4ca8" dependencies = [ "cosmwasm-schema", "cosmwasm-std", diff --git a/contracts/Cargo.toml b/contracts/Cargo.toml index edcaf4b3355..6659cb88048 100644 --- a/contracts/Cargo.toml +++ b/contracts/Cargo.toml @@ -57,34 +57,25 @@ schemars = "0.8.16" thiserror = "2.0.11" -# Common crates from parent workspace (paths relative to contracts/) -# -# TODO: Once these crates are published to crates.io, switch from path dependencies -# to crates.io versions. -# -# TODO add a [patch.crates-io] section at the bottom for local development if you need to use a modded version of common import instead e.g.: -# -# [patch.crates-io] -# nym-contracts-common = { path = "../common/cosmwasm-smart-contracts/contracts-common" } -# easy-addr = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/easy_addr" } -nym-coconut-dkg-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/coconut-dkg" } -nym-contracts-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/contracts-common" } -nym-contracts-common-testing = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/contracts-common-testing" } -nym-crypto = { version = "1.20.1", path = "../common/crypto", default-features = false } -nym-ecash-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/ecash-contract" } -nym-group-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/group-contract" } -nym-mixnet-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/mixnet-contract" } -nym-multisig-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/multisig-contract" } -nym-network-defaults = { version = "1.20.1", path = "../common/network-defaults", default-features = false } -nym-performance-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/nym-performance-contract" } -nym-pool-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/nym-pool-contract" } -nym-vesting-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/vesting-contract" } +# For local development with modifications, add a [patch.crates-io] section (see bottom of file) +nym-coconut-dkg-common = "1.20.4" +nym-contracts-common = "1.20.4" +nym-contracts-common-testing = "1.20.4" +nym-crypto = { version = "1.20.4", default-features = false } +nym-ecash-contract-common = "1.20.4" +nym-group-contract-common = "1.20.4" +nym-mixnet-contract-common = "1.20.4" +nym-multisig-contract-common = "1.20.4" +nym-network-defaults = { version = "1.20.4", default-features = false } +nym-performance-contract-common = "1.20.4" +nym-pool-contract-common = "1.20.4" +nym-vesting-contract-common = "1.20.4" # Aliases for crates that some contracts import under different names -contracts-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/contracts-common", package = "nym-contracts-common" } -mixnet-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/mixnet-contract", package = "nym-mixnet-contract-common" } -vesting-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/vesting-contract", package = "nym-vesting-contract-common" } +contracts-common = { version = "1.20.4", package = "nym-contracts-common" } +mixnet-contract-common = { version = "1.20.4", package = "nym-mixnet-contract-common" } +vesting-contract-common = { version = "1.20.4", package = "nym-vesting-contract-common" } # Internal contract workspace members (for cross-contract testing) cw3-flex-multisig = { version = "2.0.0", path = "multisig/cw3-flex-multisig" } @@ -101,3 +92,7 @@ exit = "deny" panic = "deny" unimplemented = "deny" unreachable = "deny" + +# For local development, import via path instead of crates.io, e.g. +# [patch.crates-io] +# nym-coconut-dkg-common = { path = "../common/cosmwasm-smart-contracts/coconut-dkg" } diff --git a/crate-publishing.md b/crate-publishing.md index 780194e8b73..86dc0988d23 100644 --- a/crate-publishing.md +++ b/crate-publishing.md @@ -9,14 +9,26 @@ This version is defined in the `[workspace.package]` section of the root monorep ## When Developing If you add a workspace dependency to the SDK when developing, make sure to add this to the workspace dependencies in the root monorepo `Cargo.toml`. -## Publishing +## Check local publication ``` # List crates to publish cargo workspaces list -# Dry run - check for compilation or other problems +# Dry run locally - check for compilation or other problems cargo workspaces publish --no-git-commit --dry-run - -# Publish -TODO ``` + +## CI +There are several workflows that should be run in the following order: +- `ci-crates-publish-dry-run`: **run this first!** This is a remote dry-run on a runner. This greps for any errors that would be a problem when we're not dry-running. It doesn't catch all errors, as `dry-run` has a known issue where, assuming that 2 new crates are being uploaded, and crate B relies on crate A, if crate A isn't on crates.io (which it won't be, since you're dry-running publication), then since `cargo workspaces publish` only checks for available versions on crates.io, it will error. We don't want the CI to fail in that case. +- `ci-crates-version-bump`: this bumps the versions of the workspace + dependencies to the passed version, and then commits the change. This is its own CI job so that we don't get into sticky situations whereby the version bump + commit happens, but the publication step fails. +- `ci-crates-publish`: this publishes the crates. So long as you're not uploading more than 5 new crates, pass `60` as the `publish_interval`. This is to get around [crates.io rate limiting](https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L24). Pass the Github handle of whoever should be the backup author of the crate for security redundency (see the section below) as the second arg. + +> There is also `ci-crates-publish-resume` which is there in case a publication run fails and needs to be restarted part way through the list of unbumped/unpublished crates. Pass the previously bumped/published crate in the list output of `cargo workspaces list` + +## Crates.io Authors +Since Github teams have [limited ownership / mod rights](https://doc.rust-lang.org/cargo/reference/publishing.html#cargo-owner) of crates, and we cannot create a `CARGO_REGISTRY_TOKEN` on behalf of the Nym Github org. As such, we are currently using personal cargo tokens generated by team members (currently Max), and adding the Nym Github org as an owner in the CI job. + +However, since the Github org cannot add or modify owners, are also adding a second user author as a redundency, on the offchance that Max loses access to his Crates.io / Github account, gets struck by lightning, etc. This is the author passed as the second argument to the `ci-crates-publish` CI, and if none is passed, defaults to [https://github.com/jstuczyn](https://github.com/jstuczyn) since he is the Github org owner. + +Authors can also be changed by running `scripts/add-crates-owners.sh`. diff --git a/scripts/add-crates-owners.sh b/scripts/add-crates-owners.sh new file mode 100755 index 00000000000..813d2c96404 --- /dev/null +++ b/scripts/add-crates-owners.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# This is a local version of a script to add the nym github org as owners of a crate, aside from whoever's CI token is being used. +# If you want to add another team member as backup owner, comment out line 5 and use their github handle and they will be invited to be an owner on crates.io, e.g.: +# TEAM="jstuczyn" +TEAM="github:nymtech:core" + +echo "Checking and adding $TEAM as owner to workspace crates..." + +cargo workspaces list | while read crate; do + echo "Checking $crate..." + + if cargo owner --list "$crate" 2>/dev/null | grep -q "$TEAM"; then + echo " $TEAM already owns $crate, skipping" + else + echo " Adding $TEAM as owner of $crate..." + cargo owner --add "$TEAM" "$crate" + sleep 2 + fi +done + +echo "Done!" diff --git a/service-providers/common/examples/control_requests.rs b/sdk/rust/nym-sdk/examples/control_requests.rs similarity index 100% rename from service-providers/common/examples/control_requests.rs rename to sdk/rust/nym-sdk/examples/control_requests.rs diff --git a/service-providers/common/Cargo.toml b/service-providers/common/Cargo.toml index ad8b2b7574b..93661af48fa 100644 --- a/service-providers/common/Cargo.toml +++ b/service-providers/common/Cargo.toml @@ -20,10 +20,3 @@ thiserror = { workspace = true } serde = { workspace = true, features = ["derive"]} serde_json = { workspace = true } -[dev-dependencies] -# for the control requests example -anyhow = { workspace = true } -tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } - -nym-sdk = { workspace = true } -nym-socks5-requests = { workspace = true }