diff --git a/.backportrc.json b/.backportrc.json
new file mode 100644
index 0000000000000..c790f84c9eb78
--- /dev/null
+++ b/.backportrc.json
@@ -0,0 +1,12 @@
+{
+ "repoOwner": "aptos-labs",
+ "repoName": "aptos-core",
+
+ "branchLabelMapping": {
+ "^v(\\d+).(\\d+)$": "aptos-release-v$1.$2"
+ },
+ "commitConflicts": true,
+ "prTitle": "[cp][{{targetBranch}}] {{sourcePullRequest.title}}",
+ "targetPRLabels": ["cherry-pick"],
+ "assignees": ["thepomeranian"]
+}
diff --git a/.cargo/config.toml b/.cargo/config.toml
index d7681b6c2c0a9..189584de8e2e2 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -17,7 +17,7 @@ x = "run --package aptos-cargo-cli --bin aptos-cargo-cli --"
[build]
rustflags = ["--cfg", "tokio_unstable", "-C", "force-frame-pointers=yes", "-C", "force-unwind-tables=yes"]
-# TODO(grao): Figure out whether we should enable other cpu features, and whether we should use a different way to configure them rather than list every single one here.
+# TODO(grao): Figure out whether we should enable othaer cpu features, and whether we should use a different way to configure them rather than list every single one here.
[target.x86_64-unknown-linux-gnu]
rustflags = ["--cfg", "tokio_unstable", "-C", "link-arg=-fuse-ld=lld", "-C", "force-frame-pointers=yes", "-C", "force-unwind-tables=yes", "-C", "target-feature=+sse4.2"]
diff --git a/.dockerignore b/.dockerignore
index 4236e8027a391..3a4bd7c40a38b 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -20,7 +20,7 @@
!**/*.errmap
!config/src/config/test_data
!aptos-move/aptos-gas-profiling/templates/
-!aptos-move/aptos-release-builder/data/release.yaml
+!aptos-move/aptos-release-builder/data/*.yaml
!aptos-move/aptos-release-builder/data/proposals/*
!aptos-move/framework/
!aptos-move/move-examples/hello_blockchain/
@@ -38,3 +38,6 @@
!testsuite/forge/src/backend/k8s/
!third_party/move/move-prover/boogie-backend/**/*.bpl
!testsuite/testcases/src/data/
+!types/src/jwks/rsa/insecure_test_jwk.json
+!types/src/jwks/rsa/secure_test_jwk.json
+!types/src/jwks/rsa/insecure_test_jwk_private_key.pem
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 0cbdd3628f006..708522c57bd6d 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,8 +1,8 @@
blank_issues_enabled: true
contact_links:
- - name: Questions and Help (on Stack Overflow)
- url: https://stackoverflow.com/questions/tagged/aptos
- about: Support and other Questions are handled by the team and the community on Stack Overflow.
+ - name: Questions and Help (on Aptos Developer Discussions)
+ url: (https://github.com/aptos-labs/aptos-developer-discussions/discussions
+ about: Support and other Questions are handled by the team and the community on Aptos Developer Discussions.
- name: Questions, Help and Chat (on Discord)
url: https://discord.gg/aptosnetwork
about: Contact the development team, contributors and community on Discord
diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml
index a92d6c8ea3bcc..11d59e9073cef 100644
--- a/.github/actionlint.yaml
+++ b/.github/actionlint.yaml
@@ -1,4 +1,4 @@
self-hosted-runner:
# Labels of self-hosted runners in array of string
labels:
- - high-perf-docker
+ - runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
diff --git a/.github/actions/general-lints/action.yaml b/.github/actions/general-lints/action.yaml
index 64260bb42de22..aa01b32c9d568 100644
--- a/.github/actions/general-lints/action.yaml
+++ b/.github/actions/general-lints/action.yaml
@@ -29,9 +29,7 @@ runs:
# Setup pnpm
- name: Setup pnpm
- uses: pnpm/action-setup@v2
- with:
- version: 8.2.0
+ uses: pnpm/action-setup@v4
# Install packages for examples and run package build, lint and tests
- name: Run ecosystem lint
diff --git a/.github/actions/move-tests-compiler-v2/action.yaml b/.github/actions/move-tests-compiler-v2/action.yaml
index 60c1ba1cb95cd..65411f58939a0 100644
--- a/.github/actions/move-tests-compiler-v2/action.yaml
+++ b/.github/actions/move-tests-compiler-v2/action.yaml
@@ -13,14 +13,6 @@ runs:
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0 # Fetch all git history for accurate target determination
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ inputs.GIT_CREDENTIALS }}
-
- # Install nextest
- - uses: taiki-e/install-action@v1.5.6
- with:
- tool: nextest
# Output the changed files
- name: Output the changed files
diff --git a/.github/actions/run-ts-sdk-e2e-tests/action.yaml b/.github/actions/run-ts-sdk-e2e-tests/action.yaml
index 247bdcfe6cc19..342164652e657 100644
--- a/.github/actions/run-ts-sdk-e2e-tests/action.yaml
+++ b/.github/actions/run-ts-sdk-e2e-tests/action.yaml
@@ -38,7 +38,7 @@ runs:
# Run a local testnet. This installs node and pnpm too.
- uses: aptos-labs/actions/run-local-testnet@main
with:
- PNPM_VERSION: 8.15.6
+ PNPM_VERSION: 8.3.1
DOCKER_ARTIFACT_REPO: ${{ inputs.GCP_DOCKER_ARTIFACT_REPO }}
CLI_GIT_REF: ${{ steps.get-docker-image-tag.outputs.IMAGE_TAG }}
diff --git a/.github/actions/rust-check-merge-base/action.yaml b/.github/actions/rust-check-merge-base/action.yaml
new file mode 100644
index 0000000000000..32906536122b2
--- /dev/null
+++ b/.github/actions/rust-check-merge-base/action.yaml
@@ -0,0 +1,19 @@
+name: Rust Check Merge Base
+description: Runs the rust merge base freshness check
+inputs:
+ GIT_CREDENTIALS:
+ description: "Optional credentials to pass to git. Useful if you need to pull private repos for dependencies"
+ required: false
+
+runs:
+ using: composite
+ steps:
+ # The source code must be checked out by the workflow that invokes this action.
+ - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
+ with:
+ GIT_CREDENTIALS: ${{ inputs.GIT_CREDENTIALS }}
+
+ # Check the freshness of the merge base
+ - name: Check the freshness of the merge base
+ run: cargo x check-merge-base -vvv
+ shell: bash
diff --git a/.github/actions/rust-doc-tests/action.yaml b/.github/actions/rust-doc-tests/action.yaml
new file mode 100644
index 0000000000000..511a32565a1c6
--- /dev/null
+++ b/.github/actions/rust-doc-tests/action.yaml
@@ -0,0 +1,16 @@
+name: Rust Doc Tests
+description: Runs only the rust doc tests
+inputs:
+ GIT_CREDENTIALS:
+ description: "Optional credentials to pass to git. Useful if you need to pull private repos for dependencies"
+ required: false
+
+runs:
+ using: composite
+ steps:
+ # The source code must be checked out by the workflow that invokes this action.
+
+ # Run the rust doc tests
+ - name: Run rust doc tests
+ run: cargo test --profile ci --locked --doc --workspace --exclude aptos-node-checker
+ shell: bash
diff --git a/.github/actions/rust-lints/action.yaml b/.github/actions/rust-lints/action.yaml
index 4ab32c04770c5..762aee0f957de 100644
--- a/.github/actions/rust-lints/action.yaml
+++ b/.github/actions/rust-lints/action.yaml
@@ -10,10 +10,6 @@ runs:
steps:
# The source code must be checkout out by the workflow that invokes this action.
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ inputs.GIT_CREDENTIALS }}
-
# Run the pre-commit checks
- uses: pre-commit/action@v3.0.0
diff --git a/.github/actions/rust-smoke-tests/action.yaml b/.github/actions/rust-smoke-tests/action.yaml
index 4f895164e726a..7bc9c532e1120 100644
--- a/.github/actions/rust-smoke-tests/action.yaml
+++ b/.github/actions/rust-smoke-tests/action.yaml
@@ -10,15 +10,6 @@ runs:
steps:
# The source code must be checkout out by the workflow that invokes this action.
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ inputs.GIT_CREDENTIALS }}
-
- # Install nextest
- - uses: taiki-e/install-action@v1.5.6
- with:
- tool: nextest
-
# Run a postgres database
- name: Run postgres database
run: docker run --detach -p 5432:5432 cimg/postgres:14.2
diff --git a/.github/actions/rust-targeted-unit-tests/action.yaml b/.github/actions/rust-targeted-unit-tests/action.yaml
index e3948ba59dd49..98188ce34b7d2 100644
--- a/.github/actions/rust-targeted-unit-tests/action.yaml
+++ b/.github/actions/rust-targeted-unit-tests/action.yaml
@@ -9,14 +9,6 @@ runs:
using: composite
steps:
# The source code must be checked out by the workflow that invokes this action.
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ inputs.GIT_CREDENTIALS }}
-
- # Install nextest
- - uses: taiki-e/install-action@v1.5.6
- with:
- tool: nextest
# Run a postgres database
- name: Run postgres database
@@ -25,18 +17,18 @@ runs:
# Output the changed files
- name: Output the changed files
- run: cargo x changed-files -vv
+ run: cargo x changed-files -vvv
shell: bash
# Output the affected packages
- name: Output the affected packages
- run: cargo x affected-packages -vv
+ run: cargo x affected-packages -vvv
shell: bash
# Run only the targeted rust unit tests
- name: Run only the targeted unit tests
run: |
- cargo x targeted-unit-tests -vv --profile ci --cargo-profile ci --locked --no-fail-fast --retries 3
+ cargo x targeted-unit-tests -vvv --profile ci --cargo-profile ci --locked --no-fail-fast --retries 3
shell: bash
env:
INDEXER_DATABASE_URL: postgresql://postgres@localhost/postgres
diff --git a/.github/actions/rust-unit-tests/action.yaml b/.github/actions/rust-unit-tests/action.yaml
index a0fb2c8103f1f..e88a2c2e9a0dd 100644
--- a/.github/actions/rust-unit-tests/action.yaml
+++ b/.github/actions/rust-unit-tests/action.yaml
@@ -4,17 +4,11 @@ inputs:
GIT_CREDENTIALS:
description: "Optional credentials to pass to git. Useful if you need to pull private repos for dependencies"
required: false
- BUILDKITE_ANALYTICS_TOKEN:
- description: "The Buildkite API token"
- required: true
runs:
using: composite
steps:
# The source code must be checkout out by the workflow that invokes this action.
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ inputs.GIT_CREDENTIALS }}
# Check the VM features
- name: Check VM features
@@ -26,16 +20,6 @@ runs:
run: cargo test --profile ci --locked --doc --workspace --exclude aptos-node-checker
shell: bash
- # Install nextest
- - uses: taiki-e/install-action@v1.5.6
- with:
- tool: nextest
-
- # Install buildkite-test-collector
- - name: Install buildkite-test-collector
- run: cargo install buildkite-test-collector
- shell: bash
-
# Run a postgres database
- name: Run postgres database
run: docker run --detach -p 5432:5432 cimg/postgres:14.2
@@ -44,8 +28,7 @@ runs:
# Run the rust unit tests
- name: Run all unit tests
run: |
- NEXTEST_EXPERIMENTAL_LIBTEST_JSON=1 cargo nextest run --profile ci --cargo-profile ci --locked --workspace --exclude smoke-test --exclude aptos-testcases --retries 3 --no-fail-fast --message-format libtest-json > nextest_output.json || python3 .github/actions/rust-unit-tests/nextest_summary.py nextest_output.json "$GITHUB_STEP_SUMMARY" -f
- buildkite-test-collector < nextest_output.json || echo "Warning: buildkite-test-collector encountered an error"
+ NEXTEST_EXPERIMENTAL_LIBTEST_JSON=1 cargo nextest run --profile ci --cargo-profile ci --locked --workspace --exclude smoke-test --exclude aptos-testcases --exclude aptos-keyless-circuit --retries 3 --no-fail-fast --message-format libtest-json > nextest_output.json || python3 .github/actions/rust-unit-tests/nextest_summary.py nextest_output.json "$GITHUB_STEP_SUMMARY" -f
python3 .github/actions/rust-unit-tests/nextest_summary.py nextest_output.json "$GITHUB_STEP_SUMMARY" || echo "summary generation had an error"
rm nextest_output.json
shell: bash
@@ -58,4 +41,3 @@ runs:
CVC5_EXE: /home/runner/bin/cvc5
DOTNET_ROOT: /home/runner/.dotnet
BOOGIE_EXE: /home/runner/.dotnet/tools/boogie
- BUILDKITE_ANALYTICS_TOKEN: ${{ inputs.BUILDKITE_ANALYTICS_TOKEN }}
diff --git a/.github/runs-on.yml b/.github/runs-on.yml
new file mode 100644
index 0000000000000..5394f6bda60ab
--- /dev/null
+++ b/.github/runs-on.yml
@@ -0,0 +1,10 @@
+images:
+ aptos-ubuntu-x64:
+ platform: "linux"
+ arch: "x64"
+ ami: "ami-07ce6402e4a205d44"
+ aptos-ubuntu-x64-latest:
+ platform: "linux"
+ arch: "x64"
+ owner: "058264343338" # aptos-ci AWS account id
+ name: "aptos-runs-on-*"
diff --git a/.github/workflows/adhoc-forge.yaml b/.github/workflows/adhoc-forge.yaml
index 3a3b0bd184000..843d1b86c5c52 100644
--- a/.github/workflows/adhoc-forge.yaml
+++ b/.github/workflows/adhoc-forge.yaml
@@ -1,5 +1,8 @@
name: "Ad-hoc Forge Run"
on:
+ pull_request:
+ paths:
+ - ".github/workflows/adhoc-forge.yaml"
workflow_dispatch:
inputs:
GIT_SHA:
@@ -28,6 +31,19 @@ on:
required: false
type: string
description: The Forge k8s cluster to be used for test
+ FORGE_ENABLE_HAPROXY:
+ required: false
+ default: false
+ type: boolean
+ description: enable haproxy for the forge test
+ FORGE_NUM_VALIDATORS:
+ required: false
+ type: string
+ description: Number of validators to use for the forge test
+ FORGE_NUM_VALIDATOR_FULLNODES:
+ required: false
+ type: string
+ description: Number of validator fullnodes to use for the forge test
permissions:
contents: read
@@ -47,13 +63,19 @@ jobs:
echo "FORGE_RUNNER_DURATION_SECS: ${{ inputs.FORGE_RUNNER_DURATION_SECS }}"
echo "FORGE_TEST_SUITE: ${{ inputs.FORGE_TEST_SUITE }}"
echo "FORGE_CLUSTER_NAME: ${{ inputs.FORGE_CLUSTER_NAME }}"
+ echo "FORGE_ENABLE_HAPROXY: ${{ inputs.FORGE_ENABLE_HAPROXY }}"
+ echo "FORGE_NUM_VALIDATORS: ${{ inputs.FORGE_NUM_VALIDATORS }}"
+ echo "FORGE_NUM_VALIDATOR_FULLNODES: ${{ inputs.FORGE_NUM_VALIDATOR_FULLNODES }}"
outputs:
gitSha: ${{ inputs.GIT_SHA }}
imageTag: ${{ inputs.IMAGE_TAG }}
forgeImageTag: ${{ inputs.FORGE_IMAGE_TAG }}
- forgeRunnerDurationSecs: ${{ inputs.FORGE_RUNNER_DURATION_SECS }}
+ forgeRunnerDurationSecs: ${{ inputs.FORGE_RUNNER_DURATION_SECS || 600 }}
forgeTestSuite: ${{ inputs.FORGE_TEST_SUITE }}
forgeClusterName: ${{ inputs.FORGE_CLUSTER_NAME }}
+ forgeEnableHaproxy: ${{ inputs.FORGE_ENABLE_HAPROXY }}
+ forgeNumValidators: ${{ inputs.FORGE_NUM_VALIDATORS }}
+ forgeNumValidatorFullnodes: ${{ inputs.FORGE_NUM_VALIDATOR_FULLNODES }}
adhoc-forge-test:
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
@@ -66,3 +88,6 @@ jobs:
FORGE_TEST_SUITE: ${{ needs.determine-forge-run-metadata.outputs.forgeTestSuite }}
FORGE_RUNNER_DURATION_SECS: ${{ fromJSON(needs.determine-forge-run-metadata.outputs.forgeRunnerDurationSecs) }} # fromJSON converts to integer
FORGE_CLUSTER_NAME: ${{ needs.determine-forge-run-metadata.outputs.forgeClusterName }}
+ FORGE_ENABLE_HAPROXY: ${{ needs.determine-forge-run-metadata.outputs.forgeEnableHaproxy }}
+ FORGE_NUM_VALIDATORS: ${{ needs.determine-forge-run-metadata.outputs.forgeNumValidators }}
+ FORGE_NUM_VALIDATOR_FULLNODES: ${{ needs.determine-forge-run-metadata.outputs.forgeNumValidatorFullnodes }}
diff --git a/.github/workflows/backport-to-release-branches.yaml b/.github/workflows/backport-to-release-branches.yaml
new file mode 100644
index 0000000000000..e006d95b78d7e
--- /dev/null
+++ b/.github/workflows/backport-to-release-branches.yaml
@@ -0,0 +1,38 @@
+name: Backport to Release Branches
+
+on:
+ pull_request_target:
+ types: ["labeled", "closed"]
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ permission-check:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check repository permission for user which triggered workflow
+ uses: sushichop/action-repository-permission@13d208f5ae7a6a3fc0e5a7c2502c214983f0241c
+ with:
+ required-permission: write
+ comment-not-permitted: Sorry, you don't have permission to trigger this workflow.
+
+ backport:
+ name: Backport PR
+ needs: [permission-check]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Backport Action
+ uses: sorenlouv/backport-github-action@ad888e978060bc1b2798690dd9d03c4036560947
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ add_original_reviewers: true
+
+ - name: Info log
+ if: ${{ success() }}
+ run: cat ~/.backport/backport.info.log
+
+ - name: Debug log
+ if: ${{ failure() }}
+ run: cat ~/.backport/backport.debug.log
diff --git a/.github/workflows/check-protos.yaml b/.github/workflows/check-protos.yaml
index acb4a5016a654..adc7cae232c32 100644
--- a/.github/workflows/check-protos.yaml
+++ b/.github/workflows/check-protos.yaml
@@ -51,9 +51,7 @@ jobs:
version: "25.x"
# Set up pnpm.
- - uses: pnpm/action-setup@v2
- with:
- version: 8.6.2
+ - uses: pnpm/action-setup@v4
# Set up Poetry.
- name: Install Python deps for generating code from protos
diff --git a/.github/workflows/check-sdk-examples.yaml b/.github/workflows/check-sdk-examples.yaml
index 6e3c5221f9984..b45b52f11267c 100644
--- a/.github/workflows/check-sdk-examples.yaml
+++ b/.github/workflows/check-sdk-examples.yaml
@@ -27,7 +27,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
# Run example code in typescript.
- uses: nick-fields/retry@7f8f3d9f0f62fe5925341be21c2e8314fd4f7c7c # pin@v2
diff --git a/.github/workflows/cli-e2e-tests.yaml b/.github/workflows/cli-e2e-tests.yaml
index c068d31516f4d..70a1415ba9708 100644
--- a/.github/workflows/cli-e2e-tests.yaml
+++ b/.github/workflows/cli-e2e-tests.yaml
@@ -25,7 +25,7 @@ jobs:
# we ensure that the Aptos CLI works with all 3 prod networks, at least
# based on the tests in the test suite.
run-cli-tests:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
permissions:
contents: read
id-token: write
diff --git a/.github/workflows/copy-images-to-dockerhub.yaml b/.github/workflows/copy-images-to-dockerhub.yaml
index b2c11a156c6e1..a0063eef1c5bc 100644
--- a/.github/workflows/copy-images-to-dockerhub.yaml
+++ b/.github/workflows/copy-images-to-dockerhub.yaml
@@ -52,7 +52,7 @@ jobs:
with:
node-version-file: .node-version
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- name: Release Images
env:
diff --git a/.github/workflows/coverage-move-only.yaml b/.github/workflows/coverage-move-only.yaml
index 77c73f0cb3b4c..e0b35b9671762 100644
--- a/.github/workflows/coverage-move-only.yaml
+++ b/.github/workflows/coverage-move-only.yaml
@@ -30,7 +30,7 @@ concurrency:
jobs:
rust-move-unit-coverage:
timeout-minutes: 60
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
@@ -46,11 +46,11 @@ jobs:
echo "/home/runner/.dotnet" | tee -a $GITHUB_PATH
echo "/home/runner/.dotnet/tools" | tee -a $GITHUB_PATH
- run: rustup component add llvm-tools-preview
- - uses: taiki-e/install-action@6f1ebcd9e21315fc37d7f7bc851dfcc8356d7da3 # pin@v1.5.6
+ - uses: taiki-e/install-action@4fedbddde88aab767a45a011661f832d68202716 # pin@v2.33.28
with:
tool: nextest,cargo-llvm-cov
- run: docker run --detach -p 5432:5432 cimg/postgres:14.2
- - run: cargo llvm-cov --ignore-run-fail -p aptos-framework -p "move*" --lcov --jobs 32 --output-path lcov_unit.info
+ - run: cargo llvm-cov nextest --lcov --output-path lcov_unit.info --ignore-run-fail -p aptos-framework -p "move*"
env:
INDEXER_DATABASE_URL: postgresql://postgres@localhost/postgres
- uses: actions/upload-artifact@v3
diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml
index 5860e91e606a2..c599f3ef023dd 100644
--- a/.github/workflows/coverage.yaml
+++ b/.github/workflows/coverage.yaml
@@ -27,18 +27,18 @@ jobs:
(github.event_name == 'schedule' && github.ref_name == 'main')
# Note the tests run slowly due to instrutmentation. It takes CI 10 hrs
timeout-minutes: 720
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # get all the history because cargo xtest --change-since origin/main requires it.
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- run: rustup component add llvm-tools-preview
- - uses: taiki-e/install-action@6f1ebcd9e21315fc37d7f7bc851dfcc8356d7da3 # pin@v1.5.6
+ - uses: taiki-e/install-action@4fedbddde88aab767a45a011661f832d68202716 # pin@v2.33.28
with:
tool: nextest,cargo-llvm-cov
- run: docker run --detach -p 5432:5432 cimg/postgres:14.2
- - run: cargo llvm-cov --ignore-run-fail --workspace --exclude smoke-test --exclude aptos-testcases --lcov --jobs 32 --output-path lcov_unit.info -vv
+ - run: cargo llvm-cov nextest --lcov --output-path lcov_unit.info -vv --ignore-run-fail --workspace --exclude smoke-test --exclude aptos-testcases
env:
INDEXER_DATABASE_URL: postgresql://postgres@localhost/postgres
RUST_MIN_STACK: 33554432 # 32 MB of stack
@@ -58,18 +58,18 @@ jobs:
contains(github.event.pull_request.labels.*.name, 'CICD:run-coverage') ||
(github.event_name == 'schedule' && github.ref_name == 'main')
timeout-minutes: 720 # incremented from 240 due to execution time limit hit in cron
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # get all the history because cargo xtest --change-since origin/main requires it.
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- run: rustup component add llvm-tools-preview
- - uses: taiki-e/install-action@6f1ebcd9e21315fc37d7f7bc851dfcc8356d7da3 # pin@v1.5.6
+ - uses: taiki-e/install-action@4fedbddde88aab767a45a011661f832d68202716 # pin@v2.33.28
with:
tool: nextest,cargo-llvm-cov
- run: docker run --detach -p 5432:5432 cimg/postgres:14.2
- - run: cargo llvm-cov --ignore-run-fail --package smoke-test --lcov --output-path lcov_smoke.info -vv
+ - run: cargo build --locked --package=aptos-node --features=failpoints,indexer --release && LLVM_PROFDATA_FLAGS="--failure-mode=all" LOCAL_SWARM_NODE_RELEASE=1 cargo llvm-cov nextest --lcov --output-path lcov_smoke.info -vv --ignore-run-fail --profile smoke-test -p smoke-test
env:
INDEXER_DATABASE_URL: postgresql://postgres@localhost/postgres
RUST_MIN_STACK: 33554432
diff --git a/.github/workflows/docker-build-rosetta.yaml b/.github/workflows/docker-build-rosetta.yaml
index 8d5b32b60c86c..6139c8d8ed194 100644
--- a/.github/workflows/docker-build-rosetta.yaml
+++ b/.github/workflows/docker-build-rosetta.yaml
@@ -17,7 +17,7 @@ permissions:
jobs:
build:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/docker-build-test.yaml b/.github/workflows/docker-build-test.yaml
index efccf0e2c2f78..bed1625f8697e 100644
--- a/.github/workflows/docker-build-test.yaml
+++ b/.github/workflows/docker-build-test.yaml
@@ -312,7 +312,7 @@ jobs:
with:
GIT_SHA: ${{ needs.determine-docker-build-metadata.outputs.gitSha }}
FORGE_TEST_SUITE: compat
- IMAGE_TAG: 01b24e7e3548382dd25440b39a0438a993387f12 #aptos-node-v1.11 with randomness disabled in genesis
+ IMAGE_TAG: 1c2ee7082d6eff8c811ee25d6f5a7d00860a75d5 #aptos-node-v1.16.0
FORGE_RUNNER_DURATION_SECS: 300
COMMENT_HEADER: forge-compat
FORGE_NAMESPACE: forge-compat-${{ needs.determine-docker-build-metadata.outputs.targetCacheId }}
@@ -340,7 +340,7 @@ jobs:
with:
GIT_SHA: ${{ needs.determine-docker-build-metadata.outputs.gitSha }}
FORGE_TEST_SUITE: framework_upgrade
- IMAGE_TAG: 01b24e7e3548382dd25440b39a0438a993387f12 #aptos-node-v1.11 with randomness disabled in genesis
+ IMAGE_TAG: 1c2ee7082d6eff8c811ee25d6f5a7d00860a75d5 #aptos-node-v1.16.0
FORGE_RUNNER_DURATION_SECS: 3600
COMMENT_HEADER: forge-framework-upgrade
FORGE_NAMESPACE: forge-framework-upgrade-${{ needs.determine-docker-build-metadata.outputs.targetCacheId }}
diff --git a/.github/workflows/faucet-tests-main.yaml b/.github/workflows/faucet-tests-main.yaml
index 82f35a0699ba2..0ca51a2f84708 100644
--- a/.github/workflows/faucet-tests-main.yaml
+++ b/.github/workflows/faucet-tests-main.yaml
@@ -49,7 +49,7 @@ jobs:
# be compatible in production.
run-tests-main:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
if: ${{ !inputs.SKIP_JOB }}
diff --git a/.github/workflows/faucet-tests-prod.yaml b/.github/workflows/faucet-tests-prod.yaml
index 58b0a2dfee5cc..940ef883a1e20 100644
--- a/.github/workflows/faucet-tests-prod.yaml
+++ b/.github/workflows/faucet-tests-prod.yaml
@@ -37,7 +37,7 @@ jobs:
run-tests-devnet:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
needs: [permission-check]
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
- uses: aptos-labs/aptos-core/.github/actions/docker-setup@main
@@ -57,7 +57,7 @@ jobs:
run-tests-testnet:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
needs: [permission-check]
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
permissions:
contents: read
id-token: write
diff --git a/.github/workflows/find-packages-with-undeclared-feature-dependencies.yaml b/.github/workflows/find-packages-with-undeclared-feature-dependencies.yaml
index 42ee5c8f3db93..45dfe907189b5 100644
--- a/.github/workflows/find-packages-with-undeclared-feature-dependencies.yaml
+++ b/.github/workflows/find-packages-with-undeclared-feature-dependencies.yaml
@@ -4,7 +4,7 @@ on:
jobs:
find-packages-with-undeclared-feature-dependencies:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
diff --git a/.github/workflows/forge-stable.yaml b/.github/workflows/forge-stable.yaml
index 3ee64df78ab4f..f9a40f10b2c8c 100644
--- a/.github/workflows/forge-stable.yaml
+++ b/.github/workflows/forge-stable.yaml
@@ -24,15 +24,14 @@ on:
required: false
type: string
description: The git SHA1 to checkout. This affects the Forge test runner that is used. If not specified, the latest main will be used
+ # NOTE: to support testing different branches on different schedules, you need to specify the cron schedule in the 'determine-test-branch' step as well below
+ # Reference: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
schedule:
- - cron: "0 6 * * *" # The main branch cadence. This runs every day at 6am UTC.
+ - cron: "0 22 * * 0,2,4" # The main branch cadence. This runs every Sun,Tues,Thurs
pull_request:
paths:
- ".github/workflows/forge-stable.yaml"
- "testsuite/find_latest_image.py"
- push:
- branches:
- - aptos-release-v* # the aptos release branches
env:
AWS_ACCOUNT_NUM: ${{ secrets.ENV_ECR_AWS_ACCOUNT_NUM }}
@@ -55,9 +54,10 @@ jobs:
- name: Determine branch based on cadence
id: determine-test-branch
+ # NOTE: the schedule cron MUST match the one in the 'on.schedule.cron' section above
run: |
if [[ "${{ github.event_name }}" == "schedule" ]]; then
- if [[ "${{ github.event.schedule }}" == "0 6 * * *" ]]; then
+ if [[ "${{ github.event.schedule }}" == "0 22 * * 0,2,4" ]]; then
echo "Branch: main"
echo "BRANCH=main" >> $GITHUB_OUTPUT
else
@@ -128,33 +128,21 @@ jobs:
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
with:
- IMAGE_TAG: 01b24e7e3548382dd25440b39a0438a993387f12 #aptos-node-v1.11 with randomness disabled in genesis
+ IMAGE_TAG: 1c2ee7082d6eff8c811ee25d6f5a7d00860a75d5 #aptos-node-v1.16.0
FORGE_NAMESPACE: forge-framework-upgrade-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
FORGE_RUNNER_DURATION_SECS: 7200 # Run for 2 hours
FORGE_TEST_SUITE: framework_upgrade
POST_TO_SLACK: true
- run-forge-realistic-env-max-load-long:
- if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, run-forge-framework-upgrade-test] # Only run after the previous job completes
- uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
- secrets: inherit
- with:
- IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
- FORGE_NAMESPACE: forge-realistic-env-max-load-long-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
- FORGE_RUNNER_DURATION_SECS: 7200 # Run for 2 hours
- FORGE_TEST_SUITE: realistic_env_max_load_large
- POST_TO_SLACK: true
-
run-forge-realistic-env-load-sweep:
if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, run-forge-realistic-env-max-load-long] # Only run after the previous job completes
+ needs: [determine-test-metadata, run-forge-framework-upgrade-test] # Only run after the previous job completes
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
with:
IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
FORGE_NAMESPACE: forge-realistic-env-load-sweep-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
- FORGE_RUNNER_DURATION_SECS: 1500 # Run for 25 minutes (5 tests, each for 300 seconds)
+ FORGE_RUNNER_DURATION_SECS: 1800 # Run for 30 minutes (6 tests, each for 300 seconds)
FORGE_TEST_SUITE: realistic_env_load_sweep
POST_TO_SLACK: true
@@ -166,7 +154,7 @@ jobs:
with:
IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
FORGE_NAMESPACE: forge-realistic-env-workload-sweep-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
- FORGE_RUNNER_DURATION_SECS: 1600 # Run for 26 minutes (4 tests, each for 400 seconds)
+ FORGE_RUNNER_DURATION_SECS: 2000 # Run for 33 minutes (5 tests, each for 400 seconds)
FORGE_TEST_SUITE: realistic_env_workload_sweep
POST_TO_SLACK: true
@@ -182,11 +170,35 @@ jobs:
FORGE_TEST_SUITE: realistic_env_graceful_overload
POST_TO_SLACK: true
- run-forge-realistic-network-tuned-for-throughput:
+ run-forge-realistic-env-graceful-workload-sweep:
if: ${{ github.event_name != 'pull_request' && always() }}
needs: [determine-test-metadata, run-forge-realistic-env-graceful-overload] # Only run after the previous job completes
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
+ with:
+ IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
+ FORGE_NAMESPACE: forge-realistic-env-graceful-workload-sweep-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
+ FORGE_RUNNER_DURATION_SECS: 2100 # Run for 5 minutes per test, 7 tests.
+ FORGE_TEST_SUITE: realistic_env_graceful_workload_sweep
+ POST_TO_SLACK: true
+
+ run-forge-realistic-env-fairness-workload-sweep:
+ if: ${{ github.event_name != 'pull_request' && always() }}
+ needs: [determine-test-metadata, run-forge-realistic-env-graceful-workload-sweep] # Only run after the previous job completes
+ uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
+ secrets: inherit
+ with:
+ IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
+ FORGE_NAMESPACE: forge-realistic-env-fairness-workload-sweep-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
+ FORGE_RUNNER_DURATION_SECS: 900 # Run for 5 minutes per test, 3 tests.
+ FORGE_TEST_SUITE: realistic_env_fairness_workload_sweep
+ POST_TO_SLACK: true
+
+ run-forge-realistic-network-tuned-for-throughput:
+ if: ${{ github.event_name != 'pull_request' && always() }}
+ needs: [ determine-test-metadata, run-forge-realistic-env-fairness-workload-sweep ] # Only run after the previous job completes
+ uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
+ secrets: inherit
with:
IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
FORGE_NAMESPACE: forge-realistic-network-tuned-for-throughput-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
@@ -233,22 +245,9 @@ jobs:
FORGE_TEST_SUITE: single_vfn_perf
POST_TO_SLACK: true
- run-forge-haproxy:
- if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, run-forge-single-vfn-perf] # Only run after the previous job completes
- uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
- secrets: inherit
- with:
- IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
- FORGE_NAMESPACE: forge-haproxy-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
- FORGE_RUNNER_DURATION_SECS: 600 # Run for 10 minutes
- FORGE_ENABLE_HAPROXY: true
- FORGE_TEST_SUITE: realistic_env_max_load
- POST_TO_SLACK: true
-
run-forge-fullnode-reboot-stress-test:
if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, run-forge-haproxy] # Only run after the previous job completes
+ needs: [determine-test-metadata, run-forge-single-vfn-perf] # Only run after the previous job completes
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
with:
@@ -270,7 +269,7 @@ jobs:
FORGE_RUNNER_DURATION_SECS: 300 # Run for 5 minutes
# This will upgrade from testnet branch to the latest main
FORGE_TEST_SUITE: compat
- IMAGE_TAG: 01b24e7e3548382dd25440b39a0438a993387f12 #aptos-node-v1.11 with randomness disabled in genesis
+ IMAGE_TAG: 1c2ee7082d6eff8c811ee25d6f5a7d00860a75d5 #aptos-node-v1.16.0
GIT_SHA: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }} # this is the git ref to checkout
POST_TO_SLACK: true
@@ -314,3 +313,18 @@ jobs:
FORGE_RUNNER_DURATION_SECS: 900 # Run for 15 minutes
FORGE_TEST_SUITE: pfn_const_tps_with_realistic_env
POST_TO_SLACK: true
+
+
+ # longest test for last, to get useful signal from short tests first
+
+ run-forge-realistic-env-max-load-long:
+ if: ${{ github.event_name != 'pull_request' && always() }}
+ needs: [determine-test-metadata, run-forge-pfn-const-tps-realistic-env] # Only run after the previous job completes
+ uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
+ secrets: inherit
+ with:
+ IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
+ FORGE_NAMESPACE: forge-realistic-env-max-load-long-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
+ FORGE_RUNNER_DURATION_SECS: 7200 # Run for 2 hours
+ FORGE_TEST_SUITE: realistic_env_max_load_large
+ POST_TO_SLACK: true
diff --git a/.github/workflows/forge-unstable.yaml b/.github/workflows/forge-unstable.yaml
index dc0d6e5eb4d4f..bfc926007220e 100644
--- a/.github/workflows/forge-unstable.yaml
+++ b/.github/workflows/forge-unstable.yaml
@@ -101,7 +101,7 @@ jobs:
run-forge-state-sync-slow-processing-catching-up-test:
if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, forge-continuous] # Only run after the previous job completes
+ needs: [ determine-test-metadata, forge-continuous ] # Only run after the previous job completes
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
with:
@@ -116,7 +116,7 @@ jobs:
run-forge-twin-validator-test:
if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, run-forge-state-sync-slow-processing-catching-up-test] # Only run after the previous job completes
+ needs: [ determine-test-metadata, run-forge-state-sync-slow-processing-catching-up-test ] # Only run after the previous job completes
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
with:
@@ -130,7 +130,7 @@ jobs:
run-forge-state-sync-failures-catching-up-test:
if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, run-forge-twin-validator-test] # Only run after the previous job completes
+ needs: [ determine-test-metadata, run-forge-twin-validator-test ] # Only run after the previous job completes
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
with:
@@ -145,7 +145,7 @@ jobs:
run-forge-validator-reboot-stress-test:
if: ${{ github.event_name != 'pull_request' && always() }}
- needs: [determine-test-metadata, run-forge-state-sync-failures-catching-up-test] # Only run after the previous job completes
+ needs: [ determine-test-metadata, run-forge-state-sync-failures-catching-up-test ] # Only run after the previous job completes
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
secrets: inherit
with:
@@ -156,3 +156,18 @@ jobs:
FORGE_RUNNER_DURATION_SECS: 2400 # Run for 40 minutes
FORGE_TEST_SUITE: validator_reboot_stress_test
POST_TO_SLACK: true
+
+ run-forge-haproxy:
+ if: ${{ github.event_name != 'pull_request' && always() }}
+ needs: [ determine-test-metadata, run-forge-validator-reboot-stress-test ] # Only run after the previous job completes
+ uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main
+ secrets: inherit
+ with:
+ IMAGE_TAG: ${{ needs.determine-test-metadata.outputs.IMAGE_TAG }}
+ # GCP cluster
+ FORGE_CLUSTER_NAME: aptos-forge-1
+ FORGE_NAMESPACE: forge-haproxy-${{ needs.determine-test-metadata.outputs.BRANCH_HASH }}
+ FORGE_RUNNER_DURATION_SECS: 600 # Run for 10 minutes
+ FORGE_ENABLE_HAPROXY: true
+ FORGE_TEST_SUITE: realistic_env_max_load
+ POST_TO_SLACK: true
diff --git a/.github/workflows/fuzzer-test.yaml b/.github/workflows/fuzzer-test.yaml
new file mode 100644
index 0000000000000..5f63d44614dec
--- /dev/null
+++ b/.github/workflows/fuzzer-test.yaml
@@ -0,0 +1,33 @@
+name: "Fuzzers test"
+
+on:
+ pull_request:
+ types: [labeled, opened, synchronize, reopened, auto_merge_enabled]
+ push:
+ branches:
+ - main
+ workflow_dispatch:
+
+jobs:
+ test-fuzzers:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Maximize build space
+ uses: easimon/maximize-build-space@fc881a613ad2a34aca9c9624518214ebc21dfc0c
+ with:
+ root-reserve-mb: 4096
+ swap-size-mb: 1024
+ remove-dotnet: 'true'
+ remove-android: 'true'
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install Dependencies
+ shell: bash
+ run: |
+ scripts/dev_setup.sh -b
+
+ - name: Test Fuzzers
+ shell: bash
+ run: |
+ cd testsuite/fuzzer && ./fuzz.sh test
\ No newline at end of file
diff --git a/.github/workflows/indexer-grpc-integration-tests.yaml b/.github/workflows/indexer-grpc-integration-tests.yaml
index 5d739a532a24f..4a1c2aa93b181 100644
--- a/.github/workflows/indexer-grpc-integration-tests.yaml
+++ b/.github/workflows/indexer-grpc-integration-tests.yaml
@@ -30,7 +30,7 @@ jobs:
run-tests-local-testnet:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
needs: [permission-check]
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
env:
# spin up the local testnet using the latest devnet image
VALIDATOR_IMAGE_REPO: ${{ vars.GCP_DOCKER_ARTIFACT_REPO }}/validator
diff --git a/.github/workflows/keyless-circuit-daily-test.yaml b/.github/workflows/keyless-circuit-daily-test.yaml
new file mode 100644
index 0000000000000..8fecb6df2c516
--- /dev/null
+++ b/.github/workflows/keyless-circuit-daily-test.yaml
@@ -0,0 +1,32 @@
+name: "Keyless Circuit Daily Test"
+on:
+ # Allow us to manually run this specific workflow without a PR
+ workflow_dispatch:
+ schedule:
+ - cron: "12 12 * * *" # at 12:12 UTC every day
+ pull_request:
+ paths:
+ - ".github/workflows/keyless-circuit-daily-test.yaml"
+ - "keyless/circuit/**"
+env:
+ CARGO_INCREMENTAL: "0"
+ CARGO_TERM_COLOR: always
+
+# cancel redundant builds
+concurrency:
+ # cancel redundant builds on PRs (only on PR, not on branches)
+ group: ${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.ref) || github.sha }}
+ cancel-in-progress: true
+
+jobs:
+ run-all-circuit-tests:
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
+ timeout-minutes: 30
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0 # get all the history because cargo xtest --change-since origin/main requires it.
+ - uses: ./.github/actions/rust-setup
+ - run: |
+ . keyless/circuit/tools/install-deps.sh
+ cargo test -p aptos-keyless-circuit -- --nocapture
diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml
index 6782c2701e09e..6cc655ec8e75e 100644
--- a/.github/workflows/lint-test.yaml
+++ b/.github/workflows/lint-test.yaml
@@ -56,20 +56,16 @@ jobs:
# Run the crypto hasher domain separation checks
rust-cryptohasher-domain-separation-check:
needs: file_change_determinator
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-python@v4
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- run: python3 scripts/check-cryptohasher-symbols.py
# Run all rust lints. This is a PR required job.
rust-lints:
needs: file_change_determinator
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
@@ -83,6 +79,36 @@ jobs:
- run: echo "Skipping rust lints! Unrelated changes detected."
if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
+ # Run cargo deny. This is a PR required job.
+ rust-cargo-deny:
+ needs: file_change_determinator
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
+ - uses: EmbarkStudios/cargo-deny-action@v1
+ with:
+ command: check licenses
+ - run: echo "Skipping cargo deny! Unrelated changes detected."
+ if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
+
+ # Run the docs tests. This is a PR required job.
+ rust-doc-tests:
+ if: | # Only run when an appropriate event occurs
+ (
+ github.event_name == 'workflow_dispatch' ||
+ github.event_name == 'push' ||
+ contains(github.event.pull_request.labels.*.name, 'CICD:run-e2e-tests') ||
+ github.event.pull_request.auto_merge != null
+ )
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
+ steps:
+ - uses: actions/checkout@v4
+ - name: Run rust doc tests
+ uses: ./.github/actions/rust-doc-tests
+ with:
+ GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
+
# Run all rust smoke tests. This is a PR required job.
rust-smoke-tests:
needs: file_change_determinator
@@ -94,7 +120,7 @@ jobs:
github.event.pull_request.auto_merge != null) ||
contains(github.event.pull_request.body, '#e2e'
)
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
@@ -106,10 +132,32 @@ jobs:
- run: echo "Skipping rust smoke tests! Unrelated changes detected."
if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
+ # Check the freshess of the merge base. This is a PR required job.
+ rust-check-merge-base:
+ if: | # Don't run on release branches
+ (
+ !contains(github.event.pull_request.base.ref, '-release-')
+ )
+ needs: file_change_determinator
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ github.event.pull_request.head.sha }}
+ fetch-depth: 0 # Fetch all git history for accurate target determination
+ - name: Run the merge base freshness check
+ uses: ./.github/actions/rust-check-merge-base
+ with:
+ GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
+
# Run only the targeted rust unit tests. This is a PR required job.
rust-targeted-unit-tests:
+ if: | # Don't run on release branches. Instead, all unit tests will be triggered.
+ (
+ !contains(github.event.pull_request.base.ref, '-release-')
+ )
needs: file_change_determinator
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
with:
@@ -126,16 +174,16 @@ jobs:
(
github.event_name == 'workflow_dispatch' ||
github.event_name == 'push' ||
- contains(github.event.pull_request.labels.*.name, 'CICD:run-all-unit-tests')
+ contains(github.event.pull_request.labels.*.name, 'CICD:run-all-unit-tests') ||
+ contains(github.event.pull_request.base.ref, '-release-')
)
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
- name: Run rust unit tests
uses: ./.github/actions/rust-unit-tests
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- BUILDKITE_ANALYTICS_TOKEN: ${{ secrets.BUILDKITE_ANALYTICS_TOKEN }}
# Run the cached packages build. This is a PR required job.
rust-build-cached-packages:
@@ -147,13 +195,10 @@ jobs:
contains(github.event.pull_request.labels.*.name, 'CICD:run-e2e-tests') ||
github.event.pull_request.auto_merge != null
)
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- name: Run aptos cached packages build test
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
run: scripts/cargo_build_aptos_cached_packages.sh --check
@@ -162,32 +207,20 @@ jobs:
# Run the consensus only unit tests
rust-consensus-only-unit-test:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
if: contains(github.event.pull_request.labels.*.name, 'CICD:build-consensus-only-image')
steps:
- uses: actions/checkout@v4
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- - uses: taiki-e/install-action@v1.5.6
- with:
- tool: nextest
- run: cargo nextest run --locked --workspace --exclude smoke-test --exclude aptos-testcases --exclude aptos-api --exclude aptos-executor-benchmark --exclude aptos-backup-cli --retries 3 --no-fail-fast -F consensus-only-perf-test
env:
RUST_MIN_STACK: 4297152
# Run the consensus only smoke test
rust-consensus-only-smoke-test:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
if: contains(github.event.pull_request.labels.*.name, 'CICD:build-consensus-only-image')
steps:
- uses: actions/checkout@v4
- - uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
- with:
- GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- - uses: taiki-e/install-action@v1.5.6
- with:
- tool: nextest
# prebuild aptos-node binary, so that tests don't start before node is built.
# also prebuild aptos-node binary as a separate step to avoid feature unification issues
- run: cargo build --locked --package=aptos-node -F consensus-only-perf-test --release && LOCAL_SWARM_NODE_RELEASE=1 CONSENSUS_ONLY_PERF_TEST=1 cargo nextest run --release --package smoke-test -E "test(test_consensus_only_with_txn_emitter)" --run-ignored all
diff --git a/.github/workflows/move-test-compiler-v2.yaml b/.github/workflows/move-test-compiler-v2.yaml
index 1b7bf22e85fa1..449892ab72f59 100644
--- a/.github/workflows/move-test-compiler-v2.yaml
+++ b/.github/workflows/move-test-compiler-v2.yaml
@@ -26,7 +26,7 @@ concurrency:
jobs:
# Run Aptos Move Compiler v2 tests. This is a PR required job.
rust-move-tests:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
- name: Run Aptos Move tests with compiler V2
diff --git a/.github/workflows/node-api-compatibility-tests.yaml b/.github/workflows/node-api-compatibility-tests.yaml
index 4be84bf6f02fd..0593a7ec533a9 100644
--- a/.github/workflows/node-api-compatibility-tests.yaml
+++ b/.github/workflows/node-api-compatibility-tests.yaml
@@ -43,7 +43,7 @@ jobs:
# if there are any changes that would affect it within the PR / commit. If
# everything is checked in, run tests, build the SDK, and upload it to npmjs.
node-api-compatibility-tests:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
permissions:
contents: read
id-token: write
@@ -71,7 +71,7 @@ jobs:
# Self hosted runners don't have pnpm preinstalled.
# https://github.com/actions/setup-node/issues/182
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
if: ${{ !inputs.SKIP_JOB }}
# When using high-perf-docker, the CI is actually run with two containers
diff --git a/.github/workflows/prover-daily-test.yaml b/.github/workflows/prover-daily-test.yaml
index aecf35e45cf75..5ed59ec538937 100644
--- a/.github/workflows/prover-daily-test.yaml
+++ b/.github/workflows/prover-daily-test.yaml
@@ -22,7 +22,7 @@ concurrency:
jobs:
prover-inconsistency-test:
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
timeout-minutes: ${{ github.event_name == 'pull_request' && 10 || 480}}
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/prune-old-workflow-runs.yaml b/.github/workflows/prune-old-workflow-runs.yaml
index 65271424432e2..8f715eb35b543 100644
--- a/.github/workflows/prune-old-workflow-runs.yaml
+++ b/.github/workflows/prune-old-workflow-runs.yaml
@@ -20,7 +20,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- run: pnpm i && pnpm pruneGithubWorkflowRuns
env:
diff --git a/.github/workflows/replay-verify.yaml b/.github/workflows/replay-verify.yaml
index e03b338d566f8..d0e91d30a3723 100644
--- a/.github/workflows/replay-verify.yaml
+++ b/.github/workflows/replay-verify.yaml
@@ -23,11 +23,7 @@ on:
- ".github/workflows/replay-verify.yaml"
- "testsuite/replay_verify.py"
schedule:
- - cron: "0 22 * * *"
- push:
- branches:
- - aptos-release-v* # the aptos release branches
- - aptos-node-v*
+ - cron: "0 22 * * 0,2,4" # The main branch cadence. This runs every Sun,Tues,Thurs
# cancel redundant builds
concurrency:
@@ -86,7 +82,7 @@ jobs:
TIMEOUT_MINUTES: 480
test-replay:
- if: ${{ github.event_name == 'pull_request' }}
+ if: ${{ (github.event_name == 'pull_request') && contains(github.event.pull_request.labels.*.name, 'CICD:test-replay')}}
needs: determine-test-metadata
uses: ./.github/workflows/workflow-run-replay-verify.yaml
secrets: inherit
diff --git a/.github/workflows/run-gas-calibration.yaml b/.github/workflows/run-gas-calibration.yaml
index bf861c8ffd2aa..1f91062a4f633 100644
--- a/.github/workflows/run-gas-calibration.yaml
+++ b/.github/workflows/run-gas-calibration.yaml
@@ -25,7 +25,7 @@ concurrency:
jobs:
run-gas-calibration:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
with:
diff --git a/.github/workflows/rust-client-tests.yaml b/.github/workflows/rust-client-tests.yaml
index 90a3f07adff39..0b5ce8e5a9c9a 100644
--- a/.github/workflows/rust-client-tests.yaml
+++ b/.github/workflows/rust-client-tests.yaml
@@ -31,7 +31,7 @@ jobs:
run-tests-devnet:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
needs: [permission-check]
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
- uses: aptos-labs/aptos-core/.github/actions/docker-setup@main
@@ -50,7 +50,7 @@ jobs:
run-tests-testnet:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
needs: [permission-check]
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
- uses: aptos-labs/aptos-core/.github/actions/docker-setup@main
@@ -69,7 +69,7 @@ jobs:
run-tests-mainnet:
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
needs: [permission-check]
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
- uses: aptos-labs/aptos-core/.github/actions/docker-setup@main
diff --git a/.github/workflows/test-copy-images-to-dockerhub.yaml b/.github/workflows/test-copy-images-to-dockerhub.yaml
index 4f01de7814f18..b488d771f04c4 100644
--- a/.github/workflows/test-copy-images-to-dockerhub.yaml
+++ b/.github/workflows/test-copy-images-to-dockerhub.yaml
@@ -22,7 +22,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version-file: .node-version
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- run: pnpm install
- name: Test Release Images
run: ./docker/test.sh
diff --git a/.github/workflows/ts-sdk-e2e-tests.yaml b/.github/workflows/ts-sdk-e2e-tests.yaml
index 942d07e24f66d..c906451abd78b 100644
--- a/.github/workflows/ts-sdk-e2e-tests.yaml
+++ b/.github/workflows/ts-sdk-e2e-tests.yaml
@@ -53,7 +53,7 @@ jobs:
# Now that the latter runs against the local testnet too we make these land blocking.
run-tests-main-branch:
needs: [permission-check, file_change_determinator]
- runs-on: high-perf-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v3
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
diff --git a/.github/workflows/windows-build.yaml b/.github/workflows/windows-build.yaml
index e276fe5b9b84c..920d5d8f942f5 100644
--- a/.github/workflows/windows-build.yaml
+++ b/.github/workflows/windows-build.yaml
@@ -5,19 +5,20 @@ on:
workflow_dispatch:
pull_request:
types: [labeled, opened, synchronize, reopened, auto_merge_enabled]
- push:
- branches:
- - main
+ schedule:
+ # Run twice a day at 12PM PT and 8PM PT Monday through Friday
+ - cron: "0 19,3 * * 1-5"
+ # Run once a day at 12PM PT on Saturday and Sunday
+ - cron: "0 19 * * 6,0"
jobs:
windows-build:
- runs-on: windows-latest-8-core
+ runs-on: windows-latest
if: | # Only run on each PR once an appropriate event occurs
(
github.event_name == 'workflow_dispatch' ||
- github.event_name == 'push' ||
- contains(github.event.pull_request.labels.*.name, 'CICD:run-windows-tests') ||
- github.event.pull_request.auto_merge != null
+ github.event_name == 'schedule' ||
+ contains(github.event.pull_request.labels.*.name, 'CICD:run-windows-tests')
)
defaults:
run:
@@ -28,14 +29,17 @@ jobs:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0 # Fetch all git history for accurate target determination
+ - name: Set up WinGet
+ run: Set-Variable ProgressPreference SilentlyContinue ; PowerShell -ExecutionPolicy Bypass -File scripts/windows_dev_setup.ps1
+
# This action will cache ~/.cargo and ./target (or the equivalent on Windows in
# this case). See more here:
# https://github.com/Swatinem/rust-cache#cache-details
- name: Run cargo cache
uses: Swatinem/rust-cache@359a70e43a0bb8a13953b04a90f76428b4959bb6 # pin@v2.2.0
- - name: Install the developer tools
- run: PowerShell -ExecutionPolicy Bypass -File scripts/windows_dev_setup.ps1
+ - name: Install the Developer Tools
+ run: Set-Variable ProgressPreference SilentlyContinue ; PowerShell -ExecutionPolicy Bypass -File scripts/windows_dev_setup.ps1 -t
# This is required for the openssl-sys crate to build.
# See: https://github.com/sfackler/rust-openssl/issues/1542#issuecomment-1399358351
diff --git a/.github/workflows/workflow-run-docker-rust-build.yaml b/.github/workflows/workflow-run-docker-rust-build.yaml
index eb39e8a60438b..c21a5e10710bb 100644
--- a/.github/workflows/workflow-run-docker-rust-build.yaml
+++ b/.github/workflows/workflow-run-docker-rust-build.yaml
@@ -73,12 +73,27 @@ permissions:
jobs:
rust-all:
- runs-on: experimental-docker
+ runs-on: runs-on,cpu=64,family=c7,hdd=1024,image=aptos-ubuntu-x64,run-id=${{ github.run_id }},spot=co
steps:
- uses: actions/checkout@v3
with:
ref: ${{ env.GIT_SHA }}
+ - name: Setup Runs On Cache for Docker
+ uses: runs-on/cache@v4
+ with:
+ path: |
+ /home/runner/docker-cache.tzst
+ key: docker-buildkit-cache-${{ env.PROFILE }}-${{ env.FEATURES }}${{ hashFiles('Cargo.lock') }}
+
+ - name: Untar cache if present
+ run: |
+ if [ -f /home/runner/docker-cache.tzst ]; then
+ sudo systemctl stop docker
+ sudo tar --posix -xf /home/runner/docker-cache.tzst -P -C /var/lib/docker --use-compress-program zstdmt .
+ sudo systemctl start docker
+ fi
+
- uses: aptos-labs/aptos-core/.github/actions/docker-setup@main
with:
GCP_WORKLOAD_IDENTITY_PROVIDER: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
@@ -96,3 +111,11 @@ jobs:
BUILD_ADDL_TESTING_IMAGES: ${{ env.BUILD_ADDL_TESTING_IMAGES }}
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
TARGET_REGISTRY: ${{ env.TARGET_REGISTRY }}
+
+ - name: Prepare Docker for Caching
+ run: |
+ if [ ! -f /home/runner/docker-cache.tzst ]; then
+ sudo systemctl stop docker
+ sudo tar --posix -cf /home/runner/docker-cache.tzst -P -C /var/lib/docker --use-compress-program zstdmt .
+ fi
+
diff --git a/.github/workflows/workflow-run-forge.yaml b/.github/workflows/workflow-run-forge.yaml
index 5de05cc005469..4e0d9b30cfee4 100644
--- a/.github/workflows/workflow-run-forge.yaml
+++ b/.github/workflows/workflow-run-forge.yaml
@@ -72,6 +72,14 @@ on:
default: false
type: boolean
description: Set to true to skip this job. Useful for PRs that don't require this workflow.
+ FORGE_NUM_VALIDATORS:
+ required: false
+ type: string
+ description: Number of validators to use for the forge test
+ FORGE_NUM_VALIDATOR_FULLNODES:
+ required: false
+ type: string
+ description: Number of validator fullnodes to use for the forge test
env:
AWS_ACCOUNT_NUM: ${{ secrets.ENV_ECR_AWS_ACCOUNT_NUM }}
@@ -99,6 +107,8 @@ env:
COMMENT_HEADER: ${{ inputs.COMMENT_HEADER }}
VERBOSE: true
COMMENT_ON_PR: ${{ inputs.COMMENT_ON_PR }}
+ FORGE_NUM_VALIDATORS: ${{ inputs.FORGE_NUM_VALIDATORS }}
+ FORGE_NUM_VALIDATOR_FULLNODES: ${{ inputs.FORGE_NUM_VALIDATOR_FULLNODES }}
# TODO: should we migrate this to a composite action, so that we can skip it
# at the call site, and don't need to wrap each step in an if statement?
diff --git a/CODEOWNERS b/CODEOWNERS
index 0567e784df4cd..73eb4fa743af3 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -79,20 +79,10 @@
# Owners for the `/dashboards` directory and all its subdirectories.
/dashboards/ @aptos-labs/prod-eng
-# Owners for the `/developer-docs-site` directory and all its subdirectories.
-/developer-docs-site/ @davidiw @gregnazario @banool
-
-# Owner for docs tutorials for the token_standard and related tutorials.
-/developer-docs-site/docs/tutorials @areshand @gregnazario
-
# Owners for the `/docker` directory and all its subdirectories.
/docker/ @aptos-labs/prod-eng
/docker/builder/docker-bake-rust-all.hcl @aptos-labs/prod-eng @aptos-labs/security
-# Owners for the `SDKs`.
-/ecosystem/python/sdk @davidiw @gregnazario @banool @0xmaayan
-/ecosystem/typescript/sdk @gregnazario @banool @0xmaayan
-
# Owners for execution and storage.
/execution/ @msmouse @lightmark @grao1991
@@ -100,7 +90,7 @@
/mempool/ @bchocho
# Owners for the network and all its subdirectories.
-/network/ @gregnazario @joshlind @brianolson
+/network/ @joshlind @brianolson
# Owners for the scripts
/scripts/ @aptos-labs/prod-eng
diff --git a/Cargo.lock b/Cargo.lock
index 197dee80062a6..871e7f57e779e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -108,6 +108,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
+ "const-random",
"getrandom 0.2.11",
"once_cell",
"serde",
@@ -130,6 +131,27 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
+[[package]]
+name = "allocative"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "082af274fd02beef17b7f0725a49ecafe6c075ef56cac9d6363eb3916a9817ae"
+dependencies = [
+ "allocative_derive",
+ "ctor",
+]
+
+[[package]]
+name = "allocative_derive"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe233a377643e0fc1a56421d7c90acdec45c291b30345eb9f08e8d0ddce5a4ab"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
[[package]]
name = "allocator-api2"
version = "0.2.16"
@@ -240,7 +262,7 @@ dependencies = [
[[package]]
name = "aptos"
-version = "3.3.0"
+version = "4.0.0"
dependencies = [
"anyhow",
"aptos-api-types",
@@ -266,7 +288,7 @@ dependencies = [
"aptos-move-debugger",
"aptos-network-checker",
"aptos-node",
- "aptos-protos 1.3.0",
+ "aptos-protos 1.3.1",
"aptos-rest-client",
"aptos-sdk",
"aptos-storage-interface",
@@ -286,11 +308,11 @@ dependencies = [
"clap_complete",
"dashmap",
"diesel",
- "diesel-async 0.4.1 (git+https://github.com/weiznich/diesel_async.git?rev=d02798c67065d763154d7272dd0c09b39757d0f2)",
+ "diesel-async",
"dirs",
"futures",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"jemallocator",
"maplit",
"move-binary-format",
@@ -311,7 +333,8 @@ dependencies = [
"poem",
"processor",
"rand 0.7.3",
- "reqwest",
+ "regex",
+ "reqwest 0.11.23",
"self_update",
"serde",
"serde_json",
@@ -364,11 +387,11 @@ dependencies = [
"aptos-logger",
"aptos-runtimes",
"aptos-storage-interface",
- "aptos-system-utils",
+ "aptos-system-utils 0.1.0",
"aptos-types",
"bcs 0.1.4",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.28",
"sha256",
"tokio",
"url",
@@ -401,7 +424,6 @@ dependencies = [
"aptos-cached-packages",
"aptos-config",
"aptos-crypto",
- "aptos-db-indexer",
"aptos-framework",
"aptos-gas-meter",
"aptos-gas-schedule",
@@ -409,20 +431,19 @@ dependencies = [
"aptos-logger",
"aptos-mempool",
"aptos-metrics-core",
+ "aptos-move-stdlib",
"aptos-proptest-helpers",
"aptos-runtimes",
"aptos-sdk",
"aptos-storage-interface",
"aptos-types",
"aptos-vm",
- "async-trait",
"bcs 0.1.4",
"bytes",
"fail",
"futures",
"hex",
- "hyper",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"mime",
"mini-moka",
"move-core-types",
@@ -437,7 +458,7 @@ dependencies = [
"proptest",
"rand 0.7.3",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"tokio",
@@ -458,6 +479,7 @@ dependencies = [
"aptos-executor-types",
"aptos-framework",
"aptos-genesis",
+ "aptos-indexer-grpc-table-info",
"aptos-mempool",
"aptos-mempool-notifications",
"aptos-sdk",
@@ -470,7 +492,7 @@ dependencies = [
"bcs 0.1.4",
"bytes",
"goldenfile",
- "hyper",
+ "hyper 0.14.28",
"rand 0.7.3",
"regex",
"serde_json",
@@ -510,7 +532,6 @@ dependencies = [
"anyhow",
"aptos-config",
"aptos-crypto",
- "aptos-db-indexer",
"aptos-framework",
"aptos-logger",
"aptos-openapi",
@@ -542,12 +563,15 @@ dependencies = [
"aptos-config",
"aptos-crypto",
"aptos-db",
+ "aptos-db-indexer-schemas",
"aptos-executor",
"aptos-executor-test-helpers",
"aptos-executor-types",
+ "aptos-indexer-grpc-table-info",
"aptos-infallible",
"aptos-jellyfish-merkle",
"aptos-logger",
+ "aptos-metrics-core",
"aptos-proptest-helpers",
"aptos-push-metrics",
"aptos-storage-interface",
@@ -560,7 +584,7 @@ dependencies = [
"clap 4.4.14",
"csv",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-binary-format",
"move-bytecode-verifier",
"num_cpus",
@@ -569,7 +593,7 @@ dependencies = [
"proptest",
"rand 0.7.3",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"serde_yaml 0.8.26",
@@ -596,11 +620,12 @@ dependencies = [
"aptos-types",
"bcs 0.1.4",
"bytes",
- "hyper",
+ "hyper 0.14.28",
"once_cell",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"tokio",
+ "tokio-stream",
"warp",
]
@@ -648,7 +673,7 @@ dependencies = [
"dashmap",
"derivative",
"fail",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-binary-format",
"move-core-types",
"move-vm-types",
@@ -675,7 +700,7 @@ dependencies = [
"clap 4.4.14",
"criterion",
"dashmap",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"jemallocator",
"move-core-types",
"once_cell",
@@ -721,13 +746,14 @@ version = "0.1.0"
dependencies = [
"anyhow",
"camino",
+ "chrono",
"clap 4.4.14",
"clap-verbosity-flag",
"determinator",
"env_logger",
"guppy",
"log",
- "reqwest",
+ "reqwest 0.11.23",
"url",
]
@@ -770,7 +796,7 @@ dependencies = [
"bcs 0.1.4",
"clap 4.4.14",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-compiler",
"move-core-types",
"move-model",
@@ -817,7 +843,6 @@ dependencies = [
"get_if_addrs",
"maplit",
"num_cpus",
- "number_range",
"poem-openapi",
"rand 0.7.3",
"serde",
@@ -859,6 +884,7 @@ dependencies = [
"aptos-mempool",
"aptos-metrics-core",
"aptos-network",
+ "aptos-peer-monitoring-service-types",
"aptos-reliable-broadcast",
"aptos-runtimes",
"aptos-safety-rules",
@@ -884,15 +910,19 @@ dependencies = [
"futures",
"futures-channel",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
+ "lru 0.7.8",
"maplit",
"mini-moka",
"mirai-annotations",
+ "mockall",
"move-core-types",
"num-derive",
"num-traits",
"once_cell",
+ "ordered-float 3.9.2",
"proptest",
+ "proptest-derive",
"rand 0.7.3",
"rayon",
"scopeguard",
@@ -906,6 +936,7 @@ dependencies = [
"thiserror",
"tokio",
"tokio-retry",
+ "tokio-stream",
]
[[package]]
@@ -938,8 +969,9 @@ dependencies = [
"aptos-short-hex-str",
"aptos-types",
"bcs 0.1.4",
+ "fail",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"mini-moka",
"mirai-annotations",
"once_cell",
@@ -1060,7 +1092,7 @@ dependencies = [
"claims",
"dashmap",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"maplit",
"mockall",
"ordered-float 3.9.2",
@@ -1107,6 +1139,7 @@ dependencies = [
"aptos-config",
"aptos-crypto",
"aptos-db-indexer",
+ "aptos-db-indexer-schemas",
"aptos-executor",
"aptos-executor-types",
"aptos-experimental-runtimes",
@@ -1128,9 +1161,12 @@ dependencies = [
"byteorder",
"claims",
"clap 4.4.14",
+ "crossbeam-channel",
"dashmap",
"either",
- "itertools 0.12.1",
+ "hex",
+ "indicatif 0.15.0",
+ "itertools 0.13.0",
"lru 0.7.8",
"move-core-types",
"num-derive",
@@ -1151,6 +1187,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"aptos-config",
+ "aptos-db-indexer-schemas",
"aptos-logger",
"aptos-proptest-helpers",
"aptos-resource-viewer",
@@ -1162,6 +1199,21 @@ dependencies = [
"bytes",
"dashmap",
"move-core-types",
+ "rand 0.7.3",
+]
+
+[[package]]
+name = "aptos-db-indexer-schemas"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "aptos-crypto",
+ "aptos-proptest-helpers",
+ "aptos-schemadb",
+ "aptos-storage-interface",
+ "aptos-types",
+ "bcs 0.1.4",
+ "byteorder",
"proptest",
"proptest-derive",
"rand 0.7.3",
@@ -1187,7 +1239,7 @@ dependencies = [
"aptos-vm",
"bcs 0.1.4",
"clap 4.4.14",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"tokio",
]
@@ -1202,6 +1254,7 @@ dependencies = [
"aptos-move-debugger",
"aptos-push-metrics",
"clap 4.4.14",
+ "jemallocator",
"tokio",
]
@@ -1343,16 +1396,20 @@ dependencies = [
"aptos-consensus-types",
"aptos-crypto",
"aptos-db",
+ "aptos-db-indexer",
+ "aptos-db-indexer-schemas",
"aptos-drop-helper",
"aptos-executor-service",
"aptos-executor-test-helpers",
"aptos-executor-types",
"aptos-experimental-runtimes",
"aptos-genesis",
+ "aptos-indexer-grpc-table-info",
"aptos-infallible",
"aptos-logger",
"aptos-metrics-core",
"aptos-scratchpad",
+ "aptos-sdk",
"aptos-storage-interface",
"aptos-temppath",
"aptos-types",
@@ -1363,7 +1420,7 @@ dependencies = [
"bytes",
"dashmap",
"fail",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-core-types",
"once_cell",
"proptest",
@@ -1392,7 +1449,7 @@ dependencies = [
"aptos-logger",
"aptos-metrics-core",
"aptos-node-resource-metrics",
- "aptos-profiler",
+ "aptos-profiler 0.1.0",
"aptos-push-metrics",
"aptos-sdk",
"aptos-storage-interface",
@@ -1406,7 +1463,7 @@ dependencies = [
"clap 4.4.14",
"derivative",
"indicatif 0.15.0",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"jemallocator",
"move-core-types",
"num_cpus",
@@ -1440,7 +1497,7 @@ dependencies = [
"crossbeam-channel",
"ctrlc",
"dashmap",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"num_cpus",
"once_cell",
"rayon",
@@ -1482,23 +1539,44 @@ dependencies = [
"aptos-types",
"bcs 0.1.4",
"criterion",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"once_cell",
"serde",
"thiserror",
]
+[[package]]
+name = "aptos-experimental-hexy"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "aptos-crypto",
+ "aptos-experimental-layered-map",
+ "aptos-metrics-core",
+ "criterion",
+ "itertools 0.13.0",
+ "jemallocator",
+ "once_cell",
+ "proptest",
+ "rand 0.7.3",
+]
+
[[package]]
name = "aptos-experimental-layered-map"
version = "0.1.0"
dependencies = [
+ "ahash 0.8.11",
"aptos-crypto",
"aptos-drop-helper",
"aptos-infallible",
"aptos-metrics-core",
"bitvec 1.0.1",
+ "criterion",
+ "itertools 0.13.0",
+ "jemallocator",
"once_cell",
"proptest",
+ "rand 0.7.3",
]
[[package]]
@@ -1578,7 +1656,7 @@ dependencies = [
"poem-openapi",
"rand 0.7.3",
"redis",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"serde_yaml 0.8.26",
@@ -1622,7 +1700,7 @@ dependencies = [
"env_logger",
"futures",
"gcp-bigquery-client",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"tokio",
@@ -1647,6 +1725,7 @@ dependencies = [
"aptos-logger",
"aptos-rest-client",
"aptos-retrier",
+ "aptos-runtimes",
"aptos-sdk",
"aptos-short-hex-str",
"aptos-state-sync-driver",
@@ -1658,8 +1737,8 @@ dependencies = [
"either",
"futures",
"hex",
- "hyper",
- "itertools 0.12.1",
+ "hyper 0.14.28",
+ "itertools 0.13.0",
"json-patch",
"k8s-openapi",
"kube",
@@ -1668,7 +1747,7 @@ dependencies = [
"prometheus-http-query",
"rand 0.7.3",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"serde_yaml 0.8.26",
@@ -1700,7 +1779,7 @@ dependencies = [
"once_cell",
"rand 0.7.3",
"random_word",
- "reqwest",
+ "reqwest 0.11.23",
"serde_yaml 0.8.26",
"tokio",
"url",
@@ -1740,7 +1819,7 @@ dependencies = [
"either",
"flate2",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"libsecp256k1",
"log",
"lru 0.7.8",
@@ -1954,7 +2033,7 @@ dependencies = [
"aptos-indexer-grpc-utils",
"aptos-metrics-core",
"aptos-moving-average 0.1.0 (git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=4801acae7aea30d7e96bbfbe5ec5b04056dfa4cf)",
- "aptos-protos 1.3.0",
+ "aptos-protos 1.3.1",
"async-trait",
"clap 4.4.14",
"futures",
@@ -1963,7 +2042,7 @@ dependencies = [
"once_cell",
"prost 0.12.3",
"redis",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"tempfile",
"tokio",
@@ -1981,7 +2060,8 @@ dependencies = [
"aptos-indexer-grpc-utils",
"aptos-metrics-core",
"aptos-moving-average 0.1.0 (git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=4801acae7aea30d7e96bbfbe5ec5b04056dfa4cf)",
- "aptos-protos 1.3.0",
+ "aptos-protos 1.3.1",
+ "aptos-transaction-filter",
"async-trait",
"clap 4.4.14",
"futures",
@@ -2019,6 +2099,26 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "aptos-indexer-grpc-file-store-backfiller"
+version = "1.0.0"
+dependencies = [
+ "anyhow",
+ "aptos-indexer-grpc-server-framework",
+ "aptos-indexer-grpc-utils",
+ "aptos-protos 1.3.1",
+ "async-trait",
+ "clap 4.4.14",
+ "futures",
+ "jemallocator",
+ "serde",
+ "serde_json",
+ "tokio",
+ "tonic 0.11.0",
+ "tracing",
+ "url",
+]
+
[[package]]
name = "aptos-indexer-grpc-fullnode"
version = "1.0.0"
@@ -2031,7 +2131,6 @@ dependencies = [
"aptos-config",
"aptos-crypto",
"aptos-db",
- "aptos-db-indexer",
"aptos-executor",
"aptos-executor-types",
"aptos-framework",
@@ -2044,7 +2143,7 @@ dependencies = [
"aptos-metrics-core",
"aptos-moving-average 0.1.0 (git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=4801acae7aea30d7e96bbfbe5ec5b04056dfa4cf)",
"aptos-proptest-helpers",
- "aptos-protos 1.3.0",
+ "aptos-protos 1.3.1",
"aptos-runtimes",
"aptos-sdk",
"aptos-secure-storage",
@@ -2059,8 +2158,8 @@ dependencies = [
"futures",
"goldenfile",
"hex",
- "hyper",
- "itertools 0.12.1",
+ "hyper 0.14.28",
+ "itertools 0.13.0",
"move-binary-format",
"move-core-types",
"move-package",
@@ -2081,7 +2180,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"aptos-indexer-grpc-utils",
- "aptos-protos 1.3.0",
+ "aptos-protos 1.3.1",
"futures",
"jemallocator",
"lazy_static",
@@ -2091,37 +2190,13 @@ dependencies = [
"tokio",
]
-[[package]]
-name = "aptos-indexer-grpc-integration-tests"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "aptos-config",
- "aptos-indexer-grpc-cache-worker",
- "aptos-indexer-grpc-file-store",
- "aptos-indexer-grpc-server-framework",
- "aptos-indexer-grpc-utils",
- "aptos-logger",
- "aptos-transaction-emitter-lib",
- "aptos-transaction-generator-lib",
- "aptos-types",
- "once_cell",
- "redis",
- "regex",
- "reqwest",
- "tempfile",
- "tokio",
- "tracing",
- "url",
-]
-
[[package]]
name = "aptos-indexer-grpc-server-framework"
version = "1.0.0"
dependencies = [
"anyhow",
"aptos-metrics-core",
- "aptos-system-utils",
+ "aptos-system-utils 0.1.0",
"async-trait",
"backtrace",
"clap 4.4.14",
@@ -2155,7 +2230,7 @@ dependencies = [
"flate2",
"futures",
"google-cloud-storage",
- "hyper",
+ "hyper 0.14.28",
"rocksdb",
"serde",
"serde_json",
@@ -2173,7 +2248,7 @@ version = "1.0.0"
dependencies = [
"anyhow",
"aptos-metrics-core",
- "aptos-protos 1.3.0",
+ "aptos-protos 1.3.1",
"async-trait",
"backoff",
"base64 0.13.1",
@@ -2181,7 +2256,7 @@ dependencies = [
"cloud-storage",
"dashmap",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"lz4",
"once_cell",
"prometheus",
@@ -2220,10 +2295,10 @@ dependencies = [
"aptos-time-service",
"assert_approx_eq",
"futures",
- "hyper",
+ "hyper 0.14.28",
"once_cell",
"prometheus",
- "reqwest",
+ "reqwest 0.11.23",
"rusty-fork",
"serde_json",
"tokio",
@@ -2246,7 +2321,7 @@ dependencies = [
"arr_macro",
"bcs 0.1.4",
"byteorder",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"num-derive",
"num-traits",
"once_cell",
@@ -2272,6 +2347,7 @@ dependencies = [
"aptos-enum-conversion-derive",
"aptos-event-notifications",
"aptos-infallible",
+ "aptos-jwk-utils",
"aptos-logger",
"aptos-metrics-core",
"aptos-network",
@@ -2287,13 +2363,25 @@ dependencies = [
"futures-util",
"move-core-types",
"once_cell",
- "reqwest",
"serde",
- "serde_json",
"tokio",
"tokio-retry",
]
+[[package]]
+name = "aptos-jwk-utils"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "aptos-types",
+ "http 0.2.11",
+ "move-core-types",
+ "reqwest 0.11.23",
+ "serde",
+ "serde_json",
+ "tokio",
+]
+
[[package]]
name = "aptos-keygen"
version = "0.1.0"
@@ -2303,6 +2391,48 @@ dependencies = [
"rand 0.7.3",
]
+[[package]]
+name = "aptos-keyless-circuit"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "aptos-crypto",
+ "aptos-keyless-common",
+ "aptos-logger",
+ "ark-bn254",
+ "ark-ff",
+ "base64 0.13.1",
+ "hex",
+ "itertools 0.13.0",
+ "num-bigint 0.3.3",
+ "num-modular",
+ "num-traits",
+ "rand 0.7.3",
+ "rand_chacha 0.3.1",
+ "rsa 0.9.6",
+ "serde_json",
+ "sha2 0.9.9",
+ "tempfile",
+ "tokio",
+]
+
+[[package]]
+name = "aptos-keyless-common"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "aptos-types",
+ "ark-bn254",
+ "ark-ff",
+ "base64 0.13.1",
+ "hex",
+ "num-bigint 0.3.3",
+ "serde",
+ "serde_json",
+ "tempfile",
+ "tracing",
+]
+
[[package]]
name = "aptos-keyless-pepper-common"
version = "0.1.0"
@@ -2337,13 +2467,15 @@ name = "aptos-keyless-pepper-example-client-rust"
version = "0.1.0"
dependencies = [
"aptos-crypto",
+ "aptos-infallible",
"aptos-keyless-pepper-common",
"aptos-types",
"ark-bls12-381",
"ark-serialize",
"bcs 0.1.4",
+ "firestore",
"hex",
- "reqwest",
+ "reqwest 0.11.23",
"serde_json",
"tokio",
]
@@ -2355,6 +2487,7 @@ dependencies = [
"aes-gcm",
"anyhow",
"aptos-crypto",
+ "aptos-infallible",
"aptos-inspection-service",
"aptos-keyless-pepper-common",
"aptos-logger",
@@ -2366,14 +2499,15 @@ dependencies = [
"ark-serialize",
"bcs 0.1.4",
"dashmap",
+ "firestore",
"hex",
- "hyper",
+ "hyper 0.14.28",
"jsonwebtoken 8.3.0",
"jwt",
"once_cell",
"rand 0.7.3",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"sha3 0.9.1",
@@ -2406,6 +2540,7 @@ dependencies = [
"aptos-vm-types",
"bcs 0.1.4",
"bytes",
+ "claims",
"goldenfile",
"move-binary-format",
"move-command-line-common",
@@ -2494,7 +2629,6 @@ dependencies = [
"aptos-consensus-types",
"aptos-crypto",
"aptos-event-notifications",
- "aptos-experimental-runtimes",
"aptos-id-generator",
"aptos-infallible",
"aptos-logger",
@@ -2513,7 +2647,7 @@ dependencies = [
"enum_dispatch",
"fail",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"maplit",
"num_cpus",
"once_cell",
@@ -2564,6 +2698,7 @@ name = "aptos-move-debugger"
version = "0.1.0"
dependencies = [
"anyhow",
+ "aptos-block-executor",
"aptos-consensus",
"aptos-crypto",
"aptos-gas-profiling",
@@ -2576,8 +2711,9 @@ dependencies = [
"aptos-vm-types",
"bcs 0.1.4",
"clap 4.4.14",
+ "itertools 0.13.0",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"tokio",
"url",
]
@@ -2642,7 +2778,7 @@ dependencies = [
[[package]]
name = "aptos-moving-average"
version = "0.1.0"
-source = "git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=a11f0b6532349aa6b9a80c9a1d77524f02d8a013#a11f0b6532349aa6b9a80c9a1d77524f02d8a013"
+source = "git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=fa1ce4947f4c2be57529f1c9732529e05a06cb7f#fa1ce4947f4c2be57529f1c9732529e05a06cb7f"
dependencies = [
"chrono",
]
@@ -2732,7 +2868,7 @@ dependencies = [
"futures",
"futures-util",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"maplit",
"once_cell",
"ordered-float 3.9.2",
@@ -2844,26 +2980,27 @@ dependencies = [
"aptos-indexer-grpc-server-framework",
"aptos-metrics-core",
"async-trait",
+ "axum 0.7.5",
"backoff",
"bytes",
"chrono",
"clap 4.4.14",
"diesel",
"diesel_migrations",
+ "enum_dispatch",
"field_count",
"futures",
"google-cloud-storage",
"image",
"once_cell",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"sha256",
"tokio",
"tracing",
"url",
- "warp",
]
[[package]]
@@ -2958,7 +3095,7 @@ dependencies = [
"poem",
"poem-openapi",
"prometheus-parse",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"serde_yaml 0.8.26",
@@ -3005,7 +3142,6 @@ dependencies = [
name = "aptos-openapi"
version = "0.1.0"
dependencies = [
- "async-trait",
"percent-encoding",
"poem",
"poem-openapi",
@@ -3032,7 +3168,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"aptos-framework",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-command-line-common",
"move-package",
"tempfile",
@@ -3122,6 +3258,19 @@ dependencies = [
"regex",
]
+[[package]]
+name = "aptos-profiler"
+version = "0.1.0"
+source = "git+https://github.com/aptos-labs/aptos-core.git?rev=4541add3fd29826ec57f22658ca286d2d6134b93#4541add3fd29826ec57f22658ca286d2d6134b93"
+dependencies = [
+ "anyhow",
+ "backtrace",
+ "jemalloc-sys",
+ "jemallocator",
+ "pprof",
+ "regex",
+]
+
[[package]]
name = "aptos-proptest-helpers"
version = "0.1.0"
@@ -3133,7 +3282,7 @@ dependencies = [
[[package]]
name = "aptos-protos"
-version = "1.3.0"
+version = "1.3.1"
dependencies = [
"futures-core",
"pbjson",
@@ -3144,15 +3293,14 @@ dependencies = [
[[package]]
name = "aptos-protos"
-version = "1.3.0"
-source = "git+https://github.com/aptos-labs/aptos-core.git?tag=aptos-node-v1.10.0#b24f6cd08f84b179e49090c7e51a501c535096ca"
+version = "1.3.1"
+source = "git+https://github.com/aptos-labs/aptos-core.git?rev=5c48aee129b5a141be2792ffa3d9bd0a1a61c9cb#5c48aee129b5a141be2792ffa3d9bd0a1a61c9cb"
dependencies = [
"futures-core",
"pbjson",
"prost 0.12.3",
- "prost-types 0.12.3",
"serde",
- "tonic 0.10.2",
+ "tonic 0.11.0",
]
[[package]]
@@ -3200,25 +3348,38 @@ dependencies = [
"aptos-genesis",
"aptos-infallible",
"aptos-keygen",
+ "aptos-language-e2e-tests",
+ "aptos-move-debugger",
"aptos-rest-client",
"aptos-temppath",
"aptos-types",
+ "aptos-vm",
+ "aptos-vm-logging",
+ "aptos-vm-types",
"bcs 0.1.4",
"clap 4.4.14",
"futures",
"git2 0.16.1",
"handlebars",
"hex",
+ "move-binary-format",
+ "move-bytecode-verifier",
"move-core-types",
"move-model",
+ "move-vm-runtime",
+ "move-vm-types",
"once_cell",
+ "parking_lot 0.12.1",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"serde_yaml 0.8.26",
+ "sha3 0.9.1",
"strum 0.24.1",
"strum_macros 0.24.3",
"tokio",
"url",
+ "walkdir",
]
[[package]]
@@ -3234,6 +3395,8 @@ dependencies = [
"aptos-time-service",
"aptos-types",
"async-trait",
+ "bytes",
+ "claims",
"futures",
"futures-channel",
"tokio",
@@ -3268,7 +3431,7 @@ dependencies = [
"clap 4.4.14",
"hex",
"move-core-types",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"thiserror",
@@ -3312,13 +3475,12 @@ dependencies = [
"clap 4.4.14",
"futures",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-core-types",
"once_cell",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
- "serde_yaml 0.8.26",
"tokio",
"url",
"warp",
@@ -3365,6 +3527,7 @@ dependencies = [
"aptos-secure-storage",
"aptos-types",
"aptos-vault-client",
+ "claims",
"criterion",
"once_cell",
"proptest",
@@ -3406,7 +3569,7 @@ dependencies = [
"aptos-types",
"bitvec 1.0.1",
"criterion",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"jemallocator",
"once_cell",
"proptest",
@@ -3429,6 +3592,7 @@ dependencies = [
"base64 0.13.1",
"bcs 0.1.4",
"ed25519-dalek-bip32",
+ "hex",
"move-core-types",
"once_cell",
"rand 0.7.3",
@@ -3467,7 +3631,7 @@ dependencies = [
"aptos-config",
"aptos-logger",
"aptos-metrics-core",
- "aptos-protos 1.3.0",
+ "aptos-protos 1.3.1",
"bcs 0.1.4",
"crossbeam-channel",
"once_cell",
@@ -3682,10 +3846,30 @@ name = "aptos-system-utils"
version = "0.1.0"
dependencies = [
"anyhow",
- "aptos-profiler",
+ "aptos-profiler 0.1.0",
+ "async-mutex",
+ "http 0.2.11",
+ "hyper 0.14.28",
+ "lazy_static",
+ "mime",
+ "pprof",
+ "regex",
+ "rstack-self",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "aptos-system-utils"
+version = "0.1.0"
+source = "git+https://github.com/aptos-labs/aptos-core.git?rev=4541add3fd29826ec57f22658ca286d2d6134b93#4541add3fd29826ec57f22658ca286d2d6134b93"
+dependencies = [
+ "anyhow",
+ "aptos-profiler 0.1.0 (git+https://github.com/aptos-labs/aptos-core.git?rev=4541add3fd29826ec57f22658ca286d2d6134b93)",
"async-mutex",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.28",
"lazy_static",
"mime",
"pprof",
@@ -3740,7 +3924,7 @@ dependencies = [
"prometheus",
"rand 0.7.3",
"rand_core 0.5.1",
- "reqwest",
+ "reqwest 0.11.23",
"reqwest-middleware",
"reqwest-retry",
"serde",
@@ -3779,7 +3963,7 @@ dependencies = [
"prometheus",
"rand 0.7.3",
"rand_core 0.5.1",
- "reqwest",
+ "reqwest 0.11.23",
"reqwest-middleware",
"reqwest-retry",
"serde",
@@ -3819,14 +4003,16 @@ dependencies = [
"aptos-temppath",
"aptos-types",
"assert_approx_eq",
+ "async-trait",
"bcs 0.1.4",
"csv",
"futures",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"rand 0.7.3",
- "reqwest",
+ "reqwest 0.11.23",
"tokio",
+ "tokio-scoped",
]
[[package]]
@@ -3862,9 +4048,7 @@ dependencies = [
"criterion",
"criterion-cpu-time",
"num_cpus",
- "once_cell",
"proptest",
- "rayon",
]
[[package]]
@@ -3900,24 +4084,39 @@ dependencies = [
"async-trait",
"clap 4.4.14",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"once_cell",
"rand 0.7.3",
"rand_core 0.5.1",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"tokio",
"url",
]
[[package]]
-name = "aptos-transaction-generator-lib"
-version = "0.0.0"
+name = "aptos-transaction-filter"
+version = "0.1.0"
dependencies = [
"anyhow",
- "aptos-framework",
- "aptos-infallible",
- "aptos-logger",
+ "aptos-protos 1.3.1",
+ "derive_builder",
+ "lz4",
+ "prost 0.12.3",
+ "serde",
+ "serde_json",
+ "serde_yaml 0.8.26",
+ "thiserror",
+]
+
+[[package]]
+name = "aptos-transaction-generator-lib"
+version = "0.0.0"
+dependencies = [
+ "anyhow",
+ "aptos-framework",
+ "aptos-infallible",
+ "aptos-logger",
"aptos-sdk",
"async-trait",
"clap 4.4.14",
@@ -3946,6 +4145,7 @@ dependencies = [
"aptos-vm-genesis",
"bcs 0.1.4",
"clap 4.4.14",
+ "codespan-reporting",
"datatest-stable",
"hex",
"move-binary-format",
@@ -3955,10 +4155,12 @@ dependencies = [
"move-compiler-v2",
"move-core-types",
"move-model",
+ "move-symbol-pool",
"move-transactional-test-runner",
"move-vm-runtime",
"once_cell",
"serde_json",
+ "tempfile",
]
[[package]]
@@ -3992,11 +4194,13 @@ dependencies = [
"fxhash",
"hashbrown 0.14.3",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"jsonwebtoken 8.3.0",
"move-binary-format",
+ "move-bytecode-verifier",
"move-core-types",
"move-table-extension",
+ "move-vm-runtime",
"move-vm-types",
"num-bigint 0.3.3",
"num-derive",
@@ -4006,13 +4210,15 @@ dependencies = [
"passkey-authenticator",
"passkey-client",
"passkey-types",
+ "poem-openapi",
+ "poem-openapi-derive",
"proptest",
"proptest-derive",
"quick_cache",
"rand 0.7.3",
"rayon",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"ring 0.16.20",
"rsa 0.9.6",
"serde",
@@ -4121,7 +4327,6 @@ dependencies = [
"futures",
"hex",
"move-binary-format",
- "move-bytecode-verifier",
"move-core-types",
"move-unit-test",
"move-vm-runtime",
@@ -4161,9 +4366,9 @@ dependencies = [
"aptos-proptest-helpers",
"aptos-types",
"aptos-vm",
- "aptos-vm-types",
"bcs 0.1.4",
"bytes",
+ "claims",
"move-core-types",
"move-vm-runtime",
"move-vm-types",
@@ -4231,6 +4436,7 @@ dependencies = [
"either",
"move-binary-format",
"move-core-types",
+ "move-vm-runtime",
"move-vm-types",
"rand 0.7.3",
"serde",
@@ -4268,33 +4474,12 @@ dependencies = [
"aptos-config",
"aptos-logger",
"bcs 0.1.4",
- "hyper",
+ "hyper 0.14.28",
"serde",
"serde_json",
"warp",
]
-[[package]]
-name = "aptos-writeset-generator"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "aptos-cached-packages",
- "aptos-crypto",
- "aptos-framework",
- "aptos-gas-schedule",
- "aptos-types",
- "aptos-vm",
- "aptos-vm-types",
- "handlebars",
- "move-compiler",
- "move-core-types",
- "move-vm-runtime",
- "move-vm-types",
- "serde",
- "tempfile",
-]
-
[[package]]
name = "arbitrary"
version = "1.3.2"
@@ -4611,9 +4796,9 @@ dependencies = [
[[package]]
name = "async-compression"
-version = "0.4.5"
+version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc2d0cfb2a7388d34f590e76686704c494ed7aaceed62ee1ba35cbf363abc2a5"
+checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5"
dependencies = [
"flate2",
"futures-core",
@@ -4877,102 +5062,102 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "axum"
-version = "0.5.17"
+version = "0.6.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acee9fd5073ab6b045a275b3e709c163dd36c90685219cb21804a147b58dba43"
+checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
dependencies = [
"async-trait",
- "axum-core 0.2.9",
+ "axum-core 0.3.4",
"bitflags 1.3.2",
"bytes",
"futures-util",
- "http",
- "http-body",
- "hyper",
+ "http 0.2.11",
+ "http-body 0.4.6",
+ "hyper 0.14.28",
"itoa",
- "matchit 0.5.0",
+ "matchit",
"memchr",
"mime",
"percent-encoding",
"pin-project-lite",
+ "rustversion",
"serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper",
- "tokio",
+ "sync_wrapper 0.1.2",
"tower",
- "tower-http 0.3.5",
"tower-layer",
"tower-service",
]
[[package]]
name = "axum"
-version = "0.6.20"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
dependencies = [
"async-trait",
- "axum-core 0.3.4",
- "bitflags 1.3.2",
+ "axum-core 0.4.3",
"bytes",
"futures-util",
- "http",
- "http-body",
- "hyper",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "hyper 1.4.1",
+ "hyper-util",
"itoa",
- "matchit 0.7.3",
+ "matchit",
"memchr",
"mime",
"percent-encoding",
"pin-project-lite",
"rustversion",
"serde",
- "sync_wrapper",
+ "serde_json",
+ "serde_path_to_error",
+ "serde_urlencoded",
+ "sync_wrapper 1.0.1",
+ "tokio",
"tower",
"tower-layer",
"tower-service",
+ "tracing",
]
[[package]]
name = "axum-core"
-version = "0.2.9"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37e5939e02c56fecd5c017c37df4238c0a839fa76b7f97acdd7efb804fd181cc"
+checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
dependencies = [
"async-trait",
"bytes",
"futures-util",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.6",
"mime",
+ "rustversion",
"tower-layer",
"tower-service",
]
[[package]]
name = "axum-core"
-version = "0.3.4"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
dependencies = [
"async-trait",
"bytes",
"futures-util",
- "http",
- "http-body",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
"mime",
+ "pin-project-lite",
"rustversion",
+ "sync_wrapper 0.1.2",
"tower-layer",
"tower-service",
-]
-
-[[package]]
-name = "axum-test"
-version = "0.1.0"
-dependencies = [
- "axum 0.5.17",
- "tokio",
+ "tracing",
]
[[package]]
@@ -5034,6 +5219,12 @@ version = "0.21.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9"
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
[[package]]
name = "base64ct"
version = "1.6.0"
@@ -5161,17 +5352,16 @@ dependencies = [
[[package]]
name = "bindgen"
-version = "0.65.1"
+version = "0.69.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
+checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
"cexpr",
"clang-sys",
+ "itertools 0.12.1",
"lazy_static",
"lazycell",
- "peeking_take_while",
- "prettyplease",
"proc-macro2",
"quote",
"regex",
@@ -5209,9 +5399,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.4.1"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "bitmaps"
@@ -5389,8 +5579,8 @@ dependencies = [
"futures-core",
"futures-util",
"hex",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.28",
"hyperlocal",
"log",
"pin-project-lite",
@@ -5575,6 +5765,19 @@ dependencies = [
"serde",
]
+[[package]]
+name = "canonical_json"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f89083fd014d71c47a718d7f4ac050864dac8587668dbe90baf9e261064c5710"
+dependencies = [
+ "hex",
+ "regex",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
[[package]]
name = "captcha"
version = "0.0.9"
@@ -5678,11 +5881,17 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+[[package]]
+name = "cfg_aliases"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+
[[package]]
name = "chrono"
-version = "0.4.31"
+version = "0.4.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
dependencies = [
"android-tzdata",
"iana-time-zone",
@@ -5690,7 +5899,7 @@ dependencies = [
"num-traits",
"serde",
"wasm-bindgen",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.0",
]
[[package]]
@@ -5917,7 +6126,7 @@ dependencies = [
"lazy_static",
"pem 0.8.3",
"percent-encoding",
- "reqwest",
+ "reqwest 0.11.23",
"ring 0.16.20",
"serde",
"serde_json",
@@ -5981,6 +6190,19 @@ dependencies = [
"tokio-util 0.7.10",
]
+[[package]]
+name = "compute-module-expansion-size"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clap 4.4.14",
+ "futures",
+ "move-binary-format",
+ "move-core-types",
+ "rayon",
+ "tokio",
+]
+
[[package]]
name = "concurrent-queue"
version = "2.4.0"
@@ -6005,35 +6227,37 @@ dependencies = [
[[package]]
name = "console-api"
-version = "0.5.0"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2895653b4d9f1538a83970077cb01dfc77a4810524e51a110944688e916b18e"
+checksum = "a257c22cd7e487dd4a13d413beabc512c5052f0bc048db0da6a84c3d8a6142fd"
dependencies = [
- "prost 0.11.9",
- "prost-types 0.11.9",
- "tonic 0.9.2",
+ "futures-core",
+ "prost 0.12.3",
+ "prost-types 0.12.3",
+ "tonic 0.11.0",
"tracing-core",
]
[[package]]
name = "console-subscriber"
-version = "0.1.10"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4cf42660ac07fcebed809cfe561dd8730bcd35b075215e6479c516bcd0d11cb"
+checksum = "31c4cc54bae66f7d9188996404abdf7fdfa23034ef8e43478c8810828abad758"
dependencies = [
"console-api",
"crossbeam-channel",
"crossbeam-utils",
- "futures",
+ "futures-task",
"hdrhistogram",
"humantime",
- "prost-types 0.11.9",
+ "prost 0.12.3",
+ "prost-types 0.12.3",
"serde",
"serde_json",
"thread_local",
"tokio",
"tokio-stream",
- "tonic 0.9.2",
+ "tonic 0.11.0",
"tracing",
"tracing-core",
"tracing-subscriber 0.3.18",
@@ -6051,6 +6275,26 @@ version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
+[[package]]
+name = "const-random"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
+dependencies = [
+ "const-random-macro",
+]
+
+[[package]]
+name = "const-random-macro"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
+dependencies = [
+ "getrandom 0.2.11",
+ "once_cell",
+ "tiny-keccak",
+]
+
[[package]]
name = "const_fn"
version = "0.4.9"
@@ -6095,6 +6339,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
[[package]]
name = "cookie"
version = "0.16.2"
@@ -6108,12 +6361,12 @@ dependencies = [
[[package]]
name = "cookie"
-version = "0.17.0"
+version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
+checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
dependencies = [
"aes-gcm",
- "base64 0.21.6",
+ "base64 0.22.1",
"hkdf 0.12.4",
"hmac 0.12.1",
"percent-encoding",
@@ -6428,6 +6681,16 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "ctor"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+dependencies = [
+ "quote",
+ "syn 1.0.109",
+]
+
[[package]]
name = "ctr"
version = "0.9.2"
@@ -6545,22 +6808,12 @@ dependencies = [
[[package]]
name = "darling"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
-dependencies = [
- "darling_core 0.14.4",
- "darling_macro 0.14.4",
-]
-
-[[package]]
-name = "darling"
-version = "0.20.3"
+version = "0.20.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
+checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1"
dependencies = [
- "darling_core 0.20.3",
- "darling_macro 0.20.3",
+ "darling_core 0.20.9",
+ "darling_macro 0.20.9",
]
[[package]]
@@ -6579,29 +6832,15 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
-dependencies = [
- "fnv",
- "ident_case",
- "proc-macro2",
- "quote",
- "strsim 0.10.0",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "darling_core"
-version = "0.20.3"
+version = "0.20.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
+checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
- "strsim 0.10.0",
+ "strsim 0.11.1",
"syn 2.0.48",
]
@@ -6618,22 +6857,11 @@ dependencies = [
[[package]]
name = "darling_macro"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
-dependencies = [
- "darling_core 0.14.4",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "darling_macro"
-version = "0.20.3"
+version = "0.20.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
+checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178"
dependencies = [
- "darling_core 0.20.3",
+ "darling_core 0.20.9",
"quote",
"syn 2.0.48",
]
@@ -6778,13 +7006,44 @@ dependencies = [
"syn 2.0.48",
]
+[[package]]
+name = "derive_builder"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d"
+dependencies = [
+ "darling 0.20.9",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b"
+dependencies = [
+ "derive_builder_core",
+ "syn 2.0.48",
+]
+
[[package]]
name = "derive_more"
version = "0.99.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
dependencies = [
- "convert_case",
+ "convert_case 0.4.0",
"proc-macro2",
"quote",
"rustc_version",
@@ -6821,7 +7080,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62c6fcf842f17f8c78ecf7c81d75c5ce84436b41ee07e03f490fbb5f5a8731d8"
dependencies = [
"bigdecimal",
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"byteorder",
"chrono",
"diesel_derives",
@@ -6834,20 +7093,6 @@ dependencies = [
"serde_json",
]
-[[package]]
-name = "diesel-async"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acada1517534c92d3f382217b485db8a8638f111b0e3f2a2a8e26165050f77be"
-dependencies = [
- "async-trait",
- "diesel",
- "futures-util",
- "scoped-futures",
- "tokio",
- "tokio-postgres",
-]
-
[[package]]
name = "diesel-async"
version = "0.4.1"
@@ -6862,18 +7107,6 @@ dependencies = [
"tokio-postgres",
]
-[[package]]
-name = "diesel_async_migrations"
-version = "0.11.0"
-source = "git+https://github.com/niroco/diesel_async_migrations?rev=11f331b73c5cfcc894380074f748d8fda710ac12#11f331b73c5cfcc894380074f748d8fda710ac12"
-dependencies = [
- "diesel",
- "diesel-async 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "macros",
- "scoped-futures",
- "tracing",
-]
-
[[package]]
name = "diesel_derives"
version = "2.1.2"
@@ -7059,6 +7292,12 @@ dependencies = [
"pkg-config",
]
+[[package]]
+name = "dyn-clone"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
+
[[package]]
name = "e2e-move-tests"
version = "0.1.0"
@@ -7072,6 +7311,7 @@ dependencies = [
"aptos-gas-schedule",
"aptos-language-e2e-tests",
"aptos-package-builder",
+ "aptos-transaction-generator-lib",
"aptos-types",
"aptos-vm",
"aptos-vm-types",
@@ -7090,6 +7330,7 @@ dependencies = [
"rand 0.7.3",
"rstest",
"serde",
+ "sha3 0.9.1",
"test-case",
]
@@ -7670,22 +7911,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6"
[[package]]
-name = "fixed"
-version = "1.25.1"
+name = "firestore"
+version = "0.43.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e29e5681dc8556fb9df1409e95eae050e12e8776394313da3546dcb8cf390c73"
+checksum = "11f7f676812c6a51d8584aa52252e2d3a02417ee0b27966c7059fe4ef80945d5"
dependencies = [
- "az",
- "bytemuck",
- "half 2.2.1",
- "typenum",
-]
-
-[[package]]
-name = "fixed-hash"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c"
+ "async-trait",
+ "backoff",
+ "chrono",
+ "futures",
+ "gcloud-sdk",
+ "hex",
+ "hyper 1.4.1",
+ "rand 0.8.5",
+ "rsb_derive",
+ "rvstruct",
+ "serde",
+ "struct-path",
+ "tokio",
+ "tokio-stream",
+ "tracing",
+]
+
+[[package]]
+name = "fixed"
+version = "1.25.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e29e5681dc8556fb9df1409e95eae050e12e8776394313da3546dcb8cf390c73"
+dependencies = [
+ "az",
+ "bytemuck",
+ "half 2.2.1",
+ "typenum",
+]
+
+[[package]]
+name = "fixed-hash"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c"
dependencies = [
"byteorder",
"rand 0.8.5",
@@ -7984,7 +8248,6 @@ dependencies = [
"move-binary-format",
"move-bytecode-verifier",
"move-core-types",
- "move-vm-runtime",
"move-vm-types",
"once_cell",
"rayon",
@@ -8005,42 +8268,27 @@ version = "0.3.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
-[[package]]
-name = "gcemeta"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47d460327b24cc34c86d53d60a90e9e6044817f7906ebd9baa5c3d0ee13e1ecf"
-dependencies = [
- "bytes",
- "hyper",
- "serde",
- "serde_json",
- "thiserror",
- "tokio",
- "tracing",
-]
-
[[package]]
name = "gcloud-sdk"
-version = "0.20.7"
+version = "0.25.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a24376e7850e7864bb326debc5765a1dda4fc47603c22e2bc0ebf30ff59141b"
+checksum = "898e349fb0fabc16892de7858e5650b70a8044edeee13469cb2f7649040bf3c2"
dependencies = [
"async-trait",
+ "bytes",
"chrono",
"futures",
- "gcemeta",
- "hyper",
- "jsonwebtoken 8.3.0",
+ "hyper 1.4.1",
+ "jsonwebtoken 9.3.0",
"once_cell",
- "prost 0.11.9",
- "prost-types 0.11.9",
- "reqwest",
+ "prost 0.13.1",
+ "prost-types 0.13.1",
+ "reqwest 0.12.5",
"secret-vault-value",
"serde",
"serde_json",
"tokio",
- "tonic 0.9.2",
+ "tonic 0.12.1",
"tower",
"tower-layer",
"tower-util",
@@ -8050,15 +8298,17 @@ dependencies = [
[[package]]
name = "gcp-bigquery-client"
-version = "0.13.0"
+version = "0.16.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09ab5966c98f6d4e71e247cda6a6d8497bc8a1df3a4ba9ee548087842cffc21d"
+checksum = "fb67dedb3fce3a6d25829158e40b22c5e9aa107fdbae0f2fef564931c9161a6a"
dependencies = [
"async-stream",
- "hyper",
- "hyper-rustls 0.23.2",
+ "async-trait",
+ "dyn-clone",
+ "hyper 0.14.28",
+ "hyper-rustls 0.24.2",
"log",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"thiserror",
@@ -8278,7 +8528,7 @@ dependencies = [
"google-cloud-token",
"home",
"jsonwebtoken 8.3.0",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"thiserror",
@@ -8295,7 +8545,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8bdaaa4bc036e8318274d1b25f0f2265b3e95418b765fd1ea1c7ef938fd69bd"
dependencies = [
"google-cloud-token",
- "http",
+ "http 0.2.11",
"thiserror",
"tokio",
"tokio-retry",
@@ -8321,7 +8571,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96e4ad0802d3f416f62e7ce01ac1460898ee0efc98f8b45cd4aab7611607012f"
dependencies = [
- "reqwest",
+ "reqwest 0.11.23",
"thiserror",
"tokio",
]
@@ -8362,7 +8612,7 @@ dependencies = [
"once_cell",
"percent-encoding",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"ring 0.16.20",
"rsa 0.6.1",
"serde",
@@ -8459,7 +8709,26 @@ dependencies = [
"futures-core",
"futures-sink",
"futures-util",
- "http",
+ "http 0.2.11",
+ "indexmap 2.2.5",
+ "slab",
+ "tokio",
+ "tokio-util 0.7.10",
+ "tracing",
+]
+
+[[package]]
+name = "h2"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http 1.1.0",
"indexmap 2.2.5",
"slab",
"tokio",
@@ -8480,6 +8749,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
dependencies = [
"crunchy",
+ "num-traits",
]
[[package]]
@@ -8560,8 +8830,23 @@ checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
dependencies = [
"base64 0.21.6",
"bytes",
- "headers-core",
- "http",
+ "headers-core 0.2.0",
+ "http 0.2.11",
+ "httpdate",
+ "mime",
+ "sha1",
+]
+
+[[package]]
+name = "headers"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9"
+dependencies = [
+ "base64 0.21.6",
+ "bytes",
+ "headers-core 0.3.0",
+ "http 1.1.0",
"httpdate",
"mime",
"sha1",
@@ -8573,7 +8858,16 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
dependencies = [
- "http",
+ "http 0.2.11",
+]
+
+[[package]]
+name = "headers-core"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4"
+dependencies = [
+ "http 1.1.0",
]
[[package]]
@@ -8591,6 +8885,12 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
[[package]]
name = "hermit-abi"
version = "0.1.19"
@@ -8729,6 +9029,17 @@ dependencies = [
"itoa",
]
+[[package]]
+name = "http"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
[[package]]
name = "http-body"
version = "0.4.6"
@@ -8736,7 +9047,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
dependencies = [
"bytes",
- "http",
+ "http 0.2.11",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
+dependencies = [
+ "bytes",
+ "http 1.1.0",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
+dependencies = [
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
"pin-project-lite",
]
@@ -8772,7 +9106,7 @@ dependencies = [
"crossbeam-utils",
"form_urlencoded",
"futures-util",
- "hyper",
+ "hyper 0.14.28",
"isahc",
"lazy_static",
"levenshtein",
@@ -8811,9 +9145,9 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-util",
- "h2",
- "http",
- "http-body",
+ "h2 0.3.26",
+ "http 0.2.11",
+ "http-body 0.4.6",
"httparse",
"httpdate",
"itoa",
@@ -8825,14 +9159,35 @@ dependencies = [
"want",
]
+[[package]]
+name = "hyper"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "h2 0.4.5",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
[[package]]
name = "hyper-rustls"
version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c"
dependencies = [
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.28",
"log",
"rustls 0.20.9",
"rustls-native-certs 0.6.3",
@@ -8847,25 +9202,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
dependencies = [
"futures-util",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.28",
+ "log",
"rustls 0.21.10",
+ "rustls-native-certs 0.6.3",
"tokio",
"tokio-rustls 0.24.1",
]
+[[package]]
+name = "hyper-rustls"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
+dependencies = [
+ "futures-util",
+ "http 1.1.0",
+ "hyper 1.4.1",
+ "hyper-util",
+ "rustls 0.23.7",
+ "rustls-native-certs 0.7.0",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls 0.26.0",
+ "tower-service",
+]
+
[[package]]
name = "hyper-timeout"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
dependencies = [
- "hyper",
+ "hyper 0.14.28",
"pin-project-lite",
"tokio",
"tokio-io-timeout",
]
+[[package]]
+name = "hyper-timeout"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793"
+dependencies = [
+ "hyper 1.4.1",
+ "hyper-util",
+ "pin-project-lite",
+ "tokio",
+ "tower-service",
+]
+
[[package]]
name = "hyper-tls"
version = "0.5.0"
@@ -8873,12 +9261,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
dependencies = [
"bytes",
- "hyper",
+ "hyper 0.14.28",
"native-tls",
"tokio",
"tokio-native-tls",
]
+[[package]]
+name = "hyper-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "hyper 1.4.1",
+ "pin-project-lite",
+ "socket2 0.5.5",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
+]
+
[[package]]
name = "hyperlocal"
version = "0.8.0"
@@ -8887,7 +9295,7 @@ checksum = "0fafdf7b2b2de7c9784f76e02c0935e65a8117ec3b768644379983ab333ac98c"
dependencies = [
"futures-util",
"hex",
- "hyper",
+ "hyper 0.14.28",
"pin-project 1.1.3",
"tokio",
]
@@ -9178,6 +9586,12 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "integer-encoding"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02"
+
[[package]]
name = "internment"
version = "0.5.6"
@@ -9257,7 +9671,7 @@ dependencies = [
"encoding_rs",
"event-listener 2.5.3",
"futures-lite 1.13.0",
- "http",
+ "http 0.2.11",
"log",
"mime",
"once_cell",
@@ -9297,6 +9711,15 @@ dependencies = [
"either",
]
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "1.0.10"
@@ -9400,6 +9823,21 @@ dependencies = [
"simple_asn1 0.6.2",
]
+[[package]]
+name = "jsonwebtoken"
+version = "9.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f"
+dependencies = [
+ "base64 0.21.6",
+ "js-sys",
+ "pem 3.0.4",
+ "ring 0.17.7",
+ "serde",
+ "serde_json",
+ "simple_asn1 0.6.2",
+]
+
[[package]]
name = "jwt"
version = "0.16.0"
@@ -9472,11 +9910,11 @@ dependencies = [
"dirs-next",
"either",
"futures",
- "http",
- "http-body",
- "hyper",
+ "http 0.2.11",
+ "http-body 0.4.6",
+ "hyper 0.14.28",
"hyper-rustls 0.23.2",
- "hyper-timeout",
+ "hyper-timeout 0.4.1",
"jsonpath_lib",
"k8s-openapi",
"kube-core",
@@ -9491,7 +9929,7 @@ dependencies = [
"tokio",
"tokio-util 0.6.10",
"tower",
- "tower-http 0.2.5",
+ "tower-http",
"tracing",
]
@@ -9503,7 +9941,7 @@ checksum = "c52b6ab05d160691083430f6f431707a4e05b64903f2ffa0095ee5efde759117"
dependencies = [
"chrono",
"form_urlencoded",
- "http",
+ "http 0.2.11",
"json-patch",
"k8s-openapi",
"once_cell",
@@ -9653,9 +10091,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760"
[[package]]
name = "libc"
-version = "0.2.152"
+version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "libfuzzer-sys"
@@ -9714,16 +10152,16 @@ version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"libc",
"redox_syscall 0.4.1",
]
[[package]]
name = "librocksdb-sys"
-version = "0.11.0+8.1.1"
+version = "0.16.0+8.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e"
+checksum = "ce3d60bc059831dc1c83903fb45c103f75db65c5a7bf22272764d9cc683e348c"
dependencies = [
"bindgen",
"bzip2-sys",
@@ -9844,15 +10282,6 @@ version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
-[[package]]
-name = "listener"
-version = "0.1.0"
-dependencies = [
- "bytes",
- "clap 4.4.14",
- "tokio",
-]
-
[[package]]
name = "lock_api"
version = "0.4.11"
@@ -9906,9 +10335,9 @@ dependencies = [
[[package]]
name = "lz4"
-version = "1.24.0"
+version = "1.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1"
+checksum = "d6eab492fe7f8651add23237ea56dbf11b3c4ff762ab83d40a47f11433421f91"
dependencies = [
"libc",
"lz4-sys",
@@ -9916,21 +10345,21 @@ dependencies = [
[[package]]
name = "lz4-sys"
-version = "1.9.4"
+version = "1.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900"
+checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3"
dependencies = [
"cc",
"libc",
]
[[package]]
-name = "macros"
-version = "0.1.0"
-source = "git+https://github.com/niroco/diesel_async_migrations?rev=11f331b73c5cfcc894380074f748d8fda710ac12#11f331b73c5cfcc894380074f748d8fda710ac12"
+name = "lz4_flex"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5"
dependencies = [
- "proc-macro2",
- "quote",
+ "twox-hash",
]
[[package]]
@@ -9960,12 +10389,6 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
-[[package]]
-name = "matchit"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb"
-
[[package]]
name = "matchit"
version = "0.7.3"
@@ -9994,9 +10417,9 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.7.1"
+version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "memmap2"
@@ -10188,6 +10611,7 @@ dependencies = [
"move-model",
"move-prover",
"move-prover-test-utils",
+ "move-stdlib",
"serde",
"tempfile",
]
@@ -10200,7 +10624,7 @@ dependencies = [
"better_any",
"bytes",
"datatest-stable",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-binary-format",
"move-command-line-common",
"move-compiler",
@@ -10222,6 +10646,7 @@ dependencies = [
"arbitrary",
"backtrace",
"indexmap 1.9.3",
+ "move-bytecode-spec",
"move-core-types",
"proptest",
"proptest-derive",
@@ -10249,6 +10674,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "move-bytecode-spec"
+version = "0.1.0"
+dependencies = [
+ "once_cell",
+ "quote",
+ "syn 1.0.109",
+]
+
[[package]]
name = "move-bytecode-utils"
version = "0.1.0"
@@ -10294,17 +10728,12 @@ name = "move-cli"
version = "0.1.0"
dependencies = [
"anyhow",
- "bcs 0.1.4",
- "bytes",
"clap 4.4.14",
"codespan-reporting",
"colored",
"datatest-stable",
- "difference",
"httpmock",
"move-binary-format",
- "move-bytecode-utils",
- "move-bytecode-verifier",
"move-bytecode-viewer",
"move-command-line-common",
"move-compiler",
@@ -10314,23 +10743,15 @@ dependencies = [
"move-disassembler",
"move-docgen",
"move-errmapgen",
- "move-ir-types",
"move-model",
"move-package",
"move-prover",
- "move-resource-viewer",
"move-stdlib",
"move-unit-test",
"move-vm-runtime",
"move-vm-test-utils",
"once_cell",
- "reqwest",
- "serde",
- "serde_json",
- "serde_yaml 0.8.26",
"tempfile",
- "toml_edit 0.14.4",
- "walkdir",
]
[[package]]
@@ -10397,10 +10818,11 @@ dependencies = [
"ethnum",
"flexi_logger",
"im",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-binary-format",
"move-bytecode-source-map",
+ "move-bytecode-verifier",
"move-command-line-common",
"move-compiler",
"move-core-types",
@@ -10422,7 +10844,7 @@ name = "move-compiler-v2-transactional-tests"
version = "0.1.0"
dependencies = [
"datatest-stable",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-command-line-common",
"move-compiler-v2",
"move-model",
@@ -10496,10 +10918,11 @@ name = "move-docgen"
version = "0.1.0"
dependencies = [
"anyhow",
+ "clap 4.4.14",
"codespan",
"codespan-reporting",
"datatest-stable",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-compiler",
"move-core-types",
@@ -10540,6 +10963,7 @@ name = "move-examples"
version = "0.1.1"
dependencies = [
"move-cli",
+ "move-stdlib",
]
[[package]]
@@ -10625,7 +11049,7 @@ dependencies = [
"codespan-reporting",
"datatest-stable",
"internment",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-binary-format",
"move-bytecode-source-map",
@@ -10653,7 +11077,7 @@ dependencies = [
"datatest-stable",
"evm-exec-utils",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-abigen",
"move-binary-format",
"move-bytecode-source-map",
@@ -10664,6 +11088,7 @@ dependencies = [
"move-core-types",
"move-docgen",
"move-model",
+ "move-stdlib",
"move-symbol-pool",
"move-to-yul",
"named-lock",
@@ -10689,7 +11114,7 @@ dependencies = [
"clap 4.4.14",
"codespan-reporting",
"datatest-stable",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-abigen",
"move-command-line-common",
@@ -10720,7 +11145,7 @@ dependencies = [
"codespan",
"codespan-reporting",
"futures",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-binary-format",
"move-command-line-common",
@@ -10747,7 +11172,7 @@ dependencies = [
"anyhow",
"codespan-reporting",
"datatest-stable",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-binary-format",
"move-core-types",
@@ -10792,7 +11217,7 @@ dependencies = [
"datatest-stable",
"ethnum",
"im",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-binary-format",
"move-core-types",
@@ -10887,7 +11312,7 @@ dependencies = [
"ethnum",
"evm",
"evm-exec-utils",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"maplit",
"move-command-line-common",
"move-compiler",
@@ -10916,7 +11341,7 @@ dependencies = [
"difference",
"move-binary-format",
"move-bytecode-source-map",
- "move-cli",
+ "move-bytecode-verifier",
"move-command-line-common",
"move-compiler",
"move-compiler-v2",
@@ -10950,7 +11375,7 @@ dependencies = [
"difference",
"evm",
"evm-exec-utils",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-binary-format",
"move-bytecode-utils",
"move-command-line-common",
@@ -11054,9 +11479,10 @@ name = "move-vm-types"
version = "0.1.0"
dependencies = [
"bcs 0.1.4",
+ "bytes",
"claims",
"derivative",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"move-binary-format",
"move-core-types",
"proptest",
@@ -11076,12 +11502,29 @@ dependencies = [
"bytes",
"encoding_rs",
"futures-util",
- "http",
+ "http 0.2.11",
"httparse",
"log",
"memchr",
"mime",
"spin 0.9.8",
+ "version_check",
+]
+
+[[package]]
+name = "multer"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b"
+dependencies = [
+ "bytes",
+ "encoding_rs",
+ "futures-util",
+ "http 1.1.0",
+ "httparse",
+ "memchr",
+ "mime",
+ "spin 0.9.8",
"tokio",
"version_check",
]
@@ -11193,11 +11636,23 @@ version = "0.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"cfg-if",
"libc",
]
+[[package]]
+name = "nix"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+dependencies = [
+ "bitflags 2.6.0",
+ "cfg-if",
+ "cfg_aliases",
+ "libc",
+]
+
[[package]]
name = "no-std-compat"
version = "0.4.1"
@@ -11426,6 +11881,17 @@ dependencies = [
"num-traits",
]
+[[package]]
+name = "num-modular"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f"
+dependencies = [
+ "num-bigint 0.4.4",
+ "num-integer",
+ "num-traits",
+]
+
[[package]]
name = "num-rational"
version = "0.3.2"
@@ -11491,17 +11957,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
-[[package]]
-name = "number_range"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60080faccd4ca50ad0b801b2be686136376b13f691f6eac84817e40973b2e1bb"
-dependencies = [
- "anyhow",
- "itertools 0.10.5",
- "num 0.4.1",
-]
-
[[package]]
name = "object"
version = "0.32.2"
@@ -11541,7 +11996,7 @@ version = "0.10.62"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"cfg-if",
"foreign-types 0.3.2",
"libc",
@@ -11720,7 +12175,7 @@ version = "3.6.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b"
dependencies = [
- "proc-macro-crate 2.0.1",
+ "proc-macro-crate 2.0.0",
"proc-macro2",
"quote",
"syn 1.0.109",
@@ -11780,6 +12235,40 @@ dependencies = [
"windows-targets 0.48.5",
]
+[[package]]
+name = "parquet"
+version = "52.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f22ba0d95db56dde8685e3fadcb915cdaadda31ab8abbe3ff7f0ad1ef333267"
+dependencies = [
+ "ahash 0.8.11",
+ "bytes",
+ "chrono",
+ "futures",
+ "half 2.2.1",
+ "hashbrown 0.14.3",
+ "lz4_flex",
+ "num 0.4.1",
+ "num-bigint 0.4.4",
+ "paste",
+ "seq-macro",
+ "thrift",
+ "tokio",
+ "twox-hash",
+]
+
+[[package]]
+name = "parquet_derive"
+version = "52.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbfe02f8b63a15a78398db242f9b1d2dcc201319075ea6222c7108ffd48b23c0"
+dependencies = [
+ "parquet",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
[[package]]
name = "parse-zoneinfo"
version = "0.3.0"
@@ -11828,7 +12317,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "499cff8432e71c5f8784d9645aac0f9fca604d67f59b68a606170b5e229c6538"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"ciborium",
"coset",
"data-encoding",
@@ -11902,12 +12391,6 @@ dependencies = [
"crypto-mac 0.8.0",
]
-[[package]]
-name = "peeking_take_while"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
-
[[package]]
name = "pem"
version = "0.8.3"
@@ -11928,6 +12411,16 @@ dependencies = [
"base64 0.13.1",
]
+[[package]]
+name = "pem"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae"
+dependencies = [
+ "base64 0.22.1",
+ "serde",
+]
+
[[package]]
name = "pem-rfc7468"
version = "0.3.1"
@@ -12225,39 +12718,41 @@ dependencies = [
[[package]]
name = "poem"
-version = "1.3.59"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "504774c97b0744c1ee108a37e5a65a9745a4725c4c06277521dabc28eb53a904"
+version = "3.0.1"
+source = "git+https://github.com/poem-web/poem.git?rev=809b2816d3504beeba140fef3fdfe9432d654c5b#809b2816d3504beeba140fef3fdfe9432d654c5b"
dependencies = [
"anyhow",
- "async-trait",
"bytes",
"chrono",
- "cookie 0.17.0",
+ "cookie 0.18.1",
"futures-util",
- "headers",
- "http",
- "hyper",
+ "headers 0.4.0",
+ "http 1.1.0",
+ "http-body-util",
+ "hyper 1.4.1",
+ "hyper-util",
"mime",
- "multer",
- "nix 0.27.1",
+ "multer 3.1.0",
+ "nix 0.28.0",
"parking_lot 0.12.1",
"percent-encoding",
"pin-project-lite",
"poem-derive",
- "quick-xml 0.30.0",
+ "quick-xml 0.32.0",
"regex",
"rfc7239",
- "rustls-pemfile 1.0.4",
+ "rustls-pemfile 2.1.1",
"serde",
"serde_json",
"serde_urlencoded",
+ "serde_yaml 0.9.30",
"smallvec",
+ "sync_wrapper 1.0.1",
"tempfile",
"thiserror",
"time",
"tokio",
- "tokio-rustls 0.24.1",
+ "tokio-rustls 0.25.0",
"tokio-stream",
"tokio-util 0.7.10",
"tracing",
@@ -12266,11 +12761,10 @@ dependencies = [
[[package]]
name = "poem-derive"
-version = "1.3.59"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42ddcf4680d8d867e1e375116203846acb088483fa2070244f90589f458bbb31"
+version = "3.0.0"
+source = "git+https://github.com/poem-web/poem.git?rev=809b2816d3504beeba140fef3fdfe9432d654c5b#809b2816d3504beeba140fef3fdfe9432d654c5b"
dependencies = [
- "proc-macro-crate 2.0.1",
+ "proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
"syn 2.0.48",
@@ -12278,19 +12772,19 @@ dependencies = [
[[package]]
name = "poem-openapi"
-version = "2.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e69c569eb0671cc85e65cfb6bd960d0168d24732ff58825227b4d2a10167ba91"
+version = "5.0.2"
+source = "git+https://github.com/poem-web/poem.git?rev=809b2816d3504beeba140fef3fdfe9432d654c5b#809b2816d3504beeba140fef3fdfe9432d654c5b"
dependencies = [
- "base64 0.13.1",
+ "base64 0.22.1",
"bytes",
"derive_more",
"futures-util",
+ "indexmap 2.2.5",
"mime",
"num-traits",
"poem",
"poem-openapi-derive",
- "quick-xml 0.23.1",
+ "quick-xml 0.32.0",
"regex",
"serde",
"serde_json",
@@ -12303,19 +12797,18 @@ dependencies = [
[[package]]
name = "poem-openapi-derive"
-version = "2.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "274cf13f710999977a3c1e396c2a5000d104075a7127ce6470fbdae4706be621"
+version = "5.0.2"
+source = "git+https://github.com/poem-web/poem.git?rev=809b2816d3504beeba140fef3fdfe9432d654c5b#809b2816d3504beeba140fef3fdfe9432d654c5b"
dependencies = [
- "darling 0.14.4",
- "http",
- "indexmap 1.9.3",
+ "darling 0.20.9",
+ "http 1.1.0",
+ "indexmap 2.2.5",
"mime",
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
"regex",
- "syn 1.0.109",
+ "syn 2.0.48",
"thiserror",
]
@@ -12551,16 +13044,6 @@ dependencies = [
"structopt",
]
-[[package]]
-name = "prettyplease"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
-dependencies = [
- "proc-macro2",
- "syn 2.0.48",
-]
-
[[package]]
name = "prettytable-rs"
version = "0.10.0"
@@ -12623,14 +13106,22 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
-version = "2.0.1"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a"
+checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
dependencies = [
- "toml_datetime",
"toml_edit 0.20.2",
]
+[[package]]
+name = "proc-macro-crate"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+dependencies = [
+ "toml_edit 0.21.1",
+]
+
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@@ -12679,39 +13170,46 @@ dependencies = [
[[package]]
name = "processor"
version = "1.0.0"
-source = "git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=a11f0b6532349aa6b9a80c9a1d77524f02d8a013#a11f0b6532349aa6b9a80c9a1d77524f02d8a013"
+source = "git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=fa1ce4947f4c2be57529f1c9732529e05a06cb7f#fa1ce4947f4c2be57529f1c9732529e05a06cb7f"
dependencies = [
"ahash 0.8.11",
+ "allocative",
+ "allocative_derive",
"anyhow",
- "aptos-moving-average 0.1.0 (git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=a11f0b6532349aa6b9a80c9a1d77524f02d8a013)",
- "aptos-protos 1.3.0 (git+https://github.com/aptos-labs/aptos-core.git?tag=aptos-node-v1.10.0)",
+ "aptos-moving-average 0.1.0 (git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=fa1ce4947f4c2be57529f1c9732529e05a06cb7f)",
+ "aptos-protos 1.3.1 (git+https://github.com/aptos-labs/aptos-core.git?rev=5c48aee129b5a141be2792ffa3d9bd0a1a61c9cb)",
"async-trait",
- "base64 0.13.1",
"bcs 0.1.4",
"bigdecimal",
+ "bitflags 2.6.0",
+ "canonical_json",
"chrono",
"clap 4.4.14",
"diesel",
- "diesel-async 0.4.1 (git+https://github.com/weiznich/diesel_async.git?rev=d02798c67065d763154d7272dd0c09b39757d0f2)",
- "diesel_async_migrations",
+ "diesel-async",
"diesel_migrations",
"enum_dispatch",
"field_count",
"futures",
"futures-util",
- "gcloud-sdk",
"google-cloud-googleapis",
"google-cloud-pubsub",
+ "google-cloud-storage",
"hex",
+ "hyper 0.14.28",
"itertools 0.12.1",
+ "jemallocator",
"kanal",
+ "lazy_static",
"native-tls",
+ "num 0.4.1",
"num_cpus",
"once_cell",
+ "parquet",
+ "parquet_derive",
"postgres-native-tls",
"prometheus",
"prost 0.12.3",
- "prost-types 0.12.3",
"regex",
"serde",
"serde_json",
@@ -12719,9 +13217,10 @@ dependencies = [
"sha2 0.9.9",
"sha3 0.9.1",
"strum 0.24.1",
+ "tiny-keccak",
"tokio",
"tokio-postgres",
- "tonic 0.10.2",
+ "tonic 0.11.0",
"tracing",
"unescape",
"url",
@@ -12768,7 +13267,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ae2f6a3f14ff35c16b51ac796d1dc73c15ad6472c48836c6c467f6d52266648"
dependencies = [
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"time",
@@ -12795,7 +13294,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf"
dependencies = [
"bit-set",
"bit-vec",
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"lazy_static",
"num-traits",
"rand 0.8.5",
@@ -12838,6 +13337,16 @@ dependencies = [
"prost-derive 0.12.3",
]
+[[package]]
+name = "prost"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc"
+dependencies = [
+ "bytes",
+ "prost-derive 0.13.1",
+]
+
[[package]]
name = "prost-derive"
version = "0.11.9"
@@ -12864,6 +13373,19 @@ dependencies = [
"syn 2.0.48",
]
+[[package]]
+name = "prost-derive"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca"
+dependencies = [
+ "anyhow",
+ "itertools 0.13.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
[[package]]
name = "prost-types"
version = "0.11.9"
@@ -12882,6 +13404,15 @@ dependencies = [
"prost 0.12.3",
]
+[[package]]
+name = "prost-types"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2"
+dependencies = [
+ "prost 0.13.1",
+]
+
[[package]]
name = "protobuf"
version = "2.28.0"
@@ -12915,7 +13446,7 @@ dependencies = [
"chrono",
"clap 4.4.14",
"codespan-reporting",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"log",
"move-compiler",
"move-model",
@@ -12990,7 +13521,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea"
dependencies = [
"memchr",
- "serde",
]
[[package]]
@@ -13004,9 +13534,9 @@ dependencies = [
[[package]]
name = "quick-xml"
-version = "0.30.0"
+version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956"
+checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2"
dependencies = [
"memchr",
"serde",
@@ -13024,6 +13554,52 @@ dependencies = [
"parking_lot 0.12.1",
]
+[[package]]
+name = "quinn"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad"
+dependencies = [
+ "bytes",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash",
+ "rustls 0.23.7",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe"
+dependencies = [
+ "bytes",
+ "rand 0.8.5",
+ "ring 0.17.7",
+ "rustc-hash",
+ "rustls 0.23.7",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285"
+dependencies = [
+ "libc",
+ "once_cell",
+ "socket2 0.5.5",
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "quote"
version = "1.0.35"
@@ -13318,51 +13894,96 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "reqwest"
-version = "0.11.23"
+version = "0.11.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
+dependencies = [
+ "base64 0.21.6",
+ "bytes",
+ "cookie 0.16.2",
+ "cookie_store",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2 0.3.26",
+ "http 0.2.11",
+ "http-body 0.4.6",
+ "hyper 0.14.28",
+ "hyper-rustls 0.24.2",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "mime_guess",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls 0.21.10",
+ "rustls-pemfile 1.0.4",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "system-configuration",
+ "tokio",
+ "tokio-native-tls",
+ "tokio-rustls 0.24.1",
+ "tokio-util 0.7.10",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams 0.3.0",
+ "web-sys",
+ "webpki-roots 0.25.3",
+ "winreg 0.50.0",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
+checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37"
dependencies = [
"async-compression",
- "base64 0.21.6",
+ "base64 0.22.1",
"bytes",
- "cookie 0.16.2",
- "cookie_store",
- "encoding_rs",
"futures-core",
"futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-rustls 0.24.2",
- "hyper-tls",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "hyper 1.4.1",
+ "hyper-rustls 0.27.2",
+ "hyper-util",
"ipnet",
"js-sys",
"log",
"mime",
"mime_guess",
- "native-tls",
"once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls 0.21.10",
- "rustls-pemfile 1.0.4",
+ "quinn",
+ "rustls 0.23.7",
+ "rustls-native-certs 0.7.0",
+ "rustls-pemfile 2.1.1",
+ "rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
- "system-configuration",
+ "sync_wrapper 1.0.1",
"tokio",
- "tokio-native-tls",
- "tokio-rustls 0.24.1",
+ "tokio-rustls 0.26.0",
"tokio-util 0.7.10",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
- "wasm-streams",
+ "wasm-streams 0.4.0",
"web-sys",
- "webpki-roots 0.25.3",
- "winreg",
+ "winreg 0.52.0",
]
[[package]]
@@ -13373,8 +13994,8 @@ checksum = "88a3e86aa6053e59030e7ce2d2a3b258dd08fc2d337d52f73f6cb480f5858690"
dependencies = [
"anyhow",
"async-trait",
- "http",
- "reqwest",
+ "http 0.2.11",
+ "reqwest 0.11.23",
"serde",
"task-local-extensions",
"thiserror",
@@ -13391,10 +14012,10 @@ dependencies = [
"chrono",
"futures",
"getrandom 0.2.11",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.28",
"parking_lot 0.11.2",
- "reqwest",
+ "reqwest 0.11.23",
"reqwest-middleware",
"retry-policies",
"task-local-extensions",
@@ -13509,9 +14130,9 @@ dependencies = [
[[package]]
name = "rocksdb"
-version = "0.21.0"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffe"
+checksum = "6bd13e55d6d7b8cd0ea569161127567cd587676c99f4472f779a0279aa60a7a7"
dependencies = [
"libc",
"librocksdb-sys",
@@ -13551,12 +14172,24 @@ dependencies = [
"pkcs1 0.7.5",
"pkcs8 0.10.2",
"rand_core 0.6.4",
+ "sha2 0.10.8",
"signature 2.2.0",
"spki 0.7.3",
"subtle",
"zeroize",
]
+[[package]]
+name = "rsb_derive"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2c53e42fccdc5f1172e099785fe78f89bc0c1e657d0c2ef591efbfac427e9a4"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
[[package]]
name = "rstack"
version = "0.3.3"
@@ -13671,7 +14304,7 @@ version = "0.38.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"errno",
"libc",
"linux-raw-sys 0.4.12",
@@ -13704,11 +14337,26 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.22.2"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
+dependencies = [
+ "log",
+ "ring 0.17.7",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.2",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41"
+checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b"
dependencies = [
"log",
+ "once_cell",
"ring 0.17.7",
"rustls-pki-types",
"rustls-webpki 0.102.2",
@@ -13750,15 +14398,6 @@ dependencies = [
"base64 0.13.1",
]
-[[package]]
-name = "rustls-pemfile"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ee86d63972a7c661d1536fefe8c3c8407321c3df668891286de28abcd087360"
-dependencies = [
- "base64 0.13.1",
-]
-
[[package]]
name = "rustls-pemfile"
version = "1.0.4"
@@ -13833,6 +14472,26 @@ dependencies = [
"wait-timeout",
]
+[[package]]
+name = "rvs_derive"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e1fa12378eb54f3d4f2db8dcdbe33af610b7e7d001961c1055858282ecef2a5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "rvstruct"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5107860ec34506b64cf3680458074eac5c2c564f7ccc140918bbcd1714fd8d5d"
+dependencies = [
+ "rvs_derive",
+]
+
[[package]]
name = "ryu"
version = "1.0.16"
@@ -14005,12 +14664,12 @@ name = "self_update"
version = "0.39.0"
source = "git+https://github.com/banool/self_update.git?rev=8306158ad0fd5b9d4766a3c6bf967e7ef0ea5c4b#8306158ad0fd5b9d4766a3c6bf967e7ef0ea5c4b"
dependencies = [
- "hyper",
+ "hyper 0.14.28",
"indicatif 0.17.7",
"log",
"quick-xml 0.23.1",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"self-replace",
"semver",
"serde_json",
@@ -14030,14 +14689,10 @@ dependencies = [
]
[[package]]
-name = "sender"
-version = "0.1.0"
-dependencies = [
- "bytes",
- "clap 4.4.14",
- "event-listener 2.5.3",
- "tokio",
-]
+name = "seq-macro"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
[[package]]
name = "serde"
@@ -14158,6 +14813,16 @@ dependencies = [
"thiserror",
]
+[[package]]
+name = "serde_path_to_error"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6"
+dependencies = [
+ "itoa",
+ "serde",
+]
+
[[package]]
name = "serde_regex"
version = "1.1.0"
@@ -14223,7 +14888,7 @@ version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788"
dependencies = [
- "darling 0.20.3",
+ "darling 0.20.9",
"proc-macro2",
"quote",
"syn 2.0.48",
@@ -14277,13 +14942,13 @@ dependencies = [
[[package]]
name = "server-framework"
version = "1.0.0"
-source = "git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=a11f0b6532349aa6b9a80c9a1d77524f02d8a013#a11f0b6532349aa6b9a80c9a1d77524f02d8a013"
+source = "git+https://github.com/aptos-labs/aptos-indexer-processors.git?rev=fa1ce4947f4c2be57529f1c9732529e05a06cb7f#fa1ce4947f4c2be57529f1c9732529e05a06cb7f"
dependencies = [
"anyhow",
+ "aptos-system-utils 0.1.0 (git+https://github.com/aptos-labs/aptos-core.git?rev=4541add3fd29826ec57f22658ca286d2d6134b93)",
"async-trait",
"backtrace",
"clap 4.4.14",
- "futures",
"prometheus",
"serde",
"serde_yaml 0.8.26",
@@ -14629,6 +15294,8 @@ dependencies = [
"aptos-consensus",
"aptos-crypto",
"aptos-db",
+ "aptos-db-indexer",
+ "aptos-db-indexer-schemas",
"aptos-debugger",
"aptos-dkg",
"aptos-faucet-core",
@@ -14639,6 +15306,7 @@ dependencies = [
"aptos-genesis",
"aptos-global-constants",
"aptos-indexer",
+ "aptos-indexer-grpc-table-info",
"aptos-infallible",
"aptos-inspection-service",
"aptos-keygen",
@@ -14647,6 +15315,7 @@ dependencies = [
"aptos-release-builder",
"aptos-rest-client",
"aptos-rosetta",
+ "aptos-schemadb",
"aptos-sdk",
"aptos-secure-storage",
"aptos-storage-interface",
@@ -14661,16 +15330,17 @@ dependencies = [
"digest 0.9.0",
"futures",
"hex",
- "hyper",
+ "hyper 0.14.28",
"move-core-types",
"num_cpus",
"once_cell",
"rand 0.7.3",
"regex",
- "reqwest",
+ "reqwest 0.11.23",
"serde",
"serde_json",
"serde_yaml 0.8.26",
+ "tempfile",
"tokio",
"url",
"walkdir",
@@ -14829,6 +15499,21 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "struct-path"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "899edf28cf7320503eda593b4bbce1bc5e9533501a11d45537e2c5be90128fc7"
+dependencies = [
+ "convert_case 0.6.0",
+]
+
[[package]]
name = "structopt"
version = "0.3.26"
@@ -14871,6 +15556,12 @@ dependencies = [
"strum_macros 0.25.3",
]
+[[package]]
+name = "strum"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
+
[[package]]
name = "strum_macros"
version = "0.24.3"
@@ -14897,6 +15588,19 @@ dependencies = [
"syn 2.0.48",
]
+[[package]]
+name = "strum_macros"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.48",
+]
+
[[package]]
name = "subtle"
version = "2.5.0"
@@ -14960,6 +15664,15 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+[[package]]
+name = "sync_wrapper"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
+dependencies = [
+ "futures-core",
+]
+
[[package]]
name = "sysinfo"
version = "0.28.4"
@@ -15149,7 +15862,7 @@ dependencies = [
"crossbeam-channel",
"getrandom 0.2.11",
"hex",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"module-generation",
"move-binary-format",
"move-bytecode-verifier",
@@ -15160,7 +15873,6 @@ dependencies = [
"move-vm-test-utils",
"move-vm-types",
"num_cpus",
- "once_cell",
"rand 0.8.5",
"tracing",
"tracing-subscriber 0.3.18",
@@ -15215,18 +15927,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
[[package]]
name = "thiserror"
-version = "1.0.56"
+version = "1.0.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.56"
+version = "1.0.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
dependencies = [
"proc-macro2",
"quote",
@@ -15252,6 +15964,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 2.10.1",
+]
+
[[package]]
name = "tiff"
version = "0.9.0"
@@ -15462,11 +16185,32 @@ version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
dependencies = [
- "rustls 0.22.2",
+ "rustls 0.22.4",
+ "rustls-pki-types",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
+dependencies = [
+ "rustls 0.23.7",
"rustls-pki-types",
"tokio",
]
+[[package]]
+name = "tokio-scoped"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4beb8ba13bc53ac53ce1d52b42f02e5d8060f0f42138862869beb769722b256"
+dependencies = [
+ "tokio",
+ "tokio-stream",
+]
+
[[package]]
name = "tokio-stream"
version = "0.1.14"
@@ -15556,43 +16300,42 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
-version = "0.14.4"
+version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
- "combine",
- "indexmap 1.9.3",
- "itertools 0.10.5",
+ "indexmap 2.2.5",
"serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
]
[[package]]
name = "toml_edit"
-version = "0.19.15"
+version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
dependencies = [
"indexmap 2.2.5",
- "serde",
- "serde_spanned",
"toml_datetime",
"winnow",
]
[[package]]
name = "toml_edit"
-version = "0.20.2"
+version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
+checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
dependencies = [
"indexmap 2.2.5",
"toml_datetime",
@@ -15613,15 +16356,14 @@ dependencies = [
"flate2",
"futures-core",
"futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-timeout",
+ "h2 0.3.26",
+ "http 0.2.11",
+ "http-body 0.4.6",
+ "hyper 0.14.28",
+ "hyper-timeout 0.4.1",
"percent-encoding",
"pin-project 1.1.3",
"prost 0.11.9",
- "rustls-native-certs 0.6.3",
"rustls-pemfile 1.0.4",
"tokio",
"tokio-rustls 0.24.1",
@@ -15635,67 +16377,68 @@ dependencies = [
[[package]]
name = "tonic"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e"
+version = "0.11.0"
+source = "git+https://github.com/aptos-labs/tonic.git?rev=0da1ba8b1751d6e19eb55be24cccf9ae933c666e#0da1ba8b1751d6e19eb55be24cccf9ae933c666e"
dependencies = [
"async-stream",
"async-trait",
"axum 0.6.20",
- "base64 0.21.6",
+ "base64 0.22.1",
"bytes",
"flate2",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-timeout",
+ "h2 0.3.26",
+ "http 0.2.11",
+ "http-body 0.4.6",
+ "hyper 0.14.28",
+ "hyper-timeout 0.4.1",
"percent-encoding",
"pin-project 1.1.3",
"prost 0.12.3",
- "rustls 0.21.10",
- "rustls-native-certs 0.6.3",
- "rustls-pemfile 1.0.4",
+ "rustls-native-certs 0.7.0",
+ "rustls-pemfile 2.1.1",
+ "strum 0.26.2",
+ "strum_macros 0.26.4",
"tokio",
- "tokio-rustls 0.24.1",
+ "tokio-rustls 0.26.0",
"tokio-stream",
"tower",
"tower-layer",
"tower-service",
"tracing",
+ "zstd",
]
[[package]]
name = "tonic"
-version = "0.11.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13"
+checksum = "38659f4a91aba8598d27821589f5db7dddd94601e7a01b1e485a50e5484c7401"
dependencies = [
"async-stream",
"async-trait",
- "axum 0.6.20",
- "base64 0.21.6",
+ "axum 0.7.5",
+ "base64 0.22.1",
"bytes",
- "flate2",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-timeout",
+ "h2 0.4.5",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "hyper 1.4.1",
+ "hyper-timeout 0.5.1",
+ "hyper-util",
"percent-encoding",
"pin-project 1.1.3",
- "prost 0.12.3",
+ "prost 0.13.1",
"rustls-native-certs 0.7.0",
"rustls-pemfile 2.1.1",
- "rustls-pki-types",
+ "socket2 0.5.5",
"tokio",
- "tokio-rustls 0.25.0",
+ "tokio-rustls 0.26.0",
"tokio-stream",
"tower",
"tower-layer",
"tower-service",
"tracing",
- "zstd",
]
[[package]]
@@ -15742,8 +16485,8 @@ dependencies = [
"bytes",
"futures-core",
"futures-util",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.6",
"http-range-header",
"pin-project-lite",
"tower-layer",
@@ -15751,25 +16494,6 @@ dependencies = [
"tracing",
]
-[[package]]
-name = "tower-http"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
-dependencies = [
- "bitflags 1.3.2",
- "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"
@@ -15971,7 +16695,7 @@ dependencies = [
"byteorder",
"bytes",
"data-encoding",
- "http",
+ "http 0.2.11",
"httparse",
"log",
"rand 0.8.5",
@@ -15981,6 +16705,16 @@ dependencies = [
"utf-8",
]
+[[package]]
+name = "twox-hash"
+version = "1.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+dependencies = [
+ "cfg-if",
+ "static_assertions",
+]
+
[[package]]
name = "typed-arena"
version = "2.0.2"
@@ -16282,9 +17016,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "uuid"
-version = "1.6.1"
+version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439"
dependencies = [
"getrandom 0.2.11",
"serde",
@@ -16379,13 +17113,13 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "headers",
- "http",
- "hyper",
+ "headers 0.3.9",
+ "http 0.2.11",
+ "hyper 0.14.28",
"log",
"mime",
"mime_guess",
- "multer",
+ "multer 2.1.0",
"percent-encoding",
"pin-project 1.1.3",
"rustls-pemfile 1.0.4",
@@ -16408,9 +17142,9 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "948552bbb7a5fb4ba3169fd09b6c1ab53c1b2fdd82603295df550f7a1ec644c0"
dependencies = [
- "hyper",
+ "hyper 0.14.28",
"once_cell",
- "reqwest",
+ "reqwest 0.11.23",
"thiserror",
"unicase",
"warp",
@@ -16513,6 +17247,19 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "wasm-streams"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
[[package]]
name = "wasm-timer"
version = "0.2.5"
@@ -16877,6 +17624,16 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "winreg"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
[[package]]
name = "wyz"
version = "0.2.0"
@@ -16936,22 +17693,22 @@ checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377"
[[package]]
name = "yup-oauth2"
-version = "7.0.1"
+version = "8.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98748970d2ddf05253e6525810d989740334aa7509457864048a829902db76f3"
+checksum = "b61da40aeb0907a65f7fb5c1de83c5a224d6a9ebb83bf918588a2bb744d636b8"
dependencies = [
"anyhow",
"async-trait",
- "base64 0.13.1",
+ "base64 0.21.6",
"futures",
- "http",
- "hyper",
- "hyper-rustls 0.23.2",
- "itertools 0.10.5",
+ "http 0.2.11",
+ "hyper 0.14.28",
+ "hyper-rustls 0.24.2",
+ "itertools 0.12.1",
"log",
"percent-encoding",
- "rustls 0.20.9",
- "rustls-pemfile 0.3.0",
+ "rustls 0.22.4",
+ "rustls-pemfile 1.0.4",
"seahash",
"serde",
"serde_json",
@@ -17037,20 +17794,19 @@ dependencies = [
[[package]]
name = "zstd"
-version = "0.12.4"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c"
+checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
-version = "6.0.6"
+version = "7.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581"
+checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e"
dependencies = [
- "libc",
"zstd-sys",
]
diff --git a/Cargo.toml b/Cargo.toml
index 6babe1e5819f5..175e667c73783 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -41,7 +41,6 @@ members = [
"aptos-move/mvhashmap",
"aptos-move/package-builder",
"aptos-move/vm-genesis",
- "aptos-move/writeset-transaction-generator",
"aptos-node",
"aptos-utils",
"config",
@@ -102,6 +101,7 @@ members = [
"crates/crash-handler",
"crates/fallible",
"crates/indexer",
+ "crates/jwk-utils",
"crates/node-resource-metrics",
"crates/num-variants",
"crates/proxy",
@@ -116,12 +116,13 @@ members = [
"ecosystem/indexer-grpc/indexer-grpc-cache-worker",
"ecosystem/indexer-grpc/indexer-grpc-data-service",
"ecosystem/indexer-grpc/indexer-grpc-file-store",
+ "ecosystem/indexer-grpc/indexer-grpc-file-store-backfiller",
"ecosystem/indexer-grpc/indexer-grpc-fullnode",
"ecosystem/indexer-grpc/indexer-grpc-in-memory-cache-benchmark",
- "ecosystem/indexer-grpc/indexer-grpc-integration-tests",
"ecosystem/indexer-grpc/indexer-grpc-server-framework",
"ecosystem/indexer-grpc/indexer-grpc-table-info",
"ecosystem/indexer-grpc/indexer-grpc-utils",
+ "ecosystem/indexer-grpc/transaction-filter",
"ecosystem/nft-metadata-crawler-parser",
"ecosystem/node-checker",
"ecosystem/node-checker/fn-check-client",
@@ -133,7 +134,10 @@ members = [
"execution/executor-types",
"experimental/execution/ptx-executor",
"experimental/runtimes",
+ "experimental/storage/hexy",
"experimental/storage/layered-map",
+ "keyless/circuit",
+ "keyless/common",
"keyless/pepper/common",
"keyless/pepper/example-client-rust",
"keyless/pepper/service",
@@ -169,14 +173,12 @@ members = [
"storage/db-tool",
"storage/executable-store",
"storage/indexer",
+ "storage/indexer_schemas",
"storage/jellyfish-merkle",
"storage/rocksdb-options",
"storage/schemadb",
"storage/scratchpad",
"storage/storage-interface",
- "testsuite/dos/http_test",
- "testsuite/dos/listener",
- "testsuite/dos/sender",
"testsuite/forge",
"testsuite/forge-cli",
"testsuite/fuzzer",
@@ -193,6 +195,7 @@ members = [
"third_party/move/move-binary-format",
"third_party/move/move-binary-format/serializer-tests",
"third_party/move/move-borrow-graph",
+ "third_party/move/move-bytecode-spec",
"third_party/move/move-bytecode-verifier",
"third_party/move/move-bytecode-verifier/bytecode-verifier-tests",
"third_party/move/move-bytecode-verifier/fuzz",
@@ -243,6 +246,7 @@ members = [
"third_party/move/tools/move-resource-viewer",
"third_party/move/tools/move-unit-test",
"tools/calc-dep-sizes",
+ "tools/compute-module-expansion-size",
"types",
"vm-validator",
]
@@ -276,7 +280,7 @@ homepage = "https://aptoslabs.com"
license = "Apache-2.0"
publish = false
repository = "https://github.com/aptos-labs/aptos-core"
-rust-version = "1.75.0"
+rust-version = "1.78.0"
[workspace.dependencies]
# Internal crate dependencies.
@@ -311,6 +315,7 @@ aptos-data-client = { path = "state-sync/aptos-data-client" }
aptos-data-streaming-service = { path = "state-sync/data-streaming-service" }
aptos-db = { path = "storage/aptosdb" }
aptos-db-indexer = { path = "storage/indexer" }
+aptos-db-indexer-schemas = { path = "storage/indexer_schemas" }
aptos-db-tool = { path = "storage/db-tool" }
aptos-debugger = { path = "crates/aptos-debugger" }
aptos-dkg = { path = "crates/aptos-dkg" }
@@ -324,6 +329,7 @@ aptos-enum-conversion-derive = { path = "crates/aptos-enum-conversion-derive" }
aptos-executor-service = { path = "execution/executor-service" }
aptos-executor-test-helpers = { path = "execution/executor-test-helpers" }
aptos-executor-types = { path = "execution/executor-types" }
+aptos-experimental-hexy = { path = "experimental/storage/hexy" }
aptos-experimental-layered-map = { path = "experimental/storage/layered-map" }
aptos-experimental-ptx-executor = { path = "experimental/execution/ptx-executor" }
aptos-experimental-runtimes = { path = "experimental/runtimes" }
@@ -350,6 +356,7 @@ aptos-indexer = { path = "crates/indexer" }
aptos-indexer-grpc-cache-worker = { path = "ecosystem/indexer-grpc/indexer-grpc-cache-worker" }
aptos-indexer-grpc-data-service = { path = "ecosystem/indexer-grpc/indexer-grpc-data-service" }
aptos-indexer-grpc-file-store = { path = "ecosystem/indexer-grpc/indexer-grpc-file-store" }
+aptos-indexer-grpc-file-store-backfiller = { path = "ecosystem/indexer-grpc/indexer-grpc-file-store-backfiller" }
aptos-indexer-grpc-fullnode = { path = "ecosystem/indexer-grpc/indexer-grpc-fullnode" }
aptos-indexer-grpc-in-memory-cache-benchmark = { path = "ecosystem/indexer-grpc/indexer-grpc-in-memory-cache-benchmark" }
aptos-indexer-grpc-table-info = { path = "ecosystem/indexer-grpc/indexer-grpc-table-info" }
@@ -359,6 +366,7 @@ aptos-infallible = { path = "crates/aptos-infallible" }
aptos-inspection-service = { path = "crates/aptos-inspection-service" }
aptos-jellyfish-merkle = { path = "storage/jellyfish-merkle" }
aptos-jwk-consensus = { path = "crates/aptos-jwk-consensus" }
+aptos-jwk-utils = { path = "crates/jwk-utils" }
aptos-keygen = { path = "crates/aptos-keygen" }
aptos-language-e2e-tests = { path = "aptos-move/e2e-tests" }
aptos-ledger = { path = "crates/aptos-ledger" }
@@ -391,6 +399,7 @@ aptos-package-builder = { path = "aptos-move/package-builder" }
aptos-peer-monitoring-service-client = { path = "peer-monitoring-service/client" }
aptos-peer-monitoring-service-server = { path = "peer-monitoring-service/server" }
aptos-peer-monitoring-service-types = { path = "peer-monitoring-service/types" }
+aptos-keyless-common = { path = "keyless/common" }
aptos-keyless-pepper-common = { path = "keyless/pepper/common" }
aptos-keyless-pepper-service = { path = "keyless/pepper/service" }
aptos-profiler = { path = "crates/aptos-profiler" }
@@ -423,6 +432,7 @@ aptos-storage-service-notifications = { path = "state-sync/inter-component/stora
aptos-storage-service-types = { path = "state-sync/storage-service/types" }
aptos-storage-service-server = { path = "state-sync/storage-service/server" }
aptos-system-utils = { path = "crates/aptos-system-utils" }
+aptos-transaction-filter = { path = "ecosystem/indexer-grpc/transaction-filter" }
aptos-telemetry = { path = "crates/aptos-telemetry" }
aptos-telemetry-service = { path = "crates/aptos-telemetry-service" }
aptos-temppath = { path = "crates/aptos-temppath" }
@@ -444,7 +454,6 @@ aptos-vm-genesis = { path = "aptos-move/vm-genesis" }
aptos-vm-types = { path = "aptos-move/aptos-vm-types" }
aptos-vm-validator = { path = "vm-validator" }
aptos-warp-webserver = { path = "crates/aptos-warp-webserver" }
-aptos-writeset-generator = { path = "aptos-move/writeset-transaction-generator" }
aptos-cargo-cli = { path = "devtools/aptos-cargo-cli" }
# External crate dependencies.
@@ -475,7 +484,7 @@ async-mutex = "1.4.0"
async-recursion = "1.0.5"
async-stream = "0.3"
async-trait = "0.1.53"
-axum = "0.5.16"
+axum = "0.7.5"
base64 = "0.13.0"
base64-url = "2.0.1"
backoff = { version = "0.4.0", features = ["tokio"] }
@@ -512,7 +521,7 @@ codespan = "0.11.1"
codespan-reporting = "0.11.1"
colored = "2.0.0"
concurrent-queue = "2.2.0"
-console-subscriber = "0.1.8"
+console-subscriber = "0.3.0"
const_format = "0.2.26"
core_affinity = "0.8.1"
coset = "0.3"
@@ -529,12 +538,18 @@ datatest-stable = "0.1.1"
debug-ignore = { version = "1.0.3", features = ["serde"] }
derivative = "2.2.0"
derivation-path = "0.2.0"
+derive_builder = "0.20.0"
determinator = "0.12.0"
derive_more = "0.99.11"
diesel = "2.1"
# Use the crate version once this feature gets released on crates.io:
# https://github.com/weiznich/diesel_async/commit/e165e8c96a6c540ebde2d6d7c52df5c5620a4bf1
-diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "d02798c67065d763154d7272dd0c09b39757d0f2", features = ["async-connection-wrapper", "postgres", "bb8", "tokio"] }
+diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "d02798c67065d763154d7272dd0c09b39757d0f2", features = [
+ "async-connection-wrapper",
+ "postgres",
+ "bb8",
+ "tokio",
+] }
diesel_migrations = { version = "2.1.0", features = ["postgres"] }
difference = "2.0.0"
digest = "0.9.0"
@@ -557,6 +572,7 @@ fail = "0.5.0"
ff = { version = "0.13", features = ["derive"] }
field_count = "0.1.1"
file_diff = "1.0.0"
+firestore = "0.43.0"
fixed = "1.25.1"
flate2 = "1.0.24"
flexi_logger = "0.27.4"
@@ -566,7 +582,7 @@ futures-core = "0.3.29"
futures-util = "0.3.29"
fxhash = "0.2.1"
getrandom = "0.2.2"
-gcp-bigquery-client = "0.13.0"
+gcp-bigquery-client = "0.16.8"
get_if_addrs = "0.5.3"
git2 = "0.16.1"
glob = "0.3.0"
@@ -594,7 +610,7 @@ indoc = "1.0.6"
inferno = "0.11.14"
internment = { version = "0.5.0", features = ["arc"] }
ipnet = "2.5.0"
-itertools = "0.12"
+itertools = "0.13"
jemallocator = { version = "0.5.0", features = [
"profiling",
"unprefixed_malloc_on_supported_platforms",
@@ -609,7 +625,7 @@ libfuzzer-sys = "0.4.6"
libsecp256k1 = "0.7.0"
log = "0.4.17"
lru = "0.7.5"
-lz4 = "1.24.0"
+lz4 = "1.25.0"
maplit = "1.0.2"
merlin = "3"
memory-stats = "1.0.0"
@@ -628,7 +644,6 @@ num_cpus = "1.13.1"
num-derive = "0.3.3"
num-integer = "0.1.42"
num-traits = "0.2.15"
-number_range = "0.3.2"
once_cell = "1.10.0"
ordered-float = "3.9.1"
ouroboros = "0.15.6"
@@ -650,9 +665,10 @@ percent-encoding = "2.1.0"
petgraph = "0.5.1"
pin-project = "1.0.10"
plotters = { version = "0.3.5", default-features = false }
-poem = { version = "=1.3.59", features = ["anyhow", "rustls"] }
-poem-openapi = { version = "=2.0.11", features = ["swagger-ui", "url"] }
-poem-openapi-derive = "=2.0.11"
+# We're using git deps until https://github.com/poem-web/poem/pull/829 gets formally released.
+poem = { git = "https://github.com/poem-web/poem.git", rev = "809b2816d3504beeba140fef3fdfe9432d654c5b", features = ["anyhow", "rustls"] }
+poem-openapi = { git = "https://github.com/poem-web/poem.git", rev = "809b2816d3504beeba140fef3fdfe9432d654c5b", features = ["swagger-ui", "url"] }
+poem-openapi-derive = { git = "https://github.com/poem-web/poem.git", rev = "809b2816d3504beeba140fef3fdfe9432d654c5b" }
poseidon-ark = { git = "https://github.com/arnaucube/poseidon-ark.git", rev = "6d2487aa1308d9d3860a2b724c485d73095c1c68" }
pprof = { version = "0.11", features = ["flamegraph", "protobuf-codec"] }
pretty = "0.10.0"
@@ -686,13 +702,14 @@ reqwest = { version = "0.11.11", features = [
"blocking",
"cookies",
"json",
+ "multipart",
"stream",
] }
reqwest-middleware = "0.2.0"
reqwest-retry = "0.2.1"
ring = { version = "0.16.20", features = ["std"] }
ripemd = "0.1.1"
-rocksdb = { version = "0.21.0", features = ["lz4"] }
+rocksdb = { version = "0.22.0", features = ["lz4"] }
rsa = { version = "0.9.6" }
rstack-self = { version = "0.3.0", features = ["dw"], default_features = false }
rstest = "0.15.0"
@@ -788,6 +805,7 @@ z3tracer = "0.8.0"
# MOVE DEPENDENCIES
move-abigen = { path = "third_party/move/move-prover/move-abigen" }
move-binary-format = { path = "third_party/move/move-binary-format" }
+move-bytecode-spec = { path = "third_party/move/move-bytecode-spec" }
move-bytecode-verifier = { path = "third_party/move/move-bytecode-verifier" }
move-bytecode-utils = { path = "third_party/move/tools/move-bytecode-utils" }
move-cli = { path = "third_party/move/tools/move-cli" }
@@ -859,3 +877,4 @@ debug = true
serde-reflection = { git = "https://github.com/aptos-labs/serde-reflection", rev = "73b6bbf748334b71ff6d7d09d06a29e3062ca075" }
merlin = { git = "https://github.com/aptos-labs/merlin" }
x25519-dalek = { git = "https://github.com/aptos-labs/x25519-dalek", branch = "zeroize_v1" }
+tonic = { git = "https://github.com/aptos-labs/tonic.git", rev = "0da1ba8b1751d6e19eb55be24cccf9ae933c666e" }
diff --git a/RELEASE.md b/RELEASE.md
index d5e5a73617018..86ad2d66f087f 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -39,13 +39,13 @@ The aptos cli release tags are created to track the CLI versions for community t
(The time length here is a rough estimate, it varies depends on each release.)
* [day 0] A release branch `aptos-release-vx.y` will be created, with a commit hash `abcde`. The full test suite will be triggered for the commit hash for validation.
* [day 1] The release will be deployed to **devnet**.
-* [day 7] Once the release passed devnet test, a release tag `aptos-node-vx.y.z` will be created, and get deployed to **testnet**.
-* [day 14] After the binary release stablized on testnet, testnet framework will be upgraded.
+* [day 7] Once the release passed devnet test, a release tag `aptos-node-vx.y.z.rc` will be created, and get deployed to **testnet**.
+* [day 10] After the binary release stablized on testnet, testnet framework will be upgraded.
* Hot-fixes release will be created as needed when a release version is soaking in testnet, and we will only promote a release from testnet to Mainnet after confirming a release version is stable.
-* [day 24] Once confirmed that both binary upgrade and framework upgrade stablized on testnet, the release version will be deployed to 1% of the stake on **Mainnet**.
-* [day 25] Wider announcement will be made for the community to upgrade the binary, `aptos-node-vx.y.z` will be updated with "[Mainnet]" in the release page, Mainnet validators will be slowly upgrading.
-* [day 30] A list of framework upgrade proposals will be submitted to Mainnet for voting.
-* [day 37] Proposals executed on-chain if passed voting.
+* [day 14] Once confirmed that both binary upgrade and framework upgrade stablized on testnet, a release tag `aptos-node-vx.y.z` will be created, the release version will be deployed to 1% of the stake on **Mainnet**.
+* [day 16] Wider announcement will be made for the community to upgrade the binary, `aptos-node-vx.y.z` will be updated with "[Mainnet]" in the release page, Mainnet validators will be slowly upgrading.
+* [day 17] A list of framework upgrade proposals will be submitted to Mainnet for voting.
+* [day 24] Proposals executed on-chain if passed voting.
## Release Announcement
* Each of the network release will be announced on Aptos Network [Discord](https://discord.gg/aptosnetwork). Follow mainnet-release, testnet-release, devnet-release channel to get updates.
diff --git a/SECURITY.md b/SECURITY.md
index 48c42cb940f20..acb4ca035fe1c 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1,139 +1,5 @@
-# Aptos Core Bug Bounty
+# Aptos Foundation Bounty Program
-## Reporting a Security Concern
+The Aptos Foundation welcomes feedback from security researchers and the general public to help improve the security of the Aptos Network, and, at its sole discretion, offers bounty rewards for security reports that identify previously unknown, in-scope security vulnerabilities.
-**DO NOT CREATE AN ISSUE** to report a security problem.
-
-Go to https://github.com/aptos-labs/aptos-core/security/advisories and open a vulnerability report. Send an email to [security@aptosfoundation.org](mailto:security@aptosfoundation.org) and provide your GitHub username. The team will triage the issue from there.
-
-For security reasons, DO NOT include attachments or provide detail sufficient for exploitation regarding the security issue in this email. Instead, wait for the advisory to be created, and **provide any sensitive details in the private GitHub advisory**.
-
-If you haven't done so already, please **enable two-factor authentation** in your GitHub account.
-
-Send the email from an email domain that is less likely to get flagged for spam by gmail.
-
-This is an actively monitored account, the team will quickly respond.
-
-If you do not receive a response within 24 hours, please directly followup with the team in [Discord](https://discord.gg/aptosnetwork) by reaching out to anyone with the role “Aptos Labs”.
-
-As above, please DO NOT include attachments or provide detail regarding the security issue in this email.
-
-## Incident Response Process
-
-1. Establish a new draft security advisory
- 1. In response to an email to [security@aptosfoundation.org](mailto:security@aptosfoundation.org), a member of the Aptos Labs will create a new draft security advisory for the incident at [https://github.com/aptos-labs/aptos-core/security/policy](https://github.com/aptos-labs/aptos-core/security/policy).
- 2. Add the reporter's GitHub account and relevant individuals to the draft security advisory.
- 3. Respond to the reporter by email, sharing a link to the draft security advisory.
-2. Responder should add appropriate content to the draft security advisory. To be eligible for a bug bounty, this includes:
- 1. A clear description of the issue and the impacted areas.
- 2. The code and the methodology to reproduce the underlying issue.
- 3. Discussion of potential remediations.
-3. Triage
- 1. Validate the issue.
- 2. Determine the criticality of the issue.
- 3. If this is a bug and not a security issue, recommend to the submitter to create an issue.
-4. Resolve by building new docker containers and binaries that contain the fix and pushing to affected entities.
-
-## Bug Bounties
-
-Aptos Foundation offers bounties for security reports. Reports will be validated against the GitHub repository branch labeled "mainnet" and no others. Moreover, any code within mainnet but not in an actively deployed network or in a position to be deployed in such an environment, such as experimental or actively developed code, are out of scope for the bug bounty program. In addition, if a bug discovered in mainnet is already fixed in main, it is out of scope. Production environments include the Aptos testnet and mainnet.
-
-The scope includes code within
-
-- [Aptos Core — main branch](https://github.com/aptos-labs/aptos-core/tree/main)
-- [Move — Aptos branch](https://github.com/move-language/move/tree/aptos)
-
-Aptos Foundation considers the following levels of severity:
-
-### Critical — Up to $1,000,000 USD in APT tokens (locked for 12 months)
-
-- Direct loss of funds to users or protocols with minimal preconditions, such as, Move type confusion.
-- Vulnerabilities in the Proof of Stake system which directly compromise consensus.
-- Unintended permanent chain split requiring hard fork (network partition requiring hardfork).
-- Permanent freezing, burning, or modification of funds (fix requires hardfork).
-
-### High — Up to $100,000 USD in APT tokens (locked for 12 months)
-
-- Loss of funds with some pre-conditions, such as, halting the network.
-- Interrupting blockchain progress or halting the network.
-
-### Medium — Up to $25,000 USD in APT tokens (locked for 12 months)
-
-- Denial of service issues which compromise the integrity or availability of the chain.
-- Loss of funds with many preconditions.
-- Ability to crash a production node with some pre-conditions.
-
-## Payment of Bug Bounties
-
-- Bounties are currently awarded on a rolling/weekly basis and paid out within 30 days upon receipt of successful KYC and payment contract.
-- The APT/USD conversion rate used for payments is the market price of APT (denominated in USD) at 11:59 PM PST the day that both KYC and the payment contract are completed.
-- The reference for this price is the Closing Price given by Coingecko.com on that date given here: [https://www.coingecko.com/en/coins/aptos/historical_data#panel](https://www.coingecko.com/en/coins/aptos/historical_data#panel)
-- Bug bounties that are paid out in APT are paid to locked to the account provided by the reporter with a lockup expiring 12 months from the date of the delivery of APT.
-- Multiple vulnerabilities of similar root cause will be paid out as one report.
-
-## Duplicate Reports
-
-Compensation for duplicate reports will be split among reporters with first to report taking priority using the following equation:
-
-```
-R: total reports
-ri: report priority
-bi: bounty share
-
-bi = 2 ^ (R - ri) / ((2^R) - 1)
-```
-
-Where report priority derives from the set of integers beginning at 1, where the first reporter has `ri = 1`, the second reporter `ri = 2`, and so forth.
-
-Note, reports that come in after the issue has been fully triaged and resolved will not be eligible for splitting.
-
-## KYC Requirements
-
-This bug bounty program is only open to individuals [outside the OFAC restricted countries](https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information). Bug bounty hunters will be required to provide evidence that they are not a resident or citizen of these countries to be eligible for a reward. If the individual is a US person, tax information will be required, such as a W-9, in order to properly issue a 1099. Aptos requires KYC to be done for all bug bounty hunters submitting a report and wanting a reward. Form W-9 or Form W-8 is required for tax purposes. All bug bounty hunters are required to use Persona for KYC, links will be provided upon resolution of the issue. The collection of this information will be done by the Aptos Foundation.
-
-If an impact can be caused to any other asset managed by Aptos that isn’t on this table but for which the impact is not inscope, you are encouraged to submit it for consideration by the project.
-
-## Out of Scope
-
-The following vulnerabilities are excluded from the rewards for this bug bounty program:
-
-- Attacks that the reporter has already exploited themselves, leading to damage.
-- Attacks requiring access to leaked keys/credentials.
-- Internally known issues, duplicate issues, or issues that have already been made public; in such cases, proof of prior disclosure will be provided.
-- Attacks that rely on social engineering or require physical access to the victim’s device.
-- Information disclosure with minimal security impact (Ex: stack traces, path disclosure, directory listing, logs).
-- Tab-nabbing.
-- Vulnerabilities related to auto-fill web forms.
-- Vulnerabilities only exploitable on out-of-date browsers or platforms.
-- Attacks requiring physical access to the victim device.
-- Incorrect data supplied by third party oracles.
-
-### Blockchain:
-
-- Basic economic governance attacks (e.g. 51% attack).
-- Best practice critiques.
-- Missing or incorrect data in events.
-- Sybil attacks.
-- Centralization risk.
-
-### Smart Contracts:
-
-- Incorrect data supplied by third-party oracles (not to exclude oracle manipulation/flash loan attacks; use of such methods to generate critical impacts remain in-scope for this program).
-- Basic economic governance attacks (e.g., 51% attack).
-- Lack of liquidity.
-- Best practice critiques.
-- Missing or incorrect data in events.
-- Incorrect naming (but still correct data) in contracts.
-- Minor rounding errors that don’t lead to substantial loss of funds.
-
-## Exclusions
-
-The following activities are prohibited by this bug bounty program:
-
-- Any testing with mainnet or public testnet contracts; all testing should be done on [private testnets](https://aptos.dev/nodes/localnet/).
-- Any testing with pricing oracles or third party smart contracts.
-- Attempting to phish or otherwise use social engineering attacks against contributors, employees, and/or customers.
-- Any testing with third-party systems and applications (e.g., browser extensions) as well as websites (e.g., SSO providers, advertising networks).
-- Any denial of service attacks.
-- Automated testing of services that generates significant amounts of traffic.
-- Public disclosure of an unpatched vulnerability in an embargoed bounty.
+To learn more visit the [Aptos Foundation Bounty Program](https://hackenproof.com/aptos) page.
diff --git a/api/Cargo.toml b/api/Cargo.toml
index cbb61e7b0dd40..fcc5efdca74ec 100644
--- a/api/Cargo.toml
+++ b/api/Cargo.toml
@@ -19,7 +19,6 @@ aptos-bcs-utils = { workspace = true }
aptos-build-info = { workspace = true }
aptos-config = { workspace = true }
aptos-crypto = { workspace = true }
-aptos-db-indexer = { workspace = true }
aptos-gas-schedule = { workspace = true }
aptos-global-constants = { workspace = true }
aptos-logger = { workspace = true }
@@ -29,13 +28,11 @@ aptos-runtimes = { workspace = true }
aptos-storage-interface = { workspace = true }
aptos-types = { workspace = true }
aptos-vm = { workspace = true }
-async-trait = { workspace = true }
bcs = { workspace = true }
bytes = { workspace = true }
fail = { workspace = true }
futures = { workspace = true }
hex = { workspace = true }
-hyper = { workspace = true }
itertools = { workspace = true }
mime = { workspace = true }
mini-moka = { workspace = true }
@@ -56,6 +53,7 @@ aptos-cached-packages = { workspace = true }
aptos-framework = { workspace = true }
aptos-gas-meter = { workspace = true }
aptos-gas-schedule = { workspace = true, features = ["testing"] }
+aptos-move-stdlib = { workspace = true }
aptos-proptest-helpers = { workspace = true }
aptos-sdk = { workspace = true }
move-package = { workspace = true }
diff --git a/api/doc/CHANGELOG.md b/api/doc/CHANGELOG.md
index 7d5746ecc9041..63ad6763a3232 100644
--- a/api/doc/CHANGELOG.md
+++ b/api/doc/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to the Aptos Node API will be captured in this file. This ch
**Note**: The Aptos Node API does not follow semantic version while we are in active development. Instead, breaking changes will be announced with each devnet cut. Once we launch our mainnet, the API will follow semantic versioning closely.
## Unreleased
-N/A
+- OpenAPI layout changed slightly in some enum cases, see [#13929](https://github.com/aptos-labs/aptos-core/pull/13929) for more information.
## 1.2.0 (2022-09-29)
- **[Breaking Changes]** Following the deprecation notice from the previous release, the following breaking changes have landed in this release. Please see the notes from last release for information on the new endpoints you must migrate to:
diff --git a/api/doc/spec.html b/api/doc/spec.html
index 99f0632e278ee..6a07046200dd6 100644
--- a/api/doc/spec.html
+++ b/api/doc/spec.html
@@ -4,7 +4,7 @@
-
Aptos REST API
+ Aptos Node API
diff --git a/api/doc/spec.json b/api/doc/spec.json
index a6358ad123abf..231c4dc0107e6 100644
--- a/api/doc/spec.json
+++ b/api/doc/spec.json
@@ -13990,6 +13990,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "ed25519_signature"
+ ],
"example": "ed25519_signature"
}
}
@@ -14009,6 +14012,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "multi_ed25519_signature"
+ ],
"example": "multi_ed25519_signature"
}
}
@@ -14028,6 +14034,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "multi_key_signature"
+ ],
"example": "multi_key_signature"
}
}
@@ -14047,6 +14056,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "single_key_signature"
+ ],
"example": "single_key_signature"
}
}
@@ -14146,6 +14158,91 @@
}
}
},
+ "BlockEndInfo": {
+ "type": "object",
+ "required": [
+ "block_gas_limit_reached",
+ "block_output_limit_reached",
+ "block_effective_block_gas_units",
+ "block_approx_output_size"
+ ],
+ "properties": {
+ "block_gas_limit_reached": {
+ "type": "boolean"
+ },
+ "block_output_limit_reached": {
+ "type": "boolean"
+ },
+ "block_effective_block_gas_units": {
+ "type": "integer",
+ "format": "uint64"
+ },
+ "block_approx_output_size": {
+ "type": "integer",
+ "format": "uint64"
+ }
+ }
+ },
+ "BlockEpilogueTransaction": {
+ "type": "object",
+ "description": "A block epilogue transaction",
+ "required": [
+ "version",
+ "hash",
+ "state_change_hash",
+ "event_root_hash",
+ "gas_used",
+ "success",
+ "vm_status",
+ "accumulator_root_hash",
+ "changes",
+ "timestamp"
+ ],
+ "properties": {
+ "version": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "state_change_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "event_root_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "state_checkpoint_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "gas_used": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "success": {
+ "type": "boolean",
+ "description": "Whether the transaction was successful"
+ },
+ "vm_status": {
+ "type": "string",
+ "description": "The VM status of the transaction, can tell useful information in a failure"
+ },
+ "accumulator_root_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "changes": {
+ "type": "array",
+ "description": "Final state of resources changed by the transaction",
+ "items": {
+ "$ref": "#/components/schemas/WriteSetChange"
+ }
+ },
+ "timestamp": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "block_end_info": {
+ "$ref": "#/components/schemas/BlockEndInfo"
+ }
+ }
+ },
"BlockMetadataTransaction": {
"type": "object",
"description": "A block metadata transaction\n\nThis signifies the beginning of a block, and contains information\nabout the specific block",
@@ -14245,6 +14342,73 @@
}
}
},
+ "DKGResultTransaction": {
+ "type": "object",
+ "required": [
+ "version",
+ "hash",
+ "state_change_hash",
+ "event_root_hash",
+ "gas_used",
+ "success",
+ "vm_status",
+ "accumulator_root_hash",
+ "changes",
+ "events",
+ "timestamp",
+ "dkg_transcript"
+ ],
+ "properties": {
+ "version": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "state_change_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "event_root_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "state_checkpoint_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "gas_used": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "success": {
+ "type": "boolean",
+ "description": "Whether the transaction was successful"
+ },
+ "vm_status": {
+ "type": "string",
+ "description": "The VM status of the transaction, can tell useful information in a failure"
+ },
+ "accumulator_root_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "changes": {
+ "type": "array",
+ "description": "Final state of resources changed by the transaction",
+ "items": {
+ "$ref": "#/components/schemas/WriteSetChange"
+ }
+ },
+ "events": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Event"
+ }
+ },
+ "timestamp": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "dkg_transcript": {
+ "$ref": "#/components/schemas/ExportedDKGTranscript"
+ }
+ }
+ },
"DecodedTableData": {
"type": "object",
"description": "Decoded table data",
@@ -14377,6 +14541,17 @@
}
}
},
+ "Ed25519": {
+ "type": "object",
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "$ref": "#/components/schemas/HexEncodedBytes"
+ }
+ }
+ },
"Ed25519Signature": {
"type": "object",
"description": "A single Ed25519 signature",
@@ -14502,6 +14677,84 @@
}
}
},
+ "ExportedAggregateSignature": {
+ "type": "object",
+ "description": "A more API-friendly representation of the on-chain `aptos_types::aggregate_signature::AggregateSignature`.",
+ "required": [
+ "signer_indices"
+ ],
+ "properties": {
+ "signer_indices": {
+ "type": "array",
+ "items": {
+ "type": "integer",
+ "format": "uint64"
+ }
+ },
+ "sig": {
+ "$ref": "#/components/schemas/HexEncodedBytes"
+ }
+ }
+ },
+ "ExportedDKGTranscript": {
+ "type": "object",
+ "required": [
+ "epoch",
+ "author",
+ "payload"
+ ],
+ "properties": {
+ "epoch": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "author": {
+ "$ref": "#/components/schemas/Address"
+ },
+ "payload": {
+ "$ref": "#/components/schemas/HexEncodedBytes"
+ }
+ }
+ },
+ "ExportedProviderJWKs": {
+ "type": "object",
+ "description": "A more API-friendly representation of the on-chain `aptos_types::jwks::ProviderJWKs`.",
+ "required": [
+ "issuer",
+ "version",
+ "jwks"
+ ],
+ "properties": {
+ "issuer": {
+ "type": "string"
+ },
+ "version": {
+ "type": "integer",
+ "format": "uint64"
+ },
+ "jwks": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/JWK"
+ }
+ }
+ }
+ },
+ "ExportedQuorumCertifiedUpdate": {
+ "type": "object",
+ "description": "A more API-friendly representation of the on-chain `aptos_types::jwks::QuorumCertifiedUpdate`.",
+ "required": [
+ "update",
+ "multi_sig"
+ ],
+ "properties": {
+ "update": {
+ "$ref": "#/components/schemas/ExportedProviderJWKs"
+ },
+ "multi_sig": {
+ "$ref": "#/components/schemas/ExportedAggregateSignature"
+ }
+ }
+ },
"FeePayerSignature": {
"type": "object",
"description": "Fee payer signature for fee payer transactions\n\nThis allows you to have transactions across multiple accounts and with a fee payer",
@@ -14601,6 +14854,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "write_set_payload"
+ ],
"example": "write_set_payload"
}
}
@@ -14761,6 +15017,96 @@
}
}
},
+ "JWK": {
+ "type": "object",
+ "description": "The JWK type that can be converted from/to `JWKMoveStruct` but easier to use in rust.",
+ "anyOf": [
+ {
+ "$ref": "#/components/schemas/RSA_JWK"
+ },
+ {
+ "$ref": "#/components/schemas/UnsupportedJWK"
+ }
+ ]
+ },
+ "JWKUpdateTransaction": {
+ "type": "object",
+ "required": [
+ "version",
+ "hash",
+ "state_change_hash",
+ "event_root_hash",
+ "gas_used",
+ "success",
+ "vm_status",
+ "accumulator_root_hash",
+ "changes",
+ "events",
+ "timestamp",
+ "quorum_certified_update"
+ ],
+ "properties": {
+ "version": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "state_change_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "event_root_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "state_checkpoint_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "gas_used": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "success": {
+ "type": "boolean",
+ "description": "Whether the transaction was successful"
+ },
+ "vm_status": {
+ "type": "string",
+ "description": "The VM status of the transaction, can tell useful information in a failure"
+ },
+ "accumulator_root_hash": {
+ "$ref": "#/components/schemas/HashValue"
+ },
+ "changes": {
+ "type": "array",
+ "description": "Final state of resources changed by the transaction",
+ "items": {
+ "$ref": "#/components/schemas/WriteSetChange"
+ }
+ },
+ "events": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Event"
+ }
+ },
+ "timestamp": {
+ "$ref": "#/components/schemas/U64"
+ },
+ "quorum_certified_update": {
+ "$ref": "#/components/schemas/ExportedQuorumCertifiedUpdate"
+ }
+ }
+ },
+ "Keyless": {
+ "type": "object",
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "$ref": "#/components/schemas/HexEncodedBytes"
+ }
+ }
+ },
"MoveAbility": {
"type": "string"
},
@@ -14936,6 +15282,7 @@
"required": [
"name",
"is_native",
+ "is_event",
"abilities",
"generic_type_params",
"fields"
@@ -14948,6 +15295,10 @@
"type": "boolean",
"description": "Whether the struct is a native struct of Move"
},
+ "is_event": {
+ "type": "boolean",
+ "description": "Whether the struct is marked with the #[event] annotation"
+ },
"abilities": {
"type": "array",
"description": "Abilities associated with the struct",
@@ -15208,6 +15559,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "entry_function_payload"
+ ],
"example": "entry_function_payload"
}
}
@@ -15260,29 +15614,95 @@
"type": "object",
"oneOf": [
{
- "$ref": "#/components/schemas/PublicKey_string(HexEncodedBytes)"
+ "$ref": "#/components/schemas/PublicKey_Ed25519"
+ },
+ {
+ "$ref": "#/components/schemas/PublicKey_Secp256k1Ecdsa"
+ },
+ {
+ "$ref": "#/components/schemas/PublicKey_Secp256r1Ecdsa"
+ },
+ {
+ "$ref": "#/components/schemas/PublicKey_Keyless"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "type",
+ "mapping": {
+ "ed25519": "#/components/schemas/PublicKey_Ed25519",
+ "secp256k1_ecdsa": "#/components/schemas/PublicKey_Secp256k1Ecdsa",
+ "secp256r1_ecdsa": "#/components/schemas/PublicKey_Secp256r1Ecdsa",
+ "keyless": "#/components/schemas/PublicKey_Keyless"
+ }
+ }
+ },
+ "PublicKey_Ed25519": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "ed25519"
+ ],
+ "example": "ed25519"
+ }
+ }
+ },
+ {
+ "$ref": "#/components/schemas/Ed25519"
+ }
+ ]
+ },
+ "PublicKey_Keyless": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "keyless"
+ ],
+ "example": "keyless"
+ }
+ }
},
{
- "$ref": "#/components/schemas/PublicKey_string(HexEncodedBytes)"
- },
+ "$ref": "#/components/schemas/Keyless"
+ }
+ ]
+ },
+ "PublicKey_Secp256k1Ecdsa": {
+ "allOf": [
{
- "$ref": "#/components/schemas/PublicKey_string(HexEncodedBytes)"
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "secp256k1_ecdsa"
+ ],
+ "example": "secp256k1_ecdsa"
+ }
+ }
},
{
- "$ref": "#/components/schemas/PublicKey_string(HexEncodedBytes)"
- }
- ],
- "discriminator": {
- "propertyName": "type",
- "mapping": {
- "ed25519": "#/components/schemas/PublicKey_string(HexEncodedBytes)",
- "secp256k1_ecdsa": "#/components/schemas/PublicKey_string(HexEncodedBytes)",
- "secp256r1_ecdsa": "#/components/schemas/PublicKey_string(HexEncodedBytes)",
- "keyless": "#/components/schemas/PublicKey_string(HexEncodedBytes)"
+ "$ref": "#/components/schemas/Secp256k1Ecdsa"
}
- }
+ ]
},
- "PublicKey_string(HexEncodedBytes)": {
+ "PublicKey_Secp256r1Ecdsa": {
"allOf": [
{
"type": "object",
@@ -15292,15 +15712,46 @@
"properties": {
"type": {
"type": "string",
- "example": "keyless"
+ "enum": [
+ "secp256r1_ecdsa"
+ ],
+ "example": "secp256r1_ecdsa"
}
}
},
{
- "$ref": "#/components/schemas/HexEncodedBytes"
+ "$ref": "#/components/schemas/Secp256r1Ecdsa"
}
]
},
+ "RSA_JWK": {
+ "type": "object",
+ "description": "Move type `0x1::jwks::RSA_JWK` in rust.\nSee its doc in Move for more details.",
+ "required": [
+ "kid",
+ "kty",
+ "alg",
+ "e",
+ "n"
+ ],
+ "properties": {
+ "kid": {
+ "type": "string"
+ },
+ "kty": {
+ "type": "string"
+ },
+ "alg": {
+ "type": "string"
+ },
+ "e": {
+ "type": "string"
+ },
+ "n": {
+ "type": "string"
+ }
+ }
+ },
"RawTableItemRequest": {
"type": "object",
"description": "Table Item request for the GetTableItemRaw API",
@@ -15361,33 +15812,77 @@
}
}
},
+ "Secp256k1Ecdsa": {
+ "type": "object",
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "$ref": "#/components/schemas/HexEncodedBytes"
+ }
+ }
+ },
+ "Secp256r1Ecdsa": {
+ "type": "object",
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "$ref": "#/components/schemas/HexEncodedBytes"
+ }
+ }
+ },
"Signature": {
"type": "object",
"oneOf": [
{
- "$ref": "#/components/schemas/Signature_string(HexEncodedBytes)"
+ "$ref": "#/components/schemas/Signature_Ed25519"
},
{
- "$ref": "#/components/schemas/Signature_string(HexEncodedBytes)"
+ "$ref": "#/components/schemas/Signature_Secp256k1Ecdsa"
},
{
- "$ref": "#/components/schemas/Signature_string(HexEncodedBytes)"
+ "$ref": "#/components/schemas/Signature_WebAuthn"
},
{
- "$ref": "#/components/schemas/Signature_string(HexEncodedBytes)"
+ "$ref": "#/components/schemas/Signature_Keyless"
}
],
"discriminator": {
"propertyName": "type",
"mapping": {
- "ed25519": "#/components/schemas/Signature_string(HexEncodedBytes)",
- "secp256k1_ecdsa": "#/components/schemas/Signature_string(HexEncodedBytes)",
- "web_authn": "#/components/schemas/Signature_string(HexEncodedBytes)",
- "keyless": "#/components/schemas/Signature_string(HexEncodedBytes)"
+ "ed25519": "#/components/schemas/Signature_Ed25519",
+ "secp256k1_ecdsa": "#/components/schemas/Signature_Secp256k1Ecdsa",
+ "web_authn": "#/components/schemas/Signature_WebAuthn",
+ "keyless": "#/components/schemas/Signature_Keyless"
}
}
},
- "Signature_string(HexEncodedBytes)": {
+ "Signature_Ed25519": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "ed25519"
+ ],
+ "example": "ed25519"
+ }
+ }
+ },
+ {
+ "$ref": "#/components/schemas/Ed25519"
+ }
+ ]
+ },
+ "Signature_Keyless": {
"allOf": [
{
"type": "object",
@@ -15397,12 +15892,59 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "keyless"
+ ],
"example": "keyless"
}
}
},
{
- "$ref": "#/components/schemas/HexEncodedBytes"
+ "$ref": "#/components/schemas/Keyless"
+ }
+ ]
+ },
+ "Signature_Secp256k1Ecdsa": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "secp256k1_ecdsa"
+ ],
+ "example": "secp256k1_ecdsa"
+ }
+ }
+ },
+ {
+ "$ref": "#/components/schemas/Secp256k1Ecdsa"
+ }
+ ]
+ },
+ "Signature_WebAuthn": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "web_authn"
+ ],
+ "example": "web_authn"
+ }
+ }
+ },
+ {
+ "$ref": "#/components/schemas/WebAuthn"
}
]
},
@@ -15559,6 +16101,9 @@
{
"$ref": "#/components/schemas/Transaction_StateCheckpointTransaction"
},
+ {
+ "$ref": "#/components/schemas/Transaction_BlockEpilogueTransaction"
+ },
{
"$ref": "#/components/schemas/Transaction_ValidatorTransaction"
}
@@ -15571,6 +16116,7 @@
"genesis_transaction": "#/components/schemas/Transaction_GenesisTransaction",
"block_metadata_transaction": "#/components/schemas/Transaction_BlockMetadataTransaction",
"state_checkpoint_transaction": "#/components/schemas/Transaction_StateCheckpointTransaction",
+ "block_epilogue_transaction": "#/components/schemas/Transaction_BlockEpilogueTransaction",
"validator_transaction": "#/components/schemas/Transaction_ValidatorTransaction"
}
}
@@ -15612,6 +16158,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "module_bundle_payload"
+ ],
"example": "module_bundle_payload"
}
}
@@ -15631,6 +16180,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "entry_function_payload"
+ ],
"example": "entry_function_payload"
}
}
@@ -15650,6 +16202,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "multisig_payload"
+ ],
"example": "multisig_payload"
}
}
@@ -15669,6 +16224,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "script_payload"
+ ],
"example": "script_payload"
}
}
@@ -15719,6 +16277,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "single_sender"
+ ],
"example": "single_sender"
}
}
@@ -15738,6 +16299,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "ed25519_signature"
+ ],
"example": "ed25519_signature"
}
}
@@ -15757,6 +16321,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "fee_payer_signature"
+ ],
"example": "fee_payer_signature"
}
}
@@ -15776,6 +16343,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "multi_agent_signature"
+ ],
"example": "multi_agent_signature"
}
}
@@ -15795,6 +16365,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "multi_ed25519_signature"
+ ],
"example": "multi_ed25519_signature"
}
}
@@ -15804,6 +16377,28 @@
}
]
},
+ "Transaction_BlockEpilogueTransaction": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "block_epilogue_transaction"
+ ],
+ "example": "block_epilogue_transaction"
+ }
+ }
+ },
+ {
+ "$ref": "#/components/schemas/BlockEpilogueTransaction"
+ }
+ ]
+ },
"Transaction_BlockMetadataTransaction": {
"allOf": [
{
@@ -15814,6 +16409,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "block_metadata_transaction"
+ ],
"example": "block_metadata_transaction"
}
}
@@ -15833,6 +16431,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "genesis_transaction"
+ ],
"example": "genesis_transaction"
}
}
@@ -15852,6 +16453,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "pending_transaction"
+ ],
"example": "pending_transaction"
}
}
@@ -15871,6 +16475,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "state_checkpoint_transaction"
+ ],
"example": "state_checkpoint_transaction"
}
}
@@ -15890,6 +16497,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "user_transaction"
+ ],
"example": "user_transaction"
}
}
@@ -15909,6 +16519,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "validator_transaction"
+ ],
"example": "validator_transaction"
}
}
@@ -15970,6 +16583,30 @@
"description": "A string containing a 64-bit unsigned integer.\n\nWe represent u64 values as a string to ensure compatibility with languages such\nas JavaScript that do not parse u64s in JSON natively.\n",
"example": "32425224034"
},
+ "UnsupportedJWK": {
+ "type": "object",
+ "description": "Move type `0x1::jwks::UnsupportedJWK` in rust.\nSee its doc in Move for more details.",
+ "required": [
+ "id",
+ "payload"
+ ],
+ "properties": {
+ "id": {
+ "type": "array",
+ "items": {
+ "type": "integer",
+ "format": "uint8"
+ }
+ },
+ "payload": {
+ "type": "array",
+ "items": {
+ "type": "integer",
+ "format": "uint8"
+ }
+ }
+ }
+ },
"UserTransaction": {
"type": "object",
"description": "A transaction submitted by a user to change the state of the blockchain",
@@ -16064,66 +16701,65 @@
},
"ValidatorTransaction": {
"type": "object",
- "required": [
- "version",
- "hash",
- "state_change_hash",
- "event_root_hash",
- "gas_used",
- "success",
- "vm_status",
- "accumulator_root_hash",
- "changes",
- "events",
- "timestamp"
- ],
- "properties": {
- "version": {
- "$ref": "#/components/schemas/U64"
- },
- "hash": {
- "$ref": "#/components/schemas/HashValue"
- },
- "state_change_hash": {
- "$ref": "#/components/schemas/HashValue"
- },
- "event_root_hash": {
- "$ref": "#/components/schemas/HashValue"
- },
- "state_checkpoint_hash": {
- "$ref": "#/components/schemas/HashValue"
- },
- "gas_used": {
- "$ref": "#/components/schemas/U64"
- },
- "success": {
- "type": "boolean",
- "description": "Whether the transaction was successful"
- },
- "vm_status": {
- "type": "string",
- "description": "The VM status of the transaction, can tell useful information in a failure"
- },
- "accumulator_root_hash": {
- "$ref": "#/components/schemas/HashValue"
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/ValidatorTransaction_JWKUpdateTransaction"
},
- "changes": {
- "type": "array",
- "description": "Final state of resources changed by the transaction",
- "items": {
- "$ref": "#/components/schemas/WriteSetChange"
+ {
+ "$ref": "#/components/schemas/ValidatorTransaction_DKGResultTransaction"
+ }
+ ],
+ "discriminator": {
+ "propertyName": "validator_transaction_type",
+ "mapping": {
+ "observed_jwk_update": "#/components/schemas/ValidatorTransaction_JWKUpdateTransaction",
+ "dkg_result": "#/components/schemas/ValidatorTransaction_DKGResultTransaction"
+ }
+ }
+ },
+ "ValidatorTransaction_DKGResultTransaction": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "validator_transaction_type"
+ ],
+ "properties": {
+ "validator_transaction_type": {
+ "type": "string",
+ "enum": [
+ "dkg_result"
+ ],
+ "example": "dkg_result"
+ }
}
},
- "events": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Event"
+ {
+ "$ref": "#/components/schemas/DKGResultTransaction"
+ }
+ ]
+ },
+ "ValidatorTransaction_JWKUpdateTransaction": {
+ "allOf": [
+ {
+ "type": "object",
+ "required": [
+ "validator_transaction_type"
+ ],
+ "properties": {
+ "validator_transaction_type": {
+ "type": "string",
+ "enum": [
+ "observed_jwk_update"
+ ],
+ "example": "observed_jwk_update"
+ }
}
},
- "timestamp": {
- "$ref": "#/components/schemas/U64"
+ {
+ "$ref": "#/components/schemas/JWKUpdateTransaction"
}
- }
+ ]
},
"VersionedEvent": {
"type": "object",
@@ -16179,6 +16815,17 @@
}
}
},
+ "WebAuthn": {
+ "type": "object",
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "$ref": "#/components/schemas/HexEncodedBytes"
+ }
+ }
+ },
"WriteModule": {
"type": "object",
"description": "Write a new module or update an existing one",
@@ -16285,6 +16932,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "delete_module"
+ ],
"example": "delete_module"
}
}
@@ -16304,6 +16954,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "delete_resource"
+ ],
"example": "delete_resource"
}
}
@@ -16323,6 +16976,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "delete_table_item"
+ ],
"example": "delete_table_item"
}
}
@@ -16342,6 +16998,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "write_module"
+ ],
"example": "write_module"
}
}
@@ -16361,6 +17020,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "write_resource"
+ ],
"example": "write_resource"
}
}
@@ -16380,6 +17042,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "write_table_item"
+ ],
"example": "write_table_item"
}
}
@@ -16411,6 +17076,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "direct_write_set"
+ ],
"example": "direct_write_set"
}
}
@@ -16430,6 +17098,9 @@
"properties": {
"type": {
"type": "string",
+ "enum": [
+ "script_write_set"
+ ],
"example": "script_write_set"
}
}
diff --git a/api/doc/spec.yaml b/api/doc/spec.yaml
index 3734d167806ee..423043b41344b 100644
--- a/api/doc/spec.yaml
+++ b/api/doc/spec.yaml
@@ -10468,6 +10468,8 @@ components:
properties:
type:
type: string
+ enum:
+ - ed25519_signature
example: ed25519_signature
- $ref: '#/components/schemas/Ed25519Signature'
AccountSignature_MultiEd25519Signature:
@@ -10478,6 +10480,8 @@ components:
properties:
type:
type: string
+ enum:
+ - multi_ed25519_signature
example: multi_ed25519_signature
- $ref: '#/components/schemas/MultiEd25519Signature'
AccountSignature_MultiKeySignature:
@@ -10488,6 +10492,8 @@ components:
properties:
type:
type: string
+ enum:
+ - multi_key_signature
example: multi_key_signature
- $ref: '#/components/schemas/MultiKeySignature'
AccountSignature_SingleKeySignature:
@@ -10498,6 +10504,8 @@ components:
properties:
type:
type: string
+ enum:
+ - single_key_signature
example: single_key_signature
- $ref: '#/components/schemas/SingleKeySignature'
Address:
@@ -10585,6 +10593,68 @@ components:
description: The transactions in the block in sequential order
items:
$ref: '#/components/schemas/Transaction'
+ BlockEndInfo:
+ type: object
+ required:
+ - block_gas_limit_reached
+ - block_output_limit_reached
+ - block_effective_block_gas_units
+ - block_approx_output_size
+ properties:
+ block_gas_limit_reached:
+ type: boolean
+ block_output_limit_reached:
+ type: boolean
+ block_effective_block_gas_units:
+ type: integer
+ format: uint64
+ block_approx_output_size:
+ type: integer
+ format: uint64
+ BlockEpilogueTransaction:
+ type: object
+ description: A block epilogue transaction
+ required:
+ - version
+ - hash
+ - state_change_hash
+ - event_root_hash
+ - gas_used
+ - success
+ - vm_status
+ - accumulator_root_hash
+ - changes
+ - timestamp
+ properties:
+ version:
+ $ref: '#/components/schemas/U64'
+ hash:
+ $ref: '#/components/schemas/HashValue'
+ state_change_hash:
+ $ref: '#/components/schemas/HashValue'
+ event_root_hash:
+ $ref: '#/components/schemas/HashValue'
+ state_checkpoint_hash:
+ $ref: '#/components/schemas/HashValue'
+ gas_used:
+ $ref: '#/components/schemas/U64'
+ success:
+ type: boolean
+ description: Whether the transaction was successful
+ vm_status:
+ type: string
+ description: The VM status of the transaction, can tell useful information in a failure
+ accumulator_root_hash:
+ $ref: '#/components/schemas/HashValue'
+ changes:
+ type: array
+ description: Final state of resources changed by the transaction
+ items:
+ $ref: '#/components/schemas/WriteSetChange'
+ timestamp:
+ $ref: '#/components/schemas/U64'
+ block_end_info:
+ $ref: '#/components/schemas/BlockEndInfo'
BlockMetadataTransaction:
type: object
description: |-
@@ -10663,6 +10733,55 @@ components:
format: uint32
timestamp:
$ref: '#/components/schemas/U64'
+ DKGResultTransaction:
+ type: object
+ required:
+ - version
+ - hash
+ - state_change_hash
+ - event_root_hash
+ - gas_used
+ - success
+ - vm_status
+ - accumulator_root_hash
+ - changes
+ - events
+ - timestamp
+ - dkg_transcript
+ properties:
+ version:
+ $ref: '#/components/schemas/U64'
+ hash:
+ $ref: '#/components/schemas/HashValue'
+ state_change_hash:
+ $ref: '#/components/schemas/HashValue'
+ event_root_hash:
+ $ref: '#/components/schemas/HashValue'
+ state_checkpoint_hash:
+ $ref: '#/components/schemas/HashValue'
+ gas_used:
+ $ref: '#/components/schemas/U64'
+ success:
+ type: boolean
+ description: Whether the transaction was successful
+ vm_status:
+ type: string
+ description: The VM status of the transaction, can tell useful information in a failure
+ accumulator_root_hash:
+ $ref: '#/components/schemas/HashValue'
+ changes:
+ type: array
+ description: Final state of resources changed by the transaction
+ items:
+ $ref: '#/components/schemas/WriteSetChange'
+ events:
+ type: array
+ items:
+ $ref: '#/components/schemas/Event'
+ timestamp:
+ $ref: '#/components/schemas/U64'
+ dkg_transcript:
+ $ref: '#/components/schemas/ExportedDKGTranscript'
DecodedTableData:
type: object
description: Decoded table data
@@ -10756,6 +10875,13 @@ components:
type: array
items:
$ref: '#/components/schemas/Event'
+ Ed25519:
+ type: object
+ required:
+ - value
+ properties:
+ value:
+ $ref: '#/components/schemas/HexEncodedBytes'
Ed25519Signature:
type: object
description: A single Ed25519 signature
@@ -10850,6 +10976,60 @@ components:
$ref: '#/components/schemas/U64'
account_address:
$ref: '#/components/schemas/Address'
+ ExportedAggregateSignature:
+ type: object
+ description: A more API-friendly representation of the on-chain `aptos_types::aggregate_signature::AggregateSignature`.
+ required:
+ - signer_indices
+ properties:
+ signer_indices:
+ type: array
+ items:
+ type: integer
+ format: uint64
+ sig:
+ $ref: '#/components/schemas/HexEncodedBytes'
+ ExportedDKGTranscript:
+ type: object
+ required:
+ - epoch
+ - author
+ - payload
+ properties:
+ epoch:
+ $ref: '#/components/schemas/U64'
+ author:
+ $ref: '#/components/schemas/Address'
+ payload:
+ $ref: '#/components/schemas/HexEncodedBytes'
+ ExportedProviderJWKs:
+ type: object
+ description: A more API-friendly representation of the on-chain `aptos_types::jwks::ProviderJWKs`.
+ required:
+ - issuer
+ - version
+ - jwks
+ properties:
+ issuer:
+ type: string
+ version:
+ type: integer
+ format: uint64
+ jwks:
+ type: array
+ items:
+ $ref: '#/components/schemas/JWK'
+ ExportedQuorumCertifiedUpdate:
+ type: object
+ description: A more API-friendly representation of the on-chain `aptos_types::jwks::QuorumCertifiedUpdate`.
+ required:
+ - update
+ - multi_sig
+ properties:
+ update:
+ $ref: '#/components/schemas/ExportedProviderJWKs'
+ multi_sig:
+ $ref: '#/components/schemas/ExportedAggregateSignature'
FeePayerSignature:
type: object
description: |-
@@ -10918,6 +11098,8 @@ components:
properties:
type:
type: string
+ enum:
+ - write_set_payload
example: write_set_payload
- $ref: '#/components/schemas/WriteSetPayload'
GenesisTransaction:
@@ -11041,6 +11223,68 @@ components:
format: uint8
signature:
$ref: '#/components/schemas/Signature'
+ JWK:
+ type: object
+ description: The JWK type that can be converted from/to `JWKMoveStruct` but easier to use in rust.
+ anyOf:
+ - $ref: '#/components/schemas/RSA_JWK'
+ - $ref: '#/components/schemas/UnsupportedJWK'
+ JWKUpdateTransaction:
+ type: object
+ required:
+ - version
+ - hash
+ - state_change_hash
+ - event_root_hash
+ - gas_used
+ - success
+ - vm_status
+ - accumulator_root_hash
+ - changes
+ - events
+ - timestamp
+ - quorum_certified_update
+ properties:
+ version:
+ $ref: '#/components/schemas/U64'
+ hash:
+ $ref: '#/components/schemas/HashValue'
+ state_change_hash:
+ $ref: '#/components/schemas/HashValue'
+ event_root_hash:
+ $ref: '#/components/schemas/HashValue'
+ state_checkpoint_hash:
+ $ref: '#/components/schemas/HashValue'
+ gas_used:
+ $ref: '#/components/schemas/U64'
+ success:
+ type: boolean
+ description: Whether the transaction was successful
+ vm_status:
+ type: string
+ description: The VM status of the transaction, can tell useful information in a failure
+ accumulator_root_hash:
+ $ref: '#/components/schemas/HashValue'
+ changes:
+ type: array
+ description: Final state of resources changed by the transaction
+ items:
+ $ref: '#/components/schemas/WriteSetChange'
+ events:
+ type: array
+ items:
+ $ref: '#/components/schemas/Event'
+ timestamp:
+ $ref: '#/components/schemas/U64'
+ quorum_certified_update:
+ $ref: '#/components/schemas/ExportedQuorumCertifiedUpdate'
+ Keyless:
+ type: object
+ required:
+ - value
+ properties:
+ value:
+ $ref: '#/components/schemas/HexEncodedBytes'
MoveAbility:
type: string
MoveFunction:
@@ -11175,6 +11419,7 @@ components:
required:
- name
- is_native
+ - is_event
- abilities
- generic_type_params
- fields
@@ -11184,6 +11429,9 @@ components:
is_native:
type: boolean
description: Whether the struct is a native struct of Move
+ is_event:
+ type: boolean
+ description: 'Whether the struct is marked with the #[event] annotation'
abilities:
type: array
description: Abilities associated with the struct
@@ -11443,6 +11691,8 @@ components:
properties:
type:
type: string
+ enum:
+ - entry_function_payload
example: entry_function_payload
- $ref: '#/components/schemas/EntryFunctionPayload'
PendingTransaction:
@@ -11476,18 +11726,30 @@ components:
PublicKey:
type: object
oneOf:
- - $ref: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
- - $ref: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
- - $ref: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
- - $ref: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
+ - $ref: '#/components/schemas/PublicKey_Ed25519'
+ - $ref: '#/components/schemas/PublicKey_Secp256k1Ecdsa'
+ - $ref: '#/components/schemas/PublicKey_Secp256r1Ecdsa'
+ - $ref: '#/components/schemas/PublicKey_Keyless'
discriminator:
propertyName: type
mapping:
- ed25519: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
- secp256k1_ecdsa: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
- secp256r1_ecdsa: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
- keyless: '#/components/schemas/PublicKey_string(HexEncodedBytes)'
- PublicKey_string(HexEncodedBytes):
+ ed25519: '#/components/schemas/PublicKey_Ed25519'
+ secp256k1_ecdsa: '#/components/schemas/PublicKey_Secp256k1Ecdsa'
+ secp256r1_ecdsa: '#/components/schemas/PublicKey_Secp256r1Ecdsa'
+ keyless: '#/components/schemas/PublicKey_Keyless'
+ PublicKey_Ed25519:
+ allOf:
+ - type: object
+ required:
+ - type
+ properties:
+ type:
+ type: string
+ enum:
+ - ed25519
+ example: ed25519
+ - $ref: '#/components/schemas/Ed25519'
+ PublicKey_Keyless:
allOf:
- type: object
required:
@@ -11495,8 +11757,56 @@ components:
properties:
type:
type: string
+ enum:
+ - keyless
example: keyless
- - $ref: '#/components/schemas/HexEncodedBytes'
+ - $ref: '#/components/schemas/Keyless'
+ PublicKey_Secp256k1Ecdsa:
+ allOf:
+ - type: object
+ required:
+ - type
+ properties:
+ type:
+ type: string
+ enum:
+ - secp256k1_ecdsa
+ example: secp256k1_ecdsa
+ - $ref: '#/components/schemas/Secp256k1Ecdsa'
+ PublicKey_Secp256r1Ecdsa:
+ allOf:
+ - type: object
+ required:
+ - type
+ properties:
+ type:
+ type: string
+ enum:
+ - secp256r1_ecdsa
+ example: secp256r1_ecdsa
+ - $ref: '#/components/schemas/Secp256r1Ecdsa'
+ RSA_JWK:
+ type: object
+ description: |-
+ Move type `0x1::jwks::RSA_JWK` in rust.
+ See its doc in Move for more details.
+ required:
+ - kid
+ - kty
+ - alg
+ - e
+ - n
+ properties:
+ kid:
+ type: string
+ kty:
+ type: string
+ alg:
+ type: string
+ e:
+ type: string
+ n:
+ type: string
RawTableItemRequest:
type: object
description: Table Item request for the GetTableItemRaw API
@@ -11539,21 +11849,47 @@ components:
$ref: '#/components/schemas/Address'
script:
$ref: '#/components/schemas/ScriptPayload'
+ Secp256k1Ecdsa:
+ type: object
+ required:
+ - value
+ properties:
+ value:
+ $ref: '#/components/schemas/HexEncodedBytes'
+ Secp256r1Ecdsa:
+ type: object
+ required:
+ - value
+ properties:
+ value:
+ $ref: '#/components/schemas/HexEncodedBytes'
Signature:
type: object
oneOf:
- - $ref: '#/components/schemas/Signature_string(HexEncodedBytes)'
- - $ref: '#/components/schemas/Signature_string(HexEncodedBytes)'
- - $ref: '#/components/schemas/Signature_string(HexEncodedBytes)'
- - $ref: '#/components/schemas/Signature_string(HexEncodedBytes)'
+ - $ref: '#/components/schemas/Signature_Ed25519'
+ - $ref: '#/components/schemas/Signature_Secp256k1Ecdsa'
+ - $ref: '#/components/schemas/Signature_WebAuthn'
+ - $ref: '#/components/schemas/Signature_Keyless'
discriminator:
propertyName: type
mapping:
- ed25519: '#/components/schemas/Signature_string(HexEncodedBytes)'
- secp256k1_ecdsa: '#/components/schemas/Signature_string(HexEncodedBytes)'
- web_authn: '#/components/schemas/Signature_string(HexEncodedBytes)'
- keyless: '#/components/schemas/Signature_string(HexEncodedBytes)'
- Signature_string(HexEncodedBytes):
+ ed25519: '#/components/schemas/Signature_Ed25519'
+ secp256k1_ecdsa: '#/components/schemas/Signature_Secp256k1Ecdsa'
+ web_authn: '#/components/schemas/Signature_WebAuthn'
+ keyless: '#/components/schemas/Signature_Keyless'
+ Signature_Ed25519:
+ allOf:
+ - type: object
+ required:
+ - type
+ properties:
+ type:
+ type: string
+ enum:
+ - ed25519
+ example: ed25519
+ - $ref: '#/components/schemas/Ed25519'
+ Signature_Keyless:
allOf:
- type: object
required:
@@ -11561,8 +11897,34 @@ components:
properties:
type:
type: string
+ enum:
+ - keyless
example: keyless
- - $ref: '#/components/schemas/HexEncodedBytes'
+ - $ref: '#/components/schemas/Keyless'
+ Signature_Secp256k1Ecdsa:
+ allOf:
+ - type: object
+ required:
+ - type
+ properties:
+ type:
+ type: string
+ enum:
+ - secp256k1_ecdsa
+ example: secp256k1_ecdsa
+ - $ref: '#/components/schemas/Secp256k1Ecdsa'
+ Signature_WebAuthn:
+ allOf:
+ - type: object
+ required:
+ - type
+ properties:
+ type:
+ type: string
+ enum:
+ - web_authn
+ example: web_authn
+ - $ref: '#/components/schemas/WebAuthn'
SingleKeySignature:
type: object
description: A single key signature
@@ -11673,6 +12035,7 @@ components:
- $ref: '#/components/schemas/Transaction_GenesisTransaction'
- $ref: '#/components/schemas/Transaction_BlockMetadataTransaction'
- $ref: '#/components/schemas/Transaction_StateCheckpointTransaction'
+ - $ref: '#/components/schemas/Transaction_BlockEpilogueTransaction'
- $ref: '#/components/schemas/Transaction_ValidatorTransaction'
discriminator:
propertyName: type
@@ -11682,6 +12045,7 @@ components:
genesis_transaction: '#/components/schemas/Transaction_GenesisTransaction'
block_metadata_transaction: '#/components/schemas/Transaction_BlockMetadataTransaction'
state_checkpoint_transaction: '#/components/schemas/Transaction_StateCheckpointTransaction'
+ block_epilogue_transaction: '#/components/schemas/Transaction_BlockEpilogueTransaction'
validator_transaction: '#/components/schemas/Transaction_ValidatorTransaction'
TransactionPayload:
type: object
@@ -11706,6 +12070,8 @@ components:
properties:
type:
type: string
+ enum:
+ - module_bundle_payload
example: module_bundle_payload
- $ref: '#/components/schemas/DeprecatedModuleBundlePayload'
TransactionPayload_EntryFunctionPayload:
@@ -11716,6 +12082,8 @@ components:
properties:
type:
type: string
+ enum:
+ - entry_function_payload
example: entry_function_payload
- $ref: '#/components/schemas/EntryFunctionPayload'
TransactionPayload_MultisigPayload:
@@ -11726,6 +12094,8 @@ components:
properties:
type:
type: string
+ enum:
+ - multisig_payload
example: multisig_payload
- $ref: '#/components/schemas/MultisigPayload'
TransactionPayload_ScriptPayload:
@@ -11736,6 +12106,8 @@ components:
properties:
type:
type: string
+ enum:
+ - script_payload
example: script_payload
- $ref: '#/components/schemas/ScriptPayload'
TransactionSignature:
@@ -11763,6 +12135,8 @@ components:
properties:
type:
type: string
+ enum:
+ - single_sender
example: single_sender
- $ref: '#/components/schemas/AccountSignature'
TransactionSignature_Ed25519Signature:
@@ -11773,6 +12147,8 @@ components:
properties:
type:
type: string
+ enum:
+ - ed25519_signature
example: ed25519_signature
- $ref: '#/components/schemas/Ed25519Signature'
TransactionSignature_FeePayerSignature:
@@ -11783,6 +12159,8 @@ components:
properties:
type:
type: string
+ enum:
+ - fee_payer_signature
example: fee_payer_signature
- $ref: '#/components/schemas/FeePayerSignature'
TransactionSignature_MultiAgentSignature:
@@ -11793,6 +12171,8 @@ components:
properties:
type:
type: string
+ enum:
+ - multi_agent_signature
example: multi_agent_signature
- $ref: '#/components/schemas/MultiAgentSignature'
TransactionSignature_MultiEd25519Signature:
@@ -11803,8 +12183,22 @@ components:
properties:
type:
type: string
+ enum:
+ - multi_ed25519_signature
example: multi_ed25519_signature
- $ref: '#/components/schemas/MultiEd25519Signature'
+ Transaction_BlockEpilogueTransaction:
+ allOf:
+ - type: object
+ required:
+ - type
+ properties:
+ type:
+ type: string
+ enum:
+ - block_epilogue_transaction
+ example: block_epilogue_transaction
+ - $ref: '#/components/schemas/BlockEpilogueTransaction'
Transaction_BlockMetadataTransaction:
allOf:
- type: object
@@ -11813,6 +12207,8 @@ components:
properties:
type:
type: string
+ enum:
+ - block_metadata_transaction
example: block_metadata_transaction
- $ref: '#/components/schemas/BlockMetadataTransaction'
Transaction_GenesisTransaction:
@@ -11823,6 +12219,8 @@ components:
properties:
type:
type: string
+ enum:
+ - genesis_transaction
example: genesis_transaction
- $ref: '#/components/schemas/GenesisTransaction'
Transaction_PendingTransaction:
@@ -11833,6 +12231,8 @@ components:
properties:
type:
type: string
+ enum:
+ - pending_transaction
example: pending_transaction
- $ref: '#/components/schemas/PendingTransaction'
Transaction_StateCheckpointTransaction:
@@ -11843,6 +12243,8 @@ components:
properties:
type:
type: string
+ enum:
+ - state_checkpoint_transaction
example: state_checkpoint_transaction
- $ref: '#/components/schemas/StateCheckpointTransaction'
Transaction_UserTransaction:
@@ -11853,6 +12255,8 @@ components:
properties:
type:
type: string
+ enum:
+ - user_transaction
example: user_transaction
- $ref: '#/components/schemas/UserTransaction'
Transaction_ValidatorTransaction:
@@ -11863,6 +12267,8 @@ components:
properties:
type:
type: string
+ enum:
+ - validator_transaction
example: validator_transaction
- $ref: '#/components/schemas/ValidatorTransaction'
TransactionsBatchSingleSubmissionFailure:
@@ -11919,6 +12325,25 @@ components:
We represent u64 values as a string to ensure compatibility with languages such
as JavaScript that do not parse u64s in JSON natively.
example: '32425224034'
+ UnsupportedJWK:
+ type: object
+ description: |-
+ Move type `0x1::jwks::UnsupportedJWK` in rust.
+ See its doc in Move for more details.
+ required:
+ - id
+ - payload
+ properties:
+ id:
+ type: array
+ items:
+ type: integer
+ format: uint8
+ payload:
+ type: array
+ items:
+ type: integer
+ format: uint8
UserTransaction:
type: object
description: A transaction submitted by a user to change the state of the blockchain
@@ -11989,50 +12414,38 @@ components:
$ref: '#/components/schemas/U64'
ValidatorTransaction:
type: object
- required:
- - version
- - hash
- - state_change_hash
- - event_root_hash
- - gas_used
- - success
- - vm_status
- - accumulator_root_hash
- - changes
- - events
- - timestamp
- properties:
- version:
- $ref: '#/components/schemas/U64'
- hash:
- $ref: '#/components/schemas/HashValue'
- state_change_hash:
- $ref: '#/components/schemas/HashValue'
- event_root_hash:
- $ref: '#/components/schemas/HashValue'
- state_checkpoint_hash:
- $ref: '#/components/schemas/HashValue'
- gas_used:
- $ref: '#/components/schemas/U64'
- success:
- type: boolean
- description: Whether the transaction was successful
- vm_status:
- type: string
- description: The VM status of the transaction, can tell useful information in a failure
- accumulator_root_hash:
- $ref: '#/components/schemas/HashValue'
- changes:
- type: array
- description: Final state of resources changed by the transaction
- items:
- $ref: '#/components/schemas/WriteSetChange'
- events:
- type: array
- items:
- $ref: '#/components/schemas/Event'
- timestamp:
- $ref: '#/components/schemas/U64'
+ oneOf:
+ - $ref: '#/components/schemas/ValidatorTransaction_JWKUpdateTransaction'
+ - $ref: '#/components/schemas/ValidatorTransaction_DKGResultTransaction'
+ discriminator:
+ propertyName: validator_transaction_type
+ mapping:
+ observed_jwk_update: '#/components/schemas/ValidatorTransaction_JWKUpdateTransaction'
+ dkg_result: '#/components/schemas/ValidatorTransaction_DKGResultTransaction'
+ ValidatorTransaction_DKGResultTransaction:
+ allOf:
+ - type: object
+ required:
+ - validator_transaction_type
+ properties:
+ validator_transaction_type:
+ type: string
+ enum:
+ - dkg_result
+ example: dkg_result
+ - $ref: '#/components/schemas/DKGResultTransaction'
+ ValidatorTransaction_JWKUpdateTransaction:
+ allOf:
+ - type: object
+ required:
+ - validator_transaction_type
+ properties:
+ validator_transaction_type:
+ type: string
+ enum:
+ - observed_jwk_update
+ example: observed_jwk_update
+ - $ref: '#/components/schemas/JWKUpdateTransaction'
VersionedEvent:
type: object
description: An event from a transaction with a version
@@ -12072,6 +12485,13 @@ components:
type: array
description: Arguments of the function
items: {}
+ WebAuthn:
+ type: object
+ required:
+ - value
+ properties:
+ value:
+ $ref: '#/components/schemas/HexEncodedBytes'
WriteModule:
type: object
description: Write a new module or update an existing one
@@ -12140,6 +12560,8 @@ components:
properties:
type:
type: string
+ enum:
+ - delete_module
example: delete_module
- $ref: '#/components/schemas/DeleteModule'
WriteSetChange_DeleteResource:
@@ -12150,6 +12572,8 @@ components:
properties:
type:
type: string
+ enum:
+ - delete_resource
example: delete_resource
- $ref: '#/components/schemas/DeleteResource'
WriteSetChange_DeleteTableItem:
@@ -12160,6 +12584,8 @@ components:
properties:
type:
type: string
+ enum:
+ - delete_table_item
example: delete_table_item
- $ref: '#/components/schemas/DeleteTableItem'
WriteSetChange_WriteModule:
@@ -12170,6 +12596,8 @@ components:
properties:
type:
type: string
+ enum:
+ - write_module
example: write_module
- $ref: '#/components/schemas/WriteModule'
WriteSetChange_WriteResource:
@@ -12180,6 +12608,8 @@ components:
properties:
type:
type: string
+ enum:
+ - write_resource
example: write_resource
- $ref: '#/components/schemas/WriteResource'
WriteSetChange_WriteTableItem:
@@ -12190,6 +12620,8 @@ components:
properties:
type:
type: string
+ enum:
+ - write_table_item
example: write_table_item
- $ref: '#/components/schemas/WriteTableItem'
WriteSetPayload:
@@ -12208,6 +12640,8 @@ components:
properties:
type:
type: string
+ enum:
+ - direct_write_set
example: direct_write_set
- $ref: '#/components/schemas/DirectWriteSet'
WriteSet_ScriptWriteSet:
@@ -12218,6 +12652,8 @@ components:
properties:
type:
type: string
+ enum:
+ - script_write_set
example: script_write_set
- $ref: '#/components/schemas/ScriptWriteSet'
WriteTableItem:
diff --git a/api/goldens/aptos_api__tests__secp256k1_ecdsa__test_multi_secp256k1_ecdsa.json b/api/goldens/aptos_api__tests__secp256k1_ecdsa__test_multi_secp256k1_ecdsa.json
new file mode 100644
index 0000000000000..bac77b4abe72f
--- /dev/null
+++ b/api/goldens/aptos_api__tests__secp256k1_ecdsa__test_multi_secp256k1_ecdsa.json
@@ -0,0 +1,19 @@
+{
+ "public_keys": [
+ {
+ "value": "0x049b8327d929a0e45285c04d19c9fffbee065c266b701972922d807228120e43f34ad68ac77f6ec0205fe39f7c5b6055dad973a03464a3a743302de0feaf6ec6d9",
+ "type": "secp256k1_ecdsa"
+ }
+ ],
+ "signatures": [
+ {
+ "index": 0,
+ "signature": {
+ "value": "0xd1c84463d33b27977431b60664b36c6c1717569b1fbe2f9808c1e78f36958ae71a2b59a7c062e9491c12e69e25e3d3f82253a4efd1c1857b3695ff1b9050c5e4",
+ "type": "secp256k1_ecdsa"
+ }
+ }
+ ],
+ "signatures_required": 1,
+ "type": "single_sender"
+}
diff --git a/api/goldens/aptos_api__tests__secp256k1_ecdsa__test_secp256k1_ecdsa.json b/api/goldens/aptos_api__tests__secp256k1_ecdsa__test_secp256k1_ecdsa.json
new file mode 100644
index 0000000000000..958ae2122777f
--- /dev/null
+++ b/api/goldens/aptos_api__tests__secp256k1_ecdsa__test_secp256k1_ecdsa.json
@@ -0,0 +1,11 @@
+{
+ "public_key": {
+ "value": "0x049b8327d929a0e45285c04d19c9fffbee065c266b701972922d807228120e43f34ad68ac77f6ec0205fe39f7c5b6055dad973a03464a3a743302de0feaf6ec6d9",
+ "type": "secp256k1_ecdsa"
+ },
+ "signature": {
+ "value": "0x357a77abdb3ef4a01aea1e8d0cb932606655bcf66e6726d2cefbfd904d57703b0bf38eb19bc3da1e3e9f6929db0d4806f83fa5370f6981d704efa42cdba56fb9",
+ "type": "secp256k1_ecdsa"
+ },
+ "type": "single_sender"
+}
diff --git a/api/goldens/aptos_api__tests__state_test__test_get_account_module.json b/api/goldens/aptos_api__tests__state_test__test_get_account_module.json
index d830872f6c3f2..37c8ff52436ac 100644
--- a/api/goldens/aptos_api__tests__state_test__test_get_account_module.json
+++ b/api/goldens/aptos_api__tests__state_test__test_get_account_module.json
@@ -120,6 +120,7 @@
{
"name": "GUID",
"is_native": false,
+ "is_event": false,
"abilities": [
"drop",
"store"
@@ -135,6 +136,7 @@
{
"name": "ID",
"is_native": false,
+ "is_event": false,
"abilities": [
"copy",
"drop",
diff --git a/api/goldens/aptos_api__tests__transactions_test__test_simulation_failure_with_detail_error.json b/api/goldens/aptos_api__tests__transactions_test__test_simulation_failure_with_detail_error.json
new file mode 100644
index 0000000000000..0e9929fbdde81
--- /dev/null
+++ b/api/goldens/aptos_api__tests__transactions_test__test_simulation_failure_with_detail_error.json
@@ -0,0 +1,95 @@
+[
+ {
+ "version": "0",
+ "hash": "",
+ "state_change_hash": "",
+ "event_root_hash": "",
+ "state_checkpoint_hash": null,
+ "gas_used": "3",
+ "success": false,
+ "vm_status": "LINKER_ERROR\nExecution failed with message: Linker Error: Module 0000000000000000000000000000000000000000000000000000000000000001::MemeCoin doesn't exist",
+ "accumulator_root_hash": "",
+ "changes": [
+ {
+ "address": "0xa550c18",
+ "state_key_hash": "",
+ "data": {
+ "type": "0x1::account::Account",
+ "data": {
+ "authentication_key": "0xcef8ffd1ab9017e96132df8a56b22de39a8155e1c3fc32affbbf93eb624b532a",
+ "coin_register_events": {
+ "counter": "1",
+ "guid": {
+ "id": {
+ "addr": "0xa550c18",
+ "creation_num": "0"
+ }
+ }
+ },
+ "guid_creation_num": "4",
+ "key_rotation_events": {
+ "counter": "0",
+ "guid": {
+ "id": {
+ "addr": "0xa550c18",
+ "creation_num": "1"
+ }
+ }
+ },
+ "rotation_capability_offer": {
+ "for": {
+ "vec": []
+ }
+ },
+ "sequence_number": "1",
+ "signer_capability_offer": {
+ "for": {
+ "vec": []
+ }
+ }
+ }
+ },
+ "type": "write_resource"
+ }
+ ],
+ "sender": "0xa550c18",
+ "sequence_number": "0",
+ "max_gas_amount": "100000000",
+ "gas_unit_price": "0",
+ "expiration_timestamp_secs": "18446744073709551615",
+ "payload": {
+ "function": "0x1::MemeCoin::transfer",
+ "type_arguments": [
+ "0x1::aptos_coin::AptosCoin"
+ ],
+ "arguments": [
+ "0x00000000000000000000000000000000000000000000000000000000000000dd",
+ "0x0100000000000000"
+ ],
+ "type": "entry_function_payload"
+ },
+ "signature": {
+ "public_key": "0x14418f867a0bd6d42abb2daa50cd68a5a869ce208282481f57504f630510d0d3",
+ "signature": "0x1d4f1d6c0b140deb6c63e81c742ffd546c832683a14970c687fa823641d34395197548c242c126ea7226730ce66b9ab2f695a2bcda982f30944163179f9a3c08",
+ "type": "ed25519_signature"
+ },
+ "events": [
+ {
+ "guid": {
+ "creation_number": "0",
+ "account_address": "0x0"
+ },
+ "sequence_number": "0",
+ "type": "0x1::transaction_fee::FeeStatement",
+ "data": {
+ "execution_gas_units": "3",
+ "io_gas_units": "0",
+ "storage_fee_octas": "0",
+ "storage_fee_refund_octas": "0",
+ "total_charge_gas_units": "3"
+ }
+ }
+ ],
+ "timestamp": "0"
+ }
+]
diff --git a/api/goldens/aptos_api__tests__transactions_test__test_simulation_failure_with_move_abort_error_rendering.json b/api/goldens/aptos_api__tests__transactions_test__test_simulation_failure_with_move_abort_error_rendering.json
new file mode 100644
index 0000000000000..836779403fc98
--- /dev/null
+++ b/api/goldens/aptos_api__tests__transactions_test__test_simulation_failure_with_move_abort_error_rendering.json
@@ -0,0 +1,93 @@
+[
+ {
+ "version": "3",
+ "hash": "",
+ "state_change_hash": "",
+ "event_root_hash": "",
+ "state_checkpoint_hash": null,
+ "gas_used": "11",
+ "success": false,
+ "vm_status": "Move abort in 0x1::coin: EINSUFFICIENT_BALANCE(0x10006): Not enough coins to complete transaction",
+ "accumulator_root_hash": "",
+ "changes": [
+ {
+ "address": "0x34bf7e2d17674feb234371a7ea58efd715f0e56ba20ebf13789480d9d643afaf",
+ "state_key_hash": "",
+ "data": {
+ "type": "0x1::account::Account",
+ "data": {
+ "authentication_key": "0x34bf7e2d17674feb234371a7ea58efd715f0e56ba20ebf13789480d9d643afaf",
+ "coin_register_events": {
+ "counter": "1",
+ "guid": {
+ "id": {
+ "addr": "0x34bf7e2d17674feb234371a7ea58efd715f0e56ba20ebf13789480d9d643afaf",
+ "creation_num": "0"
+ }
+ }
+ },
+ "guid_creation_num": "4",
+ "key_rotation_events": {
+ "counter": "0",
+ "guid": {
+ "id": {
+ "addr": "0x34bf7e2d17674feb234371a7ea58efd715f0e56ba20ebf13789480d9d643afaf",
+ "creation_num": "1"
+ }
+ }
+ },
+ "rotation_capability_offer": {
+ "for": {
+ "vec": []
+ }
+ },
+ "sequence_number": "1",
+ "signer_capability_offer": {
+ "for": {
+ "vec": []
+ }
+ }
+ }
+ },
+ "type": "write_resource"
+ }
+ ],
+ "sender": "0x34bf7e2d17674feb234371a7ea58efd715f0e56ba20ebf13789480d9d643afaf",
+ "sequence_number": "0",
+ "max_gas_amount": "100000000",
+ "gas_unit_price": "0",
+ "expiration_timestamp_secs": "18446744073709551615",
+ "payload": {
+ "function": "0x1::aptos_account::transfer",
+ "type_arguments": [],
+ "arguments": [
+ "0x1",
+ "999999999999999999"
+ ],
+ "type": "entry_function_payload"
+ },
+ "signature": {
+ "public_key": "0xd5a781494d2bf1a174ddffde1e02cb8881cff6dab70e61cbdef393deac0ce639",
+ "signature": "0x0090fadcba9d32d9918286f8b651772a4d04a23633cc9d10f4339ad4d0b1b7c4ca4829542aa9a8b5a6a28e0e63dfd52863d38ca1ba1d2a57c4bf1efc72c0fb06",
+ "type": "ed25519_signature"
+ },
+ "events": [
+ {
+ "guid": {
+ "creation_number": "0",
+ "account_address": "0x0"
+ },
+ "sequence_number": "0",
+ "type": "0x1::transaction_fee::FeeStatement",
+ "data": {
+ "execution_gas_units": "6",
+ "io_gas_units": "6",
+ "storage_fee_octas": "0",
+ "storage_fee_refund_octas": "0",
+ "total_charge_gas_units": "11"
+ }
+ }
+ ],
+ "timestamp": "500000"
+ }
+]
diff --git a/api/goldens/aptos_api__tests__view_function__test_simple_view_invalid.json b/api/goldens/aptos_api__tests__view_function__test_simple_view_invalid.json
index 0c0dbfce4633d..7d32adc125baa 100644
--- a/api/goldens/aptos_api__tests__view_function__test_simple_view_invalid.json
+++ b/api/goldens/aptos_api__tests__view_function__test_simple_view_invalid.json
@@ -1 +1 @@
-{"message":"PartialVMError with status INVALID_MAIN_FUNCTION_SIGNATURE and message function not marked as view function","error_code":"invalid_input","vm_error_code":null}
\ No newline at end of file
+{"message":"PartialVMError with status INVALID_MAIN_FUNCTION_SIGNATURE and message 'function not marked as view function'","error_code":"invalid_input","vm_error_code":null}
\ No newline at end of file
diff --git a/api/openapi-spec-generator/src/main.rs b/api/openapi-spec-generator/src/main.rs
index bfad65df7d813..cc608e6edce62 100644
--- a/api/openapi-spec-generator/src/main.rs
+++ b/api/openapi-spec-generator/src/main.rs
@@ -4,7 +4,7 @@
mod fake_context;
use anyhow::Result;
-use aptos_api::get_api_service;
+use aptos_api::{get_api_service, spec::get_spec};
use clap::{Parser, ValueEnum};
use fake_context::get_fake_context;
use std::{path::PathBuf, sync::Arc};
@@ -49,9 +49,10 @@ pub fn main() -> Result<()> {
let api_service = get_api_service(Arc::new(get_fake_context()));
let spec = match args.output_args.format {
- OutputFormat::Json => api_service.spec(),
- OutputFormat::Yaml => api_service.spec_yaml(),
+ OutputFormat::Json => get_spec(&api_service, false),
+ OutputFormat::Yaml => get_spec(&api_service, true),
};
+
args.output_args.write(&spec)
}
diff --git a/api/src/accept_type.rs b/api/src/accept_type.rs
index e4ca0eb085100..1a0d900988405 100644
--- a/api/src/accept_type.rs
+++ b/api/src/accept_type.rs
@@ -17,7 +17,6 @@ pub enum AcceptType {
/// This impl allows us to get the data straight from the arguments to the
/// endpoint handler.
-#[async_trait::async_trait]
impl<'a> FromRequest<'a> for AcceptType {
async fn from_request(request: &'a Request, _body: &mut RequestBody) -> Result {
let accept = Accept::from_request_without_body(request).await?;
diff --git a/api/src/accounts.rs b/api/src/accounts.rs
index 0193a7626d93e..3ac9a13005e61 100644
--- a/api/src/accounts.rs
+++ b/api/src/accounts.rs
@@ -66,7 +66,7 @@ impl AccountsApi {
let context = self.context.clone();
api_spawn_blocking(move || {
- let account = Account::new(context, address.0, ledger_version.0, None, None)?;
+ let account = Account::new(context, address.0, ledger_version.0, None, None, false)?;
account.account(&accept_type)
})
.await
@@ -118,6 +118,7 @@ impl AccountsApi {
ledger_version.0,
start.0.map(StateKey::from),
limit.0,
+ true,
)?;
account.resources(&accept_type)
})
@@ -170,6 +171,7 @@ impl AccountsApi {
ledger_version.0,
start.0.map(StateKey::from),
limit.0,
+ true,
)?;
account.modules(&accept_type)
})
@@ -183,7 +185,7 @@ pub struct Account {
/// Address of account
address: Address,
/// Lookup ledger version
- ledger_version: u64,
+ pub ledger_version: u64,
/// Where to start for pagination
start: Option,
/// Max number of items to retrieve
@@ -193,25 +195,35 @@ pub struct Account {
}
impl Account {
- /// Creates a new account struct and determines the current ledger info, and determines the
- /// ledger version to query
pub fn new(
context: Arc,
address: Address,
requested_ledger_version: Option,
start: Option,
limit: Option,
+ require_state_indices: bool,
) -> Result {
- // Use the latest ledger version, or the requested associated version
- let (latest_ledger_info, requested_ledger_version) = context
- .get_latest_ledger_info_and_verify_lookup_version(
+ let sharding_enabled = context
+ .node_config
+ .storage
+ .rocksdb_configs
+ .enable_storage_sharding;
+
+ let (latest_ledger_info, requested_version) = if sharding_enabled && require_state_indices {
+ context.get_latest_ledger_info_and_verify_internal_indexer_lookup_version(
requested_ledger_version.map(|inner| inner.0),
- )?;
+ )?
+ } else {
+ // Use the latest ledger version, or the requested associated version
+ context.get_latest_ledger_info_and_verify_lookup_version(
+ requested_ledger_version.map(|inner| inner.0),
+ )?
+ };
Ok(Self {
context,
address,
- ledger_version: requested_ledger_version,
+ ledger_version: requested_version,
start,
limit,
latest_ledger_info,
@@ -342,10 +354,8 @@ impl Account {
let state_view = self
.context
.latest_state_view_poem(&self.latest_ledger_info)?;
- let converter = state_view.as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- );
+ let converter = state_view
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone());
let converted_resources = converter
.try_into_resources(resources.iter().map(|(k, v)| (k.clone(), v.as_slice())))
.context("Failed to build move resource response from data in DB")
@@ -473,7 +483,7 @@ impl Account {
})?;
// Find the resource and retrieve the struct field
- let resource = self.find_resource(&struct_tag)?;
+ let (_, resource) = self.find_resource(&struct_tag)?;
let (_id, value) = resource
.into_iter()
.find(|(id, _)| id == &field_name)
@@ -513,19 +523,23 @@ impl Account {
Ok(*event_handle.key())
}
- /// Find a resource associated with an account
+ /// Find a resource associated with an account. If the resource is an enum variant,
+ /// returns the variant name in the option.
fn find_resource(
&self,
resource_type: &StructTag,
- ) -> Result, BasicErrorWith404> {
- let (ledger_info, ledger_version, state_view) =
+ ) -> Result<
+ (
+ Option,
+ Vec<(Identifier, move_core_types::value::MoveValue)>,
+ ),
+ BasicErrorWith404,
+ > {
+ let (ledger_info, requested_ledger_version, state_view) =
self.context.state_view(Some(self.ledger_version))?;
let bytes = state_view
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.find_resource(&state_view, self.address, resource_type)
.context(format!(
"Failed to query DB to check for {} at {}",
@@ -539,14 +553,16 @@ impl Account {
)
})?
.ok_or_else(|| {
- resource_not_found(self.address, resource_type, ledger_version, &ledger_info)
+ resource_not_found(
+ self.address,
+ resource_type,
+ requested_ledger_version,
+ &ledger_info,
+ )
})?;
state_view
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.move_struct_fields(resource_type, &bytes)
.context("Failed to convert move structs from storage")
.map_err(|err| {
diff --git a/api/src/basic.rs b/api/src/basic.rs
index 0dc9ff170243d..d6fed2dd70e3f 100644
--- a/api/src/basic.rs
+++ b/api/src/basic.rs
@@ -87,12 +87,10 @@ impl BasicApi {
let ledger_info = api_spawn_blocking(move || context.get_latest_ledger_info()).await?;
// If we have a duration, check that it's close to the current time, otherwise it's ok
- if let Some(duration) = duration_secs.0 {
- let timestamp = ledger_info.timestamp();
-
- let timestamp = Duration::from_micros(timestamp);
- let expectation = SystemTime::now()
- .sub(Duration::from_secs(duration as u64))
+ if let Some(max_skew) = duration_secs.0 {
+ let ledger_timestamp = Duration::from_micros(ledger_info.timestamp());
+ let skew_threshold = SystemTime::now()
+ .sub(Duration::from_secs(max_skew as u64))
.duration_since(UNIX_EPOCH)
.context("Failed to determine absolute unix time based on given duration")
.map_err(|err| {
@@ -103,9 +101,9 @@ impl BasicApi {
)
})?;
- if timestamp < expectation {
+ if ledger_timestamp < skew_threshold {
return Err(HealthCheckError::service_unavailable_with_code(
- "The latest ledger info timestamp is less than the expected timestamp",
+ format!("The latest ledger info timestamp is {:?}, which is beyond the allowed skew ({}s).", ledger_timestamp, max_skew),
AptosErrorCode::HealthCheckFailed,
&ledger_info,
));
diff --git a/api/src/bcs_payload.rs b/api/src/bcs_payload.rs
index 52ad783690bba..422037d817781 100644
--- a/api/src/bcs_payload.rs
+++ b/api/src/bcs_payload.rs
@@ -49,12 +49,11 @@ impl Payload for Bcs {
}
}
-#[poem::async_trait]
impl ParsePayload for Bcs {
const IS_REQUIRED: bool = true;
async fn from_request(request: &Request, body: &mut RequestBody) -> Result {
- let data: Vec = FromRequest::from_request(request, body).await?;
+ let data = Vec::::from_request(request, body).await?;
Ok(Self(data))
}
}
diff --git a/api/src/check_size.rs b/api/src/check_size.rs
index 9b3de83b8c145..4f6f1d35e0d19 100644
--- a/api/src/check_size.rs
+++ b/api/src/check_size.rs
@@ -1,9 +1,9 @@
// Copyright © Aptos Foundation
// SPDX-License-Identifier: Apache-2.0
-use hyper::Method;
use poem::{
error::SizedLimitError,
+ http::Method,
web::headers::{self, HeaderMapExt},
Endpoint, Middleware, Request, Result,
};
@@ -37,7 +37,6 @@ pub struct PostSizeLimitEndpoint {
max_size: u64,
}
-#[async_trait::async_trait]
impl Endpoint for PostSizeLimitEndpoint {
type Output = E::Output;
diff --git a/api/src/context.rs b/api/src/context.rs
index 7535e8faceb76..aa9e59848544f 100644
--- a/api/src/context.rs
+++ b/api/src/context.rs
@@ -18,13 +18,12 @@ use aptos_api_types::{
};
use aptos_config::config::{NodeConfig, RoleType};
use aptos_crypto::HashValue;
-use aptos_db_indexer::table_info_reader::TableInfoReader;
use aptos_gas_schedule::{AptosGasParameters, FromOnChainGasSchedule};
use aptos_logger::{error, info, Schema};
use aptos_mempool::{MempoolClientRequest, MempoolClientSender, SubmissionStatus};
use aptos_storage_interface::{
state_view::{DbStateView, DbStateViewAtVersion, LatestDbStateCheckpointView},
- DbReader, Order, MAX_REQUEST_LIMIT,
+ AptosDbError, DbReader, Order, MAX_REQUEST_LIMIT,
};
use aptos_types::{
access_path::{AccessPath, Path},
@@ -34,6 +33,7 @@ use aptos_types::{
chain_id::ChainId,
contract_event::EventWithVersion,
event::EventKey,
+ indexer::indexer_db_reader::IndexerReader,
ledger_info::LedgerInfoWithSignatures,
on_chain_config::{GasSchedule, GasScheduleV2, OnChainConfig, OnChainExecutionConfig},
state_store::{
@@ -41,7 +41,9 @@ use aptos_types::{
state_value::StateValue,
TStateView,
},
- transaction::{SignedTransaction, TransactionWithProof, Version},
+ transaction::{
+ block_epilogue::BlockEndInfo, SignedTransaction, Transaction, TransactionWithProof, Version,
+ },
};
use futures::{channel::oneshot, SinkExt};
use mini_moka::sync::Cache;
@@ -74,7 +76,7 @@ pub struct Context {
gas_limit_cache: Arc>,
view_function_stats: Arc,
simulate_txn_stats: Arc,
- pub table_info_reader: Option>,
+ pub indexer_reader: Option>,
pub wait_for_hash_active_connections: Arc,
}
@@ -90,7 +92,7 @@ impl Context {
db: Arc,
mp_sender: MempoolClientSender,
node_config: NodeConfig,
- table_info_reader: Option>,
+ indexer_reader: Option>,
) -> Self {
let (view_function_stats, simulate_txn_stats) = {
let log_per_call_stats = node_config.api.periodic_function_stats_sec.is_some();
@@ -127,7 +129,7 @@ impl Context {
})),
view_function_stats,
simulate_txn_stats,
- table_info_reader,
+ indexer_reader,
wait_for_hash_active_connections: Arc::new(AtomicUsize::new(0)),
}
}
@@ -250,6 +252,35 @@ impl Context {
))
}
+ pub fn get_latest_ledger_info_and_verify_internal_indexer_lookup_version(
+ &self,
+ requested_ledger_version: Option,
+ ) -> Result<(LedgerInfo, Version), E> {
+ if self.indexer_reader.is_none() {
+ return Err(E::internal_with_code_no_info(
+ "Indexer reader doesn't exist",
+ AptosErrorCode::InternalError,
+ ));
+ }
+
+ let (latest_ledger_info, latest_internal_indexer_ledger_version) =
+ self.get_latest_internal_indexer_ledger_version_and_main_db_info()?;
+ if let Some(version) = requested_ledger_version {
+ let request_ledger_version = Version::from(version);
+ if latest_internal_indexer_ledger_version < request_ledger_version {
+ return Err(version_not_found(
+ request_ledger_version,
+ &latest_ledger_info,
+ ));
+ } else if request_ledger_version < latest_ledger_info.oldest_ledger_version.0 {
+ return Err(version_pruned(request_ledger_version, &latest_ledger_info));
+ }
+ Ok((latest_ledger_info, request_ledger_version))
+ } else {
+ Ok((latest_ledger_info, latest_internal_indexer_ledger_version))
+ }
+ }
+
pub fn get_latest_ledger_info_and_verify_lookup_version(
&self,
requested_ledger_version: Option,
@@ -275,6 +306,25 @@ impl Context {
Ok((latest_ledger_info, requested_ledger_version))
}
+ pub fn get_latest_internal_indexer_ledger_version_and_main_db_info(
+ &self,
+ ) -> Result<(LedgerInfo, Version), E> {
+ if let Some(indexer_reader) = self.indexer_reader.as_ref() {
+ if let Some(latest_version) = indexer_reader
+ .get_latest_internal_indexer_ledger_version()
+ .map_err(|err| E::internal_with_code_no_info(err, AptosErrorCode::InternalError))?
+ {
+ let latest_ledger_info = self.get_latest_ledger_info()?;
+ return Ok((latest_ledger_info, latest_version));
+ }
+ }
+
+ Err(E::internal_with_code_no_info(
+ "Indexer reader doesn't exist, or doesn't have data.",
+ AptosErrorCode::InternalError,
+ ))
+ }
+
pub fn get_latest_ledger_info_with_signatures(&self) -> Result {
Ok(self.db.get_latest_ledger_info()?)
}
@@ -348,19 +398,26 @@ impl Context {
address: AccountAddress,
version: u64,
) -> Result> {
- let mut iter = self.db.get_prefixed_state_value_iterator(
- &StateKeyPrefix::from(address),
- None,
- version,
- )?;
+ let mut iter = if !db_sharding_enabled(&self.node_config) {
+ Box::new(
+ self.db
+ .get_prefixed_state_value_iterator(
+ &StateKeyPrefix::from(address),
+ None,
+ version,
+ )?
+ .map(|item| item.map_err(|err| anyhow!(err.to_string()))),
+ )
+ } else {
+ self.indexer_reader
+ .as_ref()
+ .ok_or_else(|| format_err!("Indexer reader doesn't exist"))?
+ .get_prefixed_state_value_iterator(&StateKeyPrefix::from(address), None, version)?
+ };
let kvs = iter
.by_ref()
.take(MAX_REQUEST_LIMIT as usize)
- .map(|res| match res {
- Ok((k, v)) => Ok((k, v)),
- Err(res) => Err(anyhow::Error::from(res)),
- })
.collect::>()?;
if iter.next().transpose()?.is_some() {
bail!("Too many state items under account ({:?}).", address);
@@ -375,11 +432,26 @@ impl Context {
version: u64,
limit: u64,
) -> Result<(Vec<(StructTag, Vec)>, Option)> {
- let account_iter = self.db.get_prefixed_state_value_iterator(
- &StateKeyPrefix::from(address),
- prev_state_key,
- version,
- )?;
+ let account_iter = if !db_sharding_enabled(&self.node_config) {
+ Box::new(
+ self.db
+ .get_prefixed_state_value_iterator(
+ &StateKeyPrefix::from(address),
+ prev_state_key,
+ version,
+ )?
+ .map(|item| item.map_err(|err| anyhow!(err.to_string()))),
+ )
+ } else {
+ self.indexer_reader
+ .as_ref()
+ .ok_or_else(|| format_err!("Indexer reader doesn't exist"))?
+ .get_prefixed_state_value_iterator(
+ &StateKeyPrefix::from(address),
+ prev_state_key,
+ version,
+ )?
+ };
// TODO: Consider rewriting this to consider resource groups:
// * If a resource group is found, expand
// * Return Option)>>
@@ -406,7 +478,7 @@ impl Context {
Some(Err(format_err!( "storage prefix scan return inconsistent key ({:?})", k )))
}
},
- Err(e) => Some(Err(e.into())),
+ Err(e) => Some(Err(e)),
})
.take(limit as usize + 1);
let kvs = resource_iter
@@ -416,7 +488,7 @@ impl Context {
// We should be able to do an unwrap here, otherwise the above db read would fail.
let state_view = self.state_view_at_version(version)?;
- let converter = state_view.as_converter(self.db.clone(), self.table_info_reader.clone());
+ let converter = state_view.as_converter(self.db.clone(), self.indexer_reader.clone());
// Extract resources from resource groups and flatten into all resources
let kvs = kvs
@@ -451,11 +523,26 @@ impl Context {
version: u64,
limit: u64,
) -> Result<(Vec<(ModuleId, Vec)>, Option)> {
- let account_iter = self.db.get_prefixed_state_value_iterator(
- &StateKeyPrefix::from(address),
- prev_state_key,
- version,
- )?;
+ let account_iter = if !db_sharding_enabled(&self.node_config) {
+ Box::new(
+ self.db
+ .get_prefixed_state_value_iterator(
+ &StateKeyPrefix::from(address),
+ prev_state_key,
+ version,
+ )?
+ .map(|item| item.map_err(|err| anyhow!(err.to_string()))),
+ )
+ } else {
+ self.indexer_reader
+ .as_ref()
+ .ok_or_else(|| format_err!("Indexer reader doesn't exist"))?
+ .get_prefixed_state_value_iterator(
+ &StateKeyPrefix::from(address),
+ prev_state_key,
+ version,
+ )?
+ };
let mut module_iter = account_iter
.filter_map(|res| match res {
Ok((k, v)) => match k.inner() {
@@ -471,7 +558,7 @@ impl Context {
Some(Err(format_err!( "storage prefix scan return inconsistent key ({:?})", k )))
}
},
- Err(e) => Some(Err(e.into())),
+ Err(e) => Some(Err(e)),
})
.take(limit as usize + 1);
let kvs = module_iter
@@ -576,7 +663,7 @@ impl Context {
// We can only get the max_transactions page size
let max_txns = std::cmp::min(
- self.node_config.api.max_transactions_page_size,
+ self.node_config.api.max_block_transactions_page_size,
(last_version - first_version + 1) as u16,
);
let txns = if with_transactions {
@@ -616,7 +703,7 @@ impl Context {
}
let state_view = self.latest_state_view_poem(ledger_info)?;
- let converter = state_view.as_converter(self.db.clone(), self.table_info_reader.clone());
+ let converter = state_view.as_converter(self.db.clone(), self.indexer_reader.clone());
let txns: Vec = data
.into_iter()
.map(|t| {
@@ -648,7 +735,7 @@ impl Context {
}
let state_view = self.latest_state_view_poem(ledger_info)?;
- let converter = state_view.as_converter(self.db.clone(), self.table_info_reader.clone());
+ let converter = state_view.as_converter(self.db.clone(), self.indexer_reader.clone());
let txns: Vec = data
.into_iter()
.map(|t| {
@@ -728,15 +815,31 @@ impl Context {
.saturating_sub(limit as u64)
};
- let txns = self
- .db
- .get_account_transactions(
+ let txns_res = if !db_sharding_enabled(&self.node_config) {
+ self.db.get_account_transactions(
address,
start_seq_number,
limit as u64,
true,
ledger_version,
)
+ } else {
+ self.indexer_reader
+ .as_ref()
+ .ok_or(anyhow!("Indexer reader is None"))
+ .map_err(|err| {
+ E::internal_with_code(err, AptosErrorCode::InternalError, ledger_info)
+ })?
+ .get_account_transactions(
+ address,
+ start_seq_number,
+ limit as u64,
+ true,
+ ledger_version,
+ )
+ .map_err(|e| AptosDbError::Other(e.to_string()))
+ };
+ let txns = txns_res
.context("Failed to retrieve account transactions")
.map_err(|err| {
E::internal_with_code(err, AptosErrorCode::InternalError, ledger_info)
@@ -811,28 +914,25 @@ impl Context {
limit: u16,
ledger_version: u64,
) -> Result> {
- if let Some(start) = start {
- Ok(self.db.get_events(
- event_key,
- start,
- Order::Ascending,
- limit as u64,
- ledger_version,
- )?)
+ let (start, order) = if let Some(start) = start {
+ (start, Order::Ascending)
} else {
- Ok(self
- .db
- .get_events(
- event_key,
- u64::MAX,
- Order::Descending,
- limit as u64,
- ledger_version,
- )
- .map(|mut result| {
- result.reverse();
- result
- })?)
+ (u64::MAX, Order::Descending)
+ };
+ let mut res = if !db_sharding_enabled(&self.node_config) {
+ self.db
+ .get_events(event_key, start, order, limit as u64, ledger_version)?
+ } else {
+ self.indexer_reader
+ .as_ref()
+ .ok_or(anyhow!("Internal indexer reader doesn't exist"))?
+ .get_events(event_key, start, order, limit as u64, ledger_version)?
+ };
+ if order == Order::Descending {
+ res.reverse();
+ Ok(res)
+ } else {
+ Ok(res)
}
}
@@ -892,29 +992,37 @@ impl Context {
start_version: Version,
limit: u64,
ledger_version: Version,
- ) -> Result> {
+ ) -> Result<(Vec<(u64, u64)>, Vec)> {
if start_version > ledger_version || limit == 0 {
- return Ok(vec![]);
+ return Ok((vec![], vec![]));
}
- // This is just an estimation, so we cna just skip over errors
+ // This is just an estimation, so we can just skip over errors
let limit = std::cmp::min(limit, ledger_version - start_version + 1);
let txns = self.db.get_transaction_iterator(start_version, limit)?;
let infos = self
.db
.get_transaction_info_iterator(start_version, limit)?;
- let gas_prices: Vec<_> = txns
- .zip(infos)
- .filter_map(|(txn, info)| {
- txn.as_ref()
- .ok()
- .and_then(|t| t.try_as_signed_user_txn())
- .map(|t| (t.gas_unit_price(), info))
- })
- .filter_map(|(unit_price, info)| info.as_ref().ok().map(|i| (unit_price, i.gas_used())))
- .collect();
- Ok(gas_prices)
+ let mut gas_prices = Vec::new();
+ let mut block_end_infos = Vec::new();
+ for (txn, info) in txns.zip(infos) {
+ match txn.as_ref() {
+ Ok(Transaction::UserTransaction(txn)) => {
+ if let Ok(info) = info.as_ref() {
+ gas_prices.push((txn.gas_unit_price(), info.gas_used()));
+ }
+ },
+ Ok(Transaction::BlockEpilogue(txn)) => {
+ if let Some(block_end_info) = txn.try_as_block_end_info() {
+ block_end_infos.push(block_end_info.clone());
+ }
+ },
+ _ => {},
+ }
+ }
+
+ Ok((gas_prices, block_end_infos))
}
pub fn estimate_gas_price(
@@ -1009,20 +1117,17 @@ impl Context {
last - first,
ledger_info.ledger_version.0,
) {
- Ok(prices_and_used) => {
+ Ok((prices_and_used, block_end_infos)) => {
let is_full_block = if prices_and_used.len() >= config.full_block_txns {
true
- } else if let Some(full_block_gas_used) =
+ } else if !block_end_infos.is_empty() {
+ assert_eq!(1, block_end_infos.len());
+ block_end_infos.first().unwrap().limit_reached()
+ } else if let Some(block_gas_limit) =
block_config.block_gas_limit_type.block_gas_limit()
{
- // be pessimistic for conflicts, as such information is not onchain
let gas_used = prices_and_used.iter().map(|(_, used)| *used).sum::();
- let max_conflict_multiplier = block_config
- .block_gas_limit_type
- .conflict_penalty_window()
- .unwrap_or(1)
- as u64;
- gas_used * max_conflict_multiplier >= full_block_gas_used
+ gas_used >= block_gas_limit
} else {
false
};
@@ -1170,17 +1275,22 @@ impl Context {
E::internal_with_code(e, AptosErrorCode::InternalError, ledger_info)
})?;
- let gas_schedule_params =
- match GasScheduleV2::fetch_config(&state_view).and_then(|gas_schedule| {
- let feature_version = gas_schedule.feature_version;
- let gas_schedule = gas_schedule.to_btree_map();
- AptosGasParameters::from_on_chain_gas_schedule(&gas_schedule, feature_version)
+ let gas_schedule_params = {
+ let may_be_params =
+ GasScheduleV2::fetch_config(&state_view).and_then(|gas_schedule| {
+ let feature_version = gas_schedule.feature_version;
+ let gas_schedule = gas_schedule.into_btree_map();
+ AptosGasParameters::from_on_chain_gas_schedule(
+ &gas_schedule,
+ feature_version,
+ )
.ok()
- }) {
+ });
+ match may_be_params {
Some(gas_schedule) => Ok(gas_schedule),
None => GasSchedule::fetch_config(&state_view)
.and_then(|gas_schedule| {
- let gas_schedule = gas_schedule.to_btree_map();
+ let gas_schedule = gas_schedule.into_btree_map();
AptosGasParameters::from_on_chain_gas_schedule(&gas_schedule, 0).ok()
})
.ok_or_else(|| {
@@ -1190,7 +1300,8 @@ impl Context {
ledger_info,
)
}),
- }?;
+ }?
+ };
// Update the cache
cache.gas_schedule_params = Some(gas_schedule_params.clone());
@@ -1431,3 +1542,7 @@ impl FunctionStats {
}
}
}
+
+fn db_sharding_enabled(node_config: &NodeConfig) -> bool {
+ node_config.storage.rocksdb_configs.enable_storage_sharding
+}
diff --git a/api/src/events.rs b/api/src/events.rs
index 5dc4f2310f789..5c9266df373b8 100644
--- a/api/src/events.rs
+++ b/api/src/events.rs
@@ -77,7 +77,7 @@ impl EventsApi {
// Ensure that account exists
let api = self.clone();
api_spawn_blocking(move || {
- let account = Account::new(api.context.clone(), address.0, None, None, None)?;
+ let account = Account::new(api.context.clone(), address.0, None, None, None, true)?;
account.verify_account_or_object_resource()?;
api.list(
account.latest_ledger_info,
@@ -144,7 +144,7 @@ impl EventsApi {
let api = self.clone();
api_spawn_blocking(move || {
- let account = Account::new(api.context.clone(), address.0, None, None, None)?;
+ let account = Account::new(api.context.clone(), address.0, None, None, None, true)?;
let key = account.find_event_key(event_handle.0, field_name.0.into())?;
api.list(account.latest_ledger_info, accept_type, page, key)
})
@@ -184,10 +184,7 @@ impl EventsApi {
let events = self
.context
.latest_state_view_poem(&latest_ledger_info)?
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.try_into_versioned_events(&events)
.context("Failed to convert events from storage into response")
.map_err(|err| {
diff --git a/api/src/lib.rs b/api/src/lib.rs
index 838394268d667..fa72f894e47e4 100644
--- a/api/src/lib.rs
+++ b/api/src/lib.rs
@@ -21,6 +21,7 @@ mod page;
mod response;
mod runtime;
mod set_failpoints;
+pub mod spec;
mod state;
#[cfg(test)]
pub mod tests;
diff --git a/api/src/log.rs b/api/src/log.rs
index f305815176d00..b9ee7a2ab4d52 100644
--- a/api/src/log.rs
+++ b/api/src/log.rs
@@ -9,9 +9,11 @@ use aptos_logger::{
prelude::{sample, SampleRate},
warn, Schema,
};
-use hyper::Method;
use once_cell::sync::Lazy;
-use poem::{http::header, Endpoint, Request, Response, Result};
+use poem::{
+ http::{header, Method},
+ Endpoint, Request, Response, Result,
+};
use poem_openapi::OperationId;
use regex::Regex;
use std::time::Duration;
diff --git a/api/src/response.rs b/api/src/response.rs
index e376ca42e9182..ab94491b083bc 100644
--- a/api/src/response.rs
+++ b/api/src/response.rs
@@ -77,6 +77,7 @@ macro_rules! generate_error_traits {
$(
pub trait [<$trait_name Error>]: AptosErrorResponse {
// With ledger info and an error code
+ #[allow(unused)]
fn [<$trait_name:snake _with_code>](
err: Err,
error_code: aptos_api_types::AptosErrorCode,
@@ -84,11 +85,13 @@ macro_rules! generate_error_traits {
) -> Self where Self: Sized;
// With an error code and no ledger info headers (special case)
+ #[allow(unused)]
fn [<$trait_name:snake _with_code_no_info>](
err: Err,
error_code: aptos_api_types::AptosErrorCode,
) -> Self where Self: Sized;
+ #[allow(unused)]
fn [<$trait_name:snake _with_vm_status>](
err: Err,
error_code: aptos_api_types::AptosErrorCode,
@@ -96,6 +99,7 @@ macro_rules! generate_error_traits {
ledger_info: &aptos_api_types::LedgerInfo
) -> Self where Self: Sized;
+ #[allow(unused)]
fn [<$trait_name:snake _from_aptos_error>](
aptos_error: aptos_api_types::AptosError,
ledger_info: &aptos_api_types::LedgerInfo
diff --git a/api/src/runtime.rs b/api/src/runtime.rs
index 4673c087235a1..219036a90b5d7 100644
--- a/api/src/runtime.rs
+++ b/api/src/runtime.rs
@@ -3,18 +3,27 @@
// SPDX-License-Identifier: Apache-2.0
use crate::{
- accounts::AccountsApi, basic::BasicApi, blocks::BlocksApi, check_size::PostSizeLimit,
- context::Context, error_converter::convert_error, events::EventsApi, index::IndexApi,
- log::middleware_log, set_failpoints, state::StateApi, transactions::TransactionsApi,
+ accounts::AccountsApi,
+ basic::BasicApi,
+ blocks::BlocksApi,
+ check_size::PostSizeLimit,
+ context::Context,
+ error_converter::convert_error,
+ events::EventsApi,
+ index::IndexApi,
+ log::middleware_log,
+ set_failpoints,
+ spec::{spec_endpoint_json, spec_endpoint_yaml},
+ state::StateApi,
+ transactions::TransactionsApi,
view_function::ViewFunctionApi,
};
use anyhow::Context as AnyhowContext;
use aptos_config::config::{ApiConfig, NodeConfig};
-use aptos_db_indexer::table_info_reader::TableInfoReader;
use aptos_logger::info;
use aptos_mempool::MempoolClientSender;
use aptos_storage_interface::DbReader;
-use aptos_types::chain_id::ChainId;
+use aptos_types::{chain_id::ChainId, indexer::indexer_db_reader::IndexerReader};
use poem::{
handler,
http::Method,
@@ -35,12 +44,12 @@ pub fn bootstrap(
chain_id: ChainId,
db: Arc,
mp_sender: MempoolClientSender,
- table_info_reader: Option>,
+ indexer_reader: Option>,
) -> anyhow::Result {
let max_runtime_workers = get_max_runtime_workers(&config.api);
let runtime = aptos_runtimes::spawn_named_runtime("api".into(), Some(max_runtime_workers));
- let context = Context::new(chain_id, db, mp_sender, config.clone(), table_info_reader);
+ let context = Context::new(chain_id, db, mp_sender, config.clone(), indexer_reader);
attach_poem_to_runtime(runtime.handle(), context.clone(), config, false)
.context("Failed to attach poem to runtime")?;
@@ -165,8 +174,8 @@ pub fn attach_poem_to_runtime(
let api_service = get_api_service(context.clone());
- let spec_json = api_service.spec_endpoint();
- let spec_yaml = api_service.spec_endpoint_yaml();
+ let spec_json = spec_endpoint_json(&api_service);
+ let spec_yaml = spec_endpoint_yaml(&api_service);
let mut address = config.api.address;
diff --git a/api/src/spec.rs b/api/src/spec.rs
new file mode 100644
index 0000000000000..10293cb71e097
--- /dev/null
+++ b/api/src/spec.rs
@@ -0,0 +1,58 @@
+// Copyright (c) Aptos Foundation
+// SPDX-License-Identifier: Apache-2.0
+
+use poem::{
+ endpoint::{make_sync, Endpoint},
+ Response,
+};
+use poem_openapi::{OpenApi, OpenApiService, Webhook};
+
+/// Get the spec as JSON. We implement our own function because poem-openapi versions
+/// greater than 2.0.11 add this charset thing to the content type. This causes issues
+/// with our current Accept logic and messes up some code generators and our spec page,
+/// so we remove it.
+pub fn get_spec(service: &OpenApiService, yaml: bool) -> String
+where
+ T: OpenApi,
+ W: Webhook,
+{
+ let spec = if yaml {
+ service.spec_yaml()
+ } else {
+ service.spec()
+ };
+ spec.replace("; charset=utf-8", "")
+}
+
+/// Create an endpoint to serve the OpenAPI specification as json. We define this
+/// ourselves because we need to use our custom `get_spec` function that changes the
+/// spec to remove charset from the content type.
+pub fn spec_endpoint_json(service: &OpenApiService) -> impl Endpoint
+where
+ T: OpenApi,
+ W: Webhook,
+{
+ let spec = get_spec(service, false);
+ make_sync(move |_| {
+ Response::builder()
+ .content_type("application/json")
+ .body(spec.clone())
+ })
+}
+
+/// Create an endpoint to serve the OpenAPI specification as yaml. We define this
+/// ourselves because we need to use our custom `get_spec` function that changes the
+/// spec to remove charset from the content type.
+pub fn spec_endpoint_yaml(service: &OpenApiService) -> impl Endpoint
+where
+ T: OpenApi,
+ W: Webhook,
+{
+ let spec = get_spec(service, true);
+ make_sync(move |_| {
+ Response::builder()
+ .content_type("application/x-yaml")
+ .header("Content-Disposition", "inline; filename=\"spec.yaml\"")
+ .body(spec.clone())
+ })
+}
diff --git a/api/src/state.rs b/api/src/state.rs
index 4b083a6d47b16..8c11810b98ccb 100644
--- a/api/src/state.rs
+++ b/api/src/state.rs
@@ -287,10 +287,7 @@ impl StateApi {
let (ledger_info, ledger_version, state_view) = self.context.state_view(ledger_version)?;
let bytes = state_view
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.find_resource(&state_view, address, &tag)
.context(format!(
"Failed to query DB to check for {} at {}",
@@ -308,10 +305,7 @@ impl StateApi {
match accept_type {
AcceptType::Json => {
let resource = state_view
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.try_into_resource(&tag, &bytes)
.context("Failed to deserialize resource data retrieved from DB")
.map_err(|err| {
@@ -412,10 +406,8 @@ impl StateApi {
.context
.state_view(ledger_version.map(|inner| inner.0))?;
- let converter = state_view.as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- );
+ let converter =
+ state_view.as_converter(self.context.db.clone(), self.context.indexer_reader.clone());
// Convert key to lookup version for DB
let vm_key = converter
diff --git a/api/src/tests/accounts_test.rs b/api/src/tests/accounts_test.rs
index da00aeff218e7..a5199cf61c452 100644
--- a/api/src/tests/accounts_test.rs
+++ b/api/src/tests/accounts_test.rs
@@ -3,7 +3,8 @@
// SPDX-License-Identifier: Apache-2.0
use super::new_test_context;
-use aptos_api_test_context::{current_function_name, find_value};
+use crate::tests::new_test_context_with_db_sharding_and_internal_indexer;
+use aptos_api_test_context::{current_function_name, find_value, TestContext};
use aptos_api_types::{MoveModuleBytecode, MoveResource, MoveStructTag, StateKeyWrapper};
use aptos_cached_packages::aptos_stdlib;
use serde_json::json;
@@ -36,9 +37,21 @@ async fn test_get_account_resources_by_address_0x0() {
async fn test_get_account_resources_by_valid_account_address() {
let context = new_test_context(current_function_name!());
let addresses = vec!["0x1", "0x00000000000000000000000000000001"];
+ let mut res = vec![];
for address in &addresses {
- context.get(&account_resources(address)).await;
+ let resp = context.get(&account_resources(address)).await;
+ res.push(resp);
}
+
+ let shard_context =
+ new_test_context_with_db_sharding_and_internal_indexer(current_function_name!());
+ let mut shard_res = vec![];
+ for address in &addresses {
+ let resp = shard_context.get(&account_resources(address)).await;
+ shard_res.push(resp);
+ }
+
+ assert_eq!(res, shard_res);
}
// Unstable due to framework changes
@@ -96,13 +109,15 @@ async fn test_account_modules_structs() {
context.check_golden_output(resp);
}
-#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
-async fn test_get_account_resources_by_ledger_version() {
- let mut context = new_test_context(current_function_name!());
+async fn test_account_resources_by_ledger_version_with_context(mut context: TestContext) {
let account = context.gen_account();
let txn = context.create_user_account(&account).await;
context.commit_block(&vec![txn.clone()]).await;
+ if let Some(indexer_reader) = context.context.indexer_reader.as_ref() {
+ indexer_reader.wait_for_internal_indexer(2).unwrap();
+ }
+
let ledger_version_1_resources = context
.get(&account_resources(
&context.root_account().await.address().to_hex_literal(),
@@ -125,13 +140,23 @@ async fn test_get_account_resources_by_ledger_version() {
assert_eq!(root_account["data"]["sequence_number"], "0");
}
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_get_account_resources_by_ledger_version() {
+ let context = new_test_context(current_function_name!());
+ test_account_resources_by_ledger_version_with_context(context).await;
+ let shard_context =
+ new_test_context_with_db_sharding_and_internal_indexer(current_function_name!());
+ test_account_resources_by_ledger_version_with_context(shard_context).await;
+}
+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn test_get_account_resources_by_too_large_ledger_version() {
let mut context = new_test_context(current_function_name!());
+ let account = context.root_account().await;
let resp = context
.expect_status_code(404)
.get(&account_resources_with_ledger_version(
- &context.root_account().await.address().to_hex_literal(),
+ &account.address().to_hex_literal(),
1000000000000000000,
))
.await;
@@ -151,9 +176,7 @@ async fn test_get_account_resources_by_invalid_ledger_version() {
context.check_golden_output(resp);
}
-#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
-async fn test_get_account_modules_by_ledger_version() {
- let mut context = new_test_context(current_function_name!());
+async fn test_get_account_modules_by_ledger_version_with_context(mut context: TestContext) {
let payload =
aptos_stdlib::publish_module_source("test_module", "module 0xa550c18::test_module {}");
@@ -162,6 +185,10 @@ async fn test_get_account_modules_by_ledger_version() {
root_account.sign_with_transaction_builder(context.transaction_factory().payload(payload));
context.commit_block(&vec![txn.clone()]).await;
+ if let Some(indexer_reader) = context.context.indexer_reader.as_ref() {
+ indexer_reader.wait_for_internal_indexer(2).unwrap();
+ }
+
let modules = context
.get(&account_modules(
&context.root_account().await.address().to_hex_literal(),
@@ -178,6 +205,15 @@ async fn test_get_account_modules_by_ledger_version() {
assert_eq!(modules, json!([]));
}
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_get_account_modules_by_ledger_version() {
+ let context = new_test_context(current_function_name!());
+ test_get_account_modules_by_ledger_version_with_context(context).await;
+ let shard_context =
+ new_test_context_with_db_sharding_and_internal_indexer(current_function_name!());
+ test_get_account_modules_by_ledger_version_with_context(shard_context).await;
+}
+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn test_get_core_account_data() {
let mut context = new_test_context(current_function_name!());
diff --git a/api/src/tests/events_test.rs b/api/src/tests/events_test.rs
index acf517b61a04c..1c1f69830cc06 100644
--- a/api/src/tests/events_test.rs
+++ b/api/src/tests/events_test.rs
@@ -3,6 +3,7 @@
// SPDX-License-Identifier: Apache-2.0
use super::new_test_context;
+use crate::tests::new_test_context_with_db_sharding_and_internal_indexer;
use aptos_api_test_context::{current_function_name, TestContext};
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
use serde_json::json;
@@ -35,7 +36,21 @@ async fn test_get_events_filter_by_start_sequence_number() {
.as_str(),
)
.await;
- context.check_golden_output(resp);
+ context.check_golden_output(resp.clone());
+
+ // assert the same resp after db sharding migration with internal indexer turned on
+ let shard_context =
+ new_test_context_with_db_sharding_and_internal_indexer(current_function_name!());
+ let new_resp = shard_context
+ .get(
+ format!(
+ "/accounts/{}/events/{}?start=1",
+ ACCOUNT_ADDRESS, CREATION_NUMBER
+ )
+ .as_str(),
+ )
+ .await;
+ assert_eq!(resp, new_resp);
}
// turn it back until we have multiple events in genesis
@@ -84,7 +99,14 @@ async fn test_get_events_by_account_event_handle() {
let resp = context
.get("/accounts/0x1/events/0x1::reconfiguration::Configuration/events")
.await;
- context.check_golden_output(resp);
+ context.check_golden_output(resp.clone());
+
+ let shard_context =
+ new_test_context_with_db_sharding_and_internal_indexer(current_function_name!());
+ let new_resp = shard_context
+ .get("/accounts/0x1/events/0x1::reconfiguration::Configuration/events")
+ .await;
+ assert_eq!(resp, new_resp);
}
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
diff --git a/api/src/tests/mod.rs b/api/src/tests/mod.rs
index e581acdbad02a..e7978f66a126e 100644
--- a/api/src/tests/mod.rs
+++ b/api/src/tests/mod.rs
@@ -22,7 +22,7 @@ mod view_function;
mod webauthn_secp256r1_ecdsa;
use aptos_api_test_context::{new_test_context as super_new_test_context, TestContext};
-use aptos_config::config::NodeConfig;
+use aptos_config::config::{internal_indexer_db_config::InternalIndexerDBConfig, NodeConfig};
fn new_test_context(test_name: String) -> TestContext {
new_test_context_with_config(test_name, NodeConfig::default())
@@ -31,3 +31,10 @@ fn new_test_context(test_name: String) -> TestContext {
fn new_test_context_with_config(test_name: String, node_config: NodeConfig) -> TestContext {
super_new_test_context(test_name, node_config, false)
}
+
+fn new_test_context_with_db_sharding_and_internal_indexer(test_name: String) -> TestContext {
+ let mut node_config = NodeConfig::default();
+ node_config.storage.rocksdb_configs.enable_storage_sharding = true;
+ node_config.indexer_db_config = InternalIndexerDBConfig::new(true, true, true, 10_000);
+ super_new_test_context(test_name, node_config, true)
+}
diff --git a/api/src/tests/modules.rs b/api/src/tests/modules.rs
index e451ff9718585..66131a72f0de9 100644
--- a/api/src/tests/modules.rs
+++ b/api/src/tests/modules.rs
@@ -64,4 +64,23 @@ async fn test_abi() {
assert_eq!(function["is_view"], false);
}
+
+ // Confirm that MyEvent is considered an event.
+ let structs = modules.as_array().unwrap()[0]["abi"]["structs"]
+ .as_array()
+ .unwrap();
+ let my_event = structs
+ .iter()
+ .find(|s| s["name"].as_str().unwrap() == "MyEvent")
+ .unwrap();
+
+ assert_eq!(my_event["is_event"], true);
+
+ // Confirm that State is not considered an event.
+ let my_struct = structs
+ .iter()
+ .find(|s| s["name"].as_str().unwrap() == "State")
+ .unwrap();
+
+ assert_eq!(my_struct["is_event"], false);
}
diff --git a/api/src/tests/move/pack_abi/sources/test.move b/api/src/tests/move/pack_abi/sources/test.move
index 83b95de8f87bc..5bf35cbe4b2bb 100644
--- a/api/src/tests/move/pack_abi/sources/test.move
+++ b/api/src/tests/move/pack_abi/sources/test.move
@@ -4,6 +4,11 @@ module abi::test {
value: u64
}
+ #[event]
+ struct MyEvent has store {
+ value: u64
+ }
+
public fun public_function(s: &signer, state: State) {
move_to(s, state)
}
@@ -11,6 +16,7 @@ module abi::test {
public entry fun public_entry_function(s1: &signer, s2: &signer, value: u64) {
move_to(s1, State { value });
move_to(s2, State { value });
+
}
entry fun private_entry_function(s: &signer, value: u64) {
diff --git a/api/src/tests/multisig_transactions_test.rs b/api/src/tests/multisig_transactions_test.rs
index b02c5b0c976fb..eb6e132ecb277 100644
--- a/api/src/tests/multisig_transactions_test.rs
+++ b/api/src/tests/multisig_transactions_test.rs
@@ -333,6 +333,74 @@ async fn test_multisig_transaction_with_payload_not_matching_hash() {
.await;
}
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_multisig_transaction_with_matching_payload() {
+ let mut context = new_test_context(current_function_name!());
+ let owner_account = &mut context.create_account().await;
+ let multisig_account = context
+ .create_multisig_account(owner_account, vec![], 1, 1000)
+ .await;
+ assert_eq!(1000, context.get_apt_balance(multisig_account).await);
+ let multisig_payload = construct_multisig_txn_transfer_payload(owner_account.address(), 1000);
+ context
+ .create_multisig_transaction(owner_account, multisig_account, multisig_payload.clone())
+ .await;
+ context
+ .execute_multisig_transaction_with_payload(
+ owner_account,
+ multisig_account,
+ "0x1::aptos_account::transfer",
+ &[],
+ &[&owner_account.address().to_hex_literal(), "1000"],
+ 202,
+ )
+ .await;
+
+ // The multisig tx that transfers away 1000 APT should have succeeded.
+ assert_multisig_tx_executed(&mut context, multisig_account, multisig_payload, 1).await;
+ assert_eq!(0, context.get_apt_balance(multisig_account).await);
+}
+
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_multisig_transaction_with_mismatching_payload() {
+ let mut context = new_test_context(current_function_name!());
+ let owner_account = &mut context.create_account().await;
+ let multisig_account = context
+ .create_multisig_account(owner_account, vec![], 1, 1000)
+ .await;
+ let multisig_payload = construct_multisig_txn_transfer_payload(owner_account.address(), 1000);
+ context
+ .create_multisig_transaction(owner_account, multisig_account, multisig_payload.clone())
+ .await;
+
+ // The multisig transaction execution should fail due to the payload mismatch
+ // amount being different (1000 vs 2000).
+ context
+ .execute_multisig_transaction_with_payload(
+ owner_account,
+ multisig_account,
+ "0x1::aptos_account::transfer",
+ &[],
+ &[&owner_account.address().to_hex_literal(), "2000"],
+ 400,
+ )
+ .await;
+ // Balance didn't change since the target transaction failed.
+ assert_eq!(1000, context.get_apt_balance(multisig_account).await);
+
+ // Excuting the transaction with the correct payload should succeed.
+ context
+ .execute_multisig_transaction_with_payload(
+ owner_account,
+ multisig_account,
+ "0x1::aptos_account::transfer",
+ &[],
+ &[&owner_account.address().to_hex_literal(), "1000"],
+ 202,
+ )
+ .await;
+}
+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn test_multisig_transaction_simulation() {
let mut context = new_test_context(current_function_name!());
@@ -367,7 +435,7 @@ async fn test_multisig_transaction_simulation() {
let withdraw_event = &simulation_resp["events"].as_array().unwrap()[0];
assert_eq!(
withdraw_event["type"].as_str().unwrap(),
- "0x1::coin::Withdraw<0x1::aptos_coin::AptosCoin>"
+ "0x1::coin::CoinWithdraw"
);
let withdraw_from_account =
AccountAddress::from_hex_literal(withdraw_event["data"]["account"].as_str().unwrap())
diff --git a/api/src/tests/secp256k1_ecdsa.rs b/api/src/tests/secp256k1_ecdsa.rs
index d8c8e8f2085d6..3a0121bf41a43 100644
--- a/api/src/tests/secp256k1_ecdsa.rs
+++ b/api/src/tests/secp256k1_ecdsa.rs
@@ -4,14 +4,73 @@
use super::new_test_context;
use aptos_api_test_context::current_function_name;
-use aptos_crypto::{ed25519::Ed25519PrivateKey, secp256k1_ecdsa};
+use aptos_crypto::{ed25519::Ed25519PrivateKey, secp256k1_ecdsa, SigningKey};
use aptos_sdk::types::{
- transaction::authenticator::{AnyPublicKey, AuthenticationKey},
+ transaction::{
+ authenticator::{
+ AccountAuthenticator, AnyPublicKey, AnySignature, AuthenticationKey, MultiKey,
+ MultiKeyAuthenticator,
+ },
+ SignedTransaction,
+ },
LocalAccount,
};
use rand::{rngs::StdRng, SeedableRng};
use std::convert::TryInto;
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_multi_secp256k1_ecdsa() {
+ let mut context = new_test_context(current_function_name!());
+ let other = context.create_account().await;
+
+ let mut rng: StdRng = SeedableRng::from_seed([0; 32]);
+ let private_key: secp256k1_ecdsa::PrivateKey = aptos_crypto::Uniform::generate(&mut rng);
+ let public_key = aptos_crypto::PrivateKey::public_key(&private_key);
+ let address = AuthenticationKey::multi_key(
+ MultiKey::new(vec![AnyPublicKey::secp256k1_ecdsa(public_key.clone())], 1).unwrap(),
+ )
+ .account_address();
+
+ // Set a dummy key
+ let key_bytes =
+ hex::decode("a38ba78b1a0fbfc55e2c5dfdedf48d1172283d0f7c59fd64c02d811130a2f4b2").unwrap();
+ let ed25519_private_key: Ed25519PrivateKey = (&key_bytes[..]).try_into().unwrap();
+ let mut account = LocalAccount::new(address, ed25519_private_key, 0);
+
+ let txn0 = context.create_user_account(&account).await;
+ context.commit_block(&vec![txn0]).await;
+ let txn1 = context.mint_user_account(&account).await;
+ context.commit_block(&vec![txn1]).await;
+ let txn2 = context.create_user_account(&other).await;
+ context.commit_block(&vec![txn2]).await;
+
+ let ed22519_txn = context.account_transfer(&mut account, &other, 5);
+ let raw_txn = ed22519_txn.into_raw_transaction();
+
+ let signature = private_key.sign(&raw_txn).unwrap();
+ let authenticator = AccountAuthenticator::multi_key(
+ MultiKeyAuthenticator::new(
+ MultiKey::new(vec![AnyPublicKey::secp256k1_ecdsa(public_key)], 1).unwrap(),
+ vec![(0, AnySignature::secp256k1_ecdsa(signature))],
+ )
+ .unwrap(),
+ );
+ let secp256k1_ecdsa_txn = SignedTransaction::new_single_sender(raw_txn, authenticator);
+ let balance_start = context.get_apt_balance(other.address()).await;
+ let bcs_txn = bcs::to_bytes(&secp256k1_ecdsa_txn).unwrap();
+ context
+ .expect_status_code(202)
+ .post_bcs_txn("/transactions", bcs_txn)
+ .await;
+ context.commit_mempool_txns(1).await;
+ assert_eq!(
+ balance_start + 5,
+ context.get_apt_balance(other.address()).await
+ );
+ let txns = context.get("/transactions?start=14&limit=1").await;
+ context.check_golden_output(txns[0]["signature"].clone());
+}
+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn test_secp256k1_ecdsa() {
let mut context = new_test_context(current_function_name!());
@@ -52,4 +111,6 @@ async fn test_secp256k1_ecdsa() {
balance_start + 5,
context.get_apt_balance(other.address()).await
);
+ let txns = context.get("/transactions?start=14&limit=1").await;
+ context.check_golden_output(txns[0]["signature"].clone());
}
diff --git a/api/src/tests/state_test.rs b/api/src/tests/state_test.rs
index 0aaf1bfddb699..e1ace9ca255e9 100644
--- a/api/src/tests/state_test.rs
+++ b/api/src/tests/state_test.rs
@@ -171,7 +171,7 @@ async fn test_merkle_leaves_with_nft_transfer() {
let num_leaves_at_beginning = ctx
.db
- .get_state_leaf_count(ctx.db.get_latest_version().unwrap())
+ .get_state_item_count(ctx.db.get_latest_ledger_info_version().unwrap())
.unwrap();
let transfer_to_owner_txn = creator.sign_multi_agent_with_transaction_builder(
@@ -188,7 +188,7 @@ async fn test_merkle_leaves_with_nft_transfer() {
ctx.commit_block(&vec![transfer_to_owner_txn]).await;
let num_leaves_after_transfer_nft = ctx
.db
- .get_state_leaf_count(ctx.db.get_latest_version().unwrap())
+ .get_state_item_count(ctx.db.get_latest_ledger_info_version().unwrap())
.unwrap();
assert_eq!(
num_leaves_after_transfer_nft,
@@ -209,7 +209,7 @@ async fn test_merkle_leaves_with_nft_transfer() {
ctx.commit_block(&vec![transfer_to_creator_txn]).await;
let num_leaves_after_return_nft = ctx
.db
- .get_state_leaf_count(ctx.db.get_latest_version().unwrap())
+ .get_state_item_count(ctx.db.get_latest_ledger_info_version().unwrap())
.unwrap();
assert_eq!(
diff --git a/api/src/tests/transactions_test.rs b/api/src/tests/transactions_test.rs
index 6339b30a3d052..82fabded83bab 100644
--- a/api/src/tests/transactions_test.rs
+++ b/api/src/tests/transactions_test.rs
@@ -3,7 +3,9 @@
// SPDX-License-Identifier: Apache-2.0
use super::new_test_context;
-use crate::tests::new_test_context_with_config;
+use crate::tests::{
+ new_test_context_with_config, new_test_context_with_db_sharding_and_internal_indexer,
+};
use aptos_api_test_context::{assert_json, current_function_name, pretty, TestContext};
use aptos_config::config::{GasEstimationStaticOverride, NodeConfig};
use aptos_crypto::{
@@ -11,7 +13,7 @@ use aptos_crypto::{
multi_ed25519::{MultiEd25519PrivateKey, MultiEd25519PublicKey},
PrivateKey, SigningKey, Uniform,
};
-use aptos_sdk::types::LocalAccount;
+use aptos_sdk::types::{AccountKey, LocalAccount};
use aptos_types::{
account_address::AccountAddress,
account_config::aptos_test_root_address,
@@ -750,13 +752,15 @@ async fn test_signing_message_with_payload(
assert_eq!(ledger["ledger_version"].as_str().unwrap(), "3"); // metadata + user txn + state checkpoint
}
-#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
-async fn test_get_account_transactions() {
- let mut context = new_test_context(current_function_name!());
+async fn test_account_transaction_with_context(mut context: TestContext) {
let account = context.gen_account();
let txn = context.create_user_account(&account).await;
context.commit_block(&vec![txn]).await;
+ if let Some(indexer_reader) = context.context.indexer_reader.as_ref() {
+ indexer_reader.wait_for_internal_indexer(2).unwrap();
+ }
+
let txns = context
.get(
format!(
@@ -771,6 +775,15 @@ async fn test_get_account_transactions() {
assert_json(txns, expected_txns);
}
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_get_account_transactions() {
+ let context = new_test_context(current_function_name!());
+ test_account_transaction_with_context(context).await;
+ let shard_context =
+ new_test_context_with_db_sharding_and_internal_indexer(current_function_name!());
+ test_account_transaction_with_context(shard_context).await;
+}
+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn test_get_account_transactions_filter_transactions_by_start_sequence_number() {
let mut context = new_test_context(current_function_name!());
@@ -1504,6 +1517,77 @@ async fn test_simulation_failure_error_message() {
.contains("Division by zero"));
}
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_simulation_failure_with_move_abort_error_rendering() {
+ let mut context = new_test_context(current_function_name!());
+ let account = context.create_account().await;
+ let raw_txn = context
+ .transaction_factory()
+ .entry_function(EntryFunction::new(
+ ModuleId::new(
+ AccountAddress::from_hex_literal("0x1").unwrap(),
+ Identifier::new("aptos_account").unwrap(),
+ ),
+ Identifier::new("transfer").unwrap(),
+ vec![],
+ vec![
+ bcs::to_bytes(&AccountAddress::from_hex_literal("0x1").unwrap()).unwrap(),
+ bcs::to_bytes(&999999999999999999u64).unwrap(),
+ ],
+ ))
+ .sender(account.address())
+ .sequence_number(account.sequence_number())
+ .expiration_timestamp_secs(u64::MAX)
+ .build();
+ let invalid_key = AccountKey::generate(&mut context.rng());
+
+ let txn = raw_txn
+ .sign(invalid_key.private_key(), account.public_key().clone())
+ .unwrap()
+ .into_inner();
+ let body = bcs::to_bytes(&txn).unwrap();
+ let resp = context
+ .expect_status_code(200)
+ .post_bcs_txn("/transactions/simulate", body)
+ .await;
+ context.check_golden_output(resp);
+}
+
+#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
+async fn test_simulation_failure_with_detail_error() {
+ let mut context = new_test_context(current_function_name!());
+ let account = context.root_account().await;
+ let raw_txn = context
+ .transaction_factory()
+ .entry_function(EntryFunction::new(
+ ModuleId::new(
+ AccountAddress::from_hex_literal("0x1").unwrap(),
+ Identifier::new("MemeCoin").unwrap(),
+ ),
+ Identifier::new("transfer").unwrap(),
+ vec![APTOS_COIN_TYPE.clone()],
+ vec![
+ bcs::to_bytes(&AccountAddress::from_hex_literal("0xdd").unwrap()).unwrap(),
+ bcs::to_bytes(&1u64).unwrap(),
+ ],
+ ))
+ .sender(account.address())
+ .sequence_number(account.sequence_number())
+ .expiration_timestamp_secs(u64::MAX)
+ .build();
+ let invalid_key = AccountKey::generate(&mut context.rng());
+ let txn = raw_txn
+ .sign(invalid_key.private_key(), account.public_key().clone())
+ .unwrap()
+ .into_inner();
+ let body = bcs::to_bytes(&txn).unwrap();
+ let resp = context
+ .expect_status_code(200)
+ .post_bcs_txn("/transactions/simulate", body)
+ .await;
+ context.check_golden_output(resp);
+}
+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn test_runtime_error_message_in_interpreter() {
let context = new_test_context(current_function_name!());
diff --git a/api/src/transactions.rs b/api/src/transactions.rs
index 81dcf59a89e36..7a11b73288a41 100644
--- a/api/src/transactions.rs
+++ b/api/src/transactions.rs
@@ -898,7 +898,7 @@ impl TransactionsApi {
state_view
.as_converter(
self.context.db.clone(),
- self.context.table_info_reader.clone(),
+ self.context.indexer_reader.clone(),
)
.try_into_onchain_transaction(timestamp, txn)
.context("Failed to convert on chain transaction to Transaction")
@@ -911,10 +911,7 @@ impl TransactionsApi {
})?
},
TransactionData::Pending(txn) => state_view
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.try_into_pending_transaction(*txn)
.context("Failed to convert on pending transaction to Transaction")
.map_err(|err| {
@@ -989,7 +986,7 @@ impl TransactionsApi {
address: Address,
) -> BasicResultWith404> {
// Verify the account exists
- let account = Account::new(self.context.clone(), address, None, None, None)?;
+ let account = Account::new(self.context.clone(), address, None, None, None, true)?;
account.get_account_resource()?;
let latest_ledger_info = account.latest_ledger_info;
@@ -998,7 +995,7 @@ impl TransactionsApi {
address.into(),
page.start_option(),
page.limit(&latest_ledger_info)?,
- latest_ledger_info.version(),
+ account.ledger_version,
&latest_ledger_info,
)?;
match accept_type {
@@ -1092,10 +1089,7 @@ impl TransactionsApi {
SubmitTransactionPost::Json(data) => self
.context
.latest_state_view_poem(ledger_info)?
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.try_into_signed_transaction_poem(data.0, self.context.chain_id())
.context("Failed to create SignedTransaction from SubmitTransactionRequest")
.map_err(|err| {
@@ -1173,7 +1167,7 @@ impl TransactionsApi {
.enumerate()
.map(|(index, txn)| {
self.context.latest_state_view_poem(ledger_info)?
- .as_converter(self.context.db.clone(), self.context.table_info_reader.clone())
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.try_into_signed_transaction_poem(txn, self.context.chain_id())
.context(format!("Failed to create SignedTransaction from SubmitTransactionRequest at position {}", index))
.map_err(|err| {
@@ -1264,7 +1258,7 @@ impl TransactionsApi {
// We provide the pending transaction so that users have the hash associated
let pending_txn = state_view
- .as_converter(self.context.db.clone(), self.context.table_info_reader.clone())
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.try_into_pending_transaction_poem(txn)
.context("Failed to build PendingTransaction from mempool response, even though it said the request was accepted")
.map_err(|err| SubmitTransactionError::internal_with_code(
@@ -1376,12 +1370,10 @@ impl TransactionsApi {
let version = ledger_info.version();
// Ensure that all known statuses return their values in the output (even if they aren't supposed to)
- let exe_status = match vm_status.clone().keep_or_discard() {
- Ok(kept_vm_status) => kept_vm_status.into(),
- Err(discarded_vm_status) => {
- ExecutionStatus::MiscellaneousError(Some(discarded_vm_status))
- },
- };
+ let exe_status = ExecutionStatus::conmbine_vm_status_for_simulation(
+ output.auxiliary_data(),
+ output.status().clone(),
+ );
let stats_key = match txn.payload() {
TransactionPayload::Script(_) => {
@@ -1443,8 +1435,7 @@ impl TransactionsApi {
let mut user_transactions = Vec::new();
for transaction in transactions.into_iter() {
match transaction {
- Transaction::UserTransaction(user_txn) => {
- let mut txn = *user_txn;
+ Transaction::UserTransaction(mut user_txn) => {
match &vm_status {
VMStatus::Error {
message: Some(msg), ..
@@ -1452,13 +1443,13 @@ impl TransactionsApi {
| VMStatus::ExecutionFailure {
message: Some(msg), ..
} => {
- txn.info.vm_status +=
+ user_txn.info.vm_status +=
format!("\nExecution failed with message: {}", msg)
.as_str();
},
_ => (),
}
- user_transactions.push(txn);
+ user_transactions.push(user_txn);
},
_ => {
return Err(SubmitTransactionError::internal_with_code(
@@ -1500,10 +1491,7 @@ impl TransactionsApi {
let ledger_info = self.context.get_latest_ledger_info()?;
let state_view = self.context.latest_state_view_poem(&ledger_info)?;
let raw_txn: RawTransaction = state_view
- .as_converter(
- self.context.db.clone(),
- self.context.table_info_reader.clone(),
- )
+ .as_converter(self.context.db.clone(), self.context.indexer_reader.clone())
.try_into_raw_transaction_poem(request.transaction, self.context.chain_id())
.context("The given transaction is invalid")
.map_err(|err| {
@@ -1562,7 +1550,7 @@ fn override_gas_parameters(
);
// TODO: Check that signature is null, this would just be helpful for downstream use
- SignedTransaction::new_with_authenticator(raw_txn, signed_txn.authenticator())
+ SignedTransaction::new_signed_transaction(raw_txn, signed_txn.authenticator())
}
enum GetByVersionResponse {
diff --git a/api/src/view_function.rs b/api/src/view_function.rs
index 08335c5e7005a..fa6b31e4f732b 100644
--- a/api/src/view_function.rs
+++ b/api/src/view_function.rs
@@ -95,7 +95,7 @@ fn view_request(
let view_function: ViewFunction = match request {
ViewFunctionRequest::Json(data) => state_view
- .as_converter(context.db.clone(), context.table_info_reader.clone())
+ .as_converter(context.db.clone(), context.indexer_reader.clone())
.convert_view_function(data.0)
.map_err(|err| {
BasicErrorWith404::bad_request_with_code(
@@ -167,7 +167,7 @@ fn view_request(
},
AcceptType::Json => {
let return_types = state_view
- .as_converter(context.db.clone(), context.table_info_reader.clone())
+ .as_converter(context.db.clone(), context.indexer_reader.clone())
.function_return_types(&view_function)
.and_then(|tys| {
tys.into_iter()
@@ -187,7 +187,7 @@ fn view_request(
.zip(return_types.into_iter())
.map(|(v, ty)| {
state_view
- .as_converter(context.db.clone(), context.table_info_reader.clone())
+ .as_converter(context.db.clone(), context.indexer_reader.clone())
.try_into_move_value(&ty, &v)
})
.collect::>>()
diff --git a/api/test-context/Cargo.toml b/api/test-context/Cargo.toml
index 9c4a9e61a8858..db9be88d6dee1 100644
--- a/api/test-context/Cargo.toml
+++ b/api/test-context/Cargo.toml
@@ -23,6 +23,7 @@ aptos-executor = { workspace = true }
aptos-executor-types = { workspace = true }
aptos-framework = { workspace = true }
aptos-genesis = { workspace = true }
+aptos-indexer-grpc-table-info = { workspace = true }
aptos-mempool = { workspace = true, features = ["fuzzing"] }
aptos-mempool-notifications = { workspace = true }
aptos-sdk = { workspace = true }
diff --git a/api/test-context/src/test_context.rs b/api/test-context/src/test_context.rs
index c8786900d73d4..b9f938de52b12 100644
--- a/api/test-context/src/test_context.rs
+++ b/api/test-context/src/test_context.rs
@@ -10,7 +10,7 @@ use aptos_api_types::{
use aptos_cached_packages::aptos_stdlib;
use aptos_config::{
config::{
- NodeConfig, RocksdbConfigs, StorageDirPaths, BUFFERED_STATE_TARGET_ITEMS,
+ NodeConfig, RocksdbConfigs, StorageDirPaths, BUFFERED_STATE_TARGET_ITEMS_FOR_TEST,
DEFAULT_MAX_NUM_NODES_PER_LRU_CACHE_SHARD, NO_OP_STORAGE_PRUNER_CONFIG,
},
keys::ConfigKey,
@@ -20,6 +20,7 @@ use aptos_db::AptosDB;
use aptos_executor::{block_executor::BlockExecutor, db_bootstrapper};
use aptos_executor_types::BlockExecutorTrait;
use aptos_framework::BuiltPackage;
+use aptos_indexer_grpc_table_info::internal_indexer_db_service::MockInternalIndexerDBService;
use aptos_mempool::mocks::MockSharedMempool;
use aptos_mempool_notifications::MempoolNotificationSender;
use aptos_sdk::{
@@ -94,7 +95,7 @@ impl ApiSpecificConfig {
pub fn new_test_context(
test_name: String,
- node_config: NodeConfig,
+ mut node_config: NodeConfig,
use_db_with_indexer: bool,
) -> TestContext {
// Speculative logging uses a global variable and when many instances use it together, they
@@ -119,17 +120,27 @@ pub fn new_test_context(
let validator_owner = validator_identity.account_address.unwrap();
let (db, db_rw) = if use_db_with_indexer {
- DbReaderWriter::wrap(AptosDB::new_for_test_with_indexer(&tmp_dir))
+ DbReaderWriter::wrap(AptosDB::new_for_test_with_indexer(
+ &tmp_dir,
+ node_config.storage.rocksdb_configs.enable_storage_sharding,
+ ))
} else {
DbReaderWriter::wrap(
AptosDB::open(
StorageDirPaths::from_path(&tmp_dir),
false, /* readonly */
NO_OP_STORAGE_PRUNER_CONFIG, /* pruner */
- RocksdbConfigs::default(),
+ RocksdbConfigs {
+ enable_storage_sharding: node_config
+ .storage
+ .rocksdb_configs
+ .enable_storage_sharding,
+ ..Default::default()
+ },
false, /* indexer */
- BUFFERED_STATE_TARGET_ITEMS,
+ BUFFERED_STATE_TARGET_ITEMS_FOR_TEST,
DEFAULT_MAX_NUM_NODES_PER_LRU_CACHE_SHARD,
+ None,
)
.unwrap(),
)
@@ -140,12 +151,18 @@ pub fn new_test_context(
let mempool = MockSharedMempool::new_in_runtime(&db_rw, VMValidator::new(db.clone()));
+ node_config
+ .storage
+ .set_data_dir(tmp_dir.path().to_path_buf());
+ let mock_indexer_service =
+ MockInternalIndexerDBService::new_for_test(db_rw.reader.clone(), &node_config);
+
let context = Context::new(
ChainId::test(),
db.clone(),
mempool.ac_client.clone(),
node_config.clone(),
- None, /* table info reader */
+ mock_indexer_service.get_indexer_reader(),
);
// Configure the testing depending on which API version we're testing.
diff --git a/api/types/Cargo.toml b/api/types/Cargo.toml
index 1ff09c771eed3..4f395c7457dd9 100644
--- a/api/types/Cargo.toml
+++ b/api/types/Cargo.toml
@@ -16,7 +16,6 @@ rust-version = { workspace = true }
anyhow = { workspace = true }
aptos-config = { workspace = true }
aptos-crypto = { workspace = true }
-aptos-db-indexer = { workspace = true }
aptos-framework = { workspace = true }
aptos-logger = { workspace = true }
aptos-openapi = { workspace = true }
diff --git a/api/types/src/bytecode.rs b/api/types/src/bytecode.rs
index 83e6ab0b8d89f..0f9a40e243805 100644
--- a/api/types/src/bytecode.rs
+++ b/api/types/src/bytecode.rs
@@ -46,6 +46,16 @@ pub trait Bytecode {
fn function_is_view(&self, name: &IdentStr) -> bool;
+ fn struct_is_event(&self, name: &IdentStr) -> bool {
+ match self.metadata() {
+ Some(m) => match m.struct_attributes.get(name.as_str()) {
+ Some(attrs) => attrs.iter().any(|attr| attr.is_event()),
+ None => false,
+ },
+ None => false,
+ }
+ }
+
fn new_move_struct_field(&self, def: &FieldDefinition) -> MoveStructField {
MoveStructField {
name: self.identifier_at(def.name).to_owned().into(),
@@ -109,8 +119,13 @@ pub trait Bytecode {
.map(|f| self.new_move_struct_field(f))
.collect(),
),
+ StructFieldInformation::DeclaredVariants(..) => {
+ // TODO(#13806): implement for enums. Currently we pretend they don't have fields
+ (false, vec![])
+ },
};
let name = self.identifier_at(handle.name).to_owned();
+ let is_event = self.struct_is_event(&name);
let abilities = handle
.abilities
.into_iter()
@@ -124,6 +139,7 @@ pub trait Bytecode {
MoveStruct {
name: name.into(),
is_native,
+ is_event,
abilities,
generic_type_params,
fields,
diff --git a/api/types/src/convert.rs b/api/types/src/convert.rs
index 09798fb76a4a5..11fc0aedae6b2 100644
--- a/api/types/src/convert.rs
+++ b/api/types/src/convert.rs
@@ -4,8 +4,8 @@
use crate::{
transaction::{
- DecodedTableData, DeleteModule, DeleteResource, DeleteTableItem, DeletedTableData,
- MultisigPayload, MultisigTransactionPayload, StateCheckpointTransaction,
+ BlockEpilogueTransaction, DecodedTableData, DeleteModule, DeleteResource, DeleteTableItem,
+ DeletedTableData, MultisigPayload, MultisigTransactionPayload, StateCheckpointTransaction,
UserTransactionRequestInner, WriteModule, WriteResource, WriteTableItem,
},
view::{ViewFunction, ViewRequest},
@@ -18,7 +18,6 @@ use crate::{
};
use anyhow::{bail, ensure, format_err, Context as AnyhowContext, Result};
use aptos_crypto::{hash::CryptoHash, HashValue};
-use aptos_db_indexer::table_info_reader::TableInfoReader;
use aptos_logger::{sample, sample::SampleRate};
use aptos_resource_viewer::AptosValueAnnotator;
use aptos_storage_interface::DbReader;
@@ -26,13 +25,15 @@ use aptos_types::{
access_path::{AccessPath, Path},
chain_id::ChainId,
contract_event::{ContractEvent, EventWithVersion},
+ indexer::indexer_db_reader::IndexerReader,
state_store::{
state_key::{inner::StateKeyInner, StateKey},
table::{TableHandle, TableInfo},
StateView,
},
transaction::{
- EntryFunction, ExecutionStatus, Multisig, RawTransaction, Script, SignedTransaction,
+ BlockEndInfo, BlockEpiloguePayload, EntryFunction, ExecutionStatus, Multisig,
+ RawTransaction, Script, SignedTransaction, TransactionAuxiliaryData,
},
vm_status::AbortLocation,
write_set::WriteOp,
@@ -44,6 +45,7 @@ use move_core_types::{
ident_str,
identifier::{IdentStr, Identifier},
language_storage::{ModuleId, StructTag, TypeTag},
+ transaction_argument::convert_txn_args,
value::{MoveStructLayout, MoveTypeLayout},
};
use serde_json::Value;
@@ -65,19 +67,19 @@ const OBJECT_STRUCT: &IdentStr = ident_str!("Object");
pub struct MoveConverter<'a, S> {
inner: AptosValueAnnotator<'a, S>,
db: Arc,
- table_info_reader: Option>,
+ indexer_reader: Option>,
}
impl<'a, S: StateView> MoveConverter<'a, S> {
pub fn new(
inner: &'a S,
db: Arc,
- table_info_reader: Option>,
+ indexer_reader: Option>,
) -> Self {
Self {
inner: AptosValueAnnotator::new(inner),
db,
- table_info_reader,
+ indexer_reader,
}
}
@@ -153,7 +155,10 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
&self,
typ: &StructTag,
bytes: &'_ [u8],
- ) -> Result> {
+ ) -> Result<(
+ Option,
+ Vec<(Identifier, move_core_types::value::MoveValue)>,
+ )> {
self.inner.view_struct_fields(typ, bytes)
}
@@ -175,12 +180,19 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
timestamp: u64,
data: TransactionOnChainData,
) -> Result {
- use aptos_types::transaction::Transaction::*;
+ use aptos_types::transaction::Transaction::{
+ BlockEpilogue, BlockMetadata, BlockMetadataExt, GenesisTransaction, StateCheckpoint,
+ UserTransaction,
+ };
+ let aux_data = self
+ .db
+ .get_transaction_auxiliary_data_by_version(data.version)?;
let info = self.into_transaction_info(
data.version,
&data.info,
data.accumulator_root_hash,
data.changes,
+ aux_data,
);
let events = self.try_into_events(&data.events)?;
Ok(match data.transaction {
@@ -200,7 +212,32 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
timestamp: timestamp.into(),
})
},
- ValidatorTransaction(_txn) => (info, events, timestamp).into(),
+ BlockEpilogue(block_epilogue_payload) => {
+ Transaction::BlockEpilogueTransaction(BlockEpilogueTransaction {
+ info,
+ timestamp: timestamp.into(),
+ block_end_info: match block_epilogue_payload {
+ BlockEpiloguePayload::V0 {
+ block_end_info:
+ BlockEndInfo::V0 {
+ block_gas_limit_reached,
+ block_output_limit_reached,
+ block_effective_block_gas_units,
+ block_approx_output_size,
+ },
+ ..
+ } => Some(crate::transaction::BlockEndInfo {
+ block_gas_limit_reached,
+ block_output_limit_reached,
+ block_effective_block_gas_units,
+ block_approx_output_size,
+ }),
+ },
+ })
+ },
+ aptos_types::transaction::Transaction::ValidatorTransaction(txn) => {
+ Transaction::ValidatorTransaction((txn, info, events, timestamp).into())
+ },
})
}
@@ -210,6 +247,7 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
info: &aptos_types::transaction::TransactionInfo,
accumulator_root_hash: HashValue,
write_set: aptos_types::write_set::WriteSet,
+ txn_aux_data: Option,
) -> TransactionInfo {
TransactionInfo {
version: version.into(),
@@ -219,7 +257,7 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
state_checkpoint_hash: info.state_checkpoint_hash().map(|h| h.into()),
gas_used: info.gas_used().into(),
success: info.status().is_success(),
- vm_status: self.explain_vm_status(info.status()),
+ vm_status: self.explain_vm_status(info.status(), txn_aux_data),
accumulator_root_hash: accumulator_root_hash.into(),
// TODO: the resource value is interpreted by the type definition at the version of the converter, not the version of the tx: must be fixed before we allow module updates
changes: write_set
@@ -238,7 +276,26 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
) -> Result {
use aptos_types::transaction::TransactionPayload::*;
let ret = match payload {
- Script(s) => TransactionPayload::ScriptPayload(s.try_into()?),
+ Script(s) => {
+ let (code, ty_args, args) = s.into_inner();
+ let script_args = self.inner.view_script_arguments(&code, &args, &ty_args);
+
+ let json_args = match script_args {
+ Ok(values) => values
+ .into_iter()
+ .map(|v| MoveValue::try_from(v)?.json())
+ .collect::>()?,
+ Err(_e) => convert_txn_args(&args)
+ .into_iter()
+ .map(|arg| HexEncodedBytes::from(arg).json())
+ .collect::>()?,
+ };
+ TransactionPayload::ScriptPayload(ScriptPayload {
+ code: MoveScriptBytecode::new(code).try_parse_abi(),
+ type_arguments: ty_args.into_iter().map(|arg| arg.into()).collect(),
+ arguments: json_args,
+ })
+ },
EntryFunction(fun) => {
let (module, function, ty_args, args) = fun.into_inner();
let func_args = self
@@ -539,7 +596,7 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
.signature
.clone()
.ok_or_else(|| format_err!("missing signature"))?;
- Ok(SignedTransaction::new_with_authenticator(
+ Ok(SignedTransaction::new_signed_transaction(
self.try_into_raw_transaction(txn, chain_id)?,
signature.try_into()?,
))
@@ -550,7 +607,7 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
submit_transaction_request: SubmitTransactionRequest,
chain_id: ChainId,
) -> Result {
- Ok(SignedTransaction::new_with_authenticator(
+ Ok(SignedTransaction::new_signed_transaction(
self.try_into_raw_transaction_poem(
submit_transaction_request.user_transaction_request,
chain_id,
@@ -953,9 +1010,9 @@ impl<'a, S: StateView> MoveConverter<'a, S> {
}
fn get_table_info(&self, handle: TableHandle) -> Result