diff --git a/.config/nextest.toml b/.config/nextest.toml index bce7f9e633f25e..34c30fd59a29ce 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -7,8 +7,8 @@ status-level = "skip" fail-fast = false # Retry failing tests in order to not block builds on flaky tests retries = 5 -# Timeout tests after 4 minutes -slow-timeout = { period = "60s", terminate-after = 4 } +# Timeout tests after 10 minutes +slow-timeout = { period = "60s", terminate-after = 10 } [profile.narwhalnightly] # Print out output for failing tests as soon as they fail, and also at the end diff --git a/.github/actions/rust-setup/action.yaml b/.github/actions/rust-setup/action.yaml new file mode 100644 index 00000000000000..da4e544b06f6dd --- /dev/null +++ b/.github/actions/rust-setup/action.yaml @@ -0,0 +1,12 @@ +runs: + using: composite + steps: + - run: sudo apt-get update && sudo apt-get install build-essential ca-certificates clang curl git libpq-dev libssl-dev pkg-config unzip --no-install-recommends --assume-yes + shell: bash + - run: rustup component add rustfmt clippy + shell: bash + - run: echo "${HOME}/cargo/bin" | tee -a $GITHUB_PATH + shell: bash + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 5153084971cd1d..00000000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,22 +0,0 @@ -# -# Dependabot configuration file -# - -version: 2 -updates: - - package-ecosystem: "cargo" - directory: "/" - schedule: - interval: "daily" - - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "weekly" - # Disable version updates for npm dependencies - open-pull-requests-limit: 0 - - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 9388ff28412826..00000000000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Add 'Foo' to any changes within 'bar' folder or any subfolders -"Type: Documentation": -- doc/**/* -"sui-explorer": -- explorer/**/* \ No newline at end of file diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml deleted file mode 100644 index 14eae320762e1e..00000000000000 --- a/.github/workflows/bench.yml +++ /dev/null @@ -1,186 +0,0 @@ -name: Benchmark - -on: - push: - branches: [ main, extensions ] - workflow_dispatch: - -permissions: - # deployments permission to deploy GitHub pages website - deployments: write - # contents permission to update benchmark contents in gh-pages branch - contents: write - -env: - CARGO_TERM_COLOR: always - # Disable incremental compilation. - # - # Incremental compilation is useful as part of an edit-build-test-edit cycle, - # as it lets the compiler avoid recompiling code that hasn't changed. However, - # on CI, we're not making small edits; we're almost always building the entire - # project from scratch. Thus, incremental compilation on CI actually - # introduces *additional* overhead to support making future builds - # faster...but no future builds will ever occur in any given CI environment. - # - # See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow - # for details. - CARGO_INCREMENTAL: 0 - # Allow more retries for network requests in cargo (downloading crates) and - # rustup (installing toolchains). This should help to reduce flaky CI failures - # from transient network timeouts or other issues. - CARGO_NET_RETRY: 10 - RUSTUP_MAX_RETRIES: 10 - # Don't emit giant backtraces in the CI logs. - RUST_BACKTRACE: short - -jobs: - diff: - runs-on: [ubuntu-latest] - outputs: - isRust: ${{ steps.diff.outputs.isRust }} - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - name: Detect Changes - uses: './.github/actions/diffs' - id: diff - - bench: - needs: diff - if: github.event.pull_request.draft == false && needs.diff.outputs.isRust == 'true' - runs-on: [ubuntu-ghcloud] - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - # Turn off the caching on self-hosted jobs - # Enable caching of the 'librocksdb-sys' crate by additionally caching the - # 'librocksdb-sys' src directory which is managed by cargo - # - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - # with: - # path: ~/.cargo/registry/src/**/librocksdb-sys-* - - name: Install huniq - uses: actions-rs/install@9da1d2adcfe5e7c16992e8242ca33a56b6d9b101 # pin@v0.1 - with: - crate: huniq - - name: Install python dependencies - run: | - pip install pyopenssl --upgrade - if [ -f narwhal/benchmark/requirements.txt ]; then pip install -r narwhal/benchmark/requirements.txt; fi - - name: Prepare artifact directory - run: | - mkdir -p artifacts - - name: Compile benchmark - uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # pin@v1 - with: - command: build - args: --release - - - name: Run benchmarks - run: | - set -o pipefail - cargo run --release --package sui-benchmark --bin stress -- --log-path /tmp/stress.log --num-client-threads 16 --num-server-threads 32 --num-transfer-accounts 2 bench --committee-size 4 --target-qps 1000 --num-workers 16 --transfer-object 100 --run-duration 60s --stress-stat-collection 2>&1 | huniq | tee -a artifacts/owned_4_500.txt - cargo run --release --package sui-benchmark --bin stress -- --log-path /tmp/stress.log --num-client-threads 16 --num-server-threads 32 --num-transfer-accounts 2 bench --committee-size 4 --target-qps 1000 --num-workers 16 --shared-counter 100 --run-duration 60s --stress-stat-collection 2>&1 | huniq | tee -a artifacts/shared_4_500.txt - cargo run --release --package sui-benchmark --bin stress -- --log-path /tmp/stress.log --num-client-threads 16 --num-server-threads 32 --num-transfer-accounts 2 bench --committee-size 20 --target-qps 200 --num-workers 16 --transfer-object 100 --run-duration 60s --stress-stat-collection 2>&1 | huniq | tee -a artifacts/owned_20_150.txt - cargo run --release --package sui-benchmark --bin stress -- --log-path /tmp/stress.log --num-client-threads 16 --num-server-threads 32 --num-transfer-accounts 2 bench --committee-size 20 --target-qps 200 --num-workers 16 --shared-counter 100 --run-duration 60s --stress-stat-collection 2>&1 | huniq | tee -a artifacts/shared_20_50.txt - pushd narwhal/benchmark && fab local | tee -a ../../artifacts/narwhal.txt && popd - - - name: Retrieve benchmark results - id: get-comment-body - run: | - delimiter="$(openssl rand -hex 8)" - - owned_4_500="$(cat artifacts/owned_4_500.txt | grep -e 'Benchmark Report:' -A 1000)" - echo "owned_4_500<<$delimiter" >> $GITHUB_OUTPUT - echo "$owned_4_500" >> $GITHUB_OUTPUT - echo "$delimiter" >> $GITHUB_OUTPUT - - shared_4_500="$(cat artifacts/shared_4_500.txt | grep -e 'Benchmark Report:' -A 1000)" - echo "shared_4_500<<$delimiter" >> $GITHUB_OUTPUT - echo "$shared_4_500" >> $GITHUB_OUTPUT - echo "$delimiter" >> $GITHUB_OUTPUT - - owned_20_150="$(cat artifacts/owned_20_150.txt | grep -e 'Benchmark Report:' -A 1000)" - echo "owned_20_150<<$delimiter" >> $GITHUB_OUTPUT - echo "$owned_20_150" >> $GITHUB_OUTPUT - echo "$delimiter" >> $GITHUB_OUTPUT - - shared_20_50="$(cat artifacts/shared_20_50.txt | grep -e 'Benchmark Report:' -A 1000)" - echo "shared_20_50<<$delimiter" >> $GITHUB_OUTPUT - echo "$shared_20_50" >> $GITHUB_OUTPUT - echo "$delimiter" >> $GITHUB_OUTPUT - - narwhal="$(cat artifacts/narwhal.txt | grep -e 'SUMMARY:' -A 1000)" - echo "narwhal<<$delimiter" >> $GITHUB_OUTPUT - echo "$narwhal" >> $GITHUB_OUTPUT - echo "$delimiter" >> $GITHUB_OUTPUT - - - name: Post commit comment - uses: peter-evans/commit-comment@76d2ae14b83cd171cd38507097b9616bb9ca7cb6 # pin@v2.0.1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - body: | - **4 Validators 500/s Owned Transactions Benchmark Results** - ``` - ${{ steps.get-comment-body.outputs.owned_4_500 }} - ``` - - - **4 Validators 500/s Shared Transactions Benchmark Results** - ``` - ${{ steps.get-comment-body.outputs.shared_4_500 }} - ``` - - - **20 Validators 50/s Owned Transactions Benchmark Results** - ``` - ${{ steps.get-comment-body.outputs.owned_20_150 }} - ``` - - - **20 Validators 50/s Shared Transactions Benchmark Results** - ``` - ${{ steps.get-comment-body.outputs.shared_20_50 }} - ``` - - - **Narwhal Benchmark Results** - ``` - ${{ steps.get-comment-body.outputs.narwhal }} - ``` - indexer-bench: - name: indexer - needs: diff - if: needs.diff.outputs.isRust == 'true' - runs-on: ubuntu-ghcloud - services: - postgres: - image: postgres - env: - POSTGRES_PASSWORD: postgrespw - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 5432:5432 - steps: - - uses: actions/checkout@v3 - - - name: Run indexer benchmark - run: | - cargo bench --bench indexer_benchmark -- --output-format bencher | tee output.txt - env: - POSTGRES_HOST: localhost - POSTGRES_PORT: 5432 - - - name: Store benchmark result - uses: benchmark-action/github-action-benchmark@v1 - with: - tool: "cargo" - output-file-path: output.txt - benchmark-data-dir-path: "bench/indexer" - github-token: ${{ secrets.GITHUB_TOKEN }} - auto-push: true - # Show alert with commit comment on detecting possible performance regression - alert-threshold: '200%' - comment-on-alert: true - fail-on-alert: true diff --git a/.github/workflows/changesets-ci-comment.yml b/.github/workflows/changesets-ci-comment.yml deleted file mode 100644 index 0a498c2609cd79..00000000000000 --- a/.github/workflows/changesets-ci-comment.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: Changesets CI Comment - -# NOTE: This workflow run indirection is used to securely comment on PRs when -# changeset CI runs are completed. -on: - workflow_run: - workflows: ["Changesets CI"] - types: - - completed - -jobs: - upload: - runs-on: ubuntu-latest - if: > - github.event.workflow_run.event == 'pull_request' && - github.event.workflow_run.conclusion == 'success' - steps: - - name: Get workflow run information - uses: potiuk/get-workflow-origin@e3ba776faee1134e17551924b852bfb374e1703d # pin@v1_1 - id: source-run-info - with: - token: ${{ secrets.GITHUB_TOKEN }} - sourceRunId: ${{ github.event.workflow_run.id }} - - - name: "Download artifact" - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # pin@v6 - id: get-artifact - if: steps.source-run-info.outputs.pullRequestNumber - with: - result-encoding: string - script: | - let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: context.payload.workflow_run.id, - }); - - let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { - return artifact.name == "missing-changeset" - })[0]; - - if (!matchArtifact) { - return 'false'; - } - - return 'true'; - - - name: Comment PR - uses: thollander/actions-comment-pull-request@dadb7667129e23f12ca3925c90dc5cd7121ab57e # pin@v2 - if: steps.get-artifact.outputs.result == 'true' && steps.source-run-info.outputs.pullRequestNumber - with: - pr_number: ${{ steps.source-run-info.outputs.pullRequestNumber }} - comment_tag: "changesets-warning" - message: | - ⚠️ 🦋 **Changesets Warning:** This PR has changes to public npm packages, but does not contain a changeset. You can create a changeset easily by running `pnpm changeset` in the root of the Sui repo, and following the prompts. If your change does not need a changeset (e.g. a documentation-only change), you can ignore this message. This warning will be removed when a changeset is added to this pull request. - - [Learn more about Changesets](https://github.com/changesets/changesets). - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Remove outdated comments - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # pin@v6 - if: steps.get-artifact.outputs.result == 'false' && steps.source-run-info.outputs.pullRequestNumber - env: - ISSUE_NUMBER: ${{ steps.source-run-info.outputs.pullRequestNumber }} - with: - script: | - const resp = await github.rest.issues.listComments({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: process.env.ISSUE_NUMBER - }); - - const comments = resp.data.filter(it => it.body.startsWith('⚠️ 🦋 **Changesets Warning:**')); - - for (const comment of comments) { - console.log( - `Removing issue ${comment.issue_url}` - ); - - await github.rest.issues.deleteComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: comment.id - }); - } diff --git a/.github/workflows/changesets-ci.yml b/.github/workflows/changesets-ci.yml deleted file mode 100644 index ea6dfab3d3e66a..00000000000000 --- a/.github/workflows/changesets-ci.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Changesets CI -on: pull_request -jobs: - validate: - runs-on: ubuntu-latest - steps: - - name: checkout code repository - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - with: - fetch-depth: 0 - - uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd # pin@v2.2.4 - with: - version: 8 - - name: Install Nodejs - uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # pin@v3 - with: - node-version: "18" - cache: "pnpm" - - name: Install dependencies - run: pnpm install --frozen-lockfile - - id: diff - name: Determine changed public packages from previous commit - run: echo "hasChanges=$(pnpm list --filter "...[$(git rev-parse HEAD^1)]" --depth -1 --json | jq "any(.[] | select(.private != true) ; length > 0)")" >> $GITHUB_OUTPUT - - name: Get changed files in the changesets folder - id: has-changesets - uses: tj-actions/changed-files@fb20f4d24890fadc539505b1746d260504b213d0 # pin@v34 - with: - files: | - .changeset/** - - name: Create missing changeset note if there are missing changesets - if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true' - run: | - echo "true" > missing-changeset.txt - - name: Upload missing changeset artifact - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # pin@v3 - if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true' - with: - name: missing-changeset - path: missing-changeset.txt - if-no-files-found: error - retention-days: 1 - - name: Attempt to create snapshots. - run: pnpm changeset version --snapshot test-do-not-publish diff --git a/.github/workflows/changesets.yml b/.github/workflows/changesets.yml deleted file mode 100644 index ce066d1b6d2570..00000000000000 --- a/.github/workflows/changesets.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Changesets -on: - ## Allow triggering this workflow manually via GitHub CLI/web - workflow_dispatch: - push: - branches: - - main - -concurrency: ${{ github.workflow }}-${{ github.ref }} - -jobs: - release: - runs-on: ubuntu-latest - steps: - - name: Dispatch Changesets To Operations - uses: peter-evans/repository-dispatch@26b39ed245ab8f31526069329e112ab2fb224588 # pin@v2 - with: - repository: MystenLabs/sui-operations - token: ${{ secrets.CHANGESETS_DEPLOY_DISPATCH }} - event-type: changesets - client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}' - - version: - runs-on: ubuntu-latest - steps: - - name: Generate token - id: generate_token - uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92 # pin@v1 - with: - app_id: ${{ secrets.APP_ID }} - private_key: ${{ secrets.APP_PRIVATE_KEY }} - - - name: checkout code repository - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - with: - token: ${{ steps.generate_token.outputs.token }} - fetch-depth: 0 - - uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd # pin@v2.2.4 - with: - version: 8 - - name: Install Nodejs - uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # pin@v3 - with: - node-version: "18" - cache: "pnpm" - - name: Install dependencies - run: pnpm install --frozen-lockfile - - name: Create Release Pull Request - uses: changesets/action@d89c1de63c7f28ac47ec85ed395f5f1d045d4697 # pin@v1 - with: - # Generates src/version.ts file using genVersion - # https://github.com/changesets/action#with-version-script - version: pnpm changeset-version - env: - GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml deleted file mode 100644 index 12d9c9089b7a9b..00000000000000 --- a/.github/workflows/ci-docs.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Docs - -on: - push: - branches: - - main - paths: - - "**.rs" - - "Cargo.toml" - - "Cargo.lock" - workflow_dispatch: - -jobs: - docs: - name: Generate crate documentation - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # pin@v2 - - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly - override: true - - - name: Generate documentation - uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # pin@v1 - env: - RUSTDOCFLAGS: "--enable-index-page -Zunstable-options" - with: - command: doc - args: --workspace --exclude "sui-benchmark" --no-deps - - - name: Deploy documentation - uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 # pin@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages - publish_dir: ./target/doc - force_orphan: true diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml deleted file mode 100644 index d53240c9f823e8..00000000000000 --- a/.github/workflows/codecov.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Codecov -on: - push: - branches: - - main - pull_request: - branches: - - main - types: [opened, reopened, synchronize] - -jobs: - diff: - runs-on: [ubuntu-latest] - outputs: - isRust: ${{ steps.diff.outputs.isRust }} - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - name: Detect Changes - uses: './.github/actions/diffs' - id: diff - - codecov-grcov: - name: Generate code coverage - needs: diff - if: github.event.pull_request.draft == false && needs.diff.outputs.isRust == 'true' - runs-on: [ubuntu-ghcloud] - strategy: - fail-fast: true - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - run: rustup component add llvm-tools-preview - # Enable caching of the 'librocksdb-sys' crate by additionally caching the - # 'librocksdb-sys' src directory which is managed by cargo - - name: Install grcov, and cache the binary - uses: baptiste0928/cargo-install@30f432979e99f3ea66a8fa2eede53c07063995d8 # pin@v2 - with: - crate: grcov - locked: true - - name: Build - uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # pin@v1 - with: - command: build - env: - RUSTFLAGS: '-Cinstrument-coverage' - RUSTDOCFLAGS: '-Cinstrument-coverage' - - name: Run tests - env: - RUSTFLAGS: '-Cinstrument-coverage' - RUSTDOCFLAGS: '-Cinstrument-coverage' - LLVM_PROFILE_FILE: 'codecov-instrumentation-%p-%m.profraw' - run: cargo test - - name: Run grcov - run: grcov . --binary-path target/debug/ -s . -t lcov --branch --ignore-not-existing --ignore '../**' --ignore '/*' -o coverage.lcov - - name: Upload to codecov.io - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000000000..f7c165012b47a3 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,66 @@ +name: "Build docker image" +on: + push: + branches: + - main + - devnet + - testnet + +env: + REPOSITORY: mamorufoundation/sui-sniffer + +concurrency: + # cancel redundant builds on PRs (only on PR, not on branches) + group: ${{ github.workflow }}-${{ github.ref_name }} + cancel-in-progress: true + +jobs: + build: + runs-on: self-hosted + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Start docker service + run: sudo service docker start || true + + - uses: webfactory/ssh-agent@v0.6.0 + with: + ssh-private-key: | + ${{ secrets.MAMORU_CORE_KEY }} + ${{ secrets.VALIDATION_CHAIN_KEY }} + + - name: Prepare git and ssh config for build context + run: | + mkdir root-config + cp -r ~/.gitconfig ~/.ssh root-config/ + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Get current date + id: date + run: echo "::set-output name=date::$(date -u +'%Y-%m-%d')" + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + file: ./docker/sui-node/Dockerfile + build-args: | + GIT_REVISION=${{ github.sha }} + BUILD_DATE=${{ steps.date.outputs.date }} + PROFILE=release + push: true + tags: | + ${{ env.REPOSITORY }}:latest + ${{ env.REPOSITORY }}:${{ github.sha }} + ssh: | + default=${{ env.SSH_AUTH_SOCK }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index dca8905712eae5..00000000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Documentation - -on: - push: - branches: [ main, extensions ] - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - - -jobs: - diff: - runs-on: [ubuntu-latest] - outputs: - isDoc: ${{ steps.diff.outputs.isDoc }} - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - name: Detect Changes - uses: './.github/actions/diffs' - id: diff - - spelling: - name: Lint documentation - needs: diff - if: needs.diff.outputs.isDoc == 'true' - runs-on: [ubuntu-latest] - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - name: Spell Check Docs - uses: crate-ci/typos@v1.14.12 - with: - files: ./doc ./*.md diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml deleted file mode 100644 index 8c4d26a8dc7811..00000000000000 --- a/.github/workflows/e2e.yml +++ /dev/null @@ -1,111 +0,0 @@ -name: End-to-end Tests -on: pull_request -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true -jobs: - diff: - runs-on: ubuntu-latest - outputs: - isWallet: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'sui-wallet')) }} - isExplorer: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'sui-explorer')) }} - isTypescriptSDK: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), '@mysten/sui.js')) }} - isRust: ${{ steps.diff.outputs.isRust }} - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - name: Detect Changes (turbo) - uses: "./.github/actions/turbo-diffs" - id: turbo - - name: Detect Changes (diff) - uses: "./.github/actions/diffs" - id: diff - - # Run e2e test against localnet built on the main branch - localnet: - name: Localnet - needs: diff - if: needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true' || needs.diff.outputs.isWallet == 'true' || needs.diff.outputs.isRust == 'true' - runs-on: ubuntu-ghcloud - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - # Disabled for now as it makes test runs take longer - # - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - - uses: pnpm/action-setup@c3b53f6a16e57305370b4ae5a540c2077a1d50dd # pin@v2.2.4 - with: - version: 8 - - run: cargo build --bin sui-test-validator --bin sui --profile dev - - name: Install Nodejs - uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # pin@v3 - with: - node-version: "18" - cache: "pnpm" - - name: Install dependencies - run: pnpm install --frozen-lockfile - - name: Install Playwright Browsers - run: pnpm explorer playwright install --with-deps chromium - - - name: Set env - run: | - echo "VITE_SUI_BIN=$PWD/target/debug/sui" >> $GITHUB_ENV - echo "E2E_RUN_LOCAL_NET_CMD=(RUST_LOG=info RUST_BACKTRACE=1 $(echo $PWD/target/debug/sui-test-validator))" >> $GITHUB_ENV - - - name: Run TS SDK e2e tests - if: ${{ needs.diff.outputs.isTypescriptSDK == 'true' || needs.diff.outputs.isRust == 'true'}} - run: pnpm dlx concurrently --kill-others --success command-1 "$E2E_RUN_LOCAL_NET_CMD" 'pnpm sdk test:e2e' - - - name: Run Explorer e2e tests - # need to run Explorer e2e when its upstream(TS SDK and Rust) or itself is changed - if: ${{ needs.diff.outputs.isTypescriptSDK == 'true' || needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isRust == 'true'}} - run: pnpm explorer playwright test - - uses: actions/upload-artifact@v3 - if: always() - with: - name: playwright-report-explorer - path: apps/explorer/playwright-report/ - retention-days: 30 - - - name: Run Local net - run: cargo run --bin sui-test-validator -- --epoch-duration-ms 10000 & - - name: Set Wallet env - run: echo "API_ENV=local" > "$PWD/apps/wallet/configs/environment/.env" - - name: Build Wallet - # need to run Wallet e2e when its upstream(TS SDK and Rust) or itself is changed - if: ${{ needs.diff.outputs.isWallet == 'true' || needs.diff.outputs.isRust == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'}} - run: pnpm wallet build:dev - - name: Run Wallet e2e tests - if: ${{ needs.diff.outputs.isWallet == 'true' || needs.diff.outputs.isRust == 'true' || needs.diff.outputs.isTypescriptSDK == 'true'}} - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- pnpm wallet playwright test - - uses: actions/upload-artifact@v3 - if: always() - with: - name: playwright-report-wallet - path: apps/wallet/playwright-report/ - retention-days: 30 - - # Run e2e test against localnet built on the devnet branch for backward compatibility check - local_devnet_branch: - name: Local Network Built on devnet branch - needs: diff - # TODO: add wallet e2e to the `if` condition when available - if: needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true' - runs-on: ubuntu-ghcloud - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - name: Run E2E Test Runner with devnet branch - uses: "./.github/actions/ts-e2e" - with: - ref: devnet - - # Run e2e test against localnet built on the Testnet branch for backward compatibility check - local_testnet_branch: - name: Local Network Built on testnet branch - needs: diff - # TODO: add wallet e2e to the `if` condition when available - if: needs.diff.outputs.isExplorer == 'true' || needs.diff.outputs.isTypescriptSDK == 'true' - runs-on: ubuntu-ghcloud - steps: - - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - - name: Run E2E Test Runner with testnet branch - uses: "./.github/actions/ts-e2e" - with: - ref: testnet diff --git a/.github/workflows/external.yml b/.github/workflows/external.yml deleted file mode 100644 index e82c0b6a2104d5..00000000000000 --- a/.github/workflows/external.yml +++ /dev/null @@ -1,171 +0,0 @@ -name: External crates - -on: - push: - branches: [main, extensions, devnet] - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - -env: - CARGO_TERM_COLOR: always - # Disable incremental compilation. - # - # Incremental compilation is useful as part of an edit-build-test-edit cycle, - # as it lets the compiler avoid recompiling code that hasn't changed. However, - # on CI, we're not making small edits; we're almost always building the entire - # project from scratch. Thus, incremental compilation on CI actually - # introduces *additional* overhead to support making future builds - # faster...but no future builds will ever occur in any given CI environment. - # - # See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow - # for details. - CARGO_INCREMENTAL: 0 - # Allow more retries for network requests in cargo (downloading crates) and - # rustup (installing toolchains). This should help to reduce flaky CI failures - # from transient network timeouts or other issues. - CARGO_NET_RETRY: 10 - RUSTUP_MAX_RETRIES: 10 - # Don't emit giant backtraces in the CI logs. - RUST_BACKTRACE: short - # RUSTFLAGS: -D warnings - RUSTDOCFLAGS: -D warnings - -jobs: - diff: - runs-on: [ubuntu-latest] - outputs: - isRust: ${{ steps.diff.outputs.isRust }} - isMove: ${{ steps.diff.outputs.isMove }} - steps: - - uses: actions/checkout@v3 - - name: Detect Changes - uses: "./.github/actions/diffs" - id: diff - - external-crates-test: - needs: diff - if: needs.diff.outputs.isRust == 'true' - timeout-minutes: 45 - env: - # Tests written with #[sim_test] are often flaky if run as #[tokio::test] - this var - # causes #[sim_test] to only run under the deterministic `simtest` job, and not the - # non-deterministic `test` job. - SUI_SKIP_SIMTESTS: 1 - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: - - [ubuntu-ghcloud] - fail-fast: false - steps: - - uses: actions/checkout@v3 - - uses: taiki-e/install-action@nextest - - name: Set Swap Space - uses: pierotofy/set-swap-space@master - with: - swap-size-gb: 256 - - name: Install python dependencies - run: | - pip install pyopenssl --upgrade - - name: External crates tests - run: | - cargo xtest - - move-prover: - name: move-prover - needs: diff - timeout-minutes: 20 - if: needs.diff.outputs.isMove == 'true' - runs-on: [ubuntu-ghcloud] - - steps: - - uses: actions/checkout@v3 - - - name: Prover Setup - run: | - crates/sui-move/scripts/prover_setup.sh - - name: Build - uses: actions-rs/cargo@v1 - with: - command: build - - - name: Prover Run - working-directory: crates/sui-framework/packages - run: | - set -o pipefail - DOTNET_ROOT="$HOME/.dotnet" - BIN_DIR="$HOME/bin" - export DOTNET_ROOT="${DOTNET_ROOT}" - export PATH="${DOTNET_ROOT}/tools:\$PATH" - export Z3_EXE="${BIN_DIR}/z3" - export CVC5_EXE="${BIN_DIR}/cvc5" - export BOOGIE_EXE="${DOTNET_ROOT}/tools/boogie" - ../../../target/debug/sui move prove -p sui-framework - ../../../target/debug/sui move prove -p sui-system - - - # This is a no-op job that allows the resulting action names to line up when - # there are no rust changes in a given PR/commit. This ensures that we can - # continue to block on the rust tests passing in the case of rust changes and - # otherwise not block pushes to main. - external-crates-test-notrust: - name: external-crates-test - needs: diff - if: needs.diff.outputs.isRust == 'false' - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: - - [ubuntu-ghcloud] - - [windows-ghcloud] - fail-fast: false - steps: - - run: 'echo "No build required" ' - - clippy: - needs: diff - if: needs.diff.outputs.isRust == 'true' - runs-on: [ubuntu-ghcloud] - steps: - - uses: arduino/setup-protoc@v1 - # this avoids rate-limiting - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - uses: actions/checkout@v3 - - run: rustup component add clippy - # TODO(bradh): debug and re-enable this; the caching is breaking the clippy build - # Enable caching of the 'librocksdb-sys' crate by additionally caching the - # 'librocksdb-sys' src directory which is managed by cargo - # - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - # with: - # path: ~/.cargo/registry/src/**/librocksdb-sys-* - - # See '.cargo/config' for list of enabled/disappled clippy lints - - name: cargo clippy - run: cargo xclippy -D warnings - - rustfmt: - needs: diff - if: needs.diff.outputs.isRust == 'true' - runs-on: [ubuntu-latest] - steps: - - uses: actions/checkout@v3 - - run: rustup component add rustfmt - - name: rustfmt - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all --check - - cargo-deny: - name: cargo-deny (advisories, licenses, bans, ...) - needs: diff - if: needs.diff.outputs.isRust == 'true' - runs-on: [ubuntu-latest] - steps: - - uses: actions/checkout@v3 - - uses: mystenlabs/cargo-deny-action@main diff --git a/.github/workflows/fastcrypto_pull.yml b/.github/workflows/fastcrypto_pull.yml deleted file mode 100644 index 2f0b08a3192435..00000000000000 --- a/.github/workflows/fastcrypto_pull.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Update the Fastcrypto pointer Sui -on: - ## Allow triggering this workflow manually via GitHub CLI/web - workflow_dispatch: - schedule: - # Update on every hour at 10 past the hour - - cron: '10 * * * *' - -jobs: - update-dep: - runs-on: ubuntu-latest - # Important settings as we don't want to open a PR when the update fails - continue-on-error: false - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v3 - - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - - name: Install cargo-hakari, and cache the binary - uses: baptiste0928/cargo-install@30f432979e99f3ea66a8fa2eede53c07063995d8 - with: - crate: cargo-hakari - locked: true - - name: Update the Narwhal pointer - run: | - scripts/update_fastcrypto.sh - - name: Create Pull Request - uses: peter-evans/create-pull-request@v5 - with: - # TODO: change the token to something FC-specific? - token: ${{ secrets.NW_AUTO_UPDATE }} - commit-message: chore(deps) Update the Fastcrypto pointer - title: chore(deps) Update the Fastcrypto pointer - body: | - - Update Fastcrypto - - Auto-generated by [create-pull-request][1] and the scripts/update_fastcrypto.sh script - - [1]: https://github.com/peter-evans/create-pull-request - branch: update-fastcrypto diff --git a/.github/workflows/generate-release-notes.yml b/.github/workflows/generate-release-notes.yml deleted file mode 100644 index 0583d5380b588e..00000000000000 --- a/.github/workflows/generate-release-notes.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Generate Release Notes - -on: - workflow_dispatch: - inputs: - previous_branch: - description: 'Previous Release Branch (releases/sui-vX.X.X-release)' - type: string - required: true - new_branch: - description: 'New Release Branch (releases/sui-vX.X.X-release)' - type: string - required: true - -jobs: - generate-release-notes: - name: Generate Release Notes - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@7dd9e2a3dc350cf687eb1b2a4fadfee8c8e49675 # pin@v3 - with: - fetch-depth: 0 - - - name: Run script - shell: bash - run: | - ./scripts/generate-release-notes.sh ${{ inputs.new_branch }} ${{ inputs.previous_branch }} diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml deleted file mode 100644 index 680f9d187a3b77..00000000000000 --- a/.github/workflows/labeler.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: "Pull Request Labeler" -on: -- pull_request_target - -jobs: - triage: - permissions: - contents: read - pull-requests: write - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v4 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml deleted file mode 100644 index 754522bdbac996..00000000000000 --- a/.github/workflows/links_checker.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: Links Checker - -on: - ## Allow triggering this workflow manually via GitHub CLI/web - workflow_dispatch: - - ## Run this workflow automatically every week - schedule: - - cron: '0 0 * * *' - -jobs: - link_checker: - name: Check links and create automated issue if needed - runs-on: ubuntu-latest - env: - LYCHEE_OUT: ./lychee/links-report - steps: - ## Check out code using Git - - uses: actions/checkout@v3 - - - name: Check all links at *.md and doc files - id: lychee - uses: lycheeverse/lychee-action@v1.8.0 - with: - output: ${{ env.LYCHEE_OUT }} - format: markdown - ## Do not fail this step on broken links - fail: false - ## Allow pages replying with 200 (Ok)in at most 20 seconds - ## This checks all md files in the repo - args: >- - --verbose - --accept 200 - --timeout 20 - --max-concurrency 10 - --no-progress - './**/*.md' - env: - ## Avoid rate limiting when checking github.com links - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Find the last report issue open - uses: micalevisk/last-issue-action@v2.1 - id: last_issue - with: - state: open - labels: | - report - automated issue - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Create issue from report file - if: ${{ steps.last_issue.outputs.has_found == 'false' }} - uses: peter-evans/create-issue-from-file@v4 - with: - title: Link checker report - content-filepath: ${{ env.LYCHEE_OUT }} - assignees: ronny-mysten, randall-Mysten, awelc, lxfind, patrickkuo - issue-number: ${{ steps.last_issue.outputs.issue_number }} - labels: | - report - automated issue - - - name: Update last report open issue created - if: ${{ steps.last_issue.outputs.has_found == 'true' }} - uses: peter-evans/create-issue-from-file@v4 - with: - title: Link checker report - content-filepath: ${{ env.LYCHEE_OUT }} - issue-number: ${{ steps.last_issue.outputs.issue_number }} - labels: | - report - automated issue - - - name: Close last report open issue - if: ${{ steps.lychee.outputs.exit_code == 0 }} - uses: peter-evans/close-issue@v3 - with: - issue-number: ${{ steps.last_issue.outputs.issue_number }} diff --git a/.github/workflows/narwhal_pull.yml b/.github/workflows/narwhal_pull.yml deleted file mode 100644 index 22f046a78ca9a2..00000000000000 --- a/.github/workflows/narwhal_pull.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Update Dependencies -on: - ## Allow triggering this workflow manually via GitHub CLI/web - workflow_dispatch: - # Running this workflow automatically was relevant when Narwhal development was split - # at https://github.com/mystenlabs/narwhal, but it is now shared in this repo. - # This should be re-activated when NW development happens there again. - # schedule: - # Update on every hour at 10 past the hour - # - cron: '10 * * * *' - -jobs: - update-dep: - runs-on: ubuntu-latest - # Important settings as we don't want to open a PR when the update fails - continue-on-error: false - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v3 - - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - - name: Install cargo-hakari, and cache the binary - uses: baptiste0928/cargo-install@30f432979e99f3ea66a8fa2eede53c07063995d8 - with: - crate: cargo-hakari - locked: true - - name: Update the Narwhal pointer - run: | - scripts/update_narwhal.sh - - name: Create Pull Request - uses: peter-evans/create-pull-request@v5 - with: - token: ${{ secrets.NW_AUTO_UPDATE }} - commit-message: chore(deps) Update the Narwhal pointer - title: chore(deps) Update the Narwhal pointer - body: | - - Update Narwhal - - Auto-generated by [create-pull-request][1] an the scripts/update_narwhal.sh script - - [1]: https://github.com/peter-evans/create-pull-request - branch: update-narwhal diff --git a/.github/workflows/nightly-narwhal.yml b/.github/workflows/nightly-narwhal.yml deleted file mode 100644 index 85edf857a97984..00000000000000 --- a/.github/workflows/nightly-narwhal.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: nightly-narwhal - -on: - ## Allow triggering this workflow manually via GitHub CLI/web - workflow_dispatch: - schedule: - - cron: '0 3 * * *' # every 03:00 every night - -env: - CARGO_TERM_COLOR: always - # Disable incremental compilation. - # - # Incremental compilation is useful as part of an edit-build-test-edit cycle, - # as it lets the compiler avoid recompiling code that hasn't changed. However, - # on CI, we're not making small edits; we're almost always building the entire - # project from scratch. Thus, incremental compilation on CI actually - # introduces *additional* overhead to support making future builds - # faster...but no future builds will ever occur in any given CI environment. - # - # See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow - # for details. - CARGO_INCREMENTAL: 0 - # Allow more retries for network requests in cargo (downloading crates) and - # rustup (installing toolchains). This should help to reduce flaky CI failures - # from transient network timeouts or other issues. - CARGO_NET_RETRY: 10 - RUSTUP_MAX_RETRIES: 10 - # Don't emit giant backtraces in the CI logs. - RUST_BACKTRACE: short - -jobs: - end-to-end-tests: - name: Narwhal run long-running end-to-end tests - runs-on: ubuntu-ghcloud - steps: - - uses: actions/checkout@v3 - - uses: taiki-e/install-action@nextest - - name: Set Swap Space - uses: pierotofy/set-swap-space@master - with: - swap-size-gb: 256 - # Enable caching of the 'librocksdb-sys' crate by additionally caching the - # 'librocksdb-sys' src directory which is managed by cargo - - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - with: - path: ~/.cargo/registry/src/**/librocksdb-sys-* - # We run only the integration tests that are ignored under the primary package. - # These are considered the end-to-end "slow" tests for us - - name: cargo nextest - run: | - cargo nextest run -E 'kind(test) and not test(test_get_collections_with_missing_certificates) and package(narwhal-primary) + package(narwhal-consensus)' --profile narwhalnightly --run-ignored ignored-only - - report-status: - name: Report Status - runs-on: ubuntu-latest - if: always() - needs: [end-to-end-tests] - steps: - - uses: technote-space/workflow-conclusion-action@v3 - - - name: Post to slack - uses: slackapi/slack-github-action@v1.24.0 - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} - if: env.WORKFLOW_CONCLUSION == 'failure' # notify only if failure - with: - channel-id: 'narwhal-tusk' - payload: | - { - "text": "NARWAL Workflow *${{ github.workflow }}* failed", - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "NARWHAL Workflow *${{ github.workflow }}* failed" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Logs are here: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - } - } - ] - } diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml deleted file mode 100644 index 44dc04fcf09377..00000000000000 --- a/.github/workflows/nightly.yml +++ /dev/null @@ -1,110 +0,0 @@ -name: nightly - -on: - schedule: - - cron: '0 0 * * *' # every day at midnight - workflow_dispatch: - -env: - CARGO_TERM_COLOR: always - # Disable incremental compilation. - # - # Incremental compilation is useful as part of an edit-build-test-edit cycle, - # as it lets the compiler avoid recompiling code that hasn't changed. However, - # on CI, we're not making small edits; we're almost always building the entire - # project from scratch. Thus, incremental compilation on CI actually - # introduces *additional* overhead to support making future builds - # faster...but no future builds will ever occur in any given CI environment. - # - # See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow - # for details. - CARGO_INCREMENTAL: 0 - # Allow more retries for network requests in cargo (downloading crates) and - # rustup (installing toolchains). This should help to reduce flaky CI failures - # from transient network timeouts or other issues. - CARGO_NET_RETRY: 10 - RUSTUP_MAX_RETRIES: 10 - # Don't emit giant backtraces in the CI logs. - RUST_BACKTRACE: short - -jobs: - release: - name: build release binaries - runs-on: [ubuntu-ghcloud] - steps: - - uses: actions/checkout@v3 - - name: cargo build - uses: actions-rs/cargo@v1 - with: - command: build - args: --all-targets --all-features --release --profile=release - - # This job seems to be consistently producing false-positives, lets disable for now - # cargo-udeps: - # runs-on: [ubuntu-ghcloud] - # steps: - # - uses: actions/checkout@v3 - # # Enable caching of the 'librocksdb-sys' crate by additionally caching the - # # 'librocksdb-sys' src directory which is managed by cargo - # - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - # with: - # path: ~/.cargo/registry/src/**/librocksdb-sys-* - # - name: Install cargo-udeps, and cache the binary - # uses: baptiste0928/cargo-install@v1 - # with: - # crate: cargo-udeps - # locked: true - # - name: Install cargo-hakari, and cache the binary - # uses: baptiste0928/cargo-install@v1 - # with: - # crate: cargo-hakari - # locked: true - # # Normally running cargo-udeps requires use of a nightly compiler - # # In order to have a more stable and less noisy experience, lets instead - # # opt to use the stable toolchain specified via the 'rust-toolchain' file - # # and instead enable nightly features via 'RUSTC_BOOTSTRAP' - # - name: run cargo-udeps - # run: | - # # First we need to disable the workspace-hack package - # cargo hakari disable - # cargo hakari remove-deps -y - # RUSTC_BOOTSTRAP=1 cargo udeps - - report-status: - name: Report Status - runs-on: ubuntu-latest - if: always() - needs: [release] - steps: - - uses: technote-space/workflow-conclusion-action@v3 - - - name: Post to slack - uses: slackapi/slack-github-action@v1.24.0 - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} - if: env.WORKFLOW_CONCLUSION == 'failure' # notify only if failure - with: - channel-id: 'build-failures-sui' - payload: | - { - "text": "Workflow *${{ github.workflow }}* failed", - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Workflow *${{ github.workflow }}* failed" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Logs are here: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - } - } - ] - } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 55118f5c3608bb..00000000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,94 +0,0 @@ -name: Release Binaries - -on: - release: - types: [published] - workflow_dispatch: - inputs: - sui_tag: - description: 'Sui repo tag to build from' - type: string - required: true - -env: - TAG_NAME: "${{ github.event.inputs.sui_tag || github.ref }}" - CARGO_TERM_COLOR: always - # Disable incremental compilation. - # - # Incremental compilation is useful as part of an edit-build-test-edit cycle, - # as it lets the compiler avoid recompiling code that hasn't changed. However, - # on CI, we're not making small edits; we're almost always building the entire - # project from scratch. Thus, incremental compilation on CI actually - # introduces *additional* overhead to support making future builds - # faster...but no future builds will ever occur in any given CI environment. - # - # See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow - # for details. - CARGO_INCREMENTAL: 0 - # Allow more retries for network requests in cargo (downloading crates) and - # rustup (installing toolchains). This should help to reduce flaky CI failures - # from transient network timeouts or other issues. - CARGO_NET_RETRY: 10 - RUSTUP_MAX_RETRIES: 10 - # Don't emit giant backtraces in the CI logs. - RUST_BACKTRACE: short - -jobs: - release-build: - timeout-minutes: 45 - runs-on: [ubuntu-ghcloud] - strategy: - fail-fast: false - steps: - - name: Clean up tag name - shell: bash - run: | - echo "sui_tag=$(echo ${{ env.TAG_NAME }} | sed s/'refs\/tags\/'//)" >> $GITHUB_ENV - - - name: Checking out ${{ env.sui_tag }} - if: ${{ env.sui_tag != 'main' }} - uses: actions/checkout@v3 - with: - ref: ${{ env.sui_tag }} - - - name: cargo build (release) - if: ${{ env.sui_tag != 'main' }} - id: build - run: | - cargo build --release - - echo BIN_SUI="target/release/sui" >> $GITHUB_OUTPUT - echo BIN_SUI_NODE="target/release/sui-node" >> $GITHUB_OUTPUT - echo BIN_SUI_TOOL="target/release/sui-tool" >> $GITHUB_OUTPUT - echo BIN_SUI_FAUCET="target/release/sui-faucet" >> $GITHUB_OUTPUT - echo BIN_SUI_TEST_VALIDATOR="target/release/sui-test-validator" >> $GITHUB_OUTPUT - echo BIN_SUI_INDEXER="target/release/sui-indexer" >> $GITHUB_OUTPUT - - - name: Upload release artifacts - if: ${{ env.sui_tag != 'main' }} - uses: actions/upload-artifact@v3 - with: - name: sui-binaries - path: | - ${{ steps.build.outputs.BIN_SUI }} - ${{ steps.build.outputs.BIN_SUI_NODE }} - ${{ steps.build.outputs.BIN_SUI_TOOL }} - ${{ steps.build.outputs.BIN_SUI_FAUCET }} - ${{ steps.build.outputs.BIN_SUI_TEST_VALIDATOR }} - ${{ steps.build.outputs.BIN_SUI_INDEXER }} - - - name: Publish binaries for ${{ env.sui_tag }} release - if: ${{ env.sui_tag != 'main' }} - uses: softprops/action-gh-release@v1 - with: - tag_name: ${{ env.sui_tag }} - files: | - ${{ steps.build.outputs.BIN_SUI }} - ${{ steps.build.outputs.BIN_SUI_NODE }} - ${{ steps.build.outputs.BIN_SUI_TOOL }} - ${{ steps.build.outputs.BIN_SUI_FAUCET }} - ${{ steps.build.outputs.BIN_SUI_TEST_VALIDATOR }} - ${{ steps.build.outputs.BIN_SUI_INDEXER }} - env: - # Have to use a Personal Access Token (PAT), based on https://tinyurl.com/2by2ntdr - GITHUB_TOKEN: ${{ secrets.GH_RELEASE_BUILDS_TOKEN }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 837450dab67844..1546e96e17f148 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -2,13 +2,13 @@ name: Rust on: push: - branches: [main, extensions, devnet] + branches: [ main, devnet, testnet ] pull_request: - types: [opened, synchronize, reopened, ready_for_review] concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + # cancel redundant builds on PRs (only on PR, not on branches) + group: ${{ github.workflow }}-${{ github.ref_name }} + cancel-in-progress: true env: CARGO_TERM_COLOR: always @@ -28,224 +28,60 @@ env: # rustup (installing toolchains). This should help to reduce flaky CI failures # from transient network timeouts or other issues. CARGO_NET_RETRY: 10 + CARGO_NET_GIT_FETCH_WITH_CLI: true + CARGO_BUILD_JOBS: 16 RUSTUP_MAX_RETRIES: 10 # Don't emit giant backtraces in the CI logs. RUST_BACKTRACE: short - # RUSTFLAGS: -D warnings - RUSTDOCFLAGS: -D warnings jobs: - diff: - runs-on: [ubuntu-latest] - outputs: - isRust: ${{ steps.diff.outputs.isRust }} - isMove: ${{ steps.diff.outputs.isMove }} - isReleaseNotesEligible: ${{ steps.diff.outputs.isReleaseNotesEligible }} - steps: - - uses: actions/checkout@v3 - - name: Detect Changes - uses: "./.github/actions/diffs" - id: diff - - license-check: - name: license-check - runs-on: [ubuntu-latest] - steps: - - uses: actions/checkout@v3 - - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths - - name: Install cargo-hakari, and cache the binary - uses: baptiste0928/cargo-install@30f432979e99f3ea66a8fa2eede53c07063995d8 - with: - crate: cargo-hakari - locked: true - - run: cargo xlint - - run: | - cargo hakari generate --diff # workspace-hack Cargo.toml is up-to-date - cargo hakari manage-deps --dry-run # all workspace crates depend on workspace-hack - - release-notes-description-check: - name: release-notes-check - needs: diff - if: needs.diff.outputs.isReleaseNotesEligible == 'true' - runs-on: [ubuntu-latest] - steps: - - uses: actions/checkout@v3 - - name: Check Pull Request Description - shell: bash - run: | - export PR_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") - export DESCRIPTION=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ - "https://api.github.com/repos/MystenLabs/sui/pulls/${PR_NUMBER}" \ - | jq --raw-output .body) - - if [[ "${DESCRIPTION}" == *"[x]"* ]]; then - if [[ "${DESCRIPTION}" =~ Release[[:space:]]notes[[:space:]]+.* ]]; then - exit 0 - else - echo "At least one '[x]' was checked under 'Type of Change (Check all that apply)', you need to add a blob under the 'Release Notes' section." - exit 1 - fi - fi - test: - needs: diff - if: needs.diff.outputs.isRust == 'true' - timeout-minutes: 45 env: # Tests written with #[sim_test] are often flaky if run as #[tokio::test] - this var # causes #[sim_test] to only run under the deterministic `simtest` job, and not the # non-deterministic `test` job. SUI_SKIP_SIMTESTS: 1 - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: - - [ubuntu-ghcloud] - fail-fast: false - steps: - - uses: actions/checkout@v3 - - uses: taiki-e/install-action@nextest - - name: Set Swap Space - uses: pierotofy/set-swap-space@master - with: - swap-size-gb: 256 - - name: Install python dependencies - run: | - pip install pyopenssl --upgrade - if [ -f narwhal/benchmark/requirements.txt ]; then pip install -r narwhal/benchmark/requirements.txt; fi - - name: cargo test - run: | - cargo nextest run --profile ci - - name: benchmark (smoke) - run: | - cargo run --package sui-benchmark --bin stress -- --log-path /tmp/stress.log --num-client-threads 10 --num-server-threads 24 --num-transfer-accounts 2 bench --target-qps 100 --num-workers 10 --transfer-object 50 --shared-counter 50 --run-duration 10s --stress-stat-collection - pushd narwhal/benchmark && fab smoke && popd - - name: doctests - run: | - cargo test --doc - - name: rustdoc - run: | - cargo doc --workspace --no-deps - # Ensure there are no uncommitted changes in the repo after running tests - - run: scripts/changed-files.sh - shell: bash - - windows-build: - needs: diff - if: needs.diff.outputs.isRust == 'true' timeout-minutes: 45 - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: - - [windows-ghcloud] - fail-fast: false + runs-on: [self-hosted] + needs: clippy steps: - uses: actions/checkout@v3 - - uses: taiki-e/install-action@nextest - uses: arduino/setup-protoc@v1 - # this avoids rate-limiting with: repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Install postgres (Windows) - shell: bash - run: | - choco install postgresql12 --force --params '/Password:root' - echo "C:\Program Files\PostgreSQL\12\bin" >> $GITHUB_PATH - echo "C:\Program Files\PostgreSQL\12\lib" >> $GITHUB_PATH - echo "PQ_LIB_DIR=C:\Program Files\PostgreSQL\12\lib" >> $GITHUB_ENV - echo "PG_DATABASE_URL=postgres://postgres:root@localhost/" >> $GITHUB_ENV - echo "PG_EXAMPLE_DATABASE_URL=postgres://postgres:root@localhost/diesel_example" >> $GITHUB_ENV - - name: cargo build - run: | - cargo build --all-features - shell: bash - - simtest: - needs: diff - if: needs.diff.outputs.isRust == 'true' - timeout-minutes: 45 - runs-on: [ubuntu-ghcloud] - env: - MSIM_WATCHDOG_TIMEOUT_MS: 60000 - steps: - - uses: actions/checkout@v3 - - uses: taiki-e/install-action@nextest - - name: Set Swap Space - uses: pierotofy/set-swap-space@master + - uses: webfactory/ssh-agent@v0.6.0 with: - swap-size-gb: 256 - - name: cargo simtest - run: | - scripts/simtest/cargo-simtest simtest - - name: check new tests for flakiness - run: | - scripts/simtest/stress-new-tests.sh - - rosetta-validation: - needs: diff - if: needs.diff.outputs.isRust == 'true' - timeout-minutes: 45 - runs-on: [ubuntu-ghcloud] - steps: - - uses: actions/checkout@v3 - - - name: Setup environment - run: .github/scripts/rosetta/setup.sh - shell: bash - - - name: Start local Sui network - run: | - sui start --no-full-node & - shell: bash - - - name: Start Rosetta servers - run: .github/scripts/rosetta/start_rosetta.sh - shell: bash - - - name: Sleep for 20 seconds - run: sleep 20s - shell: bash - - - name: Run check:construction test + ssh-private-key: | + ${{ secrets.MAMORU_CORE_KEY }} + ${{ secrets.VALIDATION_CHAIN_KEY }} + - uses: ./.github/actions/rust-setup + - uses: taiki-e/install-action@nextest + - name: cargo test run: | - ./bin/rosetta-cli --configuration-file rosetta_cli.json check:construction - shell: bash - - - name: Run check:data test + sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0 # Enable ipv6 + cargo nextest run --profile ci --no-fail-fast + - name: External crates tests run: | - ./bin/rosetta-cli --configuration-file rosetta_cli.json check:data + cargo xtest + # Ensure there are no uncommitted changes in the repo after running tests + - run: scripts/changed-files.sh shell: bash - # This is a no-op job that allows the resulting action names to line up when - # there are no rust changes in a given PR/commit. This ensures that we can - # continue to block on the rust tests passing in the case of rust changes and - # otherwise not block pushes to main. - test-notrust: - name: test - needs: diff - if: needs.diff.outputs.isRust == 'false' - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: - - [ubuntu-ghcloud] - - [windows-ghcloud] - fail-fast: false - steps: - - run: 'echo "No build required" ' - clippy: - needs: diff - if: needs.diff.outputs.isRust == 'true' - runs-on: [ubuntu-ghcloud] + runs-on: [self-hosted] + needs: rustfmt steps: - uses: arduino/setup-protoc@v1 - # this avoids rate-limiting with: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v3 - - run: rustup component add clippy + - uses: webfactory/ssh-agent@v0.6.0 + with: + ssh-private-key: | + ${{ secrets.MAMORU_CORE_KEY }} + ${{ secrets.VALIDATION_CHAIN_KEY }} + - uses: ./.github/actions/rust-setup + # TODO(bradh): debug and re-enable this; the caching is breaking the clippy build # Enable caching of the 'librocksdb-sys' crate by additionally caching the # 'librocksdb-sys' src directory which is managed by cargo @@ -258,8 +94,6 @@ jobs: run: cargo xclippy -D warnings rustfmt: - needs: diff - if: needs.diff.outputs.isRust == 'true' runs-on: [ubuntu-latest] steps: - uses: actions/checkout@v3 @@ -269,40 +103,3 @@ jobs: with: command: fmt args: --all --check - - cargo-deny: - name: cargo-deny (advisories, licenses, bans, ...) - needs: diff - if: needs.diff.outputs.isRust == 'true' - runs-on: [ubuntu-latest] - steps: - - uses: actions/checkout@v3 - - uses: mystenlabs/cargo-deny-action@main - - #indexer: - # name: indexer - # needs: diff - # if: needs.diff.outputs.isRust == 'true' - # timeout-minutes: 45 - # runs-on: [ubuntu-ghcloud] - # services: - # postgres: - # image: postgres - # env: - # POSTGRES_PASSWORD: postgrespw - # options: >- - # --health-cmd pg_isready - # --health-interval 10s - # --health-timeout 5s - # --health-retries 5 - # ports: - # - 5432:5432 - # steps: - # - uses: actions/checkout@v3 - # - name: integration-test-with-postgres - # #We only have 1 instance of postgres DB, can only run test in single thread - # run: | - # cargo test --package sui-indexer --test integration_tests --features pg_integration -- --test-threads=1 - # env: - # POSTGRES_HOST: localhost - # POSTGRES_PORT: 5432 diff --git a/.github/workflows/simulator-nightly.yml b/.github/workflows/simulator-nightly.yml deleted file mode 100644 index 3395b999316d01..00000000000000 --- a/.github/workflows/simulator-nightly.yml +++ /dev/null @@ -1,134 +0,0 @@ -name: Simulator Tests - -concurrency: - group: ${{ github.workflow }} - -on: - schedule: - - cron: '0 9 * * *' # UTC timing is every day at 1am PST - workflow_dispatch: - -jobs: - simtest: - timeout-minutes: 120 - permissions: - # The "id-token: write" permission is required or Machine ID will not be - # able to authenticate with the cluster. - id-token: write - contents: read - runs-on: ubuntu-latest - - steps: - - name: Install Teleport - uses: teleport-actions/setup@8d23169da0f80ce14d25ed791272faa1c07f4f1e # pin@v1 - with: - version: 11.3.1 - - name: Authorize against Teleport - id: auth - uses: teleport-actions/auth@9091dad16a564f3c5b9c2ec520b234a4872b6879 # pin@v1 - with: - # Specify the publically accessible address of your Teleport proxy. - proxy: proxy.mysten-int.com:443 - # Specify the name of the join token for your bot. - token: sui-simtest-token - # Specify the length of time that the generated credentials should be - # valid for. This is optional and defaults to "1h" - certificate-ttl: 2h - - # Cargo clean and git restore on any left over files from git checkout - - name: Environment clean - run: | - tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 5 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && cargo clean && git restore ." - - # Deleting files in tmpfs that usually fill up pretty quickly after each run - - name: Tmpfs clean - run: | - tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 5 ssh ubuntu@simtest-01 "sudo rm -rfd /tmp/*" - - # Checkout out the latest sui repo - - name: Checkout sui repo - run: | - tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 10 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && git fetch origin main && git rebase origin/main" - - # Setting up cargo and simtest - - name: Install simtest - run: | - tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 10 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && ./scripts/simtest/install.sh" - - # Build simtest - - name: Build simtest - run: | - tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 30 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && CARGO_TERM_COLOR=always CARGO_INCREMENTAL=0 CARGO_NET_RETRY=10 USE_MOCK_CRYPTO=1 ./scripts/simtest/cargo-simtest simtest build" - - # Run simulator tests - - name: Run simtest - run: | - tsh -i ${{ steps.auth.outputs.identity-file }} --ttl 120 ssh ubuntu@simtest-01 "source ~/.bashrc && source ~/.cargo/env && cd ~/sui && RUSTUP_MAX_RETRIES=10 CARGO_TERM_COLOR=always CARGO_INCREMENTAL=0 CARGO_NET_RETRY=10 RUST_BACKTRACE=short RUST_LOG=off USE_MOCK_CRYPTO=1 NUM_CPUS=12 ./scripts/simtest/simtest-run.sh" - - notify: - name: Notify - needs: [simtest] - runs-on: ubuntu-latest - if: always() # always notify - - steps: - - uses: technote-space/workflow-conclusion-action@v3 - - - name: Checkout sui repo main branch - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # pin@v3 - - - name: Get sui commit - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - export sui_sha=$(git rev-parse HEAD) - echo "sui_sha=${sui_sha}" >> $GITHUB_ENV - - - name: Get link to logs - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh_job_link=$(gh api -X GET 'repos/MystenLabs/sui/actions/runs/${{ github.run_id }}/jobs' --jq '.jobs.[0].html_url') - echo "gh_job_link=${gh_job_link}" >> $GITHUB_ENV - - - name: Post to slack - uses: slackapi/slack-github-action@v1.24.0 # pin@v1.21.0 - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} - SUI_SHA: ${{ env.sui_sha }} - GH_JOB_LINK: ${{ env.gh_job_link }} - with: - channel-id: 'simtest-nightly' - payload: | - { - "text": "*${{ github.workflow }}* workflow status: `${{ env.WORKFLOW_CONCLUSION }}`", - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "*${{ github.workflow }}* workflow status: `${{ env.WORKFLOW_CONCLUSION }}`" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Sui commit: \nRun: <${{ env.GH_JOB_LINK }}|${{ github.run_id }}>" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "To debug failures: `tsh ssh ubuntu@simtest-01` and look in the `/home/ubuntu/simtest_logs/{date}` folder for test results" - } - } - ] - } diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 577d7d24950d9f..00000000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Mark stale issues and pull requests -on: - schedule: - - cron: "30 1 * * *" -jobs: - stale: - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - steps: - - uses: actions/stale@v8 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-stale: 60 - days-before-close: -1 - exempt-all-milestones: true - exempt-all-assignees: true - stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days.' - stale-pr-message: 'This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days.' - close-issue-message: 'This issue was closed because it has been stalled for 7 days with no activity.' - close-pr-message: 'This PR was closed because it has been stalled for 7 days with no activity.' diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml deleted file mode 100644 index 06bd756a81cbfd..00000000000000 --- a/.github/workflows/tag.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Tag - -on: - repository_dispatch: - types: [tag-main] - - workflow_call: - inputs: - sui_commit: - description: 'Sui repo commit to tag' - type: string - required: true - tag_name: - description: 'Tag Name' - type: string - required: true - workflow_dispatch: - inputs: - sui_commit: - description: 'Sui repo commit to tag' - type: string - required: true - tag_name: - description: 'Tag Name' - type: string - required: true - -env: - SUI_COMMIT: "${{ github.event.client_payload.sui_commit || github.event.inputs.sui_commit }}" - TAG_NAME: "${{ github.event.client_payload.tag_name || github.event.inputs.tag_name }}" - -jobs: - tag: - name: Tag - runs-on: [self-hosted, self-hosted-arc] - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Tag - uses: julbme/gh-action-manage-tag@v1 - with: - name: ${{ env.TAG_NAME }} - state: present - from: ${{ env.SUI_COMMIT }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/trigger-builds.yml b/.github/workflows/trigger-builds.yml deleted file mode 100644 index 44272a13ca04f3..00000000000000 --- a/.github/workflows/trigger-builds.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Trigger builds for images and binaries - -on: - workflow_dispatch: - push: - branches: - - 'devnet' - - 'testnet' - - 'mainnet' - - 'releases/sui-*-release' - -concurrency: ${{ github.workflow }}-${{ github.ref }} - -jobs: - docker-images: - runs-on: ubuntu-latest - steps: - - name: Dispatch Docker Builds in MystenLabs/sui-operations - uses: peter-evans/repository-dispatch@26b39ed245ab8f31526069329e112ab2fb224588 # pin@v2 - with: - repository: MystenLabs/sui-operations - token: ${{ secrets.DOCKER_BINARY_BUILDS_DISPATCH }} - event-type: build-docker-images - client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "ref_name": "${{ github.ref_name }}"}' - - release-binaries: - runs-on: ubuntu-latest - steps: - - name: Dispatch Release binaries builds in MystenLabs/sui-operations - uses: peter-evans/repository-dispatch@26b39ed245ab8f31526069329e112ab2fb224588 # pin@v2 - with: - repository: MystenLabs/sui-operations - token: ${{ secrets.DOCKER_BINARY_BUILDS_DISPATCH }} - event-type: build-release-binaries - client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}' - - tag-docker-hub-images: - runs-on: ubuntu-latest - steps: - - name: Dispatch Tagging of images in DockerHub, in MystenLabs/sui-operations - uses: peter-evans/repository-dispatch@26b39ed245ab8f31526069329e112ab2fb224588 # pin@v2 - with: - repository: MystenLabs/sui-operations - token: ${{ secrets.DOCKER_BINARY_BUILDS_DISPATCH }} - event-type: tag-docker-images - client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "ref_name": "${{ github.ref_name }}", "image": "all"}' diff --git a/.github/workflows/turborepo.yml b/.github/workflows/turborepo.yml deleted file mode 100644 index 463b60b9fb3675..00000000000000 --- a/.github/workflows/turborepo.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: Turborepo CI - -on: - push: - branches: [main] - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - -jobs: - audit: - name: pnpm audit - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2.2.4 - with: - version: 8 - - name: Install Nodejs - uses: actions/setup-node@v3 - with: - node-version: "18" - - name: Run audit - run: pnpm audit --prod --audit-level moderate - - build: - name: Lint, Build, and Test - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - uses: pnpm/action-setup@v2.2.4 - with: - version: 8 - - name: Install Nodejs - uses: actions/setup-node@v3 - with: - node-version: "18" - cache: "pnpm" - - name: Install dependencies - run: pnpm install --frozen-lockfile - - name: Manypkg Check - run: pnpm manypkg check - - name: Turbo Cache - id: turbo-cache - uses: actions/cache@v3 - with: - path: node_modules/.cache/turbo - key: turbo-${{ runner.os }}-${{ github.sha }} - restore-keys: | - turbo-${{ runner.os }}- - - name: Lint - run: pnpm turbo lint - - name: Build - run: pnpm turbo build - - name: Test - run: pnpm turbo test - - # Pack wallet extension and upload it as an artifact for easy developer use: - - name: Wallet Extension Has Changes? - id: wallet-diff - continue-on-error: true - run: pnpm dlx turbo-ignore sui-wallet - - name: Wallet Extension Preview Package - if: ${{ steps.wallet-diff.outcome == 'failure' }} - run: pnpm wallet pack:zip - - uses: actions/upload-artifact@v3 - if: ${{ steps.wallet-diff.outcome == 'failure' }} - with: - name: wallet-extension - path: apps/wallet/web-ext-artifacts/* - if-no-files-found: error - retention-days: 7 diff --git a/Cargo.lock b/Cargo.lock index 209157ad68ad4d..48790c570e602d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,7 +14,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ - "gimli", + "gimli 0.27.0", ] [[package]] @@ -76,6 +76,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107" dependencies = [ "cfg-if", + "const-random", "getrandom 0.2.8", "once_cell", "version_check", @@ -144,7 +145,7 @@ dependencies = [ "async-trait", "bincode", "bytes", - "ed25519", + "ed25519 1.5.3", "futures", "hex", "http", @@ -157,9 +158,9 @@ dependencies = [ "rcgen", "ring", "rustls 0.21.1", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "socket2 0.5.2", + "socket2 0.5.3", "tap", "thiserror", "tokio", @@ -178,7 +179,7 @@ dependencies = [ "anemo-build", "anemo-tower", "anyhow", - "clap 4.3.3", + "clap 4.3.4", "mysten-network", "rand 0.8.5", "sui-types", @@ -194,7 +195,7 @@ version = "0.0.0" source = "git+https://github.com/mystenlabs/anemo.git?rev=0f0ae8d8f222820a20b586088ea7a2941478a159#0f0ae8d8f222820a20b586088ea7a2941478a159" dependencies = [ "prettyplease 0.1.23", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -207,7 +208,7 @@ dependencies = [ "anemo", "anemo-tower", "bytes", - "clap 4.3.3", + "clap 4.3.4", "dashmap", "rand 0.8.5", "tokio", @@ -321,7 +322,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -380,7 +381,7 @@ dependencies = [ "ark-std", "derivative", "hashbrown 0.13.2", - "itertools", + "itertools 0.10.5", "num-traits 0.2.15", "rayon", "zeroize", @@ -398,7 +399,7 @@ dependencies = [ "ark-std", "derivative", "digest 0.10.6", - "itertools", + "itertools 0.10.5", "num-bigint", "num-traits 0.2.15", "paste", @@ -425,7 +426,7 @@ checksum = "f3c2e7d0f2d67cc7fc925355c74d36e7eda19073639be4a0a233d4611b8c959d" dependencies = [ "num-bigint", "num-traits 0.2.15", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -518,7 +519,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd34f0920d995d2c932f38861c416f70de89a6de9875876b012557079603e6cc" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -564,6 +565,225 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +[[package]] +name = "arrow" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aea9fcb25bbb70f7f922f95b99ca29c1013dab47f6df61a6f24861842dd7f2e" +dependencies = [ + "ahash 0.8.2", + "arrow-arith", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-csv", + "arrow-data", + "arrow-ipc", + "arrow-json", + "arrow-ord", + "arrow-row", + "arrow-schema", + "arrow-select", + "arrow-string", +] + +[[package]] +name = "arrow-arith" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d967b42f7b12c91fd78acd396b20c2973b184c8866846674abbb00c963e93ab" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "half 2.2.1", + "num", +] + +[[package]] +name = "arrow-array" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190f208ee7aa0f3596fa0098d42911dec5e123ca88c002a08b24877ad14c71e" +dependencies = [ + "ahash 0.8.2", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "chrono-tz 0.8.2", + "half 2.2.1", + "hashbrown 0.13.2", + "num", +] + +[[package]] +name = "arrow-buffer" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d33c733c5b6c44a0fc526f29c09546e04eb56772a7a21e48e602f368be381f6" +dependencies = [ + "half 2.2.1", + "num", +] + +[[package]] +name = "arrow-cast" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abd349520b6a1ed4924ae2afc9d23330a3044319e4ec3d5b124c09e4d440ae87" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "chrono", + "comfy-table", + "lexical-core 0.8.5", + "num", +] + +[[package]] +name = "arrow-csv" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c80af3c3e290a2a7e1cc518f1471dff331878cb4af9a5b088bf030b89debf649" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "chrono", + "csv", + "csv-core", + "lazy_static 1.4.0", + "lexical-core 0.8.5", + "regex", +] + +[[package]] +name = "arrow-data" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c8361947aaa96d331da9df3f7a08bdd8ab805a449994c97f5c4d24c4b7e2cf" +dependencies = [ + "arrow-buffer", + "arrow-schema", + "half 2.2.1", + "num", +] + +[[package]] +name = "arrow-ipc" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a46ee000b9fbd1e8db6e8b26acb8c760838512b39d8c9f9d73892cb55351d50" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "flatbuffers", +] + +[[package]] +name = "arrow-json" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf2366607be867ced681ad7f272371a5cf1fc2941328eef7b4fee14565166fb" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "chrono", + "half 2.2.1", + "indexmap 1.9.3", + "lexical-core 0.8.5", + "num", + "serde 1.0.164", + "serde_json", +] + +[[package]] +name = "arrow-ord" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304069901c867200e21ec868ae7521165875470ef2f1f6d58f979a443d63997e" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "half 2.2.1", + "num", +] + +[[package]] +name = "arrow-row" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d57fe8ceef3392fdd493269d8a2d589de17bafce151aacbffbddac7a57f441a" +dependencies = [ + "ahash 0.8.2", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "half 2.2.1", + "hashbrown 0.13.2", +] + +[[package]] +name = "arrow-schema" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a16b88a93ac8350f0200b1cd336a1f887315925b8dd7aa145a37b8bdbd8497a4" + +[[package]] +name = "arrow-select" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98e8a4d6ca37d5212439b24caad4d80743fcbb706706200dd174bb98e68fe9d8" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "num", +] + +[[package]] +name = "arrow-string" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbb594efa397eb6a546f42b1f8df3d242ea84dbfda5232e06035dc2b2e2c8459" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "regex", + "regex-syntax 0.6.28", +] + +[[package]] +name = "as-ffi-bindings" +version = "0.2.5" +source = "git+https://github.com/Mamoru-Foundation/as-ffi-bindings.git#568cc240725d8056fa86b788ad744e3539d995a3" +dependencies = [ + "anyhow", + "wasmer", +] + [[package]] name = "asn1-rs" version = "0.5.1" @@ -586,7 +806,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "synstructure", @@ -598,7 +818,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -647,7 +867,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 2.0.16", ] @@ -668,7 +888,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -680,13 +900,13 @@ source = "git+https://github.com/mystenmark/async-task?rev=4e45b26e11126b191701b [[package]] name = "async-trait" -version = "0.1.68" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +checksum = "705339e0e4a9690e2908d2b3d049d85682cf19fbd5782494498fbf7003a6a282" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", - "syn 2.0.16", + "syn 1.0.107", ] [[package]] @@ -1025,9 +1245,9 @@ dependencies = [ [[package]] name = "axum" -version = "0.6.6" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e246206a63c9830e118d12c894f56a82033da1a2361f5544deeee3df85c99d9" +checksum = "6137c6234afb339e75e764c866e3594900f0211e1315d33779f269bbe2ec6967" dependencies = [ "async-trait", "axum-core", @@ -1045,23 +1265,23 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustversion", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "serde_path_to_error", "serde_urlencoded", "sync_wrapper", "tokio", "tower", - "tower-http", + "tower-http 0.4.0", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.3.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34" dependencies = [ "async-trait", "bytes", @@ -1088,7 +1308,7 @@ dependencies = [ "pin-project-lite", "tokio", "tower", - "tower-http", + "tower-http 0.3.5", "tower-layer", "tower-service", ] @@ -1166,6 +1386,12 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "base64" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" + [[package]] name = "base64" version = "0.21.2" @@ -1194,7 +1420,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b06b4c1f053002b70e7084ac944c77d58d5d92b2110dbc5e852735e00ad3ccc" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "thiserror", ] @@ -1204,7 +1430,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1222,7 +1448,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3deeecb812ca5300b7d3f66f730cc2ebd3511c3d36c691dd79c165d5b19a26e3" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -1239,7 +1465,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1255,7 +1481,7 @@ dependencies = [ "lazycell", "peeking_take_while", "prettyplease 0.2.6", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "regex", "rustc-hash", @@ -1269,11 +1495,29 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b30ed1d6f8437a487a266c8293aeb95b61a23261273e3e02912cdb8b68bf798b" dependencies = [ - "bs58", + "bs58 0.4.0", + "hmac 0.12.1", + "k256 0.11.6", + "once_cell", + "pbkdf2 0.11.0", + "rand_core 0.6.4", + "ripemd", + "sha2 0.10.6", + "subtle", + "zeroize", +] + +[[package]] +name = "bip32" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e141fb0f8be1c7b45887af94c88b182472b57c96b56773250ae00cd6a14a164" +dependencies = [ + "bs58 0.5.0", "hmac 0.12.1", - "k256", + "k256 0.13.1", "once_cell", - "pbkdf2", + "pbkdf2 0.12.1", "rand_core 0.6.4", "ripemd", "sha2 0.10.6", @@ -1332,10 +1576,22 @@ version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ - "funty", - "radium", + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", "tap", - "wyz", + "wyz 0.5.1", ] [[package]] @@ -1395,6 +1651,28 @@ dependencies = [ "generic-array", ] +[[package]] +name = "blockchain-data-derive" +version = "0.1.0" +source = "git+https://github.com/Mamoru-Foundation/mamoru-core?rev=166958c73193421407b0775a73d31a147b744afb#166958c73193421407b0775a73d31a147b744afb" +dependencies = [ + "darling 0.14.2", + "maplit", + "paste", + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + +[[package]] +name = "blockchain-data-macro" +version = "0.1.0" +source = "git+https://github.com/Mamoru-Foundation/mamoru-core?rev=166958c73193421407b0775a73d31a147b744afb#166958c73193421407b0775a73d31a147b744afb" +dependencies = [ + "blockchain-data-derive", + "paste", +] + [[package]] name = "blst" version = "0.3.10" @@ -1438,6 +1716,15 @@ dependencies = [ "sha2 0.9.9", ] +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "sha2 0.10.6", +] + [[package]] name = "bstr" version = "1.1.0" @@ -1447,7 +1734,7 @@ dependencies = [ "memchr", "once_cell", "regex-automata", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1463,7 +1750,7 @@ dependencies = [ "merlin", "rand 0.8.5", "rand_core 0.6.4", - "serde 1.0.152", + "serde 1.0.164", "serde_derive", "sha3 0.9.1", "subtle-ng", @@ -1482,6 +1769,28 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +[[package]] +name = "bytecheck" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13fe11640a23eb24562225322cd3e452b93a3d4091d62fab69c70542fcd17d1f" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5" +dependencies = [ + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + [[package]] name = "bytecode-interpreter-crypto" version = "0.1.0" @@ -1511,7 +1820,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1561,8 +1870,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e10ca87c81aaa3a949dbbe2b5e6c2c45dbc94ba4897e45ea31ff9ec5087be3dc" dependencies = [ "cached_proc_macro_types", - "darling", - "proc-macro2 1.0.58", + "darling 0.14.2", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -1579,7 +1888,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c77df041dc383319cc661b428b6961a005db4d6808d5e12536931b1ca9556055" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1588,7 +1897,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1599,8 +1908,8 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.16", - "serde 1.0.152", + "semver 1.0.17", + "serde 1.0.164", "serde_json", "thiserror", ] @@ -1670,7 +1979,7 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits 0.2.15", - "serde 1.0.152", + "serde 1.0.164", "time 0.1.45", "wasm-bindgen", "winapi", @@ -1683,7 +1992,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29c39203181991a7dd4343b8005bd804e7a9a37afb8ac070e43771e8c820bbde" dependencies = [ "chrono", - "chrono-tz-build", + "chrono-tz-build 0.0.3", + "phf", +] + +[[package]] +name = "chrono-tz" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9cc2b23599e6d7479755f3594285efb3f74a1bdca7a7374948bc831e23a552" +dependencies = [ + "chrono", + "chrono-tz-build 0.1.0", "phf", ] @@ -1698,6 +2018,17 @@ dependencies = [ "phf_codegen", ] +[[package]] +name = "chrono-tz-build" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9998fb9f7e9b2111641485bf8beb32f92945f97f92a3d061f744cfef335f751" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + [[package]] name = "ciborium" version = "0.2.0" @@ -1706,7 +2037,7 @@ checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" dependencies = [ "ciborium-io", "ciborium-ll", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1722,7 +2053,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" dependencies = [ "ciborium-io", - "half", + "half 1.8.2", ] [[package]] @@ -1771,7 +2102,7 @@ dependencies = [ "bitflags", "clap_derive 3.2.18", "clap_lex 0.2.4", - "indexmap", + "indexmap 1.9.3", "once_cell", "strsim 0.10.0", "termcolor", @@ -1780,9 +2111,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.3" +version = "4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8f255e4b8027970e78db75e78831229c9815fdbfa67eb1a1b777a62e24b4a0" +checksum = "80672091db20273a15cf9fdd4e47ed43b5091ec9841bf4c6145c9dfbbcae09ed" dependencies = [ "clap_builder", "clap_derive 4.3.2", @@ -1791,9 +2122,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.3.3" +version = "4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd4f3c17c83b0ba34ffbc4f8bbd74f079413f747f84a6f89292f138057e36ab" +checksum = "c1458a1df40e1e2afebb7ab60ce55c1fa8f431146205aa5f4887e0b111c27636" dependencies = [ "anstream", "anstyle", @@ -1810,7 +2141,7 @@ checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" dependencies = [ "heck 0.4.0", "proc-macro-error", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -1822,7 +2153,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" dependencies = [ "heck 0.4.0", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 2.0.16", ] @@ -1869,7 +2200,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3362992a0d9f1dd7c3d0e89e0ab2bb540b7a95fea8cd798090e758fda2899b5e" dependencies = [ "codespan-reporting", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -1878,7 +2209,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "termcolor", "unicode-width", ] @@ -1914,7 +2245,7 @@ checksum = "410208eb08c3f3ad44b95b51c4fc0d5993cbcc9dd39cfadb4214b9115a97dcb5" dependencies = [ "ansi_term", "dissimilar", - "itertools", + "itertools 0.10.5", ] [[package]] @@ -1948,7 +2279,7 @@ dependencies = [ "lazy_static 1.4.0", "nom 5.1.2", "rust-ini", - "serde 1.0.152", + "serde 1.0.164", "serde-hjson", "serde_json", "toml 0.5.10", @@ -1976,7 +2307,7 @@ checksum = "e57ff02e8ad8e06ab9731d5dc72dc23bef9200778eae1a89d555d8c42e5d4a86" dependencies = [ "prost", "prost-types", - "tonic", + "tonic 0.8.3", "tracing-core", ] @@ -1993,12 +2324,12 @@ dependencies = [ "hdrhistogram", "humantime", "prost-types", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "thread_local", "tokio", "tokio-stream", - "tonic", + "tonic 0.8.3", "tracing", "tracing-core", "tracing-subscriber 0.3.16", @@ -2010,6 +2341,28 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +[[package]] +name = "const-random" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +dependencies = [ + "const-random-macro", + "proc-macro-hack", +] + +[[package]] +name = "const-random-macro" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +dependencies = [ + "getrandom 0.2.8", + "once_cell", + "proc-macro-hack", + "tiny-keccak", +] + [[package]] name = "const-str" version = "0.5.3" @@ -2062,6 +2415,48 @@ dependencies = [ "memchr", ] +[[package]] +name = "corosensei" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9847f90f32a50b0dcbd68bc23ff242798b13080b97b0569f6ed96a45ce4cf2cd" +dependencies = [ + "autocfg", + "cfg-if", + "libc", + "scopeguard", + "windows-sys 0.33.0", +] + +[[package]] +name = "cosmos-sdk-proto" +version = "0.19.0" +source = "git+https://github.com/Mamoru-Foundation/cosmos-rust.git?rev=5e0ed6c#5e0ed6c6b568fdc972ddd8e75286a54ce9cd951f" +dependencies = [ + "prost", + "prost-types", + "tendermint-proto", + "tonic 0.9.2", +] + +[[package]] +name = "cosmrs" +version = "0.14.0" +source = "git+https://github.com/Mamoru-Foundation/cosmos-rust.git?rev=5e0ed6c#5e0ed6c6b568fdc972ddd8e75286a54ce9cd951f" +dependencies = [ + "bip32 0.5.1", + "cosmos-sdk-proto", + "ecdsa 0.16.6", + "eyre", + "k256 0.13.1", + "rand_core 0.6.4", + "serde 1.0.164", + "serde_json", + "subtle-encoding", + "tendermint", + "thiserror", +] + [[package]] name = "cpp_demangle" version = "0.4.0" @@ -2080,6 +2475,72 @@ dependencies = [ "libc", ] +[[package]] +name = "cranelift-bforest" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "529ffacce2249ac60edba2941672dfedf3d96558b415d0d8083cd007456e0f55" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427d105f617efc8cb55f8d036a7fded2e227892d8780b4985e5551f8d27c4a92" +dependencies = [ + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-isle", + "gimli 0.26.2", + "log", + "regalloc2", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551674bed85b838d45358e3eab4f0ffaa6790c70dc08184204b9a54b41cdb7d1" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b3a63ae57498c3eb495360944a33571754241e15e47e3bcae6082f40fec5866" + +[[package]] +name = "cranelift-entity" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11aa8aa624c72cc1c94ea3d0739fa61248260b5b14d3646f51593a88d67f3e6e" + +[[package]] +name = "cranelift-frontend" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "544ee8f4d1c9559c9aa6d46e7aaeac4a13856d620561094f35527356c7d21bd0" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed16b14363d929b8c37e3c557d0a7396791b383ecc302141643c054343170aad" + [[package]] name = "crc32fast" version = "1.3.2" @@ -2102,14 +2563,14 @@ dependencies = [ "clap 3.2.23", "criterion-plot", "futures", - "itertools", + "itertools 0.10.5", "lazy_static 1.4.0", "num-traits 0.2.15", "oorandom", "plotters", "rayon", "regex", - "serde 1.0.152", + "serde 1.0.164", "serde_derive", "serde_json", "tinytemplate", @@ -2124,7 +2585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] @@ -2296,7 +2757,7 @@ dependencies = [ "csv-core", "itoa", "ryu", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -2350,7 +2811,7 @@ dependencies = [ "byteorder", "digest 0.9.0", "rand_core 0.6.4", - "serde 1.0.152", + "serde 1.0.164", "subtle-ng", "zeroize", ] @@ -2376,7 +2837,7 @@ dependencies = [ "cc", "codespan-reporting", "once_cell", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "scratch", "syn 1.0.107", @@ -2394,7 +2855,7 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39e61fda7e62115119469c7b3591fd913ecca96fb766cfd3f2e2502ab7bc87a5" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2405,35 +2866,70 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.14.2", + "darling_macro 0.14.2", ] [[package]] -name = "darling_core" +name = "darling" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +dependencies = [ + "darling_core 0.20.1", + "darling_macro 0.20.1", +] + +[[package]] +name = "darling_core" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "strsim 0.10.0", "syn 1.0.107", ] +[[package]] +name = "darling_core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2 1.0.59", + "quote 1.0.26", + "strsim 0.10.0", + "syn 2.0.16", +] + [[package]] name = "darling_macro" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" dependencies = [ - "darling_core", + "darling_core 0.14.2", "quote 1.0.26", "syn 1.0.107", ] +[[package]] +name = "darling_macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +dependencies = [ + "darling_core 0.20.1", + "quote 1.0.26", + "syn 2.0.16", +] + [[package]] name = "dashmap" version = "5.4.0" @@ -2473,6 +2969,172 @@ dependencies = [ "syn 1.0.107", ] +[[package]] +name = "datafusion" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a7d4b334f4512ff2fdbce87f511f570ae895af1ac7c729e77c12583253b22a" +dependencies = [ + "ahash 0.8.2", + "arrow", + "arrow-array", + "arrow-schema", + "async-trait", + "bytes", + "chrono", + "dashmap", + "datafusion-common", + "datafusion-execution", + "datafusion-expr", + "datafusion-optimizer", + "datafusion-physical-expr", + "datafusion-row", + "datafusion-sql", + "futures", + "glob", + "hashbrown 0.13.2", + "indexmap 1.9.3", + "itertools 0.10.5", + "lazy_static 1.4.0", + "log", + "num_cpus", + "object_store", + "parking_lot 0.12.1", + "parquet", + "percent-encoding", + "pin-project-lite", + "rand 0.8.5", + "smallvec", + "sqlparser", + "tempfile", + "tokio", + "tokio-stream", + "tokio-util 0.7.4", + "url", + "uuid", +] + +[[package]] +name = "datafusion-common" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80abfcb1dbc6390f952f21de9069e6177ad6318fcae5fbceabb50666d96533dd" +dependencies = [ + "arrow", + "arrow-array", + "chrono", + "num_cpus", + "object_store", + "parquet", + "sqlparser", +] + +[[package]] +name = "datafusion-execution" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2524f1b4b58319895b112809d2a59e54fa662d0e46330a455f22882c2cb7b9" +dependencies = [ + "dashmap", + "datafusion-common", + "datafusion-expr", + "hashbrown 0.13.2", + "log", + "object_store", + "parking_lot 0.12.1", + "rand 0.8.5", + "tempfile", + "url", +] + +[[package]] +name = "datafusion-expr" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af8040b7a75b04685f4db0a1b11ffa93cd163c1bc13751df3f5cf76baabaf5a1" +dependencies = [ + "ahash 0.8.2", + "arrow", + "datafusion-common", + "sqlparser", +] + +[[package]] +name = "datafusion-optimizer" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74ceae25accc0f640a4238283f55f3a9fd181d55398703a4330fb2c46261e6a2" +dependencies = [ + "arrow", + "async-trait", + "chrono", + "datafusion-common", + "datafusion-expr", + "datafusion-physical-expr", + "hashbrown 0.13.2", + "itertools 0.10.5", + "log", + "regex-syntax 0.6.28", +] + +[[package]] +name = "datafusion-physical-expr" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df4cf228b312f2758cb78e93fe3d2dc602345028efdf7cfa5b338cb370d0a347" +dependencies = [ + "ahash 0.8.2", + "arrow", + "arrow-array", + "arrow-buffer", + "arrow-schema", + "blake2", + "blake3", + "chrono", + "datafusion-common", + "datafusion-expr", + "datafusion-row", + "half 2.2.1", + "hashbrown 0.13.2", + "indexmap 1.9.3", + "itertools 0.10.5", + "lazy_static 1.4.0", + "libc", + "md-5 0.10.5", + "paste", + "petgraph 0.6.2", + "rand 0.8.5", + "sha2 0.10.6", + "unicode-segmentation", + "uuid", +] + +[[package]] +name = "datafusion-row" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52b486fb3d81bb132e400304be01af5aba0ad6737e3518045bb98944991fe32" +dependencies = [ + "arrow", + "datafusion-common", + "paste", + "rand 0.8.5", +] + +[[package]] +name = "datafusion-sql" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773e985c182e41cfd68f7a7b483ab6bfb68beaac241c348cd4b1bf9f9d61b762" +dependencies = [ + "arrow", + "arrow-schema", + "datafusion-common", + "datafusion-expr", + "log", + "sqlparser", +] + [[package]] name = "datatest-stable" version = "0.1.3" @@ -2541,7 +3203,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2552,7 +3214,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2563,7 +3225,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cdeb9ec472d588e539a818b2dee436825730da08ad0017c4b1a17676bdc8b7" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2583,8 +3245,8 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" dependencies = [ - "darling", - "proc-macro2 1.0.58", + "darling 0.14.2", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2606,7 +3268,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case 0.4.0", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "rustc_version", "syn 1.0.107", @@ -2625,7 +3287,7 @@ dependencies = [ "once_cell", "petgraph 0.6.2", "rayon", - "serde 1.0.152", + "serde 1.0.164", "toml 0.5.10", ] @@ -2658,7 +3320,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b10c03b954333d05bfd5be1d8a74eae2c9ca77b86e0f1c3a1ea29c49da1d6c2" dependencies = [ "heck 0.4.0", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2670,7 +3332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ad74fdcf086be3d4fdd142f67937678fe60ed431c3b2f08599e7687269410c4" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2710,7 +3372,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c0ff24a73b51d9009c40897faf87d31b77345c90ffbf4dc3a1d2957032c5653" dependencies = [ - "itertools", + "itertools 0.10.5", ] [[package]] @@ -2799,7 +3461,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -2837,7 +3499,7 @@ dependencies = [ "chrono", "nom 7.1.2", "rust_decimal", - "serde 1.0.152", + "serde 1.0.164", "thiserror", "time 0.3.17", ] @@ -2880,11 +3542,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ "pkcs8 0.9.0", - "serde 1.0.152", + "serde 1.0.164", "signature 1.6.4", "zeroize", ] +[[package]] +name = "ed25519" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fb04eee5d9d907f29e80ee6b0e78f7e2c82342c63e3580d8c4f69d9d5aad963" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.0.0", +] + [[package]] name = "ed25519-consensus" version = "2.1.0" @@ -2894,7 +3566,7 @@ dependencies = [ "curve25519-dalek-ng", "hex", "rand_core 0.6.4", - "serde 1.0.152", + "serde 1.0.164", "sha2 0.9.9", "thiserror", "zeroize", @@ -2907,9 +3579,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97c6ac152eba578c1c53d2cefe8ad02e239e3d6f971b0f1ef3cb54cd66037fa0" dependencies = [ "curve25519-dalek-fiat", - "ed25519", + "ed25519 1.5.3", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "serde_bytes", "sha2 0.9.9", "zeroize", @@ -2994,6 +3666,26 @@ dependencies = [ "serde_yaml 0.8.26", ] +[[package]] +name = "enum-iterator" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" +dependencies = [ + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + [[package]] name = "enum_dispatch" version = "0.3.9" @@ -3001,7 +3693,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1693044dcf452888dd3a6a6a0dab67f0652094e3920dfe029a54d2f37d9b7394" dependencies = [ "once_cell", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + +[[package]] +name = "enumset" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19be8061a06ab6f3a6cf21106c873578bf01bd42ad15e0311a9c76161cb1c753" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03e7b551eba279bf0fa88b83a46330168c1560a52a94f5126f892f0b364ab3e0" +dependencies = [ + "darling 0.14.2", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -3019,6 +3732,21 @@ dependencies = [ "termcolor", ] +[[package]] +name = "envy" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" +dependencies = [ + "serde 1.0.164", +] + +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + [[package]] name = "erasable" version = "1.2.1" @@ -3071,11 +3799,58 @@ dependencies = [ "str-buf", ] +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde 1.0.164", + "serde_json", + "sha3 0.10.6", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash 0.8.0", + "impl-rlp", + "impl-serde 0.4.0", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash 0.8.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.1", + "uint", +] + [[package]] name = "ethnum" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0198b9d0078e0f30dedc7acbb21c974e838fc8fae3ee170128658a98cb2c1c04" +dependencies = [ + "serde 1.0.164", +] [[package]] name = "event-listener" @@ -3085,9 +3860,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "expect-test" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3" +checksum = "1d4661aca38d826eb7c72fe128e4238220616de4c0cc00db7bfc38e2e1364dd3" dependencies = [ "dissimilar", "once_cell", @@ -3114,6 +3889,12 @@ dependencies = [ "rand 0.7.3", ] +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + [[package]] name = "fastcrypto" version = "0.1.5" @@ -3131,7 +3912,7 @@ dependencies = [ "blake2", "blake3", "blst", - "bs58", + "bs58 0.4.0", "bulletproofs", "cbc", "ctr", @@ -3156,9 +3937,9 @@ dependencies = [ "rsa", "schemars", "secp256k1", - "serde 1.0.152", + "serde 1.0.164", "serde_bytes", - "serde_with", + "serde_with 2.1.0", "sha2 0.10.6", "sha3 0.10.6", "signature 2.0.0", @@ -3175,7 +3956,7 @@ version = "0.1.3" source = "git+https://github.com/MystenLabs/fastcrypto?rev=c961a01596a87e76f590c7e43aca9d57106dbbb1#c961a01596a87e76f590c7e43aca9d57106dbbb1" dependencies = [ "convert_case 0.6.0", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -3202,7 +3983,7 @@ dependencies = [ "poseidon-ark", "regex", "schemars", - "serde 1.0.152", + "serde 1.0.164", "serde_json", ] @@ -3285,6 +4066,18 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + [[package]] name = "fixedbitset" version = "0.2.0" @@ -3297,6 +4090,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "flatbuffers" +version = "23.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77f5399c2c9c50ae9418e522842ad362f61ee48b346ac106807bd355a8a7c619" +dependencies = [ + "bitflags", + "rustc_version", +] + [[package]] name = "flate2" version = "1.0.25" @@ -3307,6 +4110,16 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "flex-error" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" +dependencies = [ + "eyre", + "paste", +] + [[package]] name = "float-cmp" version = "0.9.0" @@ -3349,6 +4162,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.25" @@ -3418,7 +4237,7 @@ version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -3463,13 +4282,22 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "typenum", "version_check", "zeroize", @@ -3507,6 +4335,17 @@ dependencies = [ "polyval", ] +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "indexmap 1.9.3", + "stable_deref_trait", +] + [[package]] name = "gimli" version = "0.27.0" @@ -3530,7 +4369,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -3577,7 +4416,7 @@ dependencies = [ "gloo-utils", "js-sys", "pin-project", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "thiserror", "wasm-bindgen", @@ -3604,7 +4443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8e8fc851e9c7b9852508bc6e3f690f452f474417e8545ec9857b7f7377036b5" dependencies = [ "js-sys", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "wasm-bindgen", "web-sys", @@ -3663,15 +4502,15 @@ dependencies = [ "fixedbitset 0.4.2", "guppy-summaries", "guppy-workspace-hack", - "indexmap", - "itertools", + "indexmap 1.9.3", + "itertools 0.10.5", "nested", "once_cell", "pathdiff", "petgraph 0.6.2", "rayon", - "semver 1.0.16", - "serde 1.0.152", + "semver 1.0.17", + "serde 1.0.164", "serde_json", "smallvec", "static_assertions", @@ -3689,8 +4528,8 @@ dependencies = [ "cfg-if", "diffus", "guppy-workspace-hack", - "semver 1.0.16", - "serde 1.0.152", + "semver 1.0.17", + "serde 1.0.164", "toml 0.5.10", ] @@ -3712,7 +4551,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util 0.7.4", @@ -3735,11 +4574,11 @@ dependencies = [ "guppy-workspace-hack", "include_dir", "indenter", - "itertools", + "itertools 0.10.5", "owo-colors", "pathdiff", "rayon", - "serde 1.0.152", + "serde 1.0.164", "tabular", "target-spec", "toml 0.5.10", @@ -3753,6 +4592,30 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +[[package]] +name = "half" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", + "num-traits 0.2.15", +] + +[[package]] +name = "handlebars" +version = "4.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0d" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde 1.0.164", + "serde_json", + "thiserror", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -3771,6 +4634,12 @@ dependencies = [ "ahash 0.8.2", ] +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "hdrhistogram" version = "7.5.2" @@ -4006,7 +4875,7 @@ dependencies = [ "hyper", "rustls 0.21.1", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", ] [[package]] @@ -4104,7 +4973,25 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" dependencies = [ - "parity-scale-codec", + "parity-scale-codec 2.3.1", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec 3.5.0", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", ] [[package]] @@ -4113,7 +5000,16 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde 1.0.164", ] [[package]] @@ -4122,7 +5018,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -4143,7 +5039,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", ] @@ -4161,7 +5057,17 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "serde 1.0.152", + "serde 1.0.164", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", ] [[package]] @@ -4184,7 +5090,7 @@ checksum = "d7207d75fcf6c1868f1390fc1c610431fe66328e9ee6813330a041ef6879eca1" dependencies = [ "ahash 0.8.2", "atty", - "indexmap", + "indexmap 1.9.3", "itoa", "log", "num-format", @@ -4231,7 +5137,7 @@ dependencies = [ "linked-hash-map", "pest", "pest_derive", - "serde 1.0.152", + "serde 1.0.164", "similar", "yaml-rust", ] @@ -4310,6 +5216,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.5" @@ -4363,7 +5278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" dependencies = [ "log", - "serde 1.0.152", + "serde 1.0.164", "serde_json", ] @@ -4426,7 +5341,7 @@ dependencies = [ "parking_lot 0.12.1", "rand 0.8.5", "rustc-hash", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "soketto", "thiserror", @@ -4446,7 +5361,7 @@ dependencies = [ "jsonrpsee-core", "jsonrpsee-types", "rustc-hash", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "thiserror", "tokio", @@ -4460,7 +5375,7 @@ source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcd dependencies = [ "heck 0.4.0", "proc-macro-crate", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -4476,7 +5391,7 @@ dependencies = [ "hyper", "jsonrpsee-core", "jsonrpsee-types", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "soketto", "tokio", @@ -4493,7 +5408,7 @@ source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcd dependencies = [ "anyhow", "beef", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "thiserror", "tracing", @@ -4533,6 +5448,20 @@ dependencies = [ "sha3 0.10.6", ] +[[package]] +name = "k256" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +dependencies = [ + "cfg-if", + "ecdsa 0.16.6", + "elliptic-curve 0.13.4", + "once_cell", + "sha2 0.10.6", + "signature 2.0.0", +] + [[package]] name = "keccak" version = "0.1.3" @@ -4582,11 +5511,75 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + [[package]] name = "libc" -version = "0.2.141" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" [[package]] name = "libloading" @@ -4665,9 +5658,9 @@ checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" [[package]] name = "linux-raw-sys" -version = "0.3.1" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "lock_api" @@ -4686,7 +5679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -4699,24 +5692,121 @@ dependencies = [ ] [[package]] -name = "lz4-sys" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +name = "lz4" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +dependencies = [ + "libc", + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "mamoru-core" +version = "0.1.0" +source = "git+https://github.com/Mamoru-Foundation/mamoru-core?rev=166958c73193421407b0775a73d31a147b744afb#166958c73193421407b0775a73d31a147b744afb" +dependencies = [ + "as-ffi-bindings", + "async-trait", + "base64 0.21.2", + "chrono", + "datafusion", + "ethabi", + "ethnum", + "handlebars", + "hex", + "itertools 0.11.0", + "lazy_static 1.4.0", + "reqwest", + "rmp-serde", + "semver 1.0.17", + "serde 1.0.164", + "serde_json", + "serde_with 3.0.0", + "thiserror", + "tokio", + "tracing", + "wasmer", +] + +[[package]] +name = "mamoru-sniffer" +version = "0.1.0" +source = "git+https://github.com/Mamoru-Foundation/mamoru-core?rev=166958c73193421407b0775a73d31a147b744afb#166958c73193421407b0775a73d31a147b744afb" +dependencies = [ + "async-stream", + "base64 0.20.0", + "chrono", + "cosmrs", + "envy", + "futures", + "hex", + "mamoru-core", + "prost", + "prost-types", + "serde 1.0.164", + "strum", + "strum_macros", + "thiserror", + "tokio", + "tonic 0.9.2", + "tonic-build 0.9.1", + "tracing", +] + +[[package]] +name = "mamoru-sui-sniffer" +version = "0.1.0" dependencies = [ - "cc", - "libc", + "chrono", + "fastcrypto", + "mamoru-sniffer", + "mamoru-sui-types", + "move-core-types", + "rayon", + "sui-types", + "thiserror", + "tokio", + "tracing", ] [[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +name = "mamoru-sui-types" +version = "0.1.0" +source = "git+https://github.com/Mamoru-Foundation/mamoru-core?rev=166958c73193421407b0775a73d31a147b744afb#166958c73193421407b0775a73d31a147b744afb" dependencies = [ - "libc", + "blockchain-data-macro", + "datafusion", + "mamoru-core", + "maplit", + "serde 1.0.164", ] +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + [[package]] name = "match_opt" version = "0.1.2" @@ -4755,6 +5845,15 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.6", +] + [[package]] name = "memchr" version = "2.5.0" @@ -4806,7 +5905,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c493c09323068c01e54c685f7da41a9ccf9219735c3766fbfd6099806ea08fbc" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "toml 0.5.10", ] @@ -4817,7 +5916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a8ff27a350511de30cdabb77147501c36ef02e0451d957abea2f30caffb2b58" dependencies = [ "migrations_internals", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", ] @@ -4908,11 +6007,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ "cfg-if", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] +[[package]] +name = "more-asserts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + [[package]] name = "more-asserts" version = "0.3.1" @@ -4932,7 +6037,7 @@ dependencies = [ "move-command-line-common", "move-core-types", "move-model", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -4949,7 +6054,7 @@ dependencies = [ "move-proc-macros", "once_cell", "ref-cast", - "serde 1.0.152", + "serde 1.0.164", "variant_count", ] @@ -4968,7 +6073,7 @@ dependencies = [ "move-core-types", "move-ir-types", "move-symbol-pool", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5036,7 +6141,7 @@ dependencies = [ "codespan-reporting", "colored", "difference", - "itertools", + "itertools 0.10.5", "move-binary-format", "move-bytecode-source-map", "move-bytecode-utils", @@ -5064,7 +6169,7 @@ dependencies = [ "read-write-set", "read-write-set-dynamic", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "serde_yaml 0.8.26", "tempfile", @@ -5083,7 +6188,7 @@ dependencies = [ "move-core-types", "num-bigint", "once_cell", - "serde 1.0.152", + "serde 1.0.164", "sha2 0.9.9", "walkdir", ] @@ -5129,12 +6234,12 @@ dependencies = [ "move-proc-macros", "num", "once_cell", - "primitive-types", + "primitive-types 0.10.1", "proptest", "proptest-derive", "rand 0.8.5", "ref-cast", - "serde 1.0.152", + "serde 1.0.164", "serde_bytes", "uint", ] @@ -5155,7 +6260,7 @@ dependencies = [ "move-ir-types", "once_cell", "petgraph 0.5.1", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5182,14 +6287,14 @@ dependencies = [ "anyhow", "codespan", "codespan-reporting", - "itertools", + "itertools 0.10.5", "log", "move-compiler", "move-model", "num", "once_cell", "regex", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5202,7 +6307,7 @@ dependencies = [ "move-command-line-common", "move-core-types", "move-model", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5263,7 +6368,7 @@ dependencies = [ "move-core-types", "move-symbol-pool", "once_cell", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5274,7 +6379,7 @@ dependencies = [ "codespan", "codespan-reporting", "internment", - "itertools", + "itertools 0.10.5", "log", "move-binary-format", "move-bytecode-source-map", @@ -5288,7 +6393,7 @@ dependencies = [ "num", "once_cell", "regex", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5300,7 +6405,7 @@ dependencies = [ "clap 3.2.23", "colored", "dirs-next", - "itertools", + "itertools 0.10.5", "move-abigen", "move-binary-format", "move-bytecode-source-map", @@ -5317,7 +6422,7 @@ dependencies = [ "ptree", "regex", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "serde_yaml 0.8.26", "sha2 0.9.9", "tempfile", @@ -5331,7 +6436,7 @@ name = "move-proc-macros" version = "0.1.0" dependencies = [ "enum-compat-util", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 2.0.16", ] @@ -5348,7 +6453,7 @@ dependencies = [ "codespan-reporting", "futures", "hex", - "itertools", + "itertools 0.10.5", "log", "move-abigen", "move-binary-format", @@ -5365,7 +6470,7 @@ dependencies = [ "once_cell", "pretty", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "simplelog", "tokio", @@ -5381,7 +6486,7 @@ dependencies = [ "codespan", "codespan-reporting", "futures", - "itertools", + "itertools 0.10.5", "log", "move-binary-format", "move-command-line-common", @@ -5393,7 +6498,7 @@ dependencies = [ "pretty", "rand 0.8.5", "regex", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "tera", "tokio", @@ -5406,7 +6511,7 @@ dependencies = [ "anyhow", "move-binary-format", "move-core-types", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5422,7 +6527,7 @@ dependencies = [ "move-core-types", "move-proc-macros", "once_cell", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5433,7 +6538,7 @@ dependencies = [ "codespan-reporting", "ethnum", "im", - "itertools", + "itertools 0.10.5", "log", "move-binary-format", "move-borrow-graph", @@ -5448,7 +6553,7 @@ dependencies = [ "once_cell", "paste", "petgraph 0.5.1", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5459,13 +6564,13 @@ dependencies = [ "bytecode-interpreter-crypto", "clap 3.2.23", "codespan-reporting", - "itertools", + "itertools 0.10.5", "move-binary-format", "move-core-types", "move-model", "move-stackless-bytecode", "num", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5515,7 +6620,7 @@ name = "move-symbol-pool" version = "0.1.0" dependencies = [ "once_cell", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5561,7 +6666,7 @@ dependencies = [ "clap 3.2.23", "codespan-reporting", "colored", - "itertools", + "itertools 0.10.5", "move-binary-format", "move-bytecode-utils", "move-command-line-common", @@ -5595,9 +6700,9 @@ version = "0.1.0" dependencies = [ "move-vm-config", "once_cell", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "serde_with", + "serde_with 2.1.0", ] [[package]] @@ -5648,7 +6753,7 @@ dependencies = [ "move-vm-profiler", "move-vm-types", "once_cell", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -5660,7 +6765,7 @@ dependencies = [ "move-core-types", "move-vm-profiler", "once_cell", - "serde 1.0.152", + "serde 1.0.164", "smallvec", ] @@ -5685,7 +6790,7 @@ dependencies = [ "pin-project-lite", "rand 0.8.5", "real_tokio", - "serde 1.0.152", + "serde 1.0.164", "socket2 0.4.9", "tap", "tokio-util 0.7.7", @@ -5699,8 +6804,8 @@ name = "msim-macros" version = "0.1.0" source = "git+https://github.com/MystenLabs/mysten-sim.git?rev=bd870b9a11870a2618c55ba703d58fafd41d686c#bd870b9a11870a2618c55ba703d58fafd41d686c" dependencies = [ - "darling", - "proc-macro2 1.0.58", + "darling 0.14.2", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -5717,7 +6822,7 @@ dependencies = [ "multibase", "multihash", "percent-encoding", - "serde 1.0.152", + "serde 1.0.164", "static_assertions", "unsigned-varint", "url", @@ -5753,7 +6858,7 @@ checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" dependencies = [ "proc-macro-crate", "proc-macro-error", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "synstructure", @@ -5805,14 +6910,14 @@ dependencies = [ "futures", "http", "multiaddr", - "serde 1.0.152", + "serde 1.0.164", "snap", "tokio", "tokio-stream", - "tonic", + "tonic 0.8.3", "tonic-health", "tower", - "tower-http", + "tower-http 0.3.5", "tracing", "workspace-hack", ] @@ -5826,7 +6931,7 @@ dependencies = [ "fastcrypto", "hashbrown 0.12.3", "impl-trait-for-tuples", - "indexmap", + "indexmap 1.9.3", "mysten-util-mem-derive", "once_cell", "parking_lot 0.12.1", @@ -5839,7 +6944,7 @@ dependencies = [ name = "mysten-util-mem-derive" version = "0.1.0" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "syn 1.0.107", "synstructure", "workspace-hack", @@ -5877,7 +6982,7 @@ dependencies = [ "narwhal-crypto", "narwhal-test-utils", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sui-protocol-config", "tempfile", @@ -5897,7 +7002,7 @@ dependencies = [ "criterion", "fastcrypto", "futures", - "indexmap", + "indexmap 1.9.3", "match_opt", "mysten-metrics", "narwhal-config", @@ -5931,7 +7036,7 @@ dependencies = [ "hex-literal", "proptest", "proptest-derive", - "serde 1.0.152", + "serde 1.0.164", "serde-reflection", "serde_json", "shared-crypto", @@ -5946,7 +7051,7 @@ dependencies = [ "dashmap", "either", "fastcrypto", - "itertools", + "itertools 0.10.5", "narwhal-crypto", "once_cell", "proptest", @@ -5965,8 +7070,8 @@ dependencies = [ "prost", "protobuf-src", "tokio", - "tonic", - "tonic-build", + "tonic 0.8.3", + "tonic-build 0.8.4", "workspace-hack", ] @@ -5982,8 +7087,8 @@ dependencies = [ "bytes", "fastcrypto", "futures", - "indexmap", - "itertools", + "indexmap 1.9.3", + "itertools 0.10.5", "mockall", "mysten-metrics", "narwhal-config", @@ -5997,13 +7102,13 @@ dependencies = [ "narwhal-types", "prometheus", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "sui-protocol-config", "telemetry-subscribers", "tempfile", "thiserror", "tokio", - "tonic", + "tonic 0.8.3", "tracing", "typed-store", "workspace-hack", @@ -6104,8 +7209,8 @@ dependencies = [ "fastcrypto", "futures", "governor", - "indexmap", - "itertools", + "indexmap 1.9.3", + "itertools 0.10.5", "mockall", "mysten-common", "mysten-metrics", @@ -6133,7 +7238,7 @@ dependencies = [ "tempfile", "thiserror", "tokio", - "tonic", + "tonic 0.8.3", "tower", "tracing", "typed-store", @@ -6171,8 +7276,8 @@ dependencies = [ "anemo", "fastcrypto", "fdlimit", - "indexmap", - "itertools", + "indexmap 1.9.3", + "itertools 0.10.5", "mysten-metrics", "mysten-network", "narwhal-config", @@ -6191,7 +7296,7 @@ dependencies = [ "telemetry-subscribers", "tempfile", "tokio", - "tonic", + "tonic 0.8.3", "tracing", "typed-store", "workspace-hack", @@ -6213,7 +7318,7 @@ dependencies = [ "enum_dispatch", "fastcrypto", "futures", - "indexmap", + "indexmap 1.9.3", "mockall", "mysten-common", "mysten-metrics", @@ -6233,14 +7338,14 @@ dependencies = [ "rand 0.8.5", "roaring", "rustversion", - "serde 1.0.152", + "serde 1.0.164", "serde_test", - "serde_with", + "serde_with 2.1.0", "sui-protocol-config", "thiserror", "tokio", - "tonic", - "tonic-build", + "tonic 0.8.3", + "tonic-build 0.8.4", "tracing", "typed-store", "workspace-hack", @@ -6261,7 +7366,7 @@ dependencies = [ "fastcrypto", "futures", "governor", - "itertools", + "itertools 0.10.5", "mysten-metrics", "mysten-network", "narwhal-config", @@ -6282,7 +7387,7 @@ dependencies = [ "tempfile", "thiserror", "tokio", - "tonic", + "tonic 0.8.3", "tower", "tracing", "typed-store", @@ -6316,7 +7421,7 @@ dependencies = [ "hakari", "hex", "once_cell", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -6331,7 +7436,7 @@ dependencies = [ "guppy", "nexlint", "regex", - "serde 1.0.152", + "serde 1.0.164", "toml 0.5.10", ] @@ -6380,7 +7485,7 @@ version = "5.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" dependencies = [ - "lexical-core", + "lexical-core 0.7.6", "memchr", "version_check", ] @@ -6441,7 +7546,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be7d33be719c6f4d09e64e27c1ef4e73485dc4cc1f4d22201f89860a7fe22e22" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -6453,7 +7558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "066b468120587a402f0b47d8f80035c921f6a46f8209efd0632a89a16f5188a4" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -6520,6 +7625,17 @@ dependencies = [ "num-traits 0.2.15", ] +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + [[package]] name = "num-format" version = "0.4.4" @@ -6608,7 +7724,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 2.0.16", ] @@ -6642,7 +7758,7 @@ dependencies = [ "bytes", "chrono", "futures", - "itertools", + "itertools 0.10.5", "parking_lot 0.12.1", "percent-encoding", "quick-xml 0.27.1", @@ -6650,7 +7766,7 @@ dependencies = [ "reqwest", "ring", "rustls-pemfile", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "snafu", "tokio", @@ -6735,7 +7851,7 @@ checksum = "03f2cb802b5bdfdf52f1ffa0b54ce105e4d346e91990dd571f86c91321ad49e2" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -6748,7 +7864,7 @@ checksum = "4a0d9d1a6191c4f391f87219d1ea42b23f09ee84d64763cd05ee6ea88d9f384d" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -6799,11 +7915,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ "arrayvec 0.7.2", - "bitvec", + "bitvec 0.20.4", "byte-slice-cast", "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde 1.0.152", + "parity-scale-codec-derive 2.3.1", + "serde 1.0.164", +] + +[[package]] +name = "parity-scale-codec" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ddb756ca205bd108aee3c62c6d3c994e1df84a59b9d6d4a5ea42ee1fd5a9a28" +dependencies = [ + "arrayvec 0.7.2", + "bitvec 1.0.1", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive 3.1.4", + "serde 1.0.164", ] [[package]] @@ -6813,7 +7943,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -6872,6 +8014,39 @@ dependencies = [ "windows-sys 0.42.0", ] +[[package]] +name = "parquet" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5022d98333271f4ca3e87bab760498e61726bf5a6ca919123c80517e20ded29" +dependencies = [ + "ahash 0.8.2", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-ipc", + "arrow-schema", + "arrow-select", + "base64 0.21.2", + "brotli", + "bytes", + "chrono", + "flate2", + "futures", + "hashbrown 0.13.2", + "lz4", + "num", + "num-bigint", + "paste", + "seq-macro", + "snap", + "thrift", + "tokio", + "twox-hash", + "zstd", +] + [[package]] name = "parse-zoneinfo" version = "0.3.0" @@ -6905,6 +8080,16 @@ dependencies = [ "digest 0.10.6", ] +[[package]] +name = "pbkdf2" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0ca0b5a68607598bf3bad68f32227a8164f6254833f84eafaac409cd6746c31" +dependencies = [ + "digest 0.10.6", + "hmac 0.12.1", +] + [[package]] name = "peeking_take_while" version = "0.1.2" @@ -6972,7 +8157,7 @@ checksum = "798e0220d1111ae63d66cb66a5dcb3fc2d986d520b98e49e1852bfdb11d7c5e7" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -6995,7 +8180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" dependencies = [ "fixedbitset 0.2.0", - "indexmap", + "indexmap 1.9.3", ] [[package]] @@ -7005,7 +8190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" dependencies = [ "fixedbitset 0.4.2", - "indexmap", + "indexmap 1.9.3", ] [[package]] @@ -7062,7 +8247,7 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -7218,7 +8403,7 @@ checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" dependencies = [ "difflib", "float-cmp", - "itertools", + "itertools 0.10.5", "normalize-line-endings", "predicates-core", "regex", @@ -7268,7 +8453,7 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "syn 1.0.107", ] @@ -7278,7 +8463,7 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b69d39aab54d069e7f2fe8cb970493e7834601ca2d8c65fd7bbd183578080d1" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "syn 2.0.16", ] @@ -7311,9 +8496,22 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" dependencies = [ - "fixed-hash", - "impl-codec", - "impl-serde", + "fixed-hash 0.7.0", + "impl-codec 0.5.1", + "impl-serde 0.3.2", + "uint", +] + +[[package]] +name = "primitive-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +dependencies = [ + "fixed-hash 0.8.0", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", "uint", ] @@ -7334,7 +8532,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "version_check", @@ -7346,7 +8544,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "version_check", ] @@ -7368,9 +8566,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" +checksum = "6aeca18b86b413c660b781aa319e4e2648a3e6f9eadc9b47e9038e6fe9f3451b" dependencies = [ "unicode-ident", ] @@ -7407,7 +8605,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7970fd6e91b5cb87e9a093657572a896d133879ced7752d2c7635beae29eaba0" dependencies = [ "reqwest", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "time 0.3.17", "url", @@ -7463,7 +8661,7 @@ checksum = "2c828f93f5ca4826f97fedcbd3f9a536c16b12cff3dbbb4a007f932bbad95b12" dependencies = [ "bytes", "heck 0.4.0", - "itertools", + "itertools 0.10.5", "lazy_static 1.4.0", "log", "multimap", @@ -7484,8 +8682,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ea9b0f8cbe5e15a8a042d030bd96668db28ecb567ec37d691971ff5731d2b1b" dependencies = [ "anyhow", - "itertools", - "proc-macro2 1.0.58", + "itertools 0.10.5", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -7517,6 +8715,26 @@ dependencies = [ "autotools", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + [[package]] name = "ptree" version = "0.4.0" @@ -7528,7 +8746,7 @@ dependencies = [ "config", "directories", "petgraph 0.6.2", - "serde 1.0.152", + "serde 1.0.164", "serde-value", "tint", ] @@ -7577,7 +8795,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffc053f057dd768a56f62cd7e434c42c831d296968997e9ac1f76ea7c2d14c41" dependencies = [ "memchr", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -7623,7 +8841,7 @@ checksum = "6df19e284d93757a9fb91d63672f7741b129246a669db09d1c0063071debc0c0" dependencies = [ "bytes", "libc", - "socket2 0.5.2", + "socket2 0.5.3", "tracing", "windows-sys 0.48.0", ] @@ -7643,7 +8861,7 @@ version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", ] [[package]] @@ -7663,6 +8881,12 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "radix_trie" version = "0.2.1" @@ -7836,7 +9060,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78725e4e53781014168628ef49b2dc2fc6ae8d01a08769a5064685d34ee116c" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -7894,11 +9118,23 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f9c0c92af03644e4806106281fe2e068ac5bc0ae74a707266d06ea27bccee5f" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] +[[package]] +name = "regalloc2" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d43a209257d978ef079f3d446331d0f1794f5e0fc19b306a199983857833a779" +dependencies = [ + "fxhash", + "log", + "slice-group-by", + "smallvec", +] + [[package]] name = "regex" version = "1.8.4" @@ -7931,6 +9167,27 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +[[package]] +name = "region" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76e189c2369884dce920945e2ddf79b3dff49e071a167dd1817fa9c4c00d512e" +dependencies = [ + "bitflags", + "libc", + "mach", + "winapi", +] + +[[package]] +name = "rend" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +dependencies = [ + "bytecheck", +] + [[package]] name = "reqwest" version = "0.11.18" @@ -7956,11 +9213,11 @@ dependencies = [ "pin-project-lite", "rustls 0.21.1", "rustls-pemfile", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "serde_urlencoded", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", "tokio-util 0.7.4", "tower-service", "url", @@ -8032,6 +9289,64 @@ dependencies = [ "digest 0.10.6", ] +[[package]] +name = "rkyv" +version = "0.7.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21499ed91807f07ae081880aabb2ccc0235e9d88011867d984525e9a4c3cfa3e" +dependencies = [ + "bytecheck", + "hashbrown 0.12.3", + "indexmap 1.9.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1c672430eb41556291981f45ca900a0239ad007242d1cb4b4167af842db666" +dependencies = [ + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rmp" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44519172358fd6d58656c86ab8e7fbc9e1490c3e8f14d35ed78ca0dd07403c9f" +dependencies = [ + "byteorder", + "num-traits 0.2.15", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5b13be192e0220b8afb7222aa5813cb62cc269ebb5cac346ca6487681d2913e" +dependencies = [ + "byteorder", + "rmp", + "serde 1.0.164", +] + [[package]] name = "roaring" version = "0.10.1" @@ -8061,7 +9376,7 @@ checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" dependencies = [ "base64 0.13.1", "bitflags", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -8104,7 +9419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7229b505ae0706e64f37ffc54a9c163e11022a6636d58fe1f3f52018257ff9f7" dependencies = [ "cfg-if", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "rustc_version", "syn 1.0.107", @@ -8130,7 +9445,7 @@ dependencies = [ "rusoto_credential", "rusoto_signature", "rustc_version", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "tokio", "xml-rs", @@ -8147,7 +9462,7 @@ dependencies = [ "dirs-next", "futures", "hyper", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "shlex", "tokio", @@ -8164,7 +9479,7 @@ dependencies = [ "bytes", "futures", "rusoto_core", - "serde 1.0.152", + "serde 1.0.164", "serde_json", ] @@ -8184,12 +9499,12 @@ dependencies = [ "http", "hyper", "log", - "md-5", + "md-5 0.9.1", "percent-encoding", "pin-project-lite", "rusoto_credential", "rustc_version", - "serde 1.0.152", + "serde 1.0.164", "sha2 0.9.9", "tokio", ] @@ -8234,7 +9549,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.16", + "semver 1.0.17", ] [[package]] @@ -8270,7 +9585,7 @@ dependencies = [ "errno 0.3.1", "io-lifetimes", "libc", - "linux-raw-sys 0.3.1", + "linux-raw-sys 0.3.8", "windows-sys 0.45.0", ] @@ -8377,7 +9692,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "107c3d5d7f370ac09efa62a78375f94d94b8a33c61d8c278b96683fb4dbf2d8d" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -8424,7 +9739,7 @@ dependencies = [ "dyn-clone", "either", "schemars_derive", - "serde 1.0.152", + "serde 1.0.164", "serde_json", ] @@ -8434,7 +9749,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "serde_derive_internals", "syn 1.0.107", @@ -8462,6 +9777,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "sec1" version = "0.3.0" @@ -8543,11 +9864,11 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -8565,6 +9886,12 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" +[[package]] +name = "seq-macro" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b44e8fc93a14e66336d230954dda83d18b4605ccace8fe09bc7514a71ad0bc" + [[package]] name = "serde" version = "0.8.23" @@ -8573,9 +9900,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.152" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] @@ -8598,7 +9925,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b5b14ebbcc4e4f2b3642fa99c388649da58d1dc3308c7d109f39f565d1710f0" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "thiserror", ] @@ -8609,7 +9936,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f05a5f801ac62a51a49d378fdb3884480041b99aced450b28990673e8ff99895" dependencies = [ "once_cell", - "serde 1.0.152", + "serde 1.0.164", "thiserror", ] @@ -8620,7 +9947,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ "ordered-float", - "serde 1.0.152", + "serde 1.0.164", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde 1.0.164", + "wasm-bindgen", ] [[package]] @@ -8629,18 +9967,18 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", - "syn 1.0.107", + "syn 2.0.16", ] [[package]] @@ -8649,7 +9987,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -8660,10 +9998,10 @@ version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" dependencies = [ - "indexmap", + "indexmap 1.9.3", "itoa", "ryu", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -8672,7 +10010,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b04f22b563c91331a10074bda3dd5492e3cc39d56bd557e91c0af42b6c7341" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -8681,18 +10019,18 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] [[package]] name = "serde_spanned" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -8701,7 +10039,7 @@ version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3611210d2d67e3513204742004d6ac6f589e521861dabb0f649b070eea8bed9e" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -8713,7 +10051,7 @@ dependencies = [ "form_urlencoded", "itoa", "ryu", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -8725,10 +10063,26 @@ dependencies = [ "base64 0.13.1", "chrono", "hex", - "indexmap", - "serde 1.0.152", + "indexmap 1.9.3", + "serde 1.0.164", + "serde_json", + "serde_with_macros 2.1.0", + "time 0.3.17", +] + +[[package]] +name = "serde_with" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f02d8aa6e3c385bf084924f660ce2a3a6bd333ba55b35e8590b321f35d88513" +dependencies = [ + "base64 0.21.2", + "chrono", + "hex", + "indexmap 1.9.3", + "serde 1.0.164", "serde_json", - "serde_with_macros", + "serde_with_macros 3.0.0", "time 0.3.17", ] @@ -8738,21 +10092,33 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3452b4c0f6c1e357f73fdb87cd1efabaa12acf328c7a528e252893baeb3f4aa" dependencies = [ - "darling", - "proc-macro2 1.0.58", + "darling 0.14.2", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] +[[package]] +name = "serde_with_macros" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc7d5d3932fb12ce722ee5e64dd38c504efba37567f0c402f6ca728c3b8b070" +dependencies = [ + "darling 0.20.1", + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 2.0.16", +] + [[package]] name = "serde_yaml" version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ - "indexmap", + "indexmap 1.9.3", "ryu", - "serde 1.0.152", + "serde 1.0.164", "yaml-rust", ] @@ -8762,10 +10128,10 @@ version = "0.9.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" dependencies = [ - "indexmap", + "indexmap 1.9.3", "itoa", "ryu", - "serde 1.0.152", + "serde 1.0.164", "unsafe-libyaml", ] @@ -8866,7 +10232,7 @@ dependencies = [ "bcs", "eyre", "fastcrypto", - "serde 1.0.152", + "serde 1.0.164", "serde_repr", "workspace-hack", ] @@ -8943,6 +10309,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + [[package]] name = "similar" version = "2.2.1" @@ -8985,6 +10357,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slice-group-by" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" + [[package]] name = "slip10_ed25519" version = "0.1.3" @@ -9026,7 +10404,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "475b3bbe5245c26f2d8a6f62d67c1f30eb9fffeccee721c45d162c3ebbdf81b2" dependencies = [ "heck 0.4.0", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -9049,9 +10427,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d283f86695ae989d1e18440a943880967156325ba025f05049946bff47bcc2b" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" dependencies = [ "libc", "windows-sys 0.48.0", @@ -9099,6 +10477,27 @@ dependencies = [ "der 0.7.5", ] +[[package]] +name = "sqlparser" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355dc4d4b6207ca8a3434fc587db0a8016130a574dbcdbfb93d7f7b5bc5b211a" +dependencies = [ + "log", + "sqlparser_derive", +] + +[[package]] +name = "sqlparser_derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55fe75cb4a364c7f7ae06c7dbbc8d84bddd85d6cdf9975963c3935bc1991761e" +dependencies = [ + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -9163,7 +10562,7 @@ checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck 0.3.3", "proc-macro-error", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -9184,7 +10583,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.0", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "rustversion", "syn 1.0.107", @@ -9206,6 +10605,15 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + [[package]] name = "subtle-ng" version = "2.5.0" @@ -9221,7 +10629,7 @@ dependencies = [ "assert_cmd", "async-trait", "bcs", - "bip32", + "bip32 0.4.0", "camino", "clap 3.2.23", "colored", @@ -9246,9 +10654,9 @@ dependencies = [ "rusoto_kms", "rustyline", "rustyline-derive", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "serde_with", + "serde_with 2.1.0", "serde_yaml 0.8.26", "shared-crypto", "shell-words", @@ -9299,7 +10707,7 @@ dependencies = [ "move-vm-types", "mysten-metrics", "once_cell", - "serde 1.0.152", + "serde 1.0.164", "sui-macros", "sui-move-natives-latest", "sui-protocol-config", @@ -9336,7 +10744,7 @@ dependencies = [ "move-vm-types", "mysten-metrics", "once_cell", - "serde 1.0.152", + "serde 1.0.164", "sui-macros", "sui-move-natives-v0", "sui-protocol-config", @@ -9360,7 +10768,7 @@ dependencies = [ "futures", "indicatif", "integer-encoding", - "more-asserts", + "more-asserts 0.3.1", "move-binary-format", "move-core-types", "move-package", @@ -9368,7 +10776,7 @@ dependencies = [ "object_store", "prometheus", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "sui-config", "sui-macros", "sui-protocol-config", @@ -9401,7 +10809,7 @@ dependencies = [ "futures", "hdrhistogram", "indicatif", - "itertools", + "itertools 0.10.5", "move-core-types", "move-package", "mysten-metrics", @@ -9411,7 +10819,7 @@ dependencies = [ "regex", "roaring", "rocksdb", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "strum", "strum_macros", @@ -9456,7 +10864,7 @@ dependencies = [ "mysten-metrics", "prometheus", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "shared-crypto", "sui", @@ -9499,8 +10907,8 @@ dependencies = [ "once_cell", "prometheus", "rand 0.8.5", - "serde 1.0.152", - "serde_with", + "serde 1.0.164", + "serde_with 2.1.0", "serde_yaml 0.8.26", "shared-crypto", "sui-keys", @@ -9534,9 +10942,10 @@ dependencies = [ "fastcrypto-zkp", "fs_extra", "futures", - "itertools", + "itertools 0.10.5", "lru", - "more-asserts", + "mamoru-sui-sniffer", + "more-asserts 0.3.1", "move-binary-format", "move-bytecode-utils", "move-core-types", @@ -9563,10 +10972,10 @@ dependencies = [ "rand 0.8.5", "rocksdb", "scopeguard", - "serde 1.0.152", + "serde 1.0.164", "serde-reflection", "serde_json", - "serde_with", + "serde_with 2.1.0", "serde_yaml 0.8.26", "shared-crypto", "signature 1.6.4", @@ -9608,7 +11017,7 @@ dependencies = [ "insta", "move-cli", "move-disassembler", - "serde 1.0.152", + "serde 1.0.164", "strum", "strum_macros", "sui-config", @@ -9636,7 +11045,7 @@ dependencies = [ "fastcrypto", "fs_extra", "futures", - "indexmap", + "indexmap 1.9.3", "insta", "jsonrpsee", "move-binary-format", @@ -9645,7 +11054,7 @@ dependencies = [ "mysten-metrics", "prometheus", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sui", "sui-adapter-latest", @@ -9710,12 +11119,12 @@ name = "sui-execution-cut" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.3", + "clap 4.3.4", "expect-test", "tempfile", "thiserror", - "toml 0.7.4", - "toml_edit 0.19.10", + "toml 0.7.5", + "toml_edit 0.19.11", "workspace-hack", ] @@ -9736,7 +11145,7 @@ dependencies = [ "prometheus", "rocksdb", "scopeguard", - "serde 1.0.152", + "serde 1.0.164", "shared-crypto", "sui", "sui-config", @@ -9752,7 +11161,7 @@ dependencies = [ "thiserror", "tokio", "tower", - "tower-http", + "tower-http 0.3.5", "tracing", "ttl_cache", "typed-store", @@ -9771,7 +11180,7 @@ dependencies = [ "move-core-types", "move-package", "once_cell", - "serde 1.0.152", + "serde 1.0.164", "sui-move-build", "sui-types", "tracing", @@ -9785,7 +11194,7 @@ dependencies = [ "anyhow", "bcs", "git-version", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sui-framework", "sui-protocol-config", @@ -9831,8 +11240,8 @@ dependencies = [ "once_cell", "prometheus", "rand 0.8.5", - "serde 1.0.152", - "serde_with", + "serde 1.0.164", + "serde_with 2.1.0", "serde_yaml 0.8.26", "shared-crypto", "sui-config", @@ -9866,7 +11275,7 @@ dependencies = [ "diesel_migrations", "fastcrypto", "futures", - "itertools", + "itertools 0.10.5", "jsonrpsee", "move-bytecode-utils", "move-core-types", @@ -9874,7 +11283,7 @@ dependencies = [ "ntest", "prometheus", "regex", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sui-config", "sui-core", @@ -9910,7 +11319,7 @@ dependencies = [ "move-core-types", "once_cell", "schemars", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sui-framework", "sui-move-build", @@ -9933,7 +11342,7 @@ dependencies = [ "fastcrypto", "futures", "hyper", - "itertools", + "itertools 0.10.5", "jsonrpsee", "jsonrpsee-proc-macros", "linked-hash-map", @@ -9948,7 +11357,7 @@ dependencies = [ "prometheus", "rand 0.8.5", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "shared-crypto", "signature 1.6.4", "sui-config", @@ -9973,7 +11382,7 @@ dependencies = [ "thiserror", "tokio", "tower", - "tower-http", + "tower-http 0.3.5", "tracing", "typed-store", "workspace-hack", @@ -9988,14 +11397,14 @@ dependencies = [ "colored", "enum_dispatch", "fastcrypto", - "itertools", + "itertools 0.10.5", "move-binary-format", "move-bytecode-utils", "move-core-types", "schemars", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "serde_with", + "serde_with 2.1.0", "sui-enum-compat-util", "sui-json", "sui-macros", @@ -10010,10 +11419,10 @@ name = "sui-keys" version = "0.0.0" dependencies = [ "anyhow", - "bip32", + "bip32 0.4.0", "fastcrypto", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "shared-crypto", "signature 1.6.4", @@ -10043,12 +11452,12 @@ dependencies = [ "backoff", "base64 0.21.2", "chrono", - "clap 4.3.3", + "clap 4.3.4", "humantime", "once_cell", "prometheus-http-query", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "serde_yaml 0.9.21", "strum_macros", "telemetry-subscribers", @@ -10183,7 +11592,7 @@ dependencies = [ "mysten-network", "prometheus", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "shared-crypto", "sui-archival", "sui-config", @@ -10194,8 +11603,8 @@ dependencies = [ "telemetry-subscribers", "tempfile", "tokio", - "tonic", - "tonic-build", + "tonic 0.8.3", + "tonic-build 0.8.4", "tower", "tracing", "workspace-hack", @@ -10222,7 +11631,7 @@ dependencies = [ "narwhal-types", "prometheus", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "snap", "sui-archival", "sui-config", @@ -10257,7 +11666,7 @@ dependencies = [ "pretty_assertions", "rand 0.8.5", "schemars", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sui", "sui-core", @@ -10276,8 +11685,8 @@ name = "sui-open-rpc-macros" version = "0.1.0" dependencies = [ "derive-syn-parse", - "itertools", - "proc-macro2 1.0.58", + "itertools 0.10.5", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "unescape", @@ -10300,9 +11709,9 @@ dependencies = [ "once_cell", "prometheus", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "serde_with", + "serde_with 2.1.0", "sui-config", "sui-json", "sui-json-rpc", @@ -10321,7 +11730,7 @@ name = "sui-proc-macros" version = "0.7.0" dependencies = [ "msim-macros", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "sui-enum-compat-util", "syn 2.0.16", @@ -10334,8 +11743,8 @@ version = "0.1.0" dependencies = [ "insta", "schemars", - "serde 1.0.152", - "serde_with", + "serde 1.0.164", + "serde_with 2.1.0", "sui-protocol-config-macros", "tracing", "workspace-hack", @@ -10345,7 +11754,7 @@ dependencies = [ name = "sui-protocol-config-macros" version = "0.1.0" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "workspace-hack", @@ -10365,7 +11774,7 @@ dependencies = [ "git-version", "http-body", "hyper", - "itertools", + "itertools 0.10.5", "mime", "multiaddr", "mysten-metrics", @@ -10378,9 +11787,9 @@ dependencies = [ "reqwest", "rustls 0.20.7", "rustls-pemfile", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "serde_with", + "serde_with 2.1.0", "serde_yaml 0.8.26", "snap", "sui-tls", @@ -10388,7 +11797,7 @@ dependencies = [ "telemetry-subscribers", "tokio", "tower", - "tower-http", + "tower-http 0.3.5", "tracing", "workspace-hack", ] @@ -10401,7 +11810,7 @@ dependencies = [ "async-recursion", "async-trait", "bcs", - "clap 4.3.3", + "clap 4.3.4", "colored", "futures", "jsonrpsee", @@ -10413,9 +11822,9 @@ dependencies = [ "parking_lot 0.12.1", "prometheus", "rand 0.8.5", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "serde_with", + "serde_with 2.1.0", "serde_yaml 0.8.26", "shellexpand", "similar", @@ -10460,7 +11869,7 @@ dependencies = [ "rand 0.8.5", "reqwest", "rocksdb", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "shared-crypto", "signature 1.6.4", @@ -10498,13 +11907,13 @@ dependencies = [ "eyre", "futures", "http", - "itertools", + "itertools 0.10.5", "mysten-metrics", "prometheus", "rand 0.8.5", "rocksdb", "scopeguard", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "shared-crypto", "shellexpand", @@ -10524,9 +11933,9 @@ dependencies = [ "test-cluster", "thiserror", "tokio", - "tonic", + "tonic 0.8.3", "tower", - "tower-http", + "tower-http 0.3.5", "tracing", "typed-store", "typed-store-derive", @@ -10550,9 +11959,9 @@ dependencies = [ "futures-core", "jsonrpsee", "move-core-types", - "serde 1.0.152", + "serde 1.0.164", "serde_json", - "serde_with", + "serde_with 2.1.0", "shared-crypto", "sui", "sui-config", @@ -10608,7 +12017,7 @@ dependencies = [ "num_enum", "object_store", "prometheus", - "serde 1.0.152", + "serde 1.0.164", "sui-core", "sui-protocol-config", "sui-storage", @@ -10665,7 +12074,7 @@ dependencies = [ "move-package", "move-symbol-pool", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sui-config", "sui-move", @@ -10676,7 +12085,7 @@ dependencies = [ "tempfile", "test-cluster", "tokio", - "toml 0.7.4", + "toml 0.7.5", "tracing", "url", "workspace-hack", @@ -10692,13 +12101,13 @@ dependencies = [ "bcs", "byteorder", "bytes", - "clap 4.3.3", + "clap 4.3.4", "criterion", "eyre", "fastcrypto", "futures", "integer-encoding", - "itertools", + "itertools 0.10.5", "lru", "move-binary-format", "move-bytecode-utils", @@ -10712,7 +12121,7 @@ dependencies = [ "pretty_assertions", "prometheus", "rocksdb", - "serde 1.0.152", + "serde 1.0.164", "sui-json-rpc-types", "sui-protocol-config", "sui-types", @@ -10735,7 +12144,7 @@ dependencies = [ "bcs", "clap 3.2.23", "futures", - "indexmap", + "indexmap 1.9.3", "move-binary-format", "move-core-types", "move-package", @@ -10801,8 +12210,8 @@ dependencies = [ "once_cell", "prometheus", "rand 0.8.5", - "serde 1.0.152", - "serde_with", + "serde 1.0.164", + "serde_with 2.1.0", "serde_yaml 0.8.26", "shared-crypto", "sui-config", @@ -10825,7 +12234,7 @@ version = "0.1.0" dependencies = [ "fastcrypto", "reqwest", - "serde 1.0.152", + "serde 1.0.164", "sui-core", "tokio", "tracing", @@ -10859,7 +12268,7 @@ dependencies = [ "telemetry-subscribers", "tokio", "tower", - "tower-http", + "tower-http 0.3.5", "workspace-hack", ] @@ -10870,7 +12279,7 @@ dependencies = [ "anyhow", "axum", "axum-server", - "ed25519", + "ed25519 1.5.3", "fastcrypto", "pkcs8 0.9.0", "rand 0.8.5", @@ -10893,7 +12302,7 @@ dependencies = [ "anemo-cli", "anyhow", "bcs", - "clap 4.3.3", + "clap 4.3.4", "colored", "comfy-table", "eyre", @@ -10901,7 +12310,7 @@ dependencies = [ "futures", "hex", "indicatif", - "itertools", + "itertools 0.10.5", "move-binary-format", "move-bytecode-utils", "move-core-types", @@ -10911,7 +12320,7 @@ dependencies = [ "prometheus", "rocksdb", "ron", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "similar", "strum", @@ -11007,8 +12416,8 @@ dependencies = [ "eyre", "fastcrypto", "fastcrypto-zkp", - "indexmap", - "itertools", + "indexmap 1.9.3", + "itertools 0.10.5", "move-binary-format", "move-bytecode-utils", "move-command-line-common", @@ -11030,10 +12439,10 @@ dependencies = [ "rand 0.8.5", "roaring", "schemars", - "serde 1.0.152", + "serde 1.0.164", "serde-name", "serde_json", - "serde_with", + "serde_with 2.1.0", "serde_yaml 0.8.26", "shared-crypto", "signature 1.6.4", @@ -11045,7 +12454,7 @@ dependencies = [ "sui-protocol-config", "tap", "thiserror", - "tonic", + "tonic 0.8.3", "tracing", "typed-store", "workspace-hack", @@ -11145,7 +12554,7 @@ version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "unicode-ident", ] @@ -11156,7 +12565,7 @@ version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "unicode-ident", ] @@ -11173,7 +12582,7 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "unicode-xid 0.2.4", @@ -11224,7 +12633,7 @@ checksum = "4fb0303f2cecb4171c439135b28c33fe9da7b9fd7816fe674761834da70c9778" dependencies = [ "cfg-expr", "guppy-workspace-hack", - "serde 1.0.152", + "serde 1.0.164", "target-lexicon", ] @@ -11256,6 +12665,55 @@ dependencies = [ "windows-sys 0.42.0", ] +[[package]] +name = "tendermint" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a46ec6b25b028097ab682ffae11d09d64fe1e2535833b902f26a278a0f88a705" +dependencies = [ + "bytes", + "digest 0.10.6", + "ed25519 2.2.1", + "ed25519-consensus", + "flex-error", + "futures", + "k256 0.13.1", + "num-traits 0.2.15", + "once_cell", + "prost", + "prost-types", + "ripemd", + "serde 1.0.164", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.6", + "signature 2.0.0", + "subtle", + "subtle-encoding", + "tendermint-proto", + "time 0.3.17", + "zeroize", +] + +[[package]] +name = "tendermint-proto" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23c8ff0e6634eb4c3c4aeed45076dc97dac91aac5501a905a67fa222e165b" +dependencies = [ + "bytes", + "flex-error", + "num-derive", + "num-traits 0.2.15", + "prost", + "prost-types", + "serde 1.0.164", + "serde_bytes", + "subtle-encoding", + "time 0.3.17", +] + [[package]] name = "tera" version = "1.17.1" @@ -11263,7 +12721,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3df578c295f9ec044ff1c829daf31bb7581d5b3c2a7a3d87419afe1f2531438c" dependencies = [ "chrono", - "chrono-tz", + "chrono-tz 0.6.3", "globwalk", "humansize", "lazy_static 1.4.0", @@ -11272,7 +12730,7 @@ dependencies = [ "pest_derive", "rand 0.8.5", "regex", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "slug", "unic-segment", @@ -11349,7 +12807,7 @@ version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd4a3a7f00909d5a1d1f83b86b65d91e4c94f80b0c2d0ae37e2ef44da7b7a0a0" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "test-fuzz-internal", "test-fuzz-macro", "test-fuzz-runtime", @@ -11362,9 +12820,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9186daca5c58cb307d09731e0ba06b13fd6c036c90672b9bfc31cecf76cf689" dependencies = [ "cargo_metadata", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", - "serde 1.0.152", + "serde 1.0.164", "strum_macros", ] @@ -11374,10 +12832,10 @@ version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57d187b450bfb5b7939f82f9747dc1ebb15a7a9c4a93cd304a41aece7149608b" dependencies = [ - "darling", + "darling 0.14.2", "if_chain", "lazy_static 1.4.0", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "subprocess", "syn 1.0.107", @@ -11395,7 +12853,7 @@ dependencies = [ "bincode", "hex", "num-traits 0.2.15", - "serde 1.0.152", + "serde 1.0.164", "sha-1 0.10.1", "test-fuzz-internal", ] @@ -11430,7 +12888,7 @@ version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 2.0.16", ] @@ -11453,6 +12911,17 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "thrift" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" +dependencies = [ + "byteorder", + "integer-encoding", + "ordered-float", +] + [[package]] name = "time" version = "0.1.45" @@ -11471,7 +12940,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ "itoa", - "serde 1.0.152", + "serde 1.0.164", "time-core", "time-macros", ] @@ -11509,7 +12978,7 @@ dependencies = [ "anyhow", "hmac 0.12.1", "once_cell", - "pbkdf2", + "pbkdf2 0.11.0", "rand 0.8.5", "rustc-hash", "sha2 0.10.6", @@ -11519,13 +12988,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinytemplate" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "serde_json", ] @@ -11580,7 +13058,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 2.0.16", ] @@ -11590,7 +13068,7 @@ name = "tokio-macros" version = "2.1.0" source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e4693500118d5e79ce098ee6dfc2c48f3ef19e45#e4693500118d5e79ce098ee6dfc2c48f3ef19e45" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 2.0.16", ] @@ -11619,9 +13097,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls 0.21.1", "tokio", @@ -11677,21 +13155,21 @@ version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" dependencies = [ - "indexmap", - "serde 1.0.152", + "indexmap 1.9.3", + "serde 1.0.164", ] [[package]] name = "toml" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" +checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" dependencies = [ - "indexmap", - "serde 1.0.152", + "indexmap 2.0.0", + "serde 1.0.164", "serde_spanned", - "toml_datetime 0.6.2", - "toml_edit 0.19.10", + "toml_datetime 0.6.3", + "toml_edit 0.19.11", ] [[package]] @@ -11702,11 +13180,11 @@ checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -11716,9 +13194,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f" dependencies = [ "combine", - "indexmap", - "itertools", - "serde 1.0.152", + "indexmap 1.9.3", + "itertools 0.10.5", + "serde 1.0.164", ] [[package]] @@ -11728,21 +13206,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1541ba70885967e662f69d31ab3aeca7b1aaecfcd58679590b893e9239c3646" dependencies = [ "combine", - "indexmap", - "itertools", + "indexmap 1.9.3", + "itertools 0.10.5", "toml_datetime 0.5.1", ] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.19.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" dependencies = [ - "indexmap", - "serde 1.0.152", + "indexmap 2.0.0", + "serde 1.0.164", "serde_spanned", - "toml_datetime 0.6.2", + "toml_datetime 0.6.3", "winnow", ] @@ -11780,6 +13258,38 @@ dependencies = [ "tracing-futures", ] +[[package]] +name = "tonic" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.21.2", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs", + "rustls-pemfile", + "tokio", + "tokio-rustls 0.24.1", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tonic-build" version = "0.8.4" @@ -11787,7 +13297,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" dependencies = [ "prettyplease 0.1.23", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", + "prost-build", + "quote 1.0.26", + "syn 1.0.107", +] + +[[package]] +name = "tonic-build" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f60a933bbea70c95d633c04c951197ddf084958abaa2ed502a3743bdd8d8dd7" +dependencies = [ + "prettyplease 0.1.23", + "proc-macro2 1.0.59", "prost-build", "quote 1.0.26", "syn 1.0.107", @@ -11804,7 +13327,7 @@ dependencies = [ "prost", "tokio", "tokio-stream", - "tonic", + "tonic 0.8.3", ] [[package]] @@ -11829,7 +13352,7 @@ dependencies = [ "futures-core", "futures-util", "hdrhistogram", - "indexmap", + "indexmap 1.9.3", "pin-project", "pin-project-lite", "rand 0.8.5", @@ -11871,6 +13394,25 @@ dependencies = [ "uuid", ] +[[package]] +name = "tower-http" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1d42a9b3f3ec46ba828e8d376aec14592ea199f70a06a548587ecd1c4ab658" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.2" @@ -11913,7 +13455,7 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -11955,7 +13497,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" dependencies = [ - "serde 1.0.152", + "serde 1.0.164", "tracing-core", ] @@ -11978,7 +13520,7 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex", - "serde 1.0.152", + "serde 1.0.164", "serde_json", "sharded-slab", "smallvec", @@ -12066,18 +13608,18 @@ dependencies = [ "eyre", "fdlimit", "hdrhistogram", - "itertools", + "itertools 0.10.5", "msim", "num_cpus", "once_cell", "ouroboros 0.15.5", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "prometheus", "quote 1.0.26", "rand 0.8.5", "rocksdb", "rstest", - "serde 1.0.152", + "serde 1.0.164", "sui-macros", "syn 1.0.107", "tap", @@ -12095,7 +13637,7 @@ name = "typed-store-derive" version = "0.3.0" dependencies = [ "eyre", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "rocksdb", "syn 1.0.107", @@ -12288,7 +13830,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2e7e85a0596447f0f2ac090e16bc4c516c6fe91771fb0c0ccf7fa3dae896b9c" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", ] @@ -12302,7 +13844,7 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", - "serde 1.0.152", + "serde 1.0.164", ] [[package]] @@ -12367,7 +13909,7 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee97e1d97bd593fb513912a07691b742361b3dd64ad56f2c694ea2dbfe0665d3" dependencies = [ - "itertools", + "itertools 0.10.5", "nom 7.1.2", ] @@ -12394,7 +13936,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", ] @@ -12471,12 +14013,35 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-downcast" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dac026d43bcca6e7ce1c0956ba68f59edf6403e8e930a5d891be72c31a44340" +dependencies = [ + "js-sys", + "once_cell", + "wasm-bindgen", + "wasm-bindgen-downcast-macros", +] + +[[package]] +name = "wasm-bindgen-downcast-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5020cfa87c7cecefef118055d44e3c1fc122c7ec25701d528ee458a0b45f38f" +dependencies = [ + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + [[package]] name = "wasm-bindgen-futures" version = "0.4.33" @@ -12505,7 +14070,7 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "wasm-bindgen-backend", @@ -12518,6 +14083,15 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +[[package]] +name = "wasm-encoder" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eff853c4f09eec94d76af527eddad4e9de13b11d6286a1ef7134bc30135a2b7" +dependencies = [ + "leb128", +] + [[package]] name = "wasm-streams" version = "0.2.3" @@ -12531,6 +14105,153 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmer" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840af6d21701220cb805dc7201af301cb99e9b4f646f48a41befbc1d949f0f90" +dependencies = [ + "bytes", + "cfg-if", + "indexmap 1.9.3", + "js-sys", + "more-asserts 0.2.2", + "serde 1.0.164", + "serde-wasm-bindgen", + "target-lexicon", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-downcast", + "wasmer-compiler", + "wasmer-compiler-cranelift", + "wasmer-derive", + "wasmer-types", + "wasmer-vm", + "wat", + "winapi", +] + +[[package]] +name = "wasmer-compiler" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86fab98beaaace77380cb04e681773739473860d1b8499ea6b14f920923e0c5" +dependencies = [ + "backtrace", + "cfg-if", + "enum-iterator", + "enumset", + "lazy_static 1.4.0", + "leb128", + "memmap2", + "more-asserts 0.2.2", + "region", + "rustc-demangle", + "smallvec", + "thiserror", + "wasmer-types", + "wasmer-vm", + "wasmparser", + "winapi", +] + +[[package]] +name = "wasmer-compiler-cranelift" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "015eef629fc84889540dc1686bd7fa524b93da9fd2d275b16c49dbe96268e58f" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "gimli 0.26.2", + "more-asserts 0.2.2", + "rayon", + "smallvec", + "target-lexicon", + "tracing", + "wasmer-compiler", + "wasmer-types", +] + +[[package]] +name = "wasmer-derive" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ff577b7c1cfcd3d7c5b3a09fe1a499b73f7c17084845ff71225c8250a6a63a9" +dependencies = [ + "proc-macro-error", + "proc-macro2 1.0.59", + "quote 1.0.26", + "syn 1.0.107", +] + +[[package]] +name = "wasmer-types" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9600f9da966abae3be0b0a4560e7d1f2c88415a2d01ce362ac06063cb1c473" +dependencies = [ + "enum-iterator", + "enumset", + "indexmap 1.9.3", + "more-asserts 0.2.2", + "rkyv", + "target-lexicon", + "thiserror", +] + +[[package]] +name = "wasmer-vm" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc68a7f0a003e6cb63845b7510065097d289553201d64afb9a5e1744da3c6a0" +dependencies = [ + "backtrace", + "cc", + "cfg-if", + "corosensei", + "enum-iterator", + "indexmap 1.9.3", + "lazy_static 1.4.0", + "libc", + "mach", + "memoffset 0.6.5", + "more-asserts 0.2.2", + "region", + "scopeguard", + "thiserror", + "wasmer-types", + "winapi", +] + +[[package]] +name = "wasmparser" +version = "0.83.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" + +[[package]] +name = "wast" +version = "56.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b54185c051d7bbe23757d50fe575880a2426a2f06d2e9f6a10fd9a4a42920c0" +dependencies = [ + "leb128", + "memchr", + "unicode-width", + "wasm-encoder", +] + +[[package]] +name = "wat" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56681922808216ab86d96bb750f70d500b5a7800e41564290fd46bb773581299" +dependencies = [ + "wast", +] + [[package]] name = "web-sys" version = "0.3.60" @@ -12618,6 +14339,19 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43dbb096663629518eb1dfa72d80243ca5a6aca764cae62a2df70af760a9be75" +dependencies = [ + "windows_aarch64_msvc 0.33.0", + "windows_i686_gnu 0.33.0", + "windows_i686_msvc 0.33.0", + "windows_x86_64_gnu 0.33.0", + "windows_x86_64_msvc 0.33.0", +] + [[package]] name = "windows-sys" version = "0.42.0" @@ -12693,6 +14427,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -12705,6 +14445,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_i686_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -12717,6 +14463,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -12729,6 +14481,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_x86_64_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -12753,6 +14511,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -12767,9 +14531,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" dependencies = [ "memchr", ] @@ -12833,6 +14597,21 @@ dependencies = [ "arrayref", "arrayvec 0.5.2", "arrayvec 0.7.2", + "arrow", + "arrow-arith", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-csv", + "arrow-data", + "arrow-ipc", + "arrow-json", + "arrow-ord", + "arrow-row", + "arrow-schema", + "arrow-select", + "arrow-string", + "as-ffi-bindings", "asn1-rs", "asn1-rs-derive", "asn1-rs-impl", @@ -12859,6 +14638,7 @@ dependencies = [ "base16ct 0.1.1", "base16ct 0.2.0", "base64 0.13.1", + "base64 0.20.0", "base64 0.21.2", "base64ct", "bcs", @@ -12868,28 +14648,34 @@ dependencies = [ "bimap", "bincode", "bindgen", - "bip32", + "bip32 0.4.0", + "bip32 0.5.1", "bit-set", "bit-vec", "bitcoin-private", "bitcoin_hashes", "bitflags", "bitmaps", - "bitvec", + "bitvec 0.20.4", "blake2", "blake3", "block-buffer 0.10.3", "block-buffer 0.9.0", "block-padding 0.2.1", "block-padding 0.3.2", + "blockchain-data-derive", + "blockchain-data-macro", "blst", "brotli", "brotli-decompressor", - "bs58", + "bs58 0.4.0", + "bs58 0.5.0", "bstr", "bulletproofs", "bumpalo", "byte-slice-cast", + "bytecheck", + "bytecheck_derive", "bytecode-interpreter-crypto", "bytemuck", "byteorder", @@ -12908,8 +14694,10 @@ dependencies = [ "cfg-expr", "cfg-if", "chrono", - "chrono-tz", - "chrono-tz-build", + "chrono-tz 0.6.3", + "chrono-tz 0.8.2", + "chrono-tz-build 0.0.3", + "chrono-tz-build 0.1.0", "ciborium", "ciborium-io", "ciborium-ll", @@ -12917,7 +14705,7 @@ dependencies = [ "clang-sys", "clap 2.34.0", "clap 3.2.23", - "clap 4.3.3", + "clap 4.3.4", "clap_builder", "clap_derive 3.2.18", "clap_derive 4.3.2", @@ -12945,8 +14733,18 @@ dependencies = [ "core-foundation", "core-foundation-sys", "core2", + "corosensei", + "cosmos-sdk-proto", + "cosmrs", "cpp_demangle", "cpufeatures", + "cranelift-bforest", + "cranelift-codegen", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-frontend", + "cranelift-isle", "crc32fast", "criterion", "criterion-plot", @@ -12970,13 +14768,24 @@ dependencies = [ "ctr", "curve25519-dalek-fiat", "curve25519-dalek-ng", - "darling", - "darling_core", - "darling_macro", + "darling 0.14.2", + "darling 0.20.1", + "darling_core 0.14.2", + "darling_core 0.20.1", + "darling_macro 0.14.2", + "darling_macro 0.20.1", "dashmap", "data-encoding", "data-encoding-macro", "data-encoding-macro-internal", + "datafusion", + "datafusion-common", + "datafusion-execution", + "datafusion-expr", + "datafusion-optimizer", + "datafusion-physical-expr", + "datafusion-row", + "datafusion-sql", "datatest-stable", "debug-ignore", "debugid", @@ -13016,7 +14825,8 @@ dependencies = [ "dyn-clone", "ecdsa 0.14.8", "ecdsa 0.16.6", - "ed25519", + "ed25519 1.5.3", + "ed25519 2.2.1", "ed25519-consensus", "ed25519-dalek-fiat", "either", @@ -13027,15 +14837,25 @@ dependencies = [ "encoding_rs", "endian-type", "enum-compat-util", + "enum-iterator", + "enum-iterator-derive", "enum_dispatch", + "enumset", + "enumset_derive", + "envy", + "equivalent", "errno 0.2.8", "errno 0.3.1", "error-code", + "ethabi", + "ethbloom", + "ethereum-types", "ethnum", "event-listener", "expect-test", "eyre", "fail", + "fallible-iterator", "fastcrypto", "fastcrypto-derive", "fastcrypto-zkp", @@ -13046,16 +14866,19 @@ dependencies = [ "ff 0.13.0", "fiat-crypto", "findshlibs", - "fixed-hash", + "fixed-hash 0.7.0", + "fixed-hash 0.8.0", "fixedbitset 0.2.0", "fixedbitset 0.4.2", + "flatbuffers", "flate2", + "flex-error", "float-cmp", "fnv", "form_urlencoded", "fragile", "fs_extra", - "funty", + "funty 1.1.0", "futures", "futures-channel", "futures-core", @@ -13067,11 +14890,13 @@ dependencies = [ "futures-task", "futures-timer", "futures-util", + "fxhash", "generic-array", "getrandom 0.1.16", "getrandom 0.2.8", "ghash", - "gimli", + "gimli 0.26.2", + "gimli 0.27.0", "git-version", "git-version-macro", "glob", @@ -13088,9 +14913,12 @@ dependencies = [ "guppy-workspace-hack", "h2", "hakari", - "half", + "half 1.8.2", + "half 2.2.1", + "handlebars", "hashbrown 0.12.3", "hashbrown 0.13.2", + "hashbrown 0.14.0", "hdrhistogram", "headers", "headers-core", @@ -13120,13 +14948,16 @@ dependencies = [ "if_chain", "ignore", "im", - "impl-codec", - "impl-serde", + "impl-codec 0.5.1", + "impl-rlp", + "impl-serde 0.3.2", + "impl-serde 0.4.0", "impl-trait-for-tuples", "include_dir", "include_dir_macros", "indenter", - "indexmap", + "indexmap 1.9.3", + "indexmap 2.0.0", "indicatif", "inferno", "inout", @@ -13139,7 +14970,8 @@ dependencies = [ "ipnet", "iri-string", "is-terminal", - "itertools", + "itertools 0.10.5", + "itertools 0.11.0", "itoa", "jemalloc-ctl", "jemalloc-sys", @@ -13155,13 +14987,20 @@ dependencies = [ "jsonrpsee-types", "jsonrpsee-wasm-client", "jsonrpsee-ws-client", - "k256", + "k256 0.11.6", + "k256 0.13.1", "keccak", "lazy_static 0.2.11", "lazy_static 1.4.0", "lazycell", "leb128", - "lexical-core", + "lexical-core 0.7.6", + "lexical-core 0.8.5", + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", "libc", "libloading", "libm", @@ -13170,17 +15009,23 @@ dependencies = [ "libz-sys", "linked-hash-map", "linux-raw-sys 0.1.4", - "linux-raw-sys 0.3.1", + "linux-raw-sys 0.3.8", "lock_api", "log", "lru", + "lz4", "lz4-sys", "mach", + "mamoru-core", + "mamoru-sniffer", + "mamoru-sui-types", + "maplit", "match_opt", "matchers", "matchit 0.5.0", "matchit 0.7.0", - "md-5", + "md-5 0.10.5", + "md-5 0.9.1", "memchr", "memmap2", "memoffset 0.6.5", @@ -13196,7 +15041,8 @@ dependencies = [ "mio 0.8.5", "mockall", "mockall_derive", - "more-asserts", + "more-asserts 0.2.2", + "more-asserts 0.3.1", "move-abigen", "move-abstract-stack", "move-binary-format", @@ -13265,6 +15111,7 @@ dependencies = [ "num-bigint", "num-bigint-dig", "num-complex", + "num-derive", "num-format", "num-integer", "num-iter", @@ -13291,17 +15138,19 @@ dependencies = [ "overload", "owo-colors", "p256", - "parity-scale-codec", - "parity-scale-codec-derive", + "parity-scale-codec 2.3.1", + "parity-scale-codec-derive 2.3.1", "parking", "parking_lot 0.11.2", "parking_lot 0.12.1", "parking_lot_core 0.8.6", "parking_lot_core 0.9.5", + "parquet", "parse-zoneinfo", "paste", "pathdiff", - "pbkdf2", + "pbkdf2 0.11.0", + "pbkdf2 0.12.1", "peeking_take_while", "pem", "pem-rfc7468 0.6.0", @@ -13343,13 +15192,14 @@ dependencies = [ "prettyplease 0.2.6", "prettytable-rs", "primeorder", - "primitive-types", + "primitive-types 0.10.1", + "primitive-types 0.12.1", "proc-macro-crate", "proc-macro-error", "proc-macro-error-attr", "proc-macro-hack", "proc-macro2 0.4.30", - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "prometheus", "prometheus-http-query", "proptest", @@ -13360,6 +15210,8 @@ dependencies = [ "prost-types", "protobuf", "protobuf-src", + "ptr_meta", + "ptr_meta_derive", "ptree", "quanta", "quick-error 1.2.3", @@ -13371,7 +15223,7 @@ dependencies = [ "quote 0.6.13", "quote 1.0.26", "r2d2", - "radium", + "radium 0.6.2", "radix_trie", "rand 0.7.3", "rand 0.8.5", @@ -13390,10 +15242,13 @@ dependencies = [ "readonly", "ref-cast", "ref-cast-impl", + "regalloc2", "regex", "regex-automata", "regex-syntax 0.6.28", "regex-syntax 0.7.2", + "region", + "rend", "reqwest", "retain_mut", "rfc6979 0.3.1", @@ -13401,6 +15256,11 @@ dependencies = [ "rgb", "ring", "ripemd", + "rkyv", + "rkyv_derive", + "rlp", + "rmp", + "rmp-serde", "roaring", "rocksdb", "ron", @@ -13437,6 +15297,7 @@ dependencies = [ "schemars_derive", "scopeguard", "sct", + "seahash", "sec1 0.3.0", "sec1 0.7.1", "secp256k1", @@ -13444,11 +15305,12 @@ dependencies = [ "security-framework", "security-framework-sys", "semver 0.11.0", - "semver 1.0.16", + "semver 1.0.17", "semver-parser", "send_wrapper", + "seq-macro", "serde 0.8.23", - "serde 1.0.152", + "serde 1.0.164", "serde-hjson", "serde-name", "serde-reflection", @@ -13462,8 +15324,10 @@ dependencies = [ "serde_spanned", "serde_test", "serde_urlencoded", - "serde_with", - "serde_with_macros", + "serde_with 2.1.0", + "serde_with 3.0.0", + "serde_with_macros 2.1.0", + "serde_with_macros 3.0.0", "serde_yaml 0.8.26", "serde_yaml 0.9.21", "sha-1 0.10.1", @@ -13482,21 +15346,25 @@ dependencies = [ "signal-hook-registry", "signature 1.6.4", "signature 2.0.0", + "simdutf8", "similar", "simplelog", "siphasher", "sized-chunks", "slab", + "slice-group-by", "slip10_ed25519", "slug", "smallvec", "snap", "socket2 0.4.9", - "socket2 0.5.2", + "socket2 0.5.3", "soketto", "spin", "spki 0.6.0", "spki 0.7.1", + "sqlparser", + "sqlparser_derive", "stable_deref_trait", "static_assertions", "str-buf", @@ -13510,6 +15378,7 @@ dependencies = [ "strum_macros", "subprocess", "subtle", + "subtle-encoding", "subtle-ng", "symbolic-common", "symbolic-demangle", @@ -13524,6 +15393,8 @@ dependencies = [ "target-lexicon", "target-spec", "tempfile", + "tendermint", + "tendermint-proto", "tera", "term", "termcolor", @@ -13538,12 +15409,14 @@ dependencies = [ "thiserror-impl", "thread_local", "threadpool", + "thrift", "time 0.1.45", "time 0.3.17", "time-core", "time-macros", "tint", "tiny-bip39", + "tiny-keccak", "tinytemplate", "tinyvec", "tinyvec_macros", @@ -13552,22 +15425,25 @@ dependencies = [ "tokio-macros 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-retry", "tokio-rustls 0.23.4", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", "tokio-stream", "tokio-util 0.7.4", "toml 0.5.10", - "toml 0.7.4", + "toml 0.7.5", "toml_datetime 0.5.1", - "toml_datetime 0.6.2", + "toml_datetime 0.6.3", "toml_edit 0.14.4", "toml_edit 0.15.0", - "toml_edit 0.19.10", - "tonic", - "tonic-build", + "toml_edit 0.19.11", + "tonic 0.8.3", + "tonic 0.9.2", + "tonic-build 0.8.4", + "tonic-build 0.9.1", "tonic-health", "toolchain_find", "tower", - "tower-http", + "tower-http 0.3.5", + "tower-http 0.4.0", "tower-layer", "tower-service", "tracing", @@ -13628,6 +15504,16 @@ dependencies = [ "wasm-bindgen-macro", "wasm-bindgen-macro-support", "wasm-bindgen-shared", + "wasm-encoder", + "wasmer", + "wasmer-compiler", + "wasmer-compiler-cranelift", + "wasmer-derive", + "wasmer-types", + "wasmer-vm", + "wasmparser", + "wast", + "wat", "web-sys", "webpki", "webpki-roots", @@ -13636,14 +15522,16 @@ dependencies = [ "widestring", "winapi", "winapi-util", + "windows-sys 0.33.0", "windows-sys 0.42.0", "windows-sys 0.48.0", "windows-targets 0.48.0", + "windows_x86_64_msvc 0.33.0", "windows_x86_64_msvc 0.42.2", "windows_x86_64_msvc 0.48.0", "winnow", "winreg", - "wyz", + "wyz 0.2.0", "x509-parser", "xml-rs", "yaml-rust", @@ -13662,6 +15550,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "x" version = "0.1.0" @@ -13692,9 +15589,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.7" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "699d0104bcdd7e7af6d093d6c6e2d0c479b8a129ee0d1023b31d2e0c71bfdda2" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" [[package]] name = "xmlparser" @@ -13741,7 +15638,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" dependencies = [ - "proc-macro2 1.0.58", + "proc-macro2 1.0.59", "quote 1.0.26", "syn 1.0.107", "synstructure", diff --git a/Cargo.toml b/Cargo.toml index 17c2a8ae06cf19..18367ec86e9635 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,6 +66,7 @@ exclude = [ members = [ "crates/anemo-benchmark", + "crates/mamoru-sui-sniffer", "crates/mysten-common", "crates/mysten-metrics", "crates/mysten-network", @@ -403,6 +404,12 @@ move-stackless-bytecode = { path = "external-crates/move/move-prover/bytecode" } move-symbol-pool = { path = "external-crates/move/move-symbol-pool" } move-abstract-stack = { path = "external-crates/move/move-abstract-stack" } +# The mamoru +mamoru-sniffer = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb" } +mamoru-sui-types = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb" } +#mamoru-sniffer = { path = "../mamoru-core/mamoru-sniffer" } +#mamoru-sui-types = { path = "../mamoru-core/mamoru-sui-types" } + fastcrypto = { git = "https://github.com/MystenLabs/fastcrypto", rev = "c961a01596a87e76f590c7e43aca9d57106dbbb1" } fastcrypto-zkp = { git = "https://github.com/MystenLabs/fastcrypto", rev = "c961a01596a87e76f590c7e43aca9d57106dbbb1", package = "fastcrypto-zkp" } diff --git a/crates/mamoru-sui-sniffer/Cargo.toml b/crates/mamoru-sui-sniffer/Cargo.toml new file mode 100644 index 00000000000000..03e5d5de136e6f --- /dev/null +++ b/crates/mamoru-sui-sniffer/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "mamoru-sui-sniffer" +version = "0.1.0" +edition = "2021" +resolver = "2" +publish = false +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +chrono = { version = "0.4" } +fastcrypto = { workspace = true } +mamoru-sniffer = { workspace = true } +mamoru-sui-types = { workspace = true } +move-core-types = { workspace = true } +sui-types = { path = "../sui-types" } +tracing = "0.1" +thiserror = "1.0" +tokio = "1" +rayon = "1.6.1" diff --git a/crates/mamoru-sui-sniffer/src/error.rs b/crates/mamoru-sui-sniffer/src/error.rs new file mode 100644 index 00000000000000..68845d2c1d756b --- /dev/null +++ b/crates/mamoru-sui-sniffer/src/error.rs @@ -0,0 +1,10 @@ +// Not a license :) + +#[derive(thiserror::Error, Debug)] +pub enum SuiSnifferError { + #[error(transparent)] + SnifferError(#[from] mamoru_sniffer::SnifferError), + + #[error(transparent)] + DataError(#[from] mamoru_sniffer::core::DataError), +} diff --git a/crates/mamoru-sui-sniffer/src/lib.rs b/crates/mamoru-sui-sniffer/src/lib.rs new file mode 100644 index 00000000000000..cefae7ac17946f --- /dev/null +++ b/crates/mamoru-sui-sniffer/src/lib.rs @@ -0,0 +1,223 @@ +// Not a license :) + +use std::collections::HashMap; + +use chrono::{DateTime, Utc}; +use fastcrypto::encoding::{Base58, Encoding, Hex}; +use mamoru_sniffer::core::{BlockchainDataBuilder, StructValue, Value, ValueData}; +use mamoru_sniffer::{Sniffer, SnifferConfig}; +use mamoru_sui_types::{ + CallTrace, CallTraceArg, CallTraceTypeArg, Event as MamoruEvent, SuiCtx, Transaction, +}; +use rayon::prelude::*; +use tracing::{error, info, span, Level}; + +pub use error::*; +use move_core_types::trace::{CallTrace as MoveCallTrace, CallType as MoveCallType}; +use move_core_types::value::{MoveStruct, MoveValue}; +use sui_types::effects::{TransactionEffects, TransactionEffectsAPI}; +use sui_types::event::Event; +use sui_types::executable_transaction::VerifiedExecutableTransaction; +use sui_types::transaction::TransactionDataAPI; + +mod error; + +pub struct SuiSniffer { + inner: Sniffer, +} + +impl SuiSniffer { + pub async fn new() -> Result { + let inner = + Sniffer::new(SnifferConfig::from_env().expect("Missing environment variables")).await?; + + Ok(Self { inner }) + } + + pub async fn observe_transaction( + &self, + certificate: VerifiedExecutableTransaction, + effects: TransactionEffects, + events: Vec, + call_traces: Vec, + seq: u64, + time: DateTime, + ) -> Result<(), SuiSnifferError> { + let ctx = tokio::task::spawn_blocking(move || { + let tx_data = certificate.data().transaction_data(); + let tx_hash = format_tx_digest(effects.transaction_digest()); + + let span = span!(Level::DEBUG, "ctx_builder", ?tx_hash); + let _guard = span.enter(); + + let mut ctx_builder = BlockchainDataBuilder::::new(); + ctx_builder.set_tx_data(format!("{}", seq), tx_hash.clone()); + + let gas_cost_summary = effects.gas_cost_summary(); + + ctx_builder.data_mut().set_tx(Transaction { + seq, + digest: tx_hash, + time: time.timestamp(), + gas_used: gas_cost_summary.gas_used(), + gas_computation_cost: gas_cost_summary.computation_cost, + gas_storage_cost: gas_cost_summary.storage_cost, + gas_budget: tx_data.gas_budget(), + sender: format_object_id(certificate.sender_address()), + kind: tx_data.kind().to_string(), + }); + + let before_ms = Utc::now().timestamp_millis(); + + register_events(ctx_builder.data_mut(), seq, events); + + let after_ms = Utc::now().timestamp_millis(); + + info!( + "sniffer.register_events() executed in {} ms.", + after_ms - before_ms, + ); + + let before_ms = Utc::now().timestamp_millis(); + + register_call_traces(ctx_builder.data_mut(), seq, call_traces); + + let after_ms = Utc::now().timestamp_millis(); + + info!( + "sniffer.register_call_traces() executed in {} ms.", + after_ms - before_ms, + ); + + let ctx = ctx_builder.build()?; + + Result::<_, SuiSnifferError>::Ok(ctx) + }) + .await + .expect("BUG: Tokio join failed."); + + match ctx { + Ok(ctx) => { + self.inner.observe_data(ctx).await; + } + Err(err) => { + error!(error = ?err, "Failed to collect BlockchainDataCtx"); + } + } + + Ok(()) + } +} + +fn register_call_traces(ctx: &mut SuiCtx, tx_seq: u64, move_call_traces: Vec) { + let call_traces_len = move_call_traces.len(); + + let (call_traces, (args, type_args)): (Vec<_>, (Vec<_>, Vec<_>)) = move_call_traces + .into_par_iter() + .zip(0..call_traces_len) + .map(|(trace, trace_seq)| { + let trace_seq = trace_seq as u64; + + let call_trace = CallTrace { + seq: trace_seq, + tx_seq, + depth: trace.depth, + call_type: match trace.call_type { + MoveCallType::Call => 0, + MoveCallType::CallGeneric => 1, + }, + gas_used: trace.gas_used, + transaction_module: trace.module_id.map(|module| module.short_str_lossless()), + function: trace.function.to_string(), + }; + + let mut cta = vec![]; + let mut ca = vec![]; + + for (arg, seq) in trace.ty_args.into_iter().zip(0u64..) { + cta.push(CallTraceTypeArg { + seq, + call_trace_seq: trace_seq, + arg: arg.to_canonical_string(), + }); + } + + for (arg, seq) in trace.args.into_iter().zip(0u64..) { + match ValueData::new(to_value(&arg)) { + Some(arg) => { + ca.push(CallTraceArg { + seq, + call_trace_seq: trace_seq, + arg, + }); + } + None => continue, + } + } + + (call_trace, (ca, cta)) + }) + .unzip(); + + ctx.call_traces.extend(call_traces); + ctx.call_trace_args.extend(args.into_iter().flatten()); + ctx.call_trace_type_args + .extend(type_args.into_iter().flatten()); +} + +fn register_events(data: &mut SuiCtx, tx_seq: u64, events: Vec) { + let mamoru_events: Vec<_> = events + .into_iter() + .map(|event| MamoruEvent { + tx_seq, + package_id: format_object_id(event.package_id), + transaction_module: event.transaction_module.into_string(), + sender: format_object_id(event.sender), + typ: event.type_.to_canonical_string(), + contents: event.contents, + }) + .collect(); + + data.events.extend(mamoru_events); +} + +fn format_object_id>(data: T) -> String { + format!("0x{}", Hex::encode(data)) +} + +fn format_tx_digest>(data: T) -> String { + Base58::encode(data.as_ref()) +} + +fn to_value(data: &MoveValue) -> Value { + match data { + MoveValue::Bool(value) => Value::Bool(*value), + MoveValue::U8(value) => Value::U64(*value as u64), + MoveValue::U16(value) => Value::U64(*value as u64), + MoveValue::U32(value) => Value::U64(*value as u64), + MoveValue::U64(value) => Value::U64(*value), + MoveValue::U128(value) => Value::String(format!("{:#x}", value)), + MoveValue::U256(value) => Value::String(format!("{:#x}", value)), + MoveValue::Address(addr) | MoveValue::Signer(addr) => Value::String(format_object_id(addr)), + MoveValue::Vector(value) => Value::List(value.iter().map(to_value).collect()), + MoveValue::Struct(value) => { + let struct_value = match value { + MoveStruct::WithTypes { type_, fields } => StructValue::new( + type_.to_canonical_string(), + fields + .iter() + .map(|(field, value)| (field.clone().into_string(), to_value(value))) + .collect(), + ), + + _ => { + error!("BUG: received undecorated `MoveStruct`."); + + StructValue::new("unknown".to_string(), HashMap::new()) + } + }; + + Value::Struct(struct_value) + } + } +} diff --git a/crates/sui-core/Cargo.toml b/crates/sui-core/Cargo.toml index 5734d8185649f4..584fbdad68adf9 100644 --- a/crates/sui-core/Cargo.toml +++ b/crates/sui-core/Cargo.toml @@ -40,6 +40,8 @@ tokio-retry.workspace = true tokio-stream.workspace = true tracing.workspace = true +mamoru-sui-sniffer = { path = "../mamoru-sui-sniffer" } + fastcrypto.workspace = true fastcrypto-zkp.workspace = true move-binary-format.workspace = true diff --git a/crates/sui-core/src/authority.rs b/crates/sui-core/src/authority.rs index aa81e446608f7e..cab4b5fb47d64b 100644 --- a/crates/sui-core/src/authority.rs +++ b/crates/sui-core/src/authority.rs @@ -15,6 +15,7 @@ use itertools::Itertools; use move_binary_format::CompiledModule; use move_bytecode_utils::module_cache::GetModule; use move_core_types::language_storage::ModuleId; +use move_core_types::trace::CallTrace; use move_core_types::value::MoveStructLayout; use mysten_metrics::{TX_TYPE_SHARED_OBJ_TX, TX_TYPE_SINGLE_WRITER_TX}; use parking_lot::Mutex; @@ -43,6 +44,7 @@ use tracing::{debug, error, info, instrument, trace, warn, Instrument}; use self::authority_store_pruner::AuthorityStorePruningMetrics; pub use authority_notify_read::EffectsNotifyRead; pub use authority_store::{AuthorityStore, ResolverWrapper, UpdateType}; +use mamoru_sui_sniffer::SuiSniffer; use mysten_metrics::{monitored_scope, spawn_monitored_task}; use narwhal_config::{ Committee as ConsensusCommittee, WorkerCache as ConsensusWorkerCache, @@ -616,6 +618,8 @@ pub struct AuthorityState { /// Config for state dumping on forks debug_dump_config: StateDebugDumpConfig, + + sniffer: Option, } /// The authority state encapsulates all state, drives execution, and ensures safety. @@ -963,6 +967,7 @@ impl AuthorityState { expected_effects_digest: Option, epoch_store: &Arc, ) -> SuiResult<(TransactionEffects, Option)> { + let before_ms = Utc::now().timestamp_millis(); let digest = *certificate.digest(); // The cert could have been processed by a concurrent attempt of the same cert, so check if // the effects have already been written. @@ -1000,7 +1005,7 @@ impl AuthorityState { // non-transient (transaction input is invalid, move vm errors). However, all errors from // this function occur before we have written anything to the db, so we commit the tx // guard and rely on the client to retry the tx (if it was transient). - let (inner_temporary_store, effects, execution_error_opt) = match self + let (mut inner_temporary_store, effects, execution_error_opt) = match self .prepare_certificate(&execution_guard, certificate, epoch_store) .await { @@ -1049,6 +1054,8 @@ impl AuthorityState { } } + let call_traces = std::mem::take(&mut inner_temporary_store.call_traces); + fail_point_async!("crash"); self.commit_cert_and_notify( @@ -1058,8 +1065,17 @@ impl AuthorityState { tx_guard, execution_guard, epoch_store, + call_traces, ) .await?; + + let after_ms = Utc::now().timestamp_millis(); + + info!( + "Process certificate executed in {} ms.", + after_ms - before_ms, + ); + Ok((effects, execution_error_opt)) } @@ -1071,6 +1087,7 @@ impl AuthorityState { tx_guard: CertTxGuard, _execution_guard: ExecutionLockReadGuard<'_>, epoch_store: &Arc, + call_traces: Vec, ) -> SuiResult { let _scope: Option = monitored_scope("Execution::commit_cert_and_notify"); @@ -1087,8 +1104,14 @@ impl AuthorityState { .map(|(_, ((id, seq, _), obj, _))| InputKey(*id, (!obj.is_package()).then_some(*seq))) .collect(); - self.commit_certificate(inner_temporary_store, certificate, effects, epoch_store) - .await?; + self.commit_certificate( + inner_temporary_store, + certificate, + effects, + epoch_store, + call_traces, + ) + .await?; // commit_certificate finished, the tx is fully committed to the store. tx_guard.commit_tx(); @@ -1987,6 +2010,16 @@ impl AuthorityState { indirect_objects_threshold, archive_readers, ); + + let sniffer = match std::env::var_os("MAMORU_SNIFFER_ENABLE") { + Some(_) => Some( + SuiSniffer::new() + .await + .expect("Failed to connect to validation chain"), + ), + None => None, + }; + let state = Arc::new(AuthorityState { name, secret, @@ -2006,6 +2039,7 @@ impl AuthorityState { transaction_deny_config, certificate_deny_config, debug_dump_config, + sniffer, }); // Start a task to execute ready certificates. @@ -3444,6 +3478,7 @@ impl AuthorityState { certificate: &VerifiedExecutableTransaction, effects: &TransactionEffects, epoch_store: &Arc, + call_traces: Vec, ) -> SuiResult { let _metrics_guard = self.metrics.commit_certificate_latency.start_timer(); @@ -3481,6 +3516,8 @@ impl AuthorityState { // Allow testing what happens if we crash here. fail_point_async!("crash"); + let events = inner_temporary_store.events.data.clone(); + self.database .update_state( inner_temporary_store, @@ -3496,6 +3533,35 @@ impl AuthorityState { ); })?; + let before_ms = Utc::now().timestamp_millis(); + + if let Some(sniffer) = &self.sniffer { + // extract sequence number is not trivial right now, let's say number is the current timestamp + let seq = Self::unixtime_now_ms(); + + if let Err(err) = sniffer + .observe_transaction( + certificate.clone(), + effects.clone(), + events, + call_traces, + seq, + Utc::now(), + ) + .await + { + error!(?err, "Failed to observe transaction"); + } + } + + let after_ms = Utc::now().timestamp_millis(); + + info!( + tx_tash = Base58::encode(certificate.data().digest()), + "sniffer.observe_transaction() executed in {} ms.", + after_ms - before_ms, + ); + // todo - ideally move this metric in NotifyRead once we have metrics in AuthorityStore self.metrics .pending_notify_read diff --git a/crates/sui-core/src/authority/authority_store.rs b/crates/sui-core/src/authority/authority_store.rs index 7917c0040fd3b4..9b9d9b9b3da921 100644 --- a/crates/sui-core/src/authority/authority_store.rs +++ b/crates/sui-core/src/authority/authority_store.rs @@ -1040,6 +1040,7 @@ impl AuthorityStore { loaded_child_objects: _, no_extraneous_module_bytes: _, runtime_read_objects: _, + call_traces: _, } = inner_temporary_store; trace!(written =? written.values().map(|((obj_id, ver, _), _, _)| (obj_id, ver)).collect::>(), "batch_update_objects: temp store written"); diff --git a/crates/sui-transactional-test-runner/src/test_adapter.rs b/crates/sui-transactional-test-runner/src/test_adapter.rs index 161105aa96a596..520650ab7f2e8d 100644 --- a/crates/sui-transactional-test-runner/src/test_adapter.rs +++ b/crates/sui-transactional-test-runner/src/test_adapter.rs @@ -533,6 +533,7 @@ impl<'a> MoveTestAdapter<'a> for SuiTestAdapter<'a> { let empty = SerializedReturnValues { mutable_reference_outputs: vec![], return_values: vec![], + call_traces: vec![], }; Ok((output, empty)) } diff --git a/crates/sui-types/src/base_types.rs b/crates/sui-types/src/base_types.rs index 6690d90e2a2c3b..a31a9ad5430830 100644 --- a/crates/sui-types/src/base_types.rs +++ b/crates/sui-types/src/base_types.rs @@ -54,6 +54,7 @@ use move_core_types::identifier::IdentStr; use move_core_types::language_storage::ModuleId; use move_core_types::language_storage::StructTag; use move_core_types::language_storage::TypeTag; +use move_core_types::trace::CallTrace; use rand::Rng; use schemars::JsonSchema; use serde::ser::Error; @@ -775,6 +776,9 @@ pub struct TxContext { epoch_timestamp_ms: CheckpointTimestamp, /// Number of `ObjectID`'s generated during execution of the current transaction ids_created: u64, + /// Call traces generated by execution + #[serde(skip)] + call_traces: Vec, } #[derive(PartialEq, Eq, Clone, Copy)] @@ -809,6 +813,7 @@ impl TxContext { epoch: *epoch_id, epoch_timestamp_ms, ids_created: 0, + call_traces: vec![], } } @@ -895,6 +900,14 @@ impl TxContext { pub fn with_sender_for_testing_only(sender: &SuiAddress) -> Self { Self::new(sender, &TransactionDigest::random(), &EpochData::new_test()) } + + pub fn call_traces_mut(&mut self) -> &mut Vec { + &mut self.call_traces + } + + pub fn call_traces(self) -> Vec { + self.call_traces + } } // TODO: rename to version diff --git a/crates/sui-types/src/gas_model/tables.rs b/crates/sui-types/src/gas_model/tables.rs index db2d33b5a1bd1e..bdcedf5699e48d 100644 --- a/crates/sui-types/src/gas_model/tables.rs +++ b/crates/sui-types/src/gas_model/tables.rs @@ -53,6 +53,7 @@ pub struct GasStatus { pub gas_model_version: u64, cost_table: CostTable, gas_left: InternalGas, + gas_left_total: InternalGas, gas_price: u64, initial_budget: InternalGas, charge: bool, @@ -97,6 +98,7 @@ impl GasStatus { Self { gas_model_version, gas_left, + gas_left_total: gas_left, gas_price, initial_budget: gas_left, cost_table, @@ -125,6 +127,7 @@ impl GasStatus { Self { gas_model_version: 4, gas_left: InternalGas::new(0), + gas_left_total: InternalGas::new(0), gas_price: 1, initial_budget: InternalGas::new(0), cost_table: ZERO_COST_SCHEDULE.clone(), @@ -713,6 +716,12 @@ impl GasMeter for GasStatus { fn set_profiler(&mut self, profiler: GasProfiler) { self.profiler = Some(profiler); } + + fn charged_already_total(&self) -> Option { + let charged = self.gas_left_total.checked_sub(self.gas_left)?; + + Some(charged) + } } pub fn zero_cost_schedule() -> CostTable { diff --git a/crates/sui-types/src/temporary_store.rs b/crates/sui-types/src/temporary_store.rs index c5384b240bb4b7..9c27f26a1947c6 100644 --- a/crates/sui-types/src/temporary_store.rs +++ b/crates/sui-types/src/temporary_store.rs @@ -31,6 +31,7 @@ use move_bytecode_utils::module_cache::GetModule; use move_core_types::account_address::AccountAddress; use move_core_types::language_storage::{ModuleId, StructTag}; use move_core_types::resolver::{ModuleResolver, ResourceResolver}; +use move_core_types::trace::CallTrace; use parking_lot::RwLock; use serde::{Deserialize, Serialize}; use serde_with::serde_as; @@ -57,6 +58,9 @@ pub struct InnerTemporaryStore { pub max_binary_format_version: u32, pub no_extraneous_module_bytes: bool, pub runtime_read_objects: BTreeMap, + /// The call traces generated by the transaction + #[serde(skip)] + pub call_traces: Vec, } impl InnerTemporaryStore { @@ -252,6 +256,10 @@ impl<'backing> TemporaryStore<'backing> { /// Break up the structure and return its internal stores (objects, active_inputs, written, deleted) pub fn into_inner(self) -> InnerTemporaryStore { + self.into_inner_with_call_traces(Vec::new()) + } + + pub fn into_inner_with_call_traces(self, call_traces: Vec) -> InnerTemporaryStore { #[cfg(debug_assertions)] { self.check_invariants(); @@ -317,6 +325,7 @@ impl<'backing> TemporaryStore<'backing> { loaded_child_objects: self.loaded_child_objects, no_extraneous_module_bytes: self.protocol_config.no_extraneous_module_bytes(), runtime_read_objects: self.runtime_read_objects.read().clone(), + call_traces, } } @@ -348,6 +357,7 @@ impl<'backing> TemporaryStore<'backing> { status: ExecutionStatus, gas_charger: &mut GasCharger, epoch: EpochId, + call_traces: Vec, ) -> (InnerTemporaryStore, TransactionEffects) { let mut modified_at_versions = vec![]; @@ -365,7 +375,7 @@ impl<'backing> TemporaryStore<'backing> { }); let protocol_version = self.protocol_config.version; - let inner = self.into_inner(); + let inner = self.into_inner_with_call_traces(call_traces); // In the case of special transactions that don't require a gas object, // we don't really care about the effects to gas, just use the input for it. diff --git a/crates/workspace-hack/Cargo.toml b/crates/workspace-hack/Cargo.toml index 91a878366bf374..5a8fe8fdcf3064 100644 --- a/crates/workspace-hack/Cargo.toml +++ b/crates/workspace-hack/Cargo.toml @@ -20,7 +20,7 @@ adler = { version = "1", default-features = false } aead = { version = "0.5", default-features = false, features = ["alloc", "getrandom"] } aes = { version = "0.8", default-features = false } aes-gcm = { version = "0.10" } -ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8", default-features = false } +ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8", default-features = false, features = ["runtime-rng"] } ahash-ca01ad9e24f5d932 = { package = "ahash", version = "0.7" } aho-corasick-ca01ad9e24f5d932 = { package = "aho-corasick", version = "0.7" } aho-corasick-dff4ba8e3ae991db = { package = "aho-corasick", version = "1" } @@ -55,6 +55,21 @@ ark-std = { version = "0.4", features = ["parallel"] } arrayref = { version = "0.3", default-features = false } arrayvec-ca01ad9e24f5d932 = { package = "arrayvec", version = "0.7" } arrayvec-d8f496e17d97b5cb = { package = "arrayvec", version = "0.5", features = ["array-sizes-33-128"] } +arrow = { version = "37", features = ["prettyprint"] } +arrow-arith = { version = "37", default-features = false } +arrow-array = { version = "37", default-features = false, features = ["chrono-tz"] } +arrow-buffer = { version = "37", default-features = false } +arrow-cast = { version = "37", default-features = false, features = ["prettyprint"] } +arrow-csv = { version = "37", default-features = false } +arrow-data = { version = "37", default-features = false } +arrow-ipc = { version = "37", default-features = false } +arrow-json = { version = "37", default-features = false } +arrow-ord = { version = "37", default-features = false } +arrow-row = { version = "37", default-features = false } +arrow-schema = { version = "37", default-features = false } +arrow-select = { version = "37" } +arrow-string = { version = "37", default-features = false } +as-ffi-bindings = { git = "https://github.com/Mamoru-Foundation/as-ffi-bindings.git", default-features = false } asn1-rs = { version = "0.5", features = ["datetime"] } assert_cmd = { version = "2", default-features = false } async-compression = { version = "0.3", features = ["brotli", "gzip", "tokio", "zlib"] } @@ -73,15 +88,17 @@ backtrace = { version = "0.3" } base-x = { version = "0.2", default-features = false } base16ct-6f8ce4dd05d13bba = { package = "base16ct", version = "0.2", default-features = false, features = ["alloc"] } base16ct-c65f7effa3be6d31 = { package = "base16ct", version = "0.1", default-features = false } +base64-56bd22fc3884b12 = { package = "base64", version = "0.20" } base64-594e8ee84c453af0 = { package = "base64", version = "0.13", features = ["alloc"] } -base64-647d43efb71741da = { package = "base64", version = "0.21" } +base64-647d43efb71741da = { package = "base64", version = "0.21", features = ["alloc"] } base64ct = { version = "1", default-features = false, features = ["alloc"] } bcs = { version = "0.1", default-features = false } beef = { version = "0.5", features = ["impl_serde"] } better_any = { version = "0.1", default-features = false } bimap = { version = "0.6" } bincode = { version = "1", default-features = false } -bip32 = { version = "0.4" } +bip32-9fbad63c4bcf4a8f = { package = "bip32", version = "0.4" } +bip32-d8f496e17d97b5cb = { package = "bip32", version = "0.5" } bit-set = { version = "0.5" } bit-vec = { version = "0.6", default-features = false, features = ["std"] } bitcoin-private = { version = "0.1" } @@ -95,10 +112,12 @@ block-buffer-274715c4dabd11b0 = { package = "block-buffer", version = "0.9", def block-buffer-93f6ce9d446188ac = { package = "block-buffer", version = "0.10", default-features = false } block-padding-468e82937335b1c9 = { package = "block-padding", version = "0.3", default-features = false, features = ["std"] } block-padding-6f8ce4dd05d13bba = { package = "block-padding", version = "0.2", default-features = false } +blockchain-data-macro = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } blst = { version = "0.3", features = ["no-threads"] } brotli = { version = "3", default-features = false, features = ["std"] } brotli-decompressor = { version = "2", default-features = false, features = ["std"] } -bs58 = { version = "0.4", features = ["check"] } +bs58-9fbad63c4bcf4a8f = { package = "bs58", version = "0.4", features = ["check"] } +bs58-d8f496e17d97b5cb = { package = "bs58", version = "0.5", default-features = false, features = ["check"] } bstr = { version = "1" } bulletproofs = { version = "4" } byte-slice-cast = { version = "1" } @@ -116,8 +135,9 @@ cast = { version = "0.3", default-features = false } cbc = { version = "0.1", features = ["std"] } cfg-expr = { version = "0.13", features = ["targets"] } cfg-if = { version = "1", default-features = false } -chrono = { version = "0.4", features = ["serde"] } -chrono-tz = { version = "0.6" } +chrono = { version = "0.4", features = ["alloc", "serde"] } +chrono-tz-3b31131e45eafb45 = { package = "chrono-tz", version = "0.6" } +chrono-tz-c38e5c1d305a1b54 = { package = "chrono-tz", version = "0.8" } ciborium = { version = "0.2" } ciborium-io = { version = "0.2", default-features = false, features = ["std"] } ciborium-ll = { version = "0.2", default-features = false } @@ -145,6 +165,8 @@ const-oid = { version = "0.9", default-features = false } const-str = { version = "0.5" } constant_time_eq = { version = "0.2", default-features = false } core2 = { version = "0.4", default-features = false, features = ["alloc"] } +cosmos-sdk-proto = { git = "https://github.com/Mamoru-Foundation/cosmos-rust.git", rev = "5e0ed6c", default-features = false, features = ["grpc-transport"] } +cosmrs = { git = "https://github.com/Mamoru-Foundation/cosmos-rust.git", rev = "5e0ed6c", features = ["grpc"] } crc32fast = { version = "1" } criterion = { version = "0.4", features = ["async_tokio", "html_reports"] } criterion-plot = { version = "0.5", default-features = false } @@ -155,7 +177,7 @@ crossbeam-utils = { version = "0.8" } crossterm-2ffb4c3fe830441c = { package = "crossterm", version = "0.25" } crossterm-3c51e837cfc5589a = { package = "crossterm", version = "0.22" } crossterm-647d43efb71741da = { package = "crossterm", version = "0.21" } -crunchy = { version = "0.2", default-features = false, features = ["std"] } +crunchy = { version = "0.2", features = ["limit_256", "std"] } crypto-bigint-9fbad63c4bcf4a8f = { package = "crypto-bigint", version = "0.4", default-features = false, features = ["generic-array", "rand_core", "zeroize"] } crypto-bigint-d8f496e17d97b5cb = { package = "crypto-bigint", version = "0.5", default-features = false, features = ["generic-array", "rand_core", "zeroize"] } crypto-common = { version = "0.1", default-features = false, features = ["getrandom", "std"] } @@ -168,6 +190,14 @@ curve25519-dalek-ng = { version = "4", features = ["serde"] } dashmap = { version = "5", default-features = false } data-encoding = { version = "2" } data-encoding-macro = { version = "0.1", default-features = false } +datafusion = { version = "23", default-features = false, features = ["crypto_expressions", "unicode_expressions"] } +datafusion-common = { version = "23", features = ["object_store", "parquet"] } +datafusion-execution = { version = "23", default-features = false } +datafusion-expr = { version = "23", default-features = false } +datafusion-optimizer = { version = "23", default-features = false, features = ["crypto_expressions", "unicode_expressions"] } +datafusion-physical-expr = { version = "23", default-features = false, features = ["crypto_expressions", "unicode_expressions"] } +datafusion-row = { version = "23", default-features = false } +datafusion-sql = { version = "23" } datatest-stable = { version = "0.1", default-features = false } debug-ignore = { version = "1", default-features = false } der-3b31131e45eafb45 = { package = "der", version = "0.6", default-features = false, features = ["oid", "pem", "std"] } @@ -197,16 +227,22 @@ duration-str = { version = "0.5" } dyn-clone = { version = "1", default-features = false } ecdsa-582f2526e08bb6a0 = { package = "ecdsa", version = "0.14", default-features = false, features = ["der", "sign", "verify"] } ecdsa-986da7b5efc2b80e = { package = "ecdsa", version = "0.16", features = ["pem", "signing", "std", "verifying"] } -ed25519 = { version = "1", features = ["alloc", "serde", "zeroize"] } ed25519-consensus = { version = "2" } ed25519-dalek-fiat = { version = "0.1", default-features = false, features = ["fiat_u64_backend", "serde", "std"] } +ed25519-dff4ba8e3ae991db = { package = "ed25519", version = "1", features = ["alloc", "serde", "zeroize"] } +ed25519-f595c2ba2a3f28df = { package = "ed25519", version = "2", default-features = false, features = ["alloc"] } either = { version = "1" } elliptic-curve-594e8ee84c453af0 = { package = "elliptic-curve", version = "0.13", features = ["hash2curve", "hazmat", "pem", "std"] } elliptic-curve-5ef9efb8ec2df382 = { package = "elliptic-curve", version = "0.12", default-features = false, features = ["arithmetic", "digest", "hazmat", "sec1"] } encode_unicode-dff4ba8e3ae991db = { package = "encode_unicode", version = "1" } endian-type = { version = "0.1", default-features = false } enum-compat-util = { path = "../../external-crates/move/testing-infra/enum-compat-util", default-features = false } -ethnum = { version = "1", default-features = false } +envy = { version = "0.4", default-features = false } +equivalent = { version = "1", default-features = false } +ethabi = { version = "18" } +ethbloom = { version = "0.13", default-features = false, features = ["rlp", "serialize", "std"] } +ethereum-types = { version = "0.14", default-features = false, features = ["rlp", "serialize", "std"] } +ethnum = { version = "1", default-features = false, features = ["serde"] } event-listener = { version = "2", default-features = false } expect-test = { version = "1", default-features = false } eyre = { version = "0.6" } @@ -219,10 +255,13 @@ fdlimit = { version = "0.2", default-features = false } ff-594e8ee84c453af0 = { package = "ff", version = "0.13", default-features = false, features = ["alloc"] } ff-5ef9efb8ec2df382 = { package = "ff", version = "0.12", default-features = false } fiat-crypto = { version = "0.1" } -fixed-hash = { version = "0.7", default-features = false, features = ["std"] } +fixed-hash-c38e5c1d305a1b54 = { package = "fixed-hash", version = "0.8", default-features = false, features = ["std"] } +fixed-hash-ca01ad9e24f5d932 = { package = "fixed-hash", version = "0.7", default-features = false, features = ["std"] } fixedbitset-6f8ce4dd05d13bba = { package = "fixedbitset", version = "0.2", default-features = false } fixedbitset-9fbad63c4bcf4a8f = { package = "fixedbitset", version = "0.4", default-features = false } +flatbuffers = { version = "23", default-features = false } flate2 = { version = "1" } +flex-error = { version = "0.4", default-features = false, features = ["eyre_tracer"] } float-cmp = { version = "0.9" } fnv = { version = "1" } form_urlencoded = { version = "1", default-features = false } @@ -243,7 +282,7 @@ generic-array = { version = "0.14", default-features = false, features = ["more_ getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["std"] } getrandom-c65f7effa3be6d31 = { package = "getrandom", version = "0.1", default-features = false, features = ["std"] } ghash = { version = "0.5", default-features = false } -gimli = { version = "0.27", default-features = false, features = ["read"] } +gimli-754bda37e0fb3874 = { package = "gimli", version = "0.27", default-features = false, features = ["read"] } git-version = { version = "0.3", default-features = false } glob = { version = "0.3", default-features = false } globset = { version = "0.4" } @@ -259,7 +298,10 @@ guppy-summaries = { version = "0.7", default-features = false } guppy-workspace-hack = { version = "0.1", default-features = false } h2 = { version = "0.3", default-features = false } hakari = { version = "0.13", default-features = false, features = ["cli-support"] } -half = { version = "1", default-features = false } +half-dff4ba8e3ae991db = { package = "half", version = "1", default-features = false } +half-f595c2ba2a3f28df = { package = "half", version = "2", default-features = false, features = ["num-traits"] } +handlebars = { version = "4" } +hashbrown-582f2526e08bb6a0 = { package = "hashbrown", version = "0.14", default-features = false, features = ["raw"] } hashbrown-594e8ee84c453af0 = { package = "hashbrown", version = "0.13", features = ["raw"] } hashbrown-5ef9efb8ec2df382 = { package = "hashbrown", version = "0.12", features = ["raw"] } hdrhistogram = { version = "7" } @@ -285,10 +327,13 @@ idna = { version = "0.3", default-features = false } ignore = { version = "0.4", default-features = false } im = { version = "15", default-features = false } impl-codec = { version = "0.5", default-features = false, features = ["std"] } -impl-serde = { version = "0.3", default-features = false } +impl-rlp = { version = "0.3", default-features = false } +impl-serde-468e82937335b1c9 = { package = "impl-serde", version = "0.3", default-features = false } +impl-serde-9fbad63c4bcf4a8f = { package = "impl-serde", version = "0.4", default-features = false } include_dir = { version = "0.7", features = ["glob"] } indenter = { version = "0.3" } -indexmap = { version = "1", default-features = false, features = ["serde", "std"] } +indexmap-dff4ba8e3ae991db = { package = "indexmap", version = "1", default-features = false, features = ["serde", "std"] } +indexmap-f595c2ba2a3f28df = { package = "indexmap", version = "2" } indicatif = { version = "0.17" } inout = { version = "0.1", default-features = false, features = ["std"] } inquire = { version = "0.6" } @@ -299,7 +344,8 @@ internment = { version = "0.5", default-features = false, features = ["arc"] } io-lifetimes = { version = "1" } iri-string = { version = "0.4" } is-terminal = { version = "0.4", default-features = false } -itertools = { version = "0.10" } +itertools-93f6ce9d446188ac = { package = "itertools", version = "0.10" } +itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } itoa = { version = "1", default-features = false } js-sys = { version = "0.3", default-features = false } jsonpath_lib = { version = "0.3", default-features = false } @@ -311,12 +357,19 @@ jsonrpsee-server = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b jsonrpsee-types = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b300784795f6a64d0fcdf8f03081a9bc38bde8", default-features = false } jsonrpsee-wasm-client = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b300784795f6a64d0fcdf8f03081a9bc38bde8", default-features = false } jsonrpsee-ws-client = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b300784795f6a64d0fcdf8f03081a9bc38bde8" } -k256 = { version = "0.11", default-features = false, features = ["ecdsa", "keccak256"] } +k256-594e8ee84c453af0 = { package = "k256", version = "0.13" } +k256-a6292c17cd707f01 = { package = "k256", version = "0.11", default-features = false, features = ["ecdsa", "keccak256"] } keccak = { version = "0.1", default-features = false } lazy_static-6f8ce4dd05d13bba = { package = "lazy_static", version = "0.2", default-features = false } lazy_static-dff4ba8e3ae991db = { package = "lazy_static", version = "1", default-features = false, features = ["spin_no_std"] } leb128 = { version = "0.2", default-features = false } -lexical-core = { version = "0.7" } +lexical-core-c38e5c1d305a1b54 = { package = "lexical-core", version = "0.8", default-features = false, features = ["parse-floats", "parse-integers", "write-floats", "write-integers"] } +lexical-core-ca01ad9e24f5d932 = { package = "lexical-core", version = "0.7" } +lexical-parse-float = { version = "0.8", default-features = false } +lexical-parse-integer = { version = "0.8", default-features = false } +lexical-util = { version = "0.8", default-features = false, features = ["parse-floats", "parse-integers", "write-floats", "write-integers"] } +lexical-write-float = { version = "0.8", default-features = false } +lexical-write-integer = { version = "0.8", default-features = false } libc = { version = "0.2" } libm = { version = "0.2" } librocksdb-sys = { version = "0.11", features = ["lz4", "snappy", "zlib", "zstd"] } @@ -326,12 +379,18 @@ linked-hash-map = { version = "0.5", default-features = false } lock_api = { version = "0.4", default-features = false } log = { version = "0.4", default-features = false, features = ["serde", "std"] } lru = { version = "0.10" } +lz4 = { version = "1", default-features = false } lz4-sys = { version = "1", default-features = false } +mamoru-core = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } +mamoru-sniffer = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } +mamoru-sui-types = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } +maplit = { version = "1", default-features = false } match_opt = { version = "0.1", default-features = false } matchers = { version = "0.1", default-features = false } matchit-ca01ad9e24f5d932 = { package = "matchit", version = "0.7" } matchit-d8f496e17d97b5cb = { package = "matchit", version = "0.5" } -md-5 = { version = "0.9" } +md-5-274715c4dabd11b0 = { package = "md-5", version = "0.9" } +md-5-93f6ce9d446188ac = { package = "md-5", version = "0.10" } memchr = { version = "2", features = ["use_std"] } memoffset-ca01ad9e24f5d932 = { package = "memoffset", version = "0.7" } merlin = { version = "3" } @@ -342,7 +401,8 @@ minimal-lexical = { version = "0.2", default-features = false, features = ["std" miniz_oxide = { version = "0.6", default-features = false, features = ["with-alloc"] } mio-c38e5c1d305a1b54 = { package = "mio", version = "0.8", features = ["net", "os-ext"] } mockall = { version = "0.11", default-features = false } -more-asserts = { version = "0.3", default-features = false } +more-asserts-468e82937335b1c9 = { package = "more-asserts", version = "0.3", default-features = false } +more-asserts-6f8ce4dd05d13bba = { package = "more-asserts", version = "0.2", default-features = false } move-abigen = { path = "../../external-crates/move/move-prover/move-abigen", default-features = false } move-abstract-stack = { path = "../../external-crates/move/move-abstract-stack", default-features = false } move-binary-format = { path = "../../external-crates/move/move-binary-format" } @@ -429,8 +489,10 @@ parking_lot-5ef9efb8ec2df382 = { package = "parking_lot", version = "0.12" } parking_lot-a6292c17cd707f01 = { package = "parking_lot", version = "0.11" } parking_lot_core-274715c4dabd11b0 = { package = "parking_lot_core", version = "0.9", default-features = false } parking_lot_core-c38e5c1d305a1b54 = { package = "parking_lot_core", version = "0.8", default-features = false } +parquet = { version = "37", features = ["async"] } pathdiff = { version = "0.2", default-features = false, features = ["camino"] } -pbkdf2 = { version = "0.11", default-features = false } +pbkdf2-5ef9efb8ec2df382 = { package = "pbkdf2", version = "0.12", default-features = false, features = ["hmac"] } +pbkdf2-a6292c17cd707f01 = { package = "pbkdf2", version = "0.11", default-features = false } pem = { version = "1", default-features = false } pem-rfc7468-3b31131e45eafb45 = { package = "pem-rfc7468", version = "0.6", default-features = false, features = ["alloc"] } pem-rfc7468-ca01ad9e24f5d932 = { package = "pem-rfc7468", version = "0.7", default-features = false, features = ["alloc"] } @@ -461,7 +523,8 @@ pretty = { version = "0.10", default-features = false } pretty_assertions = { version = "1" } prettytable-rs = { version = "0.10" } primeorder = { version = "0.13", default-features = false } -primitive-types = { version = "0.10", features = ["impl-serde"] } +primitive-types-5ef9efb8ec2df382 = { package = "primitive-types", version = "0.12", default-features = false, features = ["byteorder", "rlp", "rustc-hex", "serde_no_std", "std"] } +primitive-types-93f6ce9d446188ac = { package = "primitive-types", version = "0.10", features = ["impl-serde"] } proc-macro2-dff4ba8e3ae991db = { package = "proc-macro2", version = "1", features = ["span-locations"] } prometheus = { version = "0.13" } prometheus-http-query = { version = "0.6", default-features = false, features = ["rustls-tls"] } @@ -503,6 +566,9 @@ rfc6979-468e82937335b1c9 = { package = "rfc6979", version = "0.3", default-featu rfc6979-9fbad63c4bcf4a8f = { package = "rfc6979", version = "0.4", default-features = false } ring = { version = "0.16" } ripemd = { version = "0.1", default-features = false } +rlp = { version = "0.5", default-features = false } +rmp = { version = "0.8" } +rmp-serde = { version = "1", default-features = false } roaring = { version = "0.10", default-features = false } rocksdb = { version = "0.21", default-features = false, features = ["lz4", "multi-threaded-cf", "snappy", "zlib", "zstd"] } ron = { version = "0.8" } @@ -543,13 +609,14 @@ serde-hjson = { version = "0.9", default-features = false } serde-name = { version = "0.2", default-features = false } serde-reflection = { version = "0.3", default-features = false } serde-value = { version = "0.7", default-features = false } -serde_bytes = { version = "0.11" } +serde_bytes = { version = "0.11", features = ["alloc"] } serde_json = { version = "1", features = ["alloc", "arbitrary_precision", "preserve_order", "raw_value", "unbounded_depth"] } serde_path_to_error = { version = "0.1", default-features = false } serde_spanned = { version = "0.6", default-features = false, features = ["serde"] } serde_test = { version = "1", default-features = false } serde_urlencoded = { version = "0.7", default-features = false } -serde_with = { version = "2", features = ["hex"] } +serde_with-7b89eefb6aaa9bf3 = { package = "serde_with", version = "3", features = ["base64"] } +serde_with-f595c2ba2a3f28df = { package = "serde_with", version = "2", features = ["hex"] } serde_yaml-274715c4dabd11b0 = { package = "serde_yaml", version = "0.9", default-features = false } serde_yaml-c38e5c1d305a1b54 = { package = "serde_yaml", version = "0.8", default-features = false } sha-1-274715c4dabd11b0 = { package = "sha-1", version = "0.9", default-features = false } @@ -572,7 +639,7 @@ sized-chunks = { version = "0.6" } slab = { version = "0.4" } slip10_ed25519 = { version = "0.1", default-features = false } slug = { version = "0.1", default-features = false } -smallvec = { version = "1", default-features = false } +smallvec = { version = "1", default-features = false, features = ["union"] } snap = { version = "1", default-features = false } socket2-9fbad63c4bcf4a8f = { package = "socket2", version = "0.4", default-features = false, features = ["all"] } socket2-d8f496e17d97b5cb = { package = "socket2", version = "0.5", default-features = false } @@ -580,6 +647,7 @@ soketto = { version = "0.7", features = ["http"] } spin = { version = "0.5", default-features = false } spki-3b31131e45eafb45 = { package = "spki", version = "0.6", default-features = false, features = ["pem", "std"] } spki-ca01ad9e24f5d932 = { package = "spki", version = "0.7", default-features = false, features = ["pem", "std"] } +sqlparser = { version = "0.33", features = ["visitor"] } stable_deref_trait = { version = "1" } static_assertions = { version = "1", default-features = false } strip-ansi-escapes = { version = "0.1", default-features = false } @@ -588,6 +656,7 @@ strsim-c38e5c1d305a1b54 = { package = "strsim", version = "0.8", default-feature structopt = { version = "0.3" } strum = { version = "0.24", features = ["derive"] } subtle = { version = "2", default-features = false, features = ["i128", "std"] } +subtle-encoding = { version = "0.5", features = ["bech32-preview"] } subtle-ng = { version = "2", default-features = false, features = ["std"] } syn-dff4ba8e3ae991db = { package = "syn", version = "1", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] } sync_wrapper = { version = "0.1", default-features = false } @@ -597,6 +666,8 @@ tap = { version = "1", default-features = false } target-lexicon = { version = "0.12", features = ["std"] } target-spec = { version = "1", default-features = false, features = ["summaries"] } tempfile = { version = "3", default-features = false } +tendermint = { version = "0.32", features = ["secp256k1"] } +tendermint-proto = { version = "0.32", default-features = false } tera = { version = "1" } term = { version = "0.7" } termcolor = { version = "1", default-features = false } @@ -609,11 +680,13 @@ textwrap-a6292c17cd707f01 = { package = "textwrap", version = "0.11", default-fe thiserror = { version = "1", default-features = false } thread_local = { version = "1", default-features = false } threadpool = { version = "1", default-features = false } +thrift = { version = "0.17", default-features = false } time-468e82937335b1c9 = { package = "time", version = "0.3", features = ["formatting", "macros", "parsing"] } time-c65f7effa3be6d31 = { package = "time", version = "0.1", default-features = false } time-core = { version = "0.1", default-features = false } tint = { version = "1", default-features = false } tiny-bip39 = { version = "1" } +tiny-keccak = { version = "2", features = ["keccak"] } tinytemplate = { version = "1", default-features = false } tinyvec = { version = "1", features = ["alloc"] } tinyvec_macros = { version = "0.1", default-features = false } @@ -621,6 +694,7 @@ tokio = { version = "1", features = ["full", "test-util", "tracing"] } tokio-io-timeout = { version = "1", default-features = false } tokio-retry = { version = "0.3", default-features = false } tokio-rustls-2b5c6dc72f624058 = { package = "tokio-rustls", version = "0.23" } +tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } tokio-stream = { version = "0.1", features = ["net", "sync"] } tokio-util = { version = "0.7", features = ["codec", "compat", "io"] } toml-ca01ad9e24f5d932 = { package = "toml", version = "0.7", features = ["preserve_order"] } @@ -630,10 +704,12 @@ toml_datetime-d8f496e17d97b5cb = { package = "toml_datetime", version = "0.5", d toml_edit-3575ec1268b04181 = { package = "toml_edit", version = "0.15" } toml_edit-582f2526e08bb6a0 = { package = "toml_edit", version = "0.14", features = ["easy"] } toml_edit-cdcf2f9584511fe6 = { package = "toml_edit", version = "0.19", features = ["serde"] } -tonic = { version = "0.8", features = ["tls"] } +tonic-274715c4dabd11b0 = { package = "tonic", version = "0.9", features = ["tls-roots"] } +tonic-c38e5c1d305a1b54 = { package = "tonic", version = "0.8", features = ["tls"] } tonic-health = { version = "0.8" } tower = { version = "0.4", features = ["full"] } -tower-http = { version = "0.3", features = ["full"] } +tower-http-468e82937335b1c9 = { package = "tower-http", version = "0.3", features = ["full"] } +tower-http-9fbad63c4bcf4a8f = { package = "tower-http", version = "0.4", features = ["map-response-body", "util"] } tower-layer = { version = "0.3", default-features = false } tower-service = { version = "0.3", default-features = false } tracing = { version = "0.1", features = ["log"] } @@ -682,6 +758,10 @@ walkdir = { version = "2", default-features = false } want = { version = "0.3", default-features = false } wasm-bindgen = { version = "0.2" } wasm-bindgen-futures = { version = "0.4", default-features = false } +wasm-encoder = { version = "0.25", default-features = false } +wasmer = { version = "3" } +wast = { version = "56" } +wat = { version = "1", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["AddEventListenerOptions", "BinaryType", "Blob", "CloseEvent", "CloseEventInit", "Document", "ErrorEvent", "FileReader", "History", "HtmlHeadElement", "Location", "MessageEvent", "ProgressEvent", "WebSocket", "Window"] } webpki = { version = "0.22", default-features = false, features = ["std"] } webpki-roots = { version = "0.22", default-features = false } @@ -705,7 +785,7 @@ adler = { version = "1", default-features = false } aead = { version = "0.5", default-features = false, features = ["alloc", "getrandom"] } aes = { version = "0.8", default-features = false } aes-gcm = { version = "0.10" } -ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8", default-features = false } +ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8", default-features = false, features = ["runtime-rng"] } ahash-ca01ad9e24f5d932 = { package = "ahash", version = "0.7" } aho-corasick-ca01ad9e24f5d932 = { package = "aho-corasick", version = "0.7" } aho-corasick-dff4ba8e3ae991db = { package = "aho-corasick", version = "1" } @@ -744,6 +824,21 @@ ark-std = { version = "0.4", features = ["parallel"] } arrayref = { version = "0.3", default-features = false } arrayvec-ca01ad9e24f5d932 = { package = "arrayvec", version = "0.7" } arrayvec-d8f496e17d97b5cb = { package = "arrayvec", version = "0.5", features = ["array-sizes-33-128"] } +arrow = { version = "37", features = ["prettyprint"] } +arrow-arith = { version = "37", default-features = false } +arrow-array = { version = "37", default-features = false, features = ["chrono-tz"] } +arrow-buffer = { version = "37", default-features = false } +arrow-cast = { version = "37", default-features = false, features = ["prettyprint"] } +arrow-csv = { version = "37", default-features = false } +arrow-data = { version = "37", default-features = false } +arrow-ipc = { version = "37", default-features = false } +arrow-json = { version = "37", default-features = false } +arrow-ord = { version = "37", default-features = false } +arrow-row = { version = "37", default-features = false } +arrow-schema = { version = "37", default-features = false } +arrow-select = { version = "37" } +arrow-string = { version = "37", default-features = false } +as-ffi-bindings = { git = "https://github.com/Mamoru-Foundation/as-ffi-bindings.git", default-features = false } asn1-rs = { version = "0.5", features = ["datetime"] } asn1-rs-derive = { version = "0.4", default-features = false } asn1-rs-impl = { version = "0.1", default-features = false } @@ -768,8 +863,9 @@ backtrace = { version = "0.3" } base-x = { version = "0.2", default-features = false } base16ct-6f8ce4dd05d13bba = { package = "base16ct", version = "0.2", default-features = false, features = ["alloc"] } base16ct-c65f7effa3be6d31 = { package = "base16ct", version = "0.1", default-features = false } +base64-56bd22fc3884b12 = { package = "base64", version = "0.20" } base64-594e8ee84c453af0 = { package = "base64", version = "0.13", features = ["alloc"] } -base64-647d43efb71741da = { package = "base64", version = "0.21" } +base64-647d43efb71741da = { package = "base64", version = "0.21", features = ["alloc"] } base64ct = { version = "1", default-features = false, features = ["alloc"] } bcs = { version = "0.1", default-features = false } beef = { version = "0.5", features = ["impl_serde"] } @@ -778,7 +874,8 @@ better_typeid_derive = { version = "0.1", default-features = false } bimap = { version = "0.6" } bincode = { version = "1", default-features = false } bindgen = { version = "0.65", default-features = false, features = ["runtime"] } -bip32 = { version = "0.4" } +bip32-9fbad63c4bcf4a8f = { package = "bip32", version = "0.4" } +bip32-d8f496e17d97b5cb = { package = "bip32", version = "0.5" } bit-set = { version = "0.5" } bit-vec = { version = "0.6", default-features = false, features = ["std"] } bitcoin-private = { version = "0.1" } @@ -792,10 +889,13 @@ block-buffer-274715c4dabd11b0 = { package = "block-buffer", version = "0.9", def block-buffer-93f6ce9d446188ac = { package = "block-buffer", version = "0.10", default-features = false } block-padding-468e82937335b1c9 = { package = "block-padding", version = "0.3", default-features = false, features = ["std"] } block-padding-6f8ce4dd05d13bba = { package = "block-padding", version = "0.2", default-features = false } +blockchain-data-derive = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } +blockchain-data-macro = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } blst = { version = "0.3", features = ["no-threads"] } brotli = { version = "3", default-features = false, features = ["std"] } brotli-decompressor = { version = "2", default-features = false, features = ["std"] } -bs58 = { version = "0.4", features = ["check"] } +bs58-9fbad63c4bcf4a8f = { package = "bs58", version = "0.4", features = ["check"] } +bs58-d8f496e17d97b5cb = { package = "bs58", version = "0.5", default-features = false, features = ["check"] } bstr = { version = "1" } bulletproofs = { version = "4" } bumpalo = { version = "3" } @@ -817,9 +917,11 @@ cc = { version = "1", default-features = false, features = ["parallel"] } cexpr = { version = "0.6", default-features = false } cfg-expr = { version = "0.13", features = ["targets"] } cfg-if = { version = "1", default-features = false } -chrono = { version = "0.4", features = ["serde"] } -chrono-tz = { version = "0.6" } -chrono-tz-build = { version = "0.0.3", default-features = false } +chrono = { version = "0.4", features = ["alloc", "serde"] } +chrono-tz-3b31131e45eafb45 = { package = "chrono-tz", version = "0.6" } +chrono-tz-build-74f8b422e2050dd1 = { package = "chrono-tz-build", version = "0.0.3", default-features = false } +chrono-tz-build-c65f7effa3be6d31 = { package = "chrono-tz-build", version = "0.1", default-features = false } +chrono-tz-c38e5c1d305a1b54 = { package = "chrono-tz", version = "0.8" } ciborium = { version = "0.2" } ciborium-io = { version = "0.2", default-features = false, features = ["std"] } ciborium-ll = { version = "0.2", default-features = false } @@ -852,6 +954,8 @@ constant_time_eq = { version = "0.2", default-features = false } convert_case-3b31131e45eafb45 = { package = "convert_case", version = "0.6", default-features = false } convert_case-9fbad63c4bcf4a8f = { package = "convert_case", version = "0.4", default-features = false } core2 = { version = "0.4", default-features = false, features = ["alloc"] } +cosmos-sdk-proto = { git = "https://github.com/Mamoru-Foundation/cosmos-rust.git", rev = "5e0ed6c", default-features = false, features = ["grpc-transport"] } +cosmrs = { git = "https://github.com/Mamoru-Foundation/cosmos-rust.git", rev = "5e0ed6c", features = ["grpc"] } crc32fast = { version = "1" } criterion = { version = "0.4", features = ["async_tokio", "html_reports"] } criterion-plot = { version = "0.5", default-features = false } @@ -862,7 +966,7 @@ crossbeam-utils = { version = "0.8" } crossterm-2ffb4c3fe830441c = { package = "crossterm", version = "0.25" } crossterm-3c51e837cfc5589a = { package = "crossterm", version = "0.22" } crossterm-647d43efb71741da = { package = "crossterm", version = "0.21" } -crunchy = { version = "0.2", default-features = false, features = ["std"] } +crunchy = { version = "0.2", features = ["limit_256", "std"] } crypto-bigint-9fbad63c4bcf4a8f = { package = "crypto-bigint", version = "0.4", default-features = false, features = ["generic-array", "rand_core", "zeroize"] } crypto-bigint-d8f496e17d97b5cb = { package = "crypto-bigint", version = "0.5", default-features = false, features = ["generic-array", "rand_core", "zeroize"] } crypto-common = { version = "0.1", default-features = false, features = ["getrandom", "std"] } @@ -872,13 +976,24 @@ csv-core = { version = "0.1" } ctr = { version = "0.9", default-features = false } curve25519-dalek-fiat = { version = "0.1", default-features = false, features = ["fiat_u64_backend", "std"] } curve25519-dalek-ng = { version = "4", features = ["serde"] } -darling = { version = "0.14" } -darling_core = { version = "0.14", default-features = false, features = ["suggestions"] } -darling_macro = { version = "0.14", default-features = false } +darling-56bd22fc3884b12 = { package = "darling", version = "0.20" } +darling-582f2526e08bb6a0 = { package = "darling", version = "0.14" } +darling_core-56bd22fc3884b12 = { package = "darling_core", version = "0.20", default-features = false, features = ["suggestions"] } +darling_core-582f2526e08bb6a0 = { package = "darling_core", version = "0.14", default-features = false, features = ["suggestions"] } +darling_macro-56bd22fc3884b12 = { package = "darling_macro", version = "0.20", default-features = false } +darling_macro-582f2526e08bb6a0 = { package = "darling_macro", version = "0.14", default-features = false } dashmap = { version = "5", default-features = false } data-encoding = { version = "2" } data-encoding-macro = { version = "0.1", default-features = false } data-encoding-macro-internal = { version = "0.1", default-features = false } +datafusion = { version = "23", default-features = false, features = ["crypto_expressions", "unicode_expressions"] } +datafusion-common = { version = "23", features = ["object_store", "parquet"] } +datafusion-execution = { version = "23", default-features = false } +datafusion-expr = { version = "23", default-features = false } +datafusion-optimizer = { version = "23", default-features = false, features = ["crypto_expressions", "unicode_expressions"] } +datafusion-physical-expr = { version = "23", default-features = false, features = ["crypto_expressions", "unicode_expressions"] } +datafusion-row = { version = "23", default-features = false } +datafusion-sql = { version = "23" } datatest-stable = { version = "0.1", default-features = false } debug-ignore = { version = "1", default-features = false } der-3b31131e45eafb45 = { package = "der", version = "0.6", default-features = false, features = ["oid", "pem", "std"] } @@ -917,9 +1032,10 @@ duration-str = { version = "0.5" } dyn-clone = { version = "1", default-features = false } ecdsa-582f2526e08bb6a0 = { package = "ecdsa", version = "0.14", default-features = false, features = ["der", "sign", "verify"] } ecdsa-986da7b5efc2b80e = { package = "ecdsa", version = "0.16", features = ["pem", "signing", "std", "verifying"] } -ed25519 = { version = "1", features = ["alloc", "serde", "zeroize"] } ed25519-consensus = { version = "2" } ed25519-dalek-fiat = { version = "0.1", default-features = false, features = ["fiat_u64_backend", "serde", "std"] } +ed25519-dff4ba8e3ae991db = { package = "ed25519", version = "1", features = ["alloc", "serde", "zeroize"] } +ed25519-f595c2ba2a3f28df = { package = "ed25519", version = "2", default-features = false, features = ["alloc"] } either = { version = "1" } elliptic-curve-594e8ee84c453af0 = { package = "elliptic-curve", version = "0.13", features = ["hash2curve", "hazmat", "pem", "std"] } elliptic-curve-5ef9efb8ec2df382 = { package = "elliptic-curve", version = "0.12", default-features = false, features = ["arithmetic", "digest", "hazmat", "sec1"] } @@ -927,7 +1043,12 @@ encode_unicode-dff4ba8e3ae991db = { package = "encode_unicode", version = "1" } endian-type = { version = "0.1", default-features = false } enum-compat-util = { path = "../../external-crates/move/testing-infra/enum-compat-util", default-features = false } enum_dispatch = { version = "0.3", default-features = false } -ethnum = { version = "1", default-features = false } +envy = { version = "0.4", default-features = false } +equivalent = { version = "1", default-features = false } +ethabi = { version = "18" } +ethbloom = { version = "0.13", default-features = false, features = ["rlp", "serialize", "std"] } +ethereum-types = { version = "0.14", default-features = false, features = ["rlp", "serialize", "std"] } +ethnum = { version = "1", default-features = false, features = ["serde"] } event-listener = { version = "2", default-features = false } expect-test = { version = "1", default-features = false } eyre = { version = "0.6" } @@ -941,10 +1062,13 @@ fdlimit = { version = "0.2", default-features = false } ff-594e8ee84c453af0 = { package = "ff", version = "0.13", default-features = false, features = ["alloc"] } ff-5ef9efb8ec2df382 = { package = "ff", version = "0.12", default-features = false } fiat-crypto = { version = "0.1" } -fixed-hash = { version = "0.7", default-features = false, features = ["std"] } +fixed-hash-c38e5c1d305a1b54 = { package = "fixed-hash", version = "0.8", default-features = false, features = ["std"] } +fixed-hash-ca01ad9e24f5d932 = { package = "fixed-hash", version = "0.7", default-features = false, features = ["std"] } fixedbitset-6f8ce4dd05d13bba = { package = "fixedbitset", version = "0.2", default-features = false } fixedbitset-9fbad63c4bcf4a8f = { package = "fixedbitset", version = "0.4", default-features = false } +flatbuffers = { version = "23", default-features = false } flate2 = { version = "1" } +flex-error = { version = "0.4", default-features = false, features = ["eyre_tracer"] } float-cmp = { version = "0.9" } fnv = { version = "1" } form_urlencoded = { version = "1", default-features = false } @@ -966,7 +1090,7 @@ generic-array = { version = "0.14", default-features = false, features = ["more_ getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["std"] } getrandom-c65f7effa3be6d31 = { package = "getrandom", version = "0.1", default-features = false, features = ["std"] } ghash = { version = "0.5", default-features = false } -gimli = { version = "0.27", default-features = false, features = ["read"] } +gimli-754bda37e0fb3874 = { package = "gimli", version = "0.27", default-features = false, features = ["read"] } git-version = { version = "0.3", default-features = false } git-version-macro = { version = "0.3", default-features = false } glob = { version = "0.3", default-features = false } @@ -983,7 +1107,10 @@ guppy-summaries = { version = "0.7", default-features = false } guppy-workspace-hack = { version = "0.1", default-features = false } h2 = { version = "0.3", default-features = false } hakari = { version = "0.13", default-features = false, features = ["cli-support"] } -half = { version = "1", default-features = false } +half-dff4ba8e3ae991db = { package = "half", version = "1", default-features = false } +half-f595c2ba2a3f28df = { package = "half", version = "2", default-features = false, features = ["num-traits"] } +handlebars = { version = "4" } +hashbrown-582f2526e08bb6a0 = { package = "hashbrown", version = "0.14", default-features = false, features = ["raw"] } hashbrown-594e8ee84c453af0 = { package = "hashbrown", version = "0.13", features = ["raw"] } hashbrown-5ef9efb8ec2df382 = { package = "hashbrown", version = "0.12", features = ["raw"] } hdrhistogram = { version = "7" } @@ -1014,12 +1141,15 @@ if_chain = { version = "1", default-features = false } ignore = { version = "0.4", default-features = false } im = { version = "15", default-features = false } impl-codec = { version = "0.5", default-features = false, features = ["std"] } -impl-serde = { version = "0.3", default-features = false } +impl-rlp = { version = "0.3", default-features = false } +impl-serde-468e82937335b1c9 = { package = "impl-serde", version = "0.3", default-features = false } +impl-serde-9fbad63c4bcf4a8f = { package = "impl-serde", version = "0.4", default-features = false } impl-trait-for-tuples = { version = "0.2", default-features = false } include_dir = { version = "0.7", features = ["glob"] } include_dir_macros = { version = "0.7", default-features = false } indenter = { version = "0.3" } -indexmap = { version = "1", default-features = false, features = ["serde", "std"] } +indexmap-dff4ba8e3ae991db = { package = "indexmap", version = "1", default-features = false, features = ["serde", "std"] } +indexmap-f595c2ba2a3f28df = { package = "indexmap", version = "2" } indicatif = { version = "0.17" } inout = { version = "0.1", default-features = false, features = ["std"] } inquire = { version = "0.6" } @@ -1030,7 +1160,8 @@ internment = { version = "0.5", default-features = false, features = ["arc"] } io-lifetimes = { version = "1" } iri-string = { version = "0.4" } is-terminal = { version = "0.4", default-features = false } -itertools = { version = "0.10" } +itertools-93f6ce9d446188ac = { package = "itertools", version = "0.10" } +itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } itoa = { version = "1", default-features = false } jobserver = { version = "0.1", default-features = false } js-sys = { version = "0.3", default-features = false } @@ -1044,13 +1175,20 @@ jsonrpsee-server = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b jsonrpsee-types = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b300784795f6a64d0fcdf8f03081a9bc38bde8", default-features = false } jsonrpsee-wasm-client = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b300784795f6a64d0fcdf8f03081a9bc38bde8", default-features = false } jsonrpsee-ws-client = { git = "https://github.com/wlmyng/jsonrpsee.git", rev = "b1b300784795f6a64d0fcdf8f03081a9bc38bde8" } -k256 = { version = "0.11", default-features = false, features = ["ecdsa", "keccak256"] } +k256-594e8ee84c453af0 = { package = "k256", version = "0.13" } +k256-a6292c17cd707f01 = { package = "k256", version = "0.11", default-features = false, features = ["ecdsa", "keccak256"] } keccak = { version = "0.1", default-features = false } lazy_static-6f8ce4dd05d13bba = { package = "lazy_static", version = "0.2", default-features = false } lazy_static-dff4ba8e3ae991db = { package = "lazy_static", version = "1", default-features = false, features = ["spin_no_std"] } lazycell = { version = "1", default-features = false } leb128 = { version = "0.2", default-features = false } -lexical-core = { version = "0.7" } +lexical-core-c38e5c1d305a1b54 = { package = "lexical-core", version = "0.8", default-features = false, features = ["parse-floats", "parse-integers", "write-floats", "write-integers"] } +lexical-core-ca01ad9e24f5d932 = { package = "lexical-core", version = "0.7" } +lexical-parse-float = { version = "0.8", default-features = false } +lexical-parse-integer = { version = "0.8", default-features = false } +lexical-util = { version = "0.8", default-features = false, features = ["parse-floats", "parse-integers", "write-floats", "write-integers"] } +lexical-write-float = { version = "0.8", default-features = false } +lexical-write-integer = { version = "0.8", default-features = false } libc = { version = "0.2" } libloading = { version = "0.7", default-features = false } libm = { version = "0.2" } @@ -1061,12 +1199,18 @@ linked-hash-map = { version = "0.5", default-features = false } lock_api = { version = "0.4", default-features = false } log = { version = "0.4", default-features = false, features = ["serde", "std"] } lru = { version = "0.10" } +lz4 = { version = "1", default-features = false } lz4-sys = { version = "1", default-features = false } +mamoru-core = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } +mamoru-sniffer = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } +mamoru-sui-types = { git = "https://github.com/Mamoru-Foundation/mamoru-core", rev = "166958c73193421407b0775a73d31a147b744afb", default-features = false } +maplit = { version = "1", default-features = false } match_opt = { version = "0.1", default-features = false } matchers = { version = "0.1", default-features = false } matchit-ca01ad9e24f5d932 = { package = "matchit", version = "0.7" } matchit-d8f496e17d97b5cb = { package = "matchit", version = "0.5" } -md-5 = { version = "0.9" } +md-5-274715c4dabd11b0 = { package = "md-5", version = "0.9" } +md-5-93f6ce9d446188ac = { package = "md-5", version = "0.10" } memchr = { version = "2", features = ["use_std"] } memoffset-ca01ad9e24f5d932 = { package = "memoffset", version = "0.7" } merlin = { version = "3" } @@ -1079,7 +1223,8 @@ miniz_oxide = { version = "0.6", default-features = false, features = ["with-all mio-c38e5c1d305a1b54 = { package = "mio", version = "0.8", features = ["net", "os-ext"] } mockall = { version = "0.11", default-features = false } mockall_derive = { version = "0.11", default-features = false } -more-asserts = { version = "0.3", default-features = false } +more-asserts-468e82937335b1c9 = { package = "more-asserts", version = "0.3", default-features = false } +more-asserts-6f8ce4dd05d13bba = { package = "more-asserts", version = "0.2", default-features = false } move-abigen = { path = "../../external-crates/move/move-prover/move-abigen", default-features = false } move-abstract-stack = { path = "../../external-crates/move/move-abstract-stack", default-features = false } move-binary-format = { path = "../../external-crates/move/move-binary-format" } @@ -1145,6 +1290,7 @@ num = { version = "0.4" } num-bigint = { version = "0.4", features = ["rand"] } num-bigint-dig = { version = "0.8", default-features = false, features = ["i128", "prime", "u64_digit", "zeroize"] } num-complex = { version = "0.4", default-features = false, features = ["std"] } +num-derive = { version = "0.3", default-features = false } num-integer = { version = "0.1", default-features = false, features = ["i128", "std"] } num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] } num-rational = { version = "0.4", default-features = false, features = ["num-bigint-std", "std"] } @@ -1175,10 +1321,12 @@ parking_lot-5ef9efb8ec2df382 = { package = "parking_lot", version = "0.12" } parking_lot-a6292c17cd707f01 = { package = "parking_lot", version = "0.11" } parking_lot_core-274715c4dabd11b0 = { package = "parking_lot_core", version = "0.9", default-features = false } parking_lot_core-c38e5c1d305a1b54 = { package = "parking_lot_core", version = "0.8", default-features = false } +parquet = { version = "37", features = ["async"] } parse-zoneinfo = { version = "0.3", default-features = false } paste = { version = "1", default-features = false } pathdiff = { version = "0.2", default-features = false, features = ["camino"] } -pbkdf2 = { version = "0.11", default-features = false } +pbkdf2-5ef9efb8ec2df382 = { package = "pbkdf2", version = "0.12", default-features = false, features = ["hmac"] } +pbkdf2-a6292c17cd707f01 = { package = "pbkdf2", version = "0.11", default-features = false } peeking_take_while = { version = "0.1", default-features = false } pem = { version = "1", default-features = false } pem-rfc7468-3b31131e45eafb45 = { package = "pem-rfc7468", version = "0.6", default-features = false, features = ["alloc"] } @@ -1219,7 +1367,8 @@ prettyplease-6f8ce4dd05d13bba = { package = "prettyplease", version = "0.2", def prettyplease-c65f7effa3be6d31 = { package = "prettyplease", version = "0.1", default-features = false } prettytable-rs = { version = "0.10" } primeorder = { version = "0.13", default-features = false } -primitive-types = { version = "0.10", features = ["impl-serde"] } +primitive-types-5ef9efb8ec2df382 = { package = "primitive-types", version = "0.12", default-features = false, features = ["byteorder", "rlp", "rustc-hex", "serde_no_std", "std"] } +primitive-types-93f6ce9d446188ac = { package = "primitive-types", version = "0.10", features = ["impl-serde"] } proc-macro-crate = { version = "1", default-features = false } proc-macro-error = { version = "1" } proc-macro-error-attr = { version = "1", default-features = false } @@ -1272,6 +1421,9 @@ rfc6979-468e82937335b1c9 = { package = "rfc6979", version = "0.3", default-featu rfc6979-9fbad63c4bcf4a8f = { package = "rfc6979", version = "0.4", default-features = false } ring = { version = "0.16" } ripemd = { version = "0.1", default-features = false } +rlp = { version = "0.5", default-features = false } +rmp = { version = "0.8" } +rmp-serde = { version = "1", default-features = false } roaring = { version = "0.10", default-features = false } rocksdb = { version = "0.21", default-features = false, features = ["lz4", "multi-threaded-cf", "snappy", "zlib", "zstd"] } ron = { version = "0.8" } @@ -1313,13 +1465,14 @@ semver-a6292c17cd707f01 = { package = "semver", version = "0.11" } semver-dff4ba8e3ae991db = { package = "semver", version = "1", features = ["serde"] } semver-parser = { version = "0.10", default-features = false } send_wrapper = { version = "0.4", default-features = false } +seq-macro = { version = "0.3", default-features = false } serde-c38e5c1d305a1b54 = { package = "serde", version = "0.8" } serde-dff4ba8e3ae991db = { package = "serde", version = "1", features = ["alloc", "derive", "rc"] } serde-hjson = { version = "0.9", default-features = false } serde-name = { version = "0.2", default-features = false } serde-reflection = { version = "0.3", default-features = false } serde-value = { version = "0.7", default-features = false } -serde_bytes = { version = "0.11" } +serde_bytes = { version = "0.11", features = ["alloc"] } serde_derive = { version = "1" } serde_derive_internals = { version = "0.26", default-features = false } serde_json = { version = "1", features = ["alloc", "arbitrary_precision", "preserve_order", "raw_value", "unbounded_depth"] } @@ -1328,8 +1481,10 @@ serde_repr = { version = "0.1", default-features = false } serde_spanned = { version = "0.6", default-features = false, features = ["serde"] } serde_test = { version = "1", default-features = false } serde_urlencoded = { version = "0.7", default-features = false } -serde_with = { version = "2", features = ["hex"] } -serde_with_macros = { version = "2", default-features = false } +serde_with-7b89eefb6aaa9bf3 = { package = "serde_with", version = "3", features = ["base64"] } +serde_with-f595c2ba2a3f28df = { package = "serde_with", version = "2", features = ["hex"] } +serde_with_macros-7b89eefb6aaa9bf3 = { package = "serde_with_macros", version = "3", default-features = false } +serde_with_macros-f595c2ba2a3f28df = { package = "serde_with_macros", version = "2", default-features = false } serde_yaml-274715c4dabd11b0 = { package = "serde_yaml", version = "0.9", default-features = false } serde_yaml-c38e5c1d305a1b54 = { package = "serde_yaml", version = "0.8", default-features = false } sha-1-274715c4dabd11b0 = { package = "sha-1", version = "0.9", default-features = false } @@ -1352,7 +1507,7 @@ sized-chunks = { version = "0.6" } slab = { version = "0.4" } slip10_ed25519 = { version = "0.1", default-features = false } slug = { version = "0.1", default-features = false } -smallvec = { version = "1", default-features = false } +smallvec = { version = "1", default-features = false, features = ["union"] } snap = { version = "1", default-features = false } socket2-9fbad63c4bcf4a8f = { package = "socket2", version = "0.4", default-features = false, features = ["all"] } socket2-d8f496e17d97b5cb = { package = "socket2", version = "0.5", default-features = false } @@ -1360,6 +1515,8 @@ soketto = { version = "0.7", features = ["http"] } spin = { version = "0.5", default-features = false } spki-3b31131e45eafb45 = { package = "spki", version = "0.6", default-features = false, features = ["pem", "std"] } spki-ca01ad9e24f5d932 = { package = "spki", version = "0.7", default-features = false, features = ["pem", "std"] } +sqlparser = { version = "0.33", features = ["visitor"] } +sqlparser_derive = { version = "0.1", default-features = false } stable_deref_trait = { version = "1" } static_assertions = { version = "1", default-features = false } strip-ansi-escapes = { version = "0.1", default-features = false } @@ -1371,6 +1528,7 @@ strum = { version = "0.24", features = ["derive"] } strum_macros = { version = "0.24", default-features = false } subprocess = { version = "0.2", default-features = false } subtle = { version = "2", default-features = false, features = ["i128", "std"] } +subtle-encoding = { version = "0.5", features = ["bech32-preview"] } subtle-ng = { version = "2", default-features = false, features = ["std"] } syn-3575ec1268b04181 = { package = "syn", version = "0.15", features = ["extra-traits", "full", "visit"] } syn-dff4ba8e3ae991db = { package = "syn", version = "1", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] } @@ -1383,6 +1541,8 @@ tap = { version = "1", default-features = false } target-lexicon = { version = "0.12", features = ["std"] } target-spec = { version = "1", default-features = false, features = ["summaries"] } tempfile = { version = "3", default-features = false } +tendermint = { version = "0.32", features = ["secp256k1"] } +tendermint-proto = { version = "0.32", default-features = false } tera = { version = "1" } term = { version = "0.7" } termcolor = { version = "1", default-features = false } @@ -1397,12 +1557,14 @@ thiserror = { version = "1", default-features = false } thiserror-impl = { version = "1", default-features = false } thread_local = { version = "1", default-features = false } threadpool = { version = "1", default-features = false } +thrift = { version = "0.17", default-features = false } time-468e82937335b1c9 = { package = "time", version = "0.3", features = ["formatting", "macros", "parsing"] } time-c65f7effa3be6d31 = { package = "time", version = "0.1", default-features = false } time-core = { version = "0.1", default-features = false } time-macros = { version = "0.2", default-features = false, features = ["formatting", "parsing"] } tint = { version = "1", default-features = false } tiny-bip39 = { version = "1" } +tiny-keccak = { version = "2", features = ["keccak"] } tinytemplate = { version = "1", default-features = false } tinyvec = { version = "1", features = ["alloc"] } tinyvec_macros = { version = "0.1", default-features = false } @@ -1411,6 +1573,7 @@ tokio-io-timeout = { version = "1", default-features = false } tokio-macros = { version = "2", default-features = false } tokio-retry = { version = "0.3", default-features = false } tokio-rustls-2b5c6dc72f624058 = { package = "tokio-rustls", version = "0.23" } +tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } tokio-stream = { version = "0.1", features = ["net", "sync"] } tokio-util = { version = "0.7", features = ["codec", "compat", "io"] } toml-ca01ad9e24f5d932 = { package = "toml", version = "0.7", features = ["preserve_order"] } @@ -1420,12 +1583,15 @@ toml_datetime-d8f496e17d97b5cb = { package = "toml_datetime", version = "0.5", d toml_edit-3575ec1268b04181 = { package = "toml_edit", version = "0.15" } toml_edit-582f2526e08bb6a0 = { package = "toml_edit", version = "0.14", features = ["easy"] } toml_edit-cdcf2f9584511fe6 = { package = "toml_edit", version = "0.19", features = ["serde"] } -tonic = { version = "0.8", features = ["tls"] } -tonic-build = { version = "0.8" } +tonic-274715c4dabd11b0 = { package = "tonic", version = "0.9", features = ["tls-roots"] } +tonic-build-274715c4dabd11b0 = { package = "tonic-build", version = "0.9" } +tonic-build-c38e5c1d305a1b54 = { package = "tonic-build", version = "0.8" } +tonic-c38e5c1d305a1b54 = { package = "tonic", version = "0.8", features = ["tls"] } tonic-health = { version = "0.8" } toolchain_find = { version = "0.2", default-features = false } tower = { version = "0.4", features = ["full"] } -tower-http = { version = "0.3", features = ["full"] } +tower-http-468e82937335b1c9 = { package = "tower-http", version = "0.3", features = ["full"] } +tower-http-9fbad63c4bcf4a8f = { package = "tower-http", version = "0.4", features = ["map-response-body", "util"] } tower-layer = { version = "0.3", default-features = false } tower-service = { version = "0.3", default-features = false } tracing = { version = "0.1", features = ["log"] } @@ -1485,6 +1651,10 @@ wasm-bindgen-futures = { version = "0.4", default-features = false } wasm-bindgen-macro = { version = "0.2", default-features = false, features = ["spans"] } wasm-bindgen-macro-support = { version = "0.2", default-features = false, features = ["spans"] } wasm-bindgen-shared = { version = "0.2", default-features = false } +wasm-encoder = { version = "0.25", default-features = false } +wasmer = { version = "3" } +wast = { version = "56" } +wat = { version = "1", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["AddEventListenerOptions", "BinaryType", "Blob", "CloseEvent", "CloseEventInit", "Document", "ErrorEvent", "FileReader", "History", "HtmlHeadElement", "Location", "MessageEvent", "ProgressEvent", "WebSocket", "Window"] } webpki = { version = "0.22", default-features = false, features = ["std"] } webpki-roots = { version = "0.22", default-features = false } @@ -1505,15 +1675,27 @@ zstd-sys = { version = "2", features = ["std"] } [target.aarch64-apple-darwin.dependencies] ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8" } +bytecheck = { version = "0.6", default-features = false, features = ["std"] } core-foundation = { version = "0.9", default-features = false } core-foundation-sys = { version = "0.8", default-features = false } +corosensei = { version = "0.1" } cpp_demangle = { version = "0.4" } cpufeatures = { version = "0.2", default-features = false } +cranelift-bforest = { version = "0.86", default-features = false } +cranelift-codegen = { version = "0.86", default-features = false, features = ["arm64", "std", "unwind", "x86"] } +cranelift-codegen-shared = { version = "0.86", default-features = false } +cranelift-entity = { version = "0.86", default-features = false } +cranelift-frontend = { version = "0.86", default-features = false, features = ["std"] } debugid = { version = "0.8", default-features = false } encoding_rs = { version = "0.8" } +enum-iterator = { version = "0.7", default-features = false } +enumset = { version = "1", default-features = false } errno-468e82937335b1c9 = { package = "errno", version = "0.3", default-features = false } errno-6f8ce4dd05d13bba = { package = "errno", version = "0.2", default-features = false } +fallible-iterator = { version = "0.2", default-features = false, features = ["std"] } findshlibs = { version = "0.10", default-features = false } +fxhash = { version = "0.2", default-features = false } +gimli-2f80eeee3b1b6c7e = { package = "gimli", version = "0.26" } hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", default-features = false } iana-time-zone = { version = "0.1", default-features = false, features = ["fallback"] } inferno = { version = "0.11", default-features = false, features = ["nameattr"] } @@ -1530,34 +1712,63 @@ nix-adf3d7031871b0af = { package = "nix", version = "0.24", default-features = f num-format = { version = "0.4", default-features = false } once_cell = { version = "1", default-features = false, features = ["unstable"] } pprof = { version = "0.11", features = ["criterion", "flamegraph", "frame-pointer"] } +ptr_meta = { version = "0.1", default-features = false, features = ["std"] } quick-xml = { version = "0.26", default-features = false } rand_chacha-6f8ce4dd05d13bba = { package = "rand_chacha", version = "0.2", default-features = false, features = ["std"] } +regalloc2 = { version = "0.3", features = ["checker"] } +region = { version = "3", default-features = false } +rend = { version = "0.4", default-features = false, features = ["std"] } rgb = { version = "0.8" } +rkyv = { version = "0.7", features = ["indexmap"] } rustix-4e55305914c60c55 = { package = "rustix", version = "0.36", features = ["fs"] } rustix-d736d0ac4424f0f1 = { package = "rustix", version = "0.37", features = ["termios"] } +seahash = { version = "4" } security-framework = { version = "2" } security-framework-sys = { version = "2", default-features = false, features = ["OSX_10_9"] } signal-hook = { version = "0.3" } signal-hook-mio = { version = "0.2", default-features = false, features = ["support-v0_7", "support-v0_8"] } signal-hook-registry = { version = "1", default-features = false } +simdutf8 = { version = "0.1", default-features = false, features = ["std"] } +slice-group-by = { version = "0.3" } str_stack = { version = "0.1", default-features = false } symbolic-common = { version = "10", default-features = false } symbolic-demangle = { version = "10", default-features = false, features = ["cpp", "rust"] } -tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } +wasmer-compiler = { version = "3", features = ["compiler"] } +wasmer-compiler-cranelift = { version = "3" } +wasmer-types = { version = "3" } +wasmer-vm = { version = "3" } +wasmparser = { version = "0.83", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["Worker"] } [target.aarch64-apple-darwin.build-dependencies] ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8" } autotools = { version = "0.2", default-features = false } +bytecheck = { version = "0.6", default-features = false, features = ["std"] } +bytecheck_derive = { version = "0.6" } core-foundation = { version = "0.9", default-features = false } core-foundation-sys = { version = "0.8", default-features = false } +corosensei = { version = "0.1" } cpp_demangle = { version = "0.4" } cpufeatures = { version = "0.2", default-features = false } +cranelift-bforest = { version = "0.86", default-features = false } +cranelift-codegen = { version = "0.86", default-features = false, features = ["arm64", "std", "unwind", "x86"] } +cranelift-codegen-meta = { version = "0.86", default-features = false } +cranelift-codegen-shared = { version = "0.86", default-features = false } +cranelift-entity = { version = "0.86", default-features = false } +cranelift-frontend = { version = "0.86", default-features = false, features = ["std"] } +cranelift-isle = { version = "0.86" } debugid = { version = "0.8", default-features = false } encoding_rs = { version = "0.8" } +enum-iterator = { version = "0.7", default-features = false } +enum-iterator-derive = { version = "0.7", default-features = false } +enumset = { version = "1", default-features = false } +enumset_derive = { version = "0.6", default-features = false } errno-468e82937335b1c9 = { package = "errno", version = "0.3", default-features = false } errno-6f8ce4dd05d13bba = { package = "errno", version = "0.2", default-features = false } +fallible-iterator = { version = "0.2", default-features = false, features = ["std"] } findshlibs = { version = "0.10", default-features = false } +fxhash = { version = "0.2", default-features = false } +gimli-2f80eeee3b1b6c7e = { package = "gimli", version = "0.26" } hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", default-features = false } iana-time-zone = { version = "0.1", default-features = false, features = ["fallback"] } inferno = { version = "0.11", default-features = false, features = ["nameattr"] } @@ -1575,29 +1786,56 @@ num-format = { version = "0.4", default-features = false } once_cell = { version = "1", default-features = false, features = ["unstable"] } pprof = { version = "0.11", features = ["criterion", "flamegraph", "frame-pointer"] } protobuf-src = { version = "1", default-features = false } +ptr_meta = { version = "0.1", default-features = false, features = ["std"] } +ptr_meta_derive = { version = "0.1", default-features = false } quick-xml = { version = "0.26", default-features = false } rand_chacha-6f8ce4dd05d13bba = { package = "rand_chacha", version = "0.2", default-features = false, features = ["std"] } +regalloc2 = { version = "0.3", features = ["checker"] } +region = { version = "3", default-features = false } +rend = { version = "0.4", default-features = false, features = ["std"] } rgb = { version = "0.8" } +rkyv = { version = "0.7", features = ["indexmap"] } +rkyv_derive = { version = "0.7" } rustix-4e55305914c60c55 = { package = "rustix", version = "0.36", features = ["fs"] } rustix-d736d0ac4424f0f1 = { package = "rustix", version = "0.37", features = ["termios"] } +seahash = { version = "4" } security-framework = { version = "2" } security-framework-sys = { version = "2", default-features = false, features = ["OSX_10_9"] } signal-hook = { version = "0.3" } signal-hook-mio = { version = "0.2", default-features = false, features = ["support-v0_7", "support-v0_8"] } signal-hook-registry = { version = "1", default-features = false } +simdutf8 = { version = "0.1", default-features = false, features = ["std"] } +slice-group-by = { version = "0.3" } str_stack = { version = "0.1", default-features = false } symbolic-common = { version = "10", default-features = false } symbolic-demangle = { version = "10", default-features = false, features = ["cpp", "rust"] } -tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } +wasmer-compiler = { version = "3", features = ["compiler"] } +wasmer-compiler-cranelift = { version = "3" } +wasmer-derive = { version = "3", default-features = false } +wasmer-types = { version = "3" } +wasmer-vm = { version = "3" } +wasmparser = { version = "0.83", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["Worker"] } [target.x86_64-unknown-linux-gnu.dependencies] ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8" } +bytecheck = { version = "0.6", default-features = false, features = ["std"] } +corosensei = { version = "0.1" } cpp_demangle = { version = "0.4" } cpufeatures = { version = "0.2", default-features = false } +cranelift-bforest = { version = "0.86", default-features = false } +cranelift-codegen = { version = "0.86", default-features = false, features = ["arm64", "std", "unwind", "x86"] } +cranelift-codegen-shared = { version = "0.86", default-features = false } +cranelift-entity = { version = "0.86", default-features = false } +cranelift-frontend = { version = "0.86", default-features = false, features = ["std"] } debugid = { version = "0.8", default-features = false } encoding_rs = { version = "0.8" } +enum-iterator = { version = "0.7", default-features = false } +enumset = { version = "1", default-features = false } +fallible-iterator = { version = "0.2", default-features = false, features = ["std"] } findshlibs = { version = "0.10", default-features = false } +fxhash = { version = "0.2", default-features = false } +gimli-2f80eeee3b1b6c7e = { package = "gimli", version = "0.26" } hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", default-features = false } iana-time-zone = { version = "0.1", default-features = false, features = ["fallback"] } inferno = { version = "0.11", default-features = false, features = ["nameattr"] } @@ -1616,29 +1854,58 @@ num-format = { version = "0.4", default-features = false } once_cell = { version = "1", default-features = false, features = ["unstable"] } openssl-probe = { version = "0.1", default-features = false } pprof = { version = "0.11", features = ["criterion", "flamegraph", "frame-pointer"] } +ptr_meta = { version = "0.1", default-features = false, features = ["std"] } quick-xml = { version = "0.26", default-features = false } rand_chacha-6f8ce4dd05d13bba = { package = "rand_chacha", version = "0.2", default-features = false, features = ["std"] } raw-cpuid = { version = "10", default-features = false } +regalloc2 = { version = "0.3", features = ["checker"] } +region = { version = "3", default-features = false } +rend = { version = "0.4", default-features = false, features = ["std"] } rgb = { version = "0.8" } +rkyv = { version = "0.7", features = ["indexmap"] } rustix-4e55305914c60c55 = { package = "rustix", version = "0.36", features = ["fs"] } rustix-d736d0ac4424f0f1 = { package = "rustix", version = "0.37", features = ["termios"] } +seahash = { version = "4" } signal-hook = { version = "0.3" } signal-hook-mio = { version = "0.2", default-features = false, features = ["support-v0_7", "support-v0_8"] } signal-hook-registry = { version = "1", default-features = false } +simdutf8 = { version = "0.1", default-features = false, features = ["std"] } +slice-group-by = { version = "0.3" } str_stack = { version = "0.1", default-features = false } symbolic-common = { version = "10", default-features = false } symbolic-demangle = { version = "10", default-features = false, features = ["cpp", "rust"] } -tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } +wasmer-compiler = { version = "3", features = ["compiler"] } +wasmer-compiler-cranelift = { version = "3" } +wasmer-types = { version = "3" } +wasmer-vm = { version = "3" } +wasmparser = { version = "0.83", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["Worker"] } [target.x86_64-unknown-linux-gnu.build-dependencies] ahash-c38e5c1d305a1b54 = { package = "ahash", version = "0.8" } autotools = { version = "0.2", default-features = false } +bytecheck = { version = "0.6", default-features = false, features = ["std"] } +bytecheck_derive = { version = "0.6" } +corosensei = { version = "0.1" } cpp_demangle = { version = "0.4" } cpufeatures = { version = "0.2", default-features = false } +cranelift-bforest = { version = "0.86", default-features = false } +cranelift-codegen = { version = "0.86", default-features = false, features = ["arm64", "std", "unwind", "x86"] } +cranelift-codegen-meta = { version = "0.86", default-features = false } +cranelift-codegen-shared = { version = "0.86", default-features = false } +cranelift-entity = { version = "0.86", default-features = false } +cranelift-frontend = { version = "0.86", default-features = false, features = ["std"] } +cranelift-isle = { version = "0.86" } debugid = { version = "0.8", default-features = false } encoding_rs = { version = "0.8" } +enum-iterator = { version = "0.7", default-features = false } +enum-iterator-derive = { version = "0.7", default-features = false } +enumset = { version = "1", default-features = false } +enumset_derive = { version = "0.6", default-features = false } +fallible-iterator = { version = "0.2", default-features = false, features = ["std"] } findshlibs = { version = "0.10", default-features = false } +fxhash = { version = "0.2", default-features = false } +gimli-2f80eeee3b1b6c7e = { package = "gimli", version = "0.26" } hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", default-features = false } iana-time-zone = { version = "0.1", default-features = false, features = ["fallback"] } inferno = { version = "0.11", default-features = false, features = ["nameattr"] } @@ -1658,81 +1925,160 @@ once_cell = { version = "1", default-features = false, features = ["unstable"] } openssl-probe = { version = "0.1", default-features = false } pprof = { version = "0.11", features = ["criterion", "flamegraph", "frame-pointer"] } protobuf-src = { version = "1", default-features = false } +ptr_meta = { version = "0.1", default-features = false, features = ["std"] } +ptr_meta_derive = { version = "0.1", default-features = false } quick-xml = { version = "0.26", default-features = false } rand_chacha-6f8ce4dd05d13bba = { package = "rand_chacha", version = "0.2", default-features = false, features = ["std"] } raw-cpuid = { version = "10", default-features = false } +regalloc2 = { version = "0.3", features = ["checker"] } +region = { version = "3", default-features = false } +rend = { version = "0.4", default-features = false, features = ["std"] } rgb = { version = "0.8" } +rkyv = { version = "0.7", features = ["indexmap"] } +rkyv_derive = { version = "0.7" } rustix-4e55305914c60c55 = { package = "rustix", version = "0.36", features = ["fs"] } rustix-d736d0ac4424f0f1 = { package = "rustix", version = "0.37", features = ["termios"] } +seahash = { version = "4" } signal-hook = { version = "0.3" } signal-hook-mio = { version = "0.2", default-features = false, features = ["support-v0_7", "support-v0_8"] } signal-hook-registry = { version = "1", default-features = false } +simdutf8 = { version = "0.1", default-features = false, features = ["std"] } +slice-group-by = { version = "0.3" } str_stack = { version = "0.1", default-features = false } symbolic-common = { version = "10", default-features = false } symbolic-demangle = { version = "10", default-features = false, features = ["cpp", "rust"] } -tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } +wasmer-compiler = { version = "3", features = ["compiler"] } +wasmer-compiler-cranelift = { version = "3" } +wasmer-derive = { version = "3", default-features = false } +wasmer-types = { version = "3" } +wasmer-vm = { version = "3" } +wasmparser = { version = "0.83", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["Worker"] } [target.x86_64-pc-windows-msvc.dependencies] anstyle-wincon = { version = "1", default-features = false } +bytecheck = { version = "0.6", default-features = false, features = ["std"] } clipboard-win = { version = "4", default-features = false } +corosensei = { version = "0.1" } cpufeatures = { version = "0.2", default-features = false } +cranelift-bforest = { version = "0.86", default-features = false } +cranelift-codegen = { version = "0.86", default-features = false, features = ["arm64", "std", "unwind", "x86"] } +cranelift-codegen-shared = { version = "0.86", default-features = false } +cranelift-entity = { version = "0.86", default-features = false } +cranelift-frontend = { version = "0.86", default-features = false, features = ["std"] } crossterm_winapi-274715c4dabd11b0 = { package = "crossterm_winapi", version = "0.9", default-features = false } crossterm_winapi-c38e5c1d305a1b54 = { package = "crossterm_winapi", version = "0.8", default-features = false } encode_unicode-468e82937335b1c9 = { package = "encode_unicode", version = "0.3" } encoding_rs = { version = "0.8" } +enum-iterator = { version = "0.7", default-features = false } +enumset = { version = "1", default-features = false } error-code = { version = "2", default-features = false } +fallible-iterator = { version = "0.2", default-features = false, features = ["std"] } +fxhash = { version = "0.2", default-features = false } +gimli-2f80eeee3b1b6c7e = { package = "gimli", version = "0.26" } hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", default-features = false } ipnet = { version = "2" } +memmap2 = { version = "0.5", default-features = false } +memoffset-3b31131e45eafb45 = { package = "memoffset", version = "0.6" } ntapi = { version = "0.4" } once_cell = { version = "1", default-features = false, features = ["unstable"] } output_vt100 = { version = "0.1", default-features = false } +ptr_meta = { version = "0.1", default-features = false, features = ["std"] } rand_chacha-6f8ce4dd05d13bba = { package = "rand_chacha", version = "0.2", default-features = false, features = ["std"] } raw-cpuid = { version = "10", default-features = false } +regalloc2 = { version = "0.3", features = ["checker"] } +region = { version = "3", default-features = false } +rend = { version = "0.4", default-features = false, features = ["std"] } +rkyv = { version = "0.7", features = ["indexmap"] } schannel = { version = "0.1", default-features = false } +seahash = { version = "4" } +simdutf8 = { version = "0.1", default-features = false, features = ["std"] } +slice-group-by = { version = "0.3" } str-buf = { version = "1", default-features = false } -tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } +wasmer-compiler = { version = "3", features = ["compiler"] } +wasmer-compiler-cranelift = { version = "3" } +wasmer-types = { version = "3" } +wasmer-vm = { version = "3" } +wasmparser = { version = "0.83", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["Worker"] } widestring = { version = "0.5" } winapi = { version = "0.3", default-features = false, features = ["basetsd", "cfg", "combaseapi", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "heapapi", "ifdef", "impl-debug", "impl-default", "in6addr", "inaddr", "ioapiset", "iphlpapi", "knownfolders", "libloaderapi", "lmaccess", "lmapibuf", "lmcons", "memoryapi", "minwinbase", "minwindef", "namedpipeapi", "netioapi", "ntdef", "ntlsa", "ntsecapi", "ntstatus", "objbase", "objidl", "oleauto", "pdh", "powerbase", "processenv", "processthreadsapi", "profileapi", "psapi", "rpcdce", "securitybaseapi", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "sysinfoapi", "timezoneapi", "wbemcli", "winbase", "wincon", "windef", "winerror", "winioctl", "winnt", "winreg", "winsock2", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] } winapi-util = { version = "0.1", default-features = false } windows-sys-b32c9ddb6d93a9d2 = { package = "windows-sys", version = "0.42", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security_Authentication_Identity", "Win32_Security_Credentials", "Win32_Security_Cryptography", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Input_KeyboardAndMouse"] } windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming"] } +windows-sys-f0a1752353b51542 = { package = "windows-sys", version = "0.33", features = ["Win32_Foundation", "Win32_System_Diagnostics_Debug", "Win32_System_Kernel", "Win32_System_Memory", "Win32_System_SystemInformation", "Win32_System_Threading"] } windows-targets = { version = "0.48", default-features = false } windows_x86_64_msvc-b32c9ddb6d93a9d2 = { package = "windows_x86_64_msvc", version = "0.42", default-features = false } windows_x86_64_msvc-c8eced492e86ede7 = { package = "windows_x86_64_msvc", version = "0.48", default-features = false } +windows_x86_64_msvc-f0a1752353b51542 = { package = "windows_x86_64_msvc", version = "0.33", default-features = false } winreg = { version = "0.10", default-features = false } [target.x86_64-pc-windows-msvc.build-dependencies] anstyle-wincon = { version = "1", default-features = false } +bytecheck = { version = "0.6", default-features = false, features = ["std"] } +bytecheck_derive = { version = "0.6" } clipboard-win = { version = "4", default-features = false } +corosensei = { version = "0.1" } cpufeatures = { version = "0.2", default-features = false } +cranelift-bforest = { version = "0.86", default-features = false } +cranelift-codegen = { version = "0.86", default-features = false, features = ["arm64", "std", "unwind", "x86"] } +cranelift-codegen-meta = { version = "0.86", default-features = false } +cranelift-codegen-shared = { version = "0.86", default-features = false } +cranelift-entity = { version = "0.86", default-features = false } +cranelift-frontend = { version = "0.86", default-features = false, features = ["std"] } +cranelift-isle = { version = "0.86" } crossterm_winapi-274715c4dabd11b0 = { package = "crossterm_winapi", version = "0.9", default-features = false } crossterm_winapi-c38e5c1d305a1b54 = { package = "crossterm_winapi", version = "0.8", default-features = false } ctor = { version = "0.1", default-features = false } encode_unicode-468e82937335b1c9 = { package = "encode_unicode", version = "0.3" } encoding_rs = { version = "0.8" } +enum-iterator = { version = "0.7", default-features = false } +enum-iterator-derive = { version = "0.7", default-features = false } +enumset = { version = "1", default-features = false } +enumset_derive = { version = "0.6", default-features = false } error-code = { version = "2", default-features = false } +fallible-iterator = { version = "0.2", default-features = false, features = ["std"] } +fxhash = { version = "0.2", default-features = false } +gimli-2f80eeee3b1b6c7e = { package = "gimli", version = "0.26" } hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", default-features = false } ipnet = { version = "2" } +memmap2 = { version = "0.5", default-features = false } +memoffset-3b31131e45eafb45 = { package = "memoffset", version = "0.6" } ntapi = { version = "0.4" } once_cell = { version = "1", default-features = false, features = ["unstable"] } output_vt100 = { version = "0.1", default-features = false } +ptr_meta = { version = "0.1", default-features = false, features = ["std"] } +ptr_meta_derive = { version = "0.1", default-features = false } rand_chacha-6f8ce4dd05d13bba = { package = "rand_chacha", version = "0.2", default-features = false, features = ["std"] } raw-cpuid = { version = "10", default-features = false } +regalloc2 = { version = "0.3", features = ["checker"] } +region = { version = "3", default-features = false } +rend = { version = "0.4", default-features = false, features = ["std"] } +rkyv = { version = "0.7", features = ["indexmap"] } +rkyv_derive = { version = "0.7" } schannel = { version = "0.1", default-features = false } +seahash = { version = "4" } +simdutf8 = { version = "0.1", default-features = false, features = ["std"] } +slice-group-by = { version = "0.3" } str-buf = { version = "1", default-features = false } -tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" } vcpkg = { version = "0.2", default-features = false } +wasmer-compiler = { version = "3", features = ["compiler"] } +wasmer-compiler-cranelift = { version = "3" } +wasmer-derive = { version = "3", default-features = false } +wasmer-types = { version = "3" } +wasmer-vm = { version = "3" } +wasmparser = { version = "0.83", default-features = false } web-sys = { version = "0.3", default-features = false, features = ["Worker"] } widestring = { version = "0.5" } winapi = { version = "0.3", default-features = false, features = ["basetsd", "cfg", "combaseapi", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "heapapi", "ifdef", "impl-debug", "impl-default", "in6addr", "inaddr", "ioapiset", "iphlpapi", "knownfolders", "libloaderapi", "lmaccess", "lmapibuf", "lmcons", "memoryapi", "minwinbase", "minwindef", "namedpipeapi", "netioapi", "ntdef", "ntlsa", "ntsecapi", "ntstatus", "objbase", "objidl", "oleauto", "pdh", "powerbase", "processenv", "processthreadsapi", "profileapi", "psapi", "rpcdce", "securitybaseapi", "shellapi", "shlobj", "std", "stringapiset", "synchapi", "sysinfoapi", "timezoneapi", "wbemcli", "winbase", "wincon", "windef", "winerror", "winioctl", "winnt", "winreg", "winsock2", "winuser", "ws2ipdef", "ws2tcpip", "wtypesbase"] } winapi-util = { version = "0.1", default-features = false } windows-sys-b32c9ddb6d93a9d2 = { package = "windows-sys", version = "0.42", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security_Authentication_Identity", "Win32_Security_Credentials", "Win32_Security_Cryptography", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Input_KeyboardAndMouse"] } windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", features = ["Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming"] } +windows-sys-f0a1752353b51542 = { package = "windows-sys", version = "0.33", features = ["Win32_Foundation", "Win32_System_Diagnostics_Debug", "Win32_System_Kernel", "Win32_System_Memory", "Win32_System_SystemInformation", "Win32_System_Threading"] } windows-targets = { version = "0.48", default-features = false } windows_x86_64_msvc-b32c9ddb6d93a9d2 = { package = "windows_x86_64_msvc", version = "0.42", default-features = false } windows_x86_64_msvc-c8eced492e86ede7 = { package = "windows_x86_64_msvc", version = "0.48", default-features = false } +windows_x86_64_msvc-f0a1752353b51542 = { package = "windows_x86_64_msvc", version = "0.33", default-features = false } winreg = { version = "0.10", default-features = false } ### END HAKARI SECTION diff --git a/crates/x/src/lint.rs b/crates/x/src/lint.rs index c13c92e6ac0cc7..6f75e73246d0e3 100644 --- a/crates/x/src/lint.rs +++ b/crates/x/src/lint.rs @@ -12,7 +12,9 @@ use nexlint_lints::{ DirectDepDupsConfig, DirectDuplicateGitDependencies, }, }; + static IGNORE_DIR: &str = "external-crates/"; +static IGNORE_DIR2: &str = "crates/mamoru-sui-sniffer/"; static LICENSE_HEADER: &str = "Copyright (c) Mysten Labs, Inc.\n\ SPDX-License-Identifier: Apache-2.0\n\ "; @@ -131,6 +133,10 @@ pub fn handle_lint_results_exclude_external_crate_checks( if path.starts_with(IGNORE_DIR) && source.name() == "license-header" { continue; } + + if path.starts_with(IGNORE_DIR2) && source.name() == "license-header" { + continue; + } } println!( "[{}] [{}] [{}]: {}\n", diff --git a/docker/sui-node/Dockerfile b/docker/sui-node/Dockerfile index 2e866b187c0d36..fe2e62bbe612ad 100644 --- a/docker/sui-node/Dockerfile +++ b/docker/sui-node/Dockerfile @@ -1,7 +1,11 @@ FROM rust:1.70.0 AS chef ARG PROFILE=release WORKDIR sui -RUN apt-get update && apt-get install -y cmake clang +RUN apt-get update && apt-get install -y cmake clang protobuf-compiler + +COPY root-config /root/ +RUN sed 's|/home/runner|/root|g' -i.bak /root/.ssh/config +ENV CARGO_NET_GIT_FETCH_WITH_CLI=true # For now disable caching @@ -16,7 +20,7 @@ RUN apt-get update && apt-get install -y cmake clang # FROM chef AS planner # COPY Cargo.toml Cargo.lock ./ # COPY crates/workspace-hack crates/workspace-hack -# RUN sed -i '/crates\/workspace-hack/b; /crates/d; /narwhal/d' Cargo.toml \ +# RUN --mount=type=ssh sed -i '/crates\/workspace-hack/b; /crates/d; /narwhal/d' Cargo.toml \ # && cargo metadata -q >/dev/null # Build and cache all dependencies. @@ -24,12 +28,13 @@ RUN apt-get update && apt-get install -y cmake clang # In a fresh layer, copy in the "plan" generated by the planner # and run `cargo build` in order to create a caching Docker layer # with all dependencies built. -FROM chef AS builder +FROM chef AS builder + ARG PROFILE=release # COPY --from=planner /sui/Cargo.toml Cargo.toml # COPY --from=planner /sui/Cargo.lock Cargo.lock # COPY --from=planner /sui/crates/workspace-hack crates/workspace-hack -# RUN cargo build --profile $PROFILE +# RUN --mount=type=ssh cargo build --profile $PROFILE # Build application # @@ -42,7 +47,7 @@ COPY crates crates COPY sui-execution sui-execution COPY narwhal narwhal COPY external-crates external-crates -RUN cargo build --profile $PROFILE --bin sui-node +RUN --mount=type=ssh cargo build --profile $PROFILE --bin sui-node # RUN apt-get update && apt-get install -y binutils # RUN strip --debug-only -w -K sui* -K narwhal* -K hyper* -K typed_store* "/sui/target/$PROFILE/sui-node" diff --git a/external-crates/move/Cargo.lock b/external-crates/move/Cargo.lock index 9e4bb636ff2c56..fe70186a9fe354 100644 --- a/external-crates/move/Cargo.lock +++ b/external-crates/move/Cargo.lock @@ -1370,6 +1370,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "dissimilar" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "210ec60ae7d710bed8683e333e9d2855a8a56a3e9892b38bad3bb0d4d29b0d5e" + [[package]] name = "dunce" version = "1.0.3" @@ -1471,6 +1477,16 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "expect-test" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3" +dependencies = [ + "dissimilar", + "once_cell", +] + [[package]] name = "fail" version = "0.4.0" @@ -3252,6 +3268,7 @@ name = "move-vm-integration-tests" version = "0.1.0" dependencies = [ "anyhow", + "expect-test", "fail", "memory-stats", "move-binary-format", diff --git a/external-crates/move/move-core/types/src/gas_algebra.rs b/external-crates/move/move-core/types/src/gas_algebra.rs index c50a9489c4fa73..d124f3e5efe6d9 100644 --- a/external-crates/move/move-core/types/src/gas_algebra.rs +++ b/external-crates/move/move-core/types/src/gas_algebra.rs @@ -107,6 +107,10 @@ impl GasQuantity { pub const fn is_zero(&self) -> bool { self.val == 0 } + + pub const fn value(&self) -> u64 { + self.val + } } /*************************************************************************************************** diff --git a/external-crates/move/move-core/types/src/lib.rs b/external-crates/move/move-core/types/src/lib.rs index f457d2544f2f3d..044810b92574d1 100644 --- a/external-crates/move/move-core/types/src/lib.rs +++ b/external-crates/move/move-core/types/src/lib.rs @@ -18,6 +18,7 @@ pub mod parser; pub mod proptest_types; pub mod resolver; pub mod state; +pub mod trace; pub mod transaction_argument; pub mod u256; #[cfg(test)] diff --git a/external-crates/move/move-core/types/src/trace.rs b/external-crates/move/move-core/types/src/trace.rs new file mode 100644 index 00000000000000..b36d5f14e5db82 --- /dev/null +++ b/external-crates/move/move-core/types/src/trace.rs @@ -0,0 +1,24 @@ +pub use crate::language_storage::TypeTag; + +use crate::{ + identifier::Identifier, language_storage::ModuleId, value::MoveValue, vm_status::VMStatus, +}; +use std::sync::Arc; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum CallType { + Call, + CallGeneric, +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct CallTrace { + pub depth: u32, + pub call_type: CallType, + pub module_id: Option, + pub function: Identifier, + pub ty_args: Vec, + pub args: Vec>, + pub gas_used: u64, + pub err: Option, +} diff --git a/external-crates/move/move-vm/integration-tests/Cargo.toml b/external-crates/move/move-vm/integration-tests/Cargo.toml index c865b376682613..6e5bdaa688d54c 100644 --- a/external-crates/move/move-vm/integration-tests/Cargo.toml +++ b/external-crates/move/move-vm/integration-tests/Cargo.toml @@ -13,6 +13,7 @@ edition = "2021" [dependencies] anyhow = "1.0.52" +expect-test = "1.4.0" fail = { version = "0.4.0", features = ['failpoints'] } tempfile = "3.2.0" memory-stats = "1.0.0" diff --git a/external-crates/move/move-vm/integration-tests/src/tests/call_traces_tests.rs b/external-crates/move/move-vm/integration-tests/src/tests/call_traces_tests.rs new file mode 100644 index 00000000000000..7c852abd40b5d7 --- /dev/null +++ b/external-crates/move/move-vm/integration-tests/src/tests/call_traces_tests.rs @@ -0,0 +1,175 @@ +use crate::compiler::{as_module, compile_units}; +use expect_test::expect; +use move_binary_format::errors::VMResult; +use move_core_types::{ + account_address::AccountAddress, + identifier::Identifier, + language_storage::ModuleId, + trace::CallTrace, + value::{MoveStruct, MoveValue}, +}; +use move_vm_runtime::move_vm::MoveVM; +use move_vm_test_utils::InMemoryStorage; +use move_vm_types::gas::UnmeteredGasMeter; +use move_vm_types::loaded_data::runtime_types::Type; + +const TEST_ADDR: AccountAddress = AccountAddress::new([42; AccountAddress::LENGTH]); +const TEST_MODULE_ID: &str = "M"; + +#[test] +fn call_traces_collection() { + let code = code(); + let traces = format_traces( + run( + &code, + "test", + vec![MoveValue::U64(42), MoveValue::Bool(true)], + vec![Type::U256], + ) + .unwrap(), + ); + + expect![[r#" + 1: fun test(U64(42), Bool(true)) + 2: fun test2(U64(42), Bool(true)) + 3: fun test3_mut(Foo [(Identifier("x"), U64(42)), (Identifier("y"), Bool(true))]) + 4: fun test4_mut(U64(42)) + 3: fun test3(Foo [(Identifier("x"), U64(43)), (Identifier("y"), Bool(true))]) + 3: fun test3_mut(Foo [(Identifier("x"), U64(43)), (Identifier("y"), Bool(true))]) + 4: fun test4_mut(U64(43)) + 3: fun test3(Foo [(Identifier("x"), U64(44)), (Identifier("y"), Bool(true))]) + 3: fun test5(Foo [(Identifier("x"), U64(44)), (Identifier("y"), Bool(true))])"#]] + .assert_eq(&traces); +} + +fn code() -> ModuleCode { + let code = format!( + r#" + module 0x{}::{} {{ + struct Foo has drop {{ x: u64, y: bool }} + + public fun test(x: u64, y: bool) {{ + test2(x, y); + }} + + fun test2(x: u64, y: bool) {{ + let f = Foo {{ x, y }}; + + let i = 0; + + while (i < 2) {{ + test3_mut(&mut f); + test3(&f); + i = i + 1; + }}; + + test5(f); + }} + + // Foo is `ContainerRef` + fun test3(f: &Foo) {{ + let _ = f.x; + }} + + // Foo is `ContainerRef` + fun test3_mut(f: &mut Foo) {{ + test4_mut(&mut f.x); + }} + + // x is `IndexedRef` + fun test4_mut(x: &mut u64) {{ + *x = *x + 1; + }} + + // x is `Container` + fun test5(_f: Foo) {{ }} + }} + "#, + TEST_ADDR, TEST_MODULE_ID, + ); + + let module_id = ModuleId::new(TEST_ADDR, Identifier::new(TEST_MODULE_ID).unwrap()); + + (module_id, code) +} + +fn run( + module: &ModuleCode, + fun_name: &str, + args: Vec, + ty_args: Vec, +) -> VMResult> { + let module_id = &module.0; + let modules = vec![module.clone()]; + let (vm, storage) = setup_vm(&modules); + let mut session = vm.new_session(&storage); + + let fun_name = Identifier::new(fun_name).unwrap(); + + let args: Vec<_> = args + .into_iter() + .map(|val| val.simple_serialize().unwrap()) + .collect(); + + session + .execute_function_bypass_visibility( + module_id, + &fun_name, + ty_args, + args, + &mut UnmeteredGasMeter, + ) + .map(|ret_values| ret_values.call_traces) +} + +type ModuleCode = (ModuleId, String); + +fn setup_vm(modules: &[ModuleCode]) -> (MoveVM, InMemoryStorage) { + let mut storage = InMemoryStorage::new(); + compile_modules(&mut storage, modules); + (MoveVM::new(vec![]).unwrap(), storage) +} + +fn compile_modules(storage: &mut InMemoryStorage, modules: &[ModuleCode]) { + modules.iter().for_each(|(id, code)| { + compile_module(storage, id, code); + }); +} + +fn compile_module(storage: &mut InMemoryStorage, mod_id: &ModuleId, code: &str) { + let mut units = compile_units(code).unwrap(); + let module = as_module(units.pop().unwrap()); + let mut blob = vec![]; + module.serialize(&mut blob).unwrap(); + storage.publish_or_overwrite_module(mod_id.clone(), blob); +} + +fn format_traces(call_traces: Vec) -> String { + let formatted_traces: Vec<_> = call_traces + .into_iter() + .map(|trace| { + let ident = trace.function.as_str(); + let args: Vec<_> = trace + .args + .into_iter() + .map(|arg| match &*arg { + MoveValue::Struct(MoveStruct::WithTypes { type_, fields }) => { + let ident = type_.name.as_str(); + + format!("{} {:?}", ident, fields) + } + arg => format!("{:?}", arg), + }) + .collect(); + + format!( + "{}:{}fun {ident}({})", + trace.depth, + " ".repeat(trace.depth as usize), + args.join(", ") + ) + }) + .collect(); + + formatted_traces.join("\n") +} diff --git a/external-crates/move/move-vm/integration-tests/src/tests/leak_tests.rs b/external-crates/move/move-vm/integration-tests/src/tests/leak_tests.rs index 7f9378cca30835..7aa2dc5537cf69 100644 --- a/external-crates/move/move-vm/integration-tests/src/tests/leak_tests.rs +++ b/external-crates/move/move-vm/integration-tests/src/tests/leak_tests.rs @@ -7,6 +7,7 @@ use move_binary_format::file_format::{ use move_vm_runtime::move_vm::MoveVM; use move_vm_test_utils::{gas_schedule::GasStatus, InMemoryStorage}; +#[ignore] #[test] fn leak_with_abort() { let mut locals = vec![U128, MutableReference(Box::new(U128))]; diff --git a/external-crates/move/move-vm/integration-tests/src/tests/mod.rs b/external-crates/move/move-vm/integration-tests/src/tests/mod.rs index cac687f9d2e620..d8988223f3ade3 100644 --- a/external-crates/move/move-vm/integration-tests/src/tests/mod.rs +++ b/external-crates/move/move-vm/integration-tests/src/tests/mod.rs @@ -5,6 +5,7 @@ mod bad_entry_point_tests; mod bad_storage_tests; mod binary_format_version; +mod call_traces_tests; mod exec_func_effects_tests; mod function_arg_tests; mod instantiation_tests; diff --git a/external-crates/move/move-vm/integration-tests/src/tests/return_value_tests.rs b/external-crates/move/move-vm/integration-tests/src/tests/return_value_tests.rs index 838cebab0f5389..f5ce558063943a 100644 --- a/external-crates/move/move-vm/integration-tests/src/tests/return_value_tests.rs +++ b/external-crates/move/move-vm/integration-tests/src/tests/return_value_tests.rs @@ -65,6 +65,7 @@ fn run( let SerializedReturnValues { return_values, mutable_reference_outputs: _, + call_traces: _, } = sess.execute_function_bypass_visibility( &module_id, &fun_name, diff --git a/external-crates/move/move-vm/runtime/src/interpreter.rs b/external-crates/move/move-vm/runtime/src/interpreter.rs index dc556173d5ae33..f4a838caa7c73b 100644 --- a/external-crates/move/move-vm/runtime/src/interpreter.rs +++ b/external-crates/move/move-vm/runtime/src/interpreter.rs @@ -16,6 +16,7 @@ use move_core_types::{ account_address::AccountAddress, gas_algebra::{NumArgs, NumBytes}, language_storage::TypeTag, + trace::{CallTrace, CallType}, vm_status::{StatusCode, StatusType}, }; use move_vm_config::runtime::VMRuntimeLimitsConfig; @@ -37,7 +38,10 @@ use move_vm_types::{ use smallvec::SmallVec; use crate::native_extensions::NativeContextExtensions; -use std::{cmp::min, collections::VecDeque, fmt::Write, sync::Arc}; +use move_core_types::value::MoveValue; +use move_vm_types::values::{ContainerId, ValueImpl}; +use std::collections::HashMap; +use std::{cmp::min, collections::VecDeque, fmt::Write, mem, sync::Arc}; use tracing::error; macro_rules! debug_write { @@ -65,6 +69,8 @@ macro_rules! set_err_info { }}; } +type MoveValueCache = HashMap>; + enum InstrRet { Ok, ExitCode(ExitCode), @@ -84,6 +90,14 @@ pub(crate) struct Interpreter { paranoid_type_checks: bool, /// Limits imposed at runtime runtime_limits_config: VMRuntimeLimitsConfig, + /// List of captured call traces + call_traces: Vec, + values_cache: MoveValueCache, +} + +pub(crate) struct InterpreterEntrypointResult { + pub values: Vec, + pub call_traces: Vec, } struct TypeWithLoader<'a, 'b> { @@ -112,17 +126,19 @@ impl Interpreter { gas_meter: &mut impl GasMeter, extensions: &mut NativeContextExtensions, loader: &Loader, - ) -> VMResult> { + ) -> VMResult { let mut interpreter = Interpreter { operand_stack: Stack::new(), call_stack: CallStack::new(), paranoid_type_checks: loader.vm_config().paranoid_type_checks, runtime_limits_config: loader.vm_config().runtime_limits_config.clone(), + call_traces: Vec::new(), + values_cache: HashMap::new(), }; profile_open_frame!(gas_meter, function.pretty_string()); - if function.is_native() { + let values = if function.is_native() { for arg in args { interpreter .operand_stack @@ -167,15 +183,19 @@ impl Interpreter { ) .finish(Location::Undefined), })?; - profile_close_frame!(gas_meter, function.pretty_string()); - Ok(return_values.into_iter().collect()) + return_values.into_iter().collect() } else { interpreter.execute_main( loader, data_store, gas_meter, extensions, function, ty_args, args, - ) - } + )? + }; + + Ok(InterpreterEntrypointResult { + values, + call_traces: interpreter.call_traces, + }) } /// Main loop for the execution of a function. @@ -185,7 +205,7 @@ impl Interpreter { /// on call. When that happens the frame is changes to a new one (call) or to the one /// at the top of the stack (return). If the call stack is empty execution is completed. fn execute_main( - mut self, + &mut self, loader: &Loader, data_store: &mut impl DataStore, gas_meter: &mut impl GasMeter, @@ -209,14 +229,37 @@ impl Interpreter { let link_context = data_store.link_context(); let mut current_frame = self - .make_new_frame(link_context, loader, function, ty_args, locals) + .make_new_frame(link_context, loader, function, ty_args, locals, 1) .map_err(|err| self.set_location(err))?; + + let mut gas_used_before_call = gas_meter.charged_already_total().unwrap(); + loop { let resolver = current_frame.resolver(link_context, loader); - let exit_code = - current_frame //self - .execute_code(&resolver, &mut self, data_store, gas_meter) - .map_err(|err| self.maybe_core_dump(err, ¤t_frame))?; + + let execution_result = current_frame + .execute_code(&resolver, self, data_store, gas_meter) + .map_err(|err| self.maybe_core_dump(err, ¤t_frame)); + + let gas_used_after_call = gas_meter.charged_already_total().unwrap(); + + let exit_code = { + let call_trace = &mut self.call_traces[current_frame.call_trace_idx]; + + call_trace.gas_used += gas_used_after_call + .checked_sub(gas_used_before_call) + .unwrap() + .value(); + + execution_result.map_err(|err| { + call_trace.err = Some(err.clone().into_vm_status()); + + err + })? + }; + + gas_used_before_call = gas_used_after_call; + match exit_code { ExitCode::Return => { let non_ref_vals = current_frame @@ -227,7 +270,21 @@ impl Interpreter { // TODO: Check if the error location is set correctly. gas_meter .charge_drop_frame(non_ref_vals.into_iter()) - .map_err(|e| self.set_location(e))?; + .map_err(|e| { + let err = self.set_location(e); + + let gas_used_after_call = gas_meter.charged_already_total().unwrap(); + + let call_trace = &mut self.call_traces[current_frame.call_trace_idx]; + + call_trace.err = Some(err.clone().into_vm_status()); + call_trace.gas_used += gas_used_after_call + .checked_sub(gas_used_before_call) + .unwrap() + .value(); + + err + })?; profile_close_frame!(gas_meter, current_frame.function.pretty_string()); if let Some(frame) = self.call_stack.pop() { @@ -236,7 +293,7 @@ impl Interpreter { current_frame.pc += 1; // advance past the Call instruction in the caller } else { // end of execution. `self` should no longer be used afterward - return Ok(self.operand_stack.value); + return Ok(mem::take(&mut self.operand_stack.value)); } } ExitCode::Call(fh_idx) => { @@ -392,19 +449,27 @@ impl Interpreter { } } } - self.make_new_frame(link_context, loader, func, ty_args, locals) + self.make_new_frame( + link_context, + loader, + func, + ty_args, + locals, + self.call_stack.len() as u32 + 2, + ) } /// Create a new `Frame` given a `Function` and the function `Locals`. /// /// The locals must be loaded before calling this. fn make_new_frame( - &self, + &mut self, link_context: AccountAddress, loader: &Loader, function: Arc, ty_args: Vec, locals: Locals, + depth: u32, ) -> PartialVMResult { let local_tys = if self.paranoid_type_checks { if ty_args.is_empty() { @@ -420,12 +485,24 @@ impl Interpreter { } else { vec![] }; + + let call_info_idx = self.call_traces.len(); + self.call_traces.push(new_call_trace( + function.clone(), + ty_args.clone(), + &locals, + depth, + loader, + &mut self.values_cache, + )); + Ok(Frame { pc: 0, locals, function, ty_args, local_tys, + call_trace_idx: call_info_idx, }) } @@ -1113,6 +1190,10 @@ impl CallStack { let location_opt = self.0.last().map(|frame| frame.location()); location_opt.unwrap_or(Location::Undefined) } + + fn len(&self) -> usize { + self.0.len() + } } /// A `Frame` is the execution context for a function. It holds the locals of the function and @@ -1124,6 +1205,119 @@ struct Frame { function: Arc, ty_args: Vec, local_tys: Vec, + call_trace_idx: usize, +} + +fn new_call_trace( + function: Arc, + ty_args: Vec, + locals: &Locals, + depth: u32, + loader: &Loader, + values_cache: &mut MoveValueCache, +) -> CallTrace { + let args = function + .parameter_types() + .iter() + .enumerate() + .map(|(idx, ty)| { + let ty = if ty_args.is_empty() { + ty.clone() + } else { + ty.subst(&ty_args)? + }; + + let (ty, is_mut_ref) = match ty { + // Try find reference in some rc cache if found + Type::Reference(ty) => (*ty, false), + Type::MutableReference(ty) => (*ty, true), + _ => (ty, false), + }; + + let ty_layout = loader.type_to_fully_annotated_layout(&ty)?; + let value = locals.copy_loc(idx)?; + + let move_value = match &value.0 { + // caches references serialization to avoid the same job when the value is not changed, but only read + ValueImpl::ContainerRef(r) => { + let key = r.container().id(); + + // the container is global: `is_dirty` means the container was possibly modified + if let Some(is_dirty) = r.is_dirty() { + if is_dirty { + values_cache.remove(&key); + } + } + + let move_value = if let Some(value) = values_cache.get(&key) { + Arc::clone(value) + } else { + let move_value = Arc::new(value.try_as_move_value(&ty_layout)?); + values_cache.insert(key, Arc::clone(&move_value)); + + move_value + }; + + // the container is local and passed by the mutable reference + // so may be changed in the NEXT frame + if is_mut_ref { + values_cache.remove(&key); + } + + move_value + } + _ => Arc::new(value.try_as_move_value(&ty_layout)?), + }; + + PartialVMResult::Ok(move_value) + }) + .filter_map(|result| match result { + Ok(value) => Some(value), + Err(err) => { + error!( + error = ?err, + function = %function.pretty_string(), + "Failed to extract function argument", + ); + + None + } + }) + .collect(); + + let ty_args: Vec<_> = ty_args + .iter() + .filter_map(|ty| match loader.type_to_type_tag(ty) { + Ok(ty) => Some(ty), + Err(err) => { + error!( + error = ?err, + ?ty, + function = %function.pretty_string(), + "Failed to extract type argument", + ); + + None + } + }) + .collect(); + + let call_type = if ty_args.is_empty() { + CallType::Call + } else { + CallType::CallGeneric + }; + + CallTrace { + depth, + call_type, + module_id: function.module_id().cloned(), + function: function.name_ident(), + ty_args, + args, + gas_used: 0, + err: None, + } } /// An `ExitCode` from `execute_code_unit`. diff --git a/external-crates/move/move-vm/runtime/src/loader.rs b/external-crates/move/move-vm/runtime/src/loader.rs index c8d2f31adc9341..cd1ec34c875b58 100644 --- a/external-crates/move/move-vm/runtime/src/loader.rs +++ b/external-crates/move/move-vm/runtime/src/loader.rs @@ -2336,6 +2336,10 @@ impl Function { self.name.as_str() } + pub(crate) fn name_ident(&self) -> Identifier { + self.name.clone() + } + pub(crate) fn code(&self) -> &[Bytecode] { &self.code } diff --git a/external-crates/move/move-vm/runtime/src/runtime.rs b/external-crates/move/move-vm/runtime/src/runtime.rs index 71b09f1f61b72c..0ef0488dc62f24 100644 --- a/external-crates/move/move-vm/runtime/src/runtime.rs +++ b/external-crates/move/move-vm/runtime/src/runtime.rs @@ -350,7 +350,7 @@ impl VMRuntime { )?; let serialized_return_values = self - .serialize_return_values(&return_types, return_values) + .serialize_return_values(&return_types, return_values.values) .map_err(|e| e.finish(Location::Undefined))?; let serialized_mut_ref_outputs = mut_ref_args .into_iter() @@ -374,6 +374,7 @@ impl VMRuntime { Ok(SerializedReturnValues { mutable_reference_outputs: serialized_mut_ref_outputs, return_values: serialized_return_values, + call_traces: return_values.call_traces, }) } diff --git a/external-crates/move/move-vm/runtime/src/session.rs b/external-crates/move/move-vm/runtime/src/session.rs index af044902779e81..801419afb48383 100644 --- a/external-crates/move/move-vm/runtime/src/session.rs +++ b/external-crates/move/move-vm/runtime/src/session.rs @@ -16,6 +16,7 @@ use move_core_types::{ identifier::IdentStr, language_storage::{ModuleId, TypeTag}, resolver::MoveResolver, + trace::CallTrace, value::MoveTypeLayout, }; #[cfg(debug_assertions)] @@ -42,6 +43,8 @@ pub struct SerializedReturnValues { pub mutable_reference_outputs: Vec<(LocalIndex, Vec, MoveTypeLayout)>, /// The return values from the function pub return_values: Vec<(Vec, MoveTypeLayout)>, + /// The call traces after function invocation + pub call_traces: Vec, } impl<'r, 'l, S: MoveResolver> Session<'r, 'l, S> { diff --git a/external-crates/move/move-vm/test-utils/src/gas_schedule.rs b/external-crates/move/move-vm/test-utils/src/gas_schedule.rs index b1fd2359aebc6a..557eed2f16b171 100644 --- a/external-crates/move/move-vm/test-utils/src/gas_schedule.rs +++ b/external-crates/move/move-vm/test-utils/src/gas_schedule.rs @@ -112,6 +112,7 @@ static ZERO_COST_SCHEDULE: Lazy = Lazy::new(zero_cost_schedule); /// Every client must use an instance of this type to interact with the Move VM. pub struct GasStatus<'a> { cost_table: &'a CostTable, + original_gas_left: InternalGas, gas_left: InternalGas, charge: bool, #[cfg(debug_assertions)] @@ -125,6 +126,7 @@ impl<'a> GasStatus<'a> { /// This is the instantiation that must be used when executing a user script. pub fn new(cost_table: &'a CostTable, gas_left: Gas) -> Self { Self { + original_gas_left: gas_left.to_unit(), gas_left: gas_left.to_unit(), cost_table, charge: true, @@ -139,6 +141,7 @@ impl<'a> GasStatus<'a> { /// code that does not have to charge the user. pub fn new_unmetered() -> Self { Self { + original_gas_left: InternalGas::new(0), gas_left: InternalGas::new(0), cost_table: &ZERO_COST_SCHEDULE, charge: false, @@ -571,6 +574,10 @@ impl<'b> GasMeter for GasStatus<'b> { fn set_profiler(&mut self, profiler: GasProfiler) { self.profiler = Some(profiler); } + + fn charged_already_total(&self) -> Option { + self.original_gas_left.checked_sub(self.gas_left) + } } pub fn new_from_instructions(mut instrs: Vec<(Bytecode, GasCost)>) -> CostTable { diff --git a/external-crates/move/move-vm/test-utils/src/tiered_gas_schedule.rs b/external-crates/move/move-vm/test-utils/src/tiered_gas_schedule.rs index 68fef9873f0577..592db2a58b56ad 100644 --- a/external-crates/move/move-vm/test-utils/src/tiered_gas_schedule.rs +++ b/external-crates/move/move-vm/test-utils/src/tiered_gas_schedule.rs @@ -768,6 +768,10 @@ impl<'b> GasMeter for GasStatus<'b> { fn set_profiler(&mut self, profiler: GasProfiler) { self.profiler = Some(profiler); } + + fn charged_already_total(&self) -> Option { + Some(InternalGas::zero()) + } } pub fn zero_cost_schedule() -> CostTable { diff --git a/external-crates/move/move-vm/types/src/gas.rs b/external-crates/move/move-vm/types/src/gas.rs index bb79e428575b3c..cc161286284f6b 100644 --- a/external-crates/move/move-vm/types/src/gas.rs +++ b/external-crates/move/move-vm/types/src/gas.rs @@ -241,6 +241,8 @@ pub trait GasMeter { #[cfg(debug_assertions)] fn set_profiler(&mut self, profiler: GasProfiler); + + fn charged_already_total(&self) -> Option; } /// A dummy gas meter that does not meter anything. @@ -465,4 +467,8 @@ impl GasMeter for UnmeteredGasMeter { #[cfg(debug_assertions)] fn set_profiler(&mut self, _profiler: GasProfiler) {} + + fn charged_already_total(&self) -> Option { + Some(InternalGas::new(0)) + } } diff --git a/external-crates/move/move-vm/types/src/values/values_impl.rs b/external-crates/move/move-vm/types/src/values/values_impl.rs index 7a121505ea8243..df51ca00a279c4 100644 --- a/external-crates/move/move-vm/types/src/values/values_impl.rs +++ b/external-crates/move/move-vm/types/src/values/values_impl.rs @@ -22,7 +22,9 @@ use std::{ cell::RefCell, fmt::{self, Debug, Display}, iter, + ops::Deref, rc::Rc, + sync::atomic::{AtomicUsize, Ordering}, }; /*************************************************************************************** @@ -37,7 +39,7 @@ use std::{ /// Runtime representation of a Move value. #[derive(Debug)] -enum ValueImpl { +pub enum ValueImpl { Invalid, U8(u8), @@ -55,6 +57,46 @@ enum ValueImpl { IndexedRef(IndexedRef), } +/// This counter is used to give unique ids to containers +/// So it's possible to cache its values +static CONTAINER_ID_COUNTER: AtomicUsize = AtomicUsize::new(0); + +pub type ContainerId = u64; + +/// Wrapper type for Rc, also consist the [`ContainerId`] +#[derive(Debug)] +pub struct RcId(Rc, ContainerId); + +impl RcId> { + fn new(value: RefCell) -> Self { + Self::new_from_rc(Rc::new(value)) + } + + fn new_from_rc(value: Rc>) -> Self { + let counter_next = CONTAINER_ID_COUNTER.fetch_add(1, Ordering::Relaxed); + + Self(value, counter_next as ContainerId) + } + + fn id(&self) -> ContainerId { + self.1 + } +} + +impl Clone for RcId> { + fn clone(&self) -> Self { + Self(Rc::clone(&self.0), self.1) + } +} + +impl Deref for RcId { + type Target = Rc; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + /// A container is a collection of values. It is used to represent data structures like a /// Move vector or struct. /// @@ -65,25 +107,25 @@ enum ValueImpl { /// Except when not owned by the VM stack, a container always lives inside an Rc>, /// making it possible to be shared by references. #[derive(Debug, Clone)] -enum Container { - Locals(Rc>>), - Vec(Rc>>), - Struct(Rc>>), - VecU8(Rc>>), - VecU64(Rc>>), - VecU128(Rc>>), - VecBool(Rc>>), - VecAddress(Rc>>), - VecU16(Rc>>), - VecU32(Rc>>), - VecU256(Rc>>), +pub enum Container { + Locals(RcId>>), + Vec(RcId>>), + Struct(RcId>>), + VecU8(RcId>>), + VecU64(RcId>>), + VecU128(RcId>>), + VecBool(RcId>>), + VecAddress(RcId>>), + VecU16(RcId>>), + VecU32(RcId>>), + VecU256(RcId>>), } /// A ContainerRef is a direct reference to a container, which could live either in the frame /// or in global storage. In the latter case, it also keeps a status flag indicating whether /// the container has been possibly modified. #[derive(Debug)] -enum ContainerRef { +pub enum ContainerRef { Local(Container), Global { status: Rc>, @@ -95,14 +137,14 @@ enum ContainerRef { /// Clean - the data was only read. /// Dirty - the data was possibly modified. #[derive(Debug, Clone, Copy)] -enum GlobalDataStatus { +pub enum GlobalDataStatus { Clean, Dirty, } /// A Move reference pointing to an element in a container. #[derive(Debug)] -struct IndexedRef { +pub struct IndexedRef { idx: usize, container_ref: ContainerRef, } @@ -133,7 +175,7 @@ enum ReferenceImpl { /// A Move value -- a wrapper around `ValueImpl` which can be created only through valid /// means. #[derive(Debug)] -pub struct Value(ValueImpl); +pub struct Value(pub ValueImpl); /// An integer value in Move. #[derive(Debug)] @@ -187,11 +229,13 @@ enum GlobalValueImpl { /// No resource resides in this slot or in storage. None, /// A resource has been published to this slot and it did not previously exist in storage. - Fresh { fields: Rc>> }, + Fresh { + fields: RcId>>, + }, /// A resource resides in this slot and also in storage. The status flag indicates whether /// it has potentially been altered. Cached { - fields: Rc>>, + fields: RcId>>, status: Rc>, }, /// A resource used to exist in storage but has been deleted by the current transaction. @@ -206,7 +250,7 @@ pub struct GlobalValue(GlobalValueImpl); /// The locals for a function frame. It allows values to be read, written or taken /// reference from. #[derive(Debug)] -pub struct Locals(Rc>>); +pub struct Locals(RcId>>); /*************************************************************************************** * @@ -246,7 +290,7 @@ impl Container { } fn signer(x: AccountAddress) -> Self { - Container::Struct(Rc::new(RefCell::new(vec![ValueImpl::Address(x)]))) + Container::Struct(RcId::new(RefCell::new(vec![ValueImpl::Address(x)]))) } } @@ -259,8 +303,8 @@ impl Container { * **************************************************************************************/ -fn take_unique_ownership(r: Rc>) -> PartialVMResult { - match Rc::try_unwrap(r) { +fn take_unique_ownership(r: RcId>) -> PartialVMResult { + match Rc::try_unwrap(r.0) { Ok(cell) => Ok(cell.into_inner()), Err(r) => Err( PartialVMError::new(StatusCode::UNKNOWN_INVARIANT_VIOLATION_ERROR) @@ -270,12 +314,23 @@ fn take_unique_ownership(r: Rc>) -> PartialVMResult { } impl ContainerRef { - fn container(&self) -> &Container { + pub fn container(&self) -> &Container { match self { Self::Local(container) | Self::Global { container, .. } => container, } } + pub fn is_dirty(&self) -> Option { + if let Self::Global { status, .. } = self { + Some(match *status.borrow() { + GlobalDataStatus::Dirty => true, + GlobalDataStatus::Clean => false, + }) + } else { + None + } + } + fn mark_dirty(&self) { if let Self::Global { status, .. } = self { *status.borrow_mut() = GlobalDataStatus::Dirty @@ -360,12 +415,34 @@ impl ValueImpl { Container(c) => Container(c.copy_value()?), }) } + + fn copy_value_by_ref(&self) -> PartialVMResult { + use ValueImpl::*; + + Ok(match self { + Invalid => Invalid, + + U8(x) => U8(*x), + U16(x) => U16(*x), + U32(x) => U32(*x), + U64(x) => U64(*x), + U128(x) => U128(*x), + U256(x) => U256(*x), + Bool(x) => Bool(*x), + Address(x) => Address(*x), + + ContainerRef(r) => ContainerRef(r.copy_value()), + IndexedRef(r) => IndexedRef(r.copy_value()), + + Container(c) => Container(c.copy_by_ref()), + }) + } } impl Container { fn copy_value(&self) -> PartialVMResult { - let copy_rc_ref_vec_val = |r: &Rc>>| { - Ok(Rc::new(RefCell::new( + let copy_rc_ref_vec_val = |r: &RcId>>| { + Ok(RcId::new(RefCell::new( r.borrow() .iter() .map(|v| v.copy_value()) @@ -377,14 +454,14 @@ impl Container { Self::Vec(r) => Self::Vec(copy_rc_ref_vec_val(r)?), Self::Struct(r) => Self::Struct(copy_rc_ref_vec_val(r)?), - Self::VecU8(r) => Self::VecU8(Rc::new(RefCell::new(r.borrow().clone()))), - Self::VecU16(r) => Self::VecU16(Rc::new(RefCell::new(r.borrow().clone()))), - Self::VecU32(r) => Self::VecU32(Rc::new(RefCell::new(r.borrow().clone()))), - Self::VecU64(r) => Self::VecU64(Rc::new(RefCell::new(r.borrow().clone()))), - Self::VecU128(r) => Self::VecU128(Rc::new(RefCell::new(r.borrow().clone()))), - Self::VecU256(r) => Self::VecU256(Rc::new(RefCell::new(r.borrow().clone()))), - Self::VecBool(r) => Self::VecBool(Rc::new(RefCell::new(r.borrow().clone()))), - Self::VecAddress(r) => Self::VecAddress(Rc::new(RefCell::new(r.borrow().clone()))), + Self::VecU8(r) => Self::VecU8(RcId::new(RefCell::new(r.borrow().clone()))), + Self::VecU16(r) => Self::VecU16(RcId::new(RefCell::new(r.borrow().clone()))), + Self::VecU32(r) => Self::VecU32(RcId::new(RefCell::new(r.borrow().clone()))), + Self::VecU64(r) => Self::VecU64(RcId::new(RefCell::new(r.borrow().clone()))), + Self::VecU128(r) => Self::VecU128(RcId::new(RefCell::new(r.borrow().clone()))), + Self::VecU256(r) => Self::VecU256(RcId::new(RefCell::new(r.borrow().clone()))), + Self::VecBool(r) => Self::VecBool(RcId::new(RefCell::new(r.borrow().clone()))), + Self::VecAddress(r) => Self::VecAddress(RcId::new(RefCell::new(r.borrow().clone()))), Self::Locals(_) => { return Err( @@ -397,17 +474,17 @@ impl Container { fn copy_by_ref(&self) -> Self { match self { - Self::Vec(r) => Self::Vec(Rc::clone(r)), - Self::Struct(r) => Self::Struct(Rc::clone(r)), - Self::VecU8(r) => Self::VecU8(Rc::clone(r)), - Self::VecU16(r) => Self::VecU16(Rc::clone(r)), - Self::VecU32(r) => Self::VecU32(Rc::clone(r)), - Self::VecU64(r) => Self::VecU64(Rc::clone(r)), - Self::VecU128(r) => Self::VecU128(Rc::clone(r)), - Self::VecU256(r) => Self::VecU256(Rc::clone(r)), - Self::VecBool(r) => Self::VecBool(Rc::clone(r)), - Self::VecAddress(r) => Self::VecAddress(Rc::clone(r)), - Self::Locals(r) => Self::Locals(Rc::clone(r)), + Self::Vec(r) => Self::Vec(RcId::clone(r)), + Self::Struct(r) => Self::Struct(RcId::clone(r)), + Self::VecU8(r) => Self::VecU8(RcId::clone(r)), + Self::VecU16(r) => Self::VecU16(RcId::clone(r)), + Self::VecU32(r) => Self::VecU32(RcId::clone(r)), + Self::VecU64(r) => Self::VecU64(RcId::clone(r)), + Self::VecU128(r) => Self::VecU128(RcId::clone(r)), + Self::VecU256(r) => Self::VecU256(RcId::clone(r)), + Self::VecBool(r) => Self::VecBool(RcId::clone(r)), + Self::VecAddress(r) => Self::VecAddress(RcId::clone(r)), + Self::Locals(r) => Self::Locals(RcId::clone(r)), } } } @@ -694,6 +771,24 @@ impl IndexedRef { Ok(Value(res)) } + + fn copy_by_ref(&self) -> PartialVMResult { + use Container::*; + + let res = match self.container_ref.container() { + Locals(r) | Vec(r) | Struct(r) => r.borrow()[self.idx].copy_value_by_ref()?, + VecU8(r) => ValueImpl::U8(r.borrow()[self.idx]), + VecU16(r) => ValueImpl::U16(r.borrow()[self.idx]), + VecU32(r) => ValueImpl::U32(r.borrow()[self.idx]), + VecU64(r) => ValueImpl::U64(r.borrow()[self.idx]), + VecU128(r) => ValueImpl::U128(r.borrow()[self.idx]), + VecU256(r) => ValueImpl::U256(r.borrow()[self.idx]), + VecBool(r) => ValueImpl::Bool(r.borrow()[self.idx]), + VecAddress(r) => ValueImpl::Address(r.borrow()[self.idx]), + }; + + Ok(Value(res)) + } } impl ReferenceImpl { @@ -947,7 +1042,7 @@ impl Locals { | ValueImpl::U256(_) | ValueImpl::Bool(_) | ValueImpl::Address(_) => Ok(Value(ValueImpl::IndexedRef(IndexedRef { - container_ref: ContainerRef::Local(Container::Locals(Rc::clone(&self.0))), + container_ref: ContainerRef::Local(Container::Locals(RcId::clone(&self.0))), idx, }))), @@ -974,7 +1069,7 @@ impl SignerRef { **************************************************************************************/ impl Locals { pub fn new(n: usize) -> Self { - Self(Rc::new(RefCell::new( + Self(RcId::new(RefCell::new( iter::repeat_with(|| ValueImpl::Invalid).take(n).collect(), ))) } @@ -1130,65 +1225,65 @@ impl Value { } pub fn struct_(s: Struct) -> Self { - Self(ValueImpl::Container(Container::Struct(Rc::new( + Self(ValueImpl::Container(Container::Struct(RcId::new( RefCell::new(s.fields), )))) } // TODO: consider whether we want to replace these with fn vector(v: Vec). pub fn vector_u8(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecU8(Rc::new( + Self(ValueImpl::Container(Container::VecU8(RcId::new( RefCell::new(it.into_iter().collect()), )))) } pub fn vector_u16(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecU16(Rc::new( + Self(ValueImpl::Container(Container::VecU16(RcId::new( RefCell::new(it.into_iter().collect()), )))) } pub fn vector_u32(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecU32(Rc::new( + Self(ValueImpl::Container(Container::VecU32(RcId::new( RefCell::new(it.into_iter().collect()), )))) } pub fn vector_u64(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecU64(Rc::new( + Self(ValueImpl::Container(Container::VecU64(RcId::new( RefCell::new(it.into_iter().collect()), )))) } pub fn vector_u128(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecU128(Rc::new( + Self(ValueImpl::Container(Container::VecU128(RcId::new( RefCell::new(it.into_iter().collect()), )))) } pub fn vector_u256(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecU256(Rc::new( + Self(ValueImpl::Container(Container::VecU256(RcId::new( RefCell::new(it.into_iter().collect()), )))) } pub fn vector_bool(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecBool(Rc::new( + Self(ValueImpl::Container(Container::VecBool(RcId::new( RefCell::new(it.into_iter().collect()), )))) } pub fn vector_address(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::VecAddress(Rc::new( + Self(ValueImpl::Container(Container::VecAddress(RcId::new( RefCell::new(it.into_iter().collect()), )))) } // REVIEW: This API can break pub fn vector_for_testing_only(it: impl IntoIterator) -> Self { - Self(ValueImpl::Container(Container::Vec(Rc::new(RefCell::new( - it.into_iter().map(|v| v.0).collect(), - ))))) + Self(ValueImpl::Container(Container::Vec(RcId::new( + RefCell::new(it.into_iter().map(|v| v.0).collect()), + )))) } } @@ -2215,9 +2310,9 @@ impl Vector { ), Type::Signer | Type::Vector(_) | Type::Struct(_) | Type::StructInstantiation(_, _) => { - Value(ValueImpl::Container(Container::Vec(Rc::new(RefCell::new( - elements.into_iter().map(|v| v.0).collect(), - ))))) + Value(ValueImpl::Container(Container::Vec(RcId::new( + RefCell::new(elements.into_iter().map(|v| v.0).collect()), + )))) } Type::Reference(_) | Type::MutableReference(_) | Type::TyParam(_) => { @@ -2525,10 +2620,10 @@ impl GlobalValueImpl { match self { Self::None | Self::Deleted => Err(PartialVMError::new(StatusCode::MISSING_DATA)), Self::Fresh { fields } => Ok(ValueImpl::ContainerRef(ContainerRef::Local( - Container::Struct(Rc::clone(fields)), + Container::Struct(RcId::clone(fields)), ))), Self::Cached { fields, status } => Ok(ValueImpl::ContainerRef(ContainerRef::Global { - container: Container::Struct(Rc::clone(fields)), + container: Container::Struct(RcId::clone(fields)), status: Rc::clone(status), })), } @@ -2649,7 +2744,7 @@ where } impl Container { - fn raw_address(&self) -> usize { + pub fn raw_address(&self) -> usize { use Container::*; match self { @@ -2666,6 +2761,24 @@ impl Container { VecAddress(r) => r.as_ptr() as usize, } } + + pub fn id(&self) -> ContainerId { + use Container::*; + + match self { + Locals(r) => r.id(), + Vec(r) => r.id(), + Struct(r) => r.id(), + VecU8(r) => r.id(), + VecU16(r) => r.id(), + VecU32(r) => r.id(), + VecU64(r) => r.id(), + VecU128(r) => r.id(), + VecU256(r) => r.id(), + VecBool(r) => r.id(), + VecAddress(r) => r.id(), + } + } } impl Locals { @@ -3108,33 +3221,33 @@ impl<'d> serde::de::DeserializeSeed<'d> for SeedWrapper<&MoveTypeLayout> { L::Vector(layout) => { let container = match &**layout { L::U8 => { - Container::VecU8(Rc::new(RefCell::new(Vec::deserialize(deserializer)?))) + Container::VecU8(RcId::new(RefCell::new(Vec::deserialize(deserializer)?))) } L::U16 => { - Container::VecU16(Rc::new(RefCell::new(Vec::deserialize(deserializer)?))) + Container::VecU16(RcId::new(RefCell::new(Vec::deserialize(deserializer)?))) } L::U32 => { - Container::VecU32(Rc::new(RefCell::new(Vec::deserialize(deserializer)?))) + Container::VecU32(RcId::new(RefCell::new(Vec::deserialize(deserializer)?))) } L::U64 => { - Container::VecU64(Rc::new(RefCell::new(Vec::deserialize(deserializer)?))) + Container::VecU64(RcId::new(RefCell::new(Vec::deserialize(deserializer)?))) } L::U128 => { - Container::VecU128(Rc::new(RefCell::new(Vec::deserialize(deserializer)?))) + Container::VecU128(RcId::new(RefCell::new(Vec::deserialize(deserializer)?))) } L::U256 => { - Container::VecU256(Rc::new(RefCell::new(Vec::deserialize(deserializer)?))) + Container::VecU256(RcId::new(RefCell::new(Vec::deserialize(deserializer)?))) } L::Bool => { - Container::VecBool(Rc::new(RefCell::new(Vec::deserialize(deserializer)?))) + Container::VecBool(RcId::new(RefCell::new(Vec::deserialize(deserializer)?))) } - L::Address => Container::VecAddress(Rc::new(RefCell::new(Vec::deserialize( + L::Address => Container::VecAddress(RcId::new(RefCell::new(Vec::deserialize( deserializer, )?))), layout => { let v = deserializer .deserialize_seq(VectorElementVisitor(SeedWrapper { layout }))?; - Container::Vec(Rc::new(RefCell::new(v))) + Container::Vec(RcId::new(RefCell::new(v))) } }; Ok(Value(ValueImpl::Container(container))) @@ -3543,65 +3656,65 @@ pub mod prop { L::Vector(layout) => match &**layout { L::U8 => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecU8(Rc::new( + Value(ValueImpl::Container(Container::VecU8(RcId::new( RefCell::new(vals), )))) }) .boxed(), L::U16 => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecU16(Rc::new( + Value(ValueImpl::Container(Container::VecU16(RcId::new( RefCell::new(vals), )))) }) .boxed(), L::U32 => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecU32(Rc::new( + Value(ValueImpl::Container(Container::VecU32(RcId::new( RefCell::new(vals), )))) }) .boxed(), L::U64 => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecU64(Rc::new( + Value(ValueImpl::Container(Container::VecU64(RcId::new( RefCell::new(vals), )))) }) .boxed(), L::U128 => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecU128(Rc::new( + Value(ValueImpl::Container(Container::VecU128(RcId::new( RefCell::new(vals), )))) }) .boxed(), L::U256 => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecU256(Rc::new( + Value(ValueImpl::Container(Container::VecU256(RcId::new( RefCell::new(vals), )))) }) .boxed(), L::Bool => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecBool(Rc::new( + Value(ValueImpl::Container(Container::VecBool(RcId::new( RefCell::new(vals), )))) }) .boxed(), L::Address => vec(any::(), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::VecAddress(Rc::new( + Value(ValueImpl::Container(Container::VecAddress(RcId::new( RefCell::new(vals), )))) }) .boxed(), layout => vec(value_strategy_with_layout(layout), 0..10) .prop_map(|vals| { - Value(ValueImpl::Container(Container::Vec(Rc::new(RefCell::new( - vals.into_iter().map(|val| val.0).collect(), - ))))) + Value(ValueImpl::Container(Container::Vec(RcId::new( + RefCell::new(vals.into_iter().map(|val| val.0).collect()), + )))) }) .boxed(), }, @@ -3708,10 +3821,97 @@ impl ValueImpl { (layout, val) => panic!("Cannot convert value {:?} as {:?}", val, layout), } } + + pub fn try_as_move_value(&self, layout: &MoveTypeLayout) -> PartialVMResult { + use MoveTypeLayout as L; + + match (layout, &self) { + (L::U8, ValueImpl::U8(x)) => Ok(MoveValue::U8(*x)), + (L::U16, ValueImpl::U16(x)) => Ok(MoveValue::U16(*x)), + (L::U32, ValueImpl::U32(x)) => Ok(MoveValue::U32(*x)), + (L::U64, ValueImpl::U64(x)) => Ok(MoveValue::U64(*x)), + (L::U128, ValueImpl::U128(x)) => Ok(MoveValue::U128(*x)), + (L::U256, ValueImpl::U256(x)) => Ok(MoveValue::U256(*x)), + (L::Bool, ValueImpl::Bool(x)) => Ok(MoveValue::Bool(*x)), + (L::Address, ValueImpl::Address(x)) => Ok(MoveValue::Address(*x)), + (L::Struct(struct_layout), ValueImpl::Container(Container::Struct(r))) => { + let mut fields = vec![]; + let field_layouts = struct_layout.clone().into_fields(); + for (v, field_layout) in r.borrow().iter().zip(field_layouts.iter()) { + fields.push(v.try_as_move_value(field_layout)?); + } + + Ok(MoveValue::Struct( + MoveStruct::new(fields).decorate(struct_layout), + )) + } + + (L::Vector(inner_layout), ValueImpl::Container(c)) => Ok(MoveValue::Vector(match c { + Container::VecU8(r) => r.borrow().iter().map(|u| MoveValue::U8(*u)).collect(), + Container::VecU16(r) => r.borrow().iter().map(|u| MoveValue::U16(*u)).collect(), + Container::VecU32(r) => r.borrow().iter().map(|u| MoveValue::U32(*u)).collect(), + Container::VecU64(r) => r.borrow().iter().map(|u| MoveValue::U64(*u)).collect(), + Container::VecU128(r) => r.borrow().iter().map(|u| MoveValue::U128(*u)).collect(), + Container::VecU256(r) => r.borrow().iter().map(|u| MoveValue::U256(*u)).collect(), + Container::VecBool(r) => r.borrow().iter().map(|u| MoveValue::Bool(*u)).collect(), + Container::VecAddress(r) => { + r.borrow().iter().map(|u| MoveValue::Address(*u)).collect() + } + Container::Vec(r) => r + .borrow() + .iter() + .map(|v| v.try_as_move_value(inner_layout)) + .collect::>()?, + Container::Struct(_) => self.err("got struct container when converting vec")?, + Container::Locals(_) => self.err("got locals container when converting vec")?, + })), + + (L::Signer, ValueImpl::Container(Container::Struct(r))) => { + let v = r.borrow(); + if v.len() != 1 { + self.err(format!("Unexpected signer layout: {:?}", v))?; + } + match &v[0] { + ValueImpl::Address(a) => Ok(MoveValue::Signer(*a)), + v => self.err(format!( + "Unexpected non-address while converting signer: {:?}", + v + )), + } + } + + (layout, ValueImpl::ContainerRef(r)) => { + // Do not perform deep copy, just copy by reference + // it does not cause VM borrowing issue, as the value lives short + let container = ValueImpl::Container(r.container().copy_by_ref()); + + container.try_as_move_value(layout) + } + + (layout, ValueImpl::IndexedRef(r)) => { + let value = r.copy_by_ref()?; + + value.0.try_as_move_value(layout) + } + + (layout, val) => self.err(format!("Cannot convert value {:?} as {:?}", val, layout)), + } + } + + fn err(&self, message: impl Into) -> PartialVMResult { + Err( + PartialVMError::new(StatusCode::UNKNOWN_INVARIANT_VIOLATION_ERROR) + .with_message(message.into()), + ) + } } impl Value { pub fn as_move_value(&self, layout: &MoveTypeLayout) -> MoveValue { self.0.as_move_value(layout) } + + pub fn try_as_move_value(&self, layout: &MoveTypeLayout) -> PartialVMResult { + self.0.try_as_move_value(layout) + } } diff --git a/external-crates/move/testing-infra/transactional-test-runner/src/framework.rs b/external-crates/move/testing-infra/transactional-test-runner/src/framework.rs index af349641ec16f3..74f77e6470a86e 100644 --- a/external-crates/move/testing-infra/transactional-test-runner/src/framework.rs +++ b/external-crates/move/testing-infra/transactional-test-runner/src/framework.rs @@ -352,6 +352,7 @@ fn display_return_values(return_values: SerializedReturnValues) -> Option( status, gas_charger, *epoch_id, + tx_ctx.call_traces(), ); (inner, effects, execution_result) } diff --git a/sui-execution/latest/sui-adapter/src/programmable_transactions/execution.rs b/sui-execution/latest/sui-adapter/src/programmable_transactions/execution.rs index f1bb51957e0a55..8eecb7ccf096dd 100644 --- a/sui-execution/latest/sui-adapter/src/programmable_transactions/execution.rs +++ b/sui-execution/latest/sui-adapter/src/programmable_transactions/execution.rs @@ -363,6 +363,7 @@ fn execute_move_call( let SerializedReturnValues { mutable_reference_outputs, return_values, + call_traces, } = vm_move_call( context, module_id, @@ -375,8 +376,8 @@ fn execute_move_call( by_mut_ref.len() == mutable_reference_outputs.len(), "lost mutable input" ); - context.take_user_events(module_id, index, last_instr)?; + context.tx_context.call_traces_mut().extend(call_traces); // save the link context because calls to `make_value` below can set new ones, and we don't want // it to be clobbered. diff --git a/sui-execution/v0/sui-adapter/src/execution_engine.rs b/sui-execution/v0/sui-adapter/src/execution_engine.rs index 0a19fbd65468e1..6b7625d9623c52 100644 --- a/sui-execution/v0/sui-adapter/src/execution_engine.rs +++ b/sui-execution/v0/sui-adapter/src/execution_engine.rs @@ -194,6 +194,7 @@ pub fn execute_transaction_to_effects( status, gas_charger, *epoch_id, + tx_ctx.call_traces(), ); (inner, effects, execution_result) }