diff --git a/.github/.codespellignore b/.github/.codespellignore
new file mode 100644
index 00000000000..a28b2cedab9
--- /dev/null
+++ b/.github/.codespellignore
@@ -0,0 +1,2 @@
+clientA
+connectionA
diff --git a/.github/.misspell-fixer.ignore b/.github/.misspell-fixer.ignore
deleted file mode 100644
index c107fa733bf..00000000000
--- a/.github/.misspell-fixer.ignore
+++ /dev/null
@@ -1 +0,0 @@
-\*.pb.go
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index aadab8b6813..7310f39e4cf 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,52 +1,5 @@
# CODEOWNERS: https://help.github.com/articles/about-codeowners/
-* @AdityaSripal @damiannolan @DimitrisJim @gjermundgaraba
-
-# Our appreciation and gratitude to past code owners: @fedekunze @seantking @tmsdkeys @charleenfei @crodriguezvega @colin-axner @chatton @bznein
-
-# Order is important; the last matching pattern takes the most
-# precedence. When someone opens a pull request that only
-# modifies 27-interchain-accounts files, only the interchain account owners
-# and not the global owner(s) will be requested for a review.
-
-# CODEOWNERS for the CODEOWNER file
-
-/.github/CODEOWNERS @AdityaSripal @damiannolan
-
-# CODEOWNERS for the core IBC module
-
-/modules/core/ @AdityaSripal @damiannolan
-/proto/ibc/core/ @AdityaSripal @damiannolan
-
-# CODEOWNERS for the light-clients
-
-/modules/light-clients/ @AdityaSripal @damiannolan
-/proto/ibc/lightclients/ @AdityaSripal @damiannolan
-
-# CODEOWNERS for 08-wasm light client module
-
-/modules/light-clients/08-wasm/ @AdityaSripal @damiannolan @DimitrisJim @srdtrk
-
-# CODEOWNERS for ICS 20
-
-/modules/apps/transfer/ @AdityaSripal @damiannolan @DimitrisJim
-/proto/ibc/applications/transfer/ @AdityaSripal @damiannolan @DimitrisJim
-
-# CODEOWNERS for interchain-accounts module
-
-/modules/apps/27-interchain-accounts/ @AdityaSripal @damiannolan
-/proto/ibc/applications/interchain_accounts/ @AdityaSripal @damiannolan
-
-# CODEOWNERS for fee module
-
-/modules/apps/29-fee/ @AdityaSripal @damiannolan
-/proto/ibc/applications/fee/ @AdityaSripal @damiannolan
-
-# CODEOWNERS for callbacks middleware
-
-/modules/apps/callbacks/ @AdityaSripal @damiannolan @srdtrk
-
-# CODEOWNERS for docs
-
-/docs/ @AdityaSripal @damiannolan @DimitrisJim @srdtrk
+* @AdityaSripal @gjermundgaraba @srdtrk
+# Our appreciation and gratitude to past code owners: @fedekunze @seantking @tmsdkeys @charleenfei @crodriguezvega @colin-axner @chatton @bznein @DimitrisJim @damiannolan
diff --git a/.github/mergify.yml b/.github/mergify.yml
index 55f367b0b62..0aa2342f75b 100644
--- a/.github/mergify.yml
+++ b/.github/mergify.yml
@@ -46,6 +46,14 @@ pull_request_rules:
backport:
branches:
- 08-wasm/release/v0.3.x+ibc-go-v7.4.x-wasmvm-v1.5.x
+ - name: backport patches to v0.4.x wasm ibc-go v7.4.x & wasmvm 1.5.x branch
+ conditions:
+ - base=main
+ - label=backport-wasm-v0.4.x+ibc-go-v7.4.x-wasmvm-v1.5.x
+ actions:
+ backport:
+ branches:
+ - 08-wasm/release/v0.4.x+ibc-go-v7.4.x-wasmvm-v1.5.x
- name: backport patches to v0.4.x wasm ibc-go v8.4.x & wasmvm 2.0.x branch
conditions:
- base=main
@@ -54,6 +62,14 @@ pull_request_rules:
backport:
branches:
- 08-wasm/release/v0.4.x+ibc-go-v8.4.x-wasmvm-v2.0.x
+ - name: backport patches to v0.5.x wasm ibc-go v8.4.x & wasmvm 2.1.x branch
+ conditions:
+ - base=main
+ - label=backport-wasm-v0.5.x+ibc-go-v8.4.x-wasmvm-v2.1.x
+ actions:
+ backport:
+ branches:
+ - 08-wasm/release/v0.5.x+ibc-go-v8.4.x-wasmvm-v2.1.x
- name: backport patches to v0.5.x wasm ibc-go v9.0.x & wasmvm 2.1.x branch
conditions:
- base=main
diff --git a/.github/workflows/callbacks.yml b/.github/workflows/callbacks.yml
index 990b8d80f44..d4e13cc5316 100644
--- a/.github/workflows/callbacks.yml
+++ b/.github/workflows/callbacks.yml
@@ -17,13 +17,13 @@ jobs:
steps:
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: golangci/golangci-lint-action@v6.1.1
with:
- version: v1.57.2
+ version: v1.62
only-new-issues: true
args: --timeout 5m
working-directory: modules/apps/callbacks
@@ -32,12 +32,12 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- go-arch: ['amd64', 'arm', 'arm64']
+ go-arch: ['amd64', 'arm64']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- name: Build callbacks-module
run: |
cd modules/apps/callbacks
@@ -49,7 +49,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- name: Go Test
run: |
cd modules/apps/callbacks
diff --git a/.github/workflows/discord-notify.yml b/.github/workflows/discord-notify.yml
deleted file mode 100644
index efc8d40559e..00000000000
--- a/.github/workflows/discord-notify.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: Notify Discord on Release
-
-on:
- release:
- types: [published]
-
-jobs:
- notify:
- runs-on: ubuntu-latest
- steps:
- - name: Send Notification to Discord
- uses: Ilshidur/action-discord@2.4.0
- with:
- args: "A new release of ibc-go has been tagged! View it here: ${{ github.event.release.html_url }}"
- webhook: ${{ secrets.DISCORD_WEBHOOK }}
-
diff --git a/.github/workflows/e2e-compatibility-workflow-call.yaml b/.github/workflows/e2e-compatibility-workflow-call.yaml
index 3d794bed9fc..8bd01e6db5d 100644
--- a/.github/workflows/e2e-compatibility-workflow-call.yaml
+++ b/.github/workflows/e2e-compatibility-workflow-call.yaml
@@ -49,7 +49,7 @@ jobs:
repository: cosmos/ibc-go
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
cache-dependency-path: 'e2e/go.sum'
- name: Run e2e Test
run: |
diff --git a/.github/workflows/e2e-fork.yml b/.github/workflows/e2e-fork.yml
index 1347ec5d91a..006f1363e45 100644
--- a/.github/workflows/e2e-fork.yml
+++ b/.github/workflows/e2e-fork.yml
@@ -26,34 +26,14 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- id: set-matrix
run: |
output=$(go run cmd/build_test_matrix/main.go)
echo "matrix=$output" >> $GITHUB_OUTPUT
env:
- TEST_EXCLUSIONS: 'TestUpgradeTestSuite,TestGrandpaTestSuite,TestIBCWasmUpgradeTestSuite'
+ TEST_EXCLUSIONS: 'TestUpgradeTestSuite,TestIBCWasmUpgradeTestSuite'
- # dynamically build a matrix of test/test suite pairs to run
- build-test-matrix-wasm:
- # run this job on forks and copies of ibc-go, for example: a public fork or a private copy of ibc-go.
- if: ${{ github.repository != 'cosmos/ibc-go' || github.event.pull_request.head.repo.fork || github.actor == 'dependabot[bot]' || github.event_name == 'workflow_dispatch' }}
- runs-on: ubuntu-latest
- outputs:
- matrix: ${{ steps.set-matrix.outputs.matrix }}
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-go@v5
- with:
- go-version: '1.22'
- - id: set-matrix
- run: |
- output=$(go run cmd/build_test_matrix/main.go)
- echo "matrix=$output" >> $GITHUB_OUTPUT
- env:
- TEST_ENTRYPOINT: 'TestGrandpaTestSuite'
-
- # e2e-fork runs the e2e tests directly by using a matrix strategy.
e2e-fork:
env:
CHAIN_A_TAG: latest
@@ -75,46 +55,9 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
cache-dependency-path: 'e2e/go.sum'
- name: Run e2e Test
run: |
cd e2e
make e2e-test test=${{ matrix.test }}
-
- # this workflow runs only the wasm tests.
-# e2e-fork-wasm:
-# env:
-# CHAIN_A_TAG: latest
-# CHAIN_B_TAG: latest
-# CHAIN_IMAGE: ibc-go-wasm-simd
-# RELAYER_ID: "hyperspace" # by default use hyperspace relayer for fork wasm tests.
-# FORK: "true"
-# run this job on forks and copies of ibc-go, for example: a public fork or a private copy of ibc-go.
-# if: ${{ github.repository != 'cosmos/ibc-go' || github.event.pull_request.head.repo.fork || github.actor == 'dependabot[bot]' || github.event_name == 'workflow_dispatch' }}
-# needs: build-test-matrix-wasm
-# runs-on: ubuntu-latest
-# strategy:
-# fail-fast: false
-# matrix: ${{ fromJSON(needs.build-test-matrix-wasm.outputs.matrix) }}
-# steps:
-# - uses: actions/checkout@v4
-# - uses: actions/setup-python@v5
-# with:
-# python-version: '3.10'
-# - name: Install dependencies
-# run: make python-install-deps
-# - name: Docker Build Wasm
-# run: |
-# version="$(scripts/get-libwasm-version.py --get-version)"
-# checksum="$(scripts/get-libwasm-version.py --get-checksum)"
-# docker build . -t "${CHAIN_IMAGE}:${CHAIN_A_TAG}" -f modules/light-clients/08-wasm/Dockerfile --build-arg LIBWASM_VERSION=${version} --build-arg LIBWASM_CHECKSUM=${checksum}
-# - name: Setup Go
-# uses: actions/setup-go@v5
-# with:
-# go-version: '1.22'
-# cache-dependency-path: 'e2e/go.sum'
-# - name: Run e2e Test
-# run: |
-# cd e2e
-# make e2e-test test=${{ matrix.test }}
diff --git a/.github/workflows/e2e-manual-wasm-simd.yaml b/.github/workflows/e2e-manual-wasm-simd.yaml
deleted file mode 100644
index 719d120266a..00000000000
--- a/.github/workflows/e2e-manual-wasm-simd.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: Manual WASM E2E (Simd)
-on:
- # when https://github.com/community/community/discussions/11795 is resolved
- # we will be able to dynamically build up the list of valid inputs.
- # for now this needs to be manual.
- workflow_dispatch:
- inputs:
- test-entry-point:
- description: 'Test entry point'
- required: true
- type: choice
- options:
- - TestGrandpaTestSuite
- chain-image:
- description: 'The image to use for chain A'
- required: true
- type: string
- default: "ghcr.io/cosmos/ibc-go-wasm-simd"
- chain-binary:
- description: 'Specify the chain binary to be used'
- required: true
- type: string
- default: "simd"
- chain-tag:
- description: 'Specify tag for the simapp'
- required: true
- type: string
-
-jobs:
- e2e-manual-wasm:
- uses: ./.github/workflows/e2e-test-workflow-call.yml
- with:
- chain-image: "${{ github.event.inputs.chain-image }}"
- chain-a-tag: "${{ github.event.inputs.chain-tag }}"
- chain-b-tag: "${{ github.event.inputs.chain-tag }}"
- test-entry-point: "${{ github.event.inputs.test-entry-point }}"
- chain-binary: "${{ github.event.inputs.chain-binary }}"
- relayer-type: "hyperspace"
diff --git a/.github/workflows/e2e-test-workflow-call.yml b/.github/workflows/e2e-test-workflow-call.yml
index 937218f4f34..5ce0ff99a3d 100644
--- a/.github/workflows/e2e-test-workflow-call.yml
+++ b/.github/workflows/e2e-test-workflow-call.yml
@@ -181,7 +181,7 @@ jobs:
repository: cosmos/ibc-go
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- id: set-matrix
run: |
output=$(go run cmd/build_test_matrix/main.go)
@@ -215,7 +215,7 @@ jobs:
repository: cosmos/ibc-go
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
cache-dependency-path: 'e2e/go.sum'
- name: Run e2e Test
id: e2e_test
@@ -264,7 +264,7 @@ jobs:
repository: cosmos/ibc-go
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
cache-dependency-path: 'e2e/go.sum'
- name: Run e2e Test
id: e2e_test
@@ -278,4 +278,4 @@ jobs:
with:
name: '${{ matrix.entrypoint }}-${{ matrix.test }}'
path: e2e/diagnostics
- retention-days: 5
\ No newline at end of file
+ retention-days: 5
diff --git a/.github/workflows/e2e-wasm.yaml b/.github/workflows/e2e-wasm.yaml
deleted file mode 100644
index 91252bf3da5..00000000000
--- a/.github/workflows/e2e-wasm.yaml
+++ /dev/null
@@ -1,71 +0,0 @@
-# The Tests / E2E Wasm workflow is used to run end-to-end tests on pull requests originating
-# from the ibc-go repository. The workflow specifically runs 08-wasm tests.
-name: Tests / E2E Wasm
-on:
- workflow_dispatch:
- pull_request:
- paths:
- - 'e2e/tests/wasm/**' # the e2e tests or contracts change.
- - 'modules/light-clients/08-wasm/**' # modifications to the 08-wasm module.
- - 'modules/core/02-client/**' # modifications to the 02-client module.
- - '.github/workflows/e2e-wasm.yaml' # changes to this workflow.
- types:
- # trigger workflow if PR is opened directly as R4R.
- - opened
- # trigger workflow if changes are pushed to the branch.
- - synchronize
- # trigger workflow if PR is marked ready for review.
- - ready_for_review
-
-# cancel workflows if a new one is triggered on the same branch.
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
-
-jobs:
- # determine-image-tag will either output the PR number e.g. pr-1234 or the string main.
- # this will be used to tag the images that are built during the workflow.
- determine-image-tag:
- if: ${{ !github.event.pull_request.draft && !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
- runs-on: ubuntu-latest
- outputs:
- simd-tag: ${{ steps.get-tag.outputs.simd-tag }}
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-go@v5
- with:
- go-version: '1.22'
- - id: get-tag
- run: |
- if [ -z "${{ github.event.pull_request.number }}" ]
- then
- echo "simd-tag=main" >> $GITHUB_OUTPUT
- else
- tag="pr-${{ github.event.pull_request.number }}"
- echo "Using tag $tag"
- echo "simd-tag=$tag" >> $GITHUB_OUTPUT
- fi
-
- # e2e generates the e2e tests for the non-forked PRs. It does so by using the
- # e2e-test-workflow-call.yml each test runs the jobs defined in that file.
- e2e:
- # we will be running this job if the PR has not yet been marked for review, and we push additional changes.
- # we skip the job in this case.
- if: ${{ !github.event.pull_request.draft && !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }}
- needs: determine-image-tag # we are required to have a docker tag before we can build any images.
- uses: ./.github/workflows/e2e-test-workflow-call.yml
- # unless we explicitly tell the workflow to inherit secrets, required secrets such as GITHUB_TOKEN will not be
- # provided to the workflow. This would cause privileged operations to fail.
- secrets: inherit
- with:
- # with each test, we build an image from the current code.
- build-and-push-docker-image-wasm: true
- # if the test fails, we upload logs so that we can download them from the UI.
- upload-logs: true
- # with regular tests, both images are the same.
- chain-a-tag: '${{ needs.determine-image-tag.outputs.simd-tag }}'
- chain-b-tag: '${{ needs.determine-image-tag.outputs.simd-tag }}'
- # only run the grandpa test suite for wasm tests.
- test-entry-point: 'TestGrandpaTestSuite'
- # exclude transfer tests which rely on removed packet event attributes: # https://github.com/cosmos/ibc-go/issues/6243
- test-exclusions: 'TestMsgTransfer_Succeeds_GrandpaContract,TestMsgTransfer_TimesOut_GrandpaContract'
diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml
index 8b8a0300a8f..731a142df95 100644
--- a/.github/workflows/e2e.yaml
+++ b/.github/workflows/e2e.yaml
@@ -33,7 +33,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- id: get-tag
run: |
if [ -z "${{ github.event.pull_request.number }}" ]
@@ -66,5 +66,5 @@ jobs:
chain-b-tag: '${{ needs.determine-image-tag.outputs.simd-tag }}'
# on regular PRs we won't run upgrade tests.
# NOTE: we are exluding TestTransferTestSuite as we run this full suite instead of each individual test.
- test-exclusions: 'TestUpgradeTestSuite,TestGrandpaTestSuite,TestIBCWasmUpgradeTestSuite,TestTransferTestSuite,TestAuthzTransferTestSuite,TestTransferTestSuiteSendReceive,TestTransferTestSuiteSendEnabled,TestTransferLocalhostTestSuite,TestConnectionTestSuite,TestInterchainAccountsGovTestSuite,TestIncentivizedTransferTestSuite,TestTransferForwardingTestSuite'
+ test-exclusions: 'TestUpgradeTestSuite,TestIBCWasmUpgradeTestSuite,TestTransferTestSuite,TestAuthzTransferTestSuite,TestTransferTestSuiteSendReceive,TestTransferTestSuiteSendEnabled,TestTransferLocalhostTestSuite,TestConnectionTestSuite,TestInterchainAccountsGovTestSuite,TestIncentivizedTransferTestSuite,TestTransferForwardingTestSuite'
temp-run-full-suite: true
diff --git a/.github/workflows/e2emodule.yml b/.github/workflows/e2emodule.yml
index 2cd7501c7dd..0a39029ac76 100644
--- a/.github/workflows/e2emodule.yml
+++ b/.github/workflows/e2emodule.yml
@@ -17,14 +17,14 @@ jobs:
steps:
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
cache-dependency-path: 'e2e/go.sum'
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: golangci/golangci-lint-action@v6.1.1
with:
- version: v1.57.2
+ version: v1.62
only-new-issues: true
args: --timeout 5m
working-directory: e2e/
@@ -35,7 +35,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
cache-dependency-path: 'e2e/go.sum'
- name: Go Test
run: |
diff --git a/.github/workflows/golangci-feature.yml b/.github/workflows/golangci-feature.yml
index 3a2947a7abd..f66d2ddb1ba 100644
--- a/.github/workflows/golangci-feature.yml
+++ b/.github/workflows/golangci-feature.yml
@@ -22,13 +22,13 @@ jobs:
steps:
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: golangci-lint
uses: golangci/golangci-lint-action@v6.1.1
with:
- version: v1.57.2
+ version: v1.62
only-new-issues: true
args: --timeout 10m
diff --git a/.github/workflows/golangci.yml b/.github/workflows/golangci.yml
index 455439b7ebd..1e22051640e 100644
--- a/.github/workflows/golangci.yml
+++ b/.github/workflows/golangci.yml
@@ -18,13 +18,13 @@ jobs:
steps:
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: golangci-lint
uses: golangci/golangci-lint-action@v6.1.1
with:
- version: v1.57.2
+ version: v1.62
only-new-issues: true
args: --timeout 10m
diff --git a/.github/workflows/proto-registry.yml b/.github/workflows/proto-registry.yml
index 621f5d11088..4f544088352 100644
--- a/.github/workflows/proto-registry.yml
+++ b/.github/workflows/proto-registry.yml
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: bufbuild/buf-setup-action@v1.47.2
+ - uses: bufbuild/buf-setup-action@v1.48.0
- uses: bufbuild/buf-push-action@v1
with:
input: "proto"
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 6475401cfc8..524f98d6657 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -11,27 +11,6 @@ env:
IMAGE_NAME: ibc-go-simd
jobs:
- goreleaser:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - uses: actions/setup-go@v5
- with:
- go-version: '1.22'
-
- - name: Release
- uses: goreleaser/goreleaser-action@v6
- if: startsWith(github.ref, 'refs/tags/')
- with:
- version: latest
- args: release --rm-dist
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
publish-docker-image:
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/slack-notify.yaml b/.github/workflows/slack-notify.yaml
deleted file mode 100644
index e57ee00e701..00000000000
--- a/.github/workflows/slack-notify.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-# This re-usable workflow file will trigger a Slack notification on the channel configure via the Webhook URL.
-# It currently comments a number of fields, but you can add or remove them as you see fit.
-#
-# To configure a Slack Webhook URL, follow the instructions here: https://api.slack.com/messaging/webhooks
-on:
- workflow_call:
-
-jobs:
- slack-notify:
- runs-on: ubuntu-latest
- steps:
- - uses: 8398a7/action-slack@v3
- with:
- status: 'failure'
- fields: repo,message,commit,author,action,eventName,ref,workflow,job,took,pullRequest
- env:
- SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
\ No newline at end of file
diff --git a/.github/workflows/spell-checker.yml b/.github/workflows/spell-checker.yml
index 4e000a07a0e..e2399eaa619 100644
--- a/.github/workflows/spell-checker.yml
+++ b/.github/workflows/spell-checker.yml
@@ -1,9 +1,14 @@
-name: Fix typos nightly
+name: Spell Check
on:
- workflow_dispatch: {} # enable manual running of workflow.
+ workflow_dispatch:
+ pull_request:
schedule:
- - cron: "0 8 * * *"
+ - cron: "0 12 * * *"
+
+permissions:
+ contents: write
+ pull-requests: write
jobs:
build:
@@ -11,15 +16,22 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: sobolevn/misspell-fixer-action@26173e641ba08255d0c9826b8a873f8b96f76932
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+ - name: Install codespell
+ run: pip install codespell
+ - name: Run codespell
+ continue-on-error: true
+ run: codespell -w --skip="*.pb.go,*.pb.gw.go,*.json,*.git,*.js,*.h,*.bin,go.sum,go.mod,.github,*.pdf,*.tla" --ignore-words=.github/.codespellignore
- uses: peter-evans/create-pull-request@v7
+ if: github.event_name != 'pull_request'
with:
- token: ${{ secrets.GITHUB_TOKEN }}
- commit-message: "chore: fixes by misspell-fixer"
- title: "chore: typos fix by misspell-fixer"
+ commit-message: "chore: spelling errors fixes"
+ title: "chore: fix spelling errors"
branch: "bot/fix-typos"
delete-branch: true
body: |
This PR fixes typos in the codebase.
- Please, review it and merge if everything is fine.
- If there are proto changes, please, run `make proto-all` and commit changes.
+ Please review it, and merge if everything is fine.
+ If there are proto changes, run `make proto-all` and commit the changes.
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 7e4ca3a92ac..efef5e8aae3 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -26,7 +26,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- uses: technote-space/get-diff-action@v6.1.2
id: git_diff
with:
@@ -58,7 +58,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- name: Create a file with all the pkgs
run: go list ./... | grep -v e2e > pkgs.txt
- name: Split pkgs into 4 files
@@ -92,7 +92,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- uses: technote-space/get-diff-action@v6.1.2
with:
PATTERNS: |
diff --git a/.github/workflows/wasm-client.yml b/.github/workflows/wasm-client.yml
index 343b0408bd8..1bf2349b160 100644
--- a/.github/workflows/wasm-client.yml
+++ b/.github/workflows/wasm-client.yml
@@ -16,13 +16,13 @@ jobs:
steps:
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: golangci/golangci-lint-action@v6.1.1
with:
- version: v1.57.2
+ version: v1.62
only-new-issues: true
args: --timeout 10m
working-directory: modules/light-clients/08-wasm
@@ -36,7 +36,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
# Install cross compiler for ARM64. Export CC env variable.
- name: Install compiler for arm64.
run: |
@@ -55,7 +55,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
- go-version: '1.22'
+ go-version: '1.23'
- name: Go Test
run: |
cd modules/light-clients/08-wasm
diff --git a/.golangci.yml b/.golangci.yml
index 8b9c5d6b8b6..f65b69e4489 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -16,25 +16,26 @@ linters:
- ineffassign
- misspell
- nakedret
+ - revive
- staticcheck
- - thelper
- - typecheck
- stylecheck
- - revive
- - typecheck
- tenv
+ - thelper
+ - typecheck
- unconvert
# Prefer unparam over revive's unused param. It is more thorough in its checking.
- unparam
- unused
- - misspell
issues:
exclude-rules:
- - text: 'differs only by capitalization to method'
+ - text: "differs only by capitalization to method"
linters:
- revive
- - text: 'Use of weak random number generator'
+ - text: "Use of weak random number generator"
+ linters:
+ - gosec
+ - text: "G115: integer overflow conversion"
linters:
- gosec
- linters:
@@ -59,11 +60,25 @@ linters-settings:
- prefix(github.com/cometbft/cometbft)
- prefix(github.com/cosmos/ibc-go)
custom-order: true
+ gocritic:
+ disabled-checks:
+ - appendAssign
+ gosec:
+ # Available rules: https://github.com/securego/gosec#available-rules
+ excludes:
+ - G101 # Potential hardcoded credentials
+ - G107 # Potential HTTP request made with variable url
+ - G115 # Integer overflow conversion (used everywhere with int64 -> uint64 block height)
+ - G404 # Use of weak random number generator (math/rand instead of crypto/rand)
+ exclude-generated: true
+ confidence: medium
revive:
enable-all-rules: true
# Do NOT whine about the following, full explanation found in:
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#description-of-available-rules
rules:
+ - name: redundant-import-alias
+ disabled: true
- name: use-any
disabled: true
- name: if-return
@@ -112,7 +127,7 @@ linters-settings:
- name: unhandled-error
disabled: false
arguments:
- - 'fmt.Printf'
- - 'fmt.Print'
- - 'fmt.Println'
- - 'myFunction'
+ - "fmt.Printf"
+ - "fmt.Print"
+ - "fmt.Println"
+ - "myFunction"
diff --git a/.goreleaser.yml b/.goreleaser.yml
deleted file mode 100644
index 63ecd8822e7..00000000000
--- a/.goreleaser.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-before:
- hooks:
- - go mod tidy
-
-builds:
- - main: ./testing/simapp/simd/main.go
- binary: simd
- flags:
- - -tags=netgo ledger
- - -mod=readonly
- ldflags:
- - -s -w -X github.com/cosmos/cosmos-sdk/version.Name=sim -X github.com/cosmos/cosmos-sdk/version.AppName=simd -X github.com/cosmos/cosmos-sdk/version.Version={{.Version}} -X "github.com/cosmos/cosmos-sdk/version.BuildTags=netgo,ledger"
- env:
- - CGO_ENABLED=0
- goos:
- - linux
- - windows
- - darwin
- # for goarch use defaults: 386, amd64 and arm64.
-
-checksum:
- name_template: SHA256SUMS-{{.Version}}.txt
- algorithm: sha256
-
-release:
- mode: keep-existing
- prerelease: auto
-
-archives:
- - name_template: "{{ .ProjectName }}_simd_v{{ .Version }}_{{ .Os }}_{{ .Arch }}"
- files:
- - LICENSE
- - README.md
- - RELEASES.md
- - SECURITY.md
- - CHANGELOG.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7dc23f363cf..e015e31562b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -43,10 +43,12 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Dependencies
-* [\#7540](https://github.com/cosmos/ibc-go/pull/7540) Bump CometBFT to v0.38.15.
+* [\#7261](https://github.com/cosmos/ibc-go/pull/7261) Bump CometBFT to v1.0.0.
+* [\#7261](https://github.com/cosmos/ibc-go/pull/7261) Bump Cosmos SDK to v0.52.0.
### API Breaking
+* (apps/27-interchain-accounts) [\#7713](https://github.com/cosmos/ibc-go/pull/7713) Update interchain accounts `GenerateAddress` func to now accept `header.Info` in favour of `sdk.Context`. This function now uses `AppHash` and `Hash` (merkle root of block) instead of `AppHash` and `DataHash` as pre-image data for address generation.
* (core, apps) [\#7213](https://github.com/cosmos/ibc-go/pull/7213) Remove capabilities from `SendPacket`.
* (core, apps) [\#7213](https://github.com/cosmos/ibc-go/pull/7225) Remove capabilities from `WriteAcknowledgement`.
* (core, apps) [\#7232](https://github.com/cosmos/ibc-go/pull/7232) Remove capabilities from channel handshake methods. TODO list all changes
@@ -64,8 +66,12 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Improvements
+* (testing)[\#7430](https://github.com/cosmos/ibc-go/pull/7430) Update the block proposer in test chains for each block.
+
### Features
+* (apps/transfer) [\#7650](https://github.com/cosmos/ibc-go/pull/7650) Add support for transfer of entire balance for vesting accounts
+
### Bug Fixes
* (apps/27-interchain-accounts) [\#7277](https://github.com/cosmos/ibc-go/pull/7277) Use `GogoResolver` when populating module query safe allow list to avoid panics from unresolvable protobuf dependencies.
@@ -182,7 +188,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Improvements
-* (apps/27-interchain-accounts, apps/tranfer, apps/29-fee) [\#6253](https://github.com/cosmos/ibc-go/pull/6253) Allow channel handshake to succeed if fee middleware is wired up on one side, but not the other.
+* (apps/27-interchain-accounts, apps/transfer, apps/29-fee) [\#6253](https://github.com/cosmos/ibc-go/pull/6253) Allow channel handshake to succeed if fee middleware is wired up on one side, but not the other.
* (apps/27-interchain-accounts) [\#6251](https://github.com/cosmos/ibc-go/pull/6251) Use `UNORDERED` as the default ordering for new ICA channels.
* (apps/transfer) [\#6268](https://github.com/cosmos/ibc-go/pull/6268) Use memo strings instead of JSON keys in `AllowedPacketData` of transfer authorization.
* (core/ante) [\#6278](https://github.com/cosmos/ibc-go/pull/6278) Performance: Exclude pruning from tendermint client updates in ante handler executions.
@@ -396,7 +402,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (apps/27-interchain-accounts) [\#6147](https://github.com/cosmos/ibc-go/pull/6147) Emit an event signalling that the host submodule is disabled.
* (testing) [\#6180](https://github.com/cosmos/ibc-go/pull/6180) Add version to tm abci headers in ibctesting.
-* (apps/27-interchain-accounts, apps/tranfer, apps/29-fee) [\#6253](https://github.com/cosmos/ibc-go/pull/6253) Allow channel handshake to succeed if fee middleware is wired up on one side, but not the other.
+* (apps/27-interchain-accounts, apps/transfer, apps/29-fee) [\#6253](https://github.com/cosmos/ibc-go/pull/6253) Allow channel handshake to succeed if fee middleware is wired up on one side, but not the other.
* (apps/transfer) [\#6268](https://github.com/cosmos/ibc-go/pull/6268) Use memo strings instead of JSON keys in `AllowedPacketData` of transfer authorization.
### Features
diff --git a/Dockerfile b/Dockerfile
index 8bd834b815a..9c66ac32456 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,7 @@
-FROM golang:1.22-alpine3.20 as builder
+FROM golang:1.23.4-alpine as builder
ARG IBC_GO_VERSION
-RUN set -eux; apk add --no-cache git libusb-dev linux-headers gcc musl-dev make;
+RUN set -eux; apk add --no-cache gcc git libusb-dev linux-headers make musl-dev;
ENV GOPATH=""
diff --git a/docs/architecture/adr-015-ibc-packet-receiver.md b/docs/architecture/adr-015-ibc-packet-receiver.md
index 591694ba3b8..3fbe090ce94 100644
--- a/docs/architecture/adr-015-ibc-packet-receiver.md
+++ b/docs/architecture/adr-015-ibc-packet-receiver.md
@@ -295,5 +295,5 @@ Proposed
## References
-- Relevant comment: [cosmos/ics#289](https://github.com/cosmos/ics/issues/289#issuecomment-544533583)
+- Relevant comment: [cosmos/ics#289](https://github.com/cosmos/ibc/issues/289#issuecomment-544533583)
- [ICS26 - Routing Module](https://github.com/cosmos/ibc/tree/master/spec/core/ics-026-routing-module)
diff --git a/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md b/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md
index 2c295ad9ae7..efad623b5c9 100644
--- a/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md
+++ b/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md
@@ -84,7 +84,7 @@ No neutral consequences.
## References
-- [Prior discussion](https://github.com/cosmos/ics/issues/421)
-- [Epoch number discussion](https://github.com/cosmos/ics/issues/439)
-- [Upgrade plan discussion](https://github.com/cosmos/ics/issues/445)
+- [Prior discussion](https://github.com/cosmos/ibc/issues/421)
+- [Epoch number discussion](https://github.com/cosmos/ibc/issues/439)
+- [Upgrade plan discussion](https://github.com/cosmos/ibc/issues/445)
- [Migration from gov v1beta1 to gov v1](https://github.com/cosmos/ibc-go/issues/3672)
diff --git a/docs/client/swagger-ui/swagger.yaml b/docs/client/swagger-ui/swagger.yaml
index b9e05109883..26fac55c9c3 100644
--- a/docs/client/swagger-ui/swagger.yaml
+++ b/docs/client/swagger-ui/swagger.yaml
@@ -593,7 +593,9 @@ paths:
- Query
/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets:
get:
- summary: Gets all incentivized packets for a specific channel
+ summary: >-
+ IncentivizedPacketsForChannel retrieves all incentivized packets for a
+ specific channel
operationId: IncentivizedPacketsForChannel
responses:
'200':
diff --git a/docs/dev/release-management.md b/docs/dev/release-management.md
index 246f1bd3ea3..668e85a7c5c 100644
--- a/docs/dev/release-management.md
+++ b/docs/dev/release-management.md
@@ -70,7 +70,6 @@ Additionally, for the first point release of a new major or minor release branch
- Update the table of supported release lines (and End of Life dates) in [`RELEASES.md`](../../RELEASES.md): add the new release line and remove any release lines that might have become discontinued.
- Update the [list of supported release lines in README.md](../../RELEASES.md#releases), if necessary.
-- Update the [e2e compatibility test matrices](https://github.com/cosmos/ibc-go/tree/main/.github/compatibility-test-matrices): add the tag for the new release and remove any tags that might not be recommended anymore.
- Update the manual [e2e `simd`](https://github.com/cosmos/ibc-go/blob/main/.github/workflows/e2e-manual-simd.yaml) test workflow:
- Remove any tags that might not be recommended anymore.
- Update docs site:
diff --git a/docs/docs/01-ibc/01-overview.md b/docs/docs/01-ibc/01-overview.md
index d2918a09519..504a0c4039d 100644
--- a/docs/docs/01-ibc/01-overview.md
+++ b/docs/docs/01-ibc/01-overview.md
@@ -157,7 +157,7 @@ under the path and a proof to the counterparty chain.
Proofs are passed from core IBC to light clients as bytes. It is up to light client implementations to interpret these bytes appropriately.
- The paths that all IBC implementations must use for committing IBC messages is defined in
-[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).
+[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
- The proof format that all implementations must be able to produce and verify is defined in [ICS-23 Proofs](https://github.com/cosmos/ics23) implementation.
### [Ports](https://github.com/cosmos/ibc-go/blob/main/modules/core/05-port)
diff --git a/docs/docs/01-ibc/02-integration.md b/docs/docs/01-ibc/02-integration.md
index def03102de0..4a2a771590d 100644
--- a/docs/docs/01-ibc/02-integration.md
+++ b/docs/docs/01-ibc/02-integration.md
@@ -255,7 +255,7 @@ app.ModuleManager = module.NewManager(
### Application ABCI ordering
-One addition from IBC is the concept of `HistoricalInfo` which is stored in the Cosmos SDK `x/staking` module. The number of records stored by `x/staking` is controlled by the `HistoricalEntries` parameter which stores `HistoricalInfo` on a per height basis.
+One addition from IBC is the concept of `HistoricalInfo` which is stored in the Cosmos SDK `x/staking` module. The number of records stored by `x/staking` is controlled by the `HistoricalEntries` parameter which stores `HistoricalInfo` on a per-height basis.
Each entry contains the historical information for the `Header` and `ValidatorSet` of this chain which is stored
at each height during the `BeginBlock` call. The `HistoricalInfo` is required to introspect a blockchain's prior state at a given height in order to verify the light client `ConsensusState` during the
connection handshake.
diff --git a/docs/docs/01-ibc/05-upgrades/00-intro.md b/docs/docs/01-ibc/05-upgrades/00-intro.md
index 61711d35f01..d9b8ef25fae 100644
--- a/docs/docs/01-ibc/05-upgrades/00-intro.md
+++ b/docs/docs/01-ibc/05-upgrades/00-intro.md
@@ -9,7 +9,7 @@ slug: /ibc/upgrades/intro
This directory contains information on how to upgrade an IBC chain without breaking counterparty clients and connections.
-IBC-connected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform a IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
+IBC-connected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform an IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
1. The [quick-guide](./01-quick-guide.md) describes how IBC-connected chains can perform client-breaking upgrades and how relayers can securely upgrade counterparty clients using the SDK.
2. The [developer-guide](./02-developer-guide.md) is a guide for developers intending to develop IBC client implementations with upgrade functionality.
diff --git a/docs/docs/02-apps/01-transfer/09-client.md b/docs/docs/02-apps/01-transfer/09-client.md
index 3ba88e6dfc1..80c3910b3de 100644
--- a/docs/docs/02-apps/01-transfer/09-client.md
+++ b/docs/docs/02-apps/01-transfer/09-client.md
@@ -41,8 +41,8 @@ of amount and denomination (e.g. `100uatom,100uosmo`) in the `coins` option.
The additional flags that can be used with the command are:
- `--packet-timeout-height` to specify the timeout block height in the format `{revision}-{height}`. The default value is `0-0`, which effectively disables the timeout. Timeout height can only be absolute, therefore this option must be used in combination with `--absolute-timeouts` set to true.
-- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (fromthe current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
-- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout timeout is considered relative to current UTC time).
+- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (from the current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
+- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout is considered relative to current UTC time).
- `--memo` to specify the memo string to be sent along with the transfer packet. If forwarding is used, then the memo string will be carried through the intermediary chains to the final destination.
- `--forwarding` to specify forwarding information in the form of a comma separated list of source port ID/channel ID pairs at each intermediary chain (e.g. `transfer/channel-0,transfer/channel-1`).
- `--unwind` to specify if the tokens must be automatically unwound to there origin chain. This option can be used in combination with `--forwarding` to forward the tokens to the final destination after unwinding. When this flag is true, the tokens specified in the `coins` option must all have the same denomination trace path (i.e. all tokens must be IBC vouchers sharing exactly the same set of destination port/channel IDs in their denomination trace path). Arguments `[src-port]` and `[src-channel]` must not be passed if the `--unwind` flag is specified.
diff --git a/docs/docs/02-apps/01-transfer/10-ICS20-v1/09-client.md b/docs/docs/02-apps/01-transfer/10-ICS20-v1/09-client.md
index 20d8c2f10a0..2634673adca 100644
--- a/docs/docs/02-apps/01-transfer/10-ICS20-v1/09-client.md
+++ b/docs/docs/02-apps/01-transfer/10-ICS20-v1/09-client.md
@@ -44,8 +44,8 @@ The `coins` parameter accepts the amount and denomination (e.g. `100uatom`) of t
The additional flags that can be used with the command are:
- `--packet-timeout-height` to specify the timeout block height in the format `{revision}-{height}`. The default value is `0-0`, which effectively disables the timeout. Timeout height can only be absolute, therefore this option must be used in combination with `--absolute-timeouts` set to true.
-- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (fromthe current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
-- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout timeout is considered relative to current UTC time).
+- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (from the current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
+- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout is considered relative to current UTC time).
- `--memo` to specify the memo string to be sent along with the transfer packet. If forwarding is used, then the memo string will be carried through the intermediary chains to the final destination.
#### `total-escrow`
diff --git a/docs/docs/03-light-clients/01-developer-guide/09-setup.md b/docs/docs/03-light-clients/01-developer-guide/09-setup.md
index 23ced3cf80a..4952a4ccc3d 100644
--- a/docs/docs/03-light-clients/01-developer-guide/09-setup.md
+++ b/docs/docs/03-light-clients/01-developer-guide/09-setup.md
@@ -44,7 +44,7 @@ func (AppModuleBasic) RegisterLegacyAminoCodec(*codec.LegacyAmino) {}
// RegisterInterfaces registers module concrete types into protobuf Any. This allows core IBC
// to unmarshal tendermint light client types.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func (AppModuleBasic) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
RegisterInterfaces(registry)
}
diff --git a/docs/docs/03-light-clients/04-wasm/05-governance.md b/docs/docs/03-light-clients/04-wasm/05-governance.md
index 19a0df5d6fb..2e2bd67d175 100644
--- a/docs/docs/03-light-clients/04-wasm/05-governance.md
+++ b/docs/docs/03-light-clients/04-wasm/05-governance.md
@@ -19,7 +19,7 @@ import (
...
"github.com/cosmos/cosmos-sdk/runtime"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
+ govtypes "cosmossdk.io/x/gov/types"
ibcwasmkeeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper"
ibcwasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
diff --git a/docs/docs/04-middleware/02-callbacks/01-overview.md b/docs/docs/04-middleware/02-callbacks/01-overview.md
index eae194b2b96..6dce7ed4759 100644
--- a/docs/docs/04-middleware/02-callbacks/01-overview.md
+++ b/docs/docs/04-middleware/02-callbacks/01-overview.md
@@ -51,5 +51,5 @@ And the following diagram shows how a typical `SendPacket` and `WriteAcknowledge
- The receive packet callback does not pass IBC Actor's address, this is because the IBC Actor lives in the counterparty chain and cannot be trusted.
:::warning
-If the callbacks middleware wraps the transfer application, we strongly discourage the usage of source callbacks if [`MsgTransfer` includes forwarding information](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L54-L55) (which is only supported from ICS20 v2). Source callback information will be executed on the last hop before the destination chain, not on the sending chain. The explanation for this behaviour is that, if the tokens are routed through intermediary chains, then the transfer application on the sending chain will construct a packet data where the [`memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L38) is empty, and any [memo string](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L51) included in `MsgTransfer` is placed in the [`destination_memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L48). This makes it impossible to trigger the source callbacks on the sending chain, since the memo string is not available in the `memo` field. Then, on the chain before the final destination chain, the transfer application will construct the packet data with the memo string back in the `memo` field, so that it can be consumed by the callbacks middleware on the destination chain. However, if the `memo` field of `FungibleTokenPacketDataV2` is not empty on the chain before the final destination and the transfer application on that chain is wrapped by callbacks middleware, then the source callbacks would be triggered. Therefore, in order to prevent this unexpected behaviour (i.e. source callbacks triggered not on sending chain, but on the intermediary chain before the final destination) we are strongly recommeding to not include source callbacks information in the `memo` field of `MsgTransfer`.
+If the callbacks middleware wraps the transfer application, we strongly discourage the usage of source callbacks if [`MsgTransfer` includes forwarding information](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L54-L55) (which is only supported from ICS20 v2). Source callback information will be executed on the last hop before the destination chain, not on the sending chain. The explanation for this behaviour is that, if the tokens are routed through intermediary chains, then the transfer application on the sending chain will construct a packet data where the [`memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L38) is empty, and any [memo string](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L51) included in `MsgTransfer` is placed in the [`destination_memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L48). This makes it impossible to trigger the source callbacks on the sending chain, since the memo string is not available in the `memo` field. Then, on the chain before the final destination chain, the transfer application will construct the packet data with the memo string back in the `memo` field, so that it can be consumed by the callbacks middleware on the destination chain. However, if the `memo` field of `FungibleTokenPacketDataV2` is not empty on the chain before the final destination and the transfer application on that chain is wrapped by callbacks middleware, then the source callbacks would be triggered. Therefore, in order to prevent this unexpected behaviour (i.e. source callbacks triggered not on sending chain, but on the intermediary chain before the final destination) we are strongly recommending to not include source callbacks information in the `memo` field of `MsgTransfer`.
:::
diff --git a/docs/docs/05-migrations/06-v4-to-v5.md b/docs/docs/05-migrations/06-v4-to-v5.md
index c5e8c84db1c..1fafb3fc3a1 100644
--- a/docs/docs/05-migrations/06-v4-to-v5.md
+++ b/docs/docs/05-migrations/06-v4-to-v5.md
@@ -336,7 +336,7 @@ The `MockEmptyAcknowledgement` type has been renamed to `EmptyAcknowledgement` (
The `TestingApp` interface in `testing` has gone through some modifications:
-- The return type of the function `GetStakingKeeper` is not the concrete type `stakingkeeper.Keeper` anymore (where `stakingkeeper` is an import alias for `"github.com/cosmos/cosmos-sdk/x/staking/keeper"`), but it has been changed to the interface `ibctestingtypes.StakingKeeper` (where `ibctestingtypes` is an import alias for `""github.com/cosmos/ibc-go/v5/testing/types"`). See this [PR](https://github.com/cosmos/ibc-go/pull/2028) for more details. The `StakingKeeper` interface is defined as:
+- The return type of the function `GetStakingKeeper` is not the concrete type `stakingkeeper.Keeper` anymore (where `stakingkeeper` is an import alias for `"cosmossdk.io/x/staking/keeper"`), but it has been changed to the interface `ibctestingtypes.StakingKeeper` (where `ibctestingtypes` is an import alias for `""github.com/cosmos/ibc-go/v5/testing/types"`). See this [PR](https://github.com/cosmos/ibc-go/pull/2028) for more details. The `StakingKeeper` interface is defined as:
```go
type StakingKeeper interface {
diff --git a/docs/docs/05-migrations/07-v5-to-v6.md b/docs/docs/05-migrations/07-v5-to-v6.md
index 4fc777e6cd9..f2e77604fab 100644
--- a/docs/docs/05-migrations/07-v5-to-v6.md
+++ b/docs/docs/05-migrations/07-v5-to-v6.md
@@ -198,10 +198,10 @@ func DefaultParams() Params {
`SerializeCosmosTx` takes in a `[]proto.Message` instead of `[]sdk.Message`. This allows for the serialization of proto messages without requiring the fulfillment of the `sdk.Msg` interface.
-The `27-interchain-accounts` genesis types have been moved to their own package: `modules/apps/27-interchain-acccounts/genesis/types`.
+The `27-interchain-accounts` genesis types have been moved to their own package: `modules/apps/27-interchain-accounts/genesis/types`.
This change facilitates the addition of the ICS27 controller submodule `MsgServer` and avoids cyclic imports. This should have minimal disruption to chain developers integrating `27-interchain-accounts`.
-The ICS27 host submodule `NewKeeper` function in `modules/apps/27-interchain-acccounts/host/keeper` now includes an additional parameter of type `ICS4Wrapper`.
+The ICS27 host submodule `NewKeeper` function in `modules/apps/27-interchain-accounts/host/keeper` now includes an additional parameter of type `ICS4Wrapper`.
This provides the host submodule with the ability to correctly unwrap channel versions in the event of a channel reopening handshake.
```diff
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index e953a05c3c8..ce3178bd125 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -353,19 +353,19 @@ const config = {
scripts: [
{
src: "https://widget.kapa.ai/kapa-widget.bundle.js",
- "data-website-id": "806aa1dc-0d46-4563-a8b8-880eecac59f1",
+ "data-website-id": "33cd677e-ea9e-437e-a3c1-dbacbe03afc1",
"data-project-name": "Interchain",
"data-user-analytics-fingerprint-enabled": "true",
"data-project-color": "#1878FF",
"data-modal-title": "IBC Docs AI",
- "data-modal-disclaimer": "This is a custom LLM for the Inter-Blockchain Communication Protocol in Golang (ibc-go). It is trained on the IBC developer documentation, code base, and resources. Answers are AI-generated. Please use your best judgment before implementing. The bot is not trained on documentation, code, or resources for the Cosmos SDK, CometBFT, CosmJS, CosmWasm, or interchain ecosystem blockchains. Please refer to those specific documentation sites for answers to those questions.",
+ "data-modal-disclaimer": "This is a custom LLM for the Interchain Stack with access to developer documentation and resources across the core Cosmos components. Please note that answers are generated by an AI so please use your best judgement before implementing.",
"data-modal-ask-ai-input-placeholder": "Ask me a question about IBC...",
"data-modal-disclaimer-text-color": "#000000",
"data-modal-disclaimer-font-size": "14px",
"data-modal-image":
"/img/black-ibc-logo-400x400.svg",
"data-project-logo":
- "/img/white-ibc-logo-400x400.svg",
+ "/img/spirograph-white.svg",
async: true,
},
],
diff --git a/docs/static/img/spirograph-white.svg b/docs/static/img/spirograph-white.svg
new file mode 100644
index 00000000000..f4957303261
--- /dev/null
+++ b/docs/static/img/spirograph-white.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/tutorials/01-fee/04-wire-feeibc-mod.md b/docs/tutorials/01-fee/04-wire-feeibc-mod.md
index 0329fecd1a8..5513285f127 100644
--- a/docs/tutorials/01-fee/04-wire-feeibc-mod.md
+++ b/docs/tutorials/01-fee/04-wire-feeibc-mod.md
@@ -60,6 +60,7 @@ Next, we need to add `fee` module to the module basic manager and define its acc
stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
govtypes.ModuleName: {authtypes.Burner},
+ pooltypes.ModuleName: nil,
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
// plus-diff-line
+ ibcfeetypes.ModuleName: nil,
diff --git a/docs/tutorials/02-channel-upgrades/06-incentivize-packet.md b/docs/tutorials/02-channel-upgrades/06-incentivize-packet.md
index 49139fde97f..ef766ad6e2e 100644
--- a/docs/tutorials/02-channel-upgrades/06-incentivize-packet.md
+++ b/docs/tutorials/02-channel-upgrades/06-incentivize-packet.md
@@ -30,7 +30,7 @@ simd q ibc-fee counterparty-payee channel-0 $RLY_CHAIN2 --node http://localhost:
counterparty_payee: cosmos1vdy5fp0jy2l2ees870a7mls357v7uad6ufzcyz
```
-We see that the counterparty payee address matches what we expected (i.e. the `RLY_CHAIN1` address). In this tutorial we are going to send only one packet from chain `chain1` to chain `chain2`, so we only need to register the counterparty payee on chain `chain2`. In real life circumstances relayers relay packets on both directions (i.e. from chain `chain1` to `chain2` and also viceversa), and thus relayers should register as well on chain `chain1` the counterparty payee address to be compensated for delivering the `MsgRecvPacket` on chain `chain1`.
+We see that the counterparty payee address matches what we expected (i.e. the `RLY_CHAIN1` address). In this tutorial we are going to send only one packet from chain `chain1` to chain `chain2`, so we only need to register the counterparty payee on chain `chain2`. In real life circumstances relayers relay packets on both directions (i.e. from chain `chain1` to `chain2` and also vice-versa), and thus relayers should register as well on chain `chain1` the counterparty payee address to be compensated for delivering the `MsgRecvPacket` on chain `chain1`.
## Multi-message transaction with single `MsgPayPacketFee` message
diff --git a/docs/versioned_docs/version-v4.6.x/01-ibc/01-overview.md b/docs/versioned_docs/version-v4.6.x/01-ibc/01-overview.md
index 3bb823536d6..a804002a2e7 100644
--- a/docs/versioned_docs/version-v4.6.x/01-ibc/01-overview.md
+++ b/docs/versioned_docs/version-v4.6.x/01-ibc/01-overview.md
@@ -137,7 +137,7 @@ under the path and a proof to the counterparty chain.
Proofs are passed from core IBC to light-clients as bytes. It is up to light client implementation to interpret these bytes appropriately.
- The paths that all IBC implementations must use for committing IBC messages is defined in
-[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).
+[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
- The proof format that all implementations must be able to produce and verify is defined in [ICS-23 Proofs](https://github.com/confio/ics23) implementation.
### [Capabilities](https://github.com/cosmos/cosmos-sdk/blob/main/docs/learn/advanced/10-ocap.md)
diff --git a/docs/versioned_docs/version-v4.6.x/01-ibc/05-upgrades/00-intro.md b/docs/versioned_docs/version-v4.6.x/01-ibc/05-upgrades/00-intro.md
index 3ff92aba64f..8d2b85c6f30 100644
--- a/docs/versioned_docs/version-v4.6.x/01-ibc/05-upgrades/00-intro.md
+++ b/docs/versioned_docs/version-v4.6.x/01-ibc/05-upgrades/00-intro.md
@@ -9,7 +9,7 @@ slug: /ibc/upgrades/intro
This directory contains information on how to upgrade an IBC chain without breaking counterparty clients and connections.
-IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform a IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
+IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform an IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
1. The [quick-guide](./01-quick-guide.md) describes how IBC-connected chains can perform client-breaking upgrades and how relayers can securely upgrade counterparty clients using the SDK.
2. The [developer-guide](./02-developer-guide.md) is a guide for developers intending to develop IBC client implementations with upgrade functionality.
diff --git a/docs/versioned_docs/version-v4.6.x/04-migrations/05-v3-to-v4.md b/docs/versioned_docs/version-v4.6.x/04-migrations/05-v3-to-v4.md
index d916ec51252..958c6bd1328 100644
--- a/docs/versioned_docs/version-v4.6.x/04-migrations/05-v3-to-v4.md
+++ b/docs/versioned_docs/version-v4.6.x/04-migrations/05-v3-to-v4.md
@@ -41,7 +41,7 @@ where `icaAuthIBCModule` is the Interchain Accounts authentication IBC Module.
The Fee Middleware module, as the name suggests, plays the role of an IBC middleware and as such must be configured by chain developers to route and handle IBC messages correctly.
-Please read the Fee Middleware [integration documentation](../03-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to congfigure the module correctly in order to incentivize IBC packets.
+Please read the Fee Middleware [integration documentation](../03-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to configure the module correctly in order to incentivize IBC packets.
Take a look at the following diff for an [example setup](https://github.com/cosmos/ibc-go/pull/1432/files#diff-d18972debee5e64f16e40807b2ae112ddbe609504a93ea5e1c80a5d489c3a08aL366) of how to incentivize ics27 channels.
diff --git a/docs/versioned_docs/version-v5.4.x/01-ibc/01-overview.md b/docs/versioned_docs/version-v5.4.x/01-ibc/01-overview.md
index 3bb823536d6..a804002a2e7 100644
--- a/docs/versioned_docs/version-v5.4.x/01-ibc/01-overview.md
+++ b/docs/versioned_docs/version-v5.4.x/01-ibc/01-overview.md
@@ -137,7 +137,7 @@ under the path and a proof to the counterparty chain.
Proofs are passed from core IBC to light-clients as bytes. It is up to light client implementation to interpret these bytes appropriately.
- The paths that all IBC implementations must use for committing IBC messages is defined in
-[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).
+[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
- The proof format that all implementations must be able to produce and verify is defined in [ICS-23 Proofs](https://github.com/confio/ics23) implementation.
### [Capabilities](https://github.com/cosmos/cosmos-sdk/blob/main/docs/learn/advanced/10-ocap.md)
diff --git a/docs/versioned_docs/version-v5.4.x/01-ibc/05-upgrades/00-intro.md b/docs/versioned_docs/version-v5.4.x/01-ibc/05-upgrades/00-intro.md
index 14c82d3ff0d..4fd3f740ca7 100644
--- a/docs/versioned_docs/version-v5.4.x/01-ibc/05-upgrades/00-intro.md
+++ b/docs/versioned_docs/version-v5.4.x/01-ibc/05-upgrades/00-intro.md
@@ -2,7 +2,7 @@
This directory contains information on how to upgrade an IBC chain without breaking counterparty clients and connections.
-IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform a IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
+IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform an IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
1. The [quick-guide](./01-quick-guide.md) describes how IBC-connected chains can perform client-breaking upgrades and how relayers can securely upgrade counterparty clients using the SDK.
2. The [developer-guide](./02-developer-guide.md) is a guide for developers intending to develop IBC client implementations with upgrade functionality.
diff --git a/docs/versioned_docs/version-v5.4.x/01-ibc/09-roadmap.md b/docs/versioned_docs/version-v5.4.x/01-ibc/09-roadmap.md
index 7204f09dc3c..7d3392ed5ba 100644
--- a/docs/versioned_docs/version-v5.4.x/01-ibc/09-roadmap.md
+++ b/docs/versioned_docs/version-v5.4.x/01-ibc/09-roadmap.md
@@ -7,7 +7,7 @@ slug: /roadmap/roadmap
# Roadmap ibc-go
-*Lastest update: July 7, 2022*
+*Latest update: July 7, 2022*
This document endeavours to inform the wider IBC community about plans and priorities for work on ibc-go by the team at Interchain GmbH. It is intended to broadly inform all users of ibc-go, including developers and operators of IBC, relayer, chain and wallet applications.
diff --git a/docs/versioned_docs/version-v5.4.x/04-migrations/05-v3-to-v4.md b/docs/versioned_docs/version-v5.4.x/04-migrations/05-v3-to-v4.md
index d916ec51252..958c6bd1328 100644
--- a/docs/versioned_docs/version-v5.4.x/04-migrations/05-v3-to-v4.md
+++ b/docs/versioned_docs/version-v5.4.x/04-migrations/05-v3-to-v4.md
@@ -41,7 +41,7 @@ where `icaAuthIBCModule` is the Interchain Accounts authentication IBC Module.
The Fee Middleware module, as the name suggests, plays the role of an IBC middleware and as such must be configured by chain developers to route and handle IBC messages correctly.
-Please read the Fee Middleware [integration documentation](../03-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to congfigure the module correctly in order to incentivize IBC packets.
+Please read the Fee Middleware [integration documentation](../03-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to configure the module correctly in order to incentivize IBC packets.
Take a look at the following diff for an [example setup](https://github.com/cosmos/ibc-go/pull/1432/files#diff-d18972debee5e64f16e40807b2ae112ddbe609504a93ea5e1c80a5d489c3a08aL366) of how to incentivize ics27 channels.
diff --git a/docs/versioned_docs/version-v6.3.x/01-ibc/01-overview.md b/docs/versioned_docs/version-v6.3.x/01-ibc/01-overview.md
index 3bb823536d6..a804002a2e7 100644
--- a/docs/versioned_docs/version-v6.3.x/01-ibc/01-overview.md
+++ b/docs/versioned_docs/version-v6.3.x/01-ibc/01-overview.md
@@ -137,7 +137,7 @@ under the path and a proof to the counterparty chain.
Proofs are passed from core IBC to light-clients as bytes. It is up to light client implementation to interpret these bytes appropriately.
- The paths that all IBC implementations must use for committing IBC messages is defined in
-[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).
+[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
- The proof format that all implementations must be able to produce and verify is defined in [ICS-23 Proofs](https://github.com/confio/ics23) implementation.
### [Capabilities](https://github.com/cosmos/cosmos-sdk/blob/main/docs/learn/advanced/10-ocap.md)
diff --git a/docs/versioned_docs/version-v6.3.x/01-ibc/05-upgrades/00-intro.md b/docs/versioned_docs/version-v6.3.x/01-ibc/05-upgrades/00-intro.md
index 3ff92aba64f..8d2b85c6f30 100644
--- a/docs/versioned_docs/version-v6.3.x/01-ibc/05-upgrades/00-intro.md
+++ b/docs/versioned_docs/version-v6.3.x/01-ibc/05-upgrades/00-intro.md
@@ -9,7 +9,7 @@ slug: /ibc/upgrades/intro
This directory contains information on how to upgrade an IBC chain without breaking counterparty clients and connections.
-IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform a IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
+IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform an IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
1. The [quick-guide](./01-quick-guide.md) describes how IBC-connected chains can perform client-breaking upgrades and how relayers can securely upgrade counterparty clients using the SDK.
2. The [developer-guide](./02-developer-guide.md) is a guide for developers intending to develop IBC client implementations with upgrade functionality.
diff --git a/docs/versioned_docs/version-v6.3.x/01-ibc/09-roadmap.md b/docs/versioned_docs/version-v6.3.x/01-ibc/09-roadmap.md
index 7204f09dc3c..7d3392ed5ba 100644
--- a/docs/versioned_docs/version-v6.3.x/01-ibc/09-roadmap.md
+++ b/docs/versioned_docs/version-v6.3.x/01-ibc/09-roadmap.md
@@ -7,7 +7,7 @@ slug: /roadmap/roadmap
# Roadmap ibc-go
-*Lastest update: July 7, 2022*
+*Latest update: July 7, 2022*
This document endeavours to inform the wider IBC community about plans and priorities for work on ibc-go by the team at Interchain GmbH. It is intended to broadly inform all users of ibc-go, including developers and operators of IBC, relayer, chain and wallet applications.
diff --git a/docs/versioned_docs/version-v6.3.x/04-migrations/05-v3-to-v4.md b/docs/versioned_docs/version-v6.3.x/04-migrations/05-v3-to-v4.md
index d916ec51252..ce5db2233d9 100644
--- a/docs/versioned_docs/version-v6.3.x/04-migrations/05-v3-to-v4.md
+++ b/docs/versioned_docs/version-v6.3.x/04-migrations/05-v3-to-v4.md
@@ -41,7 +41,7 @@ where `icaAuthIBCModule` is the Interchain Accounts authentication IBC Module.
The Fee Middleware module, as the name suggests, plays the role of an IBC middleware and as such must be configured by chain developers to route and handle IBC messages correctly.
-Please read the Fee Middleware [integration documentation](../03-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to congfigure the module correctly in order to incentivize IBC packets.
+Please read the Fee Middleware [integration documentation](../03-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to configure the module correctly in order to incentivize IBC packets.
Take a look at the following diff for an [example setup](https://github.com/cosmos/ibc-go/pull/1432/files#diff-d18972debee5e64f16e40807b2ae112ddbe609504a93ea5e1c80a5d489c3a08aL366) of how to incentivize ics27 channels.
@@ -157,4 +157,4 @@ if err := k.icaControllerKeeper.RegisterInterchainAccount(ctx, msg.ConnectionId,
When using the `DenomTrace` gRPC, the full IBC denomination with the `ibc/` prefix may now be passed in.
-Crossing hellos are no longer supported by core IBC for 03-connection and 04-channel. The handshake should be completed in the logical 4 step process (INIT, TRY, ACK, CONFIRM).
+Crossing hellos are no longer supported by core IBC for 03-connection and 04-channel. The handshake should be completed in the logical 4-step process (INIT, TRY, ACK, CONFIRM).
diff --git a/docs/versioned_docs/version-v7.8.x/01-ibc/01-overview.md b/docs/versioned_docs/version-v7.8.x/01-ibc/01-overview.md
index 637508f6359..33a152c3624 100644
--- a/docs/versioned_docs/version-v7.8.x/01-ibc/01-overview.md
+++ b/docs/versioned_docs/version-v7.8.x/01-ibc/01-overview.md
@@ -137,7 +137,7 @@ under the path and a proof to the counterparty chain.
Proofs are passed from core IBC to light-clients as bytes. It is up to light client implementation to interpret these bytes appropriately.
- The paths that all IBC implementations must use for committing IBC messages is defined in
-[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).
+[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
- The proof format that all implementations must be able to produce and verify is defined in [ICS-23 Proofs](https://github.com/cosmos/ics23) implementation.
### [Capabilities](https://github.com/cosmos/cosmos-sdk/blob/main/docs/learn/advanced/10-ocap.md)
diff --git a/docs/versioned_docs/version-v7.8.x/01-ibc/02-integration.md b/docs/versioned_docs/version-v7.8.x/01-ibc/02-integration.md
index f82ee31405c..c15f58da404 100644
--- a/docs/versioned_docs/version-v7.8.x/01-ibc/02-integration.md
+++ b/docs/versioned_docs/version-v7.8.x/01-ibc/02-integration.md
@@ -47,7 +47,7 @@ The following code example shows how to register the existing `ibctm.AppModuleBa
import (
...
-+ ibctm "github.com/cosmos/ibc-go/v6/modules/light-clients/07-tendermint"
++ ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
...
)
diff --git a/docs/versioned_docs/version-v7.8.x/01-ibc/05-upgrades/00-intro.md b/docs/versioned_docs/version-v7.8.x/01-ibc/05-upgrades/00-intro.md
index d97ac898277..3b979ea9c9f 100644
--- a/docs/versioned_docs/version-v7.8.x/01-ibc/05-upgrades/00-intro.md
+++ b/docs/versioned_docs/version-v7.8.x/01-ibc/05-upgrades/00-intro.md
@@ -9,7 +9,7 @@ slug: /ibc/upgrades/intro
This directory contains information on how to upgrade an IBC chain without breaking counterparty clients and connections.
-IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform a IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
+IBC-connnected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform an IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
1. The [quick-guide](./01-quick-guide.md) describes how IBC-connected chains can perform client-breaking upgrades and how relayers can securely upgrade counterparty clients using the SDK.
2. The [developer-guide](./02-developer-guide.md) is a guide for developers intending to develop IBC client implementations with upgrade functionality.
diff --git a/docs/versioned_docs/version-v7.8.x/01-ibc/09-roadmap.md b/docs/versioned_docs/version-v7.8.x/01-ibc/09-roadmap.md
index 94fa7e376ef..12f580b4df2 100644
--- a/docs/versioned_docs/version-v7.8.x/01-ibc/09-roadmap.md
+++ b/docs/versioned_docs/version-v7.8.x/01-ibc/09-roadmap.md
@@ -7,7 +7,7 @@ slug: /roadmap/roadmap
# Roadmap ibc-go
-*Lastest update: December 21st, 2022*
+*Latest update: December 21st, 2022*
This document endeavours to inform the wider IBC community about plans and priorities for work on ibc-go by the team at Interchain GmbH. It is intended to broadly inform all users of ibc-go, including developers and operators of IBC, relayer, chain and wallet applications.
diff --git a/docs/versioned_docs/version-v7.8.x/05-migrations/05-v3-to-v4.md b/docs/versioned_docs/version-v7.8.x/05-migrations/05-v3-to-v4.md
index 0c6f5fa35e5..60cc1c924eb 100644
--- a/docs/versioned_docs/version-v7.8.x/05-migrations/05-v3-to-v4.md
+++ b/docs/versioned_docs/version-v7.8.x/05-migrations/05-v3-to-v4.md
@@ -41,7 +41,7 @@ where `icaAuthIBCModule` is the Interchain Accounts authentication IBC Module.
The Fee Middleware module, as the name suggests, plays the role of an IBC middleware and as such must be configured by chain developers to route and handle IBC messages correctly.
-Please read the Fee Middleware [integration documentation](../04-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to congfigure the module correctly in order to incentivize IBC packets.
+Please read the Fee Middleware [integration documentation](../04-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to configure the module correctly in order to incentivize IBC packets.
Take a look at the following diff for an [example setup](https://github.com/cosmos/ibc-go/pull/1432/files#diff-d18972debee5e64f16e40807b2ae112ddbe609504a93ea5e1c80a5d489c3a08aL366) of how to incentivize ics27 channels.
diff --git a/docs/versioned_docs/version-v8.5.x/00-intro.md b/docs/versioned_docs/version-v8.5.x/00-intro.md
index 7f4a09fb1af..a21bdf40058 100644
--- a/docs/versioned_docs/version-v8.5.x/00-intro.md
+++ b/docs/versioned_docs/version-v8.5.x/00-intro.md
@@ -27,7 +27,7 @@ IBC provides a reliable, permissionless, and generic base layer (allowing for th
- **IBC/TAO** comprises the Transport, Authentication, and Ordering of packets, i.e. the infrastructure layer.
- **IBC/APP** consists of the application handlers for the data packets being passed over the transport layer. These include but are not limited to fungible token transfers (ICS-20), NFT transfers (ICS-721), and interchain accounts (ICS-27).
-- **Application module:** groups any application, middleware or smart contract that may wrap downsteam application handlers to provide enhanced functionality.
+- **Application module:** groups any application, middleware or smart contract that may wrap downstream application handlers to provide enhanced functionality.
Note three crucial elements in the diagram:
diff --git a/docs/versioned_docs/version-v8.5.x/01-ibc/01-overview.md b/docs/versioned_docs/version-v8.5.x/01-ibc/01-overview.md
index 62673d6c171..e0bf581dea4 100644
--- a/docs/versioned_docs/version-v8.5.x/01-ibc/01-overview.md
+++ b/docs/versioned_docs/version-v8.5.x/01-ibc/01-overview.md
@@ -157,7 +157,7 @@ under the path and a proof to the counterparty chain.
Proofs are passed from core IBC to light-clients as bytes. It is up to light client implementation to interpret these bytes appropriately.
- The paths that all IBC implementations must use for committing IBC messages is defined in
-[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).
+[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
- The proof format that all implementations must be able to produce and verify is defined in [ICS-23 Proofs](https://github.com/cosmos/ics23) implementation.
### [Capabilities](https://github.com/cosmos/cosmos-sdk/blob/main/docs/learn/advanced/10-ocap.md)
diff --git a/docs/versioned_docs/version-v8.5.x/01-ibc/02-integration.md b/docs/versioned_docs/version-v8.5.x/01-ibc/02-integration.md
index 5a3ea531ae1..7468c45907e 100644
--- a/docs/versioned_docs/version-v8.5.x/01-ibc/02-integration.md
+++ b/docs/versioned_docs/version-v8.5.x/01-ibc/02-integration.md
@@ -46,7 +46,7 @@ The following code example shows how to register the existing `ibctm.AppModuleBa
import (
...
// highlight-next-line
-+ ibctm "github.com/cosmos/ibc-go/v6/modules/light-clients/07-tendermint"
++ ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint"
...
)
diff --git a/docs/versioned_docs/version-v8.5.x/01-ibc/05-upgrades/00-intro.md b/docs/versioned_docs/version-v8.5.x/01-ibc/05-upgrades/00-intro.md
index 61711d35f01..d9b8ef25fae 100644
--- a/docs/versioned_docs/version-v8.5.x/01-ibc/05-upgrades/00-intro.md
+++ b/docs/versioned_docs/version-v8.5.x/01-ibc/05-upgrades/00-intro.md
@@ -9,7 +9,7 @@ slug: /ibc/upgrades/intro
This directory contains information on how to upgrade an IBC chain without breaking counterparty clients and connections.
-IBC-connected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform a IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
+IBC-connected chains must be able to upgrade without breaking connections to other chains. Otherwise there would be a massive disincentive towards upgrading and disrupting high-value IBC connections, thus preventing chains in the IBC ecosystem from evolving and improving. Many chain upgrades may be irrelevant to IBC, however some upgrades could potentially break counterparty clients if not handled correctly. Thus, any IBC chain that wishes to perform an IBC-client-breaking upgrade must perform an IBC upgrade in order to allow counterparty clients to securely upgrade to the new light client.
1. The [quick-guide](./01-quick-guide.md) describes how IBC-connected chains can perform client-breaking upgrades and how relayers can securely upgrade counterparty clients using the SDK.
2. The [developer-guide](./02-developer-guide.md) is a guide for developers intending to develop IBC client implementations with upgrade functionality.
diff --git a/docs/versioned_docs/version-v8.5.x/01-ibc/06-channel-upgrades.md b/docs/versioned_docs/version-v8.5.x/01-ibc/06-channel-upgrades.md
index 841d11f42fd..e8e7df83efd 100644
--- a/docs/versioned_docs/version-v8.5.x/01-ibc/06-channel-upgrades.md
+++ b/docs/versioned_docs/version-v8.5.x/01-ibc/06-channel-upgrades.md
@@ -132,7 +132,7 @@ type Channel struct {
This will also set the upgrade timeout for the counterparty (i.e. the timeout before which the counterparty chain must move from `FLUSHING` to `FLUSHCOMPLETE`; if it doesn't then the chain will cancel the upgrade and write an error receipt). The timeout is a relative time duration in nanoseconds that can be changed with `MsgUpdateParams` and by default is 10 minutes.
-The state will change to `FLUSHCOMPLETE` once there are no in-flight packets left and the channel end is ready to move to `OPEN`. This flush state will also have an impact on how a channel ugrade can be cancelled, as detailed below.
+The state will change to `FLUSHCOMPLETE` once there are no in-flight packets left and the channel end is ready to move to `OPEN`. This flush state will also have an impact on how a channel upgrade can be cancelled, as detailed below.
All other parameters will remain the same during the upgrade handshake until the upgrade handshake completes. When the channel is reset to `OPEN` on a successful upgrade handshake, the relevant fields on the channel end will be switched over to the `UpgradeFields` specified in the upgrade.
diff --git a/docs/versioned_docs/version-v8.5.x/01-ibc/10-roadmap.md b/docs/versioned_docs/version-v8.5.x/01-ibc/10-roadmap.md
index 962108bbde7..0ebf3ea6f51 100644
--- a/docs/versioned_docs/version-v8.5.x/01-ibc/10-roadmap.md
+++ b/docs/versioned_docs/version-v8.5.x/01-ibc/10-roadmap.md
@@ -33,7 +33,7 @@ Follow the progress with the [alpha milestone](https://github.com/cosmos/ibc-go/
### Conditional clients
-Conditional clients are light clients which are dependent on another client in order to verify or update state. Conditional clients are essential for integration with modular blockchains which break up consensus and state management, such as rollups. Currently, light clients receive a single provable store they maintain. There is an unidirectional communication channel with 02-client: the 02-client module will call into the light client, without allowing for the light client to call into the 02-client module. But modular blockchains break up a logical blockchain into many constituent parts, so in order to accurately represent these chains and also to account for various types of shared security primitives that are coming up, we need to introduce dependencies between clients. In the case of optimistic rollups, for example, in order to prove execution (allowing for fraud proofs), you must prove data availability and sequencing. A potential solution to this problem is that a light client may optionally specify a list of dependencies and the 02-client module would lookup read-only provable stores for each dependency and provide this to the conditional client to perform verification. Please see [this issue](https://github.com/cosmos/ibc-go/issues/5112) for more details.
+Conditional clients are light clients which are dependent on another client in order to verify or update state. Conditional clients are essential for integration with modular blockchains which break up consensus and state management, such as rollups. Currently, light clients receive a single provable store they maintain. There is a unidirectional communication channel with 02-client: the 02-client module will call into the light client, without allowing for the light client to call into the 02-client module. But modular blockchains break up a logical blockchain into many constituent parts, so in order to accurately represent these chains and also to account for various types of shared security primitives that are coming up, we need to introduce dependencies between clients. In the case of optimistic rollups, for example, in order to prove execution (allowing for fraud proofs), you must prove data availability and sequencing. A potential solution to this problem is that a light client may optionally specify a list of dependencies and the 02-client module would lookup read-only provable stores for each dependency and provide this to the conditional client to perform verification. Please see [this issue](https://github.com/cosmos/ibc-go/issues/5112) for more details.
## v10.0.0
diff --git a/docs/versioned_docs/version-v8.5.x/03-light-clients/02-localhost/03-client-state.md b/docs/versioned_docs/version-v8.5.x/03-light-clients/02-localhost/03-client-state.md
index 19e03b62aa9..bb2cbe2e248 100644
--- a/docs/versioned_docs/version-v8.5.x/03-light-clients/02-localhost/03-client-state.md
+++ b/docs/versioned_docs/version-v8.5.x/03-light-clients/02-localhost/03-client-state.md
@@ -33,7 +33,7 @@ It is possible to disable the localhost client by removing the `09-localhost` en
The latest height is updated periodically through the ABCI [`BeginBlock`](https://docs.cosmos.network/v0.47/building-modules/beginblock-endblock) interface of the 02-client submodule in core IBC.
-[See `BeginBlocker` in abci.go.](https://github.com/cosmos/ibc-go/blob/09-localhost/modules/core/02-client/abci.go#L12)
+[See `BeginBlocker` in abci.go.](https://github.com/cosmos/ibc-go/blob/v8.5.0/modules/core/02-client/abci.go#L12)
```go
func BeginBlocker(ctx sdk.Context, k keeper.Keeper) {
diff --git a/docs/versioned_docs/version-v8.5.x/05-migrations/05-v3-to-v4.md b/docs/versioned_docs/version-v8.5.x/05-migrations/05-v3-to-v4.md
index 6707286eadc..091e11375ef 100644
--- a/docs/versioned_docs/version-v8.5.x/05-migrations/05-v3-to-v4.md
+++ b/docs/versioned_docs/version-v8.5.x/05-migrations/05-v3-to-v4.md
@@ -41,7 +41,7 @@ where `icaAuthIBCModule` is the Interchain Accounts authentication IBC Module.
The Fee Middleware module, as the name suggests, plays the role of an IBC middleware and as such must be configured by chain developers to route and handle IBC messages correctly.
-Please read the Fee Middleware [integration documentation](../04-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to congfigure the module correctly in order to incentivize IBC packets.
+Please read the Fee Middleware [integration documentation](../04-middleware/01-ics29-fee/02-integration.md) for an in depth guide on how to configure the module correctly in order to incentivize IBC packets.
Take a look at the following diff for an [example setup](https://github.com/cosmos/ibc-go/pull/1432/files#diff-d18972debee5e64f16e40807b2ae112ddbe609504a93ea5e1c80a5d489c3a08aL366) of how to incentivize ics27 channels.
diff --git a/docs/versioned_docs/version-v9.0.x/01-ibc/01-overview.md b/docs/versioned_docs/version-v9.0.x/01-ibc/01-overview.md
index d2918a09519..504a0c4039d 100644
--- a/docs/versioned_docs/version-v9.0.x/01-ibc/01-overview.md
+++ b/docs/versioned_docs/version-v9.0.x/01-ibc/01-overview.md
@@ -157,7 +157,7 @@ under the path and a proof to the counterparty chain.
Proofs are passed from core IBC to light clients as bytes. It is up to light client implementations to interpret these bytes appropriately.
- The paths that all IBC implementations must use for committing IBC messages is defined in
-[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).
+[ICS-24 Host State Machine Requirements](https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
- The proof format that all implementations must be able to produce and verify is defined in [ICS-23 Proofs](https://github.com/cosmos/ics23) implementation.
### [Ports](https://github.com/cosmos/ibc-go/blob/main/modules/core/05-port)
diff --git a/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/09-client.md b/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/09-client.md
index 3ba88e6dfc1..80c3910b3de 100644
--- a/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/09-client.md
+++ b/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/09-client.md
@@ -41,8 +41,8 @@ of amount and denomination (e.g. `100uatom,100uosmo`) in the `coins` option.
The additional flags that can be used with the command are:
- `--packet-timeout-height` to specify the timeout block height in the format `{revision}-{height}`. The default value is `0-0`, which effectively disables the timeout. Timeout height can only be absolute, therefore this option must be used in combination with `--absolute-timeouts` set to true.
-- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (fromthe current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
-- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout timeout is considered relative to current UTC time).
+- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (from the current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
+- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout is considered relative to current UTC time).
- `--memo` to specify the memo string to be sent along with the transfer packet. If forwarding is used, then the memo string will be carried through the intermediary chains to the final destination.
- `--forwarding` to specify forwarding information in the form of a comma separated list of source port ID/channel ID pairs at each intermediary chain (e.g. `transfer/channel-0,transfer/channel-1`).
- `--unwind` to specify if the tokens must be automatically unwound to there origin chain. This option can be used in combination with `--forwarding` to forward the tokens to the final destination after unwinding. When this flag is true, the tokens specified in the `coins` option must all have the same denomination trace path (i.e. all tokens must be IBC vouchers sharing exactly the same set of destination port/channel IDs in their denomination trace path). Arguments `[src-port]` and `[src-channel]` must not be passed if the `--unwind` flag is specified.
diff --git a/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/10-ICS20-v1/09-client.md b/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/10-ICS20-v1/09-client.md
index 20d8c2f10a0..2634673adca 100644
--- a/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/10-ICS20-v1/09-client.md
+++ b/docs/versioned_docs/version-v9.0.x/02-apps/01-transfer/10-ICS20-v1/09-client.md
@@ -44,8 +44,8 @@ The `coins` parameter accepts the amount and denomination (e.g. `100uatom`) of t
The additional flags that can be used with the command are:
- `--packet-timeout-height` to specify the timeout block height in the format `{revision}-{height}`. The default value is `0-0`, which effectively disables the timeout. Timeout height can only be absolute, therefore this option must be used in combination with `--absolute-timeouts` set to true.
-- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (fromthe current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
-- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout timeout is considered relative to current UTC time).
+- `--packet-timeout-timestamp` to specify the timeout timestamp in nanoseconds. The timeout can be either relative (from the current UTC time) or absolute. The default value is 10 minutes (and thus relative). The timeout is disabled when set to 0.
+- `--absolute-timeouts` to interpret the timeout timestamp as an absolute value (when set to true). The default value is false (and thus the timeout is considered relative to current UTC time).
- `--memo` to specify the memo string to be sent along with the transfer packet. If forwarding is used, then the memo string will be carried through the intermediary chains to the final destination.
#### `total-escrow`
diff --git a/docs/versioned_docs/version-v9.0.x/04-middleware/02-callbacks/01-overview.md b/docs/versioned_docs/version-v9.0.x/04-middleware/02-callbacks/01-overview.md
index eae194b2b96..6dce7ed4759 100644
--- a/docs/versioned_docs/version-v9.0.x/04-middleware/02-callbacks/01-overview.md
+++ b/docs/versioned_docs/version-v9.0.x/04-middleware/02-callbacks/01-overview.md
@@ -51,5 +51,5 @@ And the following diagram shows how a typical `SendPacket` and `WriteAcknowledge
- The receive packet callback does not pass IBC Actor's address, this is because the IBC Actor lives in the counterparty chain and cannot be trusted.
:::warning
-If the callbacks middleware wraps the transfer application, we strongly discourage the usage of source callbacks if [`MsgTransfer` includes forwarding information](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L54-L55) (which is only supported from ICS20 v2). Source callback information will be executed on the last hop before the destination chain, not on the sending chain. The explanation for this behaviour is that, if the tokens are routed through intermediary chains, then the transfer application on the sending chain will construct a packet data where the [`memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L38) is empty, and any [memo string](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L51) included in `MsgTransfer` is placed in the [`destination_memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L48). This makes it impossible to trigger the source callbacks on the sending chain, since the memo string is not available in the `memo` field. Then, on the chain before the final destination chain, the transfer application will construct the packet data with the memo string back in the `memo` field, so that it can be consumed by the callbacks middleware on the destination chain. However, if the `memo` field of `FungibleTokenPacketDataV2` is not empty on the chain before the final destination and the transfer application on that chain is wrapped by callbacks middleware, then the source callbacks would be triggered. Therefore, in order to prevent this unexpected behaviour (i.e. source callbacks triggered not on sending chain, but on the intermediary chain before the final destination) we are strongly recommeding to not include source callbacks information in the `memo` field of `MsgTransfer`.
+If the callbacks middleware wraps the transfer application, we strongly discourage the usage of source callbacks if [`MsgTransfer` includes forwarding information](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L54-L55) (which is only supported from ICS20 v2). Source callback information will be executed on the last hop before the destination chain, not on the sending chain. The explanation for this behaviour is that, if the tokens are routed through intermediary chains, then the transfer application on the sending chain will construct a packet data where the [`memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L38) is empty, and any [memo string](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v1/tx.proto#L51) included in `MsgTransfer` is placed in the [`destination_memo` field](https://github.com/cosmos/ibc-go/blob/v9.0.0-rc.0/proto/ibc/applications/transfer/v2/packet.proto#L48). This makes it impossible to trigger the source callbacks on the sending chain, since the memo string is not available in the `memo` field. Then, on the chain before the final destination chain, the transfer application will construct the packet data with the memo string back in the `memo` field, so that it can be consumed by the callbacks middleware on the destination chain. However, if the `memo` field of `FungibleTokenPacketDataV2` is not empty on the chain before the final destination and the transfer application on that chain is wrapped by callbacks middleware, then the source callbacks would be triggered. Therefore, in order to prevent this unexpected behaviour (i.e. source callbacks triggered not on sending chain, but on the intermediary chain before the final destination) we are strongly recommending to not include source callbacks information in the `memo` field of `MsgTransfer`.
:::
diff --git a/e2e/README.md b/e2e/README.md
index 5aca98902ea..abaeea20c87 100644
--- a/e2e/README.md
+++ b/e2e/README.md
@@ -190,7 +190,7 @@ And providing the git tag.
To trigger the compatibility tests for a release branch, you can trigger these manually from the Github UI.
This will build an image from the tip of the release branch and run all tests specified in the corresponding
-json matrix files under [.github/compatibility-test-matrices](../.github/compatibility-test-matrices).
+E2E test annotations.
Navigate to `Actions` -> `Compatibility E2E` -> `Run Workflow` -> `release/v8.0.x`
diff --git a/e2e/ci-e2e-config.yaml b/e2e/ci-e2e-config.yaml
index 3077cd5ef96..bb94e1cc50f 100644
--- a/e2e/ci-e2e-config.yaml
+++ b/e2e/ci-e2e-config.yaml
@@ -2,17 +2,15 @@
# Many of these fields can be overridden with environment variables.
# All fields that support this have the corresponding environment variable name in a comment beside the field.
-
# | Environment Variable | Description | Default Value |
# |----------------------|-------------------------------------------|------------------------------|
# | CHAIN_IMAGE | The image that will be used for the chain | ghcr.io/cosmos/ibc-go-simd |
# | CHAIN_A_TAG | The tag used for chain A | N/A (must be set) |
# | CHAIN_B_TAG | The tag used for chain B | N/A (must be set) |
# | CHAIN_BINARY | The binary used in the container | simd |
-# | RELAYER_TAG | The tag used for the relayer | 1.10.0 |
+# | RELAYER_TAG | The tag used for the relayer | 1.10.4 |
# | RELAYER_ID | The type of relayer to use (rly/hermes) | hermes |
-
# see sample.config.yaml for a bare minimum configuration example.
# set env E2E_CONFIG_PATH to point to this file to use it.
---
@@ -37,7 +35,7 @@ activeRelayer: hermes # override with RELAYER_ID
relayers:
- id: hermes
image: ghcr.io/informalsystems/hermes
- tag: "1.10.0"
+ tag: "1.10.4"
- id: rly
image: ghcr.io/cosmos/relayer
tag: "latest"
diff --git a/e2e/dockerutil/dockerutil.go b/e2e/dockerutil/dockerutil.go
index 48fb97055d3..175abe8aa10 100644
--- a/e2e/dockerutil/dockerutil.go
+++ b/e2e/dockerutil/dockerutil.go
@@ -8,6 +8,7 @@ import (
"path"
dockertypes "github.com/docker/docker/api/types"
+ "github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/filters"
dockerclient "github.com/docker/docker/client"
)
@@ -18,7 +19,7 @@ const testLabel = "ibc-test"
// note: the test suite name must be passed as the chains are created in SetupSuite which will label
// them with the name of the test suite rather than the test.
func GetTestContainers(ctx context.Context, suiteName string, dc *dockerclient.Client) ([]dockertypes.Container, error) {
- testContainers, err := dc.ContainerList(ctx, dockertypes.ContainerListOptions{
+ testContainers, err := dc.ContainerList(ctx, container.ListOptions{
All: true,
Filters: filters.NewArgs(
// see: https://github.com/strangelove-ventures/interchaintest/blob/0bdc194c2aa11aa32479f32b19e1c50304301981/internal/dockerutil/setup.go#L31-L36
@@ -35,7 +36,7 @@ func GetTestContainers(ctx context.Context, suiteName string, dc *dockerclient.C
// GetContainerLogs returns the logs of a container as a byte array.
func GetContainerLogs(ctx context.Context, dc *dockerclient.Client, containerName string) ([]byte, error) {
- readCloser, err := dc.ContainerLogs(ctx, containerName, dockertypes.ContainerLogsOptions{
+ readCloser, err := dc.ContainerLogs(ctx, containerName, container.LogsOptions{
ShowStdout: true,
ShowStderr: true,
})
diff --git a/e2e/go.mod b/e2e/go.mod
index 763c7873b74..e4eb4bfbfa0 100644
--- a/e2e/go.mod
+++ b/e2e/go.mod
@@ -1,107 +1,93 @@
module github.com/cosmos/ibc-go/e2e
-go 1.22.7
-
-toolchain go1.22.8
+go 1.23.4
// needed temporarily for v9.
replace (
github.com/misko9/go-substrate-rpc-client/v4 => github.com/DimitrisJim/go-substrate-rpc-client/v4 v4.0.0-20240717100841-406da076c1d5
- github.com/strangelove-ventures/interchaintest/v8 => github.com/DimitrisJim/interchaintest/v8 v8.0.0-20240717102845-beba523a47ff
+ github.com/strangelove-ventures/interchaintest/v9 => github.com/DimitrisJim/interchaintest/v9 v9.0.0-20241127135837-285cf3b21950
)
require (
cosmossdk.io/errors v1.0.1
cosmossdk.io/math v1.4.0
cosmossdk.io/x/upgrade v0.1.4
- github.com/cometbft/cometbft v0.38.15
- github.com/cosmos/cosmos-sdk v0.50.10
+ github.com/cometbft/cometbft v1.0.0
+ github.com/cosmos/cosmos-sdk v0.53.0
github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/ibc-go/modules/light-clients/08-wasm v0.0.0-00010101000000-000000000000
github.com/cosmos/ibc-go/v9 v9.0.0
- github.com/docker/docker v24.0.7+incompatible
+ github.com/docker/docker v27.3.1+incompatible
github.com/pelletier/go-toml v1.9.5
- github.com/strangelove-ventures/interchaintest/v8 v8.2.1-0.20240419152858-c8b741617cd8
+ github.com/strangelove-ventures/interchaintest/v9 v9.0.0-20240917013455-e59965790e64
github.com/stretchr/testify v1.10.0
go.uber.org/zap v1.27.0
- golang.org/x/mod v0.21.0
- google.golang.org/grpc v1.68.1
+ golang.org/x/mod v0.22.0
+ google.golang.org/grpc v1.69.2
gopkg.in/yaml.v2 v2.4.0
)
require (
- cloud.google.com/go v0.115.0 // indirect
- cloud.google.com/go/auth v0.6.0 // indirect
- cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
- cloud.google.com/go/compute/metadata v0.5.0 // indirect
- cloud.google.com/go/iam v1.1.9 // indirect
- cloud.google.com/go/storage v1.41.0 // indirect
- cosmossdk.io/api v0.7.6 // indirect
- cosmossdk.io/collections v0.4.0 // indirect
- cosmossdk.io/core v0.11.1 // indirect
- cosmossdk.io/depinject v1.0.0 // indirect
- cosmossdk.io/log v1.4.1 // indirect
- cosmossdk.io/store v1.1.1 // indirect
+ buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 // indirect
+ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 // indirect
+ cosmossdk.io/api v0.8.0 // indirect
+ cosmossdk.io/collections v1.0.0-rc.1 // indirect
+ cosmossdk.io/core v1.0.0 // indirect
+ cosmossdk.io/depinject v1.1.0 // indirect
+ cosmossdk.io/log v1.5.0 // indirect
+ cosmossdk.io/schema v1.0.0 // indirect
+ cosmossdk.io/store v1.10.0-rc.1.0.20241218084712-ca559989da43 // indirect
+ cosmossdk.io/x/authz v0.0.0-20241108061010-a0458127fccf
+ cosmossdk.io/x/bank v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/distribution v0.0.0-20241108061010-a0458127fccf // indirect
cosmossdk.io/x/feegrant v0.1.1 // indirect
- cosmossdk.io/x/tx v0.13.6 // indirect
+ cosmossdk.io/x/gov v0.0.0-20241108061010-a0458127fccf
+ cosmossdk.io/x/params v0.0.0-20241108061010-a0458127fccf
+ cosmossdk.io/x/slashing v0.0.0-20241108061010-a0458127fccf // indirect
+ cosmossdk.io/x/staking v0.0.0-20241218110910-47409028a73d // indirect
+ cosmossdk.io/x/tx v1.0.0-alpha.3 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/BurntSushi/toml v1.4.0 // indirect
- github.com/ChainSafe/go-schnorrkel v1.1.0 // indirect
- github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 // indirect
- github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect
- github.com/CosmWasm/wasmvm/v2 v2.1.2 // indirect
+ github.com/CosmWasm/wasmvm/v2 v2.2.0-rc.2 // indirect
github.com/DataDog/datadog-go v4.8.3+incompatible // indirect
- github.com/DataDog/zstd v1.5.5 // indirect
- github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect
- github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect
+ github.com/DataDog/zstd v1.5.6 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
- github.com/StirlingMarketingGroup/go-namecase v1.0.0 // indirect
github.com/avast/retry-go/v4 v4.5.1 // indirect
- github.com/aws/aws-sdk-go v1.49.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.2.0 // indirect
github.com/bits-and-blooms/bitset v1.13.0 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
- github.com/chzyer/readline v1.5.1 // indirect
- github.com/cockroachdb/apd/v2 v2.0.2 // indirect
github.com/cockroachdb/errors v1.11.3 // indirect
- github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect
+ github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v1.1.2 // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
- github.com/cometbft/cometbft-db v0.14.1 // indirect
+ github.com/cometbft/cometbft-db v1.0.1 // indirect
+ github.com/cometbft/cometbft/api v1.0.0
github.com/consensys/bavard v0.1.13 // indirect
github.com/consensys/gnark-crypto v0.12.1 // indirect
github.com/cosmos/btcutil v1.0.5 // indirect
- github.com/cosmos/cosmos-db v1.1.0 // indirect
+ github.com/cosmos/cosmos-db v1.1.1 // indirect
github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect
github.com/cosmos/go-bip39 v1.0.0 // indirect
github.com/cosmos/gogogateway v1.2.0 // indirect
- github.com/cosmos/iavl v1.2.0 // indirect
- github.com/cosmos/ibc-go/modules/capability v1.0.1 // indirect
+ github.com/cosmos/iavl v1.3.4 // indirect
github.com/cosmos/ics23/go v0.11.0 // indirect
github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect
- github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 // indirect
+ github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect
github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
github.com/danieljoos/wincred v1.2.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
- github.com/deckarep/golang-set v1.8.0 // indirect
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
- github.com/decred/base58 v1.0.5 // indirect
- github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect
- github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
- github.com/desertbit/timer v1.0.1 // indirect
- github.com/dgraph-io/badger/v4 v4.2.0 // indirect
- github.com/dgraph-io/ristretto v0.1.1 // indirect
- github.com/distribution/reference v0.5.0 // indirect
- github.com/docker/distribution v2.8.3+incompatible // indirect
+ github.com/dgraph-io/badger/v4 v4.5.0 // indirect
+ github.com/distribution/reference v0.6.0 // indirect
github.com/docker/go-connections v0.5.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
@@ -110,10 +96,10 @@ require (
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
github.com/ethereum/go-ethereum v1.14.12 // indirect
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect
- github.com/fatih/color v1.17.0 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/getsentry/sentry-go v0.28.1 // indirect
+ github.com/fsnotify/fsnotify v1.8.0 // indirect
+ github.com/getsentry/sentry-go v0.29.0 // indirect
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
@@ -123,7 +109,6 @@ require (
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.3 // indirect
- github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
@@ -132,91 +117,60 @@ require (
github.com/google/flatbuffers v24.3.25+incompatible // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/orderedcode v0.0.1 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
github.com/google/uuid v1.6.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.5 // indirect
github.com/gorilla/handlers v1.5.2 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
- github.com/gtank/merlin v0.1.1 // indirect
- github.com/gtank/ristretto255 v0.1.2 // indirect
- github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-getter v1.7.4 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-metrics v0.5.3 // indirect
- github.com/hashicorp/go-plugin v1.6.1 // indirect
- github.com/hashicorp/go-safetemp v1.0.0 // indirect
+ github.com/hashicorp/go-plugin v1.6.2 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
+ github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/golang-lru v1.0.2 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/hashicorp/yamux v0.1.2 // indirect
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
github.com/holiman/uint256 v1.3.1 // indirect
- github.com/huandu/skiplist v1.2.0 // indirect
+ github.com/huandu/skiplist v1.2.1 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 // indirect
- github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/ipfs/go-cid v0.4.1 // indirect
- github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
- github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
- github.com/klauspost/compress v1.17.9 // indirect
- github.com/klauspost/cpuid/v2 v2.2.8 // indirect
+ github.com/klauspost/compress v1.17.11 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.9 // indirect
- github.com/libp2p/go-buffer-pool v0.1.0 // indirect
- github.com/libp2p/go-libp2p v0.32.1 // indirect
- github.com/linxGnu/grocksdb v1.9.2 // indirect
- github.com/magiconair/properties v1.8.7 // indirect
- github.com/manifoldco/promptui v0.9.0 // indirect
+ github.com/linxGnu/grocksdb v1.9.3 // indirect
+ github.com/magiconair/properties v1.8.9 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
- github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect
github.com/minio/highwayhash v1.0.3 // indirect
- github.com/minio/sha256-simd v1.0.1 // indirect
- github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230913220906-b988ea7da0c2 // indirect
- github.com/mitchellh/go-homedir v1.1.0 // indirect
- github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mmcloughlin/addchain v0.4.0 // indirect
- github.com/morikuni/aec v1.0.0 // indirect
- github.com/mr-tron/base58 v1.2.0 // indirect
github.com/mtibben/percent v0.2.1 // indirect
- github.com/multiformats/go-base32 v0.1.0 // indirect
- github.com/multiformats/go-base36 v0.2.0 // indirect
- github.com/multiformats/go-multiaddr v0.12.0 // indirect
- github.com/multiformats/go-multibase v0.2.0 // indirect
- github.com/multiformats/go-multicodec v0.9.0 // indirect
- github.com/multiformats/go-multihash v0.2.3 // indirect
- github.com/multiformats/go-varint v0.0.7 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
+ github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
github.com/oklog/run v1.1.0 // indirect
- github.com/onsi/ginkgo v1.16.5 // indirect
- github.com/onsi/gomega v1.27.10 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0-rc5 // indirect
- github.com/pelletier/go-toml/v2 v2.2.2 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
- github.com/pierrec/xxHash v0.1.5 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.60.1 // indirect
+ github.com/prometheus/common v0.61.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
- github.com/rogpeppe/go-internal v1.12.0 // indirect
+ github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
@@ -225,9 +179,8 @@ require (
github.com/shamaton/msgpack/v2 v2.2.0 // indirect
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
- github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
- github.com/spf13/cast v1.7.0 // indirect
+ github.com/spf13/cast v1.7.1 // indirect
github.com/spf13/cobra v1.8.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.19.0 // indirect
@@ -240,54 +193,101 @@ require (
github.com/tklauser/numcpus v0.7.0 // indirect
github.com/tyler-smith/go-bip32 v1.0.0 // indirect
github.com/tyler-smith/go-bip39 v1.1.0 // indirect
- github.com/ulikunitz/xz v0.5.11 // indirect
+ github.com/ulikunitz/xz v0.5.12 // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
github.com/zondax/hid v0.9.2 // indirect
github.com/zondax/ledger-go v0.14.3 // indirect
+ gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
+ gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
go.etcd.io/bbolt v1.4.0-alpha.1 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
- go.opentelemetry.io/otel v1.29.0 // indirect
- go.opentelemetry.io/otel/metric v1.29.0 // indirect
- go.opentelemetry.io/otel/trace v1.29.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
+ go.opentelemetry.io/otel v1.32.0 // indirect
+ go.opentelemetry.io/otel/metric v1.32.0 // indirect
+ go.opentelemetry.io/otel/trace v1.32.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.28.0 // indirect
- golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
- golang.org/x/net v0.30.0 // indirect
- golang.org/x/oauth2 v0.23.0 // indirect
- golang.org/x/sync v0.8.0 // indirect
- golang.org/x/sys v0.26.0 // indirect
- golang.org/x/term v0.25.0 // indirect
- golang.org/x/text v0.19.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- golang.org/x/tools v0.24.0 // indirect
- google.golang.org/api v0.186.0 // indirect
- google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/protobuf v1.35.2 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
+ golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
+ golang.org/x/net v0.32.0 // indirect
+ golang.org/x/oauth2 v0.24.0 // indirect
+ golang.org/x/sync v0.10.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/time v0.6.0 // indirect
+ golang.org/x/tools v0.27.0 // indirect
+ google.golang.org/api v0.192.0 // indirect
+ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
+ google.golang.org/protobuf v1.36.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
- gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.1 // indirect
- lukechampine.com/blake3 v1.2.1 // indirect
- lukechampine.com/uint128 v1.3.0 // indirect
- modernc.org/cc/v3 v3.41.0 // indirect
- modernc.org/ccgo/v3 v3.16.15 // indirect
- modernc.org/libc v1.37.1 // indirect
+ modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect
+ modernc.org/libc v1.52.1 // indirect
modernc.org/mathutil v1.6.0 // indirect
- modernc.org/memory v1.7.2 // indirect
- modernc.org/opt v0.1.3 // indirect
- modernc.org/sqlite v1.28.0 // indirect
+ modernc.org/memory v1.8.0 // indirect
+ modernc.org/sqlite v1.30.1 // indirect
modernc.org/strutil v1.2.0 // indirect
modernc.org/token v1.1.0 // indirect
- nhooyr.io/websocket v1.8.11 // indirect
pgregory.net/rapid v1.1.0 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
+require cosmossdk.io/x/group v0.0.0-00010101000000-000000000000
+
+require (
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.8.1 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.5.2 // indirect
+ cloud.google.com/go/iam v1.1.13 // indirect
+ cloud.google.com/go/storage v1.43.0 // indirect
+ cosmossdk.io/client/v2 v2.0.0-beta.6 // indirect
+ cosmossdk.io/core/testing v0.0.1 // indirect
+ cosmossdk.io/x/accounts v0.0.0-20241218110910-47409028a73d // indirect
+ cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1 // indirect
+ cosmossdk.io/x/accounts/defaults/lockup v0.0.0-00010101000000-000000000000 // indirect
+ cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000 // indirect
+ cosmossdk.io/x/consensus v0.0.0-20241108061010-a0458127fccf // indirect
+ cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect
+ cosmossdk.io/x/evidence v0.1.1 // indirect
+ cosmossdk.io/x/mint v0.0.0-20241108061010-a0458127fccf // indirect
+ cosmossdk.io/x/nft v0.0.0-00010101000000-000000000000 // indirect
+ cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190 // indirect
+ github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect
+ github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // indirect
+ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
+ github.com/bytedance/sonic v1.12.6 // indirect
+ github.com/bytedance/sonic/loader v0.2.1 // indirect
+ github.com/chzyer/readline v1.5.1 // indirect
+ github.com/cloudwego/base64x v0.1.4 // indirect
+ github.com/cloudwego/iasm v0.2.0 // indirect
+ github.com/cockroachdb/apd/v3 v3.2.1 // indirect
+ github.com/dgraph-io/ristretto/v2 v2.0.0 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect
+ github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
+ github.com/hashicorp/go-getter v1.7.6 // indirect
+ github.com/hashicorp/go-safetemp v1.0.0 // indirect
+ github.com/jmespath/go-jmespath v0.4.0 // indirect
+ github.com/manifoldco/promptui v0.9.0 // indirect
+ github.com/mitchellh/go-homedir v1.1.0 // indirect
+ github.com/mitchellh/go-testing-interface v1.14.1 // indirect
+ github.com/moby/docker-image-spec v1.3.1 // indirect
+ github.com/onsi/ginkgo v1.16.5 // indirect
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.3.1 // indirect
+ golang.org/x/arch v0.12.0 // indirect
+)
+
// TODO: using version v1.0.0 causes a build failure. This is the previous version which compiles successfully.
replace (
github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d
@@ -303,3 +303,34 @@ replace github.com/cosmos/ibc-go/modules/light-clients/08-wasm => ../modules/lig
replace github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
+
+replace (
+ cosmossdk.io/api => cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608
+ cosmossdk.io/client/v2 => cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608
+ cosmossdk.io/core => cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608
+ cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608
+ cosmossdk.io/x/accounts => cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/lockup => cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/multisig => cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/authz => cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/bank => cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/circuit => cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/consensus => cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/distribution => cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/epochs => cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/evidence => cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/feegrant => cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/gov => cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/group => cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/mint => cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/nft => cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/params => cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/protocolpool => cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/slashing => cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/staking => cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/tx => cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938
+ cosmossdk.io/x/upgrade => cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608
+ github.com/cometbft/cometbft => github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f
+ // pseudo version lower than the latest tag
+ github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b
+)
diff --git a/e2e/go.sum b/e2e/go.sum
index 596f6ca3671..adb818ef180 100644
--- a/e2e/go.sum
+++ b/e2e/go.sum
@@ -1,3 +1,7 @@
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 h1:LBP+N3ehp1hseHYlIIHlU0gMM3aGYDcgx/H//Pk12ko=
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1/go.mod h1:pab5p7+q6IAI+R+Z2MQ+hP7ZV+FP2mcbucv6xs5WFPk=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 h1:5wJBiYyPUS2xpqLJKm7ZEKx1VhesPOXXx5y+JxgVSX4=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1/go.mod h1:VItWFs9dzQsqOin45pYbA4O/SRdqMPDs4XPZBHL+u2w=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -30,8 +34,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
-cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
-cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
@@ -46,10 +50,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby
cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
-cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=
-cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
-cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
-cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
+cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo=
+cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
@@ -72,8 +76,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
-cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
-cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
+cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo=
+cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
@@ -111,12 +115,14 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97
cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
-cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE=
-cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ=
+cloud.google.com/go/iam v1.1.13 h1:7zWBXG9ERbMLrzQBRhFliAV+kjcRToDTgQT3CTwYyv4=
+cloud.google.com/go/iam v1.1.13/go.mod h1:K8mY0uSXwEXS30KrnVb+j54LB/ntfZu1dr+4zFMNbus=
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
+cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk=
+cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4=
cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
@@ -173,8 +179,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
-cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0=
-cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80=
+cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
+cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
@@ -186,34 +192,72 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
-cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY=
-cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38=
-cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I=
-cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as=
-cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s=
-cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0=
-cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA=
-cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0=
-cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050=
-cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608 h1:0266beLan2snXZMeELYMpTVcFjlSgzHhLBKxSuNVZUI=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608 h1:umN3k+AZ91ZjYv3CDiTgFDaWe22w3JxpeJmepUwKXV8=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608/go.mod h1:Xxz5u4rK+ArCsRo9TMSirg6jPMdva6BHv9Db65OkN/Q=
+cosmossdk.io/collections v1.0.0-rc.1 h1:Mzv0YKZJ6aloy4oSnMnyl8b6PtM2dTdDlzRR/079TyM=
+cosmossdk.io/collections v1.0.0-rc.1/go.mod h1:nOgrEpyMFOWBy8QmSbq/T6Tgtm2IyOFvxDRWk+DI97k=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608 h1:w+/cxqYHud1plzCTIvEBtab6RqpgAl2C5Hgn1l4p+oo=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608/go.mod h1:gCTZBT00tI2zTQy65aSolV3aUnQDqpVgz5yOp96LpGg=
+cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
+cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
+cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
+cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
-cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
-cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU=
+cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g=
+cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI=
cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ=
cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk=
-cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y=
-cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=
-cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ=
-cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q=
-cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4=
-cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc=
-cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8=
-cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ=
-cosmossdk.io/x/tx v0.13.6 h1:qCiZJ+yK5MsSdUByjOUrfm3sk7aZk1AuYufX22VLC1M=
-cosmossdk.io/x/tx v0.13.6/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w=
-cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38=
-cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo=
+cosmossdk.io/schema v1.0.0 h1:/diH4XJjpV1JQwuIozwr+A4uFuuwanFdnw2kKeiXwwQ=
+cosmossdk.io/schema v1.0.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608 h1:NaFVgzmO3YFX+l7696SdDTtvJR0MTjjwSe0sX+inAI4=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608/go.mod h1:eZNgZKvZRlDUk8CE3LTDVMAcSM7zLOet2S8fByQkF3s=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608 h1:No84LXBp0kEzJfAqorxrgqzmzqOpHhbs8IK2nBpVQJY=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608/go.mod h1:wADXnci9qeFwOQ09qiyf1uLdI4n/RSSTG8mSM9hmxys=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1 h1:sVAOVQLbdmzLmjnWLhAhIN65HTmSMGBIwU2uTeSCEp0=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1/go.mod h1:52PyilJMRraVwNcG58q4t7OSzSHApqNfJheq+mNB+qw=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608 h1:nMu0DD9qutZ7dzIySxTRnLYvZtockBghVkwBHyuwBLI=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608/go.mod h1:m0eg/A4J5fmXFNGEldQpeTrMr9PFWaVIFjbDYes0j9I=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608 h1:JL+VXHmb8xqwU7ToR2RG0V2BTmE+t1PkJ880xKi46Tc=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608/go.mod h1:huNjmnJuvPXAT5zvK8S29X0u9DpCa3X9ZCUd3bJ8bng=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608 h1:MzRTC+W0Uv40yfFNegDskcisgui9lQdeG9FZxOixATk=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608/go.mod h1:GMLM+m3Il+QTfOrQG08sFJXlKw95UDKPIOYcuSwjbzQ=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608 h1:lbtU7rYltk2axJ5h1DgPamVosuZEeyOAaqYPQpQBH4g=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608/go.mod h1:GN02Rosc2O/vCNBnXqY35vA2hoMmRQeCKd81FuoMzmE=
+cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608 h1:ATB7FV12GCjS+KN2Fx8B878LbwzNP4bkzsznRqMmn3k=
+cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608/go.mod h1:d4a/F6pXE2KWJdshiRxCPKyW6h5gAnAWmSCtlRrhcYk=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608 h1:lstvqRuVEDtRxiF9+LM16SpRriq0O+5lMHzsGKheXH4=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608/go.mod h1:ib+kqbNMsj6n7/LvW+qi24/1kp/ApWJpsnCWY5yN6Mk=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608 h1:hYFPPs5WsMWj/1sRpw6Aqmioph3qw5VN76geVxtaWtI=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608/go.mod h1:bG9SiC6YsVOpsKgOd+b+t3Kl4GLb9T6RjhBKesPn+Gg=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608 h1:UZSqhiAi1mKi8DE+OLGMrXSoenSl4PkyQT7xxNfr9Bw=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608/go.mod h1:PLdiJlSC0XveXA3vJ0E4n1NCG78UeHXwEk0razSnEk4=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608 h1:KqJ+F0YVwFlu06gEoWHvGvdC1DYXDL5Rykra61/pY4Q=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608/go.mod h1:YBMj0T87xliEfldeZHC60AqyZoLoy1wJzAAgaaQubBM=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608 h1:iSOOM7vAa0LuJ9xKZ7k34g5uyy9WQyfKbnAPmnf8Abc=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608/go.mod h1:yIgJCAGBnM3sull2qACQP+uMsEoogyNO6OXz82z3tVg=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608 h1:F+w/ofuUDxFyyk6t7kt7cdcBsTa2gA7zuvCEplB871A=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608/go.mod h1:ynGp02hnYhVidQiL9KOKeiZnn0h+PSEJb+XjgKH6+v4=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608 h1:ll6Pk+WoPlusW2uy8HTXupL+mees6mNohS4dfGYJsZ0=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608/go.mod h1:L8fBvuIwBQzABO/cYEOpekmaKlR4ELclrrGNZ6r//sg=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608 h1:t0A/ip5m09OuAY0bvpnfxJhD1/dL44JYNwffy5boqB4=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608/go.mod h1:apbBgC0mKZTbgvW2ACPcNBl0z8HjCp7R9ZBns7F6J2E=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608 h1:bB3FhjvPZfkS3EksYB3YR7muxGk0/rr6U993a7ETHx0=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608/go.mod h1:H1QoaISMz78OyBwXKU4gp8Gmwd1EVWq+Lb9P3BUfXUM=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608 h1:ZD/gSJbfpC2WzXr17xq5UkJBQd/BfBVajzKrieu6zjQ=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608/go.mod h1:btgbNMPZJWZLd03ef2AblrpJ7e9ocpTvA0xUw0hIHew=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608 h1:3rdbR/782gMtQo+1yxH+wuhJKd1jm/4X0pBgQX7pDp4=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608/go.mod h1:xLb6tQ33fgSOmwlMui9UjLzI9xmOclfjG2g+/z4XiUc=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608 h1:+GBTBLH54gKT2dFlUgN/XzawdBG/9U5djPecjr7meas=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608/go.mod h1:BlYhkjtZZdKXQP9mBiVwRbaduXtDKEJHQC3dZ6fZBS0=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608 h1:aycIQRLzdtuI99FkTRo4Y2QerkfKqZRYNN2BPESEc8A=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608/go.mod h1:4Zyt59oTQdaKitlYyz9K7d8Mi32e+K5NliOf9HAj5Wo=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938 h1:kqbOiJpmSBE03Isw7KY27N4oCSaOcG28oaJgCLh9Rhk=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938/go.mod h1:xlJjZV1wxZBTCP+ygZx9pNT/XxsfHDPf1H0VhHaUp5w=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608 h1:80l+duTMRKnszkWXolEs1n+1j4RFYd41mrV24P79vcY=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608/go.mod h1:5GIkumZszCtSzsXcTtL2YP4mIU25Rn3t0y51JWzzUDI=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
@@ -227,64 +271,40 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg=
-github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4=
-github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM=
-github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4=
-github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 h1:oknQF/iIhf5lVjbwjsVDzDByupRhga8nhA3NAmwyHDA=
-github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkrYPrRPV6EbVUALTQh5ptUOJzu8=
-github.com/CosmWasm/wasmvm/v2 v2.1.2 h1:GkJ5bAsRlLHfIQVg/FY1VHwLyBwlCjAhDea0B8L+e20=
-github.com/CosmWasm/wasmvm/v2 v2.1.2/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg=
+github.com/CosmWasm/wasmvm/v2 v2.2.0-rc.2 h1:Y9sQqabWsj9ePbZFKRUEIWSY2QYyHeEIrF/qz0ZNGl4=
+github.com/CosmWasm/wasmvm/v2 v2.2.0-rc.2/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q=
github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
-github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
-github.com/DimitrisJim/go-substrate-rpc-client/v4 v4.0.0-20240717100841-406da076c1d5 h1:u0DTEVAbtD6ZecV9gAgzC6f7sfW+vi+BgdHivIb43Bk=
-github.com/DimitrisJim/go-substrate-rpc-client/v4 v4.0.0-20240717100841-406da076c1d5/go.mod h1:vJqS/VE2+iAiQlp0O2l+wW9QkHDotcaSQWaU4Ako6Ss=
-github.com/DimitrisJim/interchaintest/v8 v8.0.0-20240717102845-beba523a47ff h1:ITEAJekoSKe5kVo2vUwf37XxnuPwTTzqfd4wLaR2bkk=
-github.com/DimitrisJim/interchaintest/v8 v8.0.0-20240717102845-beba523a47ff/go.mod h1:5AnXR5CAbB/Q0syC0akZR4pyPov4nOaB8eifZPz6Pds=
+github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY=
+github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
+github.com/DimitrisJim/interchaintest/v9 v9.0.0-20241127135837-285cf3b21950 h1:/wk2s7Q3nWIRsBlPMSbIG4ozPmQuxdoZNfmBFBn+fEs=
+github.com/DimitrisJim/interchaintest/v9 v9.0.0-20241127135837-285cf3b21950/go.mod h1:/6jnE/3C1tdH1mFseJDZfYf8PqUwTRY5PVf0tXuKqVE=
github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc=
github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw=
github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc=
github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U=
-github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
-github.com/StirlingMarketingGroup/go-namecase v1.0.0 h1:2CzaNtCzc4iNHirR+5ru9OzGg8rQp860gqLBFqRI02Y=
-github.com/StirlingMarketingGroup/go-namecase v1.0.0/go.mod h1:ZsoSKcafcAzuBx+sndbxHu/RjDcDTrEdT4UvhniHfio=
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I=
github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
github.com/avast/retry-go/v4 v4.5.1 h1:AxIx0HGi4VZ3I02jr78j5lZ3M6x1E0Ivxa6b0pUUh7o=
github.com/avast/retry-go/v4 v4.5.1/go.mod h1:/sipNsvNB3RRuT5iNcb6h73nw3IBmXJ/H3XrCQYSOpc=
-github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/aws/aws-sdk-go v1.49.0 h1:g9BkW1fo9GqKfwg2+zCD+TW/D36Ux+vtfJ8guF4AYmY=
-github.com/aws/aws-sdk-go v1.49.0/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
-github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -292,7 +312,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
-github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E=
github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
@@ -301,14 +320,17 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurT
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c=
github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE=
-github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ=
-github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o=
-github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
-github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
-github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
+github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
+github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
+github.com/bytedance/sonic v1.12.6 h1:/isNmCUF2x3Sh8RAp/4mh4ZGkcFAX/hLrzrK3AvpRzk=
+github.com/bytedance/sonic v1.12.6/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
+github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E=
+github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -330,8 +352,11 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
+github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
+github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
+github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw=
github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
@@ -343,15 +368,14 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
-github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=
+github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k0egdR5V6eALQYq2qbSmukrkgIh/0A=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
@@ -360,30 +384,29 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg=
-github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ=
-github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ=
-github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f h1:rPWKqyc+CeuddICqlqptf+3NPE8exbC9SOGuDPTEN3k=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f/go.mod h1:MqZ5E5jLU1JdP10FSRXhItpm+GdHMbW7Myv3UARLxqg=
+github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE=
+github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk=
+github.com/cometbft/cometbft/api v1.0.0 h1:gGBwvsJi/gnHJEtwYfjPIGs2AKg/Vfa1ZuKCPD1/Ko4=
+github.com/cometbft/cometbft/api v1.0.0/go.mod h1:EkQiqVSu/p2ebrZEnB2z6Re7r8XNe//M7ylR0qEwWm0=
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
+github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=
github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=
-github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI=
-github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg=
+github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM=
+github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
-github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM=
-github.com/cosmos/cosmos-sdk v0.50.10/go.mod h1:6Eesrx3ZE7vxBZWpK++30H+Uc7Q4ahQWCL7JKU/LEdU=
-github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b h1:ZaEAV5tsUTnyWEC/Gt8DXHKBANDyx70PVCiPOEVnuHk=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b/go.mod h1:ecJnx3s3oQK5BR7vu25fYSD2/ND9YLGkVpST7uiBkT0=
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE=
@@ -391,24 +414,20 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ
github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
-github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM=
-github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI=
-github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI=
-github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E=
+github.com/cosmos/iavl v1.3.4 h1:A0RUAms7TZ0L6EFrrBIPg4Dy7qD9vvD5lJKUxEXURLM=
+github.com/cosmos/iavl v1.3.4/go.mod h1:T6SfBcyhulVIY2G/ZtAtQm/QiJvsuhIos52V4dWYk88=
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM=
github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 h1:B23RM5CtuNCgvEffdaMXNZxOH3fVOtNEfEVviOs4364=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4/go.mod h1:O7A2Q93QyD0m69LQmnDgOSvHGF5URFBTgY2QsxpdqSs=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 h1:9o9xcAsD+JAJQTnI9sRwdCSz28o3zHqqgKaHBYcXP+s=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9/go.mod h1:gfJFGujP9PIuiyu9AfewNjtVx6cqUh6cNFXjEa3RObo=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs=
github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI=
github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs=
github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps=
@@ -416,55 +435,32 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4=
-github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo=
github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM=
github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
-github.com/decred/base58 v1.0.5 h1:hwcieUM3pfPnE/6p3J100zoRfGkQxBulZHo7GZfOqic=
-github.com/decred/base58 v1.0.5/go.mod h1:s/8lukEHFA6bUQQb/v3rjUySJ2hu+RioCzLukAVkrfw=
-github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU=
-github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60=
-github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y=
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
-github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM=
-github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
-github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo=
-github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE=
-github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs=
-github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak=
-github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
-github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgraph-io/badger/v4 v4.5.0 h1:TeJE3I1pIWLBjYhIYCA1+uxrjWEoJXImFBMEBVSm16g=
+github.com/dgraph-io/badger/v4 v4.5.0/go.mod h1:ysgYmIeG8dS/E8kwxT7xHyc7MkmwNYLRoYnFbr7387A=
+github.com/dgraph-io/ristretto/v2 v2.0.0 h1:l0yiSOtlJvc0otkqyMaDNysg8E9/F/TYZwMbxscNOAQ=
+github.com/dgraph-io/ristretto/v2 v2.0.0/go.mod h1:FVFokF2dRqXyPyeMnK1YDy8Fc6aTe0IKgbcd03CYeEk=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
-github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
-github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
-github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
-github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM=
-github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
+github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
+github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI=
+github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo=
github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -483,25 +479,21 @@ github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
-github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
-github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k=
-github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg=
+github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
+github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/getsentry/sentry-go v0.29.0 h1:YtWluuCFg9OfcqnaujpY918N/AhCCwarIDWOYSBAjCA=
+github.com/getsentry/sentry-go v0.29.0/go.mod h1:jhPesDAL0Q0W2+2YEuVOvdWmVtdsr1+jtBrlDEVWwLY=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -509,7 +501,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU=
github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
@@ -528,31 +519,19 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
-github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
-github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -588,7 +567,6 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
@@ -643,13 +621,12 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0=
-github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
+github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
+github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -668,47 +645,30 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
-github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
-github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
-github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s=
-github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is=
-github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s=
-github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc=
-github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o=
-github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0=
-github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
+github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4=
+github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -716,24 +676,17 @@ github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJ
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE=
github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI=
-github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0=
+github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog=
+github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
+github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
@@ -742,12 +695,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8=
+github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns=
github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU=
github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=
github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e h1:wCMygKUQhmcQAjlk2Gquzq6dLmyMv2kF+llRspoRgrk=
@@ -761,9 +710,8 @@ github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
-github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
-github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
-github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
+github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w=
+github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
@@ -772,50 +720,33 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0 h1:nHoRIX8iXob3Y2kdt9KsjyIb7iApSvb3vgsd93xb5Ow=
github.com/icza/dyno v0.0.0-20230330125955-09f820a8d9c0/go.mod h1:c1tRKs5Tx7E2+uHGSyyncziFjvGpgv4H2HrqXeUQ/Uk=
-github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=
-github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
-github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s=
-github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
-github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=
-github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
+github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
-github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
-github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
-github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
+github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
+github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -828,20 +759,12 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
-github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
-github.com/libp2p/go-libp2p v0.32.1 h1:wy1J4kZIZxOaej6NveTWCZmHiJ/kY7GoAqXgqNCnPps=
-github.com/libp2p/go-libp2p v0.32.1/go.mod h1:hXXC3kXPlBZ1eu8Q2hptGrMB4mZ3048JUoS4EKaHW5c=
-github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
-github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/linxGnu/grocksdb v1.9.2 h1:O3mzvO0wuzQ9mtlHbDrShixyVjVbmuqTjFrzlf43wZ8=
-github.com/linxGnu/grocksdb v1.9.2/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
-github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
-github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik=
+github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
+github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
+github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -849,7 +772,6 @@ github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@@ -857,32 +779,18 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
-github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM=
-github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk=
-github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU=
github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
@@ -890,8 +798,10 @@ github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8oh
github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
-github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
-github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
+github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
+github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
+github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
+github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
@@ -900,37 +810,13 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
-github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
-github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
-github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE=
-github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=
-github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=
-github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
-github.com/multiformats/go-multiaddr v0.12.0 h1:1QlibTFkoXJuDjjYsMHhE73TnzJQl8FSWatk/0gxGzE=
-github.com/multiformats/go-multiaddr v0.12.0/go.mod h1:WmZXgObOQOYp9r3cslLlppkrz1FYSHmE834dfz/lWu8=
-github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=
-github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=
-github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg=
-github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k=
-github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U=
-github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM=
-github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
-github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
-github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
+github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
+github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
@@ -938,57 +824,36 @@ github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s=
-github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
+github.com/onsi/gomega v1.28.1 h1:MijcGUbfYuznzK/5R4CPNoUP/9Xvuo20sXfEm6XxoTA=
+github.com/onsi/gomega v1.28.1/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss=
github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
-github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
-github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
-github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
-github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
-github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
+github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
+github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo=
-github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNKXmuL+I=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -996,41 +861,27 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
-github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc=
-github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
+github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ=
+github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 h1:xuVAdtz5ShYblG2sPyb4gw01DF8InbOI/kBCQjk7NiM=
@@ -1041,75 +892,54 @@ github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b h1
github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b/go.mod h1:HRuvtXLZ4WkaB1MItToVH2e8ZwKwZPY5/Rcby+CvvLY=
github.com/prysmaticlabs/prysm/v5 v5.1.2 h1:ib9D7Drh7QPoetJPnYXAHaArmjIreXPZ0FboW9EMzT8=
github.com/prysmaticlabs/prysm/v5 v5.1.2/go.mod h1:ykj3Bl9dHv35cC7fRw6Cd1aCd9l+eNvInHY6gsPbEig=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4=
github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
-github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw=
-github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
+github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
+github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
-github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/shamaton/msgpack/v2 v2.2.0 h1:IP1m01pHwCrMa6ZccP9B3bqxEMKMSmMVAVKk54g3L/Y=
github.com/shamaton/msgpack/v2 v2.2.0/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
-github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
-github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
-github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
+github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -1127,8 +957,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
@@ -1147,23 +975,18 @@ github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08
github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0=
github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4=
github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
+github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE=
github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE=
github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8=
github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U=
-github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
-github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
-github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
+github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -1178,12 +1001,12 @@ github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=
github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I=
go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4=
go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -1193,51 +1016,52 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
-go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
-go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
-go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc=
-go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
-go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
+go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
+go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI=
+go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
+go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
+go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
+go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
+go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
+go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
+go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
+go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
+go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
+go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+golang.org/x/arch v0.12.0 h1:UsYJhbzPYGsT0HbEdmYcqtCv8UNGvnaL561NnIUvaKg=
+golang.org/x/arch v0.12.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
-golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1248,9 +1072,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI=
-golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1277,17 +1100,13 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
-golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
+golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
+golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -1298,7 +1117,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1306,7 +1124,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
@@ -1325,7 +1142,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
@@ -1338,8 +1154,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
-golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
+golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1365,8 +1181,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
-golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
-golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
+golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1381,14 +1197,11 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
-golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1400,17 +1213,13 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1420,14 +1229,11 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1450,7 +1256,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1474,19 +1279,17 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
-golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
-golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1497,22 +1300,19 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
-golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
-golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
+golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@@ -1522,8 +1322,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1532,7 +1330,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1566,8 +1363,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
-golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o=
+golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1576,9 +1373,6 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1627,10 +1421,9 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
-google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=
-google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=
+google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0=
+google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
@@ -1643,7 +1436,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
@@ -1676,7 +1468,6 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -1744,21 +1535,16 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4=
+google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g=
+google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
@@ -1768,7 +1554,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
@@ -1791,8 +1576,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0=
-google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
+google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
+google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1809,8 +1594,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
-google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1818,22 +1603,15 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
-gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU=
-gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -1849,7 +1627,6 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1859,39 +1636,33 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54=
launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
-lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI=
-lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
-lukechampine.com/uint128 v1.3.0 h1:cDdUVfRwDUDovz610ABgFD17nXD4/uDgVHl2sC3+sbo=
-lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
-modernc.org/cc/v3 v3.41.0 h1:QoR1Sn3YWlmA1T4vLaKZfawdVtSiGx8H+cEojbC7v1Q=
-modernc.org/cc/v3 v3.41.0/go.mod h1:Ni4zjJYJ04CDOhG7dn640WGfwBzfE0ecX8TyMB0Fv0Y=
-modernc.org/ccgo/v3 v3.16.15 h1:KbDR3ZAVU+wiLyMESPtbtE/Add4elztFyfsWoNTgxS0=
-modernc.org/ccgo/v3 v3.16.15/go.mod h1:yT7B+/E2m43tmMOT51GMoM98/MtHIcQQSleGnddkUNI=
-modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk=
-modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
-modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=
-modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
-modernc.org/libc v1.37.1 h1:Wi3qhejztgB3hOYQGMc8NwePETHAWXmlU+GQnBNTrw8=
-modernc.org/libc v1.37.1/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE=
+modernc.org/cc/v4 v4.21.2 h1:dycHFB/jDc3IyacKipCNSDrjIC0Lm1hyoWOZTRR20Lk=
+modernc.org/cc/v4 v4.21.2/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
+modernc.org/ccgo/v4 v4.17.10 h1:6wrtRozgrhCxieCeJh85QsxkX/2FFrT9hdaWPlbn4Zo=
+modernc.org/ccgo/v4 v4.17.10/go.mod h1:0NBHgsqTTpm9cA5z2ccErvGZmtntSM9qD2kFAs6pjXM=
+modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
+modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
+modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw=
+modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU=
+modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI=
+modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4=
+modernc.org/libc v1.52.1 h1:uau0VoiT5hnR+SpoWekCKbLqm7v6dhRL3hI+NQhgN3M=
+modernc.org/libc v1.52.1/go.mod h1:HR4nVzFDSDizP620zcMCgjb1/8xk2lg5p/8yjfGv1IQ=
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
-modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E=
-modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E=
+modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
+modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU=
modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
-modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ=
-modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0=
+modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=
+modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss=
+modernc.org/sqlite v1.30.1 h1:YFhPVfu2iIgUf9kuA1CR7iiHdcEEsI2i+yjRYHscyxk=
+modernc.org/sqlite v1.30.1/go.mod h1:DUmsiWQDaAvU4abhc/N+djlom/L2o8f7gZ95RCvyoLU=
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
-modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY=
-modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c=
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
-modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY=
-modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE=
-nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
-nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
-nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
@@ -1899,7 +1670,5 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/e2e/relayer/relayer.go b/e2e/relayer/relayer.go
index 1460d7b33ab..b299cf5e5f0 100644
--- a/e2e/relayer/relayer.go
+++ b/e2e/relayer/relayer.go
@@ -8,10 +8,10 @@ import (
dockerclient "github.com/docker/docker/client"
"github.com/pelletier/go-toml"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- "github.com/strangelove-ventures/interchaintest/v8/relayer"
- "github.com/strangelove-ventures/interchaintest/v8/relayer/hermes"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ "github.com/strangelove-ventures/interchaintest/v9/relayer"
+ "github.com/strangelove-ventures/interchaintest/v9/relayer/hermes"
"go.uber.org/zap"
)
diff --git a/e2e/sample.config.extended.yaml b/e2e/sample.config.extended.yaml
index 1cda5d3dd88..9cc94302cac 100644
--- a/e2e/sample.config.extended.yaml
+++ b/e2e/sample.config.extended.yaml
@@ -2,36 +2,34 @@
# Many of these fields can be overridden with environment variables.
# All fields that support this have the corresponding environment variable name in a comment beside the field.
-
# | Environment Variable | Description | Default Value |
# |----------------------|-------------------------------------------|------------------------------|
# | CHAIN_IMAGE | The image that will be used for the chain | ghcr.io/cosmos/ibc-go-simd |
# | CHAIN_A_TAG | The tag used for chain A | N/A (must be set) |
# | CHAIN_B_TAG | The tag used for chain B | N/A (must be set) |
# | CHAIN_BINARY | The binary used in the container | simd |
-# | RELAYER_TAG | The tag used for the relayer | 1.10.0 |
+# | RELAYER_TAG | The tag used for the relayer | 1.10.4 |
# | RELAYER_ID | The type of relayer to use (rly/hermes) | hermes |
-
# see sample.config.yaml for a bare minimum configuration example.
# set env E2E_CONFIG_PATH to point to this file to use it.
---
chains:
# the entry at index 0 corresponds to CHAIN_A
-- chainId: chainA-1
- numValidators: 4
- numFullNodes: 1
- image: ghcr.io/cosmos/ibc-go-simd # override with CHAIN_IMAGE
- tag: main # override with CHAIN_A_TAG
- binary: simd # override with CHAIN_BINARY
+ - chainId: chainA-1
+ numValidators: 4
+ numFullNodes: 1
+ image: ghcr.io/cosmos/ibc-go-simd # override with CHAIN_IMAGE
+ tag: main # override with CHAIN_A_TAG
+ binary: simd # override with CHAIN_BINARY
- # the entry at index 1 corresponds to CHAIN_B
-- chainId: chainB-1
- numValidators: 4
- numFullNodes: 1
- image: ghcr.io/cosmos/ibc-go-simd # override with CHAIN_IMAGE
- tag: main # override with CHAIN_B_TAG
- binary: simd # override with CHAIN_BINARY
+ # the entry at index 1 corresponds to CHAIN_B
+ - chainId: chainB-1
+ numValidators: 4
+ numFullNodes: 1
+ image: ghcr.io/cosmos/ibc-go-simd # override with CHAIN_IMAGE
+ tag: main # override with CHAIN_B_TAG
+ binary: simd # override with CHAIN_BINARY
# activeRelayer must match the id of a relayer specified in the relayers list below.
activeRelayer: hermes # override with RELAYER_ID
@@ -42,7 +40,7 @@ activeRelayer: hermes # override with RELAYER_ID
relayers:
- id: hermes
image: ghcr.io/informalsystems/hermes
- tag: "1.10.0" # override with RELAYER_TAG
+ tag: "1.10.4" # override with RELAYER_TAG
- id: rly
image: ghcr.io/cosmos/relayer
tag: "latest" # override with RELAYER_TAG
diff --git a/e2e/sample.config.yaml b/e2e/sample.config.yaml
index 0ba94f405d6..2715858f832 100644
--- a/e2e/sample.config.yaml
+++ b/e2e/sample.config.yaml
@@ -3,4 +3,6 @@
---
chains:
- tag: main # override with CHAIN_A_TAG
+ chainId: chainA-1
- tag: main # override with CHAIN_B_TAG
+ chainId: chainB-1
diff --git a/e2e/tests/core/02-client/client_test.go b/e2e/tests/core/02-client/client_test.go
index 514c512e5d4..28fc62c3d1e 100644
--- a/e2e/tests/core/02-client/client_test.go
+++ b/e2e/tests/core/02-client/client_test.go
@@ -11,21 +11,21 @@ import (
"testing"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
+ govtypes "cosmossdk.io/x/gov/types"
+ paramsproposaltypes "cosmossdk.io/x/params/types/proposal"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/cosmos/cosmos-sdk/client/grpc/cmtservice"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- paramsproposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
+ cmtprotoversion "github.com/cometbft/cometbft/api/cometbft/version/v1"
"github.com/cometbft/cometbft/crypto/tmhash"
cmtjson "github.com/cometbft/cometbft/libs/json"
"github.com/cometbft/cometbft/privval"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
- cmtprotoversion "github.com/cometbft/cometbft/proto/tendermint/version"
cmttypes "github.com/cometbft/cometbft/types"
cmtversion "github.com/cometbft/cometbft/version"
diff --git a/e2e/tests/core/03-connection/connection_test.go b/e2e/tests/core/03-connection/connection_test.go
index 322cd865cbe..297b9d04c67 100644
--- a/e2e/tests/core/03-connection/connection_test.go
+++ b/e2e/tests/core/03-connection/connection_test.go
@@ -10,12 +10,12 @@ import (
"testing"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- paramsproposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
+ govtypes "cosmossdk.io/x/gov/types"
+ paramsproposaltypes "cosmossdk.io/x/params/types/proposal"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/interchain_accounts/base_test.go b/e2e/tests/interchain_accounts/base_test.go
index b99020ae079..f3a7a5ac5d6 100644
--- a/e2e/tests/interchain_accounts/base_test.go
+++ b/e2e/tests/interchain_accounts/base_test.go
@@ -8,17 +8,17 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ govtypes "cosmossdk.io/x/gov/types"
+ govv1 "cosmossdk.io/x/gov/types/v1"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
@@ -506,7 +506,7 @@ func (s *InterchainAccountsTestSuite) testMsgSendTxSuccessfulGovProposal(order c
msg, err := govv1.NewMsgSubmitProposal(
[]sdk.Msg{testProposal},
sdk.NewCoins(sdk.NewCoin(chainB.Config().Denom, sdkmath.NewInt(10_000_000))),
- hostAccount, "e2e", "e2e", "e2e", false,
+ hostAccount, "e2e", "e2e", "e2e", govv1.ProposalType_PROPOSAL_TYPE_STANDARD,
)
s.Require().NoError(err)
diff --git a/e2e/tests/interchain_accounts/gov_test.go b/e2e/tests/interchain_accounts/gov_test.go
index 5871cc95104..33ee6678ea7 100644
--- a/e2e/tests/interchain_accounts/gov_test.go
+++ b/e2e/tests/interchain_accounts/gov_test.go
@@ -8,16 +8,16 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ govtypes "cosmossdk.io/x/gov/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/interchain_accounts/groups_test.go b/e2e/tests/interchain_accounts/groups_test.go
index fd2ff39fe2b..1019fbbb253 100644
--- a/e2e/tests/interchain_accounts/groups_test.go
+++ b/e2e/tests/interchain_accounts/groups_test.go
@@ -8,16 +8,16 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- interchaintest "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ interchaintest "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ grouptypes "cosmossdk.io/x/group"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- grouptypes "github.com/cosmos/cosmos-sdk/x/group"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
@@ -44,7 +44,7 @@ const (
// where members can start sending MsgExec. This means that the window for
// sending a MsgExec transaction is:
// `[ submission + min_execution_period ; submission + voting_period + max_execution_period]`
- // where max_execution_period is a app-specific config, defined in the keeper.
+ // where max_execution_period is an app-specific config, defined in the keeper.
// If not set, min_execution_period will default to 0.
DefaultMinExecutionPeriod = time.Duration(0)
diff --git a/e2e/tests/interchain_accounts/incentivized_test.go b/e2e/tests/interchain_accounts/incentivized_test.go
index c31f402ac4c..b3b51e4e2cd 100644
--- a/e2e/tests/interchain_accounts/incentivized_test.go
+++ b/e2e/tests/interchain_accounts/incentivized_test.go
@@ -8,15 +8,15 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- interchaintest "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ interchaintest "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/interchain_accounts/localhost_test.go b/e2e/tests/interchain_accounts/localhost_test.go
index d278dc0eaab..c9cff3606e5 100644
--- a/e2e/tests/interchain_accounts/localhost_test.go
+++ b/e2e/tests/interchain_accounts/localhost_test.go
@@ -8,15 +8,15 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/interchain_accounts/params_test.go b/e2e/tests/interchain_accounts/params_test.go
index 49f668b3cc5..c1e9dbe69bb 100644
--- a/e2e/tests/interchain_accounts/params_test.go
+++ b/e2e/tests/interchain_accounts/params_test.go
@@ -8,17 +8,17 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ govtypes "cosmossdk.io/x/gov/types"
+ paramsproposaltypes "cosmossdk.io/x/params/types/proposal"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- paramsproposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/interchain_accounts/query_test.go b/e2e/tests/interchain_accounts/query_test.go
index 1d7c45af24a..a17a211bd94 100644
--- a/e2e/tests/interchain_accounts/query_test.go
+++ b/e2e/tests/interchain_accounts/query_test.go
@@ -10,11 +10,12 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
+ banktypes "cosmossdk.io/x/bank/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
@@ -80,7 +81,7 @@ func (s *InterchainAccountsQueryTestSuite) TestInterchainAccountsQuery() {
t.Run("query via interchain account", func(t *testing.T) {
// the host account need not be funded
t.Run("broadcast query packet", func(t *testing.T) {
- balanceQuery := banktypes.NewQueryBalanceRequest(chainBAccount.Address(), chainB.Config().Denom)
+ balanceQuery := banktypes.NewQueryBalanceRequest(chainBAccount.FormattedAddress(), chainB.Config().Denom)
queryBz, err := balanceQuery.Marshal()
s.Require().NoError(err)
diff --git a/e2e/tests/interchain_accounts/upgrades_test.go b/e2e/tests/interchain_accounts/upgrades_test.go
index e4595478eb8..1ba6d81210e 100644
--- a/e2e/tests/interchain_accounts/upgrades_test.go
+++ b/e2e/tests/interchain_accounts/upgrades_test.go
@@ -8,16 +8,16 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ govtypes "cosmossdk.io/x/gov/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/transfer/authz_test.go b/e2e/tests/transfer/authz_test.go
index 2c0efe6cd79..b7ded70ee2c 100644
--- a/e2e/tests/transfer/authz_test.go
+++ b/e2e/tests/transfer/authz_test.go
@@ -6,16 +6,16 @@ import (
"context"
"testing"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ "cosmossdk.io/x/authz"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
- "github.com/cosmos/cosmos-sdk/x/authz"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/transfer/base_test.go b/e2e/tests/transfer/base_test.go
index b5abf1b2e79..0fbe809f160 100644
--- a/e2e/tests/transfer/base_test.go
+++ b/e2e/tests/transfer/base_test.go
@@ -7,8 +7,8 @@ import (
"testing"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
diff --git a/e2e/tests/transfer/forwarding_test.go b/e2e/tests/transfer/forwarding_test.go
index 47a9bbe6537..c81ef6467b0 100644
--- a/e2e/tests/transfer/forwarding_test.go
+++ b/e2e/tests/transfer/forwarding_test.go
@@ -7,8 +7,8 @@ import (
"testing"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
"github.com/cosmos/ibc-go/e2e/testsuite"
diff --git a/e2e/tests/transfer/incentivized_test.go b/e2e/tests/transfer/incentivized_test.go
index 1982b416512..134c64e440b 100644
--- a/e2e/tests/transfer/incentivized_test.go
+++ b/e2e/tests/transfer/incentivized_test.go
@@ -8,8 +8,8 @@ import (
"testing"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
diff --git a/e2e/tests/transfer/localhost_test.go b/e2e/tests/transfer/localhost_test.go
index 03ff062cc5a..2848917a7c7 100644
--- a/e2e/tests/transfer/localhost_test.go
+++ b/e2e/tests/transfer/localhost_test.go
@@ -6,8 +6,8 @@ import (
"context"
"testing"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
"github.com/cosmos/ibc-go/e2e/testsuite"
diff --git a/e2e/tests/transfer/send_enabled_test.go b/e2e/tests/transfer/send_enabled_test.go
index 0f01e9c5aed..d9cad3905f6 100644
--- a/e2e/tests/transfer/send_enabled_test.go
+++ b/e2e/tests/transfer/send_enabled_test.go
@@ -6,11 +6,11 @@ import (
"context"
"testing"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- paramsproposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
+ govtypes "cosmossdk.io/x/gov/types"
+ paramsproposaltypes "cosmossdk.io/x/params/types/proposal"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/transfer/send_receive_test.go b/e2e/tests/transfer/send_receive_test.go
index 18418bd0b9f..0271e54eca9 100644
--- a/e2e/tests/transfer/send_receive_test.go
+++ b/e2e/tests/transfer/send_receive_test.go
@@ -6,11 +6,11 @@ import (
"context"
"testing"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- paramsproposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
+ govtypes "cosmossdk.io/x/gov/types"
+ paramsproposaltypes "cosmossdk.io/x/params/types/proposal"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/transfer/upgradesv1_test.go b/e2e/tests/transfer/upgradesv1_test.go
index f3c7472dafb..4a8cb17bcc3 100644
--- a/e2e/tests/transfer/upgradesv1_test.go
+++ b/e2e/tests/transfer/upgradesv1_test.go
@@ -6,8 +6,8 @@ import (
"context"
"testing"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
diff --git a/e2e/tests/transfer/upgradesv2_test.go b/e2e/tests/transfer/upgradesv2_test.go
index 3e52655bff1..c7832e469f8 100644
--- a/e2e/tests/transfer/upgradesv2_test.go
+++ b/e2e/tests/transfer/upgradesv2_test.go
@@ -7,8 +7,8 @@ import (
"sync"
"testing"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
@@ -102,7 +102,7 @@ func (s *TransferChannelUpgradesTestSuite) TestChannelUpgrade_WithFeeMiddleware_
s.StartRelayer(relayer, testName)
})
- s.Require().NoError(test.WaitForBlocks(ctx, 10, chainA, chainB), "failed to wait for blocks")
+ s.Require().NoError(test.WaitForBlocks(ctx, 20, chainA, chainB), "failed to wait for blocks")
t.Run("packets are relayed between chain A and chain B", func(t *testing.T) {
// packet from chain A to chain B
diff --git a/e2e/tests/upgrades/genesis_test.go b/e2e/tests/upgrades/genesis_test.go
index 84f64a28cfc..7ced0705899 100644
--- a/e2e/tests/upgrades/genesis_test.go
+++ b/e2e/tests/upgrades/genesis_test.go
@@ -8,17 +8,17 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
"github.com/stretchr/testify/suite"
"go.uber.org/zap"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
diff --git a/e2e/tests/upgrades/upgrade_test.go b/e2e/tests/upgrades/upgrade_test.go
index da73a1e5897..d5751f5639a 100644
--- a/e2e/tests/upgrades/upgrade_test.go
+++ b/e2e/tests/upgrades/upgrade_test.go
@@ -10,18 +10,18 @@ import (
"time"
"github.com/cosmos/gogoproto/proto"
- interchaintest "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ interchaintest "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ govtypes "cosmossdk.io/x/gov/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
e2erelayer "github.com/cosmos/ibc-go/e2e/relayer"
"github.com/cosmos/ibc-go/e2e/testsuite"
@@ -74,18 +74,13 @@ func (s *UpgradeTestSuite) UpgradeChain(ctx context.Context, chain *cosmos.Cosmo
Info: fmt.Sprintf("upgrade version test from %s to %s", currentVersion, upgradeVersion),
}
- if testvalues.GovV1MessagesFeatureReleases.IsSupported(chain.Config().Images[0].Version) {
- msgSoftwareUpgrade := &upgradetypes.MsgSoftwareUpgrade{
- Plan: plan,
- Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- }
-
- s.ExecuteAndPassGovV1Proposal(ctx, msgSoftwareUpgrade, chain, wallet)
- } else {
- upgradeProposal := upgradetypes.NewSoftwareUpgradeProposal(fmt.Sprintf("upgrade from %s to %s", currentVersion, upgradeVersion), "upgrade chain E2E test", plan)
- s.ExecuteAndPassGovV1Beta1Proposal(ctx, chain, wallet, upgradeProposal)
+ msgSoftwareUpgrade := &upgradetypes.MsgSoftwareUpgrade{
+ Plan: plan,
+ Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(),
}
+ s.ExecuteAndPassGovV1Proposal(ctx, msgSoftwareUpgrade, chain, wallet)
+
err = test.WaitForCondition(time.Minute*2, time.Second*2, func() (bool, error) {
status, err := chain.GetNode().Client.Status(ctx)
if err != nil {
diff --git a/e2e/tests/wasm/feature_releases.go b/e2e/tests/wasm/feature_releases.go
deleted file mode 100644
index 3972369999a..00000000000
--- a/e2e/tests/wasm/feature_releases.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package wasm
-
-import "github.com/cosmos/ibc-go/e2e/semverutil"
-
-var govV1FailedReasonFeatureReleases = semverutil.FeatureReleases{
- MajorVersion: "v8",
-}
diff --git a/e2e/tests/wasm/grandpa_test.go b/e2e/tests/wasm/grandpa_test.go
deleted file mode 100644
index 15cbeba95f2..00000000000
--- a/e2e/tests/wasm/grandpa_test.go
+++ /dev/null
@@ -1,650 +0,0 @@
-//go:build !test_e2e
-
-package wasm
-
-import (
- "context"
- "crypto/sha256"
- "encoding/hex"
- "fmt"
- "io"
- "os"
- "testing"
- "time"
-
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos"
- "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- "github.com/strangelove-ventures/interchaintest/v8/testutil"
- testifysuite "github.com/stretchr/testify/suite"
-
- sdkmath "cosmossdk.io/math"
-
- authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
-
- "github.com/cosmos/ibc-go/e2e/testsuite"
- "github.com/cosmos/ibc-go/e2e/testsuite/query"
- "github.com/cosmos/ibc-go/e2e/testvalues"
- wasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
- transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
- clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
- ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
-)
-
-const (
- composable = "composable"
- simd = "simd"
- wasmSimdImage = "ghcr.io/cosmos/ibc-go-wasm-simd"
-
- defaultWasmClientID = "08-wasm-0"
-)
-
-func TestGrandpaTestSuite(t *testing.T) {
- // this test suite only works with the hyperspace relayer, for now hard code this here.
- // this will enforce that the hyperspace relayer is used in CI.
- t.Setenv(testsuite.RelayerIDEnv, "hyperspace")
-
- // TODO: this value should be passed in via the config file / CI, not hard coded in the test.
- // This configuration can be handled in https://github.com/cosmos/ibc-go/issues/4697
- if testsuite.IsCI() && !testsuite.IsFork() {
- t.Setenv(testsuite.ChainImageEnv, wasmSimdImage)
- }
-
- // wasm tests require a longer voting period to account for the time it takes to upload a contract.
- testvalues.VotingPeriod = time.Minute * 5
-
- validateTestConfig()
- testifysuite.Run(t, new(GrandpaTestSuite))
-}
-
-type GrandpaTestSuite struct {
- testsuite.E2ETestSuite
-}
-
-func (s *GrandpaTestSuite) SetupSuite() {
- s.SetupChains(context.Background(), nil, func(options *testsuite.ChainOptions) {
- // configure chain A (polkadot)
- options.ChainSpecs[0].ChainName = composable
- options.ChainSpecs[0].Type = "polkadot"
- options.ChainSpecs[0].ChainID = "rococo-local"
- options.ChainSpecs[0].Name = "composable"
- options.ChainSpecs[0].Images = []ibc.DockerImage{
- // TODO: https://github.com/cosmos/ibc-go/issues/4965
- {
- Repository: "ghcr.io/misko9/polkadot-node",
- Version: "v39",
- UidGid: "1000:1000",
- },
- {
- Repository: "ghcr.io/misko9/parachain-node",
- Version: "20231122v39",
- UidGid: "1000:1000",
- },
- }
- options.ChainSpecs[0].Bin = "polkadot"
- options.ChainSpecs[0].Bech32Prefix = composable
- options.ChainSpecs[0].Denom = "uDOT"
- options.ChainSpecs[0].GasPrices = ""
- options.ChainSpecs[0].GasAdjustment = 0
- options.ChainSpecs[0].TrustingPeriod = ""
- options.ChainSpecs[0].CoinType = "354"
-
- // these values are set by default for our cosmos chains, we need to explicitly remove them here.
- options.ChainSpecs[0].ModifyGenesis = nil
- options.ChainSpecs[0].ConfigFileOverrides = nil
- options.ChainSpecs[0].EncodingConfig = nil
-
- // configure chain B (cosmos)
- options.ChainSpecs[1].ChainName = simd // Set chain name so that a suffix with a "dash" is not appended (required for hyperspace)
- options.ChainSpecs[1].Type = "cosmos"
- options.ChainSpecs[1].Name = "simd"
- options.ChainSpecs[1].ChainID = simd
- options.ChainSpecs[1].Bin = simd
- options.ChainSpecs[1].Bech32Prefix = "cosmos"
-
- // TODO: hyperspace relayer assumes a denom of "stake", hard code this here right now.
- // https://github.com/cosmos/ibc-go/issues/4964
- options.ChainSpecs[1].Denom = "stake"
- options.ChainSpecs[1].GasPrices = "0.00stake"
- options.ChainSpecs[1].GasAdjustment = 1
- options.ChainSpecs[1].TrustingPeriod = "504h"
- options.ChainSpecs[1].CoinType = "118"
-
- options.ChainSpecs[1].ChainConfig.NoHostMount = false
- options.ChainSpecs[1].ConfigFileOverrides = getConfigOverrides()
- options.ChainSpecs[1].EncodingConfig = testsuite.SDKEncodingConfig()
- })
-}
-
-func (s *GrandpaTestSuite) SetupGrandpaPath(testName string) {
- ctx := context.TODO()
- chainA, chainB := s.GetChains()
-
- polkadotChain, ok := chainA.(*polkadot.PolkadotChain)
- s.Require().True(ok)
-
- cosmosChain, ok := chainB.(*cosmos.CosmosChain)
- s.Require().True(ok)
-
- file, err := os.Open("contracts/ics10_grandpa_cw.wasm.gz")
- s.Require().NoError(err)
-
- cosmosWallet := s.CreateUserOnChainB(ctx, testvalues.StartingTokenAmount)
-
- err = testutil.WaitForBlocks(ctx, 1, cosmosChain)
- s.Require().NoError(err, "cosmos chain failed to make blocks")
-
- s.T().Logf("waited for blocks cosmos wallet")
-
- checksum := s.PushNewWasmClientProposal(ctx, cosmosChain, cosmosWallet, file)
- s.Require().NotEmpty(checksum, "checksum was empty but should not have been")
- s.T().Log("pushed wasm client proposal")
-
- r := s.GetRelayerForTest(testName)
-
- err = r.SetClientContractHash(ctx, s.GetRelayerExecReporter(), cosmosChain.Config(), checksum)
- s.Require().NoError(err)
- s.T().Logf("set contract hash %s", checksum)
-
- err = testutil.WaitForBlocks(ctx, 1, polkadotChain)
- s.Require().NoError(err, "polkadot chain failed to make blocks")
-
- channelOpts := ibc.DefaultChannelOpts()
- channelOpts.Version = transfertypes.V1
- s.CreatePaths(ibc.DefaultClientOpts(), channelOpts, testName)
-}
-
-// TestMsgTransfer_Succeeds_GrandpaContract features
-// * sets up a Polkadot parachain
-// * sets up a Cosmos chain
-// * sets up the Hyperspace relayer
-// * Funds a user wallet on both chains
-// * Pushes a wasm client contract to the Cosmos chain
-// * create client, connection, and channel in relayer
-// * start relayer
-// * send transfer over ibc
-func (s *GrandpaTestSuite) TestMsgTransfer_Succeeds_GrandpaContract() {
- ctx := context.Background()
- t := s.T()
-
- testName := t.Name()
- s.SetupGrandpaPath(testName)
-
- chainA, chainB := s.GetChains()
-
- polkadotChain, ok := chainA.(*polkadot.PolkadotChain)
- s.Require().True(ok)
-
- cosmosChain, ok := chainB.(*cosmos.CosmosChain)
- s.Require().True(ok)
-
- r := s.GetRelayerForTest(testName)
-
- eRep := s.GetRelayerExecReporter()
-
- // Fund users on both cosmos and parachain, mints Asset 1 for Alice
- fundAmount := int64(12_333_000_000_000)
- polkadotUser, cosmosUser := s.fundUsers(ctx, fundAmount, polkadotChain, cosmosChain)
-
- // TODO: this can be refactored to broadcast a MsgTransfer instead of CLI.
- // https://github.com/cosmos/ibc-go/issues/4963
- amountToSend := int64(1_770_000)
- transfer := ibc.WalletAmount{
- Address: polkadotUser.FormattedAddress(),
- Denom: cosmosChain.Config().Denom,
- Amount: sdkmath.NewInt(amountToSend),
- }
-
- // Start relayer
- s.Require().NoError(r.StartRelayer(ctx, eRep, s.GetPaths(testName)...))
-
- t.Run("send successful IBC transfer from Cosmos to Polkadot parachain", func(t *testing.T) {
- // Send 1.77 stake from cosmosUser to parachainUser
- tx, err := cosmosChain.SendIBCTransfer(ctx, "channel-0", cosmosUser.KeyName(), transfer, ibc.TransferOptions{})
- s.Require().NoError(tx.Validate(), "source ibc transfer tx is invalid")
- s.Require().NoError(err)
- // verify token balance for cosmos user has decreased
- balance, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), cosmosChain.Config().Denom)
- s.Require().NoError(err)
- s.Require().Equal(balance, sdkmath.NewInt(fundAmount-amountToSend), "unexpected cosmos user balance after first tx")
- err = testutil.WaitForBlocks(ctx, 15, cosmosChain, polkadotChain)
- s.Require().NoError(err)
-
- // Verify tokens arrived on parachain user
- parachainUserStake, err := polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address()), 2)
- s.Require().NoError(err)
- s.Require().Equal(amountToSend, parachainUserStake.Amount.Int64(), "unexpected parachain user balance after first tx")
- })
-
- t.Run("send two successful IBC transfers from Polkadot parachain to Cosmos, first with ibc denom, second with parachain denom", func(t *testing.T) {
- // Send 1.16 stake from parachainUser to cosmosUser
- amountToReflect := int64(1_160_000)
- reflectTransfer := ibc.WalletAmount{
- Address: cosmosUser.FormattedAddress(),
- Denom: "2", // stake
- Amount: sdkmath.NewInt(amountToReflect),
- }
- _, err := polkadotChain.SendIBCTransfer(ctx, "channel-0", polkadotUser.KeyName(), reflectTransfer, ibc.TransferOptions{})
- s.Require().NoError(err)
-
- // Send 1.88 "UNIT" from Alice to cosmosUser
- amountUnits := sdkmath.NewInt(1_880_000_000_000)
- unitTransfer := ibc.WalletAmount{
- Address: cosmosUser.FormattedAddress(),
- Denom: "1", // UNIT
- Amount: amountUnits,
- }
- _, err = polkadotChain.SendIBCTransfer(ctx, "channel-0", "alice", unitTransfer, ibc.TransferOptions{})
- s.Require().NoError(err)
-
- // Wait for MsgRecvPacket on cosmos chain
- finalStakeBal := sdkmath.NewInt(fundAmount - amountToSend + amountToReflect)
- err = cosmos.PollForBalance(ctx, cosmosChain, 20, ibc.WalletAmount{
- Address: cosmosUser.FormattedAddress(),
- Denom: cosmosChain.Config().Denom,
- Amount: finalStakeBal,
- })
- s.Require().NoError(err)
-
- // Wait for a new update state
- err = testutil.WaitForBlocks(ctx, 5, cosmosChain, polkadotChain)
- s.Require().NoError(err)
-
- // Verify cosmos user's final "stake" balance
- cosmosUserStakeBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), cosmosChain.Config().Denom)
- s.Require().NoError(err)
- s.Require().True(cosmosUserStakeBal.Equal(finalStakeBal))
-
- // Verify cosmos user's final "unit" balance
- denom := transfertypes.NewDenom("UNIT", transfertypes.NewHop("transfer", "channel-0"))
- cosmosUserUnitBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), denom.IBCDenom())
- s.Require().NoError(err)
- s.Require().True(cosmosUserUnitBal.Equal(amountUnits))
-
- // Verify parachain user's final "unit" balance (will be less than expected due gas costs for stake tx)
- parachainUserUnits, err := polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address()), 1)
- s.Require().NoError(err)
- s.Require().True(parachainUserUnits.Amount.LTE(sdkmath.NewInt(fundAmount)), "parachain user's final unit amount not expected")
-
- // Verify parachain user's final "stake" balance
- parachainUserStake, err := polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address()), 2)
- s.Require().NoError(err)
- s.Require().True(parachainUserStake.Amount.Equal(sdkmath.NewInt(amountToSend-amountToReflect)), "parachain user's final stake amount not expected")
- })
-}
-
-// TestMsgTransfer_TimesOut_GrandpaContract
-// sets up cosmos and polkadot chains, hyperspace relayer, and funds users on both chains
-// * sends transfer over ibc channel, this transfer should timeout
-func (s *GrandpaTestSuite) TestMsgTransfer_TimesOut_GrandpaContract() {
- ctx := context.Background()
- t := s.T()
-
- testName := t.Name()
- s.SetupGrandpaPath(testName)
-
- chainA, chainB := s.GetChains()
-
- polkadotChain, ok := chainA.(*polkadot.PolkadotChain)
- s.Require().True(ok)
-
- cosmosChain, ok := chainB.(*cosmos.CosmosChain)
- s.Require().True(ok)
-
- r := s.GetRelayerForTest(testName)
-
- eRep := s.GetRelayerExecReporter()
-
- // Fund users on both cosmos and parachain, mints Asset 1 for Alice
- fundAmount := int64(12_333_000_000_000)
- polkadotUser, cosmosUser := s.fundUsers(ctx, fundAmount, polkadotChain, cosmosChain)
-
- // TODO: this can be refactored to broadcast a MsgTransfer instead of CLI.
- // https://github.com/cosmos/ibc-go/issues/4963
- amountToSend := int64(1_770_000)
- transfer := ibc.WalletAmount{
- Address: polkadotUser.FormattedAddress(),
- Denom: cosmosChain.Config().Denom,
- Amount: sdkmath.NewInt(amountToSend),
- }
-
- pathName := testsuite.GetPathName(0)
-
- // Start relayer
- s.Require().NoError(r.StartRelayer(ctx, eRep, pathName))
-
- t.Run("IBC transfer from Cosmos chain to Polkadot parachain times out", func(t *testing.T) {
- // Stop relayer
- s.Require().NoError(r.StopRelayer(ctx, s.GetRelayerExecReporter()))
-
- tx, err := cosmosChain.SendIBCTransfer(ctx, "channel-0", cosmosUser.KeyName(), transfer, ibc.TransferOptions{Timeout: testvalues.ImmediatelyTimeout()})
- s.Require().NoError(err)
- s.Require().NoError(tx.Validate(), "source ibc transfer tx is invalid")
- time.Sleep(time.Nanosecond * 1) // want it to timeout immediately
-
- // check that tokens are escrowed
- actualBalance, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), cosmosChain.Config().Denom)
- s.Require().NoError(err)
- expected := fundAmount - amountToSend
- s.Require().Equal(expected, actualBalance.Int64())
-
- // start relayer
- s.Require().NoError(r.StartRelayer(ctx, s.GetRelayerExecReporter(), testsuite.GetPathName(0)))
- err = testutil.WaitForBlocks(ctx, 15, polkadotChain, cosmosChain)
- s.Require().NoError(err)
-
- // ensure that receiver on parachain did not receive any tokens
- receiverBalance, err := polkadotChain.GetIbcBalance(ctx, polkadotUser.FormattedAddress(), 2)
- s.Require().NoError(err)
- s.Require().Equal(int64(0), receiverBalance.Amount.Int64())
-
- // check that tokens have been refunded to sender address
- senderBalance, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), cosmosChain.Config().Denom)
- s.Require().NoError(err)
- s.Require().Equal(fundAmount, senderBalance.Int64())
- })
-}
-
-// TestMsgMigrateContract_Success_GrandpaContract features
-// * sets up a Polkadot parachain
-// * sets up a Cosmos chain
-// * sets up the Hyperspace relayer
-// * Funds a user wallet on both chains
-// * Pushes a wasm client contract to the Cosmos chain
-// * create client in relayer
-// * Pushes a new wasm client contract to the Cosmos chain
-// * Migrates the wasm client contract
-func (s *GrandpaTestSuite) TestMsgMigrateContract_Success_GrandpaContract() {
- t := s.T()
- ctx := context.Background()
-
- testName := t.Name()
- s.SetupGrandpaPath(testName)
-
- _, chainB := s.GetChains()
-
- cosmosChain, ok := chainB.(*cosmos.CosmosChain)
- s.Require().True(ok)
-
- cosmosWallet := s.CreateUserOnChainB(ctx, testvalues.StartingTokenAmount)
-
- // Do not start relayer
-
- // This contract is a dummy contract that will always succeed migration.
- // Other entry points are unimplemented.
- migrateFile, err := os.Open("contracts/migrate_success.wasm.gz")
- s.Require().NoError(err)
-
- // First Store the code
- newChecksum := s.PushNewWasmClientProposal(ctx, cosmosChain, cosmosWallet, migrateFile)
- s.Require().NotEmpty(newChecksum, "checksum was empty but should not have been")
-
- newChecksumBz, err := hex.DecodeString(newChecksum)
- s.Require().NoError(err)
-
- // Attempt to migrate the contract
- message := wasmtypes.NewMsgMigrateContract(
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- defaultWasmClientID,
- newChecksumBz,
- []byte("{}"),
- )
-
- s.ExecuteAndPassGovV1Proposal(ctx, message, cosmosChain, cosmosWallet)
-
- clientState, err := query.ClientState(ctx, cosmosChain, defaultWasmClientID)
- s.Require().NoError(err)
-
- wasmClientState, ok := clientState.(*wasmtypes.ClientState)
- s.Require().True(ok)
-
- s.Require().Equal(newChecksumBz, wasmClientState.Checksum)
-}
-
-// TestMsgMigrateContract_ContractError_GrandpaContract features
-// * sets up a Polkadot parachain
-// * sets up a Cosmos chain
-// * sets up the Hyperspace relayer
-// * Funds a user wallet on both chains
-// * Pushes a wasm client contract to the Cosmos chain
-// * create client in relayer
-// * Pushes a new wasm client contract to the Cosmos chain
-// * Migrates the wasm client contract with a contract that will always fail migration
-func (s *GrandpaTestSuite) TestMsgMigrateContract_ContractError_GrandpaContract() {
- t := s.T()
- ctx := context.Background()
-
- testName := t.Name()
- s.SetupGrandpaPath(testName)
-
- _, chainB := s.GetChains()
-
- cosmosChain, ok := chainB.(*cosmos.CosmosChain)
- s.Require().True(ok)
-
- cosmosWallet := s.CreateUserOnChainB(ctx, testvalues.StartingTokenAmount)
-
- // Do not start the relayer
-
- // This contract is a dummy contract that will always fail migration.
- // Other entry points are unimplemented.
- migrateFile, err := os.Open("contracts/migrate_error.wasm.gz")
- s.Require().NoError(err)
-
- // First Store the code
- newChecksum := s.PushNewWasmClientProposal(ctx, cosmosChain, cosmosWallet, migrateFile)
- s.Require().NotEmpty(newChecksum, "checksum was empty but should not have been")
-
- newChecksumBz, err := hex.DecodeString(newChecksum)
- s.Require().NoError(err)
-
- // Attempt to migrate the contract
- message := wasmtypes.NewMsgMigrateContract(
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- defaultWasmClientID,
- newChecksumBz,
- []byte("{}"),
- )
-
- err = s.ExecuteGovV1Proposal(ctx, message, cosmosChain, cosmosWallet)
- s.Require().Error(err)
-
- version := cosmosChain.Nodes()[0].Image.Version
- if govV1FailedReasonFeatureReleases.IsSupported(version) {
- // This is the error string that is returned from the contract
- s.Require().ErrorContains(err, "migration not supported")
- }
-}
-
-// TestRecoverClient_Succeeds_GrandpaContract features:
-// * setup cosmos and polkadot substrates nodes
-// * funds test user wallets on both chains
-// * stores a wasm client contract on the cosmos chain
-// * creates a subject client using the hyperspace relayer
-// * waits the expiry period and asserts the subject client status has expired
-// * creates a substitute client using the hyperspace relayer
-// * executes a gov proposal to recover the expired client
-// * asserts the status of the subject client has been restored to active
-// NOTE: The testcase features a modified grandpa client contract compiled as:
-// - ics10_grandpa_cw_expiry.wasm.gz
-// This contract modifies the unbonding period to 1600s with the trusting period being calculated as (unbonding period / 3).
-func (s *GrandpaTestSuite) TestRecoverClient_Succeeds_GrandpaContract() {
- t := s.T()
-
- ctx := context.Background()
-
- testName := t.Name()
- s.SetupGrandpaPath(testName)
-
- // set the trusting period to a value which will still be valid upon client creation, but invalid before the first update
- // the contract uses 1600s as the unbonding period with the trusting period evaluating to (unbonding period / 3)
- modifiedTrustingPeriod := (1600 * time.Second) / 3
-
- chainA, chainB := s.GetChains()
-
- polkadotChain, ok := chainA.(*polkadot.PolkadotChain)
- s.Require().True(ok)
-
- cosmosChain, ok := chainB.(*cosmos.CosmosChain)
- s.Require().True(ok)
-
- r := s.GetRelayerForTest(testName)
-
- cosmosWallet := s.CreateUserOnChainB(ctx, testvalues.StartingTokenAmount)
-
- file, err := os.Open("contracts/ics10_grandpa_cw_expiry.wasm.gz")
- s.Require().NoError(err)
-
- codeHash := s.PushNewWasmClientProposal(ctx, cosmosChain, cosmosWallet, file)
- s.Require().NotEmpty(codeHash, "codehash was empty but should not have been")
-
- eRep := s.GetRelayerExecReporter()
-
- // Set client contract hash in cosmos chain config
- err = r.SetClientContractHash(ctx, eRep, cosmosChain.Config(), codeHash)
- s.Require().NoError(err)
-
- // Ensure parachain has started (starts 1 session/epoch after relay chain)
- err = testutil.WaitForBlocks(ctx, 1, polkadotChain)
- s.Require().NoError(err, "polkadot chain failed to make blocks")
-
- // Fund users on both cosmos and parachain, mints Asset 1 for Alice
- fundAmount := int64(12_333_000_000_000)
- _, cosmosUser := s.fundUsers(ctx, fundAmount, polkadotChain, cosmosChain)
-
- // create client pair with subject (bad trusting period)
- subjectClientID := clienttypes.FormatClientIdentifier(wasmtypes.Wasm, 0)
- // TODO: The hyperspace relayer makes no use of create client opts
- // https://github.com/strangelove-ventures/interchaintest/blob/main/relayer/hyperspace/hyperspace_commander.go#L83
- s.SetupClients(ctx, r, ibc.CreateClientOptions{
- TrustingPeriod: modifiedTrustingPeriod.String(), // NOTE: this is hardcoded within the cw contract: ics10_grapnda_cw_expiry.wasm
- })
-
- // wait for block
- err = testutil.WaitForBlocks(ctx, 1, cosmosChain, polkadotChain)
- s.Require().NoError(err)
-
- // wait the bad trusting period
- time.Sleep(modifiedTrustingPeriod)
-
- // create client pair with substitute
- substituteClientID := clienttypes.FormatClientIdentifier(wasmtypes.Wasm, 1)
- s.SetupClients(ctx, r, ibc.DefaultClientOpts())
-
- // wait for block
- err = testutil.WaitForBlocks(ctx, 1, cosmosChain, polkadotChain)
- s.Require().NoError(err)
-
- // ensure subject client is expired
- status, err := query.ClientStatus(ctx, cosmosChain, subjectClientID)
- s.Require().NoError(err)
- s.Require().Equal(ibcexported.Expired.String(), status, "unexpected subject client status")
-
- // ensure substitute client is active
- status, err = query.ClientStatus(ctx, cosmosChain, substituteClientID)
- s.Require().NoError(err)
- s.Require().Equal(ibcexported.Active.String(), status, "unexpected substitute client status")
-
- // create and execute a client recovery proposal
- authority, err := query.ModuleAccountAddress(ctx, govtypes.ModuleName, cosmosChain)
- s.Require().NoError(err)
-
- msgRecoverClient := clienttypes.NewMsgRecoverClient(authority.String(), subjectClientID, substituteClientID)
- s.Require().NotNil(msgRecoverClient)
- s.ExecuteAndPassGovV1Proposal(ctx, msgRecoverClient, cosmosChain, cosmosUser)
-
- // ensure subject client is active
- status, err = query.ClientStatus(ctx, cosmosChain, subjectClientID)
- s.Require().NoError(err)
- s.Require().Equal(ibcexported.Active.String(), status)
-
- // ensure substitute client is active
- status, err = query.ClientStatus(ctx, cosmosChain, substituteClientID)
- s.Require().NoError(err)
- s.Require().Equal(ibcexported.Active.String(), status)
-}
-
-// extractChecksumFromGzippedContent takes a gzipped wasm contract and returns the checksum.
-func (s *GrandpaTestSuite) extractChecksumFromGzippedContent(zippedContent []byte) string {
- content, err := wasmtypes.Uncompress(zippedContent, wasmtypes.MaxWasmSize)
- s.Require().NoError(err)
-
- checksum32 := sha256.Sum256(content)
- return hex.EncodeToString(checksum32[:])
-}
-
-// PushNewWasmClientProposal submits a new wasm client governance proposal to the chain.
-func (s *GrandpaTestSuite) PushNewWasmClientProposal(ctx context.Context, chain *cosmos.CosmosChain, wallet ibc.Wallet, proposalContentReader io.Reader) string {
- zippedContent, err := io.ReadAll(proposalContentReader)
- s.Require().NoError(err)
-
- computedChecksum := s.extractChecksumFromGzippedContent(zippedContent)
-
- s.Require().NoError(err)
- message := wasmtypes.MsgStoreCode{
- Signer: authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- WasmByteCode: zippedContent,
- }
-
- s.ExecuteAndPassGovV1Proposal(ctx, &message, chain, wallet)
-
- codeResp, err := query.GRPCQuery[wasmtypes.QueryCodeResponse](ctx, chain, &wasmtypes.QueryCodeRequest{Checksum: computedChecksum})
- s.Require().NoError(err)
-
- checksumBz := codeResp.Data
- checksum32 := sha256.Sum256(checksumBz)
- actualChecksum := hex.EncodeToString(checksum32[:])
- s.Require().Equal(computedChecksum, actualChecksum, "checksum returned from query did not match the computed checksum")
-
- return actualChecksum
-}
-
-func (s *GrandpaTestSuite) fundUsers(ctx context.Context, fundAmount int64, polkadotChain ibc.Chain, cosmosChain ibc.Chain) (ibc.Wallet, ibc.Wallet) {
- users := interchaintest.GetAndFundTestUsers(s.T(), ctx, "user", sdkmath.NewInt(fundAmount), polkadotChain, cosmosChain)
- polkadotUser, cosmosUser := users[0], users[1]
- err := testutil.WaitForBlocks(ctx, 2, polkadotChain, cosmosChain) // Only waiting 1 block is flaky for parachain
- s.Require().NoError(err, "cosmos or polkadot chain failed to make blocks")
-
- // Check balances are correct
- amount := sdkmath.NewInt(fundAmount)
- polkadotUserAmount, err := polkadotChain.GetBalance(ctx, polkadotUser.FormattedAddress(), polkadotChain.Config().Denom)
- s.Require().NoError(err)
- s.Require().True(polkadotUserAmount.Equal(amount), "Initial polkadot user amount not expected")
-
- parachainUserAmount, err := polkadotChain.GetBalance(ctx, polkadotUser.FormattedAddress(), "")
- s.Require().NoError(err)
- s.Require().True(parachainUserAmount.Equal(amount), "Initial parachain user amount not expected")
-
- cosmosUserAmount, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), cosmosChain.Config().Denom)
- s.Require().NoError(err)
- s.Require().True(cosmosUserAmount.Equal(amount), "Initial cosmos user amount not expected")
-
- return polkadotUser, cosmosUser
-}
-
-// validateTestConfig ensures that the given test config is valid for this test suite.
-func validateTestConfig() {
- tc := testsuite.LoadConfig()
- if tc.ActiveRelayer != "hyperspace" {
- panic(fmt.Errorf("hyperspace relayer must be specified"))
- }
-}
-
-// getConfigOverrides returns configuration overrides that will be applied to the simapp.
-func getConfigOverrides() map[string]any {
- consensusOverrides := make(testutil.Toml)
- blockTime := 5
- blockT := (time.Duration(blockTime) * time.Second).String()
- consensusOverrides["timeout_commit"] = blockT
- consensusOverrides["timeout_propose"] = blockT
-
- configTomlOverrides := make(testutil.Toml)
- configTomlOverrides["consensus"] = consensusOverrides
- configTomlOverrides["log_level"] = "info"
-
- configFileOverrides := make(map[string]any)
- configFileOverrides["config/config.toml"] = configTomlOverrides
- return configFileOverrides
-}
diff --git a/e2e/tests/wasm/upgrade_test.go b/e2e/tests/wasm/upgrade_test.go
index 5d5533432f6..dd848b7c79c 100644
--- a/e2e/tests/wasm/upgrade_test.go
+++ b/e2e/tests/wasm/upgrade_test.go
@@ -13,15 +13,15 @@ import (
"testing"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
+ govtypes "cosmossdk.io/x/gov/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/e2e/testsuite"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
@@ -54,7 +54,6 @@ func (s *IBCWasmUpgradeTestSuite) TestIBCWasmChainUpgrade() {
t := s.T()
ctx := context.Background()
- // TODO(chatton): this test is still creating a relayer and a channel, but it is not using them.
chain := s.GetAllChains()[0]
checksum := ""
@@ -90,8 +89,13 @@ func (s *IBCWasmUpgradeTestSuite) UpgradeChain(ctx context.Context, chain *cosmo
Info: fmt.Sprintf("upgrade version test from %s to %s", currentVersion, upgradeVersion),
}
- upgradeProposal := upgradetypes.NewSoftwareUpgradeProposal(fmt.Sprintf("upgrade from %s to %s", currentVersion, upgradeVersion), "upgrade chain E2E test", plan)
- s.ExecuteAndPassGovV1Beta1Proposal(ctx, chain, wallet, upgradeProposal)
+ upgradeProposal := upgradetypes.SoftwareUpgradeProposal{
+ Title: fmt.Sprintf("upgrade from %s to %s", currentVersion, upgradeVersion),
+ Description: "upgrade chain E2E test",
+ Plan: plan,
+ }
+
+ s.ExecuteAndPassGovV1Proposal(ctx, &upgradeProposal, chain, wallet)
height, err := chain.Height(ctx)
s.Require().NoError(err, "error fetching height before upgrade")
diff --git a/e2e/testsuite/codec.go b/e2e/testsuite/codec.go
index 3ca820500c3..da8761bec02 100644
--- a/e2e/testsuite/codec.go
+++ b/e2e/testsuite/codec.go
@@ -7,21 +7,22 @@ import (
"github.com/cosmos/gogoproto/jsonpb"
"github.com/cosmos/gogoproto/proto"
+ "cosmossdk.io/x/authz"
+ banktypes "cosmossdk.io/x/bank/types"
+ govv1 "cosmossdk.io/x/gov/types/v1"
+ govv1beta1 "cosmossdk.io/x/gov/types/v1beta1"
+ grouptypes "cosmossdk.io/x/group"
+ proposaltypes "cosmossdk.io/x/params/types/proposal"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/cosmos/cosmos-sdk/codec"
+ codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module/testutil"
txtypes "github.com/cosmos/cosmos-sdk/types/tx"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- "github.com/cosmos/cosmos-sdk/x/authz"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
- grouptypes "github.com/cosmos/cosmos-sdk/x/group"
- proposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
wasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
icacontrollertypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
@@ -58,7 +59,7 @@ func SDKEncodingConfig() *testutil.TestEncodingConfig {
// codecAndEncodingConfig returns the codec and encoding config used in the E2E tests.
// Note: any new types added to the codec must be added here.
func codecAndEncodingConfig() (*codec.ProtoCodec, testutil.TestEncodingConfig) {
- cfg := testutil.MakeTestEncodingConfig()
+ cfg := testutil.MakeTestEncodingConfig(codectestutil.CodecOptions{})
// ibc types
icacontrollertypes.RegisterInterfaces(cfg.InterfaceRegistry)
@@ -85,7 +86,6 @@ func codecAndEncodingConfig() (*codec.ProtoCodec, testutil.TestEncodingConfig) {
proposaltypes.RegisterInterfaces(cfg.InterfaceRegistry)
authz.RegisterInterfaces(cfg.InterfaceRegistry)
txtypes.RegisterInterfaces(cfg.InterfaceRegistry)
-
cdc := codec.NewProtoCodec(cfg.InterfaceRegistry)
return cdc, cfg
}
diff --git a/e2e/testsuite/diagnostics/diagnostics.go b/e2e/testsuite/diagnostics/diagnostics.go
index e00d670e14d..958e3a8f428 100644
--- a/e2e/testsuite/diagnostics/diagnostics.go
+++ b/e2e/testsuite/diagnostics/diagnostics.go
@@ -99,7 +99,7 @@ func Collect(t *testing.T, dc *dockerclient.Client, debugModeEnabled bool, suite
}
}
-// getContainerName returns a either the ID of the container or stripped down human-readable
+// getContainerName returns an either the ID of the container or stripped down human-readable
// version of the name if the name is non-empty.
//
// Note: You should still always use the ID when interacting with the docker client.
diff --git a/e2e/testsuite/events.go b/e2e/testsuite/events.go
index cd0fd104706..30481be77a7 100644
--- a/e2e/testsuite/events.go
+++ b/e2e/testsuite/events.go
@@ -3,7 +3,7 @@ package testsuite
import (
sdk "github.com/cosmos/cosmos-sdk/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
)
// ABCIToSDKEvents converts a list of ABCI events to Cosmos SDK events.
diff --git a/e2e/testsuite/query/grpc_query.go b/e2e/testsuite/query/grpc_query.go
index 4e64c206fff..f84f54bdbf8 100644
--- a/e2e/testsuite/query/grpc_query.go
+++ b/e2e/testsuite/query/grpc_query.go
@@ -6,7 +6,7 @@ import (
"strings"
"github.com/cosmos/gogoproto/proto"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
diff --git a/e2e/testsuite/query/queries.go b/e2e/testsuite/query/queries.go
index 6286562d161..b22d7a67f81 100644
--- a/e2e/testsuite/query/queries.go
+++ b/e2e/testsuite/query/queries.go
@@ -5,14 +5,14 @@ import (
"errors"
"sort"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
"cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
"github.com/cosmos/cosmos-sdk/client/grpc/cmtservice"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
controllertypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
feetypes "github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
diff --git a/e2e/testsuite/sanitize/messages.go b/e2e/testsuite/sanitize/messages.go
index f74643cec37..b52c2b3a8bd 100644
--- a/e2e/testsuite/sanitize/messages.go
+++ b/e2e/testsuite/sanitize/messages.go
@@ -1,9 +1,10 @@
package sanitize
import (
+ govtypesv1 "cosmossdk.io/x/gov/types/v1"
+ grouptypes "cosmossdk.io/x/group"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- grouptypes "github.com/cosmos/cosmos-sdk/x/group"
"github.com/cosmos/ibc-go/e2e/semverutil"
icacontrollertypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
diff --git a/e2e/testsuite/testconfig.go b/e2e/testsuite/testconfig.go
index e9fbddfaa4a..3503fea8d93 100644
--- a/e2e/testsuite/testconfig.go
+++ b/e2e/testsuite/testconfig.go
@@ -10,18 +10,20 @@ import (
"strings"
"time"
- "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- interchaintestutil "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ interchaintestutil "github.com/strangelove-ventures/interchaintest/v9/testutil"
"gopkg.in/yaml.v2"
+ govtypes "cosmossdk.io/x/gov/types"
+ govv1 "cosmossdk.io/x/gov/types/v1"
+ govv1beta1 "cosmossdk.io/x/gov/types/v1beta1"
+
"github.com/cosmos/cosmos-sdk/codec"
+ codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module/testutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
cmtjson "github.com/cometbft/cometbft/libs/json"
@@ -67,7 +69,7 @@ const (
// TODO: https://github.com/cosmos/ibc-go/issues/4965
defaultHyperspaceTag = "20231122v39"
// defaultHermesTag is the tag that will be used if no relayer tag is specified for hermes.
- defaultHermesTag = "1.10.0"
+ defaultHermesTag = "1.10.4"
// defaultChainTag is the tag that will be used for the chains if none is specified.
defaultChainTag = "main"
// defaultConfigFileName is the default filename for the config file that can be used to configure
@@ -91,7 +93,7 @@ func getChainImage(binary string) string {
type TestConfig struct {
// ChainConfigs holds configuration values related to the chains used in the tests.
ChainConfigs []ChainConfig `yaml:"chains"`
- // RelayerConfig holds all known relayer configurations that can be used in the tests.
+ // RelayerConfigs holds all known relayer configurations that can be used in the tests.
RelayerConfigs []relayer.Config `yaml:"relayers"`
// ActiveRelayer specifies the relayer that will be used. It must match the ID of one of the entries in RelayerConfigs.
ActiveRelayer string `yaml:"activeRelayer"`
@@ -612,6 +614,11 @@ func IsFork() bool {
return isEnvTrue("FORK")
}
+// IsRunSuite returns true if the tests are running in suite mode, false is returned otherwise.
+func IsRunSuite() bool {
+ return isEnvTrue("RUN_SUITE")
+}
+
func isEnvTrue(env string) bool {
return strings.ToLower(os.Getenv(env)) == "true"
}
@@ -651,11 +658,17 @@ func DefaultChainOptions() ChainOptions {
NumValidators: &chainBVal,
}
- return ChainOptions{
- ChainSpecs: []*interchaintest.ChainSpec{chainASpec, chainBSpec},
+ // if running a single test, only one relayer is needed.
+ numRelayers := 1
+ if IsRunSuite() {
// arbitrary number that will not be required if https://github.com/strangelove-ventures/interchaintest/issues/1153 is resolved.
// It can be overridden in individual test suites in SetupSuite if required.
- RelayerCount: 10,
+ numRelayers = 10
+ }
+
+ return ChainOptions{
+ ChainSpecs: []*interchaintest.ChainSpec{chainASpec, chainBSpec},
+ RelayerCount: numRelayers,
}
}
@@ -680,7 +693,7 @@ func newDefaultSimappConfig(cc ChainConfig, name, chainID, denom string, cometCf
},
Bin: cc.Binary,
Bech32Prefix: "cosmos",
- CoinType: fmt.Sprint(sdk.GetConfig().GetCoinType()),
+ CoinType: fmt.Sprint(sdk.CoinType),
Denom: denom,
EncodingConfig: SDKEncodingConfig(),
GasPrices: fmt.Sprintf("0.00%s", denom),
@@ -830,7 +843,7 @@ func defaultGovv1Beta1ModifyGenesis(version string) func(ibc.ChainConfig, []byte
// modifyGovV1AppState takes the existing gov app state and marshals it to a govv1 GenesisState.
func modifyGovV1AppState(chainConfig ibc.ChainConfig, govAppState []byte) ([]byte, error) {
- cfg := testutil.MakeTestEncodingConfig()
+ cfg := testutil.MakeTestEncodingConfig(codectestutil.CodecOptions{})
cdc := codec.NewProtoCodec(cfg.InterfaceRegistry)
govv1.RegisterInterfaces(cfg.InterfaceRegistry)
@@ -858,7 +871,7 @@ func modifyGovV1AppState(chainConfig ibc.ChainConfig, govAppState []byte) ([]byt
// modifyGovv1Beta1AppState takes the existing gov app state and marshals it to a govv1beta1 GenesisState.
func modifyGovv1Beta1AppState(chainConfig ibc.ChainConfig, govAppState []byte) ([]byte, error) {
- cfg := testutil.MakeTestEncodingConfig()
+ cfg := testutil.MakeTestEncodingConfig(codectestutil.CodecOptions{})
cdc := codec.NewProtoCodec(cfg.InterfaceRegistry)
govv1beta1.RegisterInterfaces(cfg.InterfaceRegistry)
@@ -881,7 +894,7 @@ func modifyGovv1Beta1AppState(chainConfig ibc.ChainConfig, govAppState []byte) (
// modifyClientGenesisAppState takes the existing ibc app state and marshals it to an ibc GenesisState.
func modifyClientGenesisAppState(ibcAppState []byte) ([]byte, error) {
- cfg := testutil.MakeTestEncodingConfig()
+ cfg := testutil.MakeTestEncodingConfig(codectestutil.CodecOptions{})
cdc := codec.NewProtoCodec(cfg.InterfaceRegistry)
clienttypes.RegisterInterfaces(cfg.InterfaceRegistry)
diff --git a/e2e/testsuite/testsuite.go b/e2e/testsuite/testsuite.go
index 2ea2c3bc1a8..ebbbd548998 100644
--- a/e2e/testsuite/testsuite.go
+++ b/e2e/testsuite/testsuite.go
@@ -11,19 +11,19 @@ import (
"sync"
dockerclient "github.com/docker/docker/client"
- interchaintest "github.com/strangelove-ventures/interchaintest/v8"
- "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- "github.com/strangelove-ventures/interchaintest/v8/testreporter"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ interchaintest "github.com/strangelove-ventures/interchaintest/v9"
+ "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ "github.com/strangelove-ventures/interchaintest/v9/testreporter"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
testifysuite "github.com/stretchr/testify/suite"
"go.uber.org/zap"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ govtypes "cosmossdk.io/x/gov/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/e2e/internal/directories"
"github.com/cosmos/ibc-go/e2e/relayer"
@@ -42,7 +42,7 @@ const (
// ChainBRelayerName is the name given to the relayer wallet on ChainB
ChainBRelayerName = "rlyB"
// DefaultGasValue is the default gas value used to configure tx.Factory
- DefaultGasValue = 500_000_0000
+ DefaultGasValue = 100_000_00
)
// E2ETestSuite has methods and functionality which can be shared among all test suites.
@@ -558,6 +558,18 @@ func (s *E2ETestSuite) createWalletOnChainIndex(ctx context.Context, amount, cha
wallet := interchaintest.GetAndFundTestUsers(s.T(), ctx, strings.ReplaceAll(s.T().Name(), " ", "-"), sdkmath.NewInt(amount), chain)[0]
// note the GetAndFundTestUsers requires the caller to wait for some blocks before the funds are accessible.
s.Require().NoError(test.WaitForBlocks(ctx, 2, chain))
+
+ // in order to ensure that the underlying account is created, we need to perform an operation on its behalf.
+ // in this case we just send 1 token to itself so the account gets created.
+ err := chain.SendFunds(ctx, wallet.KeyName(), ibc.WalletAmount{
+ Address: wallet.FormattedAddress(),
+ Denom: chain.Config().Denom,
+ Amount: sdkmath.NewInt(1),
+ })
+
+ s.Require().NoError(err)
+ s.Require().NoError(test.WaitForBlocks(ctx, 2, chain))
+
return wallet
}
diff --git a/e2e/testsuite/tx.go b/e2e/testsuite/tx.go
index 705f3f5120e..c037ebb3d3b 100644
--- a/e2e/testsuite/tx.go
+++ b/e2e/testsuite/tx.go
@@ -9,23 +9,21 @@ import (
"strings"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
- test "github.com/strangelove-ventures/interchaintest/v8/testutil"
+ "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
+ test "github.com/strangelove-ventures/interchaintest/v9/testutil"
errorsmod "cosmossdk.io/errors"
sdkmath "cosmossdk.io/math"
+ govtypesv1 "cosmossdk.io/x/gov/types/v1"
+ govtypesv1beta1 "cosmossdk.io/x/gov/types/v1beta1"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
sdk "github.com/cosmos/cosmos-sdk/types"
- signingtypes "github.com/cosmos/cosmos-sdk/types/tx/signing"
- authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
- govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/e2e/testsuite/query"
"github.com/cosmos/ibc-go/e2e/testsuite/sanitize"
@@ -53,7 +51,15 @@ func (s *E2ETestSuite) BroadcastMessages(ctx context.Context, chain ibc.Chain, u
// use a codec with all the types our tests care about registered.
// BroadcastTx will deserialize the response and will not be able to otherwise.
cdc := Codec()
- return clientContext.WithCodec(cdc).WithTxConfig(authtx.NewTxConfig(cdc, []signingtypes.SignMode{signingtypes.SignMode_SIGN_MODE_DIRECT}))
+
+ txConfig := SDKEncodingConfig().TxConfig
+ return clientContext.WithCodec(cdc).
+ WithTxConfig(txConfig).
+ WithAddressCodec(txConfig.SigningContext().AddressCodec()).
+ WithValidatorAddressCodec(txConfig.SigningContext().ValidatorAddressCodec()).
+ WithAddressPrefix(cosmosChain.Config().Bech32Prefix).
+ WithAddressCodec(txConfig.SigningContext().AddressCodec()).
+ WithValidatorAddressCodec(txConfig.SigningContext().ValidatorAddressCodec())
})
broadcaster.ConfigureFactoryOptions(func(factory tx.Factory) tx.Factory {
@@ -169,7 +175,7 @@ func (s *E2ETestSuite) ExecuteGovV1Proposal(ctx context.Context, msg sdk.Msg, ch
"",
fmt.Sprintf("e2e gov proposal: %d", proposalID),
fmt.Sprintf("executing gov proposal %d", proposalID),
- false,
+ govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD,
)
s.Require().NoError(err)
@@ -216,16 +222,16 @@ func (s *E2ETestSuite) ExecuteAndPassGovV1Beta1Proposal(ctx context.Context, cha
panic("ExecuteAndPassGovV1Beta1Proposal must be passed a cosmos.CosmosChain")
}
- proposalID := s.proposalIDs[chain.Config().ChainID]
- defer func() {
- s.proposalIDs[chain.Config().ChainID] = proposalID + 1
- }()
-
txResp := s.ExecuteGovV1Beta1Proposal(ctx, cosmosChain, user, content)
s.AssertTxSuccess(txResp)
- // TODO: replace with parsed proposal ID from MsgSubmitProposalResponse
- // https://github.com/cosmos/ibc-go/issues/2122
+ var submitProposalResponse govtypesv1beta1.MsgSubmitProposalResponse
+ s.Require().NoError(UnmarshalMsgResponses(txResp, &submitProposalResponse))
+
+ proposalID := submitProposalResponse.ProposalId
+ defer func() {
+ s.proposalIDs[chain.Config().ChainID] = proposalID + 1
+ }()
proposalResp, err := query.GRPCQuery[govtypesv1beta1.QueryProposalResponse](ctx, cosmosChain, &govtypesv1beta1.QueryProposalRequest{
ProposalId: proposalID,
@@ -273,7 +279,7 @@ func (s *E2ETestSuite) ExecuteGovV1Beta1Proposal(ctx context.Context, chain ibc.
sender, err := sdk.AccAddressFromBech32(user.FormattedAddress())
s.Require().NoError(err)
- msgSubmitProposal, err := govtypesv1beta1.NewMsgSubmitProposal(content, sdk.NewCoins(sdk.NewCoin(chain.Config().Denom, govtypesv1beta1.DefaultMinDepositTokens)), sender)
+ msgSubmitProposal, err := govtypesv1beta1.NewMsgSubmitProposal(content, sdk.NewCoins(sdk.NewCoin(chain.Config().Denom, govtypesv1beta1.DefaultMinDepositTokens)), sender.String())
s.Require().NoError(err)
return s.BroadcastMessages(ctx, chain, user, msgSubmitProposal)
diff --git a/e2e/testvalues/values.go b/e2e/testvalues/values.go
index aab8bbacb5d..cc8037b393a 100644
--- a/e2e/testvalues/values.go
+++ b/e2e/testvalues/values.go
@@ -4,7 +4,7 @@ import (
"fmt"
"time"
- "github.com/strangelove-ventures/interchaintest/v8/ibc"
+ "github.com/strangelove-ventures/interchaintest/v9/ibc"
sdkmath "cosmossdk.io/math"
diff --git a/go.mod b/go.mod
index 9402a50c10f..dadec302598 100644
--- a/go.mod
+++ b/go.mod
@@ -1,75 +1,102 @@
-go 1.22.7
-
-toolchain go1.22.8
+go 1.23.4
module github.com/cosmos/ibc-go/v9
require (
- cosmossdk.io/api v0.7.6
- cosmossdk.io/core v0.11.1
+ cosmossdk.io/api v0.8.0
+ cosmossdk.io/client/v2 v2.0.0-beta.6
+ cosmossdk.io/core v1.0.0
cosmossdk.io/errors v1.0.1
- cosmossdk.io/log v1.4.1
+ cosmossdk.io/log v1.5.0
cosmossdk.io/math v1.4.0
- cosmossdk.io/store v1.1.1
- cosmossdk.io/x/tx v0.13.6
+ cosmossdk.io/store v1.10.0-rc.1.0.20241218084712-ca559989da43
+ cosmossdk.io/x/accounts v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1
+ cosmossdk.io/x/accounts/defaults/lockup v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/bank v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/distribution v0.0.0-20240906090851-36d9b25e8981
+ cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337
+ cosmossdk.io/x/evidence v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/feegrant v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a
+ cosmossdk.io/x/group v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/mint v0.0.0-20240909082436-01c0e9ba3581
+ cosmossdk.io/x/nft v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/params v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190
+ cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/staking v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/tx v1.0.0-alpha.3
cosmossdk.io/x/upgrade v0.1.4
- github.com/cometbft/cometbft v0.38.15
- github.com/cosmos/cosmos-db v1.1.0
+ github.com/cometbft/cometbft v1.0.0
+ github.com/cometbft/cometbft/api v1.0.0
+ github.com/cosmos/cosmos-db v1.1.1
github.com/cosmos/cosmos-proto v1.0.0-beta.5
- github.com/cosmos/cosmos-sdk v0.50.10
+ github.com/cosmos/cosmos-sdk v0.53.0
github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/ics23/go v0.11.0
- github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4
+ github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9
github.com/golang/protobuf v1.5.4
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/hashicorp/go-metrics v0.5.3
- github.com/spf13/cast v1.7.0
+ github.com/spf13/cast v1.7.1
github.com/spf13/cobra v1.8.1
github.com/stretchr/testify v1.10.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/grpc v1.68.1
- google.golang.org/protobuf v1.35.2
+ google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53
+ google.golang.org/grpc v1.69.2
+ google.golang.org/protobuf v1.36.1
gopkg.in/yaml.v2 v2.4.0
)
require (
- cloud.google.com/go v0.115.0 // indirect
- cloud.google.com/go/auth v0.6.0 // indirect
- cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
- cloud.google.com/go/compute/metadata v0.5.0 // indirect
- cloud.google.com/go/iam v1.1.9 // indirect
- cloud.google.com/go/storage v1.41.0 // indirect
- cosmossdk.io/collections v0.4.0 // indirect
- cosmossdk.io/depinject v1.0.0 // indirect
+ buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 // indirect
+ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.8.1 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.5.2 // indirect
+ cloud.google.com/go/iam v1.1.13 // indirect
+ cloud.google.com/go/storage v1.43.0 // indirect
+ cosmossdk.io/collections v1.0.0-rc.1 // indirect
+ cosmossdk.io/core/testing v0.0.1 // indirect
+ cosmossdk.io/depinject v1.1.0 // indirect
+ cosmossdk.io/schema v1.0.0 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/DataDog/datadog-go v4.8.3+incompatible // indirect
- github.com/DataDog/zstd v1.5.5 // indirect
+ github.com/DataDog/zstd v1.5.6 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
- github.com/aws/aws-sdk-go v1.44.224 // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.2.0 // indirect
github.com/bits-and-blooms/bitset v1.13.0 // indirect
- github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
+ github.com/bytedance/sonic v1.12.6 // indirect
+ github.com/bytedance/sonic/loader v0.2.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chzyer/readline v1.5.1 // indirect
- github.com/cockroachdb/apd/v2 v2.0.2 // indirect
+ github.com/cloudwego/base64x v0.1.4 // indirect
+ github.com/cloudwego/iasm v0.2.0 // indirect
+ github.com/cockroachdb/apd/v3 v3.2.1 // indirect
github.com/cockroachdb/errors v1.11.3 // indirect
- github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect
+ github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v1.1.2 // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
- github.com/cometbft/cometbft-db v0.14.1 // indirect
+ github.com/cometbft/cometbft-db v1.0.1 // indirect
github.com/consensys/bavard v0.1.13 // indirect
github.com/consensys/gnark-crypto v0.12.1 // indirect
github.com/cosmos/btcutil v1.0.5 // indirect
github.com/cosmos/go-bip39 v1.0.0 // indirect
github.com/cosmos/gogogateway v1.2.0 // indirect
- github.com/cosmos/iavl v1.2.0 // indirect
+ github.com/cosmos/iavl v1.3.4 // indirect
github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect
github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
@@ -77,29 +104,27 @@ require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
- github.com/desertbit/timer v1.0.1 // indirect
- github.com/dgraph-io/badger/v4 v4.2.0 // indirect
- github.com/dgraph-io/ristretto v0.1.1 // indirect
+ github.com/dgraph-io/badger/v4 v4.5.0 // indirect
+ github.com/dgraph-io/ristretto/v2 v2.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/dvsekhvalnov/jose2go v1.7.0 // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
github.com/ethereum/go-ethereum v1.14.12 // indirect
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect
- github.com/fatih/color v1.17.0 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/getsentry/sentry-go v0.28.1 // indirect
+ github.com/fsnotify/fsnotify v1.8.0 // indirect
+ github.com/getsentry/sentry-go v0.29.0 // indirect
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
@@ -107,41 +132,40 @@ require (
github.com/google/flatbuffers v24.3.25+incompatible // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/orderedcode v0.0.1 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.5 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
github.com/gorilla/handlers v1.5.2 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-getter v1.7.4 // indirect
+ github.com/hashicorp/go-getter v1.7.6 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
- github.com/hashicorp/go-plugin v1.6.1 // indirect
+ github.com/hashicorp/go-plugin v1.6.2 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
- github.com/hashicorp/go-uuid v1.0.2 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
+ github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/golang-lru v1.0.2 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/hashicorp/yamux v0.1.2 // indirect
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
github.com/holiman/uint256 v1.3.1 // indirect
- github.com/huandu/skiplist v1.2.0 // indirect
+ github.com/huandu/skiplist v1.2.1 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
- github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
- github.com/klauspost/compress v1.17.9 // indirect
+ github.com/klauspost/compress v1.17.11 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.9 // indirect
- github.com/linxGnu/grocksdb v1.9.2 // indirect
- github.com/magiconair/properties v1.8.7 // indirect
+ github.com/linxGnu/grocksdb v1.9.3 // indirect
+ github.com/magiconair/properties v1.8.9 // indirect
github.com/manifoldco/promptui v0.9.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -155,16 +179,16 @@ require (
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
github.com/oklog/run v1.1.0 // indirect
github.com/onsi/ginkgo v1.16.4 // indirect
- github.com/pelletier/go-toml/v2 v2.2.2 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.60.1 // indirect
+ github.com/prometheus/common v0.61.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
- github.com/rogpeppe/go-internal v1.12.0 // indirect
+ github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
@@ -182,36 +206,71 @@ require (
github.com/tidwall/btree v1.7.0 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
- github.com/ulikunitz/xz v0.5.11 // indirect
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
+ github.com/ulikunitz/xz v0.5.12 // indirect
github.com/zondax/hid v0.9.2 // indirect
github.com/zondax/ledger-go v0.14.3 // indirect
+ gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
+ gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
go.etcd.io/bbolt v1.4.0-alpha.1 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
+ go.opentelemetry.io/otel v1.31.0 // indirect
+ go.opentelemetry.io/otel/metric v1.31.0 // indirect
+ go.opentelemetry.io/otel/trace v1.31.0 // indirect
+ go.uber.org/mock v0.5.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.28.0 // indirect
- golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect
- golang.org/x/net v0.30.0 // indirect
- golang.org/x/oauth2 v0.23.0 // indirect
- golang.org/x/sync v0.8.0 // indirect
- golang.org/x/sys v0.26.0 // indirect
- golang.org/x/term v0.25.0 // indirect
- golang.org/x/text v0.19.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- google.golang.org/api v0.186.0 // indirect
- google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
+ golang.org/x/arch v0.12.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
+ golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
+ golang.org/x/net v0.32.0 // indirect
+ golang.org/x/oauth2 v0.24.0 // indirect
+ golang.org/x/sync v0.10.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/time v0.6.0 // indirect
+ google.golang.org/api v0.192.0 // indirect
+ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.1 // indirect
- nhooyr.io/websocket v1.8.11 // indirect
pgregory.net/rapid v1.1.0 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
replace github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
+
+replace (
+ cosmossdk.io/api => cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608
+ cosmossdk.io/client/v2 => cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608
+ cosmossdk.io/core => cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608
+ cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608
+ cosmossdk.io/x/accounts => cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/lockup => cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/multisig => cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/authz => cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/bank => cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/circuit => cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/consensus => cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/distribution => cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/epochs => cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/evidence => cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/feegrant => cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/gov => cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/group => cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/mint => cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/nft => cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/params => cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/protocolpool => cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/slashing => cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/staking => cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/tx => cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938
+ cosmossdk.io/x/upgrade => cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608
+ github.com/cometbft/cometbft => github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f
+ // pseudo version lower than the latest tag
+ github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b
+)
diff --git a/go.sum b/go.sum
index 1079569f201..83a4195331f 100644
--- a/go.sum
+++ b/go.sum
@@ -1,3 +1,7 @@
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 h1:LBP+N3ehp1hseHYlIIHlU0gMM3aGYDcgx/H//Pk12ko=
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1/go.mod h1:pab5p7+q6IAI+R+Z2MQ+hP7ZV+FP2mcbucv6xs5WFPk=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 h1:5wJBiYyPUS2xpqLJKm7ZEKx1VhesPOXXx5y+JxgVSX4=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1/go.mod h1:VItWFs9dzQsqOin45pYbA4O/SRdqMPDs4XPZBHL+u2w=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -30,8 +34,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
-cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
-cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
@@ -46,10 +50,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby
cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
-cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=
-cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
-cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
-cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
+cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo=
+cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
@@ -72,8 +76,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
-cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
-cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
+cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo=
+cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
@@ -111,12 +115,14 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97
cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
-cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE=
-cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ=
+cloud.google.com/go/iam v1.1.13 h1:7zWBXG9ERbMLrzQBRhFliAV+kjcRToDTgQT3CTwYyv4=
+cloud.google.com/go/iam v1.1.13/go.mod h1:K8mY0uSXwEXS30KrnVb+j54LB/ntfZu1dr+4zFMNbus=
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
+cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk=
+cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4=
cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
@@ -173,8 +179,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
-cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0=
-cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80=
+cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
+cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
@@ -186,26 +192,70 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
-cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY=
-cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38=
-cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s=
-cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0=
-cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA=
-cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0=
-cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050=
-cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608 h1:0266beLan2snXZMeELYMpTVcFjlSgzHhLBKxSuNVZUI=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608 h1:umN3k+AZ91ZjYv3CDiTgFDaWe22w3JxpeJmepUwKXV8=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608/go.mod h1:Xxz5u4rK+ArCsRo9TMSirg6jPMdva6BHv9Db65OkN/Q=
+cosmossdk.io/collections v1.0.0-rc.1 h1:Mzv0YKZJ6aloy4oSnMnyl8b6PtM2dTdDlzRR/079TyM=
+cosmossdk.io/collections v1.0.0-rc.1/go.mod h1:nOgrEpyMFOWBy8QmSbq/T6Tgtm2IyOFvxDRWk+DI97k=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608 h1:w+/cxqYHud1plzCTIvEBtab6RqpgAl2C5Hgn1l4p+oo=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608/go.mod h1:gCTZBT00tI2zTQy65aSolV3aUnQDqpVgz5yOp96LpGg=
+cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
+cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
+cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
+cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
-cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
-cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU=
+cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g=
+cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI=
cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ=
cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk=
-cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y=
-cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=
-cosmossdk.io/x/tx v0.13.6 h1:qCiZJ+yK5MsSdUByjOUrfm3sk7aZk1AuYufX22VLC1M=
-cosmossdk.io/x/tx v0.13.6/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w=
-cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38=
-cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo=
+cosmossdk.io/schema v1.0.0 h1:/diH4XJjpV1JQwuIozwr+A4uFuuwanFdnw2kKeiXwwQ=
+cosmossdk.io/schema v1.0.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608 h1:NaFVgzmO3YFX+l7696SdDTtvJR0MTjjwSe0sX+inAI4=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608/go.mod h1:eZNgZKvZRlDUk8CE3LTDVMAcSM7zLOet2S8fByQkF3s=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608 h1:No84LXBp0kEzJfAqorxrgqzmzqOpHhbs8IK2nBpVQJY=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608/go.mod h1:wADXnci9qeFwOQ09qiyf1uLdI4n/RSSTG8mSM9hmxys=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1 h1:sVAOVQLbdmzLmjnWLhAhIN65HTmSMGBIwU2uTeSCEp0=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1/go.mod h1:52PyilJMRraVwNcG58q4t7OSzSHApqNfJheq+mNB+qw=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608 h1:nMu0DD9qutZ7dzIySxTRnLYvZtockBghVkwBHyuwBLI=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608/go.mod h1:m0eg/A4J5fmXFNGEldQpeTrMr9PFWaVIFjbDYes0j9I=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608 h1:JL+VXHmb8xqwU7ToR2RG0V2BTmE+t1PkJ880xKi46Tc=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608/go.mod h1:huNjmnJuvPXAT5zvK8S29X0u9DpCa3X9ZCUd3bJ8bng=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608 h1:MzRTC+W0Uv40yfFNegDskcisgui9lQdeG9FZxOixATk=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608/go.mod h1:GMLM+m3Il+QTfOrQG08sFJXlKw95UDKPIOYcuSwjbzQ=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608 h1:lbtU7rYltk2axJ5h1DgPamVosuZEeyOAaqYPQpQBH4g=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608/go.mod h1:GN02Rosc2O/vCNBnXqY35vA2hoMmRQeCKd81FuoMzmE=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608 h1:lstvqRuVEDtRxiF9+LM16SpRriq0O+5lMHzsGKheXH4=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608/go.mod h1:ib+kqbNMsj6n7/LvW+qi24/1kp/ApWJpsnCWY5yN6Mk=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608 h1:hYFPPs5WsMWj/1sRpw6Aqmioph3qw5VN76geVxtaWtI=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608/go.mod h1:bG9SiC6YsVOpsKgOd+b+t3Kl4GLb9T6RjhBKesPn+Gg=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608 h1:UZSqhiAi1mKi8DE+OLGMrXSoenSl4PkyQT7xxNfr9Bw=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608/go.mod h1:PLdiJlSC0XveXA3vJ0E4n1NCG78UeHXwEk0razSnEk4=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608 h1:KqJ+F0YVwFlu06gEoWHvGvdC1DYXDL5Rykra61/pY4Q=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608/go.mod h1:YBMj0T87xliEfldeZHC60AqyZoLoy1wJzAAgaaQubBM=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608 h1:iSOOM7vAa0LuJ9xKZ7k34g5uyy9WQyfKbnAPmnf8Abc=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608/go.mod h1:yIgJCAGBnM3sull2qACQP+uMsEoogyNO6OXz82z3tVg=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608 h1:F+w/ofuUDxFyyk6t7kt7cdcBsTa2gA7zuvCEplB871A=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608/go.mod h1:ynGp02hnYhVidQiL9KOKeiZnn0h+PSEJb+XjgKH6+v4=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608 h1:ll6Pk+WoPlusW2uy8HTXupL+mees6mNohS4dfGYJsZ0=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608/go.mod h1:L8fBvuIwBQzABO/cYEOpekmaKlR4ELclrrGNZ6r//sg=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608 h1:t0A/ip5m09OuAY0bvpnfxJhD1/dL44JYNwffy5boqB4=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608/go.mod h1:apbBgC0mKZTbgvW2ACPcNBl0z8HjCp7R9ZBns7F6J2E=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608 h1:bB3FhjvPZfkS3EksYB3YR7muxGk0/rr6U993a7ETHx0=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608/go.mod h1:H1QoaISMz78OyBwXKU4gp8Gmwd1EVWq+Lb9P3BUfXUM=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608 h1:ZD/gSJbfpC2WzXr17xq5UkJBQd/BfBVajzKrieu6zjQ=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608/go.mod h1:btgbNMPZJWZLd03ef2AblrpJ7e9ocpTvA0xUw0hIHew=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608 h1:3rdbR/782gMtQo+1yxH+wuhJKd1jm/4X0pBgQX7pDp4=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608/go.mod h1:xLb6tQ33fgSOmwlMui9UjLzI9xmOclfjG2g+/z4XiUc=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608 h1:+GBTBLH54gKT2dFlUgN/XzawdBG/9U5djPecjr7meas=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608/go.mod h1:BlYhkjtZZdKXQP9mBiVwRbaduXtDKEJHQC3dZ6fZBS0=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608 h1:aycIQRLzdtuI99FkTRo4Y2QerkfKqZRYNN2BPESEc8A=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608/go.mod h1:4Zyt59oTQdaKitlYyz9K7d8Mi32e+K5NliOf9HAj5Wo=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938 h1:kqbOiJpmSBE03Isw7KY27N4oCSaOcG28oaJgCLh9Rhk=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938/go.mod h1:xlJjZV1wxZBTCP+ygZx9pNT/XxsfHDPf1H0VhHaUp5w=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608 h1:80l+duTMRKnszkWXolEs1n+1j4RFYd41mrV24P79vcY=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608/go.mod h1:5GIkumZszCtSzsXcTtL2YP4mIU25Rn3t0y51JWzzUDI=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
@@ -220,16 +270,13 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q=
github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
-github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
-github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
+github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY=
+github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
@@ -238,25 +285,14 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I=
github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
-github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ=
-github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
-github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -264,7 +300,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
-github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E=
github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
@@ -273,14 +308,17 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurT
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c=
github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE=
-github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
-github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
-github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
+github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
+github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
+github.com/bytedance/sonic v1.12.6 h1:/isNmCUF2x3Sh8RAp/4mh4ZGkcFAX/hLrzrK3AvpRzk=
+github.com/bytedance/sonic v1.12.6/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
+github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E=
+github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
-github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
-github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
@@ -300,8 +338,11 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
+github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
+github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
+github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -311,15 +352,14 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
-github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=
+github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k0egdR5V6eALQYq2qbSmukrkgIh/0A=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
@@ -328,29 +368,27 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg=
-github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ=
-github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ=
-github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f h1:rPWKqyc+CeuddICqlqptf+3NPE8exbC9SOGuDPTEN3k=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f/go.mod h1:MqZ5E5jLU1JdP10FSRXhItpm+GdHMbW7Myv3UARLxqg=
+github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE=
+github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk=
+github.com/cometbft/cometbft/api v1.0.0 h1:gGBwvsJi/gnHJEtwYfjPIGs2AKg/Vfa1ZuKCPD1/Ko4=
+github.com/cometbft/cometbft/api v1.0.0/go.mod h1:EkQiqVSu/p2ebrZEnB2z6Re7r8XNe//M7ylR0qEwWm0=
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=
github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=
-github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI=
-github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg=
+github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM=
+github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
-github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM=
-github.com/cosmos/cosmos-sdk v0.50.10/go.mod h1:6Eesrx3ZE7vxBZWpK++30H+Uc7Q4ahQWCL7JKU/LEdU=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b h1:ZaEAV5tsUTnyWEC/Gt8DXHKBANDyx70PVCiPOEVnuHk=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b/go.mod h1:ecJnx3s3oQK5BR7vu25fYSD2/ND9YLGkVpST7uiBkT0=
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE=
@@ -358,22 +396,20 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ
github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
-github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM=
-github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI=
+github.com/cosmos/iavl v1.3.4 h1:A0RUAms7TZ0L6EFrrBIPg4Dy7qD9vvD5lJKUxEXURLM=
+github.com/cosmos/iavl v1.3.4/go.mod h1:T6SfBcyhulVIY2G/ZtAtQm/QiJvsuhIos52V4dWYk88=
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM=
github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 h1:B23RM5CtuNCgvEffdaMXNZxOH3fVOtNEfEVviOs4364=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4/go.mod h1:O7A2Q93QyD0m69LQmnDgOSvHGF5URFBTgY2QsxpdqSs=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 h1:9o9xcAsD+JAJQTnI9sRwdCSz28o3zHqqgKaHBYcXP+s=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9/go.mod h1:gfJFGujP9PIuiyu9AfewNjtVx6cqUh6cNFXjEa3RObo=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs=
github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI=
github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs=
github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps=
@@ -387,34 +423,22 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
-github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo=
-github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE=
-github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs=
-github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak=
-github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
-github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgraph-io/badger/v4 v4.5.0 h1:TeJE3I1pIWLBjYhIYCA1+uxrjWEoJXImFBMEBVSm16g=
+github.com/dgraph-io/badger/v4 v4.5.0/go.mod h1:ysgYmIeG8dS/E8kwxT7xHyc7MkmwNYLRoYnFbr7387A=
+github.com/dgraph-io/ristretto/v2 v2.0.0 h1:l0yiSOtlJvc0otkqyMaDNysg8E9/F/TYZwMbxscNOAQ=
+github.com/dgraph-io/ristretto/v2 v2.0.0/go.mod h1:FVFokF2dRqXyPyeMnK1YDy8Fc6aTe0IKgbcd03CYeEk=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo=
github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -433,25 +457,21 @@ github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
-github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
-github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k=
-github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg=
+github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
+github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/getsentry/sentry-go v0.29.0 h1:YtWluuCFg9OfcqnaujpY918N/AhCCwarIDWOYSBAjCA=
+github.com/getsentry/sentry-go v0.29.0/go.mod h1:jhPesDAL0Q0W2+2YEuVOvdWmVtdsr1+jtBrlDEVWwLY=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -459,7 +479,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU=
github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
@@ -471,44 +490,30 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
-github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
-github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -544,7 +549,6 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
@@ -600,10 +604,9 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -622,42 +625,28 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
-github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
-github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
-github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0=
-github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
+github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4=
+github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -665,24 +654,17 @@ github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJ
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE=
github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI=
-github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0=
+github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog=
+github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
+github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
@@ -691,12 +673,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8=
+github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns=
github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU=
github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=
github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4=
@@ -708,55 +686,42 @@ github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
-github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
-github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
-github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
+github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w=
+github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=
-github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
-github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=
-github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
+github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
+github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
+github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -769,16 +734,12 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
-github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/linxGnu/grocksdb v1.9.2 h1:O3mzvO0wuzQ9mtlHbDrShixyVjVbmuqTjFrzlf43wZ8=
-github.com/linxGnu/grocksdb v1.9.2/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
-github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
-github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik=
+github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
+github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
+github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -786,7 +747,6 @@ github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@@ -794,25 +754,16 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
@@ -829,16 +780,6 @@ github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ib
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
-github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
@@ -846,53 +787,34 @@ github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s=
-github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q=
-github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
+github.com/onsi/gomega v1.28.1 h1:MijcGUbfYuznzK/5R4CPNoUP/9Xvuo20sXfEm6XxoTA=
+github.com/onsi/gomega v1.28.1/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
-github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
+github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
+github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss=
github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
-github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
-github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
-github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
-github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
-github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
-github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
+github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
+github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -900,103 +822,70 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
-github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc=
-github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
+github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ=
+github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
-github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
-github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
-github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
+github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -1013,8 +902,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
@@ -1031,19 +918,14 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
-github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
-github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
-github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
+github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -1056,12 +938,12 @@ github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=
github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I=
go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4=
go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -1071,45 +953,41 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
+go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
+go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
+go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
+go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
+go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
+go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
+go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
+go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
+go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
+go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
+go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
+golang.org/x/arch v0.12.0 h1:UsYJhbzPYGsT0HbEdmYcqtCv8UNGvnaL561NnIUvaKg=
+golang.org/x/arch v0.12.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
-golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1120,9 +998,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8=
-golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1152,12 +1029,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -1168,7 +1041,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1176,7 +1048,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
@@ -1195,7 +1066,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
@@ -1208,8 +1078,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
-golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
+golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1235,8 +1105,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
-golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
-golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
+golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1251,14 +1121,11 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
-golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1270,17 +1137,13 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1290,14 +1153,11 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1320,7 +1180,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1344,20 +1203,19 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
-golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
-golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1368,16 +1226,13 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
-golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
-golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
+golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1385,7 +1240,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@@ -1395,8 +1249,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1405,7 +1257,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1447,9 +1298,6 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1498,10 +1346,9 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
-google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=
-google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=
+google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0=
+google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
@@ -1514,7 +1361,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
@@ -1546,7 +1392,6 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -1614,21 +1459,16 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 h1:fVoAXEKA4+yufmbdVYv+SE73+cPZbbbe8paLsHfkK+U=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53/go.mod h1:riSXTwQ4+nqmPGtobMFyW5FqVAmIs0St6VPp4Ug7CE4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
@@ -1638,7 +1478,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
@@ -1661,8 +1500,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0=
-google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
+google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
+google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1679,8 +1518,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
-google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1688,20 +1527,15 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -1717,7 +1551,6 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1725,9 +1558,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
-nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
-nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
@@ -1735,7 +1566,5 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/go.work.example b/go.work.example
index c9297b1ace8..2a7a225b146 100644
--- a/go.work.example
+++ b/go.work.example
@@ -1,6 +1,6 @@
-go 1.22.0
+go 1.23.3
-toolchain go1.22.3
+toolchain go1.23.3
use (
./
diff --git a/internal/logging/logging.go b/internal/logging/logging.go
deleted file mode 100644
index 03a326a7d45..00000000000
--- a/internal/logging/logging.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package logging
-
-import (
- "fmt"
-
- sdk "github.com/cosmos/cosmos-sdk/types"
-)
-
-// SdkEventsToLogArguments converts a given sdk.Events and returns a slice of strings that provide human
-// readable values for the event attributes.
-func SdkEventsToLogArguments(events sdk.Events) []string {
- logArgs := []string{"events"}
- for _, e := range events {
- logArgs = append(logArgs, fmt.Sprintf("type=%s", e.Type))
- for _, attr := range e.Attributes {
- if len(attr.Value) == 0 {
- continue
- }
- logArgs = append(logArgs, fmt.Sprintf("%s=%s", attr.Key, attr.Value))
- }
- }
- return logArgs
-}
diff --git a/modules/apps/27-interchain-accounts/controller/ibc_middleware.go b/modules/apps/27-interchain-accounts/controller/ibc_middleware.go
index e90ebbb723e..c6168c552a2 100644
--- a/modules/apps/27-interchain-accounts/controller/ibc_middleware.go
+++ b/modules/apps/27-interchain-accounts/controller/ibc_middleware.go
@@ -174,15 +174,17 @@ func (im IBCMiddleware) OnChanCloseConfirm(
}
// OnRecvPacket implements the IBCMiddleware interface
-func (IBCMiddleware) OnRecvPacket(
+func (im IBCMiddleware) OnRecvPacket(
ctx context.Context,
_ string,
packet channeltypes.Packet,
_ sdk.AccAddress,
) ibcexported.Acknowledgement {
- err := errorsmod.Wrapf(icatypes.ErrInvalidChannelFlow, "cannot receive packet on controller chain")
- ack := channeltypes.NewErrorAcknowledgement(err)
- keeper.EmitAcknowledgementEvent(ctx, packet, ack, err)
+ errInvalidFlow := errorsmod.Wrapf(icatypes.ErrInvalidChannelFlow, "cannot receive packet on controller chain")
+ ack := channeltypes.NewErrorAcknowledgement(errInvalidFlow)
+ if err := im.keeper.EmitAcknowledgementEvent(ctx, packet, ack, errInvalidFlow); err != nil {
+ return channeltypes.NewErrorAcknowledgement(errorsmod.Wrap(err, errInvalidFlow.Error()))
+ }
return ack
}
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/account.go b/modules/apps/27-interchain-accounts/controller/keeper/account.go
index ae41c756b4c..9ee8392c086 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/account.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/account.go
@@ -5,10 +5,8 @@ import (
errorsmod "cosmossdk.io/errors"
- sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- "github.com/cosmos/ibc-go/v9/internal/logging"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
@@ -66,25 +64,16 @@ func (k Keeper) registerInterchainAccount(ctx context.Context, connectionID, por
k.setPort(ctx, portID)
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
msg := channeltypes.NewMsgChannelOpenInit(portID, version, ordering, []string{connectionID}, icatypes.HostPortID, authtypes.NewModuleAddress(icatypes.ModuleName).String())
- handler := k.msgRouter.Handler(msg)
- res, err := handler(sdkCtx, msg)
+ res, err := k.Environment.MsgRouterService.Invoke(ctx, msg)
if err != nil {
return "", err
}
- events := res.GetEvents()
- k.Logger(ctx).Debug("emitting interchain account registration events", logging.SdkEventsToLogArguments(events))
-
- // NOTE: The sdk msg handler creates a new EventManager, so events must be correctly propagated back to the current context
- sdkCtx.EventManager().EmitEvents(events)
-
- firstMsgResponse := res.MsgResponses[0]
- channelOpenInitResponse, ok := firstMsgResponse.GetCachedValue().(*channeltypes.MsgChannelOpenInitResponse)
+ chanOpenInitResp, ok := res.(*channeltypes.MsgChannelOpenInitResponse)
if !ok {
- return "", errorsmod.Wrapf(ibcerrors.ErrInvalidType, "failed to convert %T message response to %T", firstMsgResponse.GetCachedValue(), &channeltypes.MsgChannelOpenInitResponse{})
+ return "", errorsmod.Wrapf(ibcerrors.ErrInvalidType, "failed to convert %T message response to %T", res, &channeltypes.MsgChannelOpenInitResponse{})
}
- return channelOpenInitResponse.ChannelId, nil
+ return chanOpenInitResp.ChannelId, nil
}
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/events.go b/modules/apps/27-interchain-accounts/controller/keeper/events.go
index 468a1028a5c..6271778c706 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/events.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/events.go
@@ -4,6 +4,8 @@ import (
"context"
"strconv"
+ "cosmossdk.io/core/event"
+
sdk "github.com/cosmos/cosmos-sdk/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
@@ -13,22 +15,16 @@ import (
// EmitAcknowledgementEvent emits an event signalling a successful or failed acknowledgement and including the error
// details if any.
-func EmitAcknowledgementEvent(ctx context.Context, packet channeltypes.Packet, ack exported.Acknowledgement, err error) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- attributes := []sdk.Attribute{
- sdk.NewAttribute(sdk.AttributeKeyModule, icatypes.ModuleName),
- sdk.NewAttribute(icatypes.AttributeKeyControllerChannelID, packet.GetDestChannel()),
- sdk.NewAttribute(icatypes.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
+func (k *Keeper) EmitAcknowledgementEvent(ctx context.Context, packet channeltypes.Packet, ack exported.Acknowledgement, err error) error {
+ attributes := []event.Attribute{
+ event.NewAttribute(sdk.AttributeKeyModule, icatypes.ModuleName),
+ event.NewAttribute(icatypes.AttributeKeyControllerChannelID, packet.GetDestChannel()),
+ event.NewAttribute(icatypes.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
}
if err != nil {
- attributes = append(attributes, sdk.NewAttribute(icatypes.AttributeKeyAckError, err.Error()))
+ attributes = append(attributes, event.NewAttribute(icatypes.AttributeKeyAckError, err.Error()))
}
- sdkCtx.EventManager().EmitEvent(
- sdk.NewEvent(
- icatypes.EventTypePacket,
- attributes...,
- ),
- )
+ return k.EventService.EventManager(ctx).EmitKV(icatypes.EventTypePacket, attributes...)
}
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/genesis_test.go b/modules/apps/27-interchain-accounts/controller/keeper/genesis_test.go
index 70ec159d0b0..974e12f852c 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/genesis_test.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/genesis_test.go
@@ -21,7 +21,7 @@ func (suite *KeeperTestSuite) TestInitGenesis() {
},
}
- interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext(), ibctesting.FirstConnectionID, TestPortID)
+ interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext().HeaderInfo(), ibctesting.FirstConnectionID, TestPortID)
genesisState := genesistypes.ControllerGenesisState{
ActiveChannels: []genesistypes.ActiveChannel{
{
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/grpc_query.go b/modules/apps/27-interchain-accounts/controller/keeper/grpc_query.go
index 4d8e14c6d76..acd61e199da 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/grpc_query.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/grpc_query.go
@@ -6,8 +6,6 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
- sdk "github.com/cosmos/cosmos-sdk/types"
-
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
)
@@ -15,13 +13,11 @@ import (
var _ types.QueryServer = (*Keeper)(nil)
// InterchainAccount implements the Query/InterchainAccount gRPC method
-func (k Keeper) InterchainAccount(goCtx context.Context, req *types.QueryInterchainAccountRequest) (*types.QueryInterchainAccountResponse, error) {
+func (k Keeper) InterchainAccount(ctx context.Context, req *types.QueryInterchainAccountRequest) (*types.QueryInterchainAccountResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(goCtx)
-
portID, err := icatypes.NewControllerPortID(req.Owner)
if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "failed to generate portID from owner address: %s", err)
@@ -38,10 +34,8 @@ func (k Keeper) InterchainAccount(goCtx context.Context, req *types.QueryInterch
}
// Params implements the Query/Params gRPC method
-func (k Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
- ctx := sdk.UnwrapSDKContext(c)
+func (k Keeper) Params(ctx context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
params := k.GetParams(ctx)
-
return &types.QueryParamsResponse{
Params: ¶ms,
}, nil
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/grpc_query_test.go b/modules/apps/27-interchain-accounts/controller/keeper/grpc_query_test.go
index cc2002a2540..e5d73cfe5c6 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/grpc_query_test.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/grpc_query_test.go
@@ -36,7 +36,7 @@ func (suite *KeeperTestSuite) TestQueryInterchainAccount() {
{
"invalid connection, account address not found",
func() {
- req.ConnectionId = "invalid-connection-id"
+ req.ConnectionId = ibctesting.InvalidID
},
"failed to retrieve account address",
},
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/handshake_test.go b/modules/apps/27-interchain-accounts/controller/keeper/handshake_test.go
index 0f3a291ffdf..d781b0c2938 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/handshake_test.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/handshake_test.go
@@ -170,7 +170,7 @@ func (suite *KeeperTestSuite) TestOnChanOpenInit() {
{
"connection not found",
func() {
- channel.ConnectionHops = []string{"invalid-connection-id"}
+ channel.ConnectionHops = []string{ibctesting.InvalidID}
path.EndpointA.SetChannel(*channel)
},
connectiontypes.ErrConnectionNotFound,
@@ -186,7 +186,7 @@ func (suite *KeeperTestSuite) TestOnChanOpenInit() {
{
"invalid controller connection ID",
func() {
- metadata.ControllerConnectionId = "invalid-connection-id"
+ metadata.ControllerConnectionId = ibctesting.InvalidID
versionBytes, err := icatypes.ModuleCdc.MarshalJSON(&metadata)
suite.Require().NoError(err)
@@ -199,7 +199,7 @@ func (suite *KeeperTestSuite) TestOnChanOpenInit() {
{
"invalid host connection ID",
func() {
- metadata.HostConnectionId = "invalid-connection-id"
+ metadata.HostConnectionId = ibctesting.InvalidID
versionBytes, err := icatypes.ModuleCdc.MarshalJSON(&metadata)
suite.Require().NoError(err)
@@ -298,8 +298,7 @@ func (suite *KeeperTestSuite) TestOnChanOpenInit() {
path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, channel.Counterparty, channel.Version,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(expectedVersion, version)
} else {
@@ -686,9 +685,7 @@ func (suite *KeeperTestSuite) TestOnChanUpgradeInit() {
version,
)
- expPass := tc.expError == nil
-
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(upgradeVersion, version)
} else {
@@ -857,8 +854,7 @@ func (suite *KeeperTestSuite) TestOnChanUpgradeAck() {
counterpartyVersion,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(path.EndpointA.GetChannel().Version, counterpartyVersion)
} else {
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/keeper.go b/modules/apps/27-interchain-accounts/controller/keeper/keeper.go
index c30ee44f0a2..f2cc643b493 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/keeper.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/keeper.go
@@ -4,17 +4,14 @@ import (
"bytes"
"context"
"errors"
- "fmt"
"strings"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
errorsmod "cosmossdk.io/errors"
- "cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/runtime"
- sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
genesistypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/genesis/types"
@@ -22,19 +19,18 @@ import (
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
- "github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
// Keeper defines the IBC interchain accounts controller keeper
type Keeper struct {
- storeService corestore.KVStoreService
+ appmodule.Environment
+
cdc codec.Codec
legacySubspace icatypes.ParamSubspace
ics4Wrapper porttypes.ICS4Wrapper
channelKeeper icatypes.ChannelKeeper
- msgRouter icatypes.MessageRouter
-
// the address capable of executing a MsgUpdateParams message. Typically, this
// should be the x/gov module account.
authority string
@@ -42,21 +38,19 @@ type Keeper struct {
// NewKeeper creates a new interchain accounts controller Keeper instance
func NewKeeper(
- cdc codec.Codec, storeService corestore.KVStoreService, legacySubspace icatypes.ParamSubspace,
- ics4Wrapper porttypes.ICS4Wrapper, channelKeeper icatypes.ChannelKeeper,
- msgRouter icatypes.MessageRouter, authority string,
+ cdc codec.Codec, env appmodule.Environment, legacySubspace icatypes.ParamSubspace,
+ ics4Wrapper porttypes.ICS4Wrapper, channelKeeper icatypes.ChannelKeeper, authority string,
) Keeper {
if strings.TrimSpace(authority) == "" {
panic(errors.New("authority must be non-empty"))
}
return Keeper{
- storeService: storeService,
+ Environment: env,
cdc: cdc,
legacySubspace: legacySubspace,
ics4Wrapper: ics4Wrapper,
channelKeeper: channelKeeper,
- msgRouter: msgRouter,
authority: authority,
}
}
@@ -73,12 +67,6 @@ func (k Keeper) GetICS4Wrapper() porttypes.ICS4Wrapper {
return k.ics4Wrapper
}
-// Logger returns the application logger, scoped to the associated module
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return sdkCtx.Logger().With("module", fmt.Sprintf("x/%s-%s", exported.ModuleName, icatypes.ModuleName))
-}
-
// GetConnectionID returns the connection id for the given port and channelIDs.
func (k Keeper) GetConnectionID(ctx context.Context, portID, channelID string) (string, error) {
channel, found := k.channelKeeper.GetChannel(ctx, portID, channelID)
@@ -90,9 +78,9 @@ func (k Keeper) GetConnectionID(ctx context.Context, portID, channelID string) (
// GetAllPorts returns all ports to which the interchain accounts controller module is bound. Used in ExportGenesis
func (k Keeper) GetAllPorts(ctx context.Context) []string {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(icatypes.PortKeyPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var ports []string
for ; iterator.Valid(); iterator.Next() {
@@ -106,7 +94,7 @@ func (k Keeper) GetAllPorts(ctx context.Context) []string {
// setPort sets the provided portID in state
func (k Keeper) setPort(ctx context.Context, portID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyPort(portID), []byte{0x01}); err != nil {
panic(err)
}
@@ -119,7 +107,7 @@ func (k Keeper) GetAppVersion(ctx context.Context, portID, channelID string) (st
// GetActiveChannelID retrieves the active channelID from the store, keyed by the provided connectionID and portID
func (k Keeper) GetActiveChannelID(ctx context.Context, connectionID, portID string) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := icatypes.KeyActiveChannel(portID, connectionID)
bz, err := store.Get(key)
@@ -162,9 +150,9 @@ func (k Keeper) IsActiveChannelClosed(ctx context.Context, connectionID, portID
// GetAllActiveChannels returns a list of all active interchain accounts controller channels and their associated connection and port identifiers
func (k Keeper) GetAllActiveChannels(ctx context.Context) []genesistypes.ActiveChannel {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(icatypes.ActiveChannelKeyPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var activeChannels []genesistypes.ActiveChannel
for ; iterator.Valid(); iterator.Next() {
@@ -189,7 +177,7 @@ func (k Keeper) GetAllActiveChannels(ctx context.Context) []genesistypes.ActiveC
// SetActiveChannelID stores the active channelID, keyed by the provided connectionID and portID
func (k Keeper) SetActiveChannelID(ctx context.Context, connectionID, portID, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyActiveChannel(portID, connectionID), []byte(channelID)); err != nil {
panic(err)
}
@@ -203,7 +191,7 @@ func (k Keeper) IsActiveChannel(ctx context.Context, connectionID, portID string
// GetInterchainAccountAddress retrieves the InterchainAccount address from the store associated with the provided connectionID and portID
func (k Keeper) GetInterchainAccountAddress(ctx context.Context, connectionID, portID string) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := icatypes.KeyOwnerAccount(portID, connectionID)
bz, err := store.Get(key)
@@ -219,8 +207,9 @@ func (k Keeper) GetInterchainAccountAddress(ctx context.Context, connectionID, p
// GetAllInterchainAccounts returns a list of all registered interchain account addresses and their associated connection and controller port identifiers
func (k Keeper) GetAllInterchainAccounts(ctx context.Context) []genesistypes.RegisteredInterchainAccount {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(icatypes.OwnerKeyPrefix))
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var interchainAccounts []genesistypes.RegisteredInterchainAccount
for ; iterator.Valid(); iterator.Next() {
@@ -240,7 +229,7 @@ func (k Keeper) GetAllInterchainAccounts(ctx context.Context) []genesistypes.Reg
// SetInterchainAccountAddress stores the InterchainAccount address, keyed by the associated connectionID and portID
func (k Keeper) SetInterchainAccountAddress(ctx context.Context, connectionID, portID, address string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyOwnerAccount(portID, connectionID), []byte(address)); err != nil {
panic(err)
}
@@ -248,7 +237,7 @@ func (k Keeper) SetInterchainAccountAddress(ctx context.Context, connectionID, p
// IsMiddlewareEnabled returns true if the underlying application callbacks are enabled for given port and connection identifier pair, otherwise false
func (k Keeper) IsMiddlewareEnabled(ctx context.Context, portID, connectionID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(icatypes.KeyIsMiddlewareEnabled(portID, connectionID))
if err != nil {
panic(err)
@@ -258,7 +247,7 @@ func (k Keeper) IsMiddlewareEnabled(ctx context.Context, portID, connectionID st
// IsMiddlewareDisabled returns true if the underlying application callbacks are disabled for the given port and connection identifier pair, otherwise false
func (k Keeper) IsMiddlewareDisabled(ctx context.Context, portID, connectionID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(icatypes.KeyIsMiddlewareEnabled(portID, connectionID))
if err != nil {
panic(err)
@@ -268,7 +257,7 @@ func (k Keeper) IsMiddlewareDisabled(ctx context.Context, portID, connectionID s
// SetMiddlewareEnabled stores a flag to indicate that the underlying application callbacks should be enabled for the given port and connection identifier pair
func (k Keeper) SetMiddlewareEnabled(ctx context.Context, portID, connectionID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyIsMiddlewareEnabled(portID, connectionID), icatypes.MiddlewareEnabled); err != nil {
panic(err)
}
@@ -276,7 +265,7 @@ func (k Keeper) SetMiddlewareEnabled(ctx context.Context, portID, connectionID s
// SetMiddlewareDisabled stores a flag to indicate that the underlying application callbacks should be disabled for the given port and connection identifier pair
func (k Keeper) SetMiddlewareDisabled(ctx context.Context, portID, connectionID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyIsMiddlewareEnabled(portID, connectionID), icatypes.MiddlewareDisabled); err != nil {
panic(err)
}
@@ -284,7 +273,7 @@ func (k Keeper) SetMiddlewareDisabled(ctx context.Context, portID, connectionID
// DeleteMiddlewareEnabled deletes the middleware enabled flag stored in state
func (k Keeper) DeleteMiddlewareEnabled(ctx context.Context, portID, connectionID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(icatypes.KeyIsMiddlewareEnabled(portID, connectionID)); err != nil {
panic(err)
}
@@ -307,7 +296,7 @@ func (k Keeper) getAppMetadata(ctx context.Context, portID, channelID string) (i
// GetParams returns the current ica/controller submodule parameters.
func (k Keeper) GetParams(ctx context.Context) types.Params {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.ParamsKey))
if err != nil {
panic(err)
@@ -323,7 +312,7 @@ func (k Keeper) GetParams(ctx context.Context) types.Params {
// SetParams sets the ica/controller submodule parameters.
func (k Keeper) SetParams(ctx context.Context, params types.Params) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(¶ms)
if err := store.Set([]byte(types.ParamsKey), bz); err != nil {
panic(err)
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/keeper_test.go b/modules/apps/27-interchain-accounts/controller/keeper/keeper_test.go
index 520c6a4383c..5905bba93ee 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/keeper_test.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/keeper_test.go
@@ -5,9 +5,11 @@ import (
testifysuite "github.com/stretchr/testify/suite"
+ "cosmossdk.io/log"
+ govtypes "cosmossdk.io/x/gov/types"
+
"github.com/cosmos/cosmos-sdk/runtime"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
@@ -118,22 +120,20 @@ func (suite *KeeperTestSuite) TestNewKeeper() {
{"success", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.SubModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().MsgServiceRouter(),
suite.chainA.GetSimApp().ICAControllerKeeper.GetAuthority(),
)
}, ""},
{"failure: empty authority", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.SubModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().MsgServiceRouter(),
"", // authority
)
}, "authority must be non-empty"},
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/migrations.go b/modules/apps/27-interchain-accounts/controller/keeper/migrations.go
index bd43a02c420..c361362e6c1 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/migrations.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/migrations.go
@@ -25,11 +25,11 @@ func (m Migrator) MigrateParams(ctx context.Context) error {
if m.keeper != nil {
params := controllertypes.DefaultParams()
if m.keeper.legacySubspace != nil {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- m.keeper.legacySubspace.GetParamSetIfExists(sdkCtx, ¶ms)
+ // NOTE: legacy params still rely on sdk context
+ m.keeper.legacySubspace.GetParamSetIfExists(sdk.UnwrapSDKContext(ctx), ¶ms)
}
m.keeper.SetParams(ctx, params)
- m.keeper.Logger(ctx).Info("successfully migrated ica/controller submodule to self-manage params")
+ m.keeper.Logger.Info("successfully migrated ica/controller submodule to self-manage params")
}
return nil
}
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/migrations_test.go b/modules/apps/27-interchain-accounts/controller/keeper/migrations_test.go
index 0a9da175f92..395fdfc816f 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/migrations_test.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/migrations_test.go
@@ -3,6 +3,8 @@ package keeper_test
import (
"fmt"
+ "cosmossdk.io/log"
+
"github.com/cosmos/cosmos-sdk/runtime"
icacontrollerkeeper "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/keeper"
@@ -29,11 +31,10 @@ func (suite *KeeperTestSuite) TestMigratorMigrateParams() {
func() {
suite.chainA.GetSimApp().ICAControllerKeeper = icacontrollerkeeper.NewKeeper(
suite.chainA.Codec,
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(icacontrollertypes.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(icacontrollertypes.StoreKey)), log.NewNopLogger()),
nil, // assign a nil legacy param subspace
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().MsgServiceRouter(),
suite.chainA.GetSimApp().ICAControllerKeeper.GetAuthority(),
)
},
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/msg_server.go b/modules/apps/27-interchain-accounts/controller/keeper/msg_server.go
index ea78c2d0fde..d9e4d8500c1 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/msg_server.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/msg_server.go
@@ -5,8 +5,6 @@ import (
errorsmod "cosmossdk.io/errors"
- sdk "github.com/cosmos/cosmos-sdk/types"
-
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -26,9 +24,7 @@ func NewMsgServerImpl(keeper *Keeper) types.MsgServer {
}
// RegisterInterchainAccount defines a rpc handler for MsgRegisterInterchainAccount
-func (s msgServer) RegisterInterchainAccount(goCtx context.Context, msg *types.MsgRegisterInterchainAccount) (*types.MsgRegisterInterchainAccountResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (s msgServer) RegisterInterchainAccount(ctx context.Context, msg *types.MsgRegisterInterchainAccount) (*types.MsgRegisterInterchainAccountResponse, error) {
portID, err := icatypes.NewControllerPortID(msg.Owner)
if err != nil {
return nil, err
@@ -48,11 +44,11 @@ func (s msgServer) RegisterInterchainAccount(goCtx context.Context, msg *types.M
channelID, err := s.registerInterchainAccount(ctx, msg.ConnectionId, portID, msg.Version, order)
if err != nil {
- s.Logger(ctx).Error("error registering interchain account", "error", err.Error())
+ s.Logger.Error("error registering interchain account", "error", err.Error())
return nil, err
}
- s.Logger(ctx).Info("successfully registered interchain account", "channel-id", channelID)
+ s.Logger.Info("successfully registered interchain account", "channel-id", channelID)
return &types.MsgRegisterInterchainAccountResponse{
ChannelId: channelID,
@@ -61,9 +57,7 @@ func (s msgServer) RegisterInterchainAccount(goCtx context.Context, msg *types.M
}
// SendTx defines a rpc handler for MsgSendTx
-func (s msgServer) SendTx(goCtx context.Context, msg *types.MsgSendTx) (*types.MsgSendTxResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (s msgServer) SendTx(ctx context.Context, msg *types.MsgSendTx) (*types.MsgSendTxResponse, error) {
portID, err := icatypes.NewControllerPortID(msg.Owner)
if err != nil {
return nil, err
@@ -71,7 +65,8 @@ func (s msgServer) SendTx(goCtx context.Context, msg *types.MsgSendTx) (*types.M
// the absolute timeout value is calculated using the controller chain block time + the relative timeout value
// this assumes time synchrony to a certain degree between the controller and counterparty host chain
- absoluteTimeout := uint64(ctx.BlockTime().UnixNano()) + msg.RelativeTimeout
+ blockTime := s.HeaderService.HeaderInfo(ctx).Time.UnixNano()
+ absoluteTimeout := uint64(blockTime) + msg.RelativeTimeout
seq, err := s.sendTx(ctx, msg.ConnectionId, portID, msg.PacketData, absoluteTimeout)
if err != nil {
return nil, err
@@ -81,12 +76,11 @@ func (s msgServer) SendTx(goCtx context.Context, msg *types.MsgSendTx) (*types.M
}
// UpdateParams defines an rpc handler method for MsgUpdateParams. Updates the ica/controller submodule's parameters.
-func (k Keeper) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {
+func (k Keeper) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {
if k.GetAuthority() != msg.Signer {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Signer)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
k.SetParams(ctx, msg.Params)
return &types.MsgUpdateParamsResponse{}, nil
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/msg_server_test.go b/modules/apps/27-interchain-accounts/controller/keeper/msg_server_test.go
index 6164fc513cb..fda01ff923e 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/msg_server_test.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/msg_server_test.go
@@ -5,8 +5,9 @@ import (
"github.com/cosmos/gogoproto/proto"
+ banktypes "cosmossdk.io/x/bank/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/relay.go b/modules/apps/27-interchain-accounts/controller/keeper/relay.go
index 7b072bdea2f..40111168a14 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/relay.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/relay.go
@@ -5,8 +5,6 @@ import (
errorsmod "cosmossdk.io/errors"
- sdk "github.com/cosmos/cosmos-sdk/types"
-
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
@@ -36,8 +34,8 @@ func (k Keeper) sendTx(ctx context.Context, connectionID, portID string, icaPack
return 0, errorsmod.Wrapf(icatypes.ErrActiveChannelNotFound, "failed to retrieve active channel on connection %s for port %s", connectionID, portID)
}
- sdkCtx := sdk.UnwrapSDKContext(ctx)
- if uint64(sdkCtx.BlockTime().UnixNano()) >= timeoutTimestamp {
+ blockTime := k.HeaderService.HeaderInfo(ctx).Time.UnixNano()
+ if uint64(blockTime) >= timeoutTimestamp {
return 0, icatypes.ErrInvalidTimeoutTimestamp
}
diff --git a/modules/apps/27-interchain-accounts/controller/keeper/relay_test.go b/modules/apps/27-interchain-accounts/controller/keeper/relay_test.go
index ee886fc59f8..cddcc75b381 100644
--- a/modules/apps/27-interchain-accounts/controller/keeper/relay_test.go
+++ b/modules/apps/27-interchain-accounts/controller/keeper/relay_test.go
@@ -3,8 +3,9 @@ package keeper_test
import (
"github.com/cosmos/gogoproto/proto"
+ banktypes "cosmossdk.io/x/bank/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
diff --git a/modules/apps/27-interchain-accounts/controller/types/codec.go b/modules/apps/27-interchain-accounts/controller/types/codec.go
index abc4041b535..2df0a6f7087 100644
--- a/modules/apps/27-interchain-accounts/controller/types/codec.go
+++ b/modules/apps/27-interchain-accounts/controller/types/codec.go
@@ -1,13 +1,14 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ coreregistry "cosmossdk.io/core/registry"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
// RegisterInterfaces registers the interchain accounts controller message types using the provided InterfaceRegistry
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*sdk.Msg)(nil),
&MsgRegisterInterchainAccount{},
diff --git a/modules/apps/27-interchain-accounts/controller/types/codec_test.go b/modules/apps/27-interchain-accounts/controller/types/codec_test.go
index e45fcb2967f..87fe0831be0 100644
--- a/modules/apps/27-interchain-accounts/controller/types/codec_test.go
+++ b/modules/apps/27-interchain-accounts/controller/types/codec_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -45,7 +46,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
fmt.Printf("%+v\n", err)
diff --git a/modules/apps/27-interchain-accounts/controller/types/msgs_test.go b/modules/apps/27-interchain-accounts/controller/types/msgs_test.go
index 602e3a72966..33f89d81faf 100644
--- a/modules/apps/27-interchain-accounts/controller/types/msgs_test.go
+++ b/modules/apps/27-interchain-accounts/controller/types/msgs_test.go
@@ -7,9 +7,11 @@ import (
"github.com/cosmos/gogoproto/proto"
"github.com/stretchr/testify/require"
+ banktypes "cosmossdk.io/x/bank/types"
+
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
ica "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
@@ -110,8 +112,8 @@ func TestMsgRegisterInterchainAccountGetSigners(t *testing.T) {
require.NoError(t, err)
msg := types.NewMsgRegisterInterchainAccount(ibctesting.FirstConnectionID, ibctesting.TestAccAddress, "", channeltypes.ORDERED)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
require.NoError(t, err)
require.Equal(t, expSigner.Bytes(), signers[0])
}
@@ -175,7 +177,7 @@ func TestMsgSendTxValidateBasic(t *testing.T) {
Amount: ibctesting.TestCoins,
}
- encodingConfig := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
+ encodingConfig := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
data, err := icatypes.SerializeCosmosTx(encodingConfig.Codec, []proto.Message{msgBankSend}, icatypes.EncodingProtobuf)
require.NoError(t, err)
@@ -213,7 +215,7 @@ func TestMsgSendTxGetSigners(t *testing.T) {
Amount: ibctesting.TestCoins,
}
- encodingConfig := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
+ encodingConfig := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
data, err := icatypes.SerializeCosmosTx(encodingConfig.Codec, []proto.Message{msgBankSend}, icatypes.EncodingProtobuf)
require.NoError(t, err)
@@ -229,7 +231,7 @@ func TestMsgSendTxGetSigners(t *testing.T) {
100000,
packetData,
)
- signers, _, err := encodingConfig.Codec.GetMsgV1Signers(msg)
+ signers, _, err := encodingConfig.Codec.GetMsgSigners(msg)
require.NoError(t, err)
require.Equal(t, expSigner.Bytes(), signers[0])
}
@@ -277,8 +279,8 @@ func TestMsgUpdateParamsGetSigners(t *testing.T) {
Params: types.DefaultParams(),
}
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(&msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(&msg)
if tc.expErr == nil {
require.NoError(t, err)
require.Equal(t, tc.address.Bytes(), signers[0])
diff --git a/modules/apps/27-interchain-accounts/controller/types/params_legacy.go b/modules/apps/27-interchain-accounts/controller/types/params_legacy.go
index 1dac915bdeb..564a0f33012 100644
--- a/modules/apps/27-interchain-accounts/controller/types/params_legacy.go
+++ b/modules/apps/27-interchain-accounts/controller/types/params_legacy.go
@@ -9,7 +9,7 @@ package types
import (
"fmt"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ paramtypes "cosmossdk.io/x/params/types"
)
// KeyControllerEnabled is the store key for ControllerEnabled Params
diff --git a/modules/apps/27-interchain-accounts/genesis/types/genesis_test.go b/modules/apps/27-interchain-accounts/genesis/types/genesis_test.go
index 8413a68f83f..c411257e06f 100644
--- a/modules/apps/27-interchain-accounts/genesis/types/genesis_test.go
+++ b/modules/apps/27-interchain-accounts/genesis/types/genesis_test.go
@@ -9,6 +9,7 @@ import (
genesistypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/genesis/types"
hosttypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
+ host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
ibctesting "github.com/cosmos/ibc-go/v9/testing"
)
@@ -34,33 +35,33 @@ func (suite *GenesisTypesTestSuite) TestValidateGenesisState() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ expErr error
}{
{
"success",
func() {},
- true,
+ nil,
},
{
"failed to validate - empty value",
func() {
genesisState = genesistypes.GenesisState{}
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate - invalid controller genesis",
func() {
genesisState = *genesistypes.NewGenesisState(genesistypes.ControllerGenesisState{Ports: []string{"invalid|port"}}, genesistypes.DefaultHostGenesis())
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate - invalid host genesis",
func() {
genesisState = *genesistypes.NewGenesisState(genesistypes.DefaultControllerGenesis(), genesistypes.HostGenesisState{})
},
- false,
+ host.ErrInvalidID,
},
}
@@ -74,10 +75,11 @@ func (suite *GenesisTypesTestSuite) TestValidateGenesisState() {
err := genesisState.Validate()
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, tc.name)
} else {
suite.Require().Error(err, tc.name)
+ suite.Require().ErrorIs(err, tc.expErr)
}
})
}
@@ -89,12 +91,12 @@ func (suite *GenesisTypesTestSuite) TestValidateControllerGenesisState() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ expErr error
}{
{
"success",
func() {},
- true,
+ nil,
},
{
"failed to validate active channel - invalid port identifier",
@@ -108,7 +110,7 @@ func (suite *GenesisTypesTestSuite) TestValidateControllerGenesisState() {
genesisState = genesistypes.NewControllerGenesisState(activeChannels, []genesistypes.RegisteredInterchainAccount{}, []string{}, controllertypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate active channel - invalid channel identifier",
@@ -122,7 +124,7 @@ func (suite *GenesisTypesTestSuite) TestValidateControllerGenesisState() {
genesisState = genesistypes.NewControllerGenesisState(activeChannels, []genesistypes.RegisteredInterchainAccount{}, []string{}, controllertypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate registered account - invalid port identifier",
@@ -143,7 +145,7 @@ func (suite *GenesisTypesTestSuite) TestValidateControllerGenesisState() {
genesisState = genesistypes.NewControllerGenesisState(activeChannels, registeredAccounts, []string{}, controllertypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate registered account - invalid owner address",
@@ -164,7 +166,7 @@ func (suite *GenesisTypesTestSuite) TestValidateControllerGenesisState() {
genesisState = genesistypes.NewControllerGenesisState(activeChannels, registeredAccounts, []string{}, controllertypes.DefaultParams())
},
- false,
+ icatypes.ErrInvalidAccountAddress,
},
{
"failed to validate controller ports - invalid port identifier",
@@ -185,7 +187,7 @@ func (suite *GenesisTypesTestSuite) TestValidateControllerGenesisState() {
genesisState = genesistypes.NewControllerGenesisState(activeChannels, registeredAccounts, []string{"invalid|port"}, controllertypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
}
@@ -199,10 +201,11 @@ func (suite *GenesisTypesTestSuite) TestValidateControllerGenesisState() {
err := genesisState.Validate()
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, tc.name)
} else {
suite.Require().Error(err, tc.name)
+ suite.Require().ErrorIs(err, tc.expErr)
}
})
}
@@ -214,12 +217,12 @@ func (suite *GenesisTypesTestSuite) TestValidateHostGenesisState() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ expErr error
}{
{
"success",
func() {},
- true,
+ nil,
},
{
"failed to validate active channel - invalid port identifier",
@@ -233,7 +236,7 @@ func (suite *GenesisTypesTestSuite) TestValidateHostGenesisState() {
genesisState = genesistypes.NewHostGenesisState(activeChannels, []genesistypes.RegisteredInterchainAccount{}, icatypes.HostPortID, hosttypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate active channel - invalid channel identifier",
@@ -247,7 +250,7 @@ func (suite *GenesisTypesTestSuite) TestValidateHostGenesisState() {
genesisState = genesistypes.NewHostGenesisState(activeChannels, []genesistypes.RegisteredInterchainAccount{}, icatypes.HostPortID, hosttypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate registered account - invalid port identifier",
@@ -268,7 +271,7 @@ func (suite *GenesisTypesTestSuite) TestValidateHostGenesisState() {
genesisState = genesistypes.NewHostGenesisState(activeChannels, registeredAccounts, icatypes.HostPortID, hosttypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
{
"failed to validate registered account - invalid owner address",
@@ -289,7 +292,7 @@ func (suite *GenesisTypesTestSuite) TestValidateHostGenesisState() {
genesisState = genesistypes.NewHostGenesisState(activeChannels, registeredAccounts, icatypes.HostPortID, hosttypes.DefaultParams())
},
- false,
+ icatypes.ErrInvalidAccountAddress,
},
{
"failed to validate controller ports - invalid port identifier",
@@ -310,7 +313,7 @@ func (suite *GenesisTypesTestSuite) TestValidateHostGenesisState() {
genesisState = genesistypes.NewHostGenesisState(activeChannels, registeredAccounts, "invalid|port", hosttypes.DefaultParams())
},
- false,
+ host.ErrInvalidID,
},
}
@@ -324,10 +327,11 @@ func (suite *GenesisTypesTestSuite) TestValidateHostGenesisState() {
err := genesisState.Validate()
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, tc.name)
} else {
suite.Require().Error(err, tc.name)
+ suite.Require().ErrorIs(err, tc.expErr)
}
})
}
diff --git a/modules/apps/27-interchain-accounts/host/client/cli/query.go b/modules/apps/27-interchain-accounts/host/client/cli/query.go
index 4b3ba46d05b..87783fa2300 100644
--- a/modules/apps/27-interchain-accounts/host/client/cli/query.go
+++ b/modules/apps/27-interchain-accounts/host/client/cli/query.go
@@ -13,7 +13,7 @@ import (
"github.com/cosmos/cosmos-sdk/version"
"github.com/cosmos/cosmos-sdk/x/auth/tx"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
diff --git a/modules/apps/27-interchain-accounts/host/client/cli/tx_test.go b/modules/apps/27-interchain-accounts/host/client/cli/tx_test.go
index d378b56e181..5a500e6ec66 100644
--- a/modules/apps/27-interchain-accounts/host/client/cli/tx_test.go
+++ b/modules/apps/27-interchain-accounts/host/client/cli/tx_test.go
@@ -6,11 +6,13 @@ import (
"github.com/stretchr/testify/require"
+ coreregistry "cosmossdk.io/core/registry"
+ banktypes "cosmossdk.io/x/bank/types"
+ stakingtypes "cosmossdk.io/x/staking/types"
+
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
)
@@ -46,7 +48,7 @@ func TestGeneratePacketData(t *testing.T) {
memo string
expectedPass bool
message string
- registerInterfaceFn func(registry codectypes.InterfaceRegistry)
+ registerInterfaceFn func(registry coreregistry.InterfaceRegistrar)
assertionFn func(t *testing.T, msgs []sdk.Msg)
}{
{
@@ -54,7 +56,7 @@ func TestGeneratePacketData(t *testing.T) {
memo: "",
expectedPass: true,
message: multiMsg,
- registerInterfaceFn: func(registry codectypes.InterfaceRegistry) {
+ registerInterfaceFn: func(registry coreregistry.InterfaceRegistrar) {
stakingtypes.RegisterInterfaces(registry)
banktypes.RegisterInterfaces(registry)
},
diff --git a/modules/apps/27-interchain-accounts/host/ibc_module.go b/modules/apps/27-interchain-accounts/host/ibc_module.go
index e23b0514e59..77c7060ae34 100644
--- a/modules/apps/27-interchain-accounts/host/ibc_module.go
+++ b/modules/apps/27-interchain-accounts/host/ibc_module.go
@@ -116,8 +116,11 @@ func (im IBCModule) OnRecvPacket(
_ sdk.AccAddress,
) ibcexported.Acknowledgement {
if !im.keeper.GetParams(ctx).HostEnabled {
- im.keeper.Logger(ctx).Info("host submodule is disabled")
- keeper.EmitHostDisabledEvent(ctx, packet)
+ im.keeper.Logger.Info("host submodule is disabled")
+ if err := im.keeper.EmitHostDisabledEvent(ctx, packet); err != nil {
+ return channeltypes.NewErrorAcknowledgement(err)
+ }
+
return channeltypes.NewErrorAcknowledgement(types.ErrHostSubModuleDisabled)
}
@@ -125,13 +128,15 @@ func (im IBCModule) OnRecvPacket(
ack := channeltypes.NewResultAcknowledgement(txResponse)
if err != nil {
ack = channeltypes.NewErrorAcknowledgement(err)
- im.keeper.Logger(ctx).Error(fmt.Sprintf("%s sequence %d", err.Error(), packet.Sequence))
+ im.keeper.Logger.Error(fmt.Sprintf("%s sequence %d", err.Error(), packet.Sequence))
} else {
- im.keeper.Logger(ctx).Info("successfully handled packet", "sequence", packet.Sequence)
+ im.keeper.Logger.Info("successfully handled packet", "sequence", packet.Sequence)
}
// Emit an event indicating a successful or failed acknowledgement.
- keeper.EmitAcknowledgementEvent(ctx, packet, ack, err)
+ if err := im.keeper.EmitAcknowledgementEvent(ctx, packet, ack, err); err != nil {
+ return channeltypes.NewErrorAcknowledgement(err)
+ }
// NOTE: acknowledgement will be written synchronously during IBC handler execution.
return ack
diff --git a/modules/apps/27-interchain-accounts/host/ibc_module_test.go b/modules/apps/27-interchain-accounts/host/ibc_module_test.go
index e5050e85442..900dd6c383c 100644
--- a/modules/apps/27-interchain-accounts/host/ibc_module_test.go
+++ b/modules/apps/27-interchain-accounts/host/ibc_module_test.go
@@ -10,10 +10,11 @@ import (
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
icahost "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
@@ -148,10 +149,10 @@ func (suite *InterchainAccountsTestSuite) TestOnChanOpenTry() {
},
{
"account address generation is block dependent", func() {
- icaHostAccount := icatypes.GenerateAddress(suite.chainB.GetContext(), path.EndpointB.ConnectionID, path.EndpointA.ChannelConfig.PortID)
- err := suite.chainB.GetSimApp().BankKeeper.SendCoins(suite.chainB.GetContext(), suite.chainB.SenderAccount.GetAddress(), icaHostAccount, sdk.Coins{sdk.NewCoin("stake", sdkmath.NewInt(1))})
- suite.Require().NoError(err)
- suite.Require().True(suite.chainB.GetSimApp().AccountKeeper.HasAccount(suite.chainB.GetContext(), icaHostAccount))
+ interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext().HeaderInfo(), path.EndpointB.ConnectionID, path.EndpointA.ChannelConfig.PortID)
+ interchainAcc := icatypes.NewInterchainAccount(authtypes.NewBaseAccountWithAddress(interchainAccAddr), path.EndpointA.ChannelConfig.PortID)
+ suite.chainB.GetSimApp().AuthKeeper.NewAccount(suite.chainB.GetContext(), interchainAcc)
+ suite.chainB.GetSimApp().AuthKeeper.SetAccount(suite.chainB.GetContext(), interchainAcc)
// ensure account registration is simulated in a separate block
suite.chainB.NextBlock()
diff --git a/modules/apps/27-interchain-accounts/host/keeper/account.go b/modules/apps/27-interchain-accounts/host/keeper/account.go
index c6b239232bb..42509530e89 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/account.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/account.go
@@ -15,9 +15,9 @@ import (
// and block dependent information. An error is returned if an account already exists for the generated account.
// An interchain account type is set in the account keeper and the interchain account address mapping is updated.
func (k Keeper) createInterchainAccount(ctx context.Context, connectionID, controllerPortID string) (sdk.AccAddress, error) {
- accAddress := icatypes.GenerateAddress(ctx, connectionID, controllerPortID)
+ accAddress := icatypes.GenerateAddress(k.HeaderService.HeaderInfo(ctx), connectionID, controllerPortID)
- if acc := k.accountKeeper.GetAccount(ctx, accAddress); acc != nil {
+ if acc := k.authKeeper.GetAccount(ctx, accAddress); acc != nil {
return nil, errorsmod.Wrapf(icatypes.ErrAccountAlreadyExist, "existing account for newly generated interchain account address %s", accAddress)
}
@@ -26,8 +26,8 @@ func (k Keeper) createInterchainAccount(ctx context.Context, connectionID, contr
controllerPortID,
)
- k.accountKeeper.NewAccount(ctx, interchainAccount)
- k.accountKeeper.SetAccount(ctx, interchainAccount)
+ k.authKeeper.NewAccount(ctx, interchainAccount)
+ k.authKeeper.SetAccount(ctx, interchainAccount)
k.SetInterchainAccountAddress(ctx, connectionID, controllerPortID, interchainAccount.Address)
diff --git a/modules/apps/27-interchain-accounts/host/keeper/events.go b/modules/apps/27-interchain-accounts/host/keeper/events.go
index fb497ec2ca3..f4d6e8e1429 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/events.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/events.go
@@ -4,6 +4,8 @@ import (
"context"
"strconv"
+ "cosmossdk.io/core/event"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
@@ -14,35 +16,30 @@ import (
// EmitAcknowledgementEvent emits an event signalling a successful or failed acknowledgement and including the error
// details if any.
-func EmitAcknowledgementEvent(ctx context.Context, packet channeltypes.Packet, ack exported.Acknowledgement, err error) {
- attributes := []sdk.Attribute{
- sdk.NewAttribute(sdk.AttributeKeyModule, icatypes.ModuleName),
- sdk.NewAttribute(icatypes.AttributeKeyHostChannelID, packet.GetDestChannel()),
- sdk.NewAttribute(icatypes.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
+func (k *Keeper) EmitAcknowledgementEvent(ctx context.Context, packet channeltypes.Packet, ack exported.Acknowledgement, err error) error {
+ attributes := []event.Attribute{
+ event.NewAttribute(sdk.AttributeKeyModule, icatypes.ModuleName),
+ event.NewAttribute(icatypes.AttributeKeyHostChannelID, packet.GetDestChannel()),
+ event.NewAttribute(icatypes.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
}
if err != nil {
- attributes = append(attributes, sdk.NewAttribute(icatypes.AttributeKeyAckError, err.Error()))
+ attributes = append(attributes, event.NewAttribute(icatypes.AttributeKeyAckError, err.Error()))
}
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvent(
- sdk.NewEvent(
- icatypes.EventTypePacket,
- attributes...,
- ),
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ icatypes.EventTypePacket,
+ attributes...,
)
}
// EmitHostDisabledEvent emits an event signalling that the host submodule is disabled.
-func EmitHostDisabledEvent(ctx context.Context, packet channeltypes.Packet) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvent(
- sdk.NewEvent(
- icatypes.EventTypePacket,
- sdk.NewAttribute(sdk.AttributeKeyModule, icatypes.ModuleName),
- sdk.NewAttribute(icatypes.AttributeKeyHostChannelID, packet.GetDestChannel()),
- sdk.NewAttribute(icatypes.AttributeKeyAckError, types.ErrHostSubModuleDisabled.Error()),
- sdk.NewAttribute(icatypes.AttributeKeyAckSuccess, "false"),
- ),
+func (k *Keeper) EmitHostDisabledEvent(ctx context.Context, packet channeltypes.Packet) error {
+ return k.EventService.EventManager(ctx).EmitKV(
+ icatypes.EventTypePacket,
+ event.NewAttribute(sdk.AttributeKeyModule, icatypes.ModuleName),
+ event.NewAttribute(icatypes.AttributeKeyHostChannelID, packet.GetDestChannel()),
+ event.NewAttribute(icatypes.AttributeKeyAckError, types.ErrHostSubModuleDisabled.Error()),
+ event.NewAttribute(icatypes.AttributeKeyAckSuccess, "false"),
)
}
diff --git a/modules/apps/27-interchain-accounts/host/keeper/genesis_test.go b/modules/apps/27-interchain-accounts/host/keeper/genesis_test.go
index 079e2aa7903..fe0a2cbb368 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/genesis_test.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/genesis_test.go
@@ -10,7 +10,7 @@ import (
)
func (suite *KeeperTestSuite) TestInitGenesis() {
- interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext(), ibctesting.FirstConnectionID, TestPortID)
+ interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext().HeaderInfo(), ibctesting.FirstConnectionID, TestPortID)
genesisState := genesistypes.HostGenesisState{
ActiveChannels: []genesistypes.ActiveChannel{
{
@@ -65,7 +65,7 @@ func (suite *KeeperTestSuite) TestGenesisParams() {
suite.Run(tc.name, func() {
suite.SetupTest() // reset
- interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext(), ibctesting.FirstConnectionID, TestPortID)
+ interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext().HeaderInfo(), ibctesting.FirstConnectionID, TestPortID)
genesisState := genesistypes.HostGenesisState{
ActiveChannels: []genesistypes.ActiveChannel{
{
diff --git a/modules/apps/27-interchain-accounts/host/keeper/grpc_query.go b/modules/apps/27-interchain-accounts/host/keeper/grpc_query.go
index c6616c455bd..107853a252e 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/grpc_query.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/grpc_query.go
@@ -3,18 +3,14 @@ package keeper
import (
"context"
- sdk "github.com/cosmos/cosmos-sdk/types"
-
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
)
var _ types.QueryServer = (*Keeper)(nil)
// Params implements the Query/Params gRPC method
-func (k Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
- ctx := sdk.UnwrapSDKContext(c)
+func (k Keeper) Params(ctx context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
params := k.GetParams(ctx)
-
return &types.QueryParamsResponse{
Params: ¶ms,
}, nil
diff --git a/modules/apps/27-interchain-accounts/host/keeper/handshake.go b/modules/apps/27-interchain-accounts/host/keeper/handshake.go
index 19d126218b3..ee4fbba0509 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/handshake.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/handshake.go
@@ -40,7 +40,7 @@ func (k Keeper) OnChanOpenTry(
return "", errorsmod.Wrapf(err, "failed to retrieve connection %s", connectionHops[0])
}
- k.Logger(ctx).Debug("counterparty version is invalid, proposing default metadata")
+ k.Logger.Debug("counterparty version is invalid, proposing default metadata")
metadata = icatypes.NewDefaultMetadata(connection.Counterparty.ConnectionId, connectionHops[0])
}
@@ -72,9 +72,9 @@ func (k Keeper) OnChanOpenTry(
interchainAccAddr, found := k.GetInterchainAccountAddress(ctx, metadata.HostConnectionId, counterparty.PortId)
if found {
// reopening an interchain account
- k.Logger(ctx).Info("reopening existing interchain account", "address", interchainAccAddr)
+ k.Logger.Info("reopening existing interchain account", "address", interchainAccAddr)
accAddress = sdk.MustAccAddressFromBech32(interchainAccAddr)
- if _, ok := k.accountKeeper.GetAccount(ctx, accAddress).(*icatypes.InterchainAccount); !ok {
+ if _, ok := k.authKeeper.GetAccount(ctx, accAddress).(*icatypes.InterchainAccount); !ok {
return "", errorsmod.Wrapf(icatypes.ErrInvalidAccountReopening, "existing account address %s, does not have interchain account type", accAddress)
}
@@ -83,7 +83,7 @@ func (k Keeper) OnChanOpenTry(
if err != nil {
return "", err
}
- k.Logger(ctx).Info("successfully created new interchain account", "host-connection-id", metadata.HostConnectionId, "port-id", counterparty.PortId, "address", accAddress)
+ k.Logger.Info("successfully created new interchain account", "host-connection-id", metadata.HostConnectionId, "port-id", counterparty.PortId, "address", accAddress)
}
metadata.Address = accAddress.String()
diff --git a/modules/apps/27-interchain-accounts/host/keeper/handshake_test.go b/modules/apps/27-interchain-accounts/host/keeper/handshake_test.go
index 016152903de..c3b2f90ef17 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/handshake_test.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/handshake_test.go
@@ -1,9 +1,8 @@
package keeper_test
import (
- sdkmath "cosmossdk.io/math"
-
sdk "github.com/cosmos/cosmos-sdk/types"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
hosttypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
@@ -141,8 +140,8 @@ func (suite *KeeperTestSuite) TestOnChanOpenTry() {
addr, found := suite.chainB.GetSimApp().ICAHostKeeper.GetInterchainAccountAddress(suite.chainB.GetContext(), path.EndpointB.ConnectionID, path.EndpointA.ChannelConfig.PortID)
suite.Require().True(found)
- acc := suite.chainB.GetSimApp().AccountKeeper.GetAccount(suite.chainB.GetContext(), sdk.MustAccAddressFromBech32(addr))
- suite.chainB.GetSimApp().AccountKeeper.RemoveAccount(suite.chainB.GetContext(), acc)
+ acc := suite.chainB.GetSimApp().AuthKeeper.GetAccount(suite.chainB.GetContext(), sdk.MustAccAddressFromBech32(addr))
+ suite.chainB.GetSimApp().AuthKeeper.RemoveAccount(suite.chainB.GetContext(), acc)
},
icatypes.ErrInvalidAccountReopening,
},
@@ -159,23 +158,23 @@ func (suite *KeeperTestSuite) TestOnChanOpenTry() {
suite.Require().True(found)
accAddress := sdk.MustAccAddressFromBech32(addr)
- acc := suite.chainB.GetSimApp().AccountKeeper.GetAccount(suite.chainB.GetContext(), accAddress)
+ acc := suite.chainB.GetSimApp().AuthKeeper.GetAccount(suite.chainB.GetContext(), accAddress)
icaAcc, ok := acc.(*icatypes.InterchainAccount)
suite.Require().True(ok)
// overwrite existing account with only base account type, not intercahin account type
- suite.chainB.GetSimApp().AccountKeeper.SetAccount(suite.chainB.GetContext(), icaAcc.BaseAccount)
+ suite.chainB.GetSimApp().AuthKeeper.SetAccount(suite.chainB.GetContext(), icaAcc.BaseAccount)
},
icatypes.ErrInvalidAccountReopening,
},
{
"account already exists",
func() {
- interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext(), path.EndpointB.ConnectionID, path.EndpointA.ChannelConfig.PortID)
- err := suite.chainB.GetSimApp().BankKeeper.SendCoins(suite.chainB.GetContext(), suite.chainB.SenderAccount.GetAddress(), interchainAccAddr, sdk.Coins{sdk.NewCoin("stake", sdkmath.NewInt(1))})
- suite.Require().NoError(err)
- suite.Require().True(suite.chainB.GetSimApp().AccountKeeper.HasAccount(suite.chainB.GetContext(), interchainAccAddr))
+ interchainAccAddr := icatypes.GenerateAddress(suite.chainB.GetContext().HeaderInfo(), path.EndpointB.ConnectionID, path.EndpointA.ChannelConfig.PortID)
+ interchainAcc := icatypes.NewInterchainAccount(authtypes.NewBaseAccountWithAddress(interchainAccAddr), path.EndpointA.ChannelConfig.PortID)
+ suite.chainB.GetSimApp().AuthKeeper.NewAccount(suite.chainB.GetContext(), interchainAcc)
+ suite.chainB.GetSimApp().AuthKeeper.SetAccount(suite.chainB.GetContext(), interchainAcc)
},
icatypes.ErrAccountAlreadyExist,
},
@@ -189,7 +188,7 @@ func (suite *KeeperTestSuite) TestOnChanOpenTry() {
{
"connection not found",
func() {
- channel.ConnectionHops = []string{"invalid-connection-id"}
+ channel.ConnectionHops = []string{ibctesting.InvalidID}
path.EndpointB.SetChannel(*channel)
},
connectiontypes.ErrConnectionNotFound,
@@ -221,7 +220,7 @@ func (suite *KeeperTestSuite) TestOnChanOpenTry() {
{
"invalid controller connection ID",
func() {
- metadata.ControllerConnectionId = "invalid-connection-id"
+ metadata.ControllerConnectionId = ibctesting.InvalidID
versionBytes, err := icatypes.ModuleCdc.MarshalJSON(&metadata)
suite.Require().NoError(err)
@@ -321,7 +320,7 @@ func (suite *KeeperTestSuite) TestOnChanOpenTry() {
suite.Require().NoError(err)
// Check if account is created
- interchainAccount := suite.chainB.GetSimApp().AccountKeeper.GetAccount(suite.chainB.GetContext(), interchainAccAddr)
+ interchainAccount := suite.chainB.GetSimApp().AuthKeeper.GetAccount(suite.chainB.GetContext(), interchainAccAddr)
suite.Require().Equal(interchainAccount.GetAddress().String(), storedAddr)
expectedMetadata.Address = storedAddr
@@ -598,8 +597,7 @@ func (suite *KeeperTestSuite) TestOnChanUpgradeTry() {
counterpartyVersion,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(path.EndpointB.GetChannel().Version, version)
} else {
diff --git a/modules/apps/27-interchain-accounts/host/keeper/keeper.go b/modules/apps/27-interchain-accounts/host/keeper/keeper.go
index 07f480248ed..bc137083883 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/keeper.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/keeper.go
@@ -12,14 +12,12 @@ import (
msgv1 "cosmossdk.io/api/cosmos/msg/v1"
queryv1 "cosmossdk.io/api/cosmos/query/v1"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
errorsmod "cosmossdk.io/errors"
- "cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/runtime"
- sdk "github.com/cosmos/cosmos-sdk/types"
genesistypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/genesis/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
@@ -27,21 +25,19 @@ import (
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
- "github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
// Keeper defines the IBC interchain accounts host keeper
type Keeper struct {
- storeService corestore.KVStoreService
+ appmodule.Environment
+
cdc codec.Codec
legacySubspace icatypes.ParamSubspace
ics4Wrapper porttypes.ICS4Wrapper
channelKeeper icatypes.ChannelKeeper
- accountKeeper icatypes.AccountKeeper
-
- msgRouter icatypes.MessageRouter
- queryRouter icatypes.QueryRouter
+ authKeeper icatypes.AuthKeeper
// mqsAllowList is a list of all module safe query paths
mqsAllowList []string
@@ -53,12 +49,12 @@ type Keeper struct {
// NewKeeper creates a new interchain accounts host Keeper instance
func NewKeeper(
- cdc codec.Codec, storeService corestore.KVStoreService, legacySubspace icatypes.ParamSubspace,
+ cdc codec.Codec, env appmodule.Environment, legacySubspace icatypes.ParamSubspace,
ics4Wrapper porttypes.ICS4Wrapper, channelKeeper icatypes.ChannelKeeper,
- accountKeeper icatypes.AccountKeeper, msgRouter icatypes.MessageRouter, queryRouter icatypes.QueryRouter, authority string,
+ authKeeper icatypes.AuthKeeper, authority string,
) Keeper {
// ensure ibc interchain accounts module account is set
- if addr := accountKeeper.GetModuleAddress(icatypes.ModuleName); addr == nil {
+ if addr := authKeeper.GetModuleAddress(icatypes.ModuleName); addr == nil {
panic(errors.New("the Interchain Accounts module account has not been set"))
}
@@ -67,14 +63,12 @@ func NewKeeper(
}
return Keeper{
- storeService: storeService,
+ Environment: env,
cdc: cdc,
legacySubspace: legacySubspace,
ics4Wrapper: ics4Wrapper,
channelKeeper: channelKeeper,
- accountKeeper: accountKeeper,
- msgRouter: msgRouter,
- queryRouter: queryRouter,
+ authKeeper: authKeeper,
mqsAllowList: newModuleQuerySafeAllowList(),
authority: authority,
}
@@ -92,12 +86,6 @@ func (k Keeper) GetICS4Wrapper() porttypes.ICS4Wrapper {
return k.ics4Wrapper
}
-// Logger returns the application logger, scoped to the associated module
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: remove after context.Context is removed from core IBC
- return sdkCtx.Logger().With("module", fmt.Sprintf("x/%s-%s", exported.ModuleName, icatypes.ModuleName))
-}
-
// getConnectionID returns the connection id for the given port and channelIDs.
func (k Keeper) getConnectionID(ctx context.Context, portID, channelID string) (string, error) {
channel, found := k.channelKeeper.GetChannel(ctx, portID, channelID)
@@ -109,7 +97,7 @@ func (k Keeper) getConnectionID(ctx context.Context, portID, channelID string) (
// setPort sets the provided portID in state.
func (k Keeper) setPort(ctx context.Context, portID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyPort(portID), []byte{0x01}); err != nil {
panic(err)
}
@@ -132,7 +120,7 @@ func (k Keeper) getAppMetadata(ctx context.Context, portID, channelID string) (i
// GetActiveChannelID retrieves the active channelID from the store keyed by the provided connectionID and portID
func (k Keeper) GetActiveChannelID(ctx context.Context, connectionID, portID string) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := icatypes.KeyActiveChannel(portID, connectionID)
bz, err := store.Get(key)
@@ -164,9 +152,9 @@ func (k Keeper) GetOpenActiveChannel(ctx context.Context, connectionID, portID s
// GetAllActiveChannels returns a list of all active interchain accounts host channels and their associated connection and port identifiers
func (k Keeper) GetAllActiveChannels(ctx context.Context) []genesistypes.ActiveChannel {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(icatypes.ActiveChannelKeyPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var activeChannels []genesistypes.ActiveChannel
for ; iterator.Valid(); iterator.Next() {
@@ -186,7 +174,7 @@ func (k Keeper) GetAllActiveChannels(ctx context.Context) []genesistypes.ActiveC
// SetActiveChannelID stores the active channelID, keyed by the provided connectionID and portID
func (k Keeper) SetActiveChannelID(ctx context.Context, connectionID, portID, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyActiveChannel(portID, connectionID), []byte(channelID)); err != nil {
panic(err)
}
@@ -200,7 +188,7 @@ func (k Keeper) IsActiveChannel(ctx context.Context, connectionID, portID string
// GetInterchainAccountAddress retrieves the InterchainAccount address from the store associated with the provided connectionID and portID
func (k Keeper) GetInterchainAccountAddress(ctx context.Context, connectionID, portID string) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := icatypes.KeyOwnerAccount(portID, connectionID)
bz, err := store.Get(key)
@@ -216,7 +204,7 @@ func (k Keeper) GetInterchainAccountAddress(ctx context.Context, connectionID, p
// GetAllInterchainAccounts returns a list of all registered interchain account addresses and their associated connection and controller port identifiers
func (k Keeper) GetAllInterchainAccounts(ctx context.Context) []genesistypes.RegisteredInterchainAccount {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(icatypes.OwnerKeyPrefix))
var interchainAccounts []genesistypes.RegisteredInterchainAccount
@@ -237,7 +225,7 @@ func (k Keeper) GetAllInterchainAccounts(ctx context.Context) []genesistypes.Reg
// SetInterchainAccountAddress stores the InterchainAccount address, keyed by the associated connectionID and portID
func (k Keeper) SetInterchainAccountAddress(ctx context.Context, connectionID, portID, address string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(icatypes.KeyOwnerAccount(portID, connectionID), []byte(address)); err != nil {
panic(err)
}
@@ -250,7 +238,7 @@ func (k Keeper) GetAuthority() string {
// GetParams returns the total set of the host submodule parameters.
func (k Keeper) GetParams(ctx context.Context) types.Params {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.ParamsKey))
if err != nil {
panic(err)
@@ -266,7 +254,7 @@ func (k Keeper) GetParams(ctx context.Context) types.Params {
// SetParams sets the total set of the host submodule parameters.
func (k Keeper) SetParams(ctx context.Context, params types.Params) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(¶ms)
if err := store.Set([]byte(types.ParamsKey), bz); err != nil {
panic(err)
diff --git a/modules/apps/27-interchain-accounts/host/keeper/keeper_test.go b/modules/apps/27-interchain-accounts/host/keeper/keeper_test.go
index e2b186286c3..42cd66c2a15 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/keeper_test.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/keeper_test.go
@@ -6,6 +6,8 @@ import (
testifysuite "github.com/stretchr/testify/suite"
+ "cosmossdk.io/log"
+
"github.com/cosmos/cosmos-sdk/runtime"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
@@ -142,39 +144,33 @@ func (suite *KeeperTestSuite) TestNewKeeper() {
{"success", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.SubModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().AccountKeeper,
- suite.chainA.GetSimApp().MsgServiceRouter(),
- suite.chainA.GetSimApp().GRPCQueryRouter(),
+ suite.chainA.GetSimApp().AuthKeeper,
suite.chainA.GetSimApp().ICAHostKeeper.GetAuthority(),
)
}, ""},
{"failure: interchain accounts module account does not exist", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.SubModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
authkeeper.AccountKeeper{}, // empty account keeper
- suite.chainA.GetSimApp().MsgServiceRouter(),
- suite.chainA.GetSimApp().GRPCQueryRouter(),
suite.chainA.GetSimApp().ICAHostKeeper.GetAuthority(),
)
}, "the Interchain Accounts module account has not been set"},
{"failure: empty mock staking keeper", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.SubModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().AccountKeeper,
- suite.chainA.GetSimApp().MsgServiceRouter(),
- suite.chainA.GetSimApp().GRPCQueryRouter(),
+ suite.chainA.GetSimApp().AuthKeeper,
"", // authority
)
}, "authority must be non-empty"},
diff --git a/modules/apps/27-interchain-accounts/host/keeper/migrations.go b/modules/apps/27-interchain-accounts/host/keeper/migrations.go
index ea0fb9374f5..b229d23c116 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/migrations.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/migrations.go
@@ -25,14 +25,14 @@ func (m Migrator) MigrateParams(ctx context.Context) error {
if m.keeper != nil {
params := types.DefaultParams()
if m.keeper.legacySubspace != nil {
- sdkCtx := sdk.UnwrapSDKContext(ctx)
- m.keeper.legacySubspace.GetParamSetIfExists(sdkCtx, ¶ms)
+ // NOTE: legacy params still rely on sdk context
+ m.keeper.legacySubspace.GetParamSetIfExists(sdk.UnwrapSDKContext(ctx), ¶ms)
}
if err := params.Validate(); err != nil {
return err
}
m.keeper.SetParams(ctx, params)
- m.keeper.Logger(ctx).Info("successfully migrated ica/host submodule to self-manage params")
+ m.keeper.Logger.Info("successfully migrated ica/host submodule to self-manage params")
}
return nil
}
diff --git a/modules/apps/27-interchain-accounts/host/keeper/migrations_test.go b/modules/apps/27-interchain-accounts/host/keeper/migrations_test.go
index 99a11b9be65..9b0e44fbbe7 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/migrations_test.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/migrations_test.go
@@ -3,9 +3,11 @@ package keeper_test
import (
"fmt"
+ "cosmossdk.io/log"
+ govtypes "cosmossdk.io/x/gov/types"
+
"github.com/cosmos/cosmos-sdk/runtime"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
icahostkeeper "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/keeper"
icahosttypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
@@ -31,13 +33,11 @@ func (suite *KeeperTestSuite) TestMigratorMigrateParams() {
func() {
suite.chainA.GetSimApp().ICAHostKeeper = icahostkeeper.NewKeeper(
suite.chainA.Codec,
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(icahosttypes.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(icahosttypes.StoreKey)), log.NewNopLogger()),
nil, // assign a nil legacy param subspace
suite.chainA.GetSimApp().IBCFeeKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().AccountKeeper,
- suite.chainA.GetSimApp().MsgServiceRouter(),
- suite.chainA.GetSimApp().GRPCQueryRouter(),
+ suite.chainA.GetSimApp().AuthKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
},
diff --git a/modules/apps/27-interchain-accounts/host/keeper/msg_server.go b/modules/apps/27-interchain-accounts/host/keeper/msg_server.go
index a344b904e93..7e9806a9626 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/msg_server.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/msg_server.go
@@ -2,13 +2,15 @@ package keeper
import (
"context"
+ "fmt"
+ "reflect"
"slices"
+ "strings"
- errorsmod "cosmossdk.io/errors"
-
- sdk "github.com/cosmos/cosmos-sdk/types"
+ gogoproto "github.com/cosmos/gogoproto/proto"
+ "google.golang.org/protobuf/reflect/protoreflect"
- abci "github.com/cometbft/cometbft/abci/types"
+ errorsmod "cosmossdk.io/errors"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
@@ -28,9 +30,7 @@ func NewMsgServerImpl(keeper *Keeper) types.MsgServer {
// ModuleQuerySafe routes the queries to the keeper's query router if they are module_query_safe.
// This handler doesn't use the signer.
-func (m msgServer) ModuleQuerySafe(goCtx context.Context, msg *types.MsgModuleQuerySafe) (*types.MsgModuleQuerySafeResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (m msgServer) ModuleQuerySafe(ctx context.Context, msg *types.MsgModuleQuerySafe) (*types.MsgModuleQuerySafeResponse, error) {
responses := make([][]byte, len(msg.Requests))
for i, query := range msg.Requests {
isModuleQuerySafe := slices.Contains(m.mqsAllowList, query.Path)
@@ -38,36 +38,65 @@ func (m msgServer) ModuleQuerySafe(goCtx context.Context, msg *types.MsgModuleQu
return nil, errorsmod.Wrapf(ibcerrors.ErrInvalidRequest, "not module query safe: %s", query.Path)
}
- route := m.queryRouter.Route(query.Path)
- if route == nil {
- return nil, errorsmod.Wrapf(ibcerrors.ErrInvalidRequest, "no route to query: %s", query.Path)
+ path := strings.TrimPrefix(query.Path, "/")
+ pathFullName := protoreflect.FullName(strings.ReplaceAll(path, "/", "."))
+
+ desc, err := gogoproto.GogoResolver.FindDescriptorByName(pathFullName)
+ if err != nil {
+ return nil, err
+ }
+
+ md, isGRPC := desc.(protoreflect.MethodDescriptor)
+ if !isGRPC {
+ return nil, errorsmod.Wrapf(ibcerrors.ErrInvalidRequest, "no descriptor found for query path: %s", string(desc.FullName()))
}
- res, err := route(ctx, &abci.RequestQuery{
- Path: query.Path,
- Data: query.Data,
- })
+ msg, err := forgeProtoTypeFromName(string(md.Input().FullName()))
if err != nil {
- m.Logger(ctx).Debug("query failed", "path", query.Path, "error", err)
return nil, err
}
- if res == nil || res.Value == nil {
+
+ if err := m.cdc.Unmarshal(query.Data, msg); err != nil {
+ return nil, errorsmod.Wrapf(ibcerrors.ErrInvalidType, "cannot unmarshal query request data to: %s", md.Input().FullName())
+ }
+
+ res, err := m.QueryRouterService.Invoke(ctx, msg)
+ if err != nil {
+ m.Logger.Debug("query failed", "path", query.Path, "error", err)
+ return nil, err
+ }
+ if res == nil {
return nil, errorsmod.Wrapf(ibcerrors.ErrInvalidRequest, "no response for query: %s", query.Path)
}
- responses[i] = res.Value
+ responses[i] = m.cdc.MustMarshal(res)
+ }
+
+ height := m.HeaderService.HeaderInfo(ctx).Height
+ return &types.MsgModuleQuerySafeResponse{Responses: responses, Height: uint64(height)}, nil
+}
+
+// see: https://github.com/cosmos/cosmos-sdk/issues/22833
+func forgeProtoTypeFromName(msgName string) (gogoproto.Message, error) {
+ typ := gogoproto.MessageType(msgName)
+ if typ == nil {
+ return nil, fmt.Errorf("no message type found for %s", msgName)
+ }
+
+ msg, ok := reflect.New(typ.Elem()).Interface().(gogoproto.Message)
+ if !ok {
+ return nil, fmt.Errorf("could not create response message %s", msgName)
}
- return &types.MsgModuleQuerySafeResponse{Responses: responses, Height: uint64(ctx.BlockHeight())}, nil
+ return msg, nil
}
// UpdateParams updates the host submodule's params.
-func (m msgServer) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {
+func (m msgServer) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {
if m.GetAuthority() != msg.Signer {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", m.GetAuthority(), msg.Signer)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
m.SetParams(ctx, msg.Params)
return &types.MsgUpdateParamsResponse{}, nil
diff --git a/modules/apps/27-interchain-accounts/host/keeper/msg_server_test.go b/modules/apps/27-interchain-accounts/host/keeper/msg_server_test.go
index 476bf5bf00a..d0ad2e7908a 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/msg_server_test.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/msg_server_test.go
@@ -1,9 +1,10 @@
package keeper_test
import (
+ banktypes "cosmossdk.io/x/bank/types"
+ stakingtypes "cosmossdk.io/x/staking/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
@@ -24,7 +25,7 @@ func (suite *KeeperTestSuite) TestModuleQuerySafe() {
{
"success",
func() {
- balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom).Marshal()
+ balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress().String(), sdk.DefaultBondDenom).Marshal()
suite.Require().NoError(err)
queryReq := types.QueryRequest{
@@ -47,7 +48,7 @@ func (suite *KeeperTestSuite) TestModuleQuerySafe() {
{
"success: multiple queries",
func() {
- balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom).Marshal()
+ balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress().String(), sdk.DefaultBondDenom).Marshal()
suite.Require().NoError(err)
queryReq := types.QueryRequest{
@@ -72,7 +73,7 @@ func (suite *KeeperTestSuite) TestModuleQuerySafe() {
expRespBz, err := expResp.Marshal()
suite.Require().NoError(err)
- params, err := suite.chainA.GetSimApp().StakingKeeper.GetParams(suite.chainA.GetContext())
+ params, err := suite.chainA.GetSimApp().StakingKeeper.Params.Get(suite.chainA.GetContext())
suite.Require().NoError(err)
expParamsResp := stakingtypes.QueryParamsResponse{Params: params}
expParamsRespBz, err := expParamsResp.Marshal()
@@ -85,7 +86,7 @@ func (suite *KeeperTestSuite) TestModuleQuerySafe() {
{
"failure: not module query safe",
func() {
- balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom).Marshal()
+ balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress().String(), sdk.DefaultBondDenom).Marshal()
suite.Require().NoError(err)
queryReq := types.QueryRequest{
@@ -109,7 +110,7 @@ func (suite *KeeperTestSuite) TestModuleQuerySafe() {
{
"failure: invalid query path",
func() {
- balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom).Marshal()
+ balanceQueryBz, err := banktypes.NewQueryBalanceRequest(suite.chainA.SenderAccount.GetAddress().String(), sdk.DefaultBondDenom).Marshal()
suite.Require().NoError(err)
queryReq := types.QueryRequest{
diff --git a/modules/apps/27-interchain-accounts/host/keeper/relay.go b/modules/apps/27-interchain-accounts/host/keeper/relay.go
index 1cfaf2d9cfe..46932c9af24 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/relay.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/relay.go
@@ -66,10 +66,6 @@ func (k Keeper) executeTx(ctx context.Context, sourcePort, destPort, destChannel
MsgResponses: make([]*codectypes.Any, len(msgs)),
}
- // CacheContext returns a new context with the multi-store branched into a cached storage object
- // writeCache is called only if all msgs succeed, performing state transitions atomically
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- cacheCtx, writeCache := sdkCtx.CacheContext()
for i, msg := range msgs {
if m, ok := msg.(sdk.HasValidateBasic); ok {
if err := m.ValidateBasic(); err != nil {
@@ -77,16 +73,19 @@ func (k Keeper) executeTx(ctx context.Context, sourcePort, destPort, destChannel
}
}
- protoAny, err := k.executeMsg(cacheCtx, msg)
- if err != nil {
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ protoAny, err := k.executeMsg(ctx, msg)
+ if err != nil {
+ return err
+ }
+
+ txMsgData.MsgResponses[i] = protoAny
+ return nil
+ }); err != nil {
return nil, err
}
-
- txMsgData.MsgResponses[i] = protoAny
}
- writeCache()
-
txResponse, err := proto.Marshal(txMsgData)
if err != nil {
return nil, errorsmod.Wrap(err, "failed to marshal tx data")
@@ -110,8 +109,8 @@ func (k Keeper) authenticateTx(ctx context.Context, msgs []sdk.Msg, connectionID
}
// obtain the message signers using the proto signer annotations
- // the msgv2 return value is discarded as it is not used
- signers, _, err := k.cdc.GetMsgV1Signers(msg)
+ // the protoreflect msg return value is discarded as it is not used
+ signers, _, err := k.cdc.GetMsgSigners(msg)
if err != nil {
return errorsmod.Wrapf(err, "failed to obtain message signers for message type %s", sdk.MsgTypeURL(msg))
}
@@ -131,24 +130,19 @@ func (k Keeper) authenticateTx(ctx context.Context, msgs []sdk.Msg, connectionID
// Attempts to get the message handler from the router and if found will then execute the message.
// If the message execution is successful, the proto marshaled message response will be returned.
-func (k Keeper) executeMsg(ctx sdk.Context, msg sdk.Msg) (*codectypes.Any, error) { // TODO: https://github.com/cosmos/ibc-go/issues/7223
- handler := k.msgRouter.Handler(msg)
- if handler == nil {
- return nil, icatypes.ErrInvalidRoute
+func (k Keeper) executeMsg(ctx context.Context, msg sdk.Msg) (*codectypes.Any, error) {
+ if err := k.MsgRouterService.CanInvoke(ctx, sdk.MsgTypeURL(msg)); err != nil {
+ return nil, errorsmod.Wrap(err, icatypes.ErrInvalidRoute.Error())
}
- res, err := handler(ctx, msg)
+ res, err := k.MsgRouterService.Invoke(ctx, msg)
if err != nil {
return nil, err
}
- // NOTE: The sdk msg handler creates a new EventManager, so events must be correctly propagated back to the current context
- ctx.EventManager().EmitEvents(res.GetEvents())
-
- // Each individual sdk.Result has exactly one Msg response. We aggregate here.
- msgResponse := res.MsgResponses[0]
- if msgResponse == nil {
- return nil, errorsmod.Wrapf(ibcerrors.ErrLogic, "got nil Msg response for msg %s", sdk.MsgTypeURL(msg))
+ msgResponse, err := codectypes.NewAnyWithValue(res)
+ if err != nil {
+ return nil, errorsmod.Wrapf(ibcerrors.ErrPackAny, "failed to pack msg response as Any: %T", res)
}
return msgResponse, nil
diff --git a/modules/apps/27-interchain-accounts/host/keeper/relay_test.go b/modules/apps/27-interchain-accounts/host/keeper/relay_test.go
index 75e5962854a..e2790b1dfe4 100644
--- a/modules/apps/27-interchain-accounts/host/keeper/relay_test.go
+++ b/modules/apps/27-interchain-accounts/host/keeper/relay_test.go
@@ -9,14 +9,14 @@ import (
"github.com/cosmos/gogoproto/proto"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ disttypes "cosmossdk.io/x/distribution/types"
+ govtypesv1 "cosmossdk.io/x/gov/types/v1"
+ stakingtypes "cosmossdk.io/x/staking/types"
"github.com/cosmos/cosmos-sdk/testutil/testdata"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- disttypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
- govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
@@ -46,10 +46,10 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
interchainAccountAddr, found := suite.chainB.GetSimApp().ICAHostKeeper.GetInterchainAccountAddress(suite.chainB.GetContext(), ibctesting.FirstConnectionID, path.EndpointA.ChannelConfig.PortID)
suite.Require().True(found)
- proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, time.Now(), time.Now().Add(time.Hour), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr), false)
+ proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, time.Now(), time.Now().Add(time.Hour), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr).String(), govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD)
suite.Require().NoError(err)
- err = suite.chainB.GetSimApp().GovKeeper.SetProposal(suite.chainB.GetContext(), proposal)
+ err = suite.chainB.GetSimApp().GovKeeper.Proposals.Set(suite.chainB.GetContext(), proposal.Id, proposal)
suite.Require().NoError(err)
err = suite.chainB.GetSimApp().GovKeeper.ActivateVotingPeriod(suite.chainB.GetContext(), proposal)
suite.Require().NoError(err)
@@ -170,7 +170,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
interchainAccountAddr, found := suite.chainB.GetSimApp().ICAHostKeeper.GetInterchainAccountAddress(suite.chainB.GetContext(), ibctesting.FirstConnectionID, path.EndpointA.ChannelConfig.PortID)
suite.Require().True(found)
- msg, err := govtypesv1.NewMsgSubmitProposal([]sdk.Msg{}, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100000))), interchainAccountAddr, "metadata", "title", "summary", false)
+ msg, err := govtypesv1.NewMsgSubmitProposal([]sdk.Msg{}, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100000))), interchainAccountAddr, "metadata", "title", "summary", govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD)
suite.Require().NoError(err)
data, err := icatypes.SerializeCosmosTx(suite.chainA.GetSimApp().AppCodec(), []proto.Message{msg}, encoding)
@@ -194,10 +194,10 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
interchainAccountAddr, found := suite.chainB.GetSimApp().ICAHostKeeper.GetInterchainAccountAddress(suite.chainB.GetContext(), ibctesting.FirstConnectionID, path.EndpointA.ChannelConfig.PortID)
suite.Require().True(found)
- proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, time.Now(), time.Now().Add(time.Hour), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr), false)
+ proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, time.Now(), time.Now().Add(time.Hour), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr).String(), govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD)
suite.Require().NoError(err)
- err = suite.chainB.GetSimApp().GovKeeper.SetProposal(suite.chainB.GetContext(), proposal)
+ err = suite.chainB.GetSimApp().GovKeeper.Proposals.Set(suite.chainB.GetContext(), proposal.Id, proposal)
suite.Require().NoError(err)
err = suite.chainB.GetSimApp().GovKeeper.ActivateVotingPeriod(suite.chainB.GetContext(), proposal)
suite.Require().NoError(err)
@@ -255,7 +255,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
interchainAccountAddr, found := suite.chainB.GetSimApp().ICAHostKeeper.GetInterchainAccountAddress(suite.chainB.GetContext(), ibctesting.FirstConnectionID, path.EndpointA.ChannelConfig.PortID)
suite.Require().True(found)
- balanceQuery := banktypes.NewQueryBalanceRequest(suite.chainB.SenderAccount.GetAddress(), sdk.DefaultBondDenom)
+ balanceQuery := banktypes.NewQueryBalanceRequest(suite.chainB.SenderAccount.GetAddress().String(), sdk.DefaultBondDenom)
queryBz, err := balanceQuery.Marshal()
suite.Require().NoError(err)
@@ -525,7 +525,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
suite.Require().NoError(err)
// Check if account is created
- interchainAccount := suite.chainB.GetSimApp().AccountKeeper.GetAccount(suite.chainB.GetContext(), icaAddr)
+ interchainAccount := suite.chainB.GetSimApp().AuthKeeper.GetAccount(suite.chainB.GetContext(), icaAddr)
suite.Require().Equal(interchainAccount.GetAddress().String(), storedAddr)
suite.fundICAWallet(suite.chainB.GetContext(), path.EndpointA.ChannelConfig.PortID, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000000))))
@@ -545,8 +545,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
txResponse, err := suite.chainB.GetSimApp().ICAHostKeeper.OnRecvPacket(suite.chainB.GetContext(), packet)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
suite.Require().NotNil(txResponse)
} else {
@@ -574,10 +573,10 @@ func (suite *KeeperTestSuite) TestJSONOnRecvPacket() {
{
"interchain account successfully executes an arbitrary message type using the * (allow all message types) param",
func(icaAddress string) {
- proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, suite.chainA.GetContext().BlockTime(), suite.chainA.GetContext().BlockTime(), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr), false)
+ proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, suite.chainA.GetContext().BlockTime(), suite.chainA.GetContext().BlockTime(), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr).String(), govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD)
suite.Require().NoError(err)
- err = suite.chainB.GetSimApp().GovKeeper.SetProposal(suite.chainB.GetContext(), proposal)
+ err = suite.chainB.GetSimApp().GovKeeper.Proposals.Set(suite.chainB.GetContext(), proposal.Id, proposal)
suite.Require().NoError(err)
err = suite.chainB.GetSimApp().GovKeeper.ActivateVotingPeriod(suite.chainB.GetContext(), proposal)
suite.Require().NoError(err)
@@ -641,7 +640,7 @@ func (suite *KeeperTestSuite) TestJSONOnRecvPacket() {
"messages": [],
"metadata": "ipfs://CID",
"title": "IBC Gov Proposal",
- "summary": "tokens for all!",
+ "summary": "tokens for some, miniature American flags for others!",
"expedited": false,
"initial_deposit": [{ "denom": "stake", "amount": "100000" }],
"proposer": "` + icaAddress + `"
@@ -663,10 +662,10 @@ func (suite *KeeperTestSuite) TestJSONOnRecvPacket() {
{
"interchain account successfully executes govtypesv1.MsgVote",
func(icaAddress string) {
- proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, suite.chainA.GetContext().BlockTime(), suite.chainA.GetContext().BlockTime(), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr), false)
+ proposal, err := govtypesv1.NewProposal([]sdk.Msg{getTestProposalMessage()}, govtypesv1.DefaultStartingProposalID, suite.chainA.GetContext().BlockTime(), suite.chainA.GetContext().BlockTime(), "test proposal", "title", "Description", sdk.AccAddress(interchainAccountAddr).String(), govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD)
suite.Require().NoError(err)
- err = suite.chainB.GetSimApp().GovKeeper.SetProposal(suite.chainB.GetContext(), proposal)
+ err = suite.chainB.GetSimApp().GovKeeper.Proposals.Set(suite.chainB.GetContext(), proposal.Id, proposal)
suite.Require().NoError(err)
err = suite.chainB.GetSimApp().GovKeeper.ActivateVotingPeriod(suite.chainB.GetContext(), proposal)
suite.Require().NoError(err)
@@ -874,8 +873,7 @@ func (suite *KeeperTestSuite) TestJSONOnRecvPacket() {
txResponse, err := suite.chainB.GetSimApp().ICAHostKeeper.OnRecvPacket(suite.chainB.GetContext(), packet)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
suite.Require().NotNil(txResponse)
} else {
@@ -904,5 +902,5 @@ func (suite *KeeperTestSuite) fundICAWallet(ctx context.Context, portID string,
func getTestProposalMessage() sdk.Msg {
_, _, addr := testdata.KeyTestPubAddr()
- return banktypes.NewMsgSend(authtypes.NewModuleAddress("gov"), addr, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(1000))))
+ return banktypes.NewMsgSend(authtypes.NewModuleAddress("gov").String(), addr.String(), sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(1000))))
}
diff --git a/modules/apps/27-interchain-accounts/host/types/codec.go b/modules/apps/27-interchain-accounts/host/types/codec.go
index 710d732573b..c4122f67aed 100644
--- a/modules/apps/27-interchain-accounts/host/types/codec.go
+++ b/modules/apps/27-interchain-accounts/host/types/codec.go
@@ -1,13 +1,14 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ coreregistry "cosmossdk.io/core/registry"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
// RegisterInterfaces registers the interchain accounts host message types using the provided InterfaceRegistry
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*sdk.Msg)(nil),
&MsgUpdateParams{},
diff --git a/modules/apps/27-interchain-accounts/host/types/codec_test.go b/modules/apps/27-interchain-accounts/host/types/codec_test.go
index 4cc6423d284..93d78f66453 100644
--- a/modules/apps/27-interchain-accounts/host/types/codec_test.go
+++ b/modules/apps/27-interchain-accounts/host/types/codec_test.go
@@ -5,6 +5,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -39,7 +40,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.errMsg == "" {
diff --git a/modules/apps/27-interchain-accounts/host/types/msgs_test.go b/modules/apps/27-interchain-accounts/host/types/msgs_test.go
index 59ec90dc6a2..b353a143197 100644
--- a/modules/apps/27-interchain-accounts/host/types/msgs_test.go
+++ b/modules/apps/27-interchain-accounts/host/types/msgs_test.go
@@ -5,6 +5,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -65,8 +66,8 @@ func TestMsgUpdateParamsGetSigners(t *testing.T) {
tc := tc
msg := types.NewMsgUpdateParams(tc.address.String(), types.DefaultParams())
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
if tc.errMsg == "" {
require.NoError(t, err)
require.Equal(t, tc.address.Bytes(), signers[0])
@@ -110,8 +111,7 @@ func TestMsgModuleQuerySafeValidateBasic(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
require.NoError(t, err)
} else {
require.Error(t, err)
@@ -136,8 +136,8 @@ func TestMsgModuleQuerySafeGetSigners(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
msg := types.NewMsgModuleQuerySafe(tc.address.String(), []types.QueryRequest{})
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ica.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ica.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
if tc.errMsg == "" {
require.NoError(t, err)
require.Equal(t, tc.address.Bytes(), signers[0])
diff --git a/modules/apps/27-interchain-accounts/host/types/params_legacy.go b/modules/apps/27-interchain-accounts/host/types/params_legacy.go
index 8e8a95143e8..3dc971f9818 100644
--- a/modules/apps/27-interchain-accounts/host/types/params_legacy.go
+++ b/modules/apps/27-interchain-accounts/host/types/params_legacy.go
@@ -11,7 +11,7 @@ import (
"fmt"
"strings"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ paramtypes "cosmossdk.io/x/params/types"
)
var (
diff --git a/modules/apps/27-interchain-accounts/module.go b/modules/apps/27-interchain-accounts/module.go
index 293be361b51..6e7b838184c 100644
--- a/modules/apps/27-interchain-accounts/module.go
+++ b/modules/apps/27-interchain-accounts/module.go
@@ -9,10 +9,10 @@ import (
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
@@ -31,23 +31,33 @@ import (
var (
_ module.AppModule = (*AppModule)(nil)
- _ module.AppModuleBasic = (*AppModuleBasic)(nil)
+ _ module.AppModuleBasic = (*AppModule)(nil)
_ module.AppModuleSimulation = (*AppModule)(nil)
_ module.HasGenesis = (*AppModule)(nil)
- _ module.HasName = (*AppModule)(nil)
- _ module.HasConsensusVersion = (*AppModule)(nil)
_ module.HasServices = (*AppModule)(nil)
- _ module.HasProposalMsgs = (*AppModule)(nil)
_ appmodule.AppModule = (*AppModule)(nil)
_ porttypes.IBCModule = (*host.IBCModule)(nil)
)
-// AppModuleBasic is the IBC interchain accounts AppModuleBasic
-type AppModuleBasic struct{}
+// AppModule is the application module for the IBC interchain accounts module
+type AppModule struct {
+ cdc codec.Codec
+ controllerKeeper *controllerkeeper.Keeper
+ hostKeeper *hostkeeper.Keeper
+}
+
+// NewAppModule creates a new IBC interchain accounts module
+func NewAppModule(cdc codec.Codec, controllerKeeper *controllerkeeper.Keeper, hostKeeper *hostkeeper.Keeper) AppModule {
+ return AppModule{
+ cdc: cdc,
+ controllerKeeper: controllerKeeper,
+ hostKeeper: hostKeeper,
+ }
+}
// Name implements AppModuleBasic interface
-func (AppModuleBasic) Name() string {
+func (AppModule) Name() string {
return types.ModuleName
}
@@ -57,11 +67,11 @@ func (AppModule) IsOnePerModuleType() {}
// IsAppModule implements the appmodule.AppModule interface.
func (AppModule) IsAppModule() {}
-// RegisterLegacyAminoCodec implements AppModuleBasic.
-func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}
+// RegisterLegacyAminoCodec implements AppModule.
+func (AppModule) RegisterLegacyAminoCodec(cdc coreregistry.AminoRegistrar) {}
// RegisterInterfaces registers module concrete types into protobuf Any
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func (AppModule) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
controllertypes.RegisterInterfaces(registry)
hosttypes.RegisterInterfaces(registry)
types.RegisterInterfaces(registry)
@@ -69,14 +79,14 @@ func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry)
// DefaultGenesis returns default genesis state as raw bytes for the IBC
// interchain accounts module
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
- return cdc.MustMarshalJSON(genesistypes.DefaultGenesis())
+func (am AppModule) DefaultGenesis() json.RawMessage {
+ return am.cdc.MustMarshalJSON(genesistypes.DefaultGenesis())
}
// ValidateGenesis performs genesis state validation for the IBC interchain accounts module
-func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {
+func (am AppModule) ValidateGenesis(bz json.RawMessage) error {
var gs genesistypes.GenesisState
- if err := cdc.UnmarshalJSON(bz, &gs); err != nil {
+ if err := am.cdc.UnmarshalJSON(bz, &gs); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err)
}
@@ -84,7 +94,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod
}
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the interchain accounts module.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
+func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
err := controllertypes.RegisterQueryHandlerClient(context.Background(), mux, controllertypes.NewQueryClient(clientCtx))
if err != nil {
panic(err)
@@ -96,31 +106,16 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r
}
}
-// GetTxCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+// GetTxCmd implements AppModule interface
+func (AppModule) GetTxCmd() *cobra.Command {
return cli.NewTxCmd()
}
-// GetQueryCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+// GetQueryCmd implements AppModule interface
+func (AppModule) GetQueryCmd() *cobra.Command {
return cli.GetQueryCmd()
}
-// AppModule is the application module for the IBC interchain accounts module
-type AppModule struct {
- AppModuleBasic
- controllerKeeper *controllerkeeper.Keeper
- hostKeeper *hostkeeper.Keeper
-}
-
-// NewAppModule creates a new IBC interchain accounts module
-func NewAppModule(controllerKeeper *controllerkeeper.Keeper, hostKeeper *hostkeeper.Keeper) AppModule {
- return AppModule{
- controllerKeeper: controllerKeeper,
- hostKeeper: hostKeeper,
- }
-}
-
// RegisterServices registers module services
func (am AppModule) RegisterServices(cfg module.Configurator) {
if am.controllerKeeper != nil {
@@ -147,9 +142,11 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
// InitGenesis performs genesis initialization for the interchain accounts module.
// It returns no validator updates.
-func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) {
+func (am AppModule) InitGenesis(ctx context.Context, data json.RawMessage) error {
var genesisState genesistypes.GenesisState
- cdc.MustUnmarshalJSON(data, &genesisState)
+ if err := am.cdc.UnmarshalJSON(data, &genesisState); err != nil {
+ return err
+ }
if am.controllerKeeper != nil {
controllerkeeper.InitGenesis(ctx, *am.controllerKeeper, genesisState.ControllerGenesisState)
@@ -158,10 +155,11 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.
if am.hostKeeper != nil {
hostkeeper.InitGenesis(ctx, *am.hostKeeper, genesisState.HostGenesisState)
}
+ return nil
}
// ExportGenesis returns the exported genesis state as raw bytes for the interchain accounts module
-func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
+func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
var (
controllerGenesisState = genesistypes.DefaultControllerGenesis()
hostGenesisState = genesistypes.DefaultHostGenesis()
@@ -177,7 +175,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw
gs := genesistypes.NewGenesisState(controllerGenesisState, hostGenesisState)
- return cdc.MustMarshalJSON(gs)
+ return am.cdc.MarshalJSON(gs)
}
// ConsensusVersion implements AppModule/ConsensusVersion.
diff --git a/modules/apps/27-interchain-accounts/simulation/proposals.go b/modules/apps/27-interchain-accounts/simulation/proposals.go
index 1776362f8fc..d87461b881e 100644
--- a/modules/apps/27-interchain-accounts/simulation/proposals.go
+++ b/modules/apps/27-interchain-accounts/simulation/proposals.go
@@ -1,8 +1,11 @@
package simulation
import (
+ "context"
"math/rand"
+ coreaddress "cosmossdk.io/core/address"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
@@ -25,14 +28,14 @@ const (
func ProposalMsgs(controllerKeeper *controllerkeeper.Keeper, hostKeeper *hostkeeper.Keeper) []simtypes.WeightedProposalMsg {
msgs := make([]simtypes.WeightedProposalMsg, 0, 2)
if hostKeeper != nil {
- msgs = append(msgs, simulation.NewWeightedProposalMsg(
+ msgs = append(msgs, simulation.NewWeightedProposalMsgX(
OpWeightMsgUpdateParams,
DefaultWeightMsgUpdateParams,
SimulateHostMsgUpdateParams,
))
}
if controllerKeeper != nil {
- msgs = append(msgs, simulation.NewWeightedProposalMsg(
+ msgs = append(msgs, simulation.NewWeightedProposalMsgX(
OpWeightMsgUpdateParams,
DefaultWeightMsgUpdateParams,
SimulateControllerMsgUpdateParams,
@@ -42,7 +45,7 @@ func ProposalMsgs(controllerKeeper *controllerkeeper.Keeper, hostKeeper *hostkee
}
// SimulateHostMsgUpdateParams returns a MsgUpdateParams for the host module
-func SimulateHostMsgUpdateParams(_ *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
+func SimulateHostMsgUpdateParams(ctx context.Context, _ *rand.Rand, _ []simtypes.Account, _ coreaddress.Codec) (sdk.Msg, error) {
var signer sdk.AccAddress = address.Module("gov")
params := types.DefaultParams()
params.HostEnabled = false
@@ -50,11 +53,11 @@ func SimulateHostMsgUpdateParams(_ *rand.Rand, _ sdk.Context, _ []simtypes.Accou
return &types.MsgUpdateParams{
Signer: signer.String(),
Params: params,
- }
+ }, nil
}
// SimulateControllerMsgUpdateParams returns a MsgUpdateParams for the controller module
-func SimulateControllerMsgUpdateParams(_ *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
+func SimulateControllerMsgUpdateParams(ctx context.Context, _ *rand.Rand, _ []simtypes.Account, _ coreaddress.Codec) (sdk.Msg, error) {
var signer sdk.AccAddress = address.Module("gov")
params := controllertypes.DefaultParams()
params.ControllerEnabled = false
@@ -62,5 +65,5 @@ func SimulateControllerMsgUpdateParams(_ *rand.Rand, _ sdk.Context, _ []simtypes
return &controllertypes.MsgUpdateParams{
Signer: signer.String(),
Params: params,
- }
+ }, nil
}
diff --git a/modules/apps/27-interchain-accounts/simulation/proposals_test.go b/modules/apps/27-interchain-accounts/simulation/proposals_test.go
index bed08905111..b385d11cc70 100644
--- a/modules/apps/27-interchain-accounts/simulation/proposals_test.go
+++ b/modules/apps/27-interchain-accounts/simulation/proposals_test.go
@@ -6,12 +6,11 @@ import (
"github.com/stretchr/testify/require"
+ codecaddress "github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
-
controllerkeeper "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/keeper"
controllertypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller/types"
hostkeeper "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/keeper"
@@ -24,7 +23,8 @@ func TestProposalMsgs(t *testing.T) {
s := rand.NewSource(1)
r := rand.New(s)
- ctx := sdk.NewContext(nil, cmtproto.Header{}, true, nil)
+ ctx := sdk.NewContext(nil, true, nil)
+ codec := codecaddress.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())
accounts := simtypes.RandomAccounts(r, 3)
tests := []struct {
@@ -86,7 +86,8 @@ func TestProposalMsgs(t *testing.T) {
require.Equal(t, simulation.OpWeightMsgUpdateParams, weightedMsg.AppParamsKey())
require.Equal(t, simulation.DefaultWeightMsgUpdateParams, weightedMsg.DefaultWeight())
- msg := weightedMsg.MsgSimulatorFn()(r, ctx, accounts)
+ msg, err := weightedMsg.MsgSimulatorFn()(ctx, r, accounts, codec)
+ require.NoError(t, err)
if msgUpdateHostParams, ok := msg.(*hosttypes.MsgUpdateParams); ok {
require.Equal(t, tc.expMsgs[idx], msgUpdateHostParams)
diff --git a/modules/apps/27-interchain-accounts/types/account.go b/modules/apps/27-interchain-accounts/types/account.go
index d1542f52ace..44cb5142d21 100644
--- a/modules/apps/27-interchain-accounts/types/account.go
+++ b/modules/apps/27-interchain-accounts/types/account.go
@@ -1,13 +1,13 @@
package types
import (
- "context"
"encoding/json"
"regexp"
"strings"
yaml "gopkg.in/yaml.v2"
+ "cosmossdk.io/core/header"
errorsmod "cosmossdk.io/errors"
crypto "github.com/cosmos/cosmos-sdk/crypto/types"
@@ -43,15 +43,13 @@ type interchainAccountPretty struct {
}
// GenerateAddress returns an sdk.AccAddress derived using a host module account address, host connection ID, the controller portID,
-// the current block app hash, and the current block data hash. The sdk.AccAddress returned is a sub-address of the host module account.
-func GenerateAddress(ctx context.Context, connectionID, portID string) sdk.AccAddress {
+// the current block app hash, and the current block hash (merkle root of block). The sdk.AccAddress returned is a sub-address of the host module account.
+func GenerateAddress(headerInfo header.Info, connectionID, portID string) sdk.AccAddress {
hostModuleAcc := sdkaddress.Module(ModuleName, []byte(hostAccountsKey))
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- header := sdkCtx.BlockHeader()
buf := []byte(connectionID + portID)
- buf = append(buf, header.AppHash...)
- buf = append(buf, header.DataHash...)
+ buf = append(buf, headerInfo.AppHash...)
+ buf = append(buf, headerInfo.Hash...)
return sdkaddress.Derive(hostModuleAcc, buf)
}
diff --git a/modules/apps/27-interchain-accounts/types/account_test.go b/modules/apps/27-interchain-accounts/types/account_test.go
index 60f4b5f297d..da81f1e1f85 100644
--- a/modules/apps/27-interchain-accounts/types/account_test.go
+++ b/modules/apps/27-interchain-accounts/types/account_test.go
@@ -44,7 +44,7 @@ func TestTypesTestSuite(t *testing.T) {
}
func (suite *TypesTestSuite) TestGenerateAddress() {
- addr := types.GenerateAddress(suite.chainA.GetContext(), "test-connection-id", "test-port-id")
+ addr := types.GenerateAddress(suite.chainA.GetContext().HeaderInfo(), "test-connection-id", "test-port-id")
accAddr, err := sdk.AccAddressFromBech32(addr.String())
suite.Require().NoError(err, "TestGenerateAddress failed")
@@ -53,34 +53,34 @@ func (suite *TypesTestSuite) TestGenerateAddress() {
func (suite *TypesTestSuite) TestValidateAccountAddress() {
testCases := []struct {
- name string
- address string
- expPass bool
+ name string
+ address string
+ expError error
}{
{
"success",
TestOwnerAddress,
- true,
+ nil,
},
{
"success with single character",
"a",
- true,
+ nil,
},
{
"empty string",
"",
- false,
+ types.ErrInvalidAccountAddress,
},
{
"only spaces",
" ",
- false,
+ types.ErrInvalidAccountAddress,
},
{
"address is too long",
ibctesting.GenerateString(uint(types.DefaultMaxAddrLength) + 1),
- false,
+ types.ErrInvalidAccountAddress,
},
}
@@ -90,10 +90,10 @@ func (suite *TypesTestSuite) TestValidateAccountAddress() {
suite.Run(tc.name, func() {
err := types.ValidateAccountAddress(tc.address)
- if tc.expPass {
+ if tc.expError == nil {
suite.Require().NoError(err, tc.name)
} else {
- suite.Require().Error(err, tc.name)
+ suite.Require().ErrorIs(err, tc.expError, tc.name)
}
})
}
@@ -120,19 +120,19 @@ func (suite *TypesTestSuite) TestGenesisAccountValidate() {
ownerAddr := sdk.AccAddress(pubkey.Address())
testCases := []struct {
- name string
- acc authtypes.GenesisAccount
- expPass bool
+ name string
+ acc authtypes.GenesisAccount
+ expErr error
}{
{
"success",
types.NewInterchainAccount(baseAcc, ownerAddr.String()),
- true,
+ nil,
},
{
"interchain account with empty AccountOwner field",
types.NewInterchainAccount(baseAcc, ""),
- false,
+ types.ErrInvalidAccountAddress,
},
}
@@ -141,10 +141,11 @@ func (suite *TypesTestSuite) TestGenesisAccountValidate() {
err := tc.acc.Validate()
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
+ suite.Require().ErrorIs(err, tc.expErr)
}
}
}
diff --git a/modules/apps/27-interchain-accounts/types/codec.go b/modules/apps/27-interchain-accounts/types/codec.go
index 1f63cb9d1d2..06f33b15f41 100644
--- a/modules/apps/27-interchain-accounts/types/codec.go
+++ b/modules/apps/27-interchain-accounts/types/codec.go
@@ -3,6 +3,7 @@ package types
import (
"github.com/cosmos/gogoproto/proto"
+ coreregistry "cosmossdk.io/core/registry"
errorsmod "cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/codec"
@@ -22,7 +23,7 @@ var ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry())
// RegisterInterfaces registers the interchain accounts controller types and the concrete InterchainAccount implementation
// against the associated x/auth AccountI and GenesisAccount interfaces.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations((*sdk.AccountI)(nil), &InterchainAccount{})
registry.RegisterImplementations((*authtypes.GenesisAccount)(nil), &InterchainAccount{})
}
diff --git a/modules/apps/27-interchain-accounts/types/codec_test.go b/modules/apps/27-interchain-accounts/types/codec_test.go
index 388bc7a4cde..fd0f0f9a11c 100644
--- a/modules/apps/27-interchain-accounts/types/codec_test.go
+++ b/modules/apps/27-interchain-accounts/types/codec_test.go
@@ -4,13 +4,13 @@ import (
"github.com/cosmos/gogoproto/proto"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ govtypesv1 "cosmossdk.io/x/gov/types/v1"
+ govtypes "cosmossdk.io/x/gov/types/v1beta1"
+ stakingtypes "cosmossdk.io/x/staking/types"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
@@ -53,7 +53,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ expErr error
}{
{
"single msg",
@@ -66,7 +66,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
},
}
},
- true,
+ nil,
},
{
"multiple msgs, same types",
@@ -84,7 +84,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
},
}
},
- true,
+ nil,
},
{
"success: multiple msgs, different types",
@@ -102,7 +102,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
},
}
},
- true,
+ nil,
},
{
"success: msg with nested any",
@@ -122,7 +122,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
},
}
},
- true,
+ nil,
},
{
"success: msg with nested array of any",
@@ -170,14 +170,14 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
msgs = []proto.Message{propMsg}
},
- true,
+ nil,
},
{
"success: empty messages",
func() {
msgs = []proto.Message{}
},
- true,
+ nil,
},
{
"failure: unregistered msg type",
@@ -189,7 +189,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
expSerializeErrorStrings = []string{"NO_ERROR_EXPECTED", "cannot marshal CosmosTx with proto3 json"}
expDeserializeErrorStrings = []string{"cannot unmarshal CosmosTx with protobuf", "cannot unmarshal CosmosTx with proto3 json"}
},
- false,
+ ibcerrors.ErrInvalidType,
},
{
"failure: multiple unregistered msg types",
@@ -203,7 +203,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
expSerializeErrorStrings = []string{"NO_ERROR_EXPECTED", "cannot marshal CosmosTx with proto3 json"}
expDeserializeErrorStrings = []string{"cannot unmarshal CosmosTx with protobuf", "cannot unmarshal CosmosTx with proto3 json"}
},
- false,
+ ibcerrors.ErrInvalidType,
},
{
"failure: nested unregistered msg",
@@ -223,7 +223,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
expSerializeErrorStrings = []string{"NO_ERROR_EXPECTED", "cannot marshal CosmosTx with proto3 json"}
expDeserializeErrorStrings = []string{"cannot unmarshal CosmosTx with protobuf", "cannot unmarshal CosmosTx with proto3 json"}
},
- false,
+ ibcerrors.ErrInvalidType,
},
{
"failure: nested array of unregistered msg",
@@ -248,7 +248,7 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
expSerializeErrorStrings = []string{"NO_ERROR_EXPECTED", "cannot marshal CosmosTx with proto3 json"}
expDeserializeErrorStrings = []string{"cannot unmarshal CosmosTx with protobuf", "cannot unmarshal CosmosTx with proto3 json"}
},
- false,
+ ibcerrors.ErrInvalidType,
},
}
@@ -259,8 +259,9 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
suite.Run(tc.name, func() {
tc.malleate()
+ expPass := tc.expErr == nil
bz, err := types.SerializeCosmosTx(suite.chainA.Codec, msgs, encoding)
- if encoding == types.EncodingProto3JSON && !tc.expPass {
+ if encoding == types.EncodingProto3JSON && !expPass {
suite.Require().Error(err, tc.name)
suite.Require().Contains(err.Error(), expSerializeErrorStrings[1], tc.name)
} else {
@@ -268,14 +269,15 @@ func (suite *TypesTestSuite) TestSerializeAndDeserializeCosmosTx() {
}
deserializedMsgs, err := types.DeserializeCosmosTx(suite.chainA.Codec, bz, encoding)
- if tc.expPass {
+ if expPass {
suite.Require().NoError(err, tc.name)
} else {
suite.Require().Error(err, tc.name)
suite.Require().Contains(err.Error(), expDeserializeErrorStrings[i], tc.name)
+ suite.Require().ErrorIs(err, tc.expErr)
}
- if tc.expPass {
+ if expPass {
for i, msg := range msgs {
// We're using proto.CompactTextString() for comparison instead of suite.Require().Equal() or proto.Equal()
// for two main reasons:
diff --git a/modules/apps/27-interchain-accounts/types/expected_keepers.go b/modules/apps/27-interchain-accounts/types/expected_keepers.go
index 9ae0e0346ae..ddf171998ff 100644
--- a/modules/apps/27-interchain-accounts/types/expected_keepers.go
+++ b/modules/apps/27-interchain-accounts/types/expected_keepers.go
@@ -3,15 +3,16 @@ package types
import (
"context"
+ paramtypes "cosmossdk.io/x/params/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
)
-// AccountKeeper defines the expected account keeper
-type AccountKeeper interface {
+// AuthKeeper defines the expected x/auth keeper
+type AuthKeeper interface {
NewAccount(ctx context.Context, acc sdk.AccountI) sdk.AccountI
GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI
SetAccount(ctx context.Context, acc sdk.AccountI)
diff --git a/modules/apps/27-interchain-accounts/types/metadata_test.go b/modules/apps/27-interchain-accounts/types/metadata_test.go
index b408f98b0fc..f96174c04d0 100644
--- a/modules/apps/27-interchain-accounts/types/metadata_test.go
+++ b/modules/apps/27-interchain-accounts/types/metadata_test.go
@@ -2,6 +2,7 @@ package types_test
import (
"github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
+ connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
ibctesting "github.com/cosmos/ibc-go/v9/testing"
)
@@ -142,12 +143,12 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ expErr error
}{
{
"success",
func() {},
- true,
+ nil,
},
{
"success with empty account address",
@@ -161,7 +162,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- true,
+ nil,
},
{
"success with EncodingProto3JSON",
@@ -175,7 +176,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- true,
+ nil,
},
{
"unsupported encoding format",
@@ -189,7 +190,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ types.ErrInvalidCodec,
},
{
"unsupported transaction type",
@@ -203,7 +204,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: "invalid-tx-type",
}
},
- false,
+ types.ErrUnknownDataType,
},
{
"invalid controller connection",
@@ -217,7 +218,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ connectiontypes.ErrInvalidConnection,
},
{
"invalid host connection",
@@ -231,7 +232,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ connectiontypes.ErrInvalidConnection,
},
{
"invalid address",
@@ -245,7 +246,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ types.ErrInvalidAccountAddress,
},
{
"invalid version",
@@ -259,7 +260,7 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ types.ErrInvalidVersion,
},
}
@@ -282,10 +283,11 @@ func (suite *TypesTestSuite) TestValidateControllerMetadata() {
metadata,
)
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, tc.name)
} else {
suite.Require().Error(err, tc.name)
+ suite.Require().ErrorIs(err, tc.expErr)
}
})
}
@@ -297,12 +299,12 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ expError error
}{
{
"success",
func() {},
- true,
+ nil,
},
{
"success with empty account address",
@@ -316,7 +318,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- true,
+ nil,
},
{
"success with EncodingProto3JSON",
@@ -330,7 +332,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- true,
+ nil,
},
{
"unsupported encoding format",
@@ -344,7 +346,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ types.ErrInvalidCodec,
},
{
"unsupported transaction type",
@@ -358,7 +360,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: "invalid-tx-type",
}
},
- false,
+ types.ErrUnknownDataType,
},
{
"invalid controller connection",
@@ -372,7 +374,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ connectiontypes.ErrInvalidConnection,
},
{
"invalid host connection",
@@ -386,7 +388,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ connectiontypes.ErrInvalidConnection,
},
{
"invalid address",
@@ -400,7 +402,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ types.ErrInvalidAccountAddress,
},
{
"invalid version",
@@ -414,7 +416,7 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
TxType: types.TxTypeSDKMultiMsg,
}
},
- false,
+ types.ErrInvalidVersion,
},
}
@@ -437,10 +439,10 @@ func (suite *TypesTestSuite) TestValidateHostMetadata() {
metadata,
)
- if tc.expPass {
+ if tc.expError == nil {
suite.Require().NoError(err, tc.name)
} else {
- suite.Require().Error(err, tc.name)
+ suite.Require().ErrorIs(err, tc.expError)
}
})
}
diff --git a/modules/apps/27-interchain-accounts/types/packet.go b/modules/apps/27-interchain-accounts/types/packet.go
index c5a0144ae94..6298070f142 100644
--- a/modules/apps/27-interchain-accounts/types/packet.go
+++ b/modules/apps/27-interchain-accounts/types/packet.go
@@ -4,9 +4,10 @@ import (
"encoding/json"
"strings"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
+
errorsmod "cosmossdk.io/errors"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -49,7 +50,7 @@ func (iapd *InterchainAccountPacketData) UnmarshalJSON(bz []byte) error {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (ct CosmosTx) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (ct CosmosTx) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
for _, protoAny := range ct.Messages {
err := unpacker.UnpackAny(protoAny, new(sdk.Msg))
if err != nil {
diff --git a/modules/apps/27-interchain-accounts/types/packet.pb.go b/modules/apps/27-interchain-accounts/types/packet.pb.go
index 876f039a3d9..36f965f2f02 100644
--- a/modules/apps/27-interchain-accounts/types/packet.pb.go
+++ b/modules/apps/27-interchain-accounts/types/packet.pb.go
@@ -5,9 +5,9 @@ package types
import (
fmt "fmt"
- types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
+ any "github.com/cosmos/gogoproto/types/any"
io "io"
math "math"
math_bits "math/bits"
@@ -116,7 +116,7 @@ func (m *InterchainAccountPacketData) GetMemo() string {
// CosmosTx contains a list of sdk.Msg's. It should be used when sending transactions to an SDK host chain.
type CosmosTx struct {
- Messages []*types.Any `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
+ Messages []*any.Any `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
}
func (m *CosmosTx) Reset() { *m = CosmosTx{} }
@@ -152,7 +152,7 @@ func (m *CosmosTx) XXX_DiscardUnknown() {
var xxx_messageInfo_CosmosTx proto.InternalMessageInfo
-func (m *CosmosTx) GetMessages() []*types.Any {
+func (m *CosmosTx) GetMessages() []*any.Any {
if m != nil {
return m.Messages
}
@@ -522,7 +522,7 @@ func (m *CosmosTx) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Messages = append(m.Messages, &types.Any{})
+ m.Messages = append(m.Messages, &any.Any{})
if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
diff --git a/modules/apps/27-interchain-accounts/types/packet_test.go b/modules/apps/27-interchain-accounts/types/packet_test.go
index d2bfa9a180d..041745e024b 100644
--- a/modules/apps/27-interchain-accounts/types/packet_test.go
+++ b/modules/apps/27-interchain-accounts/types/packet_test.go
@@ -11,7 +11,7 @@ func (suite *TypesTestSuite) TestValidateBasic() {
testCases := []struct {
name string
packetData types.InterchainAccountPacketData
- expPass bool
+ expErr error
}{
{
"success",
@@ -20,7 +20,7 @@ func (suite *TypesTestSuite) TestValidateBasic() {
Data: []byte("data"),
Memo: "memo",
},
- true,
+ nil,
},
{
"success, empty memo",
@@ -28,7 +28,7 @@ func (suite *TypesTestSuite) TestValidateBasic() {
Type: types.EXECUTE_TX,
Data: []byte("data"),
},
- true,
+ nil,
},
{
"type unspecified",
@@ -37,7 +37,7 @@ func (suite *TypesTestSuite) TestValidateBasic() {
Data: []byte("data"),
Memo: "memo",
},
- false,
+ types.ErrInvalidOutgoingData,
},
{
"empty data",
@@ -46,7 +46,7 @@ func (suite *TypesTestSuite) TestValidateBasic() {
Data: []byte{},
Memo: "memo",
},
- false,
+ types.ErrInvalidOutgoingData,
},
{
"nil data",
@@ -55,7 +55,7 @@ func (suite *TypesTestSuite) TestValidateBasic() {
Data: nil,
Memo: "memo",
},
- false,
+ types.ErrInvalidOutgoingData,
},
{
"memo too large",
@@ -64,7 +64,7 @@ func (suite *TypesTestSuite) TestValidateBasic() {
Data: []byte("data"),
Memo: ibctesting.GenerateString(types.MaxMemoCharLength + 1),
},
- false,
+ types.ErrInvalidOutgoingData,
},
}
@@ -75,10 +75,11 @@ func (suite *TypesTestSuite) TestValidateBasic() {
err := tc.packetData.ValidateBasic()
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
+ suite.Require().ErrorIs(err, tc.expErr)
}
})
}
diff --git a/modules/apps/27-interchain-accounts/types/port_test.go b/modules/apps/27-interchain-accounts/types/port_test.go
index 810224d98c0..0fc769ee015 100644
--- a/modules/apps/27-interchain-accounts/types/port_test.go
+++ b/modules/apps/27-interchain-accounts/types/port_test.go
@@ -15,13 +15,13 @@ func (suite *TypesTestSuite) TestNewControllerPortID() {
name string
malleate func()
expValue string
- expPass bool
+ expErr error
}{
{
"success",
func() {},
types.ControllerPortPrefix + TestOwnerAddress,
- true,
+ nil,
},
{
"invalid owner address",
@@ -29,7 +29,7 @@ func (suite *TypesTestSuite) TestNewControllerPortID() {
owner = " "
},
"",
- false,
+ types.ErrInvalidAccountAddress,
},
}
@@ -45,12 +45,13 @@ func (suite *TypesTestSuite) TestNewControllerPortID() {
portID, err := types.NewControllerPortID(owner)
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, tc.name)
suite.Require().Equal(tc.expValue, portID)
} else {
suite.Require().Error(err, tc.name)
suite.Require().Empty(portID)
+ suite.Require().ErrorIs(err, tc.expErr)
}
})
}
diff --git a/modules/apps/27-interchain-accounts/types/router.go b/modules/apps/27-interchain-accounts/types/router.go
deleted file mode 100644
index 6c1dcee6d39..00000000000
--- a/modules/apps/27-interchain-accounts/types/router.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package types
-
-import (
- "github.com/cosmos/cosmos-sdk/baseapp"
- sdk "github.com/cosmos/cosmos-sdk/types"
-)
-
-// MessageRouter ADR 031 request type routing
-// https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-031-msg-service.md
-type MessageRouter interface {
- Handler(msg sdk.Msg) baseapp.MsgServiceHandler
-}
-
-// QueryRouter ADR 021 query type routing
-// https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md
-type QueryRouter interface {
- // Route returns the GRPCQueryHandler for a given query route path or nil
- // if not found
- Route(path string) baseapp.GRPCQueryHandler
-}
diff --git a/modules/apps/29-fee/ibc_middleware_test.go b/modules/apps/29-fee/ibc_middleware_test.go
index b3b7f3a9d41..45a52283a02 100644
--- a/modules/apps/29-fee/ibc_middleware_test.go
+++ b/modules/apps/29-fee/ibc_middleware_test.go
@@ -716,7 +716,7 @@ func (suite *FeeTestSuite) TestOnAcknowledgementPacket() {
{
"success: fail to distribute recv fee (blocked address), returned to refund account",
func() {
- blockedAddr := suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
+ blockedAddr := suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
// reassign ack.ForwardRelayerAddress to a blocked address
ack = types.NewIncentivizedAcknowledgement(blockedAddr.String(), ibcmock.MockAcknowledgement.Acknowledgement(), true).Acknowledgement()
@@ -954,7 +954,7 @@ func (suite *FeeTestSuite) TestOnTimeoutPacket() {
{
"success: fail to distribute timeout fee (blocked address), returned to refund account",
func() {
- relayerAddr = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
+ relayerAddr = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
},
nil,
func() {},
@@ -1118,8 +1118,7 @@ func (suite *FeeTestSuite) TestOnChanUpgradeInit() {
err := path.EndpointA.ChanUpgradeInit()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1231,8 +1230,7 @@ func (suite *FeeTestSuite) TestOnChanUpgradeTry() {
err = path.EndpointB.ChanUpgradeTry()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1338,8 +1336,7 @@ func (suite *FeeTestSuite) TestOnChanUpgradeAck() {
err = cbs.OnChanUpgradeAck(suite.chainA.GetContext(), path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, counterpartyUpgrade.Fields.Version)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
diff --git a/modules/apps/29-fee/ica_test.go b/modules/apps/29-fee/ica_test.go
index a90a18c58b1..f66fd6bc246 100644
--- a/modules/apps/29-fee/ica_test.go
+++ b/modules/apps/29-fee/ica_test.go
@@ -4,10 +4,10 @@ import (
"github.com/cosmos/gogoproto/proto"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
+ stakingtypes "cosmossdk.io/x/staking/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
icahosttypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types"
diff --git a/modules/apps/29-fee/keeper/escrow.go b/modules/apps/29-fee/keeper/escrow.go
index 36571450fb0..c18935ef7ac 100644
--- a/modules/apps/29-fee/keeper/escrow.go
+++ b/modules/apps/29-fee/keeper/escrow.go
@@ -3,6 +3,7 @@ package keeper
import (
"bytes"
"context"
+ "errors"
"fmt"
errorsmod "cosmossdk.io/errors"
@@ -11,6 +12,7 @@ import (
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
+ ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
)
// escrowPacketFee sends the packet fee to the 29-fee module account to hold in escrow
@@ -41,45 +43,44 @@ func (k Keeper) escrowPacketFee(ctx context.Context, packetID channeltypes.Packe
packetFees := types.NewPacketFees(fees)
k.SetFeesInEscrow(ctx, packetID, packetFees)
- emitIncentivizedPacketEvent(ctx, packetID, packetFees)
-
- return nil
+ return k.emitIncentivizedPacketEvent(ctx, packetID, packetFees)
}
// DistributePacketFeesOnAcknowledgement pays all the acknowledgement & receive fees for a given packetID while refunding the timeout fees to the refund account.
func (k Keeper) DistributePacketFeesOnAcknowledgement(ctx context.Context, forwardRelayer string, reverseRelayer sdk.AccAddress, packetFees []types.PacketFee, packetID channeltypes.PacketId) {
- // cache context before trying to distribute fees
+ // use branched multistore for distribution of fees.
// if the escrow account has insufficient balance then we want to avoid partially distributing fees
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- cacheCtx, writeFn := sdkCtx.CacheContext()
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ // forward relayer address will be empty if conversion fails
+ forwardAddr, _ := sdk.AccAddressFromBech32(forwardRelayer)
+
+ for _, packetFee := range packetFees {
+ if !k.EscrowAccountHasBalance(ctx, packetFee.Fee.Total()) {
+ // NOTE: we lock the fee module on error return so that the state changes are persisted
+ return ibcerrors.ErrInsufficientFunds
+ }
+
+ // check if refundAcc address works
+ refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress)
+ if err != nil {
+ panic(fmt.Errorf("could not parse refundAcc %s to sdk.AccAddress", packetFee.RefundAddress))
+ }
- // forward relayer address will be empty if conversion fails
- forwardAddr, _ := sdk.AccAddressFromBech32(forwardRelayer)
+ k.distributePacketFeeOnAcknowledgement(ctx, refundAddr, forwardAddr, reverseRelayer, packetFee)
+ }
- for _, packetFee := range packetFees {
- if !k.EscrowAccountHasBalance(cacheCtx, packetFee.Fee.Total()) {
+ return nil
+ }); err != nil {
+ if errors.Is(err, ibcerrors.ErrInsufficientFunds) {
// if the escrow account does not have sufficient funds then there must exist a severe bug
// the fee module should be locked until manual intervention fixes the issue
// a locked fee module will simply skip fee logic, all channels will temporarily function as
// fee disabled channels
- // NOTE: we use the uncached context to lock the fee module so that the state changes from
- // locking the fee module are persisted
k.lockFeeModule(ctx)
return
}
-
- // check if refundAcc address works
- refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress)
- if err != nil {
- panic(fmt.Errorf("could not parse refundAcc %s to sdk.AccAddress", packetFee.RefundAddress))
- }
-
- k.distributePacketFeeOnAcknowledgement(cacheCtx, refundAddr, forwardAddr, reverseRelayer, packetFee)
}
- // write the cache
- writeFn()
-
// removes the fees from the store as fees are now paid
k.DeleteFeesInEscrow(ctx, packetID)
}
@@ -106,35 +107,36 @@ func (k Keeper) distributePacketFeeOnAcknowledgement(ctx context.Context, refund
// DistributePacketFeesOnTimeout pays all the timeout fees for a given packetID while refunding the acknowledgement & receive fees to the refund account.
func (k Keeper) DistributePacketFeesOnTimeout(ctx context.Context, timeoutRelayer sdk.AccAddress, packetFees []types.PacketFee, packetID channeltypes.PacketId) {
- // cache context before trying to distribute fees
+ // use branched multistore for distribution of fees.
// if the escrow account has insufficient balance then we want to avoid partially distributing fees
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- cacheCtx, writeFn := sdkCtx.CacheContext()
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ for _, packetFee := range packetFees {
+ if !k.EscrowAccountHasBalance(ctx, packetFee.Fee.Total()) {
+ // NOTE: we lock the fee module on error return so that the state changes are persisted
+ return ibcerrors.ErrInsufficientFunds
+ }
+
+ // check if refundAcc address works
+ refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress)
+ if err != nil {
+ panic(fmt.Errorf("could not parse refundAcc %s to sdk.AccAddress", packetFee.RefundAddress))
+ }
- for _, packetFee := range packetFees {
- if !k.EscrowAccountHasBalance(cacheCtx, packetFee.Fee.Total()) {
+ k.distributePacketFeeOnTimeout(ctx, refundAddr, timeoutRelayer, packetFee)
+ }
+
+ return nil
+ }); err != nil {
+ if errors.Is(err, ibcerrors.ErrInsufficientFunds) {
// if the escrow account does not have sufficient funds then there must exist a severe bug
// the fee module should be locked until manual intervention fixes the issue
// a locked fee module will simply skip fee logic, all channels will temporarily function as
// fee disabled channels
- // NOTE: we use the uncached context to lock the fee module so that the state changes from
- // locking the fee module are persisted
k.lockFeeModule(ctx)
return
}
-
- // check if refundAcc address works
- refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress)
- if err != nil {
- panic(fmt.Errorf("could not parse refundAcc %s to sdk.AccAddress", packetFee.RefundAddress))
- }
-
- k.distributePacketFeeOnTimeout(cacheCtx, refundAddr, timeoutRelayer, packetFee)
}
- // write the cache
- writeFn()
-
// removing the fee from the store as the fee is now paid
k.DeleteFeesInEscrow(ctx, packetID)
}
@@ -153,32 +155,36 @@ func (k Keeper) distributePacketFeeOnTimeout(ctx context.Context, refundAddr, ti
// If the distribution fails for any reason (such as the receiving address being blocked),
// the state changes will be discarded.
func (k Keeper) distributeFee(ctx context.Context, receiver, refundAccAddress sdk.AccAddress, fee sdk.Coins) {
- // cache context before trying to distribute fees
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- cacheCtx, writeFn := sdkCtx.CacheContext()
+ // use branched multistore before trying to distribute fees
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, receiver, fee)
+ if err != nil {
+ if bytes.Equal(receiver, refundAccAddress) {
+ // if sending to the refund address already failed, then return (no-op)
+ return errorsmod.Wrapf(types.ErrRefundDistributionFailed, "receiver address: %s", receiver)
+ }
- err := k.bankKeeper.SendCoinsFromModuleToAccount(cacheCtx, types.ModuleName, receiver, fee)
- if err != nil {
- if bytes.Equal(receiver, refundAccAddress) {
- k.Logger(ctx).Error("error distributing fee", "receiver address", receiver, "fee", fee)
- return // if sending to the refund address already failed, then return (no-op)
- }
+ // if an error is returned from x/bank and the receiver is not the refundAccAddress
+ // then attempt to refund the fee to the original sender
+ err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, refundAccAddress, fee)
+ if err != nil {
+ // if sending to the refund address fails, no-op
+ return errorsmod.Wrapf(types.ErrRefundDistributionFailed, "receiver address: %s", refundAccAddress)
+ }
- // if an error is returned from x/bank and the receiver is not the refundAccAddress
- // then attempt to refund the fee to the original sender
- err := k.bankKeeper.SendCoinsFromModuleToAccount(cacheCtx, types.ModuleName, refundAccAddress, fee)
- if err != nil {
- k.Logger(ctx).Error("error refunding fee to the original sender", "refund address", refundAccAddress, "fee", fee)
- return // if sending to the refund address fails, no-op
+ if err := k.emitDistributeFeeEvent(ctx, refundAccAddress.String(), fee); err != nil {
+ panic(err)
+ }
}
- emitDistributeFeeEvent(ctx, refundAccAddress.String(), fee)
- } else {
- emitDistributeFeeEvent(ctx, receiver.String(), fee)
+ return nil
+ }); err != nil {
+ k.Logger.Error("error distributing fee", "error", err.Error())
}
- // write the cache
- writeFn()
+ if err := k.emitDistributeFeeEvent(ctx, receiver.String(), fee); err != nil {
+ panic(err)
+ }
}
// RefundFeesOnChannelClosure will refund all fees associated with the given port and channel identifiers.
@@ -188,52 +194,52 @@ func (k Keeper) distributeFee(ctx context.Context, receiver, refundAccAddress sd
func (k Keeper) RefundFeesOnChannelClosure(ctx context.Context, portID, channelID string) error {
identifiedPacketFees := k.GetIdentifiedPacketFeesForChannel(ctx, portID, channelID)
- // cache context before trying to distribute fees
+ // use branched multistore for distribution of fees.
// if the escrow account has insufficient balance then we want to avoid partially distributing fees
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- cacheCtx, writeFn := sdkCtx.CacheContext()
-
- for _, identifiedPacketFee := range identifiedPacketFees {
- var unRefundedFees []types.PacketFee
- for _, packetFee := range identifiedPacketFee.PacketFees {
-
- if !k.EscrowAccountHasBalance(cacheCtx, packetFee.Fee.Total()) {
- // if the escrow account does not have sufficient funds then there must exist a severe bug
- // the fee module should be locked until manual intervention fixes the issue
- // a locked fee module will simply skip fee logic, all channels will temporarily function as
- // fee disabled channels
- // NOTE: we use the uncached context to lock the fee module so that the state changes from
- // locking the fee module are persisted
- k.lockFeeModule(ctx)
-
- // return a nil error so state changes are committed but distribution stops
- return nil
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ for _, identifiedPacketFee := range identifiedPacketFees {
+ var unRefundedFees []types.PacketFee
+ for _, packetFee := range identifiedPacketFee.PacketFees {
+
+ if !k.EscrowAccountHasBalance(ctx, packetFee.Fee.Total()) {
+ // NOTE: we lock the fee module on error return so that the state changes are persisted
+ return ibcerrors.ErrInsufficientFunds
+ }
+
+ refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress)
+ if err != nil {
+ unRefundedFees = append(unRefundedFees, packetFee)
+ continue
+ }
+
+ // refund all fees to refund address
+ if err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, refundAddr, packetFee.Fee.Total()); err != nil {
+ unRefundedFees = append(unRefundedFees, packetFee)
+ continue
+ }
}
- refundAddr, err := sdk.AccAddressFromBech32(packetFee.RefundAddress)
- if err != nil {
- unRefundedFees = append(unRefundedFees, packetFee)
- continue
- }
-
- // refund all fees to refund address
- if err = k.bankKeeper.SendCoinsFromModuleToAccount(cacheCtx, types.ModuleName, refundAddr, packetFee.Fee.Total()); err != nil {
- unRefundedFees = append(unRefundedFees, packetFee)
- continue
+ if len(unRefundedFees) > 0 {
+ // update packet fees to keep only the unrefunded fees
+ packetFees := types.NewPacketFees(unRefundedFees)
+ k.SetFeesInEscrow(ctx, identifiedPacketFee.PacketId, packetFees)
+ } else {
+ k.DeleteFeesInEscrow(ctx, identifiedPacketFee.PacketId)
}
}
- if len(unRefundedFees) > 0 {
- // update packet fees to keep only the unrefunded fees
- packetFees := types.NewPacketFees(unRefundedFees)
- k.SetFeesInEscrow(cacheCtx, identifiedPacketFee.PacketId, packetFees)
- } else {
- k.DeleteFeesInEscrow(cacheCtx, identifiedPacketFee.PacketId)
+ return nil
+ }); err != nil {
+ if errors.Is(err, ibcerrors.ErrInsufficientFunds) {
+ // if the escrow account does not have sufficient funds then there must exist a severe bug
+ // the fee module should be locked until manual intervention fixes the issue
+ // a locked fee module will simply skip fee logic, all channels will temporarily function as
+ // fee disabled channels
+ k.lockFeeModule(ctx)
+
+ return nil // commit state changes to lock module and stop fee distribution
}
}
- // write the cache
- writeFn()
-
return nil
}
diff --git a/modules/apps/29-fee/keeper/escrow_test.go b/modules/apps/29-fee/keeper/escrow_test.go
index c623cd11cdc..0736dc6959b 100644
--- a/modules/apps/29-fee/keeper/escrow_test.go
+++ b/modules/apps/29-fee/keeper/escrow_test.go
@@ -110,7 +110,7 @@ func (suite *KeeperTestSuite) TestDistributeFee() {
// set the timeout fee to be greater than recv + ack fee so that the refund amount is non-zero
fee.TimeoutFee = fee.Total().Add(ibctesting.TestCoin)
- refundAcc = suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(mock.ModuleName)
+ refundAcc = suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(mock.ModuleName)
packetFee = types.NewPacketFee(fee, refundAcc.String(), []string{})
packetFees = []types.PacketFee{packetFee, packetFee}
@@ -168,7 +168,7 @@ func (suite *KeeperTestSuite) TestDistributeFee() {
packetFee = types.NewPacketFee(fee, refundAcc.String(), []string{})
packetFees = []types.PacketFee{packetFee, packetFee}
- forwardRelayer = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
+ forwardRelayer = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
},
func() {
// check if the refund acc has been refunded the timeoutFee & recvFee
@@ -183,7 +183,7 @@ func (suite *KeeperTestSuite) TestDistributeFee() {
packetFee = types.NewPacketFee(fee, refundAcc.String(), []string{})
packetFees = []types.PacketFee{packetFee, packetFee}
- reverseRelayer = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
+ reverseRelayer = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
},
func() {
// check if the refund acc has been refunded the ackFee
@@ -201,8 +201,8 @@ func (suite *KeeperTestSuite) TestDistributeFee() {
packetFee = types.NewPacketFee(fee, refundAcc.String(), []string{})
packetFees = []types.PacketFee{packetFee, packetFee}
- packetFees[0].RefundAddress = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
- packetFees[1].RefundAddress = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
+ packetFees[0].RefundAddress = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
+ packetFees[1].RefundAddress = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
},
func() {
// check if the module acc contains the timeoutFee
@@ -328,7 +328,7 @@ func (suite *KeeperTestSuite) TestDistributePacketFeesOnTimeout() {
{
"invalid timeout relayer address: timeout fee returned to sender",
func() {
- timeoutRelayer = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
+ timeoutRelayer = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
},
func() {
// check if the refund acc has been refunded the all the fees
@@ -345,8 +345,8 @@ func (suite *KeeperTestSuite) TestDistributePacketFeesOnTimeout() {
packetFee = types.NewPacketFee(fee, refundAcc.String(), []string{})
packetFees = []types.PacketFee{packetFee, packetFee}
- packetFees[0].RefundAddress = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
- packetFees[1].RefundAddress = suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
+ packetFees[0].RefundAddress = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
+ packetFees[1].RefundAddress = suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
},
func() {
// check if the module acc contains the correct amount of fees
@@ -531,7 +531,7 @@ func (suite *KeeperTestSuite) TestRefundFeesOnChannelClosure() {
},
{
"distributing to blocked address is skipped", func() {
- blockedAddr := suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
+ blockedAddr := suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress().String()
// store the fee in state & update escrow account balance
packetID := channeltypes.NewPacketID(suite.path.EndpointA.ChannelConfig.PortID, suite.path.EndpointA.ChannelID, uint64(1))
diff --git a/modules/apps/29-fee/keeper/events.go b/modules/apps/29-fee/keeper/events.go
index 683339a55ff..789109fcf81 100644
--- a/modules/apps/29-fee/keeper/events.go
+++ b/modules/apps/29-fee/keeper/events.go
@@ -4,6 +4,8 @@ import (
"context"
"fmt"
+ "cosmossdk.io/core/event"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
@@ -12,7 +14,7 @@ import (
// emitIncentivizedPacketEvent emits an event containing information on the total amount of fees incentivizing
// a specific packet. It should be emitted on every fee escrowed for the given packetID.
-func emitIncentivizedPacketEvent(ctx context.Context, packetID channeltypes.PacketId, packetFees types.PacketFees) {
+func (k Keeper) emitIncentivizedPacketEvent(ctx context.Context, packetID channeltypes.PacketId, packetFees types.PacketFees) error {
var (
totalRecvFees sdk.Coins
totalAckFees sdk.Coins
@@ -27,70 +29,71 @@ func emitIncentivizedPacketEvent(ctx context.Context, packetID channeltypes.Pack
totalTimeoutFees = totalTimeoutFees.Add(fee.Fee.TimeoutFee...)
}
}
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeIncentivizedPacket,
- sdk.NewAttribute(channeltypes.AttributeKeyPortID, packetID.PortId),
- sdk.NewAttribute(channeltypes.AttributeKeyChannelID, packetID.ChannelId),
- sdk.NewAttribute(channeltypes.AttributeKeySequence, fmt.Sprint(packetID.Sequence)),
- sdk.NewAttribute(types.AttributeKeyRecvFee, totalRecvFees.String()),
- sdk.NewAttribute(types.AttributeKeyAckFee, totalAckFees.String()),
- sdk.NewAttribute(types.AttributeKeyTimeoutFee, totalTimeoutFees.String()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
+
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeIncentivizedPacket,
+ event.NewAttribute(channeltypes.AttributeKeyPortID, packetID.PortId),
+ event.NewAttribute(channeltypes.AttributeKeyChannelID, packetID.ChannelId),
+ event.NewAttribute(channeltypes.AttributeKeySequence, fmt.Sprint(packetID.Sequence)),
+ event.NewAttribute(types.AttributeKeyRecvFee, totalRecvFees.String()),
+ event.NewAttribute(types.AttributeKeyAckFee, totalAckFees.String()),
+ event.NewAttribute(types.AttributeKeyTimeoutFee, totalTimeoutFees.String()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
}
// emitRegisterPayeeEvent emits an event containing information of a registered payee for a relayer on a particular channel
-func emitRegisterPayeeEvent(ctx context.Context, relayer, payee, channelID string) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeRegisterPayee,
- sdk.NewAttribute(types.AttributeKeyRelayer, relayer),
- sdk.NewAttribute(types.AttributeKeyPayee, payee),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
+func (k Keeper) emitRegisterPayeeEvent(ctx context.Context, relayer, payee, channelID string) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeRegisterPayee,
+ event.NewAttribute(types.AttributeKeyRelayer, relayer),
+ event.NewAttribute(types.AttributeKeyPayee, payee),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
}
// emitRegisterCounterpartyPayeeEvent emits an event containing information of a registered counterparty payee for a relayer on a particular channel
-func emitRegisterCounterpartyPayeeEvent(ctx context.Context, relayer, counterpartyPayee, channelID string) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeRegisterCounterpartyPayee,
- sdk.NewAttribute(types.AttributeKeyRelayer, relayer),
- sdk.NewAttribute(types.AttributeKeyCounterpartyPayee, counterpartyPayee),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
+func (k Keeper) emitRegisterCounterpartyPayeeEvent(ctx context.Context, relayer, counterpartyPayee, channelID string) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeRegisterCounterpartyPayee,
+ event.NewAttribute(types.AttributeKeyRelayer, relayer),
+ event.NewAttribute(types.AttributeKeyCounterpartyPayee, counterpartyPayee),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
}
// emitDistributeFeeEvent emits an event containing a distribution fee and receiver address
-func emitDistributeFeeEvent(ctx context.Context, receiver string, fee sdk.Coins) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeDistributeFee,
- sdk.NewAttribute(types.AttributeKeyReceiver, receiver),
- sdk.NewAttribute(types.AttributeKeyFee, fee.String()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
+func (k Keeper) emitDistributeFeeEvent(ctx context.Context, receiver string, fee sdk.Coins) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeDistributeFee,
+ event.NewAttribute(types.AttributeKeyReceiver, receiver),
+ event.NewAttribute(types.AttributeKeyFee, fee.String()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
}
diff --git a/modules/apps/29-fee/keeper/events_test.go b/modules/apps/29-fee/keeper/events_test.go
index 9e441f9730b..4ce5715825b 100644
--- a/modules/apps/29-fee/keeper/events_test.go
+++ b/modules/apps/29-fee/keeper/events_test.go
@@ -3,7 +3,7 @@ package keeper_test
import (
sdk "github.com/cosmos/cosmos-sdk/types"
- abcitypes "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
@@ -38,7 +38,7 @@ func (suite *KeeperTestSuite) TestIncentivizePacketEvent() {
result, err := suite.chainA.SendMsgs(msg)
suite.Require().NoError(err)
- var incentivizedPacketEvent abcitypes.Event
+ var incentivizedPacketEvent abci.Event
for _, event := range result.Events {
if event.Type == types.EventTypeIncentivizedPacket {
incentivizedPacketEvent = event
diff --git a/modules/apps/29-fee/keeper/grpc_query.go b/modules/apps/29-fee/keeper/grpc_query.go
index cd6a0e05f33..a2e9fb92eb1 100644
--- a/modules/apps/29-fee/keeper/grpc_query.go
+++ b/modules/apps/29-fee/keeper/grpc_query.go
@@ -28,7 +28,7 @@ func (k Keeper) IncentivizedPackets(ctx context.Context, req *types.QueryIncenti
var identifiedPackets []types.IdentifiedPacketFees
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), []byte(types.FeesInEscrowPrefix))
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), []byte(types.FeesInEscrowPrefix))
pagination, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
packetID, err := types.ParseKeyFeesInEscrow(types.FeesInEscrowPrefix + string(key))
if err != nil {
@@ -50,13 +50,11 @@ func (k Keeper) IncentivizedPackets(ctx context.Context, req *types.QueryIncenti
}
// IncentivizedPacket implements the Query/IncentivizedPacket gRPC method
-func (k Keeper) IncentivizedPacket(goCtx context.Context, req *types.QueryIncentivizedPacketRequest) (*types.QueryIncentivizedPacketResponse, error) {
+func (k Keeper) IncentivizedPacket(ctx context.Context, req *types.QueryIncentivizedPacketRequest) (*types.QueryIncentivizedPacketResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(goCtx).WithBlockHeight(int64(req.QueryHeight))
-
feesInEscrow, exists := k.GetFeesInEscrow(ctx, req.PacketId)
if !exists {
return nil, status.Error(
@@ -70,7 +68,7 @@ func (k Keeper) IncentivizedPacket(goCtx context.Context, req *types.QueryIncent
}
// IncentivizedPacketsForChannel implements the Query/IncentivizedPacketsForChannel gRPC method
-func (k Keeper) IncentivizedPacketsForChannel(goCtx context.Context, req *types.QueryIncentivizedPacketsForChannelRequest) (*types.QueryIncentivizedPacketsForChannelResponse, error) {
+func (k Keeper) IncentivizedPacketsForChannel(ctx context.Context, req *types.QueryIncentivizedPacketsForChannelRequest) (*types.QueryIncentivizedPacketsForChannelResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -79,8 +77,6 @@ func (k Keeper) IncentivizedPacketsForChannel(goCtx context.Context, req *types.
return nil, err
}
- ctx := sdk.UnwrapSDKContext(goCtx).WithBlockHeight(int64(req.QueryHeight))
-
if !k.channelKeeper.HasChannel(ctx, req.PortId, req.ChannelId) {
return nil, status.Error(
codes.NotFound,
@@ -90,7 +86,7 @@ func (k Keeper) IncentivizedPacketsForChannel(goCtx context.Context, req *types.
var packets []*types.IdentifiedPacketFees
keyPrefix := types.KeyFeesInEscrowChannelPrefix(req.PortId, req.ChannelId)
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), keyPrefix)
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), keyPrefix)
pagination, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
packetID, err := types.ParseKeyFeesInEscrow(string(keyPrefix) + string(key))
if err != nil {
@@ -115,16 +111,14 @@ func (k Keeper) IncentivizedPacketsForChannel(goCtx context.Context, req *types.
}
// TotalRecvFees implements the Query/TotalRecvFees gRPC method
-func (k Keeper) TotalRecvFees(goCtx context.Context, req *types.QueryTotalRecvFeesRequest) (*types.QueryTotalRecvFeesResponse, error) {
+func (k Keeper) TotalRecvFees(ctx context.Context, req *types.QueryTotalRecvFeesRequest) (*types.QueryTotalRecvFeesResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(goCtx)
-
feesInEscrow, found := k.GetFeesInEscrow(ctx, req.PacketId)
if !found {
- return nil, status.Errorf(
+ return nil, status.Error(
codes.NotFound,
errorsmod.Wrapf(types.ErrFeeNotFound, "channel: %s, port: %s, sequence: %d", req.PacketId.ChannelId, req.PacketId.PortId, req.PacketId.Sequence).Error(),
)
@@ -141,16 +135,14 @@ func (k Keeper) TotalRecvFees(goCtx context.Context, req *types.QueryTotalRecvFe
}
// TotalAckFees implements the Query/TotalAckFees gRPC method
-func (k Keeper) TotalAckFees(goCtx context.Context, req *types.QueryTotalAckFeesRequest) (*types.QueryTotalAckFeesResponse, error) {
+func (k Keeper) TotalAckFees(ctx context.Context, req *types.QueryTotalAckFeesRequest) (*types.QueryTotalAckFeesResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(goCtx)
-
feesInEscrow, found := k.GetFeesInEscrow(ctx, req.PacketId)
if !found {
- return nil, status.Errorf(
+ return nil, status.Error(
codes.NotFound,
errorsmod.Wrapf(types.ErrFeeNotFound, "channel: %s, port: %s, sequence: %d", req.PacketId.ChannelId, req.PacketId.PortId, req.PacketId.Sequence).Error(),
)
@@ -167,16 +159,14 @@ func (k Keeper) TotalAckFees(goCtx context.Context, req *types.QueryTotalAckFees
}
// TotalTimeoutFees implements the Query/TotalTimeoutFees gRPC method
-func (k Keeper) TotalTimeoutFees(goCtx context.Context, req *types.QueryTotalTimeoutFeesRequest) (*types.QueryTotalTimeoutFeesResponse, error) {
+func (k Keeper) TotalTimeoutFees(ctx context.Context, req *types.QueryTotalTimeoutFeesRequest) (*types.QueryTotalTimeoutFeesResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(goCtx)
-
feesInEscrow, found := k.GetFeesInEscrow(ctx, req.PacketId)
if !found {
- return nil, status.Errorf(
+ return nil, status.Error(
codes.NotFound,
errorsmod.Wrapf(types.ErrFeeNotFound, "channel: %s, port: %s, sequence: %d", req.PacketId.ChannelId, req.PacketId.PortId, req.PacketId.Sequence).Error(),
)
@@ -193,13 +183,11 @@ func (k Keeper) TotalTimeoutFees(goCtx context.Context, req *types.QueryTotalTim
}
// Payee implements the Query/Payee gRPC method and returns the registered payee address to which packet fees are paid out
-func (k Keeper) Payee(goCtx context.Context, req *types.QueryPayeeRequest) (*types.QueryPayeeResponse, error) {
+func (k Keeper) Payee(ctx context.Context, req *types.QueryPayeeRequest) (*types.QueryPayeeResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(goCtx)
-
payeeAddr, found := k.GetPayeeAddress(ctx, req.Relayer, req.ChannelId)
if !found {
return nil, status.Errorf(codes.NotFound, "payee address not found for address: %s on channel: %s", req.Relayer, req.ChannelId)
@@ -211,13 +199,11 @@ func (k Keeper) Payee(goCtx context.Context, req *types.QueryPayeeRequest) (*typ
}
// CounterpartyPayee implements the Query/CounterpartyPayee gRPC method and returns the registered counterparty payee address for forward relaying
-func (k Keeper) CounterpartyPayee(goCtx context.Context, req *types.QueryCounterpartyPayeeRequest) (*types.QueryCounterpartyPayeeResponse, error) {
+func (k Keeper) CounterpartyPayee(ctx context.Context, req *types.QueryCounterpartyPayeeRequest) (*types.QueryCounterpartyPayeeResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(goCtx)
-
counterpartyPayeeAddr, found := k.GetCounterpartyPayeeAddress(ctx, req.Relayer, req.ChannelId)
if !found {
return nil, status.Errorf(codes.NotFound, "counterparty payee address not found for address: %s on channel: %s", req.Relayer, req.ChannelId)
@@ -235,7 +221,7 @@ func (k Keeper) FeeEnabledChannels(ctx context.Context, req *types.QueryFeeEnabl
}
var feeEnabledChannels []types.FeeEnabledChannel
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), []byte(types.FeeEnabledKeyPrefix))
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), []byte(types.FeeEnabledKeyPrefix))
pagination, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
portID, channelID, err := types.ParseKeyFeeEnabled(types.FeeEnabledKeyPrefix + string(key))
if err != nil {
@@ -263,7 +249,7 @@ func (k Keeper) FeeEnabledChannels(ctx context.Context, req *types.QueryFeeEnabl
// FeeEnabledChannel implements the Query/FeeEnabledChannel gRPC method and returns true if the provided
// port and channel identifiers belong to a fee enabled channel
-func (k Keeper) FeeEnabledChannel(goCtx context.Context, req *types.QueryFeeEnabledChannelRequest) (*types.QueryFeeEnabledChannelResponse, error) {
+func (k Keeper) FeeEnabledChannel(ctx context.Context, req *types.QueryFeeEnabledChannelRequest) (*types.QueryFeeEnabledChannelResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -272,8 +258,6 @@ func (k Keeper) FeeEnabledChannel(goCtx context.Context, req *types.QueryFeeEnab
return nil, err
}
- ctx := sdk.UnwrapSDKContext(goCtx)
-
if !k.HasChannel(ctx, req.PortId, req.ChannelId) {
return nil, status.Error(
codes.NotFound,
diff --git a/modules/apps/29-fee/keeper/keeper.go b/modules/apps/29-fee/keeper/keeper.go
index 641fa156932..2b027f96da7 100644
--- a/modules/apps/29-fee/keeper/keeper.go
+++ b/modules/apps/29-fee/keeper/keeper.go
@@ -3,8 +3,7 @@ package keeper
import (
"context"
- corestore "cosmossdk.io/core/store"
- "cosmossdk.io/log"
+ "cosmossdk.io/core/appmodule"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec"
@@ -14,7 +13,7 @@ import (
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
- ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
// Middleware must implement types.ChannelKeeper and types.PortKeeper expected interfaces
@@ -23,10 +22,11 @@ var _ types.ChannelKeeper = (*Keeper)(nil)
// Keeper defines the IBC fungible transfer keeper
type Keeper struct {
- storeService corestore.KVStoreService
- cdc codec.BinaryCodec
+ appmodule.Environment
- authKeeper types.AccountKeeper
+ cdc codec.BinaryCodec
+
+ authKeeper types.AuthKeeper
ics4Wrapper porttypes.ICS4Wrapper
channelKeeper types.ChannelKeeper
bankKeeper types.BankKeeper
@@ -34,13 +34,13 @@ type Keeper struct {
// NewKeeper creates a new 29-fee Keeper instance
func NewKeeper(
- cdc codec.BinaryCodec, storeService corestore.KVStoreService,
+ cdc codec.BinaryCodec, env appmodule.Environment,
ics4Wrapper porttypes.ICS4Wrapper, channelKeeper types.ChannelKeeper,
- authKeeper types.AccountKeeper, bankKeeper types.BankKeeper,
+ authKeeper types.AuthKeeper, bankKeeper types.BankKeeper,
) Keeper {
return Keeper{
cdc: cdc,
- storeService: storeService,
+ Environment: env,
ics4Wrapper: ics4Wrapper,
channelKeeper: channelKeeper,
authKeeper: authKeeper,
@@ -60,12 +60,6 @@ func (k Keeper) GetICS4Wrapper() porttypes.ICS4Wrapper {
return k.ics4Wrapper
}
-// Logger returns a module-specific logger.
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return sdkCtx.Logger().With("module", "x/"+ibcexported.ModuleName+"-"+types.ModuleName)
-}
-
// GetChannel wraps IBC ChannelKeeper's GetChannel function
func (k Keeper) GetChannel(ctx context.Context, portID, channelID string) (channeltypes.Channel, bool) {
return k.channelKeeper.GetChannel(ctx, portID, channelID)
@@ -106,7 +100,7 @@ func (k Keeper) EscrowAccountHasBalance(ctx context.Context, coins sdk.Coins) bo
// identified by channel and port identifiers.
// Please see ADR 004 for more information.
func (k Keeper) lockFeeModule(ctx context.Context) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(types.KeyLocked(), []byte{1}); err != nil {
panic(err)
}
@@ -115,7 +109,7 @@ func (k Keeper) lockFeeModule(ctx context.Context) {
// IsLocked indicates if the fee module is locked
// Please see ADR 004 for more information.
func (k Keeper) IsLocked(ctx context.Context) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(types.KeyLocked())
if err != nil {
panic(err)
@@ -126,7 +120,7 @@ func (k Keeper) IsLocked(ctx context.Context) bool {
// SetFeeEnabled sets a flag to determine if fee handling logic should run for the given channel
// identified by channel and port identifiers.
func (k Keeper) SetFeeEnabled(ctx context.Context, portID, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(types.KeyFeeEnabled(portID, channelID), []byte{1}); err != nil {
panic(err)
}
@@ -134,7 +128,7 @@ func (k Keeper) SetFeeEnabled(ctx context.Context, portID, channelID string) {
// DeleteFeeEnabled deletes the fee enabled flag for a given portID and channelID
func (k Keeper) DeleteFeeEnabled(ctx context.Context, portID, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(types.KeyFeeEnabled(portID, channelID)); err != nil {
panic(err)
}
@@ -143,7 +137,7 @@ func (k Keeper) DeleteFeeEnabled(ctx context.Context, portID, channelID string)
// IsFeeEnabled returns whether fee handling logic should be run for the given port. It will check the
// fee enabled flag for the given port and channel identifiers
func (k Keeper) IsFeeEnabled(ctx context.Context, portID, channelID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(types.KeyFeeEnabled(portID, channelID))
if err != nil {
panic(err)
@@ -153,9 +147,9 @@ func (k Keeper) IsFeeEnabled(ctx context.Context, portID, channelID string) bool
// GetAllFeeEnabledChannels returns a list of all ics29 enabled channels containing portID & channelID that are stored in state
func (k Keeper) GetAllFeeEnabledChannels(ctx context.Context) []types.FeeEnabledChannel {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(types.FeeEnabledKeyPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var enabledChArr []types.FeeEnabledChannel
for ; iterator.Valid(); iterator.Next() {
@@ -176,7 +170,7 @@ func (k Keeper) GetAllFeeEnabledChannels(ctx context.Context) []types.FeeEnabled
// GetPayeeAddress retrieves the fee payee address stored in state given the provided channel identifier and relayer address
func (k Keeper) GetPayeeAddress(ctx context.Context, relayerAddr, channelID string) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.KeyPayee(relayerAddr, channelID)
bz, err := store.Get(key)
@@ -193,7 +187,7 @@ func (k Keeper) GetPayeeAddress(ctx context.Context, relayerAddr, channelID stri
// SetPayeeAddress stores the fee payee address in state keyed by the provided channel identifier and relayer address
func (k Keeper) SetPayeeAddress(ctx context.Context, relayerAddr, payeeAddr, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(types.KeyPayee(relayerAddr, channelID), []byte(payeeAddr)); err != nil {
panic(err)
}
@@ -201,9 +195,9 @@ func (k Keeper) SetPayeeAddress(ctx context.Context, relayerAddr, payeeAddr, cha
// GetAllPayees returns all registered payees addresses
func (k Keeper) GetAllPayees(ctx context.Context) []types.RegisteredPayee {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(types.PayeeKeyPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var registeredPayees []types.RegisteredPayee
for ; iterator.Valid(); iterator.Next() {
@@ -227,7 +221,7 @@ func (k Keeper) GetAllPayees(ctx context.Context) []types.RegisteredPayee {
// SetCounterpartyPayeeAddress maps the destination chain counterparty payee address to the source relayer address
// The receiving chain must store the mapping from: address -> counterpartyPayeeAddress for the given channel
func (k Keeper) SetCounterpartyPayeeAddress(ctx context.Context, address, counterpartyAddress, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(types.KeyCounterpartyPayee(address, channelID), []byte(counterpartyAddress)); err != nil {
panic(err)
}
@@ -235,7 +229,7 @@ func (k Keeper) SetCounterpartyPayeeAddress(ctx context.Context, address, counte
// GetCounterpartyPayeeAddress gets the counterparty payee address given a destination relayer address
func (k Keeper) GetCounterpartyPayeeAddress(ctx context.Context, address, channelID string) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.KeyCounterpartyPayee(address, channelID)
addr, err := store.Get(key)
@@ -251,9 +245,9 @@ func (k Keeper) GetCounterpartyPayeeAddress(ctx context.Context, address, channe
// GetAllCounterpartyPayees returns all registered counterparty payee addresses
func (k Keeper) GetAllCounterpartyPayees(ctx context.Context) []types.RegisteredCounterpartyPayee {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(types.CounterpartyPayeeKeyPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var registeredCounterpartyPayees []types.RegisteredCounterpartyPayee
for ; iterator.Valid(); iterator.Next() {
@@ -276,7 +270,7 @@ func (k Keeper) GetAllCounterpartyPayees(ctx context.Context) []types.Registered
// SetRelayerAddressForAsyncAck sets the forward relayer address during OnRecvPacket in case of async acknowledgement
func (k Keeper) SetRelayerAddressForAsyncAck(ctx context.Context, packetID channeltypes.PacketId, address string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(types.KeyRelayerAddressForAsyncAck(packetID), []byte(address)); err != nil {
panic(err)
}
@@ -284,7 +278,7 @@ func (k Keeper) SetRelayerAddressForAsyncAck(ctx context.Context, packetID chann
// GetRelayerAddressForAsyncAck gets forward relayer address for a particular packet
func (k Keeper) GetRelayerAddressForAsyncAck(ctx context.Context, packetID channeltypes.PacketId) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.KeyRelayerAddressForAsyncAck(packetID)
addr, err := store.Get(key)
@@ -301,9 +295,9 @@ func (k Keeper) GetRelayerAddressForAsyncAck(ctx context.Context, packetID chann
// GetAllForwardRelayerAddresses returns all forward relayer addresses stored for async acknowledgements
func (k Keeper) GetAllForwardRelayerAddresses(ctx context.Context) []types.ForwardRelayerAddress {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(types.ForwardRelayerPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var forwardRelayerAddr []types.ForwardRelayerAddress
for ; iterator.Valid(); iterator.Next() {
@@ -325,7 +319,7 @@ func (k Keeper) GetAllForwardRelayerAddresses(ctx context.Context) []types.Forwa
// DeleteForwardRelayerAddress deletes the forwardRelayerAddr associated with the packetID
func (k Keeper) DeleteForwardRelayerAddress(ctx context.Context, packetID channeltypes.PacketId) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.KeyRelayerAddressForAsyncAck(packetID)
if err := store.Delete(key); err != nil {
panic(err)
@@ -334,7 +328,7 @@ func (k Keeper) DeleteForwardRelayerAddress(ctx context.Context, packetID channe
// GetFeesInEscrow returns all escrowed packet fees for a given packetID
func (k Keeper) GetFeesInEscrow(ctx context.Context, packetID channeltypes.PacketId) (types.PacketFees, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.KeyFeesInEscrow(packetID)
bz, err := store.Get(key)
if err != nil {
@@ -349,7 +343,7 @@ func (k Keeper) GetFeesInEscrow(ctx context.Context, packetID channeltypes.Packe
// HasFeesInEscrow returns true if packet fees exist for the provided packetID
func (k Keeper) HasFeesInEscrow(ctx context.Context, packetID channeltypes.PacketId) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.KeyFeesInEscrow(packetID)
has, err := store.Has(key)
if err != nil {
@@ -360,7 +354,7 @@ func (k Keeper) HasFeesInEscrow(ctx context.Context, packetID channeltypes.Packe
// SetFeesInEscrow sets the given packet fees in escrow keyed by the packetID
func (k Keeper) SetFeesInEscrow(ctx context.Context, packetID channeltypes.PacketId, fees types.PacketFees) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.MustMarshalFees(fees)
if err := store.Set(types.KeyFeesInEscrow(packetID), bz); err != nil {
panic(err)
@@ -369,7 +363,7 @@ func (k Keeper) SetFeesInEscrow(ctx context.Context, packetID channeltypes.Packe
// DeleteFeesInEscrow deletes the fee associated with the given packetID
func (k Keeper) DeleteFeesInEscrow(ctx context.Context, packetID channeltypes.PacketId) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.KeyFeesInEscrow(packetID)
if err := store.Delete(key); err != nil {
panic(err)
@@ -380,10 +374,10 @@ func (k Keeper) DeleteFeesInEscrow(ctx context.Context, packetID channeltypes.Pa
func (k Keeper) GetIdentifiedPacketFeesForChannel(ctx context.Context, portID, channelID string) []types.IdentifiedPacketFees {
var identifiedPacketFees []types.IdentifiedPacketFees
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, types.KeyFeesInEscrowChannelPrefix(portID, channelID))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
packetID, err := types.ParseKeyFeesInEscrow(string(iterator.Key()))
if err != nil {
@@ -401,9 +395,9 @@ func (k Keeper) GetIdentifiedPacketFeesForChannel(ctx context.Context, portID, c
// GetAllIdentifiedPacketFees returns a list of all IdentifiedPacketFees that are stored in state
func (k Keeper) GetAllIdentifiedPacketFees(ctx context.Context) []types.IdentifiedPacketFees {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(types.FeesInEscrowPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var identifiedFees []types.IdentifiedPacketFees
for ; iterator.Valid(); iterator.Next() {
diff --git a/modules/apps/29-fee/keeper/migrations.go b/modules/apps/29-fee/keeper/migrations.go
index 25408c95954..6bb05548796 100644
--- a/modules/apps/29-fee/keeper/migrations.go
+++ b/modules/apps/29-fee/keeper/migrations.go
@@ -7,6 +7,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
// Migrator is a struct for handling in-place store migrations.
@@ -24,9 +25,9 @@ func NewMigrator(keeper Keeper) Migrator {
// Migrate1to2 migrates ibc-fee module from ConsensusVersion 1 to 2
// by refunding leftover fees to the refund address.
func (m Migrator) Migrate1to2(ctx sdk.Context) error {
- store := runtime.KVStoreAdapter(m.keeper.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(m.keeper.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(types.FeesInEscrowPrefix))
- defer sdk.LogDeferred(ctx.Logger(), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(ctx.Logger(), func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
feesInEscrow := m.keeper.MustUnmarshalFees(iterator.Value())
diff --git a/modules/apps/29-fee/keeper/migrations_test.go b/modules/apps/29-fee/keeper/migrations_test.go
index 20d452c950d..903e54519f4 100644
--- a/modules/apps/29-fee/keeper/migrations_test.go
+++ b/modules/apps/29-fee/keeper/migrations_test.go
@@ -2,9 +2,9 @@ package keeper_test
import (
sdkmath "cosmossdk.io/math"
+ minttypes "cosmossdk.io/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
@@ -172,7 +172,7 @@ func (suite *KeeperTestSuite) TestMigrate1to2() {
refundAcc = suite.chainA.SenderAccount.GetAddress()
packetFee = types.NewPacketFee(fee, refundAcc.String(), []string(nil))
- moduleAcc = suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(types.ModuleName)
+ moduleAcc = suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(types.ModuleName)
packetID = channeltypes.NewPacketID(suite.path.EndpointA.ChannelConfig.PortID, suite.path.EndpointA.ChannelID, 1)
packetFees = nil
diff --git a/modules/apps/29-fee/keeper/msg_server.go b/modules/apps/29-fee/keeper/msg_server.go
index e79996a0389..87cf093ad9f 100644
--- a/modules/apps/29-fee/keeper/msg_server.go
+++ b/modules/apps/29-fee/keeper/msg_server.go
@@ -19,9 +19,7 @@ var _ types.MsgServer = (*Keeper)(nil)
// payee to which reverse and timeout relayer packet fees will be paid out. The payee should be registered on
// the source chain from which packets originate as this is where fee distribution takes place. This function may be
// called more than once by a relayer, in which case, the latest payee is always used.
-func (k Keeper) RegisterPayee(goCtx context.Context, msg *types.MsgRegisterPayee) (*types.MsgRegisterPayeeResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k Keeper) RegisterPayee(ctx context.Context, msg *types.MsgRegisterPayee) (*types.MsgRegisterPayeeResponse, error) {
payee, err := sdk.AccAddressFromBech32(msg.Payee)
if err != nil {
return nil, err
@@ -42,9 +40,11 @@ func (k Keeper) RegisterPayee(goCtx context.Context, msg *types.MsgRegisterPayee
k.SetPayeeAddress(ctx, msg.Relayer, msg.Payee, msg.ChannelId)
- k.Logger(ctx).Info("registering payee address for relayer", "relayer", msg.Relayer, "payee", msg.Payee, "channel", msg.ChannelId)
+ k.Logger.Info("registering payee address for relayer", "relayer", msg.Relayer, "payee", msg.Payee, "channel", msg.ChannelId)
- emitRegisterPayeeEvent(ctx, msg.Relayer, msg.Payee, msg.ChannelId)
+ if err := k.emitRegisterPayeeEvent(ctx, msg.Relayer, msg.Payee, msg.ChannelId); err != nil {
+ return nil, err
+ }
return &types.MsgRegisterPayeeResponse{}, nil
}
@@ -54,9 +54,7 @@ func (k Keeper) RegisterPayee(goCtx context.Context, msg *types.MsgRegisterPayee
// payee address before relaying. This ensures they will be properly compensated for forward relaying since
// the destination chain must include the registered counterparty payee address in the acknowledgement. This function
// may be called more than once by a relayer, in which case, the latest counterparty payee address is always used.
-func (k Keeper) RegisterCounterpartyPayee(goCtx context.Context, msg *types.MsgRegisterCounterpartyPayee) (*types.MsgRegisterCounterpartyPayeeResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k Keeper) RegisterCounterpartyPayee(ctx context.Context, msg *types.MsgRegisterCounterpartyPayee) (*types.MsgRegisterCounterpartyPayeeResponse, error) {
// only register counterparty payee if the channel exists and is fee enabled
if _, found := k.channelKeeper.GetChannel(ctx, msg.PortId, msg.ChannelId); !found {
return nil, channeltypes.ErrChannelNotFound
@@ -68,18 +66,18 @@ func (k Keeper) RegisterCounterpartyPayee(goCtx context.Context, msg *types.MsgR
k.SetCounterpartyPayeeAddress(ctx, msg.Relayer, msg.CounterpartyPayee, msg.ChannelId)
- k.Logger(ctx).Info("registering counterparty payee for relayer", "relayer", msg.Relayer, "counterparty payee", msg.CounterpartyPayee, "channel", msg.ChannelId)
+ k.Logger.Info("registering counterparty payee for relayer", "relayer", msg.Relayer, "counterparty payee", msg.CounterpartyPayee, "channel", msg.ChannelId)
- emitRegisterCounterpartyPayeeEvent(ctx, msg.Relayer, msg.CounterpartyPayee, msg.ChannelId)
+ if err := k.emitRegisterCounterpartyPayeeEvent(ctx, msg.Relayer, msg.CounterpartyPayee, msg.ChannelId); err != nil {
+ return nil, err
+ }
return &types.MsgRegisterCounterpartyPayeeResponse{}, nil
}
// PayPacketFee defines a rpc handler method for MsgPayPacketFee
// PayPacketFee is an open callback that may be called by any module/user that wishes to escrow funds in order to relay the packet with the next sequence
-func (k Keeper) PayPacketFee(goCtx context.Context, msg *types.MsgPayPacketFee) (*types.MsgPayPacketFeeResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k Keeper) PayPacketFee(ctx context.Context, msg *types.MsgPayPacketFee) (*types.MsgPayPacketFeeResponse, error) {
if !k.IsFeeEnabled(ctx, msg.SourcePortId, msg.SourceChannelId) {
// users may not escrow fees on this channel. Must send packets without a fee message
return nil, types.ErrFeeNotEnabled
@@ -122,9 +120,7 @@ func (k Keeper) PayPacketFee(goCtx context.Context, msg *types.MsgPayPacketFee)
// PayPacketFeeAsync is an open callback that may be called by any module/user that wishes to escrow funds in order to
// incentivize the relaying of a known packet. Only packets which have been sent and have not gone through the
// packet life cycle may be incentivized.
-func (k Keeper) PayPacketFeeAsync(goCtx context.Context, msg *types.MsgPayPacketFeeAsync) (*types.MsgPayPacketFeeAsyncResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k Keeper) PayPacketFeeAsync(ctx context.Context, msg *types.MsgPayPacketFeeAsync) (*types.MsgPayPacketFeeAsyncResponse, error) {
if !k.IsFeeEnabled(ctx, msg.PacketId.PortId, msg.PacketId.ChannelId) {
// users may not escrow fees on this channel. Must send packets without a fee message
return nil, types.ErrFeeNotEnabled
diff --git a/modules/apps/29-fee/keeper/msg_server_test.go b/modules/apps/29-fee/keeper/msg_server_test.go
index c2c629e95cc..dd9ca1dee4b 100644
--- a/modules/apps/29-fee/keeper/msg_server_test.go
+++ b/modules/apps/29-fee/keeper/msg_server_test.go
@@ -5,10 +5,10 @@ import (
"fmt"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
@@ -56,7 +56,7 @@ func (suite *KeeperTestSuite) TestRegisterPayee() {
{
"payee is a blocked address",
func() {
- msg.Payee = suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(transfertypes.ModuleName).String()
+ msg.Payee = suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(transfertypes.ModuleName).String()
},
ibcerrors.ErrUnauthorized,
},
@@ -248,7 +248,7 @@ func (suite *KeeperTestSuite) TestPayPacketFee() {
"refund account is module account",
func() {
suite.chainA.GetSimApp().BankKeeper.SendCoinsFromAccountToModule(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), ibcmock.ModuleName, fee.Total()) //nolint:errcheck // ignore error for testing
- msg.Signer = suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(ibcmock.ModuleName).String()
+ msg.Signer = suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(ibcmock.ModuleName).String()
expPacketFee := types.NewPacketFee(fee, msg.Signer, nil)
expFeesInEscrow = []types.PacketFee{expPacketFee}
},
@@ -298,7 +298,7 @@ func (suite *KeeperTestSuite) TestPayPacketFee() {
{
"refund account is a blocked address",
func() {
- blockedAddr := suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
+ blockedAddr := suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
msg.Signer = blockedAddr.String()
},
ibcerrors.ErrUnauthorized,
@@ -528,7 +528,7 @@ func (suite *KeeperTestSuite) TestPayPacketFeeAsync() {
{
"refund account is a blocked address",
func() {
- blockedAddr := suite.chainA.GetSimApp().AccountKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
+ blockedAddr := suite.chainA.GetSimApp().AuthKeeper.GetModuleAccount(suite.chainA.GetContext(), transfertypes.ModuleName).GetAddress()
msg.PacketFee.RefundAddress = blockedAddr.String()
},
ibcerrors.ErrUnauthorized,
diff --git a/modules/apps/29-fee/module.go b/modules/apps/29-fee/module.go
index 05d2f1cd0c2..058078cdc11 100644
--- a/modules/apps/29-fee/module.go
+++ b/modules/apps/29-fee/module.go
@@ -9,11 +9,10 @@ import (
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
- sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
@@ -23,21 +22,31 @@ import (
)
var (
- _ module.AppModule = (*AppModule)(nil)
- _ module.AppModuleBasic = (*AppModuleBasic)(nil)
- _ module.AppModuleSimulation = (*AppModule)(nil)
- _ module.HasGenesis = (*AppModule)(nil)
- _ module.HasName = (*AppModule)(nil)
- _ module.HasConsensusVersion = (*AppModule)(nil)
- _ module.HasServices = (*AppModule)(nil)
- _ appmodule.AppModule = (*AppModule)(nil)
+ _ module.AppModule = (*AppModule)(nil)
+ _ module.HasAminoCodec = AppModule{}
+ _ module.AppModuleSimulation = (*AppModule)(nil)
+ _ module.HasGenesis = (*AppModule)(nil)
+ _ appmodule.HasConsensusVersion = (*AppModule)(nil)
+ _ module.HasServices = (*AppModule)(nil)
+ _ appmodule.AppModule = (*AppModule)(nil)
)
-// AppModuleBasic is the 29-fee AppModuleBasic
-type AppModuleBasic struct{}
+// AppModule represents the AppModule for this module
+type AppModule struct {
+ cdc codec.Codec
+ keeper keeper.Keeper
+}
+
+// NewAppModule creates a new 29-fee module
+func NewAppModule(cdc codec.Codec, k keeper.Keeper) AppModule {
+ return AppModule{
+ cdc: cdc,
+ keeper: k,
+ }
+}
// Name implements AppModuleBasic interface
-func (AppModuleBasic) Name() string {
+func (AppModule) Name() string {
return types.ModuleName
}
@@ -47,26 +56,26 @@ func (AppModule) IsOnePerModuleType() {}
// IsAppModule implements the appmodule.AppModule interface.
func (AppModule) IsAppModule() {}
-// RegisterLegacyAminoCodec implements AppModuleBasic interface
-func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
+// RegisterLegacyAminoCodec implements AppModule interface
+func (AppModule) RegisterLegacyAminoCodec(cdc coreregistry.AminoRegistrar) {
types.RegisterLegacyAminoCodec(cdc)
}
// RegisterInterfaces registers module concrete types into protobuf Any.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func (AppModule) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
types.RegisterInterfaces(registry)
}
// DefaultGenesis returns default genesis state as raw bytes for the ibc
// 29-fee module.
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
- return cdc.MustMarshalJSON(types.DefaultGenesisState())
+func (am AppModule) DefaultGenesis() json.RawMessage {
+ return am.cdc.MustMarshalJSON(types.DefaultGenesisState())
}
// ValidateGenesis performs genesis state validation for the 29-fee module.
-func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {
+func (am AppModule) ValidateGenesis(bz json.RawMessage) error {
var gs types.GenesisState
- if err := cdc.UnmarshalJSON(bz, &gs); err != nil {
+ if err := am.cdc.UnmarshalJSON(bz, &gs); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err)
}
@@ -74,36 +83,23 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod
}
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for ics29 fee module.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
+func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx))
if err != nil {
panic(err)
}
}
-// GetTxCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+// GetTxCmd implements AppModule interface
+func (AppModule) GetTxCmd() *cobra.Command {
return cli.NewTxCmd()
}
-// GetQueryCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+// GetQueryCmd implements AppModule interface
+func (AppModule) GetQueryCmd() *cobra.Command {
return cli.GetQueryCmd()
}
-// AppModule represents the AppModule for this module
-type AppModule struct {
- AppModuleBasic
- keeper keeper.Keeper
-}
-
-// NewAppModule creates a new 29-fee module
-func NewAppModule(k keeper.Keeper) AppModule {
- return AppModule{
- keeper: k,
- }
-}
-
// RegisterServices registers module services.
func (am AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterMsgServer(cfg.MsgServer(), am.keeper)
@@ -117,17 +113,18 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
// InitGenesis performs genesis initialization for the ibc-29-fee module. It returns
// no validator updates.
-func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) {
+func (am AppModule) InitGenesis(ctx context.Context, data json.RawMessage) error {
var genesisState types.GenesisState
- cdc.MustUnmarshalJSON(data, &genesisState)
+ am.cdc.MustUnmarshalJSON(data, &genesisState)
am.keeper.InitGenesis(ctx, genesisState)
+ return nil
}
// ExportGenesis returns the exported genesis state as raw bytes for the ibc-29-fee
// module.
-func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
+func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
gs := am.keeper.ExportGenesis(ctx)
- return cdc.MustMarshalJSON(gs)
+ return am.cdc.MarshalJSON(gs)
}
// ConsensusVersion implements AppModule/ConsensusVersion.
diff --git a/modules/apps/29-fee/transfer_test.go b/modules/apps/29-fee/transfer_test.go
index 72284263714..a743d2f718f 100644
--- a/modules/apps/29-fee/transfer_test.go
+++ b/modules/apps/29-fee/transfer_test.go
@@ -139,8 +139,7 @@ func (suite *FeeTestSuite) TestTransferFeeUpgrade() {
err = path.EndpointA.ChanUpgradeOpen()
suite.Require().NoError(err)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
channelA := path.EndpointA.GetChannel()
suite.Require().Equal(upgradeVersion, channelA.Version)
@@ -162,7 +161,7 @@ func (suite *FeeTestSuite) TestTransferFeeUpgrade() {
res, err := suite.chainA.SendMsgs(msgs...)
suite.Require().NoError(err) // message committed
- feeEscrowAddr := suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(types.ModuleName)
+ feeEscrowAddr := suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(types.ModuleName)
escrowBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), feeEscrowAddr, sdk.DefaultBondDenom)
suite.Require().Equal(escrowBalance.Amount, fee.Total().AmountOf(sdk.DefaultBondDenom))
diff --git a/modules/apps/29-fee/types/codec.go b/modules/apps/29-fee/types/codec.go
index 4ac59323f1e..2648cd0a8f4 100644
--- a/modules/apps/29-fee/types/codec.go
+++ b/modules/apps/29-fee/types/codec.go
@@ -1,6 +1,8 @@
package types
import (
+ coreregistry "cosmossdk.io/core/registry"
+
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/legacy"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
@@ -10,7 +12,7 @@ import (
// RegisterLegacyAminoCodec registers the necessary x/ibc 29-fee interfaces and concrete types
// on the provided LegacyAmino codec. These types are used for Amino JSON serialization.
-func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
+func RegisterLegacyAminoCodec(cdc coreregistry.AminoRegistrar) {
legacy.RegisterAminoMsg(cdc, &MsgPayPacketFee{}, "cosmos-sdk/MsgPayPacketFee")
legacy.RegisterAminoMsg(cdc, &MsgPayPacketFeeAsync{}, "cosmos-sdk/MsgPayPacketFeeAsync")
legacy.RegisterAminoMsg(cdc, &MsgRegisterPayee{}, "cosmos-sdk/MsgRegisterPayee")
@@ -19,7 +21,7 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
// RegisterInterfaces register the 29-fee module interfaces to protobuf
// Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*sdk.Msg)(nil),
&MsgPayPacketFee{},
diff --git a/modules/apps/29-fee/types/codec_test.go b/modules/apps/29-fee/types/codec_test.go
index 56666abab64..a2b1f492283 100644
--- a/modules/apps/29-fee/types/codec_test.go
+++ b/modules/apps/29-fee/types/codec_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -51,7 +52,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(fee.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, fee.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expErr == nil {
diff --git a/modules/apps/29-fee/types/errors.go b/modules/apps/29-fee/types/errors.go
index 22dd35000a2..f38dedbfa2b 100644
--- a/modules/apps/29-fee/types/errors.go
+++ b/modules/apps/29-fee/types/errors.go
@@ -17,4 +17,5 @@ var (
ErrRelayerNotFoundForAsyncAck = errorsmod.Register(ModuleName, 10, "relayer address must be stored for async WriteAcknowledgement")
ErrFeeModuleLocked = errorsmod.Register(ModuleName, 11, "the fee module is currently locked, a severe bug has been detected")
ErrUnsupportedAction = errorsmod.Register(ModuleName, 12, "unsupported action")
+ ErrRefundDistributionFailed = errorsmod.Register(ModuleName, 13, "refund distribution failed")
)
diff --git a/modules/apps/29-fee/types/expected_keepers.go b/modules/apps/29-fee/types/expected_keepers.go
index 0285a2bc683..dab53d2ace2 100644
--- a/modules/apps/29-fee/types/expected_keepers.go
+++ b/modules/apps/29-fee/types/expected_keepers.go
@@ -8,8 +8,8 @@ import (
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
)
-// AccountKeeper defines the contract required for account APIs.
-type AccountKeeper interface {
+// AuthKeeper defines the contract required for the x/auth keeper.
+type AuthKeeper interface {
GetModuleAddress(name string) sdk.AccAddress
GetAccount(context.Context, sdk.AccAddress) sdk.AccountI
}
diff --git a/modules/apps/29-fee/types/keys.go b/modules/apps/29-fee/types/keys.go
index aba4b8c5de9..4b81f00fa8e 100644
--- a/modules/apps/29-fee/types/keys.go
+++ b/modules/apps/29-fee/types/keys.go
@@ -97,7 +97,7 @@ func KeyCounterpartyPayee(address, channelID string) []byte {
}
// ParseKeyCounterpartyPayee returns the registered relayer address and channelID used to store the counterparty payee address
-func ParseKeyCounterpartyPayee(key string) (address string, channelID string, error error) {
+func ParseKeyCounterpartyPayee(key string) (address string, channelID string, err error) {
keySplit := strings.Split(key, "/")
if len(keySplit) != 3 {
return "", "", errorsmod.Wrapf(
diff --git a/modules/apps/29-fee/types/msgs_test.go b/modules/apps/29-fee/types/msgs_test.go
index 7699b94e990..e097208fbfc 100644
--- a/modules/apps/29-fee/types/msgs_test.go
+++ b/modules/apps/29-fee/types/msgs_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -96,8 +97,8 @@ func TestRegisterPayeeGetSigners(t *testing.T) {
accAddress := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
msg := types.NewMsgRegisterPayee(ibctesting.MockPort, ibctesting.FirstChannelID, accAddress.String(), defaultAccAddress)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(modulefee.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, modulefee.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
require.NoError(t, err)
require.Equal(t, accAddress.Bytes(), signers[0])
}
@@ -184,8 +185,8 @@ func TestRegisterCountepartyAddressGetSigners(t *testing.T) {
accAddress := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
msg := types.NewMsgRegisterCounterpartyPayee(ibctesting.MockPort, ibctesting.FirstChannelID, accAddress.String(), defaultAccAddress)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(modulefee.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, modulefee.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
require.NoError(t, err)
require.Equal(t, accAddress.Bytes(), signers[0])
}
@@ -263,8 +264,8 @@ func TestPayPacketFeeGetSigners(t *testing.T) {
fee := types.NewFee(defaultRecvFee, defaultAckFee, defaultTimeoutFee)
msg := types.NewMsgPayPacketFee(fee, ibctesting.MockFeePort, ibctesting.FirstChannelID, refundAddr.String(), nil)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(modulefee.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, modulefee.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
require.NoError(t, err)
require.Equal(t, refundAddr.Bytes(), signers[0])
}
@@ -402,8 +403,8 @@ func TestPayPacketFeeAsyncGetSigners(t *testing.T) {
packetFee := types.NewPacketFee(fee, refundAddr.String(), nil)
msg := types.NewMsgPayPacketFeeAsync(packetID, packetFee)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(modulefee.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, modulefee.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
require.NoError(t, err)
require.Equal(t, refundAddr.Bytes(), signers[0])
}
diff --git a/modules/apps/29-fee/types/query.pb.go b/modules/apps/29-fee/types/query.pb.go
index 520b624b4ae..dd727e891e8 100644
--- a/modules/apps/29-fee/types/query.pb.go
+++ b/modules/apps/29-fee/types/query.pb.go
@@ -1195,7 +1195,7 @@ type QueryClient interface {
IncentivizedPackets(ctx context.Context, in *QueryIncentivizedPacketsRequest, opts ...grpc.CallOption) (*QueryIncentivizedPacketsResponse, error)
// IncentivizedPacket returns all packet fees for a packet given its identifier
IncentivizedPacket(ctx context.Context, in *QueryIncentivizedPacketRequest, opts ...grpc.CallOption) (*QueryIncentivizedPacketResponse, error)
- // Gets all incentivized packets for a specific channel
+ // IncentivizedPacketsForChannel retrieves all incentivized packets for a specific channel
IncentivizedPacketsForChannel(ctx context.Context, in *QueryIncentivizedPacketsForChannelRequest, opts ...grpc.CallOption) (*QueryIncentivizedPacketsForChannelResponse, error)
// TotalRecvFees returns the total receive fees for a packet given its identifier
TotalRecvFees(ctx context.Context, in *QueryTotalRecvFeesRequest, opts ...grpc.CallOption) (*QueryTotalRecvFeesResponse, error)
@@ -1317,7 +1317,7 @@ type QueryServer interface {
IncentivizedPackets(context.Context, *QueryIncentivizedPacketsRequest) (*QueryIncentivizedPacketsResponse, error)
// IncentivizedPacket returns all packet fees for a packet given its identifier
IncentivizedPacket(context.Context, *QueryIncentivizedPacketRequest) (*QueryIncentivizedPacketResponse, error)
- // Gets all incentivized packets for a specific channel
+ // IncentivizedPacketsForChannel retrieves all incentivized packets for a specific channel
IncentivizedPacketsForChannel(context.Context, *QueryIncentivizedPacketsForChannelRequest) (*QueryIncentivizedPacketsForChannelResponse, error)
// TotalRecvFees returns the total receive fees for a packet given its identifier
TotalRecvFees(context.Context, *QueryTotalRecvFeesRequest) (*QueryTotalRecvFeesResponse, error)
diff --git a/modules/apps/callbacks/callbacks_test.go b/modules/apps/callbacks/callbacks_test.go
index 83940233ee6..69c77b7ab0b 100644
--- a/modules/apps/callbacks/callbacks_test.go
+++ b/modules/apps/callbacks/callbacks_test.go
@@ -12,12 +12,12 @@ import (
"cosmossdk.io/log"
sdkmath "cosmossdk.io/math"
storetypes "cosmossdk.io/store/types"
+ banktypes "cosmossdk.io/x/bank/types"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/modules/apps/callbacks/testing/simapp"
"github.com/cosmos/ibc-go/modules/apps/callbacks/types"
@@ -40,7 +40,7 @@ func init() {
// SetupTestingApp provides the duplicated simapp which is specific to the callbacks module on chain creation.
func SetupTestingApp() (ibctesting.TestingApp, map[string]json.RawMessage) {
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{})
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.AppOptionsMap{})
return app, app.DefaultGenesis()
}
@@ -112,7 +112,7 @@ func (s *CallbacksTestSuite) SetupICATest() string {
s.path.SetupConnections()
icaOwner := s.chainA.SenderAccount.GetAddress().String()
- // ICAVersion defines a interchain accounts version string
+ // ICAVersion defines an interchain accounts version string
icaVersion := icatypes.NewDefaultMetadataString(s.path.EndpointA.ConnectionID, s.path.EndpointB.ConnectionID)
icaControllerPortID, err := icatypes.NewControllerPortID(icaOwner)
s.Require().NoError(err)
diff --git a/modules/apps/callbacks/go.mod b/modules/apps/callbacks/go.mod
index c07863799b7..3259a730363 100644
--- a/modules/apps/callbacks/go.mod
+++ b/modules/apps/callbacks/go.mod
@@ -1,102 +1,127 @@
module github.com/cosmos/ibc-go/modules/apps/callbacks
-go 1.22.7
-
-toolchain go1.22.8
+go 1.23.4
replace github.com/cosmos/ibc-go/v9 => ../../../
replace github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
require (
+ cosmossdk.io/collections v1.0.0-rc.1
+ cosmossdk.io/core v1.0.0
cosmossdk.io/errors v1.0.1
- cosmossdk.io/log v1.4.1
+ cosmossdk.io/log v1.5.0
cosmossdk.io/math v1.4.0
- cosmossdk.io/store v1.1.1
- cosmossdk.io/x/tx v0.13.6
+ cosmossdk.io/store v1.10.0-rc.1.0.20241218084712-ca559989da43
+ cosmossdk.io/x/accounts v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1
+ cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5
+ cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/bank v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/distribution v0.0.0-20240906090851-36d9b25e8981
+ cosmossdk.io/x/feegrant v0.1.1
+ cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a
+ cosmossdk.io/x/mint v0.0.0-20240909082436-01c0e9ba3581
+ cosmossdk.io/x/params v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190
+ cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/staking v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/tx v1.0.0-alpha.3
cosmossdk.io/x/upgrade v0.1.4
- github.com/cometbft/cometbft v0.38.15
- github.com/cosmos/cosmos-db v1.1.0
- github.com/cosmos/cosmos-sdk v0.50.10
+ github.com/cometbft/cometbft v1.0.0
+ github.com/cometbft/cometbft/api v1.0.0
+ github.com/cosmos/cosmos-db v1.1.1
+ github.com/cosmos/cosmos-sdk v0.53.0
github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/ibc-go/v9 v9.0.0
- github.com/spf13/cast v1.7.0
+ github.com/spf13/cast v1.7.1
github.com/stretchr/testify v1.10.0
)
require (
- cloud.google.com/go v0.115.0 // indirect
- cloud.google.com/go/auth v0.6.0 // indirect
- cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
- cloud.google.com/go/compute/metadata v0.5.0 // indirect
- cloud.google.com/go/iam v1.1.9 // indirect
- cloud.google.com/go/storage v1.41.0 // indirect
- cosmossdk.io/api v0.7.6 // indirect
- cosmossdk.io/collections v0.4.0 // indirect
- cosmossdk.io/core v0.11.1 // indirect
- cosmossdk.io/depinject v1.0.0 // indirect
+ buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 // indirect
+ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.8.1 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.5.2 // indirect
+ cloud.google.com/go/iam v1.1.13 // indirect
+ cloud.google.com/go/storage v1.43.0 // indirect
+ cosmossdk.io/api v0.8.0 // indirect
+ cosmossdk.io/client/v2 v2.0.0-beta.6 // indirect
+ cosmossdk.io/core/testing v0.0.1 // indirect
+ cosmossdk.io/depinject v1.1.0 // indirect
+ cosmossdk.io/schema v1.0.0 // indirect
+ cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000 // indirect
+ cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect
+ cosmossdk.io/x/evidence v0.0.0-00010101000000-000000000000 // indirect
+ cosmossdk.io/x/group v0.0.0-00010101000000-000000000000 // indirect
+ cosmossdk.io/x/nft v0.0.0-00010101000000-000000000000 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/DataDog/datadog-go v4.8.3+incompatible // indirect
- github.com/DataDog/zstd v1.5.5 // indirect
+ github.com/DataDog/zstd v1.5.6 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
- github.com/aws/aws-sdk-go v1.44.224 // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.2.0 // indirect
github.com/bits-and-blooms/bitset v1.13.0 // indirect
- github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
+ github.com/bytedance/sonic v1.12.6 // indirect
+ github.com/bytedance/sonic/loader v0.2.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chzyer/readline v1.5.1 // indirect
- github.com/cockroachdb/apd/v2 v2.0.2 // indirect
+ github.com/cloudwego/base64x v0.1.4 // indirect
+ github.com/cloudwego/iasm v0.2.0 // indirect
+ github.com/cockroachdb/apd/v3 v3.2.1 // indirect
github.com/cockroachdb/errors v1.11.3 // indirect
- github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect
+ github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v1.1.2 // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
- github.com/cometbft/cometbft-db v0.14.1 // indirect
+ github.com/cometbft/cometbft-db v1.0.1 // indirect
github.com/consensys/bavard v0.1.13 // indirect
github.com/consensys/gnark-crypto v0.12.1 // indirect
github.com/cosmos/btcutil v1.0.5 // indirect
github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect
github.com/cosmos/go-bip39 v1.0.0 // indirect
github.com/cosmos/gogogateway v1.2.0 // indirect
- github.com/cosmos/iavl v1.2.0 // indirect
+ github.com/cosmos/iavl v1.3.4 // indirect
github.com/cosmos/ics23/go v0.11.0 // indirect
github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect
- github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 // indirect
+ github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect
github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
github.com/danieljoos/wincred v1.2.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
- github.com/desertbit/timer v1.0.1 // indirect
- github.com/dgraph-io/badger/v4 v4.2.0 // indirect
- github.com/dgraph-io/ristretto v0.1.1 // indirect
+ github.com/dgraph-io/badger/v4 v4.5.0 // indirect
+ github.com/dgraph-io/ristretto/v2 v2.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/dvsekhvalnov/jose2go v1.7.0 // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
github.com/ethereum/go-ethereum v1.14.12 // indirect
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect
- github.com/fatih/color v1.17.0 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/getsentry/sentry-go v0.28.1 // indirect
+ github.com/fsnotify/fsnotify v1.8.0 // indirect
+ github.com/getsentry/sentry-go v0.29.0 // indirect
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
@@ -105,10 +130,10 @@ require (
github.com/google/flatbuffers v24.3.25+incompatible // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/orderedcode v0.0.1 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.5 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
github.com/gorilla/handlers v1.5.2 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
@@ -116,31 +141,31 @@ require (
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-getter v1.7.4 // indirect
+ github.com/hashicorp/go-getter v1.7.6 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-metrics v0.5.3 // indirect
- github.com/hashicorp/go-plugin v1.6.1 // indirect
+ github.com/hashicorp/go-plugin v1.6.2 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
+ github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/golang-lru v1.0.2 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/hashicorp/yamux v0.1.2 // indirect
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
github.com/holiman/uint256 v1.3.1 // indirect
- github.com/huandu/skiplist v1.2.0 // indirect
+ github.com/huandu/skiplist v1.2.1 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
- github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
- github.com/klauspost/compress v1.17.9 // indirect
+ github.com/klauspost/compress v1.17.11 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.9 // indirect
- github.com/linxGnu/grocksdb v1.9.2 // indirect
- github.com/magiconair/properties v1.8.7 // indirect
+ github.com/linxGnu/grocksdb v1.9.3 // indirect
+ github.com/magiconair/properties v1.8.9 // indirect
github.com/manifoldco/promptui v0.9.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -153,16 +178,16 @@ require (
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
github.com/oklog/run v1.1.0 // indirect
- github.com/pelletier/go-toml/v2 v2.2.2 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.60.1 // indirect
+ github.com/prometheus/common v0.61.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
- github.com/rogpeppe/go-internal v1.12.0 // indirect
+ github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
@@ -181,38 +206,72 @@ require (
github.com/tidwall/btree v1.7.0 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
- github.com/ulikunitz/xz v0.5.11 // indirect
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
+ github.com/ulikunitz/xz v0.5.12 // indirect
github.com/zondax/hid v0.9.2 // indirect
github.com/zondax/ledger-go v0.14.3 // indirect
+ gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
+ gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
go.etcd.io/bbolt v1.4.0-alpha.1 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
+ go.opentelemetry.io/otel v1.31.0 // indirect
+ go.opentelemetry.io/otel/metric v1.31.0 // indirect
+ go.opentelemetry.io/otel/trace v1.31.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.28.0 // indirect
- golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
- golang.org/x/net v0.30.0 // indirect
- golang.org/x/oauth2 v0.23.0 // indirect
- golang.org/x/sync v0.8.0 // indirect
- golang.org/x/sys v0.26.0 // indirect
- golang.org/x/term v0.25.0 // indirect
- golang.org/x/text v0.19.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- google.golang.org/api v0.186.0 // indirect
- google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/grpc v1.68.1 // indirect
- google.golang.org/protobuf v1.35.2 // indirect
+ golang.org/x/arch v0.12.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
+ golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
+ golang.org/x/net v0.32.0 // indirect
+ golang.org/x/oauth2 v0.24.0 // indirect
+ golang.org/x/sync v0.10.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/time v0.6.0 // indirect
+ google.golang.org/api v0.192.0 // indirect
+ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
+ google.golang.org/grpc v1.69.2 // indirect
+ google.golang.org/protobuf v1.36.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.1 // indirect
- nhooyr.io/websocket v1.8.11 // indirect
pgregory.net/rapid v1.1.0 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
+
+replace (
+ cosmossdk.io/api => cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608
+ cosmossdk.io/client/v2 => cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608
+ cosmossdk.io/core => cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608
+ cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608
+ cosmossdk.io/x/accounts => cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/lockup => cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/multisig => cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/authz => cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/bank => cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/circuit => cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/consensus => cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/distribution => cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/epochs => cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/evidence => cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/feegrant => cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/gov => cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/group => cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/mint => cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/nft => cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/params => cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/protocolpool => cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/slashing => cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/staking => cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/tx => cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938
+ cosmossdk.io/x/upgrade => cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608
+ github.com/cometbft/cometbft => github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f
+ // pseudo version lower than the latest tag
+ github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b
+)
diff --git a/modules/apps/callbacks/go.sum b/modules/apps/callbacks/go.sum
index 600eb8e2f9a..72c418448a7 100644
--- a/modules/apps/callbacks/go.sum
+++ b/modules/apps/callbacks/go.sum
@@ -1,3 +1,7 @@
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 h1:LBP+N3ehp1hseHYlIIHlU0gMM3aGYDcgx/H//Pk12ko=
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1/go.mod h1:pab5p7+q6IAI+R+Z2MQ+hP7ZV+FP2mcbucv6xs5WFPk=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 h1:5wJBiYyPUS2xpqLJKm7ZEKx1VhesPOXXx5y+JxgVSX4=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1/go.mod h1:VItWFs9dzQsqOin45pYbA4O/SRdqMPDs4XPZBHL+u2w=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -30,8 +34,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
-cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
-cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
@@ -46,10 +50,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby
cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
-cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=
-cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
-cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
-cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
+cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo=
+cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
@@ -72,8 +76,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
-cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
-cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
+cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo=
+cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
@@ -111,12 +115,14 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97
cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
-cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE=
-cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ=
+cloud.google.com/go/iam v1.1.13 h1:7zWBXG9ERbMLrzQBRhFliAV+kjcRToDTgQT3CTwYyv4=
+cloud.google.com/go/iam v1.1.13/go.mod h1:K8mY0uSXwEXS30KrnVb+j54LB/ntfZu1dr+4zFMNbus=
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
+cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk=
+cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4=
cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
@@ -173,8 +179,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
-cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0=
-cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80=
+cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
+cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
@@ -186,26 +192,70 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
-cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY=
-cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38=
-cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s=
-cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0=
-cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA=
-cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0=
-cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050=
-cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608 h1:0266beLan2snXZMeELYMpTVcFjlSgzHhLBKxSuNVZUI=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608 h1:umN3k+AZ91ZjYv3CDiTgFDaWe22w3JxpeJmepUwKXV8=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608/go.mod h1:Xxz5u4rK+ArCsRo9TMSirg6jPMdva6BHv9Db65OkN/Q=
+cosmossdk.io/collections v1.0.0-rc.1 h1:Mzv0YKZJ6aloy4oSnMnyl8b6PtM2dTdDlzRR/079TyM=
+cosmossdk.io/collections v1.0.0-rc.1/go.mod h1:nOgrEpyMFOWBy8QmSbq/T6Tgtm2IyOFvxDRWk+DI97k=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608 h1:w+/cxqYHud1plzCTIvEBtab6RqpgAl2C5Hgn1l4p+oo=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608/go.mod h1:gCTZBT00tI2zTQy65aSolV3aUnQDqpVgz5yOp96LpGg=
+cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
+cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
+cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
+cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
-cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
-cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU=
+cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g=
+cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI=
cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ=
cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk=
-cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y=
-cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=
-cosmossdk.io/x/tx v0.13.6 h1:qCiZJ+yK5MsSdUByjOUrfm3sk7aZk1AuYufX22VLC1M=
-cosmossdk.io/x/tx v0.13.6/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w=
-cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38=
-cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo=
+cosmossdk.io/schema v1.0.0 h1:/diH4XJjpV1JQwuIozwr+A4uFuuwanFdnw2kKeiXwwQ=
+cosmossdk.io/schema v1.0.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608 h1:NaFVgzmO3YFX+l7696SdDTtvJR0MTjjwSe0sX+inAI4=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608/go.mod h1:eZNgZKvZRlDUk8CE3LTDVMAcSM7zLOet2S8fByQkF3s=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608 h1:No84LXBp0kEzJfAqorxrgqzmzqOpHhbs8IK2nBpVQJY=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608/go.mod h1:wADXnci9qeFwOQ09qiyf1uLdI4n/RSSTG8mSM9hmxys=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1 h1:sVAOVQLbdmzLmjnWLhAhIN65HTmSMGBIwU2uTeSCEp0=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1/go.mod h1:52PyilJMRraVwNcG58q4t7OSzSHApqNfJheq+mNB+qw=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608 h1:nMu0DD9qutZ7dzIySxTRnLYvZtockBghVkwBHyuwBLI=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608/go.mod h1:m0eg/A4J5fmXFNGEldQpeTrMr9PFWaVIFjbDYes0j9I=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608 h1:JL+VXHmb8xqwU7ToR2RG0V2BTmE+t1PkJ880xKi46Tc=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608/go.mod h1:huNjmnJuvPXAT5zvK8S29X0u9DpCa3X9ZCUd3bJ8bng=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608 h1:MzRTC+W0Uv40yfFNegDskcisgui9lQdeG9FZxOixATk=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608/go.mod h1:GMLM+m3Il+QTfOrQG08sFJXlKw95UDKPIOYcuSwjbzQ=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608 h1:lbtU7rYltk2axJ5h1DgPamVosuZEeyOAaqYPQpQBH4g=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608/go.mod h1:GN02Rosc2O/vCNBnXqY35vA2hoMmRQeCKd81FuoMzmE=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608 h1:lstvqRuVEDtRxiF9+LM16SpRriq0O+5lMHzsGKheXH4=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608/go.mod h1:ib+kqbNMsj6n7/LvW+qi24/1kp/ApWJpsnCWY5yN6Mk=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608 h1:hYFPPs5WsMWj/1sRpw6Aqmioph3qw5VN76geVxtaWtI=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608/go.mod h1:bG9SiC6YsVOpsKgOd+b+t3Kl4GLb9T6RjhBKesPn+Gg=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608 h1:UZSqhiAi1mKi8DE+OLGMrXSoenSl4PkyQT7xxNfr9Bw=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608/go.mod h1:PLdiJlSC0XveXA3vJ0E4n1NCG78UeHXwEk0razSnEk4=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608 h1:KqJ+F0YVwFlu06gEoWHvGvdC1DYXDL5Rykra61/pY4Q=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608/go.mod h1:YBMj0T87xliEfldeZHC60AqyZoLoy1wJzAAgaaQubBM=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608 h1:iSOOM7vAa0LuJ9xKZ7k34g5uyy9WQyfKbnAPmnf8Abc=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608/go.mod h1:yIgJCAGBnM3sull2qACQP+uMsEoogyNO6OXz82z3tVg=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608 h1:F+w/ofuUDxFyyk6t7kt7cdcBsTa2gA7zuvCEplB871A=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608/go.mod h1:ynGp02hnYhVidQiL9KOKeiZnn0h+PSEJb+XjgKH6+v4=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608 h1:ll6Pk+WoPlusW2uy8HTXupL+mees6mNohS4dfGYJsZ0=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608/go.mod h1:L8fBvuIwBQzABO/cYEOpekmaKlR4ELclrrGNZ6r//sg=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608 h1:t0A/ip5m09OuAY0bvpnfxJhD1/dL44JYNwffy5boqB4=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608/go.mod h1:apbBgC0mKZTbgvW2ACPcNBl0z8HjCp7R9ZBns7F6J2E=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608 h1:bB3FhjvPZfkS3EksYB3YR7muxGk0/rr6U993a7ETHx0=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608/go.mod h1:H1QoaISMz78OyBwXKU4gp8Gmwd1EVWq+Lb9P3BUfXUM=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608 h1:ZD/gSJbfpC2WzXr17xq5UkJBQd/BfBVajzKrieu6zjQ=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608/go.mod h1:btgbNMPZJWZLd03ef2AblrpJ7e9ocpTvA0xUw0hIHew=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608 h1:3rdbR/782gMtQo+1yxH+wuhJKd1jm/4X0pBgQX7pDp4=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608/go.mod h1:xLb6tQ33fgSOmwlMui9UjLzI9xmOclfjG2g+/z4XiUc=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608 h1:+GBTBLH54gKT2dFlUgN/XzawdBG/9U5djPecjr7meas=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608/go.mod h1:BlYhkjtZZdKXQP9mBiVwRbaduXtDKEJHQC3dZ6fZBS0=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608 h1:aycIQRLzdtuI99FkTRo4Y2QerkfKqZRYNN2BPESEc8A=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608/go.mod h1:4Zyt59oTQdaKitlYyz9K7d8Mi32e+K5NliOf9HAj5Wo=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938 h1:kqbOiJpmSBE03Isw7KY27N4oCSaOcG28oaJgCLh9Rhk=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938/go.mod h1:xlJjZV1wxZBTCP+ygZx9pNT/XxsfHDPf1H0VhHaUp5w=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608 h1:80l+duTMRKnszkWXolEs1n+1j4RFYd41mrV24P79vcY=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608/go.mod h1:5GIkumZszCtSzsXcTtL2YP4mIU25Rn3t0y51JWzzUDI=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
@@ -220,16 +270,13 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q=
github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
-github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
-github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
+github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY=
+github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
@@ -238,25 +285,14 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I=
github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
-github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ=
-github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
-github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -264,7 +300,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
-github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E=
github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
@@ -273,14 +308,17 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurT
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c=
github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE=
-github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
-github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
-github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
+github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
+github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
+github.com/bytedance/sonic v1.12.6 h1:/isNmCUF2x3Sh8RAp/4mh4ZGkcFAX/hLrzrK3AvpRzk=
+github.com/bytedance/sonic v1.12.6/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
+github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E=
+github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
-github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
-github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
@@ -300,8 +338,11 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
+github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
+github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
+github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -311,15 +352,14 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
-github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=
+github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k0egdR5V6eALQYq2qbSmukrkgIh/0A=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
@@ -328,29 +368,27 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg=
-github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ=
-github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ=
-github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f h1:rPWKqyc+CeuddICqlqptf+3NPE8exbC9SOGuDPTEN3k=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f/go.mod h1:MqZ5E5jLU1JdP10FSRXhItpm+GdHMbW7Myv3UARLxqg=
+github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE=
+github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk=
+github.com/cometbft/cometbft/api v1.0.0 h1:gGBwvsJi/gnHJEtwYfjPIGs2AKg/Vfa1ZuKCPD1/Ko4=
+github.com/cometbft/cometbft/api v1.0.0/go.mod h1:EkQiqVSu/p2ebrZEnB2z6Re7r8XNe//M7ylR0qEwWm0=
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=
github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=
-github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI=
-github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg=
+github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM=
+github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
-github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM=
-github.com/cosmos/cosmos-sdk v0.50.10/go.mod h1:6Eesrx3ZE7vxBZWpK++30H+Uc7Q4ahQWCL7JKU/LEdU=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b h1:ZaEAV5tsUTnyWEC/Gt8DXHKBANDyx70PVCiPOEVnuHk=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b/go.mod h1:ecJnx3s3oQK5BR7vu25fYSD2/ND9YLGkVpST7uiBkT0=
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE=
@@ -358,22 +396,20 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ
github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
-github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM=
-github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI=
+github.com/cosmos/iavl v1.3.4 h1:A0RUAms7TZ0L6EFrrBIPg4Dy7qD9vvD5lJKUxEXURLM=
+github.com/cosmos/iavl v1.3.4/go.mod h1:T6SfBcyhulVIY2G/ZtAtQm/QiJvsuhIos52V4dWYk88=
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM=
github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 h1:B23RM5CtuNCgvEffdaMXNZxOH3fVOtNEfEVviOs4364=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4/go.mod h1:O7A2Q93QyD0m69LQmnDgOSvHGF5URFBTgY2QsxpdqSs=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 h1:9o9xcAsD+JAJQTnI9sRwdCSz28o3zHqqgKaHBYcXP+s=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9/go.mod h1:gfJFGujP9PIuiyu9AfewNjtVx6cqUh6cNFXjEa3RObo=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs=
github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI=
github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs=
github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps=
@@ -387,34 +423,22 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
-github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo=
-github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE=
-github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs=
-github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak=
-github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
-github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgraph-io/badger/v4 v4.5.0 h1:TeJE3I1pIWLBjYhIYCA1+uxrjWEoJXImFBMEBVSm16g=
+github.com/dgraph-io/badger/v4 v4.5.0/go.mod h1:ysgYmIeG8dS/E8kwxT7xHyc7MkmwNYLRoYnFbr7387A=
+github.com/dgraph-io/ristretto/v2 v2.0.0 h1:l0yiSOtlJvc0otkqyMaDNysg8E9/F/TYZwMbxscNOAQ=
+github.com/dgraph-io/ristretto/v2 v2.0.0/go.mod h1:FVFokF2dRqXyPyeMnK1YDy8Fc6aTe0IKgbcd03CYeEk=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo=
github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -433,25 +457,21 @@ github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
-github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
-github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k=
-github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg=
+github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
+github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/getsentry/sentry-go v0.29.0 h1:YtWluuCFg9OfcqnaujpY918N/AhCCwarIDWOYSBAjCA=
+github.com/getsentry/sentry-go v0.29.0/go.mod h1:jhPesDAL0Q0W2+2YEuVOvdWmVtdsr1+jtBrlDEVWwLY=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -459,7 +479,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU=
github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
@@ -471,43 +490,29 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
-github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
-github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -543,7 +548,6 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
@@ -599,10 +603,9 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -621,42 +624,28 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
-github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
-github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
-github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0=
-github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
+github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4=
+github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -664,24 +653,17 @@ github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJ
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE=
github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI=
-github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0=
+github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog=
+github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
+github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
@@ -690,12 +672,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8=
+github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns=
github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU=
github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=
github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4=
@@ -707,55 +685,42 @@ github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
-github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
-github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
-github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
+github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w=
+github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=
-github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
-github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=
-github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
+github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
+github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
+github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -768,16 +733,12 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
-github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/linxGnu/grocksdb v1.9.2 h1:O3mzvO0wuzQ9mtlHbDrShixyVjVbmuqTjFrzlf43wZ8=
-github.com/linxGnu/grocksdb v1.9.2/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
-github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
-github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik=
+github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
+github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
+github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -785,7 +746,6 @@ github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@@ -793,25 +753,16 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
@@ -828,69 +779,40 @@ github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ib
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
-github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s=
-github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q=
-github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
+github.com/onsi/gomega v1.28.1 h1:MijcGUbfYuznzK/5R4CPNoUP/9Xvuo20sXfEm6XxoTA=
+github.com/onsi/gomega v1.28.1/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
-github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
+github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
+github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss=
github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
-github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
-github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
-github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
-github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
-github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
-github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
+github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
+github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -898,103 +820,70 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
-github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc=
-github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
+github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ=
+github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
-github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
-github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
-github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
+github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -1011,8 +900,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
@@ -1029,19 +916,14 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
-github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
-github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
-github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
+github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -1054,12 +936,12 @@ github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=
github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I=
go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4=
go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -1069,45 +951,41 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
+go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
+go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
+go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
+go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
+go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
+go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
+go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
+go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
+go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
+go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
+go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
+golang.org/x/arch v0.12.0 h1:UsYJhbzPYGsT0HbEdmYcqtCv8UNGvnaL561NnIUvaKg=
+golang.org/x/arch v0.12.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
-golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1118,9 +996,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY=
-golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1150,12 +1027,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -1166,7 +1039,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1174,7 +1046,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
@@ -1193,7 +1064,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
@@ -1206,8 +1076,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
-golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
+golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1233,8 +1103,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
-golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
-golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
+golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1249,14 +1119,11 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
-golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1268,17 +1135,13 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1288,14 +1151,11 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1317,7 +1177,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1341,20 +1200,19 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
-golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
-golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1365,16 +1223,13 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
-golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
-golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
+golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1382,7 +1237,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@@ -1392,8 +1246,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1402,7 +1254,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1443,9 +1294,6 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1494,10 +1342,9 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
-google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=
-google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=
+google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0=
+google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
@@ -1510,7 +1357,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
@@ -1542,7 +1388,6 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -1610,21 +1455,16 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 h1:fVoAXEKA4+yufmbdVYv+SE73+cPZbbbe8paLsHfkK+U=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53/go.mod h1:riSXTwQ4+nqmPGtobMFyW5FqVAmIs0St6VPp4Ug7CE4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
@@ -1634,7 +1474,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
@@ -1657,8 +1496,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0=
-google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
+google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
+google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1675,8 +1514,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
-google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1684,20 +1523,15 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -1713,7 +1547,6 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1721,9 +1554,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
-nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
-nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
@@ -1731,7 +1562,5 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/modules/apps/callbacks/ibc_middleware_test.go b/modules/apps/callbacks/ibc_middleware_test.go
index be91d422ad5..00cd58bc20a 100644
--- a/modules/apps/callbacks/ibc_middleware_test.go
+++ b/modules/apps/callbacks/ibc_middleware_test.go
@@ -71,8 +71,7 @@ func (s *CallbacksTestSuite) TestNewIBCMiddleware() {
for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
s.Require().NotPanics(tc.instantiateFn, "unexpected panic: NewIBCMiddleware")
} else {
s.Require().PanicsWithError(tc.expError.Error(), tc.instantiateFn, "expected panic with error: ", tc.expError.Error())
@@ -263,7 +262,7 @@ func (s *CallbacksTestSuite) TestOnAcknowledgementPacket() {
nil,
},
{
- "failure: underlying app OnAcknolwedgePacket fails",
+ "failure: underlying app OnAcknowledgePacket fails",
func() {
ack = []byte("invalid ack")
},
diff --git a/modules/apps/callbacks/ica_test.go b/modules/apps/callbacks/ica_test.go
index ecd669d933b..35fd70f2c7c 100644
--- a/modules/apps/callbacks/ica_test.go
+++ b/modules/apps/callbacks/ica_test.go
@@ -7,9 +7,9 @@ import (
"github.com/cosmos/gogoproto/proto"
sdkmath "cosmossdk.io/math"
+ stakingtypes "cosmossdk.io/x/staking/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/cosmos/ibc-go/modules/apps/callbacks/testing/simapp"
"github.com/cosmos/ibc-go/modules/apps/callbacks/types"
diff --git a/modules/apps/callbacks/testing/simapp/README.md b/modules/apps/callbacks/testing/simapp/README.md
index 7ee00030c45..f485bea2171 100644
--- a/modules/apps/callbacks/testing/simapp/README.md
+++ b/modules/apps/callbacks/testing/simapp/README.md
@@ -3,5 +3,3 @@
This testing directory is a duplicate of the ibc-go testing directory.
It is only here as a way of creating a separate SimApp binary to avoid introducing a dependency on the callbacks
module from within ibc-go.
-
-The simapp can be built with the workflow found [here](../../../../../.github/workflows/build-callbacks-simd-image-from-tag.yml).
diff --git a/modules/apps/callbacks/testing/simapp/ante_handler.go b/modules/apps/callbacks/testing/simapp/ante_handler.go
index f1c4cb8207a..249d4fa5d3d 100644
--- a/modules/apps/callbacks/testing/simapp/ante_handler.go
+++ b/modules/apps/callbacks/testing/simapp/ante_handler.go
@@ -33,18 +33,15 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
}
anteDecorators := []sdk.AnteDecorator{
- ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
+ ante.NewSetUpContextDecorator(options.Environment, options.ConsensusKeeper), // outermost AnteDecorator. SetUpContext must be called first
ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker),
- ante.NewValidateBasicDecorator(),
- ante.NewTxTimeoutHeightDecorator(),
+ ante.NewValidateBasicDecorator(options.Environment),
+ ante.NewTxTimeoutHeightDecorator(options.Environment),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker),
- ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators
ante.NewValidateSigCountDecorator(options.AccountKeeper),
- ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
- ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
- ante.NewIncrementSequenceDecorator(options.AccountKeeper),
+ ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler, options.SigGasConsumer, options.AccountAbstractionKeeper),
ibcante.NewRedundantRelayDecorator(options.IBCKeeper),
}
diff --git a/modules/apps/callbacks/testing/simapp/app.go b/modules/apps/callbacks/testing/simapp/app.go
index 35484d4313f..69dba479e1e 100644
--- a/modules/apps/callbacks/testing/simapp/app.go
+++ b/modules/apps/callbacks/testing/simapp/app.go
@@ -11,8 +11,44 @@ import (
"github.com/cosmos/gogoproto/proto"
"github.com/spf13/cast"
+ coreaddress "cosmossdk.io/core/address"
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
+ "cosmossdk.io/x/accounts"
+ "cosmossdk.io/x/accounts/accountstd"
+ baseaccount "cosmossdk.io/x/accounts/defaults/base"
+ "cosmossdk.io/x/accounts/defaults/lockup"
+ "cosmossdk.io/x/accounts/defaults/multisig"
+ "cosmossdk.io/x/bank"
+ bankkeeper "cosmossdk.io/x/bank/keeper"
+ banktypes "cosmossdk.io/x/bank/types"
+ "cosmossdk.io/x/consensus"
+ consensusparamkeeper "cosmossdk.io/x/consensus/keeper"
+ consensusparamtypes "cosmossdk.io/x/consensus/types"
+ distr "cosmossdk.io/x/distribution"
+ distrkeeper "cosmossdk.io/x/distribution/keeper"
+ distrtypes "cosmossdk.io/x/distribution/types"
+ "cosmossdk.io/x/feegrant"
+ feegrantkeeper "cosmossdk.io/x/feegrant/keeper"
+ feegrantmodule "cosmossdk.io/x/feegrant/module"
+ "cosmossdk.io/x/gov"
+ govkeeper "cosmossdk.io/x/gov/keeper"
+ govtypes "cosmossdk.io/x/gov/types"
+ "cosmossdk.io/x/mint"
+ mintkeeper "cosmossdk.io/x/mint/keeper"
+ minttypes "cosmossdk.io/x/mint/types"
+ "cosmossdk.io/x/params"
+ paramskeeper "cosmossdk.io/x/params/keeper"
+ paramstypes "cosmossdk.io/x/params/types"
+ poolkeeper "cosmossdk.io/x/protocolpool/keeper"
+ pooltypes "cosmossdk.io/x/protocolpool/types"
+ "cosmossdk.io/x/slashing"
+ slashingkeeper "cosmossdk.io/x/slashing/keeper"
+ slashingtypes "cosmossdk.io/x/slashing/types"
+ "cosmossdk.io/x/staking"
+ stakingkeeper "cosmossdk.io/x/staking/keeper"
+ stakingtypes "cosmossdk.io/x/staking/types"
+ txdecode "cosmossdk.io/x/tx/decode"
"cosmossdk.io/x/tx/signing"
"cosmossdk.io/x/upgrade"
upgradekeeper "cosmossdk.io/x/upgrade/keeper"
@@ -47,36 +83,12 @@ import (
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
- "github.com/cosmos/cosmos-sdk/x/bank"
- bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- "github.com/cosmos/cosmos-sdk/x/consensus"
- consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
- consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
- distr "github.com/cosmos/cosmos-sdk/x/distribution"
- distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
- distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
- "github.com/cosmos/cosmos-sdk/x/gov"
- govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
- govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- "github.com/cosmos/cosmos-sdk/x/mint"
- mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
- "github.com/cosmos/cosmos-sdk/x/params"
- paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
- paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
- paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
- "github.com/cosmos/cosmos-sdk/x/slashing"
- slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- "github.com/cosmos/cosmos-sdk/x/staking"
- stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
abci "github.com/cometbft/cometbft/abci/types"
+ cmtcrypto "github.com/cometbft/cometbft/crypto"
+ cmted25519 "github.com/cometbft/cometbft/crypto/ed25519"
ibccallbacks "github.com/cosmos/ibc-go/modules/apps/callbacks"
ica "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts"
@@ -100,7 +112,6 @@ import (
solomachine "github.com/cosmos/ibc-go/v9/modules/light-clients/06-solomachine"
ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint"
ibcmock "github.com/cosmos/ibc-go/v9/testing/mock"
- ibctestingtypes "github.com/cosmos/ibc-go/v9/testing/types"
)
const appName = "SimApp"
@@ -116,28 +127,29 @@ var (
// module account permissions
maccPerms = map[string][]string{
- authtypes.FeeCollectorName: nil,
- distrtypes.ModuleName: nil,
- minttypes.ModuleName: {authtypes.Minter},
- stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
- stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
- govtypes.ModuleName: {authtypes.Burner},
- ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
- ibcfeetypes.ModuleName: nil,
- icatypes.ModuleName: nil,
- ibcmock.ModuleName: nil,
+ authtypes.FeeCollectorName: nil,
+ distrtypes.ModuleName: nil,
+ pooltypes.ModuleName: nil,
+ pooltypes.StreamAccount: nil,
+ pooltypes.ProtocolPoolDistrAccount: nil,
+ minttypes.ModuleName: {authtypes.Minter},
+ stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
+ stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
+ govtypes.ModuleName: {authtypes.Burner},
+ ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
+ ibcfeetypes.ModuleName: nil,
+ icatypes.ModuleName: nil,
+ ibcmock.ModuleName: nil,
}
)
-var (
- _ runtime.AppI = (*SimApp)(nil)
- _ servertypes.Application = (*SimApp)(nil)
-)
+var _ servertypes.Application = (*SimApp)(nil)
// SimApp extends an ABCI application, but with most of its parameters exported.
// They are exported for convenience in creating helper functions.
type SimApp struct {
*baseapp.BaseApp
+ logger log.Logger
legacyAmino *codec.LegacyAmino
appCodec codec.Codec
txConfig client.TxConfig
@@ -149,15 +161,19 @@ type SimApp struct {
memKeys map[string]*storetypes.MemoryStoreKey
// keepers
- AccountKeeper authkeeper.AccountKeeper
- BankKeeper bankkeeper.Keeper
- StakingKeeper *stakingkeeper.Keeper
- SlashingKeeper slashingkeeper.Keeper
- MintKeeper mintkeeper.Keeper
- DistrKeeper distrkeeper.Keeper
- GovKeeper govkeeper.Keeper
- UpgradeKeeper *upgradekeeper.Keeper
- ParamsKeeper paramskeeper.Keeper
+ AccountsKeeper accounts.Keeper
+ AuthKeeper authkeeper.AccountKeeper
+ BankKeeper bankkeeper.BaseKeeper
+ FeeGrantKeeper feegrantkeeper.Keeper
+ StakingKeeper *stakingkeeper.Keeper
+ SlashingKeeper slashingkeeper.Keeper
+ MintKeeper *mintkeeper.Keeper
+ DistrKeeper distrkeeper.Keeper
+ PoolKeeper poolkeeper.Keeper
+ GovKeeper govkeeper.Keeper
+ UpgradeKeeper *upgradekeeper.Keeper
+ ParamsKeeper paramskeeper.Keeper
+
IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
IBCFeeKeeper ibcfeekeeper.Keeper
ICAControllerKeeper icacontrollerkeeper.Keeper
@@ -174,8 +190,7 @@ type SimApp struct {
FeeMockModule ibcmock.IBCModule
// the module manager
- ModuleManager *module.Manager
- BasicModuleManager module.BasicManager
+ ModuleManager *module.Manager
// simulation manager
simulationManager *module.SimulationManager
@@ -202,20 +217,36 @@ func NewSimApp(
appOpts servertypes.AppOptions,
baseAppOptions ...func(*baseapp.BaseApp),
) *SimApp {
- interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
+ interfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
ProtoFiles: proto.HybridResolver,
SigningOptions: signing.Options{
- AddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(),
- },
- ValidatorAddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(),
- },
+ AddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
+ ValidatorAddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
},
})
+ if err != nil {
+ panic(err)
+ }
appCodec := codec.NewProtoCodec(interfaceRegistry)
legacyAmino := codec.NewLegacyAmino()
- txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes)
+ signingCtx := interfaceRegistry.SigningContext()
+ txDecoder, err := txdecode.NewDecoder(txdecode.Options{
+ SigningContext: signingCtx,
+ ProtoCodec: appCodec,
+ })
+ if err != nil {
+ panic(err)
+ }
+ txConfig := authtx.NewTxConfig(appCodec, signingCtx.AddressCodec(), signingCtx.ValidatorAddressCodec(), authtx.DefaultSignModes)
+
+ govModuleAddr, err := signingCtx.AddressCodec().BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ panic(err)
+ }
+
+ if err := signingCtx.Validate(); err != nil {
+ panic(err)
+ }
std.RegisterLegacyAminoCodec(legacyAmino)
std.RegisterInterfaces(interfaceRegistry)
@@ -253,9 +284,9 @@ func NewSimApp(
bApp.SetTxEncoder(txConfig.TxEncoder())
keys := storetypes.NewKVStoreKeys(
- authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
- minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
- govtypes.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey,
+ accounts.StoreKey, authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
+ minttypes.StoreKey, distrtypes.StoreKey, pooltypes.StoreKey, slashingtypes.StoreKey,
+ feegrant.StoreKey, govtypes.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey,
ibctransfertypes.StoreKey, icacontrollertypes.StoreKey, icahosttypes.StoreKey,
ibcfeetypes.StoreKey, consensusparamtypes.StoreKey,
)
@@ -270,6 +301,7 @@ func NewSimApp(
app := &SimApp{
BaseApp: bApp,
+ logger: logger,
legacyAmino: legacyAmino,
appCodec: appCodec,
txConfig: txConfig,
@@ -278,35 +310,82 @@ func NewSimApp(
tkeys: tkeys,
memKeys: memKeys,
}
+ cometService := runtime.NewContextAwareCometInfoService()
app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey])
// set the BaseApp's parameter store
- app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), runtime.EventService{})
+ app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), logger.With(log.ModuleKey, "x/consensus")), govModuleAddr)
bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore)
// SDK module keepers
// add keepers
- app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.Bech32MainPrefix), sdk.Bech32MainPrefix, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ accountsKeeper, err := accounts.NewKeeper(
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[accounts.StoreKey]), logger.With(log.ModuleKey, "x/accounts"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ signingCtx.AddressCodec(),
+ appCodec.InterfaceRegistry(),
+ txDecoder,
+ // Lockup account
+ accountstd.AddAccount(lockup.CONTINUOUS_LOCKING_ACCOUNT, lockup.NewContinuousLockingAccount),
+ accountstd.AddAccount(lockup.PERIODIC_LOCKING_ACCOUNT, lockup.NewPeriodicLockingAccount),
+ accountstd.AddAccount(lockup.DELAYED_LOCKING_ACCOUNT, lockup.NewDelayedLockingAccount),
+ accountstd.AddAccount(lockup.PERMANENT_LOCKING_ACCOUNT, lockup.NewPermanentLockingAccount),
+ accountstd.AddAccount("multisig", multisig.NewAccount),
+ // PRODUCTION: add
+ baseaccount.NewAccount("base", txConfig.SignModeHandler(), baseaccount.WithSecp256K1PubKey()),
+ )
+ if err != nil {
+ panic(err)
+ }
+
+ app.AccountsKeeper = accountsKeeper
+
+ app.AuthKeeper = authkeeper.NewAccountKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), logger.With(log.ModuleKey, "x/auth")), appCodec, authtypes.ProtoBaseAccount, accountsKeeper, maccPerms, signingCtx.AddressCodec(), sdk.Bech32MainPrefix, govModuleAddr)
+
+ blockedAddrs, err := BlockedAddresses(signingCtx.AddressCodec())
+ if err != nil {
+ panic(err)
+ }
app.BankKeeper = bankkeeper.NewBaseKeeper(
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), logger.With(log.ModuleKey, "x/bank")),
appCodec,
- runtime.NewKVStoreService(keys[banktypes.StoreKey]),
- app.AccountKeeper,
- BlockedAddresses(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- logger,
+ app.AuthKeeper,
+ blockedAddrs,
+ govModuleAddr,
)
+
app.StakingKeeper = stakingkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr), authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ appCodec,
+ runtime.NewEnvironment(
+ runtime.NewKVStoreService(keys[stakingtypes.StoreKey]),
+ logger.With(log.ModuleKey, "x/staking"),
+ runtime.EnvWithMsgRouterService(app.MsgServiceRouter()),
+ runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.AuthKeeper,
+ app.BankKeeper,
+ app.ConsensusParamsKeeper,
+ govModuleAddr,
+ signingCtx.ValidatorAddressCodec(),
+ authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ cometService,
)
- app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), app.StakingKeeper, app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, app.StakingKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[minttypes.StoreKey]), logger.With(log.ModuleKey, "x/mint")), app.AuthKeeper, app.BankKeeper, authtypes.FeeCollectorName, govModuleAddr)
+ if err := app.MintKeeper.SetMintFn(mintkeeper.DefaultMintFn(minttypes.DefaultInflationCalculationFn, app.StakingKeeper, app.MintKeeper)); err != nil {
+ panic(err)
+ }
- app.SlashingKeeper = slashingkeeper.NewKeeper(
- appCodec, legacyAmino, runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.PoolKeeper = poolkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), logger.With(log.ModuleKey, "x/protocolpool")), app.AuthKeeper, app.BankKeeper, govModuleAddr)
+
+ app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[distrtypes.StoreKey]), logger.With(log.ModuleKey, "x/distribution")), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, cometService, authtypes.FeeCollectorName, govModuleAddr)
+
+ app.FeeGrantKeeper = feegrantkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[feegrant.StoreKey]), logger.With(log.ModuleKey, "x/feegrant")), appCodec, app.AuthKeeper.AddressCodec())
+
+ app.SlashingKeeper = slashingkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), logger.With(log.ModuleKey, "x/slashing")),
+ appCodec, legacyAmino, app.StakingKeeper, govModuleAddr,
)
// register the staking hooks
@@ -322,25 +401,26 @@ func NewSimApp(
}
homePath := cast.ToString(appOpts.Get(flags.FlagHome))
// set the governance module account as the authority for conducting upgrades
- app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.UpgradeKeeper = upgradekeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), logger.With(log.ModuleKey, "x/upgrade"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), skipUpgradeHeights, appCodec, homePath, app.BaseApp, govModuleAddr, app.ConsensusParamsKeeper)
app.IBCKeeper = ibckeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcexported.StoreKey]), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")),
+ app.GetSubspace(ibcexported.ModuleName),
+ app.UpgradeKeeper,
+ govModuleAddr,
)
// NOTE: The mock ContractKeeper is only created for testing.
// Real applications should not use the mock ContractKeeper
app.MockContractKeeper = NewContractKeeper(memKeys[ibcmock.MemStoreKey])
- govConfig := govtypes.DefaultConfig()
+ govConfig := govkeeper.DefaultConfig()
/*
Example of setting gov params:
govConfig.MaxMetadataLen = 10000
*/
- govKeeper := govkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[govtypes.StoreKey]), app.AccountKeeper, app.BankKeeper,
- app.StakingKeeper, app.DistrKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- )
+ govKeeper := govkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[govtypes.StoreKey]), logger.With(log.ModuleKey, "x/gov"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper, govConfig, govModuleAddr)
app.GovKeeper = *govKeeper.SetHooks(
govtypes.NewMultiGovHooks(
@@ -350,28 +430,32 @@ func NewSimApp(
// IBC Fee Module keeper
app.IBCFeeKeeper = ibcfeekeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))),
app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
+ app.AuthKeeper, app.BankKeeper,
)
// ICA Controller keeper
app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), app.GetSubspace(icacontrollertypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), logger.With(log.ModuleKey, "x/icacontroller"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter())),
+ app.GetSubspace(icacontrollertypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
app.IBCKeeper.ChannelKeeper,
- app.MsgServiceRouter(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ govModuleAddr,
)
// ICA Host keeper
app.ICAHostKeeper = icahostkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), app.GetSubspace(icahosttypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), logger.With(log.ModuleKey, "x/icahost"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.GetSubspace(icahosttypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.MsgServiceRouter(),
- app.GRPCQueryRouter(), authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.AuthKeeper,
+ govModuleAddr,
)
// Create IBC Router
@@ -384,10 +468,12 @@ func NewSimApp(
// since fee middleware will wrap the IBCKeeper for underlying application.
// NOTE: the Transfer Keeper's ICS4Wrapper can later be replaced.
app.TransferKeeper = ibctransferkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), app.GetSubspace(ibctransfertypes.ModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))),
+ app.GetSubspace(ibctransfertypes.ModuleName),
app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
+ app.AuthKeeper, app.BankKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
@@ -499,27 +585,26 @@ func NewSimApp(
// NOTE: Any module instantiated in the module manager that is later modified
// must be passed by reference here.
app.ModuleManager = module.NewManager(
- genutil.NewAppModule(
- app.AccountKeeper, app.StakingKeeper, app,
- txConfig,
- ),
- auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
- vesting.NewAppModule(app.AccountKeeper, app.BankKeeper),
- bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)),
- gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
- mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)),
- slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry),
- distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)),
- staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)),
- upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()),
+ genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator),
+ accounts.NewAppModule(appCodec, app.AccountsKeeper),
+ auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
+ vesting.NewAppModule(app.AuthKeeper, app.BankKeeper),
+ bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper),
+ feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry),
+ gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper),
+ mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper),
+ slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService),
+ distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper),
+ staking.NewAppModule(appCodec, app.StakingKeeper),
+ upgrade.NewAppModule(app.UpgradeKeeper),
params.NewAppModule(app.ParamsKeeper),
consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper),
// IBC modules
- ibc.NewAppModule(app.IBCKeeper),
- transfer.NewAppModule(app.TransferKeeper),
- ibcfee.NewAppModule(app.IBCFeeKeeper),
- ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper),
+ ibc.NewAppModule(appCodec, app.IBCKeeper),
+ transfer.NewAppModule(appCodec, app.TransferKeeper),
+ ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper),
+ ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper),
mockModule,
// IBC light clients
@@ -527,22 +612,8 @@ func NewSimApp(
solomachine.NewAppModule(smLightClientModule),
)
- // BasicModuleManager defines the module BasicManager is in charge of setting up basic,
- // non-dependant module elements, such as codec registration and genesis verification.
- // By default it is composed of all the module from the module manager.
- // Additionally, app module basics can be overwritten by passing them as argument.
- app.BasicModuleManager = module.NewBasicManagerFromManager(
- app.ModuleManager,
- map[string]module.AppModuleBasic{
- genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
- govtypes.ModuleName: gov.NewAppModuleBasic(
- []govclient.ProposalHandler{
- paramsclient.ProposalHandler,
- },
- ),
- })
- app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino)
- app.BasicModuleManager.RegisterInterfaces(interfaceRegistry)
+ app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino)
+ app.ModuleManager.RegisterInterfaces(interfaceRegistry)
// NOTE: upgrade module is required to be prioritized
app.ModuleManager.SetOrderPreBlockers(
@@ -556,6 +627,7 @@ func NewSimApp(
app.ModuleManager.SetOrderBeginBlockers(
minttypes.ModuleName,
distrtypes.ModuleName,
+ pooltypes.ModuleName,
slashingtypes.ModuleName,
stakingtypes.ModuleName,
ibcexported.ModuleName,
@@ -568,6 +640,7 @@ func NewSimApp(
app.ModuleManager.SetOrderEndBlockers(
govtypes.ModuleName,
stakingtypes.ModuleName,
+ feegrant.ModuleName,
ibcexported.ModuleName,
ibctransfertypes.ModuleName,
genutiltypes.ModuleName,
@@ -580,12 +653,26 @@ func NewSimApp(
// properly initialized with tokens from genesis accounts.
// NOTE: The genutils module must also occur after auth so that it can access the params from auth.
genesisModuleOrder := []string{
+ consensusparamtypes.ModuleName,
+ accounts.ModuleName,
authtypes.ModuleName,
- banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName,
- slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName,
- ibcexported.ModuleName, genutiltypes.ModuleName, ibctransfertypes.ModuleName,
- icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName,
- vestingtypes.ModuleName, consensusparamtypes.ModuleName,
+ banktypes.ModuleName,
+ distrtypes.ModuleName,
+ pooltypes.ModuleName,
+ feegrant.ModuleName,
+ stakingtypes.ModuleName,
+ slashingtypes.ModuleName,
+ govtypes.ModuleName,
+ minttypes.ModuleName,
+ ibcexported.ModuleName,
+ genutiltypes.ModuleName,
+ ibctransfertypes.ModuleName,
+ icatypes.ModuleName,
+ ibcfeetypes.ModuleName,
+ ibcmock.ModuleName,
+ paramstypes.ModuleName,
+ upgradetypes.ModuleName,
+ vestingtypes.ModuleName,
}
app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...)
app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...)
@@ -594,7 +681,7 @@ func NewSimApp(
// app.ModuleManager.SetOrderMigrations(custom order)
app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter())
- err := app.ModuleManager.RegisterServices(app.configurator)
+ err = app.ModuleManager.RegisterServices(app.configurator)
if err != nil {
panic(err)
}
@@ -607,10 +694,10 @@ func NewSimApp(
// NOTE: this is not required apps that don't use the simulator for fuzz testing
// transactions
overrideModules := map[string]module.AppModuleSimulation{
- authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
+ authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
}
- app.simulationManager = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
+ app.simulationManager = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
app.simulationManager.RegisterStoreDecoders()
// initialize stores
@@ -674,10 +761,14 @@ func (app *SimApp) setAnteHandler(txConfig client.TxConfig) {
anteHandler, err := NewAnteHandler(
HandlerOptions{
ante.HandlerOptions{
- AccountKeeper: app.AccountKeeper,
- BankKeeper: app.BankKeeper,
- SignModeHandler: txConfig.SignModeHandler(),
- SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
+ Environment: runtime.NewEnvironment(nil, app.logger, runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), // nil is set as the kvstoreservice to avoid module access
+ AccountAbstractionKeeper: app.AccountsKeeper,
+ AccountKeeper: app.AuthKeeper,
+ BankKeeper: app.BankKeeper,
+ ConsensusKeeper: app.ConsensusParamsKeeper,
+ FeegrantKeeper: app.FeeGrantKeeper,
+ SignModeHandler: txConfig.SignModeHandler(),
+ SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
},
app.IBCKeeper,
},
@@ -705,7 +796,7 @@ func (app *SimApp) setPostHandler() {
func (app *SimApp) Name() string { return app.BaseApp.Name() }
// PreBlocker application updates every pre block
-func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) {
+func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.FinalizeBlockRequest) error {
return app.ModuleManager.PreBlock(ctx)
}
@@ -725,15 +816,17 @@ func (app *SimApp) Configurator() module.Configurator {
}
// InitChainer application update at chain initialization
-func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
+func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.InitChainRequest) (*abci.InitChainResponse, error) {
var genesisState GenesisState
- if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
- panic(err)
+ err := json.Unmarshal(req.AppStateBytes, &genesisState)
+ if err != nil {
+ return nil, err
}
- if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()); err != nil {
- panic(err)
+ err = app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap())
+ if err != nil {
+ return nil, err
}
- return app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
+ return app.ModuleManager.InitGenesis(ctx, genesisState)
}
// LoadHeight loads a particular height
@@ -769,7 +862,7 @@ func (app *SimApp) TxConfig() client.TxConfig {
// DefaultGenesis returns a default genesis from the registered AppModuleBasic's.
func (app *SimApp) DefaultGenesis() map[string]json.RawMessage {
- return app.BasicModuleManager.DefaultGenesis(app.appCodec)
+ return app.ModuleManager.DefaultGenesis()
}
// GetKey returns the KVStoreKey for the provided store key.
@@ -816,7 +909,7 @@ func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICon
nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// Register grpc-gateway routes for all modules.
- app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
+ app.ModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// register swagger API from root so that other applications can override easily
if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil {
@@ -844,6 +937,14 @@ func (app *SimApp) RegisterNodeService(clientCtx client.Context, cfg config.Conf
nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg)
}
+// ValidatorKeyProvider returns a function that generates a validator key
+// Supported key types are those supported by Comet: ed25519, secp256k1, bls12-381
+func (*SimApp) ValidatorKeyProvider() runtime.KeyGenF {
+ return func() (cmtcrypto.PrivKey, error) {
+ return cmted25519.GenPrivKey(), nil
+ }
+}
+
// GetMaccPerms returns a copy of the module account permissions
//
// NOTE: This is solely to be used for testing purposes.
@@ -857,17 +958,31 @@ func GetMaccPerms() map[string][]string {
}
// BlockedAddresses returns all the app's blocked account addresses.
-func BlockedAddresses() map[string]bool {
+func BlockedAddresses(ac coreaddress.Codec) (map[string]bool, error) {
modAccAddrs := make(map[string]bool)
for acc := range GetMaccPerms() {
- modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true
+ addr, err := ac.BytesToString(authtypes.NewModuleAddress(acc))
+ if err != nil {
+ return nil, err
+ }
+ modAccAddrs[addr] = true
}
// allow the following addresses to receive funds
- delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- delete(modAccAddrs, authtypes.NewModuleAddress(ibcmock.ModuleName).String())
+ govAddr, err := ac.BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ return nil, err
+ }
- return modAccAddrs
+ ibcMockAddr, err := ac.BytesToString(authtypes.NewModuleAddress(ibcmock.ModuleName))
+ if err != nil {
+ return nil, err
+ }
+
+ delete(modAccAddrs, govAddr)
+ delete(modAccAddrs, ibcMockAddr)
+
+ return modAccAddrs, nil
}
// initParamsKeeper init params keeper and its subspaces
@@ -891,11 +1006,6 @@ func (app *SimApp) GetBaseApp() *baseapp.BaseApp {
return app.BaseApp
}
-// GetStakingKeeper implements the TestingApp interface.
-func (app *SimApp) GetStakingKeeper() ibctestingtypes.StakingKeeper {
- return app.StakingKeeper
-}
-
// GetIBCKeeper implements the TestingApp interface.
func (app *SimApp) GetIBCKeeper() *ibckeeper.Keeper {
return app.IBCKeeper
diff --git a/modules/apps/callbacks/testing/simapp/export.go b/modules/apps/callbacks/testing/simapp/export.go
index 19460073b45..f6fe79c8649 100644
--- a/modules/apps/callbacks/testing/simapp/export.go
+++ b/modules/apps/callbacks/testing/simapp/export.go
@@ -2,44 +2,46 @@ package simapp
import (
"encoding/json"
- "errors"
- "log"
+ "fmt"
+ "cosmossdk.io/collections"
storetypes "cosmossdk.io/store/types"
+ slashingtypes "cosmossdk.io/x/slashing/types"
+ "cosmossdk.io/x/staking"
+ stakingtypes "cosmossdk.io/x/staking/types"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- "github.com/cosmos/cosmos-sdk/x/staking"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
)
// ExportAppStateAndValidators exports the state of the application for a genesis
// file.
-func (app *SimApp) ExportAppStateAndValidators(
- forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string,
-) (servertypes.ExportedApp, error) {
+func (app *SimApp) ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (servertypes.ExportedApp, error) {
// as if they could withdraw from the start of the next block
- ctx := app.NewContext(true)
+ ctx := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()})
// We export at last height + 1, because that's the height at which
- // Tendermint will start InitChain.
+ // CometBFT will start InitChain.
height := app.LastBlockHeight() + 1
if forZeroHeight {
height = 0
app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs)
}
- genState, err := app.ModuleManager.ExportGenesis(ctx, app.appCodec)
+ genState, err := app.ModuleManager.ExportGenesisForModules(ctx, modulesToExport)
if err != nil {
return servertypes.ExportedApp{}, err
}
+
appState, err := json.MarshalIndent(genState, "", " ")
if err != nil {
return servertypes.ExportedApp{}, err
}
validators, err := staking.WriteValidators(ctx, app.StakingKeeper)
+
return servertypes.ExportedApp{
AppState: appState,
Validators: validators,
@@ -48,13 +50,14 @@ func (app *SimApp) ExportAppStateAndValidators(
}, err
}
-// prepare for fresh start at zero height
+// prepForZeroHeightGenesis prepares for fresh start at zero height
// NOTE zero height genesis is a temporary feature which will be deprecated
-// in favour of export at a block height
+//
+// in favor of export at a block height
func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) {
applyAllowedAddrs := false
- // check if there is a allowed address list
+ // check if there is an allowed address list
if len(jailAllowedAddrs) > 0 {
applyAllowedAddrs = true
}
@@ -62,9 +65,9 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
allowedAddrsMap := make(map[string]bool)
for _, addr := range jailAllowedAddrs {
- _, err := sdk.ValAddressFromBech32(addr)
+ _, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(addr)
if err != nil {
- log.Fatal(err)
+ panic(err)
}
allowedAddrsMap[addr] = true
}
@@ -72,7 +75,7 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
/* Handle fee distribution state. */
// withdraw all validator commission
- err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
+ err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
@@ -91,36 +94,43 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
}
for _, delegation := range dels {
- valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)
+ valAddr, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(delegation.ValidatorAddress)
if err != nil {
panic(err)
}
- delAddr, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress)
+ delAddr, err := app.InterfaceRegistry().SigningContext().AddressCodec().StringToBytes(delegation.DelegatorAddress)
if err != nil {
panic(err)
}
+
_, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr)
}
// clear validator slash events
- app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx)
+ err = app.DistrKeeper.ValidatorSlashEvents.Clear(ctx, nil)
+ if err != nil {
+ panic(err)
+ }
// clear validator historical rewards
- app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx)
+ err = app.DistrKeeper.ValidatorHistoricalRewards.Clear(ctx, nil)
+ if err != nil {
+ panic(err)
+ }
// set context height to zero
height := ctx.BlockHeight()
ctx = ctx.WithBlockHeight(0)
// reinitialize all validators
- err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
- valBz, err := sdk.ValAddressFromBech32(val.GetOperator())
+ err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
+ valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
}
- // donate any unwithdrawn outstanding reward fraction tokens to the community pool
- scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)
+ // donate any unwithdrawn outstanding reward tokens to the community pool
+ rewards, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)
if err != nil {
panic(err)
}
@@ -128,7 +138,7 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
if err != nil {
panic(err)
}
- feePool.CommunityPool = feePool.CommunityPool.Add(scraps...)
+ feePool.DecimalPool = feePool.DecimalPool.Add(rewards...) // distribution will allocate this to the protocolpool eventually
if err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil {
panic(err)
}
@@ -138,24 +148,29 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
}
return false
})
+ if err != nil {
+ panic(err)
+ }
// reinitialize all delegations
for _, del := range dels {
- valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress)
+ valAddr, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(del.ValidatorAddress)
if err != nil {
panic(err)
}
- delAddr, err := sdk.AccAddressFromBech32(del.DelegatorAddress)
+ delAddr, err := app.InterfaceRegistry().SigningContext().AddressCodec().StringToBytes(del.DelegatorAddress)
if err != nil {
panic(err)
}
- err = app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr)
- if err != nil {
- panic(err)
+
+ if err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr); err != nil {
+ // never called as BeforeDelegationCreated always returns nil
+ panic(fmt.Errorf("error while incrementing period: %w", err))
}
- err = app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr)
- if err != nil {
- panic(err)
+
+ if err := app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr); err != nil {
+ // never called as AfterDelegationModified always returns nil
+ panic(fmt.Errorf("error while creating a new delegation period record: %w", err))
}
}
@@ -180,23 +195,26 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
}
// iterate through unbonding delegations, reset creation height
- err = app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) {
- for i := range ubd.Entries {
- ubd.Entries[i].CreationHeight = 0
- }
- err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
- if err != nil {
- panic(err)
- }
- return false
- })
+ err = app.StakingKeeper.UnbondingDelegations.Walk(
+ ctx,
+ nil,
+ func(_ collections.Pair[[]byte, []byte], ubd stakingtypes.UnbondingDelegation) (stop bool, err error) {
+ for i := range ubd.Entries {
+ ubd.Entries[i].CreationHeight = 0
+ }
+ err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
+ if err != nil {
+ return true, err
+ }
+ return false, err
+ },
+ )
if err != nil {
panic(err)
}
-
// Iterate through validators by power descending, reset bond heights, and
// update bond intra-tx counters.
- store := ctx.KVStore(app.keys[stakingtypes.StoreKey])
+ store := ctx.KVStore(app.GetKey(stakingtypes.StoreKey))
iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey)
counter := int16(0)
@@ -204,43 +222,47 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key()))
validator, err := app.StakingKeeper.GetValidator(ctx, addr)
if err != nil {
- panic(errors.New("expected validator, not found"))
+ panic("expected validator, not found")
+ }
+
+ valAddr, err := app.StakingKeeper.ValidatorAddressCodec().BytesToString(addr)
+ if err != nil {
+ panic(err)
}
validator.UnbondingHeight = 0
- if applyAllowedAddrs && !allowedAddrsMap[addr.String()] {
+ if applyAllowedAddrs && !allowedAddrsMap[valAddr] {
validator.Jailed = true
}
- err = app.StakingKeeper.SetValidator(ctx, validator)
- if err != nil {
- panic(errors.New("couldn't set validator"))
+ if err = app.StakingKeeper.SetValidator(ctx, validator); err != nil {
+ panic(err)
}
counter++
}
- iter.Close()
+ if err := iter.Close(); err != nil {
+ app.Logger().Error("error while closing the key-value store reverse prefix iterator: ", err)
+ return
+ }
_, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
if err != nil {
- log.Fatal(err)
+ panic(err)
}
/* Handle slashing state. */
// reset start height on signing infos
- err = app.SlashingKeeper.IterateValidatorSigningInfos(
- ctx,
- func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {
- info.StartHeight = 0
- err = app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info)
- if err != nil {
- panic(err)
- }
- return false
- },
- )
+ err = app.SlashingKeeper.ValidatorSigningInfo.Walk(ctx, nil, func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool, err error) {
+ info.StartHeight = 0
+ err = app.SlashingKeeper.ValidatorSigningInfo.Set(ctx, addr, info)
+ if err != nil {
+ return true, err
+ }
+ return false, nil
+ })
if err != nil {
- log.Fatal(err)
+ panic(err)
}
}
diff --git a/modules/apps/callbacks/testing/simapp/genesis.go b/modules/apps/callbacks/testing/simapp/genesis.go
index 69fa46b90ef..19328b3f2e0 100644
--- a/modules/apps/callbacks/testing/simapp/genesis.go
+++ b/modules/apps/callbacks/testing/simapp/genesis.go
@@ -5,7 +5,7 @@ import (
)
// GenesisState of the blockchain is represented here as a map of raw json
-// messages key'd by a identifier string.
+// messages key'd by an identifier string.
// The identifier is used to determine which module genesis information belongs
// to so it may be appropriately routed during init chain.
// Within this application default genesis information is retrieved from
diff --git a/modules/apps/callbacks/testing/simapp/params/proto.go b/modules/apps/callbacks/testing/simapp/params/proto.go
deleted file mode 100644
index 73702a15abf..00000000000
--- a/modules/apps/callbacks/testing/simapp/params/proto.go
+++ /dev/null
@@ -1,27 +0,0 @@
-//go:build !test_amino
-// +build !test_amino
-
-package params
-
-import (
- "github.com/cosmos/cosmos-sdk/codec"
- "github.com/cosmos/cosmos-sdk/codec/types"
- "github.com/cosmos/cosmos-sdk/x/auth/tx"
-)
-
-// MakeTestEncodingConfig creates an EncodingConfig for a non-amino based test configuration.
-// This function should be used only internally (in the SDK).
-// App user shouldn't create new codecs - use the app.AppCodec instead.
-// [DEPRECATED]
-func MakeTestEncodingConfig() EncodingConfig {
- cdc := codec.NewLegacyAmino()
- interfaceRegistry := types.NewInterfaceRegistry()
- protoCdc := codec.NewProtoCodec(interfaceRegistry)
-
- return EncodingConfig{
- InterfaceRegistry: interfaceRegistry,
- Codec: protoCdc,
- TxConfig: tx.NewTxConfig(protoCdc, tx.DefaultSignModes),
- Amino: cdc,
- }
-}
diff --git a/modules/apps/callbacks/types/callbacks_test.go b/modules/apps/callbacks/types/callbacks_test.go
index 735e7316ed3..26dc099edfd 100644
--- a/modules/apps/callbacks/types/callbacks_test.go
+++ b/modules/apps/callbacks/types/callbacks_test.go
@@ -13,6 +13,7 @@ import (
transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
+ porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
ibctesting "github.com/cosmos/ibc-go/v9/testing"
ibcmock "github.com/cosmos/ibc-go/v9/testing/mock"
@@ -549,8 +550,7 @@ func (s *CallbacksTypesTestSuite) TestGetCallbackData() {
callbackData, err := types.GetCallbackData(packetData, version, transfertypes.PortID, remainingGas, uint64(1_000_000), callbackKey)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
s.Require().NoError(err, tc.name)
s.Require().Equal(tc.expCallbackData, callbackData, tc.name)
@@ -568,154 +568,134 @@ type bytesProvider interface {
GetBytes() []byte
}
-func (s *CallbacksTypesTestSuite) TestGetSourceCallbackDataTransfer() {
+func (s *CallbacksTypesTestSuite) TestGetDestSourceCallbackDataTransfer() {
sender := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()).String()
receiver := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()).String()
-
- testCases := []struct {
- name string
+ var (
packetData bytesProvider
expCallbackData types.CallbackData
- malleate func()
+ )
+
+ expSrcCallBack := types.CallbackData{
+ CallbackAddress: sender,
+ SenderAddress: sender,
+ ExecutionGasLimit: 1_000_000,
+ CommitGasLimit: 1_000_000,
+ ApplicationVersion: transfertypes.V1,
+ }
+
+ expDstCallBack := types.CallbackData{
+ CallbackAddress: sender,
+ SenderAddress: "",
+ ExecutionGasLimit: 1_000_000,
+ CommitGasLimit: 1_000_000,
+ ApplicationVersion: transfertypes.V1,
+ }
+
+ testCases := []struct {
+ name string
+ malleate func()
+ callbackFn func(
+ ctx sdk.Context,
+ packetDataUnmarshaler porttypes.PacketDataUnmarshaler,
+ packet channeltypes.Packet,
+ maxGas uint64,
+ ) (types.CallbackData, error)
+ getSrc bool
}{
{
- "success: v1",
- transfertypes.FungibleTokenPacketData{
- Denom: ibctesting.TestCoin.Denom,
- Amount: ibctesting.TestCoin.Amount.String(),
- Sender: sender,
- Receiver: receiver,
- Memo: fmt.Sprintf(`{"src_callback": {"address": "%s"}}`, sender),
- },
- types.CallbackData{
- CallbackAddress: sender,
- SenderAddress: sender,
- ExecutionGasLimit: 1_000_000,
- CommitGasLimit: 1_000_000,
- ApplicationVersion: transfertypes.V1,
- },
+ "success: src_callback v1",
func() {
+ packetData = transfertypes.FungibleTokenPacketData{
+ Denom: ibctesting.TestCoin.Denom,
+ Amount: ibctesting.TestCoin.Amount.String(),
+ Sender: sender,
+ Receiver: receiver,
+ Memo: fmt.Sprintf(`{"src_callback": {"address": "%s"}}`, sender),
+ }
+
+ expCallbackData = expSrcCallBack
+
s.path.EndpointA.ChannelConfig.Version = transfertypes.V1
s.path.EndpointA.ChannelConfig.PortID = transfertypes.ModuleName
s.path.EndpointB.ChannelConfig.Version = transfertypes.V1
s.path.EndpointB.ChannelConfig.PortID = transfertypes.ModuleName
},
+ types.GetSourceCallbackData,
+ true,
},
{
- "success: v2",
- transfertypes.FungibleTokenPacketDataV2{
- Tokens: transfertypes.Tokens{
- {
- Denom: transfertypes.NewDenom(ibctesting.TestCoin.Denom),
- Amount: ibctesting.TestCoin.Amount.String(),
- },
- },
- Sender: sender,
- Receiver: receiver,
- Memo: fmt.Sprintf(`{"src_callback": {"address": "%s"}}`, sender),
- },
- types.CallbackData{
- CallbackAddress: sender,
- SenderAddress: sender,
- ExecutionGasLimit: 1_000_000,
- CommitGasLimit: 1_000_000,
- ApplicationVersion: transfertypes.V2,
- },
+ "success: src_callback v2",
func() {
+ packetData = transfertypes.FungibleTokenPacketDataV2{
+ Tokens: transfertypes.Tokens{
+ {
+ Denom: transfertypes.NewDenom(ibctesting.TestCoin.Denom),
+ Amount: ibctesting.TestCoin.Amount.String(),
+ },
+ },
+ Sender: sender,
+ Receiver: receiver,
+ Memo: fmt.Sprintf(`{"src_callback": {"address": "%s"}}`, sender),
+ }
+
+ expCallbackData = expSrcCallBack
+ expCallbackData.ApplicationVersion = transfertypes.V2
+
s.path.EndpointA.ChannelConfig.Version = transfertypes.V2
s.path.EndpointA.ChannelConfig.PortID = transfertypes.ModuleName
s.path.EndpointB.ChannelConfig.Version = transfertypes.V2
s.path.EndpointB.ChannelConfig.PortID = transfertypes.ModuleName
},
+ types.GetSourceCallbackData,
+ true,
},
- }
-
- for _, tc := range testCases {
- tc := tc
- s.Run(tc.name, func() {
- s.SetupTest()
-
- tc.malleate()
-
- packetDataBytes := tc.packetData.GetBytes()
-
- transferStack, ok := s.chainA.App.GetIBCKeeper().PortKeeper.Route(transfertypes.ModuleName)
- s.Require().True(ok)
-
- packetUnmarshaler, ok := transferStack.(types.CallbacksCompatibleModule)
- s.Require().True(ok)
-
- s.path.Setup()
-
- gasMeter := storetypes.NewGasMeter(2_000_000)
- ctx := s.chainA.GetContext().WithGasMeter(gasMeter)
- packet := channeltypes.NewPacket(packetDataBytes, 0, transfertypes.PortID, s.path.EndpointA.ChannelID, transfertypes.PortID, s.path.EndpointB.ChannelID, clienttypes.ZeroHeight(), 0)
- callbackData, err := types.GetSourceCallbackData(ctx, packetUnmarshaler, packet, 1_000_000)
- s.Require().NoError(err)
- s.Require().Equal(tc.expCallbackData, callbackData)
- })
- }
-}
-
-func (s *CallbacksTypesTestSuite) TestGetDestCallbackDataTransfer() {
- sender := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()).String()
- receiver := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()).String()
-
- testCases := []struct {
- name string
- packetData bytesProvider
- expCallbackdata types.CallbackData
- malleate func()
- }{
{
- "success: v1",
- transfertypes.FungibleTokenPacketData{
- Denom: ibctesting.TestCoin.Denom,
- Amount: ibctesting.TestCoin.Amount.String(),
- Sender: sender,
- Receiver: receiver,
- Memo: fmt.Sprintf(`{"dest_callback": {"address": "%s"}}`, sender),
- },
- types.CallbackData{
- CallbackAddress: sender,
- SenderAddress: "",
- ExecutionGasLimit: 1_000_000,
- CommitGasLimit: 1_000_000,
- ApplicationVersion: transfertypes.V1,
- },
+ "success: dest_callback v1",
func() {
+ packetData = transfertypes.FungibleTokenPacketData{
+ Denom: ibctesting.TestCoin.Denom,
+ Amount: ibctesting.TestCoin.Amount.String(),
+ Sender: sender,
+ Receiver: receiver,
+ Memo: fmt.Sprintf(`{"dest_callback": {"address": "%s"}}`, sender),
+ }
+
+ expCallbackData = expDstCallBack
+
s.path.EndpointA.ChannelConfig.Version = transfertypes.V1
s.path.EndpointA.ChannelConfig.PortID = transfertypes.ModuleName
s.path.EndpointB.ChannelConfig.Version = transfertypes.V1
s.path.EndpointB.ChannelConfig.PortID = transfertypes.ModuleName
},
+ types.GetDestCallbackData,
+ false,
},
{
- "success: v2",
- transfertypes.FungibleTokenPacketDataV2{
- Tokens: transfertypes.Tokens{
- {
- Denom: transfertypes.NewDenom(ibctesting.TestCoin.Denom),
- Amount: ibctesting.TestCoin.Amount.String(),
- },
- },
- Sender: sender,
- Receiver: receiver,
- Memo: fmt.Sprintf(`{"dest_callback": {"address": "%s"}}`, sender),
- },
- types.CallbackData{
- CallbackAddress: sender,
- SenderAddress: "",
- ExecutionGasLimit: 1_000_000,
- CommitGasLimit: 1_000_000,
- ApplicationVersion: transfertypes.V2,
- },
+ "success: dest_callback v2",
func() {
+ packetData = transfertypes.FungibleTokenPacketDataV2{
+ Tokens: transfertypes.Tokens{
+ {
+ Denom: transfertypes.NewDenom(ibctesting.TestCoin.Denom),
+ Amount: ibctesting.TestCoin.Amount.String(),
+ },
+ },
+ Sender: sender,
+ Receiver: receiver,
+ Memo: fmt.Sprintf(`{"dest_callback": {"address": "%s"}}`, sender),
+ }
+
+ expCallbackData = expDstCallBack
+ expCallbackData.ApplicationVersion = transfertypes.V2
+
s.path.EndpointA.ChannelConfig.Version = transfertypes.V2
s.path.EndpointA.ChannelConfig.PortID = transfertypes.ModuleName
s.path.EndpointB.ChannelConfig.Version = transfertypes.V2
s.path.EndpointB.ChannelConfig.PortID = transfertypes.ModuleName
},
+ types.GetDestCallbackData,
+ false,
},
}
@@ -726,8 +706,6 @@ func (s *CallbacksTypesTestSuite) TestGetDestCallbackDataTransfer() {
tc.malleate()
- packetDataBytes := tc.packetData.GetBytes()
-
transferStack, ok := s.chainA.App.GetIBCKeeper().PortKeeper.Route(transfertypes.ModuleName)
s.Require().True(ok)
@@ -738,10 +716,15 @@ func (s *CallbacksTypesTestSuite) TestGetDestCallbackDataTransfer() {
gasMeter := storetypes.NewGasMeter(2_000_000)
ctx := s.chainA.GetContext().WithGasMeter(gasMeter)
- packet := channeltypes.NewPacket(packetDataBytes, 0, transfertypes.PortID, s.path.EndpointB.ChannelID, transfertypes.PortID, s.path.EndpointA.ChannelID, clienttypes.ZeroHeight(), 0)
- callbackData, err := types.GetDestCallbackData(ctx, packetUnmarshaler, packet, 1_000_000)
+ var packet channeltypes.Packet
+ if tc.getSrc {
+ packet = channeltypes.NewPacket(packetData.GetBytes(), 0, transfertypes.PortID, s.path.EndpointA.ChannelID, transfertypes.PortID, s.path.EndpointB.ChannelID, clienttypes.ZeroHeight(), 0)
+ } else {
+ packet = channeltypes.NewPacket(packetData.GetBytes(), 0, transfertypes.PortID, s.path.EndpointB.ChannelID, transfertypes.PortID, s.path.EndpointA.ChannelID, clienttypes.ZeroHeight(), 0)
+ }
+ callbackData, err := tc.callbackFn(ctx, packetUnmarshaler, packet, 1_000_000)
s.Require().NoError(err)
- s.Require().Equal(tc.expCallbackdata, callbackData)
+ s.Require().Equal(expCallbackData, callbackData)
})
}
}
diff --git a/modules/apps/callbacks/types/events_test.go b/modules/apps/callbacks/types/events_test.go
index ae4ec7deaad..fd5928612f5 100644
--- a/modules/apps/callbacks/types/events_test.go
+++ b/modules/apps/callbacks/types/events_test.go
@@ -3,7 +3,7 @@ package types_test
import (
sdk "github.com/cosmos/cosmos-sdk/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/modules/apps/callbacks/types"
transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
diff --git a/modules/apps/transfer/ibc_module.go b/modules/apps/transfer/ibc_module.go
index 95d4681b9b9..bca2274b81a 100644
--- a/modules/apps/transfer/ibc_module.go
+++ b/modules/apps/transfer/ibc_module.go
@@ -11,7 +11,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -111,7 +110,7 @@ func (im IBCModule) OnChanOpenTry(
}
if !slices.Contains(types.SupportedVersions, counterpartyVersion) {
- im.keeper.Logger(ctx).Debug("invalid counterparty version, proposing latest app version", "counterpartyVersion", counterpartyVersion, "version", types.V2)
+ im.keeper.Logger.Debug("invalid counterparty version, proposing latest app version", "counterpartyVersion", counterpartyVersion, "version", types.V2)
return types.V2, nil
}
@@ -181,23 +180,25 @@ func (im IBCModule) OnRecvPacket(
// we are explicitly wrapping this emit event call in an anonymous function so that
// the packet data is evaluated after it has been assigned a value.
defer func() {
- events.EmitOnRecvPacketEvent(ctx, data, ack, ackErr)
+ if err := im.keeper.EmitOnRecvPacketEvent(ctx, data, ack, ackErr); err != nil {
+ ack = channeltypes.NewErrorAcknowledgement(err)
+ }
}()
data, ackErr = types.UnmarshalPacketData(packet.GetData(), channelVersion, "")
if ackErr != nil {
ack = channeltypes.NewErrorAcknowledgement(ackErr)
- im.keeper.Logger(ctx).Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), packet.Sequence))
+ im.keeper.Logger.Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), packet.Sequence))
return ack
}
if ackErr = im.keeper.OnRecvPacket(ctx, packet, data); ackErr != nil {
ack = channeltypes.NewErrorAcknowledgement(ackErr)
- im.keeper.Logger(ctx).Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), packet.Sequence))
+ im.keeper.Logger.Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), packet.Sequence))
return ack
}
- im.keeper.Logger(ctx).Info("successfully handled ICS-20 packet", "sequence", packet.Sequence)
+ im.keeper.Logger.Info("successfully handled ICS-20 packet", "sequence", packet.Sequence)
if data.HasForwarding() {
// NOTE: acknowledgement will be written asynchronously
@@ -230,9 +231,7 @@ func (im IBCModule) OnAcknowledgementPacket(
return err
}
- events.EmitOnAcknowledgementPacketEvent(ctx, data, ack)
-
- return nil
+ return im.keeper.EmitOnAcknowledgementPacketEvent(ctx, data, ack)
}
// OnTimeoutPacket implements the IBCModule interface
@@ -252,8 +251,7 @@ func (im IBCModule) OnTimeoutPacket(
return err
}
- events.EmitOnTimeoutEvent(ctx, data)
- return nil
+ return im.keeper.EmitOnTimeoutEvent(ctx, data)
}
// OnChanUpgradeInit implements the IBCModule interface
@@ -276,7 +274,7 @@ func (im IBCModule) OnChanUpgradeTry(ctx context.Context, portID, channelID stri
}
if !slices.Contains(types.SupportedVersions, counterpartyVersion) {
- im.keeper.Logger(ctx).Debug("invalid counterparty version, proposing latest app version", "counterpartyVersion", counterpartyVersion, "version", types.V2)
+ im.keeper.Logger.Debug("invalid counterparty version, proposing latest app version", "counterpartyVersion", counterpartyVersion, "version", types.V2)
return types.V2, nil
}
diff --git a/modules/apps/transfer/ibc_module_test.go b/modules/apps/transfer/ibc_module_test.go
index 6ff8ab21fee..c11a88bf04d 100644
--- a/modules/apps/transfer/ibc_module_test.go
+++ b/modules/apps/transfer/ibc_module_test.go
@@ -41,7 +41,7 @@ func (suite *TransferTestSuite) TestOnChanOpenInit() {
// connection hops is not used in the transfer application callback,
// it is already validated in the core OnChanUpgradeInit.
"success: invalid connection hops", func() {
- path.EndpointA.ConnectionID = "invalid-connection-id"
+ path.EndpointA.ConnectionID = ibctesting.InvalidID
}, nil, types.V2,
},
{
@@ -101,8 +101,7 @@ func (suite *TransferTestSuite) TestOnChanOpenInit() {
path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, counterparty, channel.Version,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(tc.expVersion, version)
} else {
@@ -186,8 +185,7 @@ func (suite *TransferTestSuite) TestOnChanOpenTry() {
version, err := cbs.OnChanOpenTry(suite.chainA.GetContext(), channel.Ordering, channel.ConnectionHops,
path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, channel.Counterparty, counterpartyVersion,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(tc.expVersion, version)
} else {
@@ -236,8 +234,7 @@ func (suite *TransferTestSuite) TestOnChanOpenAck() {
err := cbs.OnChanOpenAck(suite.chainA.GetContext(), path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, path.EndpointA.Counterparty.ChannelID, counterpartyVersion)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -472,8 +469,7 @@ func (suite *TransferTestSuite) TestOnTimeoutPacket() {
err = cbs.OnTimeoutPacket(suite.chainA.GetContext(), path.EndpointA.GetChannel().Version, packet, suite.chainA.SenderAccount.GetAddress())
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
escrowAddress := types.GetEscrowAddress(packet.GetSourcePort(), packet.GetSourceChannel())
@@ -545,8 +541,7 @@ func (suite *TransferTestSuite) TestOnChanUpgradeInit() {
err := path.EndpointA.ChanUpgradeInit()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
upgrade := path.EndpointA.GetChannelUpgrade()
suite.Require().Equal(upgradePath.EndpointA.ConnectionID, upgrade.Fields.ConnectionHops[0])
@@ -623,8 +618,7 @@ func (suite *TransferTestSuite) TestOnChanUpgradeTry() {
counterpartyUpgrade.Fields.Ordering, counterpartyUpgrade.Fields.ConnectionHops, counterpartyUpgrade.Fields.Version,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(types.V2, version)
} else {
@@ -688,8 +682,7 @@ func (suite *TransferTestSuite) TestOnChanUpgradeAck() {
err = cbs.OnChanUpgradeAck(suite.chainA.GetContext(), path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, path.EndpointB.ChannelConfig.Version)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -847,8 +840,7 @@ func (suite *TransferTestSuite) TestPacketDataUnmarshalerInterface() {
packetData, version, err := unmarshalerStack.UnmarshalPacketData(suite.chainA.GetContext(), path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, data)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
v2PacketData, ok := packetData.(types.FungibleTokenPacketDataV2)
diff --git a/modules/apps/transfer/internal/events/events.go b/modules/apps/transfer/internal/events/events.go
deleted file mode 100644
index b6e48282e3c..00000000000
--- a/modules/apps/transfer/internal/events/events.go
+++ /dev/null
@@ -1,150 +0,0 @@
-package events
-
-import (
- "context"
- "encoding/json"
- "strconv"
-
- sdk "github.com/cosmos/cosmos-sdk/types"
-
- "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
- channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
-)
-
-// EmitTransferEvent emits a ibc transfer event on successful transfers.
-func EmitTransferEvent(ctx context.Context, sender, receiver string, tokens types.Tokens, memo string, forwardingHops []types.Hop) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- tokensStr := mustMarshalJSON(tokens)
- forwardingHopsStr := mustMarshalJSON(forwardingHops)
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeTransfer,
- sdk.NewAttribute(types.AttributeKeySender, sender),
- sdk.NewAttribute(types.AttributeKeyReceiver, receiver),
- sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
- sdk.NewAttribute(types.AttributeKeyMemo, memo),
- sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
-}
-
-// EmitOnRecvPacketEvent emits a fungible token packet event in the OnRecvPacket callback
-func EmitOnRecvPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack channeltypes.Acknowledgement, ackErr error) {
- tokensStr := mustMarshalJSON(packetData.Tokens)
- forwardingHopStr := mustMarshalJSON(packetData.Forwarding.Hops)
-
- eventAttributes := []sdk.Attribute{
- sdk.NewAttribute(types.AttributeKeySender, packetData.Sender),
- sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
- sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
- sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
- sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopStr),
- sdk.NewAttribute(types.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
- }
-
- if ackErr != nil {
- eventAttributes = append(eventAttributes, sdk.NewAttribute(types.AttributeKeyAckError, ackErr.Error()))
- }
-
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypePacket,
- eventAttributes...,
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
-}
-
-// EmitOnAcknowledgementPacketEvent emits a fungible token packet event in the OnAcknowledgementPacket callback
-func EmitOnAcknowledgementPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack channeltypes.Acknowledgement) {
- tokensStr := mustMarshalJSON(packetData.Tokens)
- forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypePacket,
- sdk.NewAttribute(sdk.AttributeKeySender, packetData.Sender),
- sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
- sdk.NewAttribute(types.AttributeKeyTokens, tokensStr),
- sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
- sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
- sdk.NewAttribute(types.AttributeKeyAck, ack.String()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
-
- switch resp := ack.Response.(type) {
- case *channeltypes.Acknowledgement_Result:
- sdkCtx.EventManager().EmitEvent(
- sdk.NewEvent(
- types.EventTypePacket,
- sdk.NewAttribute(types.AttributeKeyAckSuccess, string(resp.Result)),
- ),
- )
- case *channeltypes.Acknowledgement_Error:
- sdkCtx.EventManager().EmitEvent(
- sdk.NewEvent(
- types.EventTypePacket,
- sdk.NewAttribute(types.AttributeKeyAckError, resp.Error),
- ),
- )
- }
-}
-
-// EmitOnTimeoutEvent emits a fungible token packet event in the OnTimeoutPacket callback
-func EmitOnTimeoutEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- tokensStr := mustMarshalJSON(packetData.Tokens)
- forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeTimeout,
- sdk.NewAttribute(types.AttributeKeyReceiver, packetData.Sender),
- sdk.NewAttribute(types.AttributeKeyRefundTokens, tokensStr),
- sdk.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
- sdk.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
- ),
- })
-}
-
-// EmitDenomEvent emits a denomination event in the OnRecv callback.
-func EmitDenomEvent(ctx context.Context, token types.Token) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- denomStr := mustMarshalJSON(token.Denom)
-
- sdkCtx.EventManager().EmitEvent(
- sdk.NewEvent(
- types.EventTypeDenom,
- sdk.NewAttribute(types.AttributeKeyDenomHash, token.Denom.Hash().String()),
- sdk.NewAttribute(types.AttributeKeyDenom, denomStr),
- ),
- )
-}
-
-// mustMarshalJSON json marshals the given type and panics on failure.
-func mustMarshalJSON(v any) string {
- bz, err := json.Marshal(v)
- if err != nil {
- panic(err)
- }
-
- return string(bz)
-}
diff --git a/modules/apps/transfer/keeper/events.go b/modules/apps/transfer/keeper/events.go
new file mode 100644
index 00000000000..b797fcf1029
--- /dev/null
+++ b/modules/apps/transfer/keeper/events.go
@@ -0,0 +1,147 @@
+package keeper
+
+import (
+ "context"
+ "encoding/json"
+ "strconv"
+
+ "cosmossdk.io/core/event"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+
+ "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
+ channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
+)
+
+// EmitTransferEvent emits a ibc transfer event on successful transfers.
+func (k Keeper) EmitTransferEvent(ctx context.Context, sender, receiver string, tokens types.Tokens, memo string, forwardingHops []types.Hop) error {
+ tokensStr := mustMarshalJSON(tokens)
+ forwardingHopsStr := mustMarshalJSON(forwardingHops)
+
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeTransfer,
+ event.NewAttribute(types.AttributeKeySender, sender),
+ event.NewAttribute(types.AttributeKeyReceiver, receiver),
+ event.NewAttribute(types.AttributeKeyTokens, tokensStr),
+ event.NewAttribute(types.AttributeKeyMemo, memo),
+ event.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
+}
+
+// EmitOnRecvPacketEvent emits a fungible token packet event in the OnRecvPacket callback
+func (k Keeper) EmitOnRecvPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack channeltypes.Acknowledgement, ackErr error) error {
+ tokensStr := mustMarshalJSON(packetData.Tokens)
+ forwardingHopStr := mustMarshalJSON(packetData.Forwarding.Hops)
+
+ eventAttributes := []event.Attribute{
+ event.NewAttribute(types.AttributeKeySender, packetData.Sender),
+ event.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
+ event.NewAttribute(types.AttributeKeyTokens, tokensStr),
+ event.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
+ event.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopStr),
+ event.NewAttribute(types.AttributeKeyAckSuccess, strconv.FormatBool(ack.Success())),
+ }
+
+ if ackErr != nil {
+ eventAttributes = append(eventAttributes, event.NewAttribute(types.AttributeKeyAckError, ackErr.Error()))
+ }
+
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypePacket,
+ eventAttributes...,
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
+}
+
+// EmitOnAcknowledgementPacketEvent emits a fungible token packet event in the OnAcknowledgementPacket callback
+func (k Keeper) EmitOnAcknowledgementPacketEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2, ack channeltypes.Acknowledgement) error {
+ tokensStr := mustMarshalJSON(packetData.Tokens)
+ forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)
+
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypePacket,
+ event.NewAttribute(sdk.AttributeKeySender, packetData.Sender),
+ event.NewAttribute(types.AttributeKeyReceiver, packetData.Receiver),
+ event.NewAttribute(types.AttributeKeyTokens, tokensStr),
+ event.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
+ event.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
+ event.NewAttribute(types.AttributeKeyAck, ack.String()),
+ ); err != nil {
+ return err
+ }
+
+ switch resp := ack.Response.(type) {
+ case *channeltypes.Acknowledgement_Result:
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypePacket,
+ event.NewAttribute(types.AttributeKeyAckSuccess, string(resp.Result)),
+ ); err != nil {
+ return err
+ }
+ case *channeltypes.Acknowledgement_Error:
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypePacket,
+ event.NewAttribute(types.AttributeKeyAckError, resp.Error),
+ ); err != nil {
+ return err
+ }
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
+}
+
+// EmitOnTimeoutEvent emits a fungible token packet event in the OnTimeoutPacket callback
+func (k Keeper) EmitOnTimeoutEvent(ctx context.Context, packetData types.FungibleTokenPacketDataV2) error {
+ tokensStr := mustMarshalJSON(packetData.Tokens)
+ forwardingHopsStr := mustMarshalJSON(packetData.Forwarding.Hops)
+
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeTimeout,
+ event.NewAttribute(types.AttributeKeyReceiver, packetData.Sender),
+ event.NewAttribute(types.AttributeKeyRefundTokens, tokensStr),
+ event.NewAttribute(types.AttributeKeyMemo, packetData.Memo),
+ event.NewAttribute(types.AttributeKeyForwardingHops, forwardingHopsStr),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
+ )
+}
+
+// EmitDenomEvent emits a denomination event in the OnRecv callback.
+func (k Keeper) EmitDenomEvent(ctx context.Context, token types.Token) error {
+ return k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeDenom,
+ event.NewAttribute(types.AttributeKeyDenomHash, token.Denom.Hash().String()),
+ event.NewAttribute(types.AttributeKeyDenom, mustMarshalJSON(token.Denom)),
+ )
+}
+
+// mustMarshalJSON json marshals the given type and panics on failure.
+func mustMarshalJSON(v any) string {
+ bz, err := json.Marshal(v)
+ if err != nil {
+ panic(err)
+ }
+
+ return string(bz)
+}
diff --git a/modules/apps/transfer/keeper/forwarding.go b/modules/apps/transfer/keeper/forwarding.go
index 967fed6beff..e0232caf4aa 100644
--- a/modules/apps/transfer/keeper/forwarding.go
+++ b/modules/apps/transfer/keeper/forwarding.go
@@ -83,7 +83,7 @@ func (k Keeper) revertForwardedPacket(ctx context.Context, forwardedPacket chann
// given that the packet is being reversed, we check the DestinationChannel and DestinationPort
// of the forwardedPacket to see if a hop was added to the trace during the receive step
if token.Denom.HasPrefix(forwardedPacket.DestinationPort, forwardedPacket.DestinationChannel) {
- if err := k.BankKeeper.BurnCoins(ctx, types.ModuleName, sdk.NewCoins(coin)); err != nil {
+ if err := k.BankKeeper.BurnCoins(ctx, forwardingAddr, sdk.NewCoins(coin)); err != nil {
return err
}
} else {
diff --git a/modules/apps/transfer/keeper/genesis.go b/modules/apps/transfer/keeper/genesis.go
index 330c6f0360d..6908c7bf546 100644
--- a/modules/apps/transfer/keeper/genesis.go
+++ b/modules/apps/transfer/keeper/genesis.go
@@ -1,13 +1,13 @@
package keeper
import (
- sdk "github.com/cosmos/cosmos-sdk/types"
+ "context"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
)
// InitGenesis initializes the ibc-transfer state and binds to PortID.
-func (k Keeper) InitGenesis(ctx sdk.Context, state types.GenesisState) {
+func (k Keeper) InitGenesis(ctx context.Context, state types.GenesisState) {
k.SetPort(ctx, state.PortId)
for _, denom := range state.Denoms {
@@ -31,7 +31,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, state types.GenesisState) {
}
// ExportGenesis exports ibc-transfer module's portID and denom trace info into its genesis state.
-func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState {
+func (k Keeper) ExportGenesis(ctx context.Context) *types.GenesisState {
return &types.GenesisState{
PortId: k.GetPort(ctx),
Denoms: k.GetAllDenoms(ctx),
diff --git a/modules/apps/transfer/keeper/grpc_query.go b/modules/apps/transfer/keeper/grpc_query.go
index 90f53542985..b0f62adc442 100644
--- a/modules/apps/transfer/keeper/grpc_query.go
+++ b/modules/apps/transfer/keeper/grpc_query.go
@@ -56,7 +56,7 @@ func (k Keeper) Denoms(ctx context.Context, req *types.QueryDenomsRequest) (*typ
}
var denoms types.Denoms
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), types.DenomKey)
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), types.DenomKey)
pageRes, err := query.Paginate(store, req.Pagination, func(_, value []byte) error {
var denom types.Denom
diff --git a/modules/apps/transfer/keeper/keeper.go b/modules/apps/transfer/keeper/keeper.go
index c3667e9c128..ee6442b0ae9 100644
--- a/modules/apps/transfer/keeper/keeper.go
+++ b/modules/apps/transfer/keeper/keeper.go
@@ -6,16 +6,15 @@ import (
"fmt"
"strings"
- corestore "cosmossdk.io/core/store"
- "cosmossdk.io/log"
+ "cosmossdk.io/core/appmodule"
sdkmath "cosmossdk.io/math"
"cosmossdk.io/store/prefix"
storetypes "cosmossdk.io/store/types"
+ banktypes "cosmossdk.io/x/bank/types"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/runtime"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
cmtbytes "github.com/cometbft/cometbft/libs/bytes"
@@ -23,18 +22,19 @@ import (
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
- "github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
// Keeper defines the IBC fungible transfer keeper
type Keeper struct {
- storeService corestore.KVStoreService
+ appmodule.Environment
+
cdc codec.BinaryCodec
legacySubspace types.ParamSubspace
ics4Wrapper porttypes.ICS4Wrapper
channelKeeper types.ChannelKeeper
- AuthKeeper types.AccountKeeper
+ AuthKeeper types.AuthKeeper
BankKeeper types.BankKeeper
// the address capable of executing a MsgUpdateParams message. Typically, this
@@ -45,11 +45,11 @@ type Keeper struct {
// NewKeeper creates a new IBC transfer Keeper instance
func NewKeeper(
cdc codec.BinaryCodec,
- storeService corestore.KVStoreService,
+ env appmodule.Environment,
legacySubspace types.ParamSubspace,
ics4Wrapper porttypes.ICS4Wrapper,
channelKeeper types.ChannelKeeper,
- authKeeper types.AccountKeeper,
+ authKeeper types.AuthKeeper,
bankKeeper types.BankKeeper,
authority string,
) Keeper {
@@ -64,7 +64,7 @@ func NewKeeper(
return Keeper{
cdc: cdc,
- storeService: storeService,
+ Environment: env,
legacySubspace: legacySubspace,
ics4Wrapper: ics4Wrapper,
channelKeeper: channelKeeper,
@@ -91,15 +91,9 @@ func (k Keeper) GetAuthority() string {
return k.authority
}
-// Logger returns a module-specific logger.
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return sdkCtx.Logger().With("module", "x/"+exported.ModuleName+"-"+types.ModuleName)
-}
-
// GetPort returns the portID for the transfer module. Used in ExportGenesis
func (k Keeper) GetPort(ctx context.Context) string {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(types.PortKey)
if err != nil {
panic(err)
@@ -109,7 +103,7 @@ func (k Keeper) GetPort(ctx context.Context) string {
// SetPort sets the portID for the transfer module. Used in InitGenesis
func (k Keeper) SetPort(ctx context.Context, portID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(types.PortKey, []byte(portID)); err != nil {
panic(err)
}
@@ -117,7 +111,7 @@ func (k Keeper) SetPort(ctx context.Context, portID string) {
// GetParams returns the current transfer module parameters.
func (k Keeper) GetParams(ctx context.Context) types.Params {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.ParamsKey))
if err != nil {
panic(err)
@@ -133,7 +127,7 @@ func (k Keeper) GetParams(ctx context.Context) types.Params {
// SetParams sets the transfer module parameters.
func (k Keeper) SetParams(ctx context.Context, params types.Params) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(¶ms)
if err := store.Set([]byte(types.ParamsKey), bz); err != nil {
panic(err)
@@ -142,7 +136,7 @@ func (k Keeper) SetParams(ctx context.Context, params types.Params) {
// GetDenom retrieves the denom from store given the hash of the denom.
func (k Keeper) GetDenom(ctx context.Context, denomHash cmtbytes.HexBytes) (types.Denom, bool) {
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), types.DenomKey)
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), types.DenomKey)
bz := store.Get(denomHash)
if len(bz) == 0 {
return types.Denom{}, false
@@ -156,14 +150,14 @@ func (k Keeper) GetDenom(ctx context.Context, denomHash cmtbytes.HexBytes) (type
// HasDenom checks if a the key with the given denomination hash exists on the store.
func (k Keeper) HasDenom(ctx context.Context, denomHash cmtbytes.HexBytes) bool {
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), types.DenomKey)
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), types.DenomKey)
return store.Has(denomHash)
}
// SetDenom sets a new {denom hash -> denom } pair to the store.
// This allows for reverse lookup of the denom given the hash.
func (k Keeper) SetDenom(ctx context.Context, denom types.Denom) {
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), types.DenomKey)
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), types.DenomKey)
bz := k.cdc.MustMarshal(&denom)
store.Set(denom.Hash(), bz)
}
@@ -181,10 +175,10 @@ func (k Keeper) GetAllDenoms(ctx context.Context) types.Denoms {
// IterateDenoms iterates over the denominations in the store and performs a callback function.
func (k Keeper) IterateDenoms(ctx context.Context, cb func(denom types.Denom) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, types.DenomKey)
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
var denom types.Denom
k.cdc.MustUnmarshal(iterator.Value(), &denom)
@@ -223,7 +217,7 @@ func (k Keeper) SetDenomMetadata(ctx context.Context, denom types.Denom) {
// NOTE: if there is no value stored in state for the provided denom then a new Coin is returned for the denom with an initial value of zero.
// This accommodates callers to simply call `Add()` on the returned Coin as an empty Coin literal (e.g. sdk.Coin{}) will trigger a panic due to the absence of a denom.
func (k Keeper) GetTotalEscrowForDenom(ctx context.Context, denom string) sdk.Coin {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(types.TotalEscrowForDenomKey(denom))
if err != nil {
panic(err)
@@ -232,10 +226,12 @@ func (k Keeper) GetTotalEscrowForDenom(ctx context.Context, denom string) sdk.Co
return sdk.NewCoin(denom, sdkmath.ZeroInt())
}
- amount := sdk.IntProto{}
- k.cdc.MustUnmarshal(bz, &amount)
+ amount := sdkmath.Int{}
+ if err := amount.Unmarshal(bz); err != nil {
+ panic(err)
+ }
- return sdk.NewCoin(denom, amount.Int)
+ return sdk.NewCoin(denom, amount)
}
// SetTotalEscrowForDenom stores the total amount of source chain tokens that are in escrow.
@@ -246,7 +242,7 @@ func (k Keeper) SetTotalEscrowForDenom(ctx context.Context, coin sdk.Coin) {
panic(fmt.Errorf("amount cannot be negative: %s", coin.Amount))
}
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
key := types.TotalEscrowForDenomKey(coin.Denom)
if coin.Amount.IsZero() {
@@ -256,7 +252,10 @@ func (k Keeper) SetTotalEscrowForDenom(ctx context.Context, coin sdk.Coin) {
return
}
- bz := k.cdc.MustMarshal(&sdk.IntProto{Int: coin.Amount})
+ bz, err := coin.Amount.Marshal()
+ if err != nil {
+ panic(err)
+ }
if err := store.Set(key, bz); err != nil {
panic(err)
}
@@ -277,22 +276,22 @@ func (k Keeper) GetAllTotalEscrowed(ctx context.Context) sdk.Coins {
// and performs a callback function. Denominations for which an invalid value
// (i.e. not integer) is stored, will be skipped.
func (k Keeper) IterateTokensInEscrow(ctx context.Context, storeprefix []byte, cb func(denomEscrow sdk.Coin) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, storeprefix)
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
denom := strings.TrimPrefix(string(iterator.Key()), fmt.Sprintf("%s/", types.KeyTotalEscrowPrefix))
if strings.TrimSpace(denom) == "" {
continue // denom is empty
}
- amount := sdk.IntProto{}
- if err := k.cdc.Unmarshal(iterator.Value(), &amount); err != nil {
+ amount := sdkmath.Int{}
+ if err := amount.Unmarshal(iterator.Value()); err != nil {
continue // total escrow amount cannot be unmarshalled to integer
}
- denomEscrow := sdk.NewCoin(denom, amount.Int)
+ denomEscrow := sdk.NewCoin(denom, amount)
if cb(denomEscrow) {
break
}
@@ -301,7 +300,7 @@ func (k Keeper) IterateTokensInEscrow(ctx context.Context, storeprefix []byte, c
// setForwardedPacket sets the forwarded packet in the store.
func (k Keeper) setForwardedPacket(ctx context.Context, portID, channelID string, sequence uint64, packet channeltypes.Packet) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(&packet)
if err := store.Set(types.PacketForwardKey(portID, channelID, sequence), bz); err != nil {
panic(err)
@@ -310,7 +309,7 @@ func (k Keeper) setForwardedPacket(ctx context.Context, portID, channelID string
// getForwardedPacket gets the forwarded packet from the store.
func (k Keeper) getForwardedPacket(ctx context.Context, portID, channelID string, sequence uint64) (channeltypes.Packet, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(types.PacketForwardKey(portID, channelID, sequence))
if err != nil {
panic(err)
@@ -327,7 +326,7 @@ func (k Keeper) getForwardedPacket(ctx context.Context, portID, channelID string
// deleteForwardedPacket deletes the forwarded packet from the store.
func (k Keeper) deleteForwardedPacket(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
packetKey := types.PacketForwardKey(portID, channelID, sequence)
if err := store.Delete(packetKey); err != nil {
@@ -348,10 +347,10 @@ func (k Keeper) getAllForwardedPackets(ctx context.Context) []types.ForwardedPac
// iterateForwardedPackets iterates over the forward packets in the store and performs a callback function.
func (k Keeper) iterateForwardedPackets(ctx context.Context, cb func(packet types.ForwardedPacket) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, types.ForwardedPacketKey)
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
var forwardPacket types.ForwardedPacket
k.cdc.MustUnmarshal(iterator.Value(), &forwardPacket.Packet)
diff --git a/modules/apps/transfer/keeper/keeper_test.go b/modules/apps/transfer/keeper/keeper_test.go
index 72dc5453733..3ff56bd7998 100644
--- a/modules/apps/transfer/keeper/keeper_test.go
+++ b/modules/apps/transfer/keeper/keeper_test.go
@@ -6,15 +6,15 @@ import (
testifysuite "github.com/stretchr/testify/suite"
+ "cosmossdk.io/log"
sdkmath "cosmossdk.io/math"
storetypes "cosmossdk.io/store/types"
+ minttypes "cosmossdk.io/x/mint/types"
"github.com/cosmos/cosmos-sdk/baseapp"
- "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/runtime"
sdk "github.com/cosmos/cosmos-sdk/types"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
@@ -58,11 +58,11 @@ func (suite *KeeperTestSuite) TestNewKeeper() {
{"success", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.ModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().AccountKeeper,
+ suite.chainA.GetSimApp().AuthKeeper,
suite.chainA.GetSimApp().BankKeeper,
suite.chainA.GetSimApp().ICAControllerKeeper.GetAuthority(),
)
@@ -70,7 +70,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() {
{"failure: transfer module account does not exist", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.ModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
@@ -82,11 +82,11 @@ func (suite *KeeperTestSuite) TestNewKeeper() {
{"failure: empty authority", func() {
keeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(types.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(types.ModuleName),
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper,
- suite.chainA.GetSimApp().AccountKeeper,
+ suite.chainA.GetSimApp().AuthKeeper,
suite.chainA.GetSimApp().BankKeeper,
"", // authority
)
@@ -186,7 +186,6 @@ func (suite *KeeperTestSuite) TestSetGetTotalEscrowForDenom() {
func (suite *KeeperTestSuite) TestGetAllDenomEscrows() {
var (
store storetypes.KVStore
- cdc codec.Codec
expDenomEscrows sdk.Coins
)
@@ -202,7 +201,8 @@ func (suite *KeeperTestSuite) TestGetAllDenomEscrows() {
amount := sdkmath.NewInt(100)
expDenomEscrows = append(expDenomEscrows, sdk.NewCoin(denom, amount))
- bz := cdc.MustMarshal(&sdk.IntProto{Int: amount})
+ bz, err := amount.Marshal()
+ suite.Require().NoError(err)
store.Set(types.TotalEscrowForDenomKey(denom), bz)
},
true,
@@ -214,14 +214,16 @@ func (suite *KeeperTestSuite) TestGetAllDenomEscrows() {
amount := sdkmath.NewInt(100)
expDenomEscrows = append(expDenomEscrows, sdk.NewCoin(denom, amount))
- bz := cdc.MustMarshal(&sdk.IntProto{Int: amount})
+ bz, err := amount.Marshal()
+ suite.Require().NoError(err)
store.Set(types.TotalEscrowForDenomKey(denom), bz)
denom = "bar/foo"
amount = sdkmath.NewInt(50)
expDenomEscrows = append(expDenomEscrows, sdk.NewCoin(denom, amount))
- bz = cdc.MustMarshal(&sdk.IntProto{Int: amount})
+ bz, err = amount.Marshal()
+ suite.Require().NoError(err)
store.Set(types.TotalEscrowForDenomKey(denom), bz)
},
true,
@@ -233,7 +235,8 @@ func (suite *KeeperTestSuite) TestGetAllDenomEscrows() {
amount := sdkmath.NewInt(100)
expDenomEscrows = append(expDenomEscrows, sdk.NewCoin(denom, amount))
- bz := cdc.MustMarshal(&sdk.IntProto{Int: amount})
+ bz, err := amount.Marshal()
+ suite.Require().NoError(err)
store.Set(types.TotalEscrowForDenomKey(denom), bz)
},
true,
@@ -244,7 +247,8 @@ func (suite *KeeperTestSuite) TestGetAllDenomEscrows() {
denom := ""
amount := sdkmath.ZeroInt()
- bz := cdc.MustMarshal(&sdk.IntProto{Int: amount})
+ bz, err := amount.Marshal()
+ suite.Require().NoError(err)
store.Set(types.TotalEscrowForDenomKey(denom), bz)
},
false,
@@ -255,7 +259,8 @@ func (suite *KeeperTestSuite) TestGetAllDenomEscrows() {
denom := "uatom"
amount := sdkmath.ZeroInt()
- bz := cdc.MustMarshal(&sdk.IntProto{Int: amount})
+ bz, err := amount.Marshal()
+ suite.Require().NoError(err)
store.Set([]byte(fmt.Sprintf("wrong-prefix/%s", denom)), bz)
},
false,
@@ -273,7 +278,6 @@ func (suite *KeeperTestSuite) TestGetAllDenomEscrows() {
storeKey := suite.chainA.GetSimApp().GetKey(types.ModuleName)
store = ctx.KVStore(storeKey)
- cdc = suite.chainA.App.AppCodec()
tc.malleate()
@@ -390,7 +394,7 @@ func (suite *KeeperTestSuite) TestIsBlockedAddr() {
}{
{
"transfer module account address",
- suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(types.ModuleName),
+ suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(types.ModuleName),
false,
},
{
@@ -400,7 +404,7 @@ func (suite *KeeperTestSuite) TestIsBlockedAddr() {
},
{
"blocked address",
- suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(minttypes.ModuleName),
+ suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(minttypes.ModuleName),
true,
},
}
diff --git a/modules/apps/transfer/keeper/migrations.go b/modules/apps/transfer/keeper/migrations.go
index bc82b83c21a..c5741fceaf0 100644
--- a/modules/apps/transfer/keeper/migrations.go
+++ b/modules/apps/transfer/keeper/migrations.go
@@ -7,13 +7,14 @@ import (
"cosmossdk.io/store/prefix"
storetypes "cosmossdk.io/store/types"
+ banktypes "cosmossdk.io/x/bank/types"
"github.com/cosmos/cosmos-sdk/runtime"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
internaltypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
// Migrator is a struct for handling in-place store migrations.
@@ -34,7 +35,7 @@ func (m Migrator) MigrateParams(ctx sdk.Context) error {
m.keeper.legacySubspace.GetParamSet(ctx, ¶ms)
m.keeper.SetParams(ctx, params)
- m.keeper.Logger(ctx).Info("successfully migrated transfer app self-manage params")
+ m.keeper.Logger.Info("successfully migrated transfer app self-manage params")
return nil
}
@@ -49,7 +50,7 @@ func (m Migrator) MigrateDenomMetadata(ctx sdk.Context) error {
return false
})
- m.keeper.Logger(ctx).Info("successfully added metadata to IBC voucher denominations")
+ m.keeper.Logger.Info("successfully added metadata to IBC voucher denominations")
return nil
}
@@ -70,7 +71,7 @@ func (m Migrator) MigrateTotalEscrowForDenom(ctx sdk.Context) error {
m.keeper.SetTotalEscrowForDenom(ctx, totalEscrow)
}
- m.keeper.Logger(ctx).Info("successfully set total escrow", "number of denominations", totalEscrowed.Len())
+ m.keeper.Logger.Info("successfully set total escrow", "number of denominations", totalEscrowed.Len())
return nil
}
@@ -116,7 +117,7 @@ func (m Migrator) MigrateDenomTraceToDenom(ctx sdk.Context) error {
// setDenomTrace sets a new {trace hash -> denom trace} pair to the store.
func (k Keeper) setDenomTrace(ctx context.Context, denomTrace internaltypes.DenomTrace) {
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), types.DenomTraceKey)
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), types.DenomTraceKey)
bz := k.cdc.MustMarshal(&denomTrace)
store.Set(denomTrace.Hash(), bz)
@@ -124,17 +125,17 @@ func (k Keeper) setDenomTrace(ctx context.Context, denomTrace internaltypes.Deno
// deleteDenomTrace deletes the denom trace
func (k Keeper) deleteDenomTrace(ctx context.Context, denomTrace internaltypes.DenomTrace) {
- store := prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), types.DenomTraceKey)
+ store := prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), types.DenomTraceKey)
store.Delete(denomTrace.Hash())
}
// iterateDenomTraces iterates over the denomination traces in the store
// and performs a callback function.
func (k Keeper) iterateDenomTraces(ctx context.Context, cb func(denomTrace internaltypes.DenomTrace) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, types.DenomTraceKey)
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
var denomTrace internaltypes.DenomTrace
k.cdc.MustUnmarshal(iterator.Value(), &denomTrace)
diff --git a/modules/apps/transfer/keeper/migrations_test.go b/modules/apps/transfer/keeper/migrations_test.go
index 8eea47d4ab0..2592ce26845 100644
--- a/modules/apps/transfer/keeper/migrations_test.go
+++ b/modules/apps/transfer/keeper/migrations_test.go
@@ -4,10 +4,10 @@ import (
"fmt"
sdkmath "cosmossdk.io/math"
+ banktestutil "cosmossdk.io/x/bank/testutil"
+ banktypes "cosmossdk.io/x/bank/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
internaltransfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types"
transferkeeper "github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper"
diff --git a/modules/apps/transfer/keeper/msg_server.go b/modules/apps/transfer/keeper/msg_server.go
index bd0b64703be..1fab80dfa94 100644
--- a/modules/apps/transfer/keeper/msg_server.go
+++ b/modules/apps/transfer/keeper/msg_server.go
@@ -15,9 +15,7 @@ import (
var _ types.MsgServer = (*Keeper)(nil)
// Transfer defines an rpc handler method for MsgTransfer.
-func (k Keeper) Transfer(goCtx context.Context, msg *types.MsgTransfer) (*types.MsgTransferResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k Keeper) Transfer(ctx context.Context, msg *types.MsgTransfer) (*types.MsgTransferResponse, error) {
if !k.GetParams(ctx).SendEnabled {
return nil, types.ErrSendDisabled
}
@@ -51,18 +49,17 @@ func (k Keeper) Transfer(goCtx context.Context, msg *types.MsgTransfer) (*types.
return nil, err
}
- k.Logger(ctx).Info("IBC fungible token transfer", "tokens", coins, "sender", msg.Sender, "receiver", msg.Receiver)
+ k.Logger.Info("IBC fungible token transfer", "tokens", coins, "sender", msg.Sender, "receiver", msg.Receiver)
return &types.MsgTransferResponse{Sequence: sequence}, nil
}
// UpdateParams defines an rpc handler method for MsgUpdateParams. Updates the ibc-transfer module's parameters.
-func (k Keeper) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {
+func (k Keeper) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {
if k.GetAuthority() != msg.Signer {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Signer)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
k.SetParams(ctx, msg.Params)
return &types.MsgUpdateParamsResponse{}, nil
@@ -71,7 +68,7 @@ func (k Keeper) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParams)
// unwindHops unwinds the hops present in the tokens denomination and returns the message modified to reflect
// the unwound path to take. It assumes that only a single token is present (as this is verified in ValidateBasic)
// in the tokens list and ensures that the token is not native to the chain.
-func (k Keeper) unwindHops(ctx sdk.Context, msg *types.MsgTransfer) (*types.MsgTransfer, error) {
+func (k Keeper) unwindHops(ctx context.Context, msg *types.MsgTransfer) (*types.MsgTransfer, error) {
unwindHops, err := k.getUnwindHops(ctx, msg.GetCoins())
if err != nil {
return nil, err
@@ -92,7 +89,7 @@ func (k Keeper) unwindHops(ctx sdk.Context, msg *types.MsgTransfer) (*types.MsgT
// getUnwindHops returns the hops to be used during unwinding. If coins consists of more than
// one coin, all coins must have the exact same trace, else an error is returned. getUnwindHops
// also validates that the coins are not native to the chain.
-func (k Keeper) getUnwindHops(ctx sdk.Context, coins sdk.Coins) ([]types.Hop, error) {
+func (k Keeper) getUnwindHops(ctx context.Context, coins sdk.Coins) ([]types.Hop, error) {
// Sanity: validation for MsgTransfer ensures coins are not empty.
if len(coins) == 0 {
return nil, errorsmod.Wrap(types.ErrInvalidForwarding, "coins cannot be empty")
diff --git a/modules/apps/transfer/keeper/msg_server_test.go b/modules/apps/transfer/keeper/msg_server_test.go
index 0fb434b08fb..a6530d8c6d6 100644
--- a/modules/apps/transfer/keeper/msg_server_test.go
+++ b/modules/apps/transfer/keeper/msg_server_test.go
@@ -5,11 +5,12 @@ import (
"errors"
"strings"
+ banktypes "cosmossdk.io/x/bank/types"
+ minttypes "cosmossdk.io/x/mint/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
@@ -78,7 +79,7 @@ func (suite *KeeperTestSuite) TestMsgTransfer() {
{
"failure: sender is a blocked address",
func() {
- msg.Sender = suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(minttypes.ModuleName).String()
+ msg.Sender = suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(minttypes.ModuleName).String()
},
ibcerrors.ErrUnauthorized,
},
@@ -182,8 +183,7 @@ func (suite *KeeperTestSuite) TestMsgTransfer() {
),
}.ToABCIEvents()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotNil(res)
suite.Require().NotEqual(res.Sequence, uint64(0))
diff --git a/modules/apps/transfer/keeper/relay.go b/modules/apps/transfer/keeper/relay.go
index 83e21316666..bfb2adfc73a 100644
--- a/modules/apps/transfer/keeper/relay.go
+++ b/modules/apps/transfer/keeper/relay.go
@@ -10,7 +10,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/telemetry"
internaltypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
@@ -52,7 +51,7 @@ import (
// 5. C -> B : sender chain is sink zone. Denom upon receiving: 'B/denom'
// 6. B -> A : sender chain is sink zone. Denom upon receiving: 'denom'
func (k Keeper) sendTransfer(
- ctx sdk.Context,
+ ctx context.Context,
sourcePort,
sourceChannel string,
coins sdk.Coins,
@@ -122,7 +121,7 @@ func (k Keeper) sendTransfer(
}
if err := k.BankKeeper.BurnCoins(
- ctx, types.ModuleName, sdk.NewCoins(coin),
+ ctx, k.AuthKeeper.GetModuleAddress(types.ModuleName), sdk.NewCoins(coin),
); err != nil {
// NOTE: should not happen as the module account was
// retrieved on the step above and it has enough balance
@@ -150,7 +149,9 @@ func (k Keeper) sendTransfer(
return 0, err
}
- events.EmitTransferEvent(ctx, sender.String(), receiver, tokens, memo, hops)
+ if err := k.EmitTransferEvent(ctx, sender.String(), receiver, tokens, memo, hops); err != nil {
+ return 0, err
+ }
telemetry.ReportTransfer(sourcePort, sourceChannel, destinationPort, destinationChannel, tokens)
@@ -231,7 +232,9 @@ func (k Keeper) OnRecvPacket(ctx context.Context, packet channeltypes.Packet, da
k.SetDenomMetadata(ctx, token.Denom)
}
- events.EmitDenomEvent(ctx, token)
+ if err := k.EmitDenomEvent(ctx, token); err != nil {
+ return err
+ }
voucher := sdk.NewCoin(voucherDenom, transferAmount)
@@ -422,7 +425,7 @@ func (k Keeper) UnescrowCoin(ctx context.Context, escrowAddress, receiver sdk.Ac
}
// tokenFromCoin constructs an IBC token given an SDK coin.
-func (k Keeper) tokenFromCoin(ctx sdk.Context, coin sdk.Coin) (types.Token, error) {
+func (k Keeper) tokenFromCoin(ctx context.Context, coin sdk.Coin) (types.Token, error) {
// if the coin does not have an IBC denom, return as is
if !strings.HasPrefix(coin.Denom, "ibc/") {
return types.Token{
diff --git a/modules/apps/transfer/keeper/relay_forwarding_test.go b/modules/apps/transfer/keeper/relay_forwarding_test.go
index 183a077db1e..f3756c34f95 100644
--- a/modules/apps/transfer/keeper/relay_forwarding_test.go
+++ b/modules/apps/transfer/keeper/relay_forwarding_test.go
@@ -12,7 +12,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
internaltypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
@@ -1082,7 +1082,7 @@ func (suite *ForwardingTestSuite) TestOnTimeoutPacketForwarding() {
suite.Require().True(found, "Chain B has no forwarded packet")
suite.Require().Equal(packet, forwardedPacket, "ForwardedPacket stored in ChainB is not the same that was sent")
- address := suite.chainB.GetSimApp().AccountKeeper.GetModuleAddress(types.ModuleName).String()
+ address := suite.chainB.GetSimApp().AuthKeeper.GetModuleAddress(types.ModuleName).String()
data := types.NewFungibleTokenPacketDataV2(
[]types.Token{
{
diff --git a/modules/apps/transfer/keeper/relay_test.go b/modules/apps/transfer/keeper/relay_test.go
index faf060599ce..b544ee0cf5d 100644
--- a/modules/apps/transfer/keeper/relay_test.go
+++ b/modules/apps/transfer/keeper/relay_test.go
@@ -4,17 +4,14 @@ import (
"errors"
"fmt"
"strings"
- "time"
sdkmath "cosmossdk.io/math"
+ banktestutil "cosmossdk.io/x/bank/testutil"
+ banktypes "cosmossdk.io/x/bank/types"
+ minttypes "cosmossdk.io/x/mint/types"
- "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
- vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
- banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
transferkeeper "github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
@@ -126,62 +123,64 @@ func (suite *KeeperTestSuite) TestSendTransfer() {
},
nil,
},
- {
- "successful transfer of entire spendable balance with vesting account",
- func() {
- // create vesting account
- vestingAccPrivKey := secp256k1.GenPrivKey()
- vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
-
- vestingCoins := sdk.NewCoins(sdk.NewCoin(coins[0].Denom, ibctesting.DefaultCoinAmount))
- _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
- suite.chainA.SenderAccount.GetAddress(),
- vestingAccAddress,
- vestingCoins,
- suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
- false,
- ))
- suite.Require().NoError(err)
- sender = vestingAccAddress
-
- // transfer some spendable coins to vesting account
- transferCoins := sdk.NewCoins(sdk.NewCoin(coins[0].Denom, sdkmath.NewInt(42)))
- _, err = suite.chainA.SendMsgs(banktypes.NewMsgSend(suite.chainA.SenderAccount.GetAddress(), vestingAccAddress, transferCoins))
- suite.Require().NoError(err)
-
- coins = sdk.NewCoins(sdk.NewCoin(coins[0].Denom, types.UnboundedSpendLimit()))
- expEscrowAmounts[0] = transferCoins[0].Amount
- },
- nil,
- },
- {
- "failure: no spendable coins for vesting account",
- func() {
- // create vesting account
- vestingAccPrivKey := secp256k1.GenPrivKey()
- vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
-
- vestingCoins := sdk.NewCoins(sdk.NewCoin(coins[0].Denom, ibctesting.DefaultCoinAmount))
- _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
- suite.chainA.SenderAccount.GetAddress(),
- vestingAccAddress,
- vestingCoins,
- suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
- false,
- ))
- suite.Require().NoError(err)
- sender = vestingAccAddress
-
- // just to prove that the vesting account has a balance (but not spendable)
- vestingAccBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), vestingAccAddress, coins[0].Denom)
- suite.Require().Equal(vestingCoins[0].Amount.Int64(), vestingAccBalance.Amount.Int64())
- vestinSpendableBalance := suite.chainA.GetSimApp().BankKeeper.SpendableCoins(suite.chainA.GetContext(), vestingAccAddress)
- suite.Require().Zero(vestinSpendableBalance.AmountOf(coins[0].Denom).Int64())
-
- coins = sdk.NewCoins(sdk.NewCoin(coins[0].Denom, types.UnboundedSpendLimit()))
- },
- types.ErrInvalidAmount,
- },
+ // TODO: Migrate vesting account test cases to use x/accounts lockup accounts as mentioned in v0.52 upgrading doc.
+ // https://github.com/cosmos/ibc-go/issues/7681
+ // {
+ // "successful transfer of entire spendable balance with vesting account",
+ // func() {
+ // // create vesting account
+ // vestingAccPrivKey := secp256k1.GenPrivKey()
+ // vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
+
+ // vestingCoins := sdk.NewCoins(sdk.NewCoin(coins[0].Denom, ibctesting.DefaultCoinAmount))
+ // _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
+ // suite.chainA.SenderAccount.GetAddress(),
+ // vestingAccAddress,
+ // vestingCoins,
+ // suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
+ // false,
+ // ))
+ // suite.Require().NoError(err)
+ // sender = vestingAccAddress
+
+ // // transfer some spendable coins to vesting account
+ // transferCoins := sdk.NewCoins(sdk.NewCoin(coins[0].Denom, sdkmath.NewInt(42)))
+ // _, err = suite.chainA.SendMsgs(banktypes.NewMsgSend(suite.chainA.SenderAccount.GetAddress(), vestingAccAddress, transferCoins))
+ // suite.Require().NoError(err)
+
+ // coins = sdk.NewCoins(sdk.NewCoin(coins[0].Denom, types.UnboundedSpendLimit()))
+ // expEscrowAmounts[0] = transferCoins[0].Amount
+ // },
+ // nil,
+ // },
+ // {
+ // "failure: no spendable coins for vesting account",
+ // func() {
+ // // create vesting account
+ // vestingAccPrivKey := secp256k1.GenPrivKey()
+ // vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
+
+ // vestingCoins := sdk.NewCoins(sdk.NewCoin(coins[0].Denom, ibctesting.DefaultCoinAmount))
+ // _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
+ // suite.chainA.SenderAccount.GetAddress(),
+ // vestingAccAddress,
+ // vestingCoins,
+ // suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
+ // false,
+ // ))
+ // suite.Require().NoError(err)
+ // sender = vestingAccAddress
+
+ // // just to prove that the vesting account has a balance (but not spendable)
+ // vestingAccBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), vestingAccAddress, coins[0].Denom)
+ // suite.Require().Equal(vestingCoins[0].Amount.Int64(), vestingAccBalance.Amount.Int64())
+ // vestinSpendableBalance := suite.chainA.GetSimApp().BankKeeper.SpendableCoins(suite.chainA.GetContext(), vestingAccAddress)
+ // suite.Require().Zero(vestinSpendableBalance.AmountOf(coins[0].Denom).Int64())
+
+ // coins = sdk.NewCoins(sdk.NewCoin(coins[0].Denom, types.UnboundedSpendLimit()))
+ // },
+ // types.ErrInvalidAmount,
+ // },
{
"failure: source channel not found",
func() {
@@ -193,7 +192,7 @@ func (suite *KeeperTestSuite) TestSendTransfer() {
{
"failure: sender account is blocked",
func() {
- sender = suite.chainA.GetSimApp().AccountKeeper.GetModuleAddress(minttypes.ModuleName)
+ sender = suite.chainA.GetSimApp().AuthKeeper.GetModuleAddress(minttypes.ModuleName)
},
ibcerrors.ErrUnauthorized,
},
@@ -280,8 +279,7 @@ func (suite *KeeperTestSuite) TestSendTransfer() {
res, err := suite.chainA.GetSimApp().TransferKeeper.Transfer(suite.chainA.GetContext(), msg)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotNil(res)
} else {
@@ -411,7 +409,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsNotSource() {
{
"failure: receiver is module account",
func() {
- packetData.Receiver = suite.chainB.GetSimApp().AccountKeeper.GetModuleAddress(minttypes.ModuleName).String()
+ packetData.Receiver = suite.chainB.GetSimApp().AuthKeeper.GetModuleAddress(minttypes.ModuleName).String()
},
ibcerrors.ErrUnauthorized,
},
@@ -467,8 +465,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsNotSource() {
err = suite.chainB.GetSimApp().TransferKeeper.OnRecvPacket(suite.chainB.GetContext(), packet, packetData)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
// Check denom metadata for of tokens received on chain B.
@@ -560,7 +557,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsSource() {
{
"failure: receiver is module account",
func() {
- packetData.Receiver = suite.chainB.GetSimApp().AccountKeeper.GetModuleAddress(minttypes.ModuleName).String()
+ packetData.Receiver = suite.chainB.GetSimApp().AuthKeeper.GetModuleAddress(minttypes.ModuleName).String()
},
ibcerrors.ErrUnauthorized,
},
@@ -594,8 +591,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket_ReceiverIsSource() {
packet := channeltypes.NewPacket(packetData.GetBytes(), uint64(1), path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, clienttypes.NewHeight(1, 100), 0)
err = suite.chainA.GetSimApp().TransferKeeper.OnRecvPacket(suite.chainA.GetContext(), packet, packetData)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
_, found := suite.chainA.GetSimApp().BankKeeper.GetDenomMetaData(suite.chainA.GetContext(), sdk.DefaultBondDenom)
@@ -810,8 +806,7 @@ func (suite *KeeperTestSuite) TestOnAcknowledgementPacket() {
totalEscrow := suite.chainA.GetSimApp().TransferKeeper.GetTotalEscrowForDenom(suite.chainA.GetContext(), denom.IBCDenom())
suite.Require().Equal(expEscrowAmount, totalEscrow.Amount)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
postAcknowledgementBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), denom.IBCDenom())
deltaAmount := postAcknowledgementBalance.Amount.Sub(preAcknowledgementBalance.Amount)
@@ -1048,8 +1043,7 @@ func (suite *KeeperTestSuite) TestOnTimeoutPacket() {
totalEscrow := suite.chainA.GetSimApp().TransferKeeper.GetTotalEscrowForDenom(suite.chainA.GetContext(), denom.IBCDenom())
suite.Require().Equal(expEscrowAmount, totalEscrow.Amount)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
amountParsed, ok := sdkmath.NewIntFromString(amount)
suite.Require().True(ok)
@@ -1231,8 +1225,7 @@ func (suite *KeeperTestSuite) TestPacketForwardsCompatibility() {
// receive packet on chainA
err = path.RelayPacket(packet)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorContains(err, tc.expError.Error())
diff --git a/modules/apps/transfer/module.go b/modules/apps/transfer/module.go
index 095c7d49685..7b1225a873f 100644
--- a/modules/apps/transfer/module.go
+++ b/modules/apps/transfer/module.go
@@ -9,10 +9,10 @@ import (
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
@@ -25,25 +25,34 @@ import (
)
var (
- _ module.AppModule = (*AppModule)(nil)
- _ module.AppModuleBasic = (*AppModuleBasic)(nil)
- _ module.AppModuleSimulation = (*AppModule)(nil)
- _ module.HasGenesis = (*AppModule)(nil)
- _ module.HasName = (*AppModule)(nil)
- _ module.HasConsensusVersion = (*AppModule)(nil)
- _ module.HasInvariants = (*AppModule)(nil)
- _ module.HasServices = (*AppModule)(nil)
- _ module.HasProposalMsgs = (*AppModule)(nil)
- _ appmodule.AppModule = (*AppModule)(nil)
+ _ module.AppModule = (*AppModule)(nil)
+ _ module.AppModuleBasic = (*AppModule)(nil)
+ _ module.AppModuleSimulation = (*AppModule)(nil)
+ _ module.HasGenesis = (*AppModule)(nil)
+ _ appmodule.HasConsensusVersion = (*AppModule)(nil)
+ _ module.HasInvariants = (*AppModule)(nil)
+ _ module.HasServices = (*AppModule)(nil)
+ _ appmodule.AppModule = (*AppModule)(nil)
_ porttypes.IBCModule = (*IBCModule)(nil)
)
-// AppModuleBasic is the IBC Transfer AppModuleBasic
-type AppModuleBasic struct{}
+// AppModule represents the AppModule for this module
+type AppModule struct {
+ cdc codec.Codec
+ keeper keeper.Keeper
+}
+
+// NewAppModule creates a new 20-transfer module
+func NewAppModule(cdc codec.Codec, k keeper.Keeper) AppModule {
+ return AppModule{
+ cdc: cdc,
+ keeper: k,
+ }
+}
// Name implements AppModuleBasic interface
-func (AppModuleBasic) Name() string {
+func (AppModule) Name() string {
return types.ModuleName
}
@@ -53,26 +62,26 @@ func (AppModule) IsOnePerModuleType() {}
// IsAppModule implements the appmodule.AppModule interface.
func (AppModule) IsAppModule() {}
-// RegisterLegacyAminoCodec implements AppModuleBasic interface
-func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
+// RegisterLegacyAminoCodec implements AppModule interface
+func (AppModule) RegisterLegacyAminoCodec(cdc coreregistry.AminoRegistrar) {
types.RegisterLegacyAminoCodec(cdc)
}
// RegisterInterfaces registers module concrete types into protobuf Any.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func (AppModule) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
types.RegisterInterfaces(registry)
}
// DefaultGenesis returns default genesis state as raw bytes for the ibc
// transfer module.
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
- return cdc.MustMarshalJSON(types.DefaultGenesisState())
+func (am AppModule) DefaultGenesis() json.RawMessage {
+ return am.cdc.MustMarshalJSON(types.DefaultGenesisState())
}
// ValidateGenesis performs genesis state validation for the ibc transfer module.
-func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {
+func (am AppModule) ValidateGenesis(bz json.RawMessage) error {
var gs types.GenesisState
- if err := cdc.UnmarshalJSON(bz, &gs); err != nil {
+ if err := am.cdc.UnmarshalJSON(bz, &gs); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err)
}
@@ -80,7 +89,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod
}
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the ibc-transfer module.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
+func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil {
panic(err)
}
@@ -90,29 +99,16 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r
}
}
-// GetTxCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+// GetTxCmd implements AppModule interface
+func (AppModule) GetTxCmd() *cobra.Command {
return cli.NewTxCmd()
}
-// GetQueryCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+// GetQueryCmd implements AppModule interface
+func (AppModule) GetQueryCmd() *cobra.Command {
return cli.GetQueryCmd()
}
-// AppModule represents the AppModule for this module
-type AppModule struct {
- AppModuleBasic
- keeper keeper.Keeper
-}
-
-// NewAppModule creates a new 20-transfer module
-func NewAppModule(k keeper.Keeper) AppModule {
- return AppModule{
- keeper: k,
- }
-}
-
// RegisterInvariants implements the AppModule interface
func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {
keeper.RegisterInvariants(ir, &am.keeper)
@@ -144,17 +140,18 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
// InitGenesis performs genesis initialization for the ibc-transfer module. It returns
// no validator updates.
-func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) {
+func (am AppModule) InitGenesis(ctx context.Context, data json.RawMessage) error {
var genesisState types.GenesisState
- cdc.MustUnmarshalJSON(data, &genesisState)
+ am.cdc.MustUnmarshalJSON(data, &genesisState)
am.keeper.InitGenesis(ctx, genesisState)
+ return nil
}
// ExportGenesis returns the exported genesis state as raw bytes for the ibc-transfer
// module.
-func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
+func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
gs := am.keeper.ExportGenesis(ctx)
- return cdc.MustMarshalJSON(gs)
+ return am.cdc.MarshalJSON(gs)
}
// ConsensusVersion implements AppModule/ConsensusVersion defining the current version of transfer.
diff --git a/modules/apps/transfer/simulation/proposals.go b/modules/apps/transfer/simulation/proposals.go
index 404a24ff3a0..574af233e8e 100644
--- a/modules/apps/transfer/simulation/proposals.go
+++ b/modules/apps/transfer/simulation/proposals.go
@@ -1,8 +1,11 @@
package simulation
import (
+ "context"
"math/rand"
+ coreaddress "cosmossdk.io/core/address"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
@@ -21,7 +24,7 @@ const (
// ProposalMsgs defines the module weighted proposals' contents
func ProposalMsgs() []simtypes.WeightedProposalMsg {
return []simtypes.WeightedProposalMsg{
- simulation.NewWeightedProposalMsg(
+ simulation.NewWeightedProposalMsgX(
OpWeightMsgUpdateParams,
DefaultWeightMsgUpdateParams,
SimulateMsgUpdateParams,
@@ -30,13 +33,17 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg {
}
// SimulateMsgUpdateParams returns a MsgUpdateParams
-func SimulateMsgUpdateParams(_ *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
- var gov sdk.AccAddress = address.Module("gov")
+func SimulateMsgUpdateParams(_ context.Context, _ *rand.Rand, _ []simtypes.Account, accCdc coreaddress.Codec) (sdk.Msg, error) {
+ gov := address.Module("gov")
+ govString, err := accCdc.BytesToString(gov)
+ if err != nil {
+ return nil, err
+ }
params := types.DefaultParams()
params.SendEnabled = false
return &types.MsgUpdateParams{
- Signer: gov.String(),
+ Signer: govString,
Params: params,
- }
+ }, nil
}
diff --git a/modules/apps/transfer/simulation/proposals_test.go b/modules/apps/transfer/simulation/proposals_test.go
index 44a03d6d569..3f27b4e6887 100644
--- a/modules/apps/transfer/simulation/proposals_test.go
+++ b/modules/apps/transfer/simulation/proposals_test.go
@@ -6,12 +6,11 @@ import (
"github.com/stretchr/testify/require"
+ codecaddress "github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/cosmos-sdk/types/address"
+ typesaddress "github.com/cosmos/cosmos-sdk/types/address"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
-
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/simulation"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
)
@@ -21,7 +20,7 @@ func TestProposalMsgs(t *testing.T) {
s := rand.NewSource(1)
r := rand.New(s)
- ctx := sdk.NewContext(nil, cmtproto.Header{}, true, nil)
+ ctx := sdk.NewContext(nil, true, nil)
accounts := simtypes.RandomAccounts(r, 3)
// execute ProposalMsgs function
@@ -30,14 +29,12 @@ func TestProposalMsgs(t *testing.T) {
w0 := weightedProposalMsgs[0]
- // tests w0 interface:
- require.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey())
- require.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight())
-
- msg := w0.MsgSimulatorFn()(r, ctx, accounts)
+ codec := codecaddress.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())
+ msg, err := w0.MsgSimulatorFn()(ctx, r, accounts, codec)
+ require.NoError(t, err)
msgUpdateParams, ok := msg.(*types.MsgUpdateParams)
require.True(t, ok)
- require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Signer)
+ require.Equal(t, sdk.AccAddress(typesaddress.Module("gov")).String(), msgUpdateParams.Signer)
require.EqualValues(t, msgUpdateParams.Params.SendEnabled, false)
}
diff --git a/modules/apps/transfer/types/codec.go b/modules/apps/transfer/types/codec.go
index 0b5d63b145b..5b2e5f8560b 100644
--- a/modules/apps/transfer/types/codec.go
+++ b/modules/apps/transfer/types/codec.go
@@ -1,23 +1,25 @@
package types
import (
+ coreregistry "cosmossdk.io/core/registry"
+ "cosmossdk.io/x/authz"
+
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/legacy"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
- "github.com/cosmos/cosmos-sdk/x/authz"
)
// RegisterLegacyAminoCodec registers the necessary x/ibc transfer interfaces and concrete types
// on the provided LegacyAmino codec. These types are used for Amino JSON serialization.
-func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
+func RegisterLegacyAminoCodec(cdc coreregistry.AminoRegistrar) {
legacy.RegisterAminoMsg(cdc, &MsgTransfer{}, "cosmos-sdk/MsgTransfer")
}
// RegisterInterfaces register the ibc transfer module interfaces to protobuf
// Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations((*sdk.Msg)(nil), &MsgTransfer{}, &MsgUpdateParams{})
registry.RegisterImplementations(
diff --git a/modules/apps/transfer/types/codec_test.go b/modules/apps/transfer/types/codec_test.go
index 591282526b7..796664d182d 100644
--- a/modules/apps/transfer/types/codec_test.go
+++ b/modules/apps/transfer/types/codec_test.go
@@ -4,6 +4,7 @@ import (
"errors"
"strings"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -60,7 +61,7 @@ func (suite *TypesTestSuite) TestCodecTypeRegistration() {
tc := tc
suite.Run(tc.name, func() {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(transfer.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, transfer.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expErr == nil {
diff --git a/modules/apps/transfer/types/expected_keepers.go b/modules/apps/transfer/types/expected_keepers.go
index 8d0e6d1f0d6..78334dbaf6d 100644
--- a/modules/apps/transfer/types/expected_keepers.go
+++ b/modules/apps/transfer/types/expected_keepers.go
@@ -3,17 +3,18 @@ package types
import (
"context"
+ banktypes "cosmossdk.io/x/bank/types"
+ paramtypes "cosmossdk.io/x/params/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
)
-// AccountKeeper defines the contract required for account APIs.
-type AccountKeeper interface {
+// AuthKeeper defines the contract required for x/auth keeper.
+type AuthKeeper interface {
GetModuleAddress(name string) sdk.AccAddress
GetModuleAccount(ctx context.Context, name string) sdk.ModuleAccountI
}
@@ -22,7 +23,7 @@ type AccountKeeper interface {
type BankKeeper interface {
SendCoins(ctx context.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error
MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error
- BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error
+ BurnCoins(ctx context.Context, address []byte, amt sdk.Coins) error
SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
BlockedAddr(addr sdk.AccAddress) bool
diff --git a/modules/apps/transfer/types/forwarding_test.go b/modules/apps/transfer/types/forwarding_test.go
index e7dce4814e8..e1b0a102dbf 100644
--- a/modules/apps/transfer/types/forwarding_test.go
+++ b/modules/apps/transfer/types/forwarding_test.go
@@ -98,8 +98,7 @@ func TestForwarding_Validate(t *testing.T) {
err := tc.forwarding.Validate()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err)
} else {
require.ErrorIs(t, err, tc.expError)
@@ -209,8 +208,7 @@ func TestForwardingPacketData_Validate(t *testing.T) {
err := tc.forwarding.Validate()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err)
} else {
require.ErrorIs(t, err, tc.expError)
@@ -267,8 +265,7 @@ func TestValidateHop(t *testing.T) {
err := tc.hop.Validate()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err)
} else {
require.ErrorIs(t, err, tc.expError)
diff --git a/modules/apps/transfer/types/msgs_test.go b/modules/apps/transfer/types/msgs_test.go
index f630b041d4b..2a1a943a000 100644
--- a/modules/apps/transfer/types/msgs_test.go
+++ b/modules/apps/transfer/types/msgs_test.go
@@ -7,6 +7,7 @@ import (
sdkmath "cosmossdk.io/math"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -96,8 +97,7 @@ func TestMsgTransferValidation(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
err := tc.msg.ValidateBasic()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err)
} else {
require.ErrorIs(t, err, tc.expError)
@@ -111,8 +111,8 @@ func TestMsgTransferGetSigners(t *testing.T) {
addr := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address())
msg := types.NewMsgTransfer(validPort, validChannel, coins, addr.String(), receiver, timeoutHeight, 0, "", nil)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(transfer.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, transfer.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
require.NoError(t, err)
require.Equal(t, addr.Bytes(), signers[0])
}
@@ -133,8 +133,7 @@ func TestMsgUpdateParamsValidateBasic(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
err := tc.msg.ValidateBasic()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err)
} else {
require.ErrorIs(t, err, tc.expError)
@@ -161,8 +160,8 @@ func TestMsgUpdateParamsGetSigners(t *testing.T) {
Params: types.DefaultParams(),
}
- encodingCfg := moduletestutil.MakeTestEncodingConfig(transfer.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(&msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, transfer.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(&msg)
if tc.errMsg == "" {
require.NoError(t, err)
diff --git a/modules/apps/transfer/types/packet_test.go b/modules/apps/transfer/types/packet_test.go
index 2672de80430..6c45714c6bc 100644
--- a/modules/apps/transfer/types/packet_test.go
+++ b/modules/apps/transfer/types/packet_test.go
@@ -37,7 +37,7 @@ func TestFungibleTokenPacketDataValidateBasic(t *testing.T) {
{"valid packet with memo", types.NewFungibleTokenPacketData(denom, amount, sender, receiver, "memo"), nil},
{"valid packet with large amount", types.NewFungibleTokenPacketData(denom, largeAmount, sender, receiver, ""), nil},
{"invalid denom", types.NewFungibleTokenPacketData("", amount, sender, receiver, ""), types.ErrInvalidDenomForTransfer},
- {"invalid denom, invalid portID", types.NewFungibleTokenPacketData("(tranfer)/channel-1/uatom", amount, sender, receiver, ""), host.ErrInvalidID},
+ {"invalid denom, invalid portID", types.NewFungibleTokenPacketData("(transfer)/channel-1/uatom", amount, sender, receiver, ""), host.ErrInvalidID},
{"invalid empty amount", types.NewFungibleTokenPacketData(denom, "", sender, receiver, ""), types.ErrInvalidAmount},
{"invalid zero amount", types.NewFungibleTokenPacketData(denom, "0", sender, receiver, ""), types.ErrInvalidAmount},
{"invalid negative amount", types.NewFungibleTokenPacketData(denom, "-1", sender, receiver, ""), types.ErrInvalidAmount},
@@ -488,8 +488,7 @@ func TestFungibleTokenPacketDataV2ValidateBasic(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
err := tc.packetData.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
require.NoError(t, err, tc.name)
} else {
require.ErrorContains(t, err, tc.expErr.Error(), tc.name)
@@ -865,12 +864,12 @@ func TestUnmarshalPacketData(t *testing.T) {
packetData, err := types.UnmarshalPacketData(packetDataBz, version, encoding)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err)
require.NotEmpty(t, packetData.Tokens)
require.NotEmpty(t, packetData.Sender)
require.NotEmpty(t, packetData.Receiver)
+ require.IsType(t, types.FungibleTokenPacketDataV2{}, packetData)
} else {
ibctesting.RequireErrorIsOrContains(t, err, tc.expError)
}
@@ -922,8 +921,7 @@ func TestV2ForwardsCompatibilityFails(t *testing.T) {
packetData, err := types.UnmarshalPacketData(packetDataBz, types.V2, types.EncodingProtobuf)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err)
require.NotEqual(t, types.FungibleTokenPacketDataV2{}, packetData)
} else {
@@ -1039,8 +1037,7 @@ func TestPacketV1ToPacketV2(t *testing.T) {
for _, tc := range testCases {
actualV2Data, err := types.PacketDataV1ToV2(tc.v1Data)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err, "test case: %s", tc.name)
require.Equal(t, tc.v2Data, actualV2Data, "test case: %s", tc.name)
} else {
diff --git a/modules/apps/transfer/types/params_legacy.go b/modules/apps/transfer/types/params_legacy.go
index 716043c3040..ce86c6fa7a1 100644
--- a/modules/apps/transfer/types/params_legacy.go
+++ b/modules/apps/transfer/types/params_legacy.go
@@ -9,7 +9,7 @@ package types
import (
"fmt"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ paramtypes "cosmossdk.io/x/params/types"
)
var (
diff --git a/modules/apps/transfer/types/token_test.go b/modules/apps/transfer/types/token_test.go
index f349765822b..929ba3b5f78 100644
--- a/modules/apps/transfer/types/token_test.go
+++ b/modules/apps/transfer/types/token_test.go
@@ -144,8 +144,7 @@ func TestValidate(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
err := tc.token.Validate()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err, tc.name)
} else {
require.ErrorContains(t, err, tc.expError.Error(), tc.name)
@@ -193,8 +192,7 @@ func TestToCoin(t *testing.T) {
require.Equal(t, tc.expCoin, coin, tc.name)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
require.NoError(t, err, tc.name)
} else {
require.ErrorContains(t, err, tc.expError.Error(), tc.name)
diff --git a/modules/apps/transfer/types/transfer_authorization.go b/modules/apps/transfer/types/transfer_authorization.go
index 81a19b0b384..a289de68379 100644
--- a/modules/apps/transfer/types/transfer_authorization.go
+++ b/modules/apps/transfer/types/transfer_authorization.go
@@ -8,9 +8,10 @@ import (
"github.com/cosmos/gogoproto/proto"
errorsmod "cosmossdk.io/errors"
+ "cosmossdk.io/x/authz"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/cosmos-sdk/x/authz"
+ authztypes "github.com/cosmos/cosmos-sdk/types/authz"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
@@ -36,29 +37,29 @@ func (TransferAuthorization) MsgTypeURL() string {
}
// Accept implements Authorization.Accept.
-func (a TransferAuthorization) Accept(goCtx context.Context, msg proto.Message) (authz.AcceptResponse, error) {
+func (a TransferAuthorization) Accept(goCtx context.Context, msg proto.Message) (authztypes.AcceptResponse, error) {
msgTransfer, ok := msg.(*MsgTransfer)
if !ok {
- return authz.AcceptResponse{}, errorsmod.Wrap(ibcerrors.ErrInvalidType, "type mismatch")
+ return authztypes.AcceptResponse{}, errorsmod.Wrap(ibcerrors.ErrInvalidType, "type mismatch")
}
index := getAllocationIndex(*msgTransfer, a.Allocations)
if index == allocationNotFound {
- return authz.AcceptResponse{}, errorsmod.Wrap(ibcerrors.ErrNotFound, "requested port and channel allocation does not exist")
+ return authztypes.AcceptResponse{}, errorsmod.Wrap(ibcerrors.ErrNotFound, "requested port and channel allocation does not exist")
}
if err := validateForwarding(msgTransfer.Forwarding, a.Allocations[index].AllowedForwarding); err != nil {
- return authz.AcceptResponse{}, err
+ return authztypes.AcceptResponse{}, err
}
ctx := sdk.UnwrapSDKContext(goCtx)
if !isAllowedAddress(ctx, msgTransfer.Receiver, a.Allocations[index].AllowList) {
- return authz.AcceptResponse{}, errorsmod.Wrap(ibcerrors.ErrInvalidAddress, "not allowed receiver address for transfer")
+ return authztypes.AcceptResponse{}, errorsmod.Wrap(ibcerrors.ErrInvalidAddress, "not allowed receiver address for transfer")
}
if err := validateMemo(ctx, msgTransfer.Memo, a.Allocations[index].AllowedPacketData); err != nil {
- return authz.AcceptResponse{}, err
+ return authztypes.AcceptResponse{}, err
}
// bool flag to see if we have updated any of the allocations
@@ -74,7 +75,7 @@ func (a TransferAuthorization) Accept(goCtx context.Context, msg proto.Message)
limitLeft, isNegative := a.Allocations[index].SpendLimit.SafeSub(coin)
if isNegative {
- return authz.AcceptResponse{}, errorsmod.Wrapf(ibcerrors.ErrInsufficientFunds, "requested amount of token %s is more than spend limit", coin.Denom)
+ return authztypes.AcceptResponse{}, errorsmod.Wrapf(ibcerrors.ErrInsufficientFunds, "requested amount of token %s is more than spend limit", coin.Denom)
}
allocationModified = true
@@ -91,14 +92,14 @@ func (a TransferAuthorization) Accept(goCtx context.Context, msg proto.Message)
}
if len(a.Allocations) == 0 {
- return authz.AcceptResponse{Accept: true, Delete: true}, nil
+ return authztypes.AcceptResponse{Accept: true, Delete: true}, nil
}
if !allocationModified {
- return authz.AcceptResponse{Accept: true, Delete: false, Updated: nil}, nil
+ return authztypes.AcceptResponse{Accept: true, Delete: false, Updated: nil}, nil
}
- return authz.AcceptResponse{Accept: true, Delete: false, Updated: &TransferAuthorization{
+ return authztypes.AcceptResponse{Accept: true, Delete: false, Updated: &TransferAuthorization{
Allocations: a.Allocations,
}}, nil
}
diff --git a/modules/apps/transfer/types/transfer_authorization_test.go b/modules/apps/transfer/types/transfer_authorization_test.go
index a02bc51a2f4..a97d9246ef4 100644
--- a/modules/apps/transfer/types/transfer_authorization_test.go
+++ b/modules/apps/transfer/types/transfer_authorization_test.go
@@ -6,7 +6,7 @@ import (
sdkmath "cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/cosmos-sdk/x/authz"
+ authztypes "github.com/cosmos/cosmos-sdk/types/authz"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -32,12 +32,12 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
testCases := []struct {
name string
malleate func()
- assertResult func(res authz.AcceptResponse, err error)
+ assertResult func(res authztypes.AcceptResponse, err error)
}{
{
"success",
func() {},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -50,7 +50,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
func() {
msgTransfer.Token = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(50))
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -68,7 +68,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
func() {
transferAuthz.Allocations[0].AllowList = []string{}
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -81,7 +81,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
func() {
transferAuthz.Allocations[0].SpendLimit = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, types.UnboundedSpendLimit()))
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -95,7 +95,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
allowedList := []string{}
transferAuthz.Allocations[0].AllowedPacketData = allowedList
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -111,7 +111,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
transferAuthz.Allocations[0].AllowedForwarding = forwardingWithValidHop
msgTransfer.Forwarding = types.NewForwarding(false, validHop)
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -126,7 +126,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
transferAuthz.Allocations[0].AllowedPacketData = allowedList
msgTransfer.Memo = testMemo1
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -142,7 +142,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
transferAuthz.Allocations[0].AllowedForwarding = forwardingWithValidHop
msgTransfer.Forwarding = types.NewForwarding(false, validHop)
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -157,7 +157,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
transferAuthz.Allocations[0].AllowedPacketData = allowedList
msgTransfer.Memo = testMemo1
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -172,7 +172,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
transferAuthz.Allocations[0].AllowedPacketData = allowedList
msgTransfer.Memo = testMemo1
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
},
},
@@ -183,7 +183,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
transferAuthz.Allocations[0].AllowedPacketData = allowedList
msgTransfer.Memo = testMemo2
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
suite.Require().ErrorContains(err, fmt.Sprintf("not allowed memo: %s", testMemo2))
},
@@ -199,7 +199,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
)
msgTransfer.Token = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(50))
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
updatedTransferAuthz, ok := res.Updated.(*types.TransferAuthorization)
@@ -221,7 +221,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
msgTransfer.SourcePort = ibctesting.MockPort
msgTransfer.SourceChannel = "channel-9"
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
},
},
@@ -230,7 +230,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
func() {
msgTransfer.Token = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000))
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
},
},
@@ -239,7 +239,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
func() {
msgTransfer.Receiver = suite.chainB.SenderAccount.GetAddress().String()
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
},
},
@@ -270,7 +270,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
nil,
)
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
@@ -296,7 +296,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
},
}
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
},
@@ -313,7 +313,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
},
}
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().NoError(err)
suite.Require().True(res.Accept)
},
@@ -348,7 +348,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
nil,
)
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().ErrorIs(err, ibcerrors.ErrInsufficientFunds)
suite.Require().False(res.Accept)
suite.Require().False(res.Delete)
@@ -385,7 +385,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
nil,
)
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().ErrorIs(err, ibcerrors.ErrInsufficientFunds)
suite.Require().False(res.Accept)
suite.Require().False(res.Delete)
@@ -409,7 +409,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
},
}
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
suite.Require().False(res.Accept)
},
@@ -430,7 +430,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
},
}
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
suite.Require().False(res.Accept)
},
@@ -442,7 +442,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
types.NewHop(ibctesting.MockPort, "channel-1"),
)
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
suite.Require().False(res.Accept)
},
@@ -463,7 +463,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
},
}
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
suite.Require().False(res.Accept)
},
@@ -474,7 +474,7 @@ func (suite *TypesTestSuite) TestTransferAuthorizationAccept() {
func() {
msgTransfer.Forwarding = types.NewForwarding(true)
},
- func(res authz.AcceptResponse, err error) {
+ func(res authztypes.AcceptResponse, err error) {
suite.Require().Error(err)
suite.Require().False(res.Accept)
},
diff --git a/modules/apps/transfer/v2/ibc_module.go b/modules/apps/transfer/v2/ibc_module.go
index 19aa3db5292..84b25e259db 100644
--- a/modules/apps/transfer/v2/ibc_module.go
+++ b/modules/apps/transfer/v2/ibc_module.go
@@ -8,7 +8,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/v2/keeper"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -63,13 +62,15 @@ func (im *IBCModule) OnRecvPacket(ctx context.Context, sourceChannel string, des
// we are explicitly wrapping this emit event call in an anonymous function so that
// the packet data is evaluated after it has been assigned a value.
defer func() {
- events.EmitOnRecvPacketEvent(ctx, data, ack, ackErr)
+ if err := im.keeper.EmitOnRecvPacketEvent(ctx, data, ack, ackErr); err != nil {
+ im.keeper.Logger.Error(fmt.Sprintf("failed to emit %T event", types.EventTypeRecvPacket), "error", err)
+ }
}()
data, ackErr = transfertypes.UnmarshalPacketData(payload.Value, payload.Version, payload.Encoding)
if ackErr != nil {
ack = channeltypes.NewErrorAcknowledgement(ackErr)
- im.keeper.Logger(ctx).Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), sequence))
+ im.keeper.Logger.Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), sequence))
return types.RecvPacketResult{
Status: types.PacketStatus_Failure,
Acknowledgement: ack.Acknowledgement(),
@@ -78,14 +79,14 @@ func (im *IBCModule) OnRecvPacket(ctx context.Context, sourceChannel string, des
if ackErr = im.keeper.OnRecvPacket(ctx, sourceChannel, destinationChannel, payload, data); ackErr != nil {
ack = channeltypes.NewErrorAcknowledgement(ackErr)
- im.keeper.Logger(ctx).Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), sequence))
+ im.keeper.Logger.Error(fmt.Sprintf("%s sequence %d", ackErr.Error(), sequence))
return types.RecvPacketResult{
Status: types.PacketStatus_Failure,
Acknowledgement: ack.Acknowledgement(),
}
}
- im.keeper.Logger(ctx).Info("successfully handled ICS-20 packet", "sequence", sequence)
+ im.keeper.Logger.Info("successfully handled ICS-20 packet", "sequence", sequence)
if data.HasForwarding() {
// NOTE: acknowledgement will be written asynchronously
@@ -109,8 +110,7 @@ func (im *IBCModule) OnTimeoutPacket(ctx context.Context, sourceChannel string,
return err
}
- events.EmitOnTimeoutEvent(ctx, data)
- return nil
+ return im.keeper.EmitOnTimeoutEvent(ctx, data)
}
func (im *IBCModule) OnAcknowledgementPacket(ctx context.Context, sourceChannel string, destinationChannel string, sequence uint64, acknowledgement []byte, payload types.Payload, relayer sdk.AccAddress) error {
@@ -128,6 +128,5 @@ func (im *IBCModule) OnAcknowledgementPacket(ctx context.Context, sourceChannel
return err
}
- events.EmitOnAcknowledgementPacketEvent(ctx, data, ack)
- return nil
+ return im.keeper.EmitOnAcknowledgementPacketEvent(ctx, data, ack)
}
diff --git a/modules/apps/transfer/v2/keeper/keeper.go b/modules/apps/transfer/v2/keeper/keeper.go
index 734630a724f..cb2d271c6f2 100644
--- a/modules/apps/transfer/v2/keeper/keeper.go
+++ b/modules/apps/transfer/v2/keeper/keeper.go
@@ -9,7 +9,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events"
transferkeeper "github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper"
"github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -59,7 +58,7 @@ func (k *Keeper) OnSendPacket(ctx context.Context, sourceChannel string, payload
}
if err := k.BankKeeper.BurnCoins(
- ctx, types.ModuleName, sdk.NewCoins(coin),
+ ctx, k.AuthKeeper.GetModuleAddress(types.ModuleName), sdk.NewCoins(coin),
); err != nil {
// NOTE: should not happen as the module account was
// retrieved on the step above and it has enough balance
@@ -149,7 +148,9 @@ func (k *Keeper) OnRecvPacket(ctx context.Context, sourceChannel, destChannel st
k.SetDenomMetadata(ctx, token.Denom)
}
- events.EmitDenomEvent(ctx, token)
+ if err := k.EmitDenomEvent(ctx, token); err != nil {
+ return err
+ }
voucher := sdk.NewCoin(voucherDenom, transferAmount)
diff --git a/modules/apps/transfer/v2/keeper/msg_server_test.go b/modules/apps/transfer/v2/keeper/msg_server_test.go
index 076aca171f8..e12cdf43cb5 100644
--- a/modules/apps/transfer/v2/keeper/msg_server_test.go
+++ b/modules/apps/transfer/v2/keeper/msg_server_test.go
@@ -9,10 +9,7 @@ import (
sdkmath "cosmossdk.io/math"
- "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
sdk "github.com/cosmos/cosmos-sdk/types"
- vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
@@ -67,94 +64,95 @@ func (suite *KeeperTestSuite) TestMsgSendPacketTransfer() {
},
nil,
},
- {
- "successful transfer of entire spendable balance with vesting account",
- func() {
- // create vesting account
- vestingAccPrivKey := secp256k1.GenPrivKey()
- vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
-
- vestingCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, ibctesting.DefaultCoinAmount))
- _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
- suite.chainA.SenderAccount.GetAddress(),
- vestingAccAddress,
- vestingCoins,
- suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
- false,
- ))
- suite.Require().NoError(err)
-
- // transfer some spendable coins to vesting account
- spendableAmount := sdkmath.NewInt(42)
- transferCoins := sdk.NewCoins(sdk.NewCoin(vestingCoins[0].Denom, spendableAmount))
- _, err = suite.chainA.SendMsgs(banktypes.NewMsgSend(suite.chainA.SenderAccount.GetAddress(), vestingAccAddress, transferCoins))
- suite.Require().NoError(err)
-
- // just to prove that the vesting account has a balance (but only spendableAmount is spendable)
- vestingAccBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), vestingAccAddress, vestingCoins[0].Denom)
- suite.Require().Equal(vestingCoins[0].Amount.Uint64()+spendableAmount.Uint64(), vestingAccBalance.Amount.Uint64())
- vestinSpendableBalance := suite.chainA.GetSimApp().BankKeeper.SpendableCoins(suite.chainA.GetContext(), vestingAccAddress)
- suite.Require().Equal(spendableAmount.Uint64(), vestinSpendableBalance.AmountOf(vestingCoins[0].Denom).Uint64())
-
- bz, err := ics20lib.EncodeFungibleTokenPacketData(ics20lib.ICS20LibFungibleTokenPacketData{
- Denom: sdk.DefaultBondDenom,
- Amount: transfertypes.UnboundedSpendLimit().BigInt(),
- Sender: vestingAccAddress.String(),
- Receiver: suite.chainB.SenderAccount.GetAddress().String(),
- Memo: "",
- })
- suite.Require().NoError(err)
- payload = channeltypesv2.NewPayload(transfertypes.ModuleName, transfertypes.ModuleName, transfertypes.V1, transfertypes.EncodingABI, bz)
-
- sender = suite.chainA.GetSenderAccount(vestingAccPrivKey)
-
- expEscrowAmounts = []transfertypes.Token{
- {
- Denom: transfertypes.NewDenom(sdk.DefaultBondDenom),
- Amount: spendableAmount.String(), // The only spendable amount
- },
- }
- },
- nil,
- },
- {
- "failure: no spendable coins for vesting account",
- func() {
- // create vesting account
- vestingAccPrivKey := secp256k1.GenPrivKey()
- vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
-
- vestingCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, ibctesting.DefaultCoinAmount))
- _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
- suite.chainA.SenderAccount.GetAddress(),
- vestingAccAddress,
- vestingCoins,
- suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
- false,
- ))
- suite.Require().NoError(err)
-
- // just to prove that the vesting account has a balance (but not spendable)
- vestingAccBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), vestingAccAddress, vestingCoins[0].Denom)
- suite.Require().Equal(vestingCoins[0].Amount.Uint64(), vestingAccBalance.Amount.Uint64())
- vestinSpendableBalance := suite.chainA.GetSimApp().BankKeeper.SpendableCoins(suite.chainA.GetContext(), vestingAccAddress)
- suite.Require().Zero(vestinSpendableBalance.AmountOf(vestingCoins[0].Denom).Uint64())
-
- // try to transfer the entire spendable balance (which is zero)
- bz, err := ics20lib.EncodeFungibleTokenPacketData(ics20lib.ICS20LibFungibleTokenPacketData{
- Denom: sdk.DefaultBondDenom,
- Amount: transfertypes.UnboundedSpendLimit().BigInt(),
- Sender: vestingAccAddress.String(),
- Receiver: suite.chainB.SenderAccount.GetAddress().String(),
- Memo: "",
- })
- suite.Require().NoError(err)
- payload = channeltypesv2.NewPayload(transfertypes.ModuleName, transfertypes.ModuleName, transfertypes.V1, transfertypes.EncodingABI, bz)
-
- sender = suite.chainA.GetSenderAccount(vestingAccPrivKey)
- },
- transfertypes.ErrInvalidAmount,
- },
+ // TODO: Update
+ // {
+ // "successful transfer of entire spendable balance with vesting account",
+ // func() {
+ // // create vesting account
+ // vestingAccPrivKey := secp256k1.GenPrivKey()
+ // vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
+ //
+ // vestingCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, ibctesting.DefaultCoinAmount))
+ // _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
+ // suite.chainA.SenderAccount.GetAddress(),
+ // vestingAccAddress,
+ // vestingCoins,
+ // suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
+ // false,
+ // ))
+ // suite.Require().NoError(err)
+ //
+ // // transfer some spendable coins to vesting account
+ // spendableAmount := sdkmath.NewInt(42)
+ // transferCoins := sdk.NewCoins(sdk.NewCoin(vestingCoins[0].Denom, spendableAmount))
+ // _, err = suite.chainA.SendMsgs(banktypes.NewMsgSend(suite.chainA.SenderAccount.GetAddress(), vestingAccAddress, transferCoins))
+ // suite.Require().NoError(err)
+ //
+ // // just to prove that the vesting account has a balance (but only spendableAmount is spendable)
+ // vestingAccBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), vestingAccAddress, vestingCoins[0].Denom)
+ // suite.Require().Equal(vestingCoins[0].Amount.Uint64()+spendableAmount.Uint64(), vestingAccBalance.Amount.Uint64())
+ // vestinSpendableBalance := suite.chainA.GetSimApp().BankKeeper.SpendableCoins(suite.chainA.GetContext(), vestingAccAddress)
+ // suite.Require().Equal(spendableAmount.Uint64(), vestinSpendableBalance.AmountOf(vestingCoins[0].Denom).Uint64())
+ //
+ // bz, err := ics20lib.EncodeFungibleTokenPacketData(ics20lib.ICS20LibFungibleTokenPacketData{
+ // Denom: sdk.DefaultBondDenom,
+ // Amount: transfertypes.UnboundedSpendLimit().BigInt(),
+ // Sender: vestingAccAddress.String(),
+ // Receiver: suite.chainB.SenderAccount.GetAddress().String(),
+ // Memo: "",
+ // })
+ // suite.Require().NoError(err)
+ // payload = channeltypesv2.NewPayload(transfertypes.ModuleName, transfertypes.ModuleName, transfertypes.V1, transfertypes.EncodingABI, bz)
+ //
+ // sender = suite.chainA.GetSenderAccount(vestingAccPrivKey)
+ //
+ // expEscrowAmounts = []transfertypes.Token{
+ // {
+ // Denom: transfertypes.NewDenom(sdk.DefaultBondDenom),
+ // Amount: spendableAmount.String(), // The only spendable amount
+ // },
+ // }
+ // },
+ // nil,
+ // },
+ // {
+ // "failure: no spendable coins for vesting account",
+ // func() {
+ // // create vesting account
+ // vestingAccPrivKey := secp256k1.GenPrivKey()
+ // vestingAccAddress := sdk.AccAddress(vestingAccPrivKey.PubKey().Address())
+ //
+ // vestingCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, ibctesting.DefaultCoinAmount))
+ // _, err := suite.chainA.SendMsgs(vestingtypes.NewMsgCreateVestingAccount(
+ // suite.chainA.SenderAccount.GetAddress(),
+ // vestingAccAddress,
+ // vestingCoins,
+ // suite.chainA.GetContext().BlockTime().Add(time.Hour).Unix(),
+ // false,
+ // ))
+ // suite.Require().NoError(err)
+ //
+ // // just to prove that the vesting account has a balance (but not spendable)
+ // vestingAccBalance := suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), vestingAccAddress, vestingCoins[0].Denom)
+ // suite.Require().Equal(vestingCoins[0].Amount.Uint64(), vestingAccBalance.Amount.Uint64())
+ // vestinSpendableBalance := suite.chainA.GetSimApp().BankKeeper.SpendableCoins(suite.chainA.GetContext(), vestingAccAddress)
+ // suite.Require().Zero(vestinSpendableBalance.AmountOf(vestingCoins[0].Denom).Uint64())
+ //
+ // // try to transfer the entire spendable balance (which is zero)
+ // bz, err := ics20lib.EncodeFungibleTokenPacketData(ics20lib.ICS20LibFungibleTokenPacketData{
+ // Denom: sdk.DefaultBondDenom,
+ // Amount: transfertypes.UnboundedSpendLimit().BigInt(),
+ // Sender: vestingAccAddress.String(),
+ // Receiver: suite.chainB.SenderAccount.GetAddress().String(),
+ // Memo: "",
+ // })
+ // suite.Require().NoError(err)
+ // payload = channeltypesv2.NewPayload(transfertypes.ModuleName, transfertypes.ModuleName, transfertypes.V1, transfertypes.EncodingABI, bz)
+ //
+ // sender = suite.chainA.GetSenderAccount(vestingAccPrivKey)
+ // },
+ // transfertypes.ErrInvalidAmount,
+ // },
{
"failure: send transfers disabled",
func() {
diff --git a/modules/core/02-client/abci.go b/modules/core/02-client/abci.go
index 1b582a36e93..8117ee01910 100644
--- a/modules/core/02-client/abci.go
+++ b/modules/core/02-client/abci.go
@@ -1,6 +1,8 @@
package client
import (
+ "context"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/keeper"
@@ -9,7 +11,11 @@ import (
)
// BeginBlocker is used to perform IBC client upgrades
-func BeginBlocker(ctx sdk.Context, k *keeper.Keeper) {
+func BeginBlocker(goCtx context.Context, k *keeper.Keeper) {
+ // TODO: In order to fully migrate away from sdk.Context here we will need to depend on comet service in order
+ // to consume the full block header as Env only contains header.Info (where we cannot access next vals hash)
+ ctx := sdk.UnwrapSDKContext(goCtx)
+
plan, err := k.GetUpgradePlan(ctx)
if err == nil {
// Once we are at the last block this chain will commit, set the upgraded consensus state
@@ -29,7 +35,9 @@ func BeginBlocker(ctx sdk.Context, k *keeper.Keeper) {
// SetUpgradedConsensusState always returns nil, hence the blank here.
_ = k.SetUpgradedConsensusState(ctx, plan.Height, bz)
- keeper.EmitUpgradeChainEvent(ctx, plan.Height)
+ if err := k.EmitUpgradeChainEvent(ctx, plan.Height); err != nil {
+ k.Logger.Error("error in events emission", "error", err.Error())
+ }
}
}
}
diff --git a/modules/core/02-client/abci_test.go b/modules/core/02-client/abci_test.go
index fbd1970e7f3..dfcf8281acd 100644
--- a/modules/core/02-client/abci_test.go
+++ b/modules/core/02-client/abci_test.go
@@ -10,7 +10,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
client "github.com/cosmos/ibc-go/v9/modules/core/02-client"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
diff --git a/modules/core/02-client/client/cli/tx.go b/modules/core/02-client/client/cli/tx.go
index 223343dbfd9..52a86453b6c 100644
--- a/modules/core/02-client/client/cli/tx.go
+++ b/modules/core/02-client/client/cli/tx.go
@@ -7,6 +7,8 @@ import (
"github.com/spf13/cobra"
+ govcli "cosmossdk.io/x/gov/client/cli"
+ govtypes "cosmossdk.io/x/gov/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/cosmos/cosmos-sdk/client"
@@ -16,8 +18,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
"github.com/cosmos/cosmos-sdk/version"
- govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
diff --git a/modules/core/02-client/genesis.go b/modules/core/02-client/genesis.go
index 8737a40a910..5dfa5ef5a73 100644
--- a/modules/core/02-client/genesis.go
+++ b/modules/core/02-client/genesis.go
@@ -1,11 +1,10 @@
package client
import (
+ "context"
"errors"
"fmt"
- sdk "github.com/cosmos/cosmos-sdk/types"
-
"github.com/cosmos/ibc-go/v9/modules/core/02-client/keeper"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -13,7 +12,7 @@ import (
// InitGenesis initializes the ibc client submodule's state from a provided genesis
// state.
-func InitGenesis(ctx sdk.Context, k *keeper.Keeper, gs types.GenesisState) {
+func InitGenesis(ctx context.Context, k *keeper.Keeper, gs types.GenesisState) error {
if err := gs.Params.Validate(); err != nil {
panic(fmt.Errorf("invalid ibc client genesis state parameters: %v", err))
}
@@ -28,11 +27,11 @@ func InitGenesis(ctx sdk.Context, k *keeper.Keeper, gs types.GenesisState) {
for _, client := range gs.Clients {
cs, ok := client.ClientState.GetCachedValue().(exported.ClientState)
if !ok {
- panic(errors.New("invalid client state"))
+ return errors.New("invalid client state")
}
if !gs.Params.IsAllowedClient(cs.ClientType()) {
- panic(fmt.Errorf("client state type %s is not registered on the allowlist", cs.ClientType()))
+ return fmt.Errorf("client state type %s is not registered on the allowlist", cs.ClientType())
}
k.SetClientState(ctx, client.ClientId, cs)
@@ -42,7 +41,7 @@ func InitGenesis(ctx sdk.Context, k *keeper.Keeper, gs types.GenesisState) {
for _, consState := range cs.ConsensusStates {
consensusState, ok := consState.ConsensusState.GetCachedValue().(exported.ConsensusState)
if !ok {
- panic(fmt.Errorf("invalid consensus state with client ID %s at height %s", cs.ClientId, consState.Height))
+ return fmt.Errorf("invalid consensus state with client ID %s at height %s", cs.ClientId, consState.Height)
}
k.SetClientConsensusState(ctx, cs.ClientId, consState.Height, consensusState)
@@ -50,16 +49,17 @@ func InitGenesis(ctx sdk.Context, k *keeper.Keeper, gs types.GenesisState) {
}
k.SetNextClientSequence(ctx, gs.NextClientSequence)
+ return nil
}
// ExportGenesis returns the ibc client submodule's exported genesis.
// NOTE: the export process is not optimized, it will iterate three
// times over the 02-client sub-store.
-func ExportGenesis(ctx sdk.Context, k *keeper.Keeper) types.GenesisState {
+func ExportGenesis(ctx context.Context, k *keeper.Keeper) (types.GenesisState, error) {
genClients := k.GetAllGenesisClients(ctx)
clientsMetadata, err := k.GetAllClientMetadata(ctx, genClients)
if err != nil {
- panic(err)
+ return types.GenesisState{}, err
}
return types.GenesisState{
Clients: genClients,
@@ -69,5 +69,5 @@ func ExportGenesis(ctx sdk.Context, k *keeper.Keeper) types.GenesisState {
// Warning: CreateLocalhost is deprecated
CreateLocalhost: false,
NextClientSequence: k.GetNextClientSequence(ctx),
- }
+ }, nil
}
diff --git a/modules/core/02-client/keeper/client.go b/modules/core/02-client/keeper/client.go
index 422fca31ba3..99a14adb1a4 100644
--- a/modules/core/02-client/keeper/client.go
+++ b/modules/core/02-client/keeper/client.go
@@ -1,9 +1,9 @@
package keeper
import (
- errorsmod "cosmossdk.io/errors"
+ "context"
- sdk "github.com/cosmos/cosmos-sdk/types"
+ errorsmod "cosmossdk.io/errors"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -15,7 +15,7 @@ import (
// client identifier. The light client module is responsible for setting any client-specific data in the store
// via the Initialize method. This includes the client state, initial consensus state and any associated
// metadata. The generated client identifier will be returned if a client was successfully initialized.
-func (k *Keeper) CreateClient(ctx sdk.Context, clientType string, clientState, consensusState []byte) (string, error) {
+func (k *Keeper) CreateClient(ctx context.Context, clientType string, clientState, consensusState []byte) (string, error) {
if clientType == exported.Localhost {
return "", errorsmod.Wrapf(types.ErrInvalidClientType, "cannot create client of type: %s", clientType)
}
@@ -36,16 +36,18 @@ func (k *Keeper) CreateClient(ctx sdk.Context, clientType string, clientState, c
}
initialHeight := clientModule.LatestHeight(ctx, clientID)
- k.Logger(ctx).Info("client created at height", "client-id", clientID, "height", initialHeight.String())
+ k.Logger.Info("client created at height", "client-id", clientID, "height", initialHeight.String())
defer telemetry.ReportCreateClient(clientType)
- emitCreateClientEvent(ctx, clientID, clientType, initialHeight)
+ if err := k.emitCreateClientEvent(ctx, clientID, clientType, initialHeight); err != nil {
+ return "", err
+ }
return clientID, nil
}
// UpdateClient updates the consensus state and the state root from a provided header.
-func (k *Keeper) UpdateClient(ctx sdk.Context, clientID string, clientMsg exported.ClientMessage) error {
+func (k *Keeper) UpdateClient(ctx context.Context, clientID string, clientMsg exported.ClientMessage) error {
clientModule, err := k.Route(ctx, clientID)
if err != nil {
return err
@@ -63,33 +65,27 @@ func (k *Keeper) UpdateClient(ctx sdk.Context, clientID string, clientMsg export
if foundMisbehaviour {
clientModule.UpdateStateOnMisbehaviour(ctx, clientID, clientMsg)
- k.Logger(ctx).Info("client frozen due to misbehaviour", "client-id", clientID)
+ k.Logger.Info("client frozen due to misbehaviour", "client-id", clientID)
clientType := types.MustParseClientIdentifier(clientID)
defer telemetry.ReportUpdateClient(foundMisbehaviour, clientType, clientID)
- emitSubmitMisbehaviourEvent(ctx, clientID, clientType)
- return nil
+ return k.emitSubmitMisbehaviourEvent(ctx, clientID, clientType)
}
consensusHeights := clientModule.UpdateState(ctx, clientID, clientMsg)
- k.Logger(ctx).Info("client state updated", "client-id", clientID, "heights", consensusHeights)
+ k.Logger.Info("client state updated", "client-id", clientID, "heights", consensusHeights)
clientType := types.MustParseClientIdentifier(clientID)
defer telemetry.ReportUpdateClient(foundMisbehaviour, clientType, clientID)
- emitUpdateClientEvent(ctx, clientID, clientType, consensusHeights, k.cdc, clientMsg)
- return nil
+ return k.emitUpdateClientEvent(ctx, clientID, clientType, consensusHeights, k.cdc, clientMsg)
}
// UpgradeClient upgrades the client to a new client state if this new client was committed to
// by the old client at the specified upgrade height
-func (k *Keeper) UpgradeClient(
- ctx sdk.Context,
- clientID string,
- upgradedClient, upgradedConsState, upgradeClientProof, upgradeConsensusStateProof []byte,
-) error {
+func (k *Keeper) UpgradeClient(ctx context.Context, clientID string, upgradedClient, upgradedConsState, upgradeClientProof, upgradeConsensusStateProof []byte) error {
clientModule, err := k.Route(ctx, clientID)
if err != nil {
return err
@@ -104,13 +100,12 @@ func (k *Keeper) UpgradeClient(
}
latestHeight := clientModule.LatestHeight(ctx, clientID)
- k.Logger(ctx).Info("client state upgraded", "client-id", clientID, "height", latestHeight.String())
+ k.Logger.Info("client state upgraded", "client-id", clientID, "height", latestHeight.String())
clientType := types.MustParseClientIdentifier(clientID)
defer telemetry.ReportUpgradeClient(clientType, clientID)
- emitUpgradeClientEvent(ctx, clientID, clientType, latestHeight)
- return nil
+ return k.emitUpgradeClientEvent(ctx, clientID, clientType, latestHeight)
}
// RecoverClient will invoke the light client module associated with the subject clientID requesting it to
@@ -118,7 +113,7 @@ func (k *Keeper) UpgradeClient(
// is responsible for validating the parameters of the substitute (ensuring they match the subject's parameters)
// as well as copying the necessary consensus states from the substitute to the subject client store.
// The substitute must be Active and the subject must not be Active.
-func (k *Keeper) RecoverClient(ctx sdk.Context, subjectClientID, substituteClientID string) error {
+func (k *Keeper) RecoverClient(ctx context.Context, subjectClientID, substituteClientID string) error {
clientModule, err := k.Route(ctx, subjectClientID)
if err != nil {
return errorsmod.Wrap(types.ErrRouteNotFound, subjectClientID)
@@ -142,11 +137,10 @@ func (k *Keeper) RecoverClient(ctx sdk.Context, subjectClientID, substituteClien
return err
}
- k.Logger(ctx).Info("client recovered", "client-id", subjectClientID)
+ k.Logger.Info("client recovered", "client-id", subjectClientID)
clientType := types.MustParseClientIdentifier(subjectClientID)
defer telemetry.ReportRecoverClient(clientType, subjectClientID)
- emitRecoverClientEvent(ctx, subjectClientID, clientType)
- return nil
+ return k.emitRecoverClientEvent(ctx, subjectClientID, clientType)
}
diff --git a/modules/core/02-client/keeper/client_test.go b/modules/core/02-client/keeper/client_test.go
index 7f7f5ea7291..f1913286925 100644
--- a/modules/core/02-client/keeper/client_test.go
+++ b/modules/core/02-client/keeper/client_test.go
@@ -10,7 +10,7 @@ import (
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
commitmenttypes "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types"
diff --git a/modules/core/02-client/keeper/events.go b/modules/core/02-client/keeper/events.go
index 6727ede5b7a..0db3e6cc915 100644
--- a/modules/core/02-client/keeper/events.go
+++ b/modules/core/02-client/keeper/events.go
@@ -1,10 +1,12 @@
package keeper
import (
+ "context"
"fmt"
"strconv"
"strings"
+ "cosmossdk.io/core/event"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/cosmos/cosmos-sdk/codec"
@@ -15,23 +17,24 @@ import (
)
// emitCreateClientEvent emits a create client event
-func emitCreateClientEvent(ctx sdk.Context, clientID, clientType string, initialHeight exported.Height) {
- ctx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeCreateClient,
- sdk.NewAttribute(types.AttributeKeyClientID, clientID),
- sdk.NewAttribute(types.AttributeKeyClientType, clientType),
- sdk.NewAttribute(types.AttributeKeyConsensusHeight, initialHeight.String()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitCreateClientEvent(ctx context.Context, clientID, clientType string, initialHeight exported.Height) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeCreateClient,
+ event.NewAttribute(types.AttributeKeyClientID, clientID),
+ event.NewAttribute(types.AttributeKeyClientType, clientType),
+ event.NewAttribute(types.AttributeKeyConsensusHeight, initialHeight.String()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitUpdateClientEvent emits an update client event
-func emitUpdateClientEvent(ctx sdk.Context, clientID string, clientType string, consensusHeights []exported.Height, _ codec.BinaryCodec, _ exported.ClientMessage) {
+func (k *Keeper) emitUpdateClientEvent(ctx context.Context, clientID string, clientType string, consensusHeights []exported.Height, _ codec.BinaryCodec, _ exported.ClientMessage) error {
var consensusHeightAttr string
if len(consensusHeights) != 0 {
consensusHeightAttr = consensusHeights[0].String()
@@ -42,95 +45,101 @@ func emitUpdateClientEvent(ctx sdk.Context, clientID string, clientType string,
consensusHeightsAttr[i] = height.String()
}
- ctx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeUpdateClient,
- sdk.NewAttribute(types.AttributeKeyClientID, clientID),
- sdk.NewAttribute(types.AttributeKeyClientType, clientType),
- // Deprecated: AttributeKeyConsensusHeight is deprecated and will be removed in a future release.
- // Please use AttributeKeyConsensusHeights instead.
- sdk.NewAttribute(types.AttributeKeyConsensusHeight, consensusHeightAttr),
- sdk.NewAttribute(types.AttributeKeyConsensusHeights, strings.Join(consensusHeightsAttr, ",")),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeUpdateClient,
+ event.NewAttribute(types.AttributeKeyClientID, clientID),
+ event.NewAttribute(types.AttributeKeyClientType, clientType),
+ // Deprecated: AttributeKeyConsensusHeight is deprecated and will be removed in a future release.
+ // Please use AttributeKeyConsensusHeights instead.
+ event.NewAttribute(types.AttributeKeyConsensusHeight, consensusHeightAttr),
+ event.NewAttribute(types.AttributeKeyConsensusHeights, strings.Join(consensusHeightsAttr, ",")),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitUpgradeClientEvent emits an upgrade client event
-func emitUpgradeClientEvent(ctx sdk.Context, clientID, clientType string, latestHeight exported.Height) {
- ctx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeUpgradeClient,
- sdk.NewAttribute(types.AttributeKeyClientID, clientID),
- sdk.NewAttribute(types.AttributeKeyClientType, clientType),
- sdk.NewAttribute(types.AttributeKeyConsensusHeight, latestHeight.String()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitUpgradeClientEvent(ctx context.Context, clientID, clientType string, latestHeight exported.Height) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeUpgradeClient,
+ event.NewAttribute(types.AttributeKeyClientID, clientID),
+ event.NewAttribute(types.AttributeKeyClientType, clientType),
+ event.NewAttribute(types.AttributeKeyConsensusHeight, latestHeight.String()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitSubmitMisbehaviourEvent emits a client misbehaviour event
-func emitSubmitMisbehaviourEvent(ctx sdk.Context, clientID string, clientType string) {
- ctx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeSubmitMisbehaviour,
- sdk.NewAttribute(types.AttributeKeyClientID, clientID),
- sdk.NewAttribute(types.AttributeKeyClientType, clientType),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitSubmitMisbehaviourEvent(ctx context.Context, clientID string, clientType string) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeSubmitMisbehaviour,
+ event.NewAttribute(types.AttributeKeyClientID, clientID),
+ event.NewAttribute(types.AttributeKeyClientType, clientType),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitRecoverClientEvent emits a recover client event
-func emitRecoverClientEvent(ctx sdk.Context, clientID, clientType string) {
- ctx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeRecoverClient,
- sdk.NewAttribute(types.AttributeKeySubjectClientID, clientID),
- sdk.NewAttribute(types.AttributeKeyClientType, clientType),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitRecoverClientEvent(ctx context.Context, clientID, clientType string) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeRecoverClient,
+ event.NewAttribute(types.AttributeKeySubjectClientID, clientID),
+ event.NewAttribute(types.AttributeKeyClientType, clientType),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitScheduleIBCSoftwareUpgradeEvent emits a schedule IBC software upgrade event
-func emitScheduleIBCSoftwareUpgradeEvent(ctx sdk.Context, title string, height int64) {
- ctx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeScheduleIBCSoftwareUpgrade,
- sdk.NewAttribute(types.AttributeKeyUpgradePlanTitle, title),
- sdk.NewAttribute(types.AttributeKeyUpgradePlanHeight, fmt.Sprintf("%d", height)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitScheduleIBCSoftwareUpgradeEvent(ctx context.Context, title string, height int64) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeScheduleIBCSoftwareUpgrade,
+ event.NewAttribute(types.AttributeKeyUpgradePlanTitle, title),
+ event.NewAttribute(types.AttributeKeyUpgradePlanHeight, fmt.Sprintf("%d", height)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitUpgradeChainEvent emits an upgrade chain event.
-func EmitUpgradeChainEvent(ctx sdk.Context, height int64) {
- ctx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeUpgradeChain,
- sdk.NewAttribute(types.AttributeKeyUpgradePlanHeight, strconv.FormatInt(height, 10)),
- sdk.NewAttribute(types.AttributeKeyUpgradeStore, upgradetypes.StoreKey), // which store to query proof of consensus state from
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitUpgradeChainEvent(ctx context.Context, height int64) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeUpgradeChain,
+ event.NewAttribute(types.AttributeKeyUpgradePlanHeight, strconv.FormatInt(height, 10)),
+ event.NewAttribute(types.AttributeKeyUpgradeStore, upgradetypes.StoreKey), // which store to query proof of consensus state from
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
diff --git a/modules/core/02-client/keeper/grpc_query.go b/modules/core/02-client/keeper/grpc_query.go
index e0dafbd3294..3f7aa9ac3e6 100644
--- a/modules/core/02-client/keeper/grpc_query.go
+++ b/modules/core/02-client/keeper/grpc_query.go
@@ -39,7 +39,7 @@ func NewQueryServer(k *Keeper) types.QueryServer {
}
// ClientState implements the Query/ClientState gRPC method
-func (q *queryServer) ClientState(c context.Context, req *types.QueryClientStateRequest) (*types.QueryClientStateResponse, error) {
+func (q *queryServer) ClientState(ctx context.Context, req *types.QueryClientStateRequest) (*types.QueryClientStateResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -48,7 +48,6 @@ func (q *queryServer) ClientState(c context.Context, req *types.QueryClientState
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
clientState, found := q.GetClientState(ctx, req.ClientId)
if !found {
return nil, status.Error(
@@ -70,15 +69,13 @@ func (q *queryServer) ClientState(c context.Context, req *types.QueryClientState
}
// ClientStates implements the Query/ClientStates gRPC method
-func (q *queryServer) ClientStates(c context.Context, req *types.QueryClientStatesRequest) (*types.QueryClientStatesResponse, error) {
+func (q *queryServer) ClientStates(ctx context.Context, req *types.QueryClientStatesRequest) (*types.QueryClientStatesResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(c)
-
var clientStates types.IdentifiedClientStates
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), host.KeyClientStorePrefix)
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), host.KeyClientStorePrefix)
pageRes, err := query.FilteredPaginate(store, req.Pagination, func(key, value []byte, accumulate bool) (bool, error) {
// filter any metadata stored under client state key
@@ -114,7 +111,7 @@ func (q *queryServer) ClientStates(c context.Context, req *types.QueryClientStat
}
// ConsensusState implements the Query/ConsensusState gRPC method
-func (q *queryServer) ConsensusState(c context.Context, req *types.QueryConsensusStateRequest) (*types.QueryConsensusStateResponse, error) {
+func (q *queryServer) ConsensusState(ctx context.Context, req *types.QueryConsensusStateRequest) (*types.QueryConsensusStateResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -123,8 +120,6 @@ func (q *queryServer) ConsensusState(c context.Context, req *types.QueryConsensu
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
-
var (
consensusState exported.ConsensusState
found bool
@@ -161,7 +156,7 @@ func (q *queryServer) ConsensusState(c context.Context, req *types.QueryConsensu
}
// ConsensusStates implements the Query/ConsensusStates gRPC method
-func (q *queryServer) ConsensusStates(c context.Context, req *types.QueryConsensusStatesRequest) (*types.QueryConsensusStatesResponse, error) {
+func (q *queryServer) ConsensusStates(ctx context.Context, req *types.QueryConsensusStatesRequest) (*types.QueryConsensusStatesResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -170,10 +165,8 @@ func (q *queryServer) ConsensusStates(c context.Context, req *types.QueryConsens
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
-
var consensusStates []types.ConsensusStateWithHeight
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), host.FullClientKey(req.ClientId, []byte(fmt.Sprintf("%s/", host.KeyConsensusStatePrefix))))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), host.FullClientKey(req.ClientId, []byte(fmt.Sprintf("%s/", host.KeyConsensusStatePrefix))))
pageRes, err := query.FilteredPaginate(store, req.Pagination, func(key, value []byte, accumulate bool) (bool, error) {
// filter any metadata stored under consensus state key
@@ -205,7 +198,7 @@ func (q *queryServer) ConsensusStates(c context.Context, req *types.QueryConsens
}
// ConsensusStateHeights implements the Query/ConsensusStateHeights gRPC method
-func (q *queryServer) ConsensusStateHeights(c context.Context, req *types.QueryConsensusStateHeightsRequest) (*types.QueryConsensusStateHeightsResponse, error) {
+func (q *queryServer) ConsensusStateHeights(ctx context.Context, req *types.QueryConsensusStateHeightsRequest) (*types.QueryConsensusStateHeightsResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -214,10 +207,8 @@ func (q *queryServer) ConsensusStateHeights(c context.Context, req *types.QueryC
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
-
var consensusStateHeights []types.Height
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), host.FullClientKey(req.ClientId, []byte(fmt.Sprintf("%s/", host.KeyConsensusStatePrefix))))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), host.FullClientKey(req.ClientId, []byte(fmt.Sprintf("%s/", host.KeyConsensusStatePrefix))))
pageRes, err := query.FilteredPaginate(store, req.Pagination, func(key, _ []byte, accumulate bool) (bool, error) {
// filter any metadata stored under consensus state key
@@ -244,7 +235,7 @@ func (q *queryServer) ConsensusStateHeights(c context.Context, req *types.QueryC
}
// ClientStatus implements the Query/ClientStatus gRPC method
-func (q *queryServer) ClientStatus(c context.Context, req *types.QueryClientStatusRequest) (*types.QueryClientStatusResponse, error) {
+func (q *queryServer) ClientStatus(ctx context.Context, req *types.QueryClientStatusRequest) (*types.QueryClientStatusResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -253,7 +244,6 @@ func (q *queryServer) ClientStatus(c context.Context, req *types.QueryClientStat
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
clientStatus := q.GetClientStatus(ctx, req.ClientId)
return &types.QueryClientStatusResponse{
@@ -262,8 +252,7 @@ func (q *queryServer) ClientStatus(c context.Context, req *types.QueryClientStat
}
// ClientParams implements the Query/ClientParams gRPC method
-func (q *queryServer) ClientParams(c context.Context, _ *types.QueryClientParamsRequest) (*types.QueryClientParamsResponse, error) {
- ctx := sdk.UnwrapSDKContext(c)
+func (q *queryServer) ClientParams(ctx context.Context, _ *types.QueryClientParamsRequest) (*types.QueryClientParamsResponse, error) {
params := q.GetParams(ctx)
return &types.QueryClientParamsResponse{
@@ -272,13 +261,11 @@ func (q *queryServer) ClientParams(c context.Context, _ *types.QueryClientParams
}
// UpgradedClientState implements the Query/UpgradedClientState gRPC method
-func (q *queryServer) UpgradedClientState(c context.Context, req *types.QueryUpgradedClientStateRequest) (*types.QueryUpgradedClientStateResponse, error) {
+func (q *queryServer) UpgradedClientState(ctx context.Context, req *types.QueryUpgradedClientStateRequest) (*types.QueryUpgradedClientStateResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(c)
-
plan, err := q.GetUpgradePlan(ctx)
if err != nil {
return nil, status.Error(codes.NotFound, err.Error())
@@ -307,16 +294,15 @@ func (q *queryServer) UpgradedClientState(c context.Context, req *types.QueryUpg
}
// UpgradedConsensusState implements the Query/UpgradedConsensusState gRPC method
-func (q *queryServer) UpgradedConsensusState(c context.Context, req *types.QueryUpgradedConsensusStateRequest) (*types.QueryUpgradedConsensusStateResponse, error) {
+func (q *queryServer) UpgradedConsensusState(ctx context.Context, req *types.QueryUpgradedConsensusStateRequest) (*types.QueryUpgradedConsensusStateResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(c)
-
- bz, err := q.GetUpgradedConsensusState(ctx, ctx.BlockHeight())
+ height := q.HeaderService.HeaderInfo(ctx).Height
+ bz, err := q.GetUpgradedConsensusState(ctx, height)
if err != nil {
- return nil, status.Errorf(codes.NotFound, "%s, height %d", err.Error(), ctx.BlockHeight())
+ return nil, status.Errorf(codes.NotFound, "%s, height %d", err.Error(), height)
}
consensusState, err := types.UnmarshalConsensusState(q.cdc, bz)
@@ -401,7 +387,7 @@ func (q *queryServer) VerifyMembership(c context.Context, req *types.QueryVerify
)
if err := clientModule.VerifyMembership(cachedCtx, req.ClientId, req.ProofHeight, req.TimeDelay, req.BlockDelay, req.Proof, req.MerklePath, req.Value); err != nil {
- q.Logger(ctx).Debug("proof verification failed", "key", req.MerklePath, "error", err)
+ q.Logger.Debug("proof verification failed", "key", req.MerklePath, "error", err)
return &types.QueryVerifyMembershipResponse{
Success: false,
}, nil
diff --git a/modules/core/02-client/keeper/grpc_query_test.go b/modules/core/02-client/keeper/grpc_query_test.go
index e84323d64d9..1abaa4a1d15 100644
--- a/modules/core/02-client/keeper/grpc_query_test.go
+++ b/modules/core/02-client/keeper/grpc_query_test.go
@@ -948,8 +948,7 @@ func (suite *KeeperTestSuite) TestQueryVerifyMembershipProof() {
queryServer := keeper.NewQueryServer(suite.chainA.GetSimApp().IBCKeeper.ClientKeeper)
res, err := queryServer.VerifyMembership(ctx, req)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().True(res.Success, "failed to verify membership proof")
diff --git a/modules/core/02-client/keeper/keeper.go b/modules/core/02-client/keeper/keeper.go
index 27bd89e12a1..4275ae4048b 100644
--- a/modules/core/02-client/keeper/keeper.go
+++ b/modules/core/02-client/keeper/keeper.go
@@ -6,9 +6,8 @@ import (
"fmt"
"strings"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
errorsmod "cosmossdk.io/errors"
- "cosmossdk.io/log"
"cosmossdk.io/store/prefix"
storetypes "cosmossdk.io/store/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
@@ -20,6 +19,7 @@ import (
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint"
localhost "github.com/cosmos/ibc-go/v9/modules/light-clients/09-localhost"
)
@@ -27,7 +27,8 @@ import (
// Keeper represents a type that grants read and write permissions to any client
// state information
type Keeper struct {
- storeService corestore.KVStoreService
+ appmodule.Environment
+
cdc codec.BinaryCodec
router *types.Router
legacySubspace types.ParamSubspace
@@ -35,13 +36,13 @@ type Keeper struct {
}
// NewKeeper creates a new NewKeeper instance
-func NewKeeper(cdc codec.BinaryCodec, storeService corestore.KVStoreService, legacySubspace types.ParamSubspace, uk types.UpgradeKeeper) *Keeper {
+func NewKeeper(cdc codec.BinaryCodec, env appmodule.Environment, legacySubspace types.ParamSubspace, uk types.UpgradeKeeper) *Keeper {
router := types.NewRouter()
- localhostModule := localhost.NewLightClientModule(cdc, storeService)
+ localhostModule := localhost.NewLightClientModule(cdc, env)
router.AddRoute(exported.Localhost, localhostModule)
return &Keeper{
- storeService: storeService,
+ Environment: env,
cdc: cdc,
router: router,
legacySubspace: legacySubspace,
@@ -54,12 +55,6 @@ func (k *Keeper) Codec() codec.BinaryCodec {
return k.cdc
}
-// Logger returns a module-specific logger.
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return sdkCtx.Logger().With("module", "x/"+exported.ModuleName+"/"+types.SubModuleName)
-}
-
// AddRoute adds a new route to the underlying router.
func (k *Keeper) AddRoute(clientType string, module exported.LightClientModule) {
k.router.AddRoute(clientType, module)
@@ -67,7 +62,7 @@ func (k *Keeper) AddRoute(clientType string, module exported.LightClientModule)
// GetStoreProvider returns the light client store provider.
func (k *Keeper) GetStoreProvider() types.StoreProvider {
- return types.NewStoreProvider(k.storeService)
+ return types.NewStoreProvider(k.KVStoreService)
}
// Route returns the light client module for the given client identifier.
@@ -141,7 +136,7 @@ func (k *Keeper) SetClientConsensusState(ctx context.Context, clientID string, h
// GetNextClientSequence gets the next client sequence from the store.
func (k *Keeper) GetNextClientSequence(ctx context.Context) uint64 {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.KeyNextClientSequence))
if err != nil {
panic(err)
@@ -155,7 +150,7 @@ func (k *Keeper) GetNextClientSequence(ctx context.Context) uint64 {
// SetNextClientSequence sets the next client sequence to the store.
func (k *Keeper) SetNextClientSequence(ctx context.Context, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set([]byte(types.KeyNextClientSequence), bz); err != nil {
panic(err)
@@ -166,10 +161,10 @@ func (k *Keeper) SetNextClientSequence(ctx context.Context, sequence uint64) {
// objects. For each State object, cb will be called. If the cb returns true,
// the iterator will close and stop.
func (k *Keeper) IterateConsensusStates(ctx context.Context, cb func(clientID string, cs types.ConsensusStateWithHeight) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, host.KeyClientStorePrefix)
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
keySplit := strings.Split(string(iterator.Key()), "/")
// consensus key is in the format "clients//consensusStates/"
@@ -191,10 +186,10 @@ func (k *Keeper) IterateConsensusStates(ctx context.Context, cb func(clientID st
// iterateMetadata provides an iterator over all stored metadata keys in the client store.
// For each metadata object, it will perform a callback.
func (k *Keeper) iterateMetadata(ctx context.Context, cb func(clientID string, key, value []byte) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, host.KeyClientStorePrefix)
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
split := strings.Split(string(iterator.Key()), "/")
if len(split) == 3 && split[2] == string(host.KeyClientState) {
@@ -365,10 +360,10 @@ func (k *Keeper) SetUpgradedConsensusState(ctx context.Context, planHeight int64
// objects using the provided store prefix. For each ClientState object, cb will be called. If the cb returns true,
// the iterator will close and stop.
func (k *Keeper) IterateClientStates(ctx context.Context, storePrefix []byte, cb func(clientID string, cs exported.ClientState) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, host.PrefixedClientStoreKey(storePrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
path := string(iterator.Key())
if !strings.Contains(path, host.KeyClientState) {
@@ -400,7 +395,7 @@ func (k *Keeper) GetAllClients(ctx context.Context) []exported.ClientState {
// namespace without being able to read/write other client's data
func (k *Keeper) ClientStore(ctx context.Context, clientID string) storetypes.KVStore {
clientPrefix := []byte(fmt.Sprintf("%s/%s/", host.KeyClientStorePrefix, clientID))
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
return prefix.NewStore(store, clientPrefix)
}
@@ -443,7 +438,7 @@ func (k *Keeper) GetClientTimestampAtHeight(ctx context.Context, clientID string
// GetParams returns the total set of ibc-client parameters.
func (k *Keeper) GetParams(ctx context.Context) types.Params {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.ParamsKey))
if err != nil {
panic(err)
@@ -459,7 +454,7 @@ func (k *Keeper) GetParams(ctx context.Context) types.Params {
// SetParams sets the total set of ibc-client parameters.
func (k *Keeper) SetParams(ctx context.Context, params types.Params) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(¶ms)
if err := store.Set([]byte(types.ParamsKey), bz); err != nil {
panic(err)
@@ -491,8 +486,5 @@ func (k *Keeper) ScheduleIBCSoftwareUpgrade(ctx context.Context, plan upgradetyp
}
// emitting an event for scheduling an upgrade plan
- sdkContext := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- emitScheduleIBCSoftwareUpgradeEvent(sdkContext, plan.Name, plan.Height)
-
- return nil
+ return k.emitScheduleIBCSoftwareUpgradeEvent(ctx, plan.Name, plan.Height)
}
diff --git a/modules/core/02-client/keeper/keeper_test.go b/modules/core/02-client/keeper/keeper_test.go
index d58282bc1f1..2e9dbe09fbc 100644
--- a/modules/core/02-client/keeper/keeper_test.go
+++ b/modules/core/02-client/keeper/keeper_test.go
@@ -9,13 +9,14 @@ import (
testifysuite "github.com/stretchr/testify/suite"
sdkmath "cosmossdk.io/math"
+ govtypesv1 "cosmossdk.io/x/gov/types/v1"
+ stakingtypes "cosmossdk.io/x/staking/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/cosmos/cosmos-sdk/codec"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
cmtbytes "github.com/cometbft/cometbft/libs/bytes"
cmttypes "github.com/cometbft/cometbft/types"
@@ -108,9 +109,6 @@ func (suite *KeeperTestSuite) SetupTest() {
val.Tokens = sdkmath.NewInt(rand.Int63())
validators.Validators = append(validators.Validators, val)
- hi := stakingtypes.NewHistoricalInfo(suite.ctx.BlockHeader(), validators, sdk.DefaultPowerReduction)
- err = app.StakingKeeper.SetHistoricalInfo(suite.ctx, int64(i), &hi)
- suite.Require().NoError(err)
}
suite.solomachine = ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, "solomachinesingle", "testing", 1)
@@ -454,8 +452,7 @@ func (suite *KeeperTestSuite) TestGetTimestampAtHeight() {
actualTimestamp, err := suite.chainA.App.GetIBCKeeper().ClientKeeper.GetClientTimestampAtHeight(suite.chainA.GetContext(), path.EndpointA.ClientID, height)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(uint64(suite.chainB.LatestCommittedHeader.GetTime().UnixNano()), actualTimestamp)
} else {
@@ -774,3 +771,59 @@ func (suite *KeeperTestSuite) TestIBCSoftwareUpgrade() {
})
}
}
+
+func (suite *KeeperTestSuite) TestIBCScheduleUpgradeProposal() {
+ suite.SetupTest()
+
+ path := ibctesting.NewPath(suite.chainA, suite.chainB)
+ path.SetupClients()
+
+ tmClientState, ok := path.EndpointB.GetClientState().(*ibctm.ClientState)
+ suite.Require().True(ok)
+
+ // bump the chain id revision number for the ibc client upgrade
+ chainID := tmClientState.ChainId
+ revisionNumber := types.ParseChainID(chainID)
+
+ newChainID, err := types.SetRevisionNumber(chainID, revisionNumber+1)
+ suite.Require().NoError(err)
+ suite.Require().NotEqual(chainID, newChainID)
+
+ tmClientState.ChainId = newChainID
+ upgradedClientState := tmClientState.ZeroCustomFields()
+
+ msg, err := types.NewMsgIBCSoftwareUpgrade(
+ suite.chainA.GetSimApp().IBCKeeper.GetAuthority(),
+ upgradetypes.Plan{
+ Name: "upgrade-client",
+ Height: 1000,
+ },
+ upgradedClientState,
+ )
+ suite.Require().NoError(err)
+
+ proposal, err := govtypesv1.NewMsgSubmitProposal(
+ []sdk.Msg{msg},
+ sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, govtypesv1.DefaultMinDepositTokens)),
+ path.EndpointA.Chain.SenderAccount.GetAddress().String(),
+ "metadata",
+ "ibc client upgrade",
+ "gov proposal for initialising ibc client upgrade",
+ govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD,
+ )
+ suite.Require().NoError(err)
+
+ res, err := suite.chainA.SendMsgs(proposal)
+ suite.Require().NoError(err)
+
+ proposalID, err := ibctesting.ParseProposalIDFromEvents(res.Events)
+ suite.Require().NoError(err)
+
+ // vote and pass proposal, trigger msg execution
+ err = ibctesting.VoteAndCheckProposalStatus(path.EndpointA, proposalID)
+ suite.Require().NoError(err)
+
+ storedPlan, err := suite.chainA.GetSimApp().UpgradeKeeper.GetUpgradePlan(suite.chainA.GetContext())
+ suite.Require().NoError(err)
+ suite.Require().Equal(msg.Plan, storedPlan)
+}
diff --git a/modules/core/02-client/keeper/migrations.go b/modules/core/02-client/keeper/migrations.go
index d39a756ed93..a66b783f522 100644
--- a/modules/core/02-client/keeper/migrations.go
+++ b/modules/core/02-client/keeper/migrations.go
@@ -26,7 +26,7 @@ func NewMigrator(keeper *Keeper) Migrator {
// - removes the localhost client
// - asserts that existing tendermint clients are properly registered on the chain codec
func (m Migrator) Migrate2to3(ctx sdk.Context) error {
- return v7.MigrateStore(ctx, m.keeper.storeService, m.keeper.cdc, m.keeper)
+ return v7.MigrateStore(ctx, m.keeper.KVStoreService, m.keeper.cdc, m.keeper)
}
// MigrateParams migrates from consensus version 4 to 5.
@@ -40,7 +40,7 @@ func (m Migrator) MigrateParams(ctx sdk.Context) error {
}
m.keeper.SetParams(ctx, params)
- m.keeper.Logger(ctx).Info("successfully migrated client to self-manage params")
+ m.keeper.Logger.Info("successfully migrated client to self-manage params")
return nil
}
diff --git a/modules/core/02-client/migrations/v7/genesis.go b/modules/core/02-client/migrations/v7/genesis.go
index 5abd3a5e0ca..9166ef96ab5 100644
--- a/modules/core/02-client/migrations/v7/genesis.go
+++ b/modules/core/02-client/migrations/v7/genesis.go
@@ -14,7 +14,7 @@ import (
// - Update solo machine client state protobuf definition (v2 to v3)
// - Remove all solo machine consensus states
// - Remove localhost client
-func MigrateGenesis(clientGenState *clienttypes.GenesisState, cdc codec.ProtoCodecMarshaler) (*clienttypes.GenesisState, error) {
+func MigrateGenesis(clientGenState *clienttypes.GenesisState, cdc codec.Codec) (*clienttypes.GenesisState, error) {
// To prune the client and consensus states, we will create new slices to fill up
// with information we want to keep.
var (
diff --git a/modules/core/02-client/migrations/v7/genesis_test.go b/modules/core/02-client/migrations/v7/genesis_test.go
index 2478f2a00f4..c674e7d9680 100644
--- a/modules/core/02-client/migrations/v7/genesis_test.go
+++ b/modules/core/02-client/migrations/v7/genesis_test.go
@@ -3,12 +3,11 @@ package v7_test
import (
"encoding/json"
- "github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/runtime"
ibcclient "github.com/cosmos/ibc-go/v9/modules/core/02-client"
- "github.com/cosmos/ibc-go/v9/modules/core/02-client/migrations/v7"
+ v7 "github.com/cosmos/ibc-go/v9/modules/core/02-client/migrations/v7"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -34,7 +33,8 @@ func (suite *MigrationsV7TestSuite) TestMigrateGenesisSolomachine() {
solomachine := ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, ibctesting.DefaultSolomachineClientID, "testing", 1)
solomachineMulti := ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, "06-solomachine-1", "testing", 4)
- clientGenState := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
+ clientGenState, err := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
+ suite.Require().NoError(err)
// manually generate old proto buf definitions and set in genesis
// NOTE: we cannot use 'ExportGenesis' for the solo machines since we are
@@ -68,8 +68,7 @@ func (suite *MigrationsV7TestSuite) TestMigrateGenesisSolomachine() {
// set in store for ease of determining expected genesis
clientStore := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), sm.ClientID)
- cdc, ok := suite.chainA.App.AppCodec().(*codec.ProtoCodec)
- suite.Require().True(ok)
+ cdc := suite.chainA.App.AppCodec()
v7.RegisterInterfaces(cdc.InterfaceRegistry())
bz, err := cdc.MarshalInterface(legacyClientState)
@@ -108,12 +107,12 @@ func (suite *MigrationsV7TestSuite) TestMigrateGenesisSolomachine() {
// migrate store get expected genesis
// store migration and genesis migration should produce identical results
// NOTE: tendermint clients are not pruned in genesis so the test should not have expired tendermint clients
- err := v7.MigrateStore(suite.chainA.GetContext(), runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), suite.chainA.App.AppCodec(), suite.chainA.GetSimApp().IBCKeeper.ClientKeeper)
+ err = v7.MigrateStore(suite.chainA.GetContext(), runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), suite.chainA.App.AppCodec(), suite.chainA.GetSimApp().IBCKeeper.ClientKeeper)
+ suite.Require().NoError(err)
+ expectedClientGenState, err := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
suite.Require().NoError(err)
- expectedClientGenState := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
- cdc, ok := suite.chainA.App.AppCodec().(codec.ProtoCodecMarshaler)
- suite.Require().True(ok)
+ cdc := suite.chainA.App.AppCodec()
migrated, err := v7.MigrateGenesis(&clientGenState, cdc)
suite.Require().NoError(err)
diff --git a/modules/core/02-client/migrations/v7/solomachine.go b/modules/core/02-client/migrations/v7/solomachine.go
index 7999b9279d8..7e26b8e05f0 100644
--- a/modules/core/02-client/migrations/v7/solomachine.go
+++ b/modules/core/02-client/migrations/v7/solomachine.go
@@ -4,10 +4,12 @@ import (
"context"
"errors"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
+
+ coreregistry "cosmossdk.io/core/registry"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -25,13 +27,13 @@ import (
// Interface implementation checks.
var (
- _, _ codectypes.UnpackInterfacesMessage = (*ClientState)(nil), (*ConsensusState)(nil)
- _ exported.ClientState = (*ClientState)(nil)
- _ exported.ConsensusState = (*ConsensusState)(nil)
+ _, _ gogoprotoany.UnpackInterfacesMessage = (*ClientState)(nil), (*ConsensusState)(nil)
+ _ exported.ClientState = (*ClientState)(nil)
+ _ exported.ConsensusState = (*ConsensusState)(nil)
)
// RegisterInterfaces registers the solomachine v2 ClientState and ConsensusState types in the interface registry.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*exported.ClientState)(nil),
&ClientState{},
@@ -43,12 +45,12 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
}
// UnpackInterfaces implements the UnpackInterfaceMessages.UnpackInterfaces method
-func (cs ClientState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (cs ClientState) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return cs.ConsensusState.UnpackInterfaces(unpacker)
}
// UnpackInterfaces implements the UnpackInterfaceMessages.UnpackInterfaces method
-func (cs ConsensusState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (cs ConsensusState) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(cs.PublicKey, new(cryptotypes.PubKey))
}
diff --git a/modules/core/02-client/migrations/v7/solomachine.pb.go b/modules/core/02-client/migrations/v7/solomachine.pb.go
index 4a1018e6bb2..58f14a1f163 100644
--- a/modules/core/02-client/migrations/v7/solomachine.pb.go
+++ b/modules/core/02-client/migrations/v7/solomachine.pb.go
@@ -5,11 +5,11 @@ package v7
import (
fmt "fmt"
- types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
- types1 "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
- types2 "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
+ any "github.com/cosmos/gogoproto/types/any"
+ types "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
+ types1 "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
io "io"
math "math"
math_bits "math/bits"
@@ -138,7 +138,7 @@ var xxx_messageInfo_ClientState proto.InternalMessageInfo
// consensus state.
type ConsensusState struct {
// public key of the solo machine
- PublicKey *types.Any `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+ PublicKey *any.Any `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
// diversifier allows the same public key to be re-used across different solo
// machine clients (potentially on different chains) without being considered
// misbehaviour.
@@ -182,11 +182,11 @@ var xxx_messageInfo_ConsensusState proto.InternalMessageInfo
// Header defines a solo machine consensus header
type Header struct {
// sequence to update solo machine public key at
- Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"`
- Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- Signature []byte `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"`
- NewPublicKey *types.Any `protobuf:"bytes,4,opt,name=new_public_key,json=newPublicKey,proto3" json:"new_public_key,omitempty"`
- NewDiversifier string `protobuf:"bytes,5,opt,name=new_diversifier,json=newDiversifier,proto3" json:"new_diversifier,omitempty"`
+ Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"`
+ Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ Signature []byte `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"`
+ NewPublicKey *any.Any `protobuf:"bytes,4,opt,name=new_public_key,json=newPublicKey,proto3" json:"new_public_key,omitempty"`
+ NewDiversifier string `protobuf:"bytes,5,opt,name=new_diversifier,json=newDiversifier,proto3" json:"new_diversifier,omitempty"`
}
func (m *Header) Reset() { *m = Header{} }
@@ -393,7 +393,7 @@ var xxx_messageInfo_SignBytes proto.InternalMessageInfo
// HeaderData returns the SignBytes data for update verification.
type HeaderData struct {
// header public key
- NewPubKey *types.Any `protobuf:"bytes,1,opt,name=new_pub_key,json=newPubKey,proto3" json:"new_pub_key,omitempty"`
+ NewPubKey *any.Any `protobuf:"bytes,1,opt,name=new_pub_key,json=newPubKey,proto3" json:"new_pub_key,omitempty"`
// header diversifier
NewDiversifier string `protobuf:"bytes,2,opt,name=new_diversifier,json=newDiversifier,proto3" json:"new_diversifier,omitempty"`
}
@@ -433,8 +433,8 @@ var xxx_messageInfo_HeaderData proto.InternalMessageInfo
// ClientStateData returns the SignBytes data for client state verification.
type ClientStateData struct {
- Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
- ClientState *types.Any `protobuf:"bytes,2,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
+ Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
+ ClientState *any.Any `protobuf:"bytes,2,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
}
func (m *ClientStateData) Reset() { *m = ClientStateData{} }
@@ -473,8 +473,8 @@ var xxx_messageInfo_ClientStateData proto.InternalMessageInfo
// ConsensusStateData returns the SignBytes data for consensus state
// verification.
type ConsensusStateData struct {
- Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
- ConsensusState *types.Any `protobuf:"bytes,2,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
+ Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
+ ConsensusState *any.Any `protobuf:"bytes,2,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
}
func (m *ConsensusStateData) Reset() { *m = ConsensusStateData{} }
@@ -513,8 +513,8 @@ var xxx_messageInfo_ConsensusStateData proto.InternalMessageInfo
// ConnectionStateData returns the SignBytes data for connection state
// verification.
type ConnectionStateData struct {
- Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
- Connection *types1.ConnectionEnd `protobuf:"bytes,2,opt,name=connection,proto3" json:"connection,omitempty"`
+ Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
+ Connection *types.ConnectionEnd `protobuf:"bytes,2,opt,name=connection,proto3" json:"connection,omitempty"`
}
func (m *ConnectionStateData) Reset() { *m = ConnectionStateData{} }
@@ -554,7 +554,7 @@ var xxx_messageInfo_ConnectionStateData proto.InternalMessageInfo
// verification.
type ChannelStateData struct {
Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
- Channel *types2.Channel `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"`
+ Channel *types1.Channel `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"`
}
func (m *ChannelStateData) Reset() { *m = ChannelStateData{} }
@@ -2139,7 +2139,7 @@ func (m *ConsensusState) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.PublicKey == nil {
- m.PublicKey = &types.Any{}
+ m.PublicKey = &any.Any{}
}
if err := m.PublicKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -2348,7 +2348,7 @@ func (m *Header) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.NewPublicKey == nil {
- m.NewPublicKey = &types.Any{}
+ m.NewPublicKey = &any.Any{}
}
if err := m.NewPublicKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -3071,7 +3071,7 @@ func (m *HeaderData) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.NewPubKey == nil {
- m.NewPubKey = &types.Any{}
+ m.NewPubKey = &any.Any{}
}
if err := m.NewPubKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -3223,7 +3223,7 @@ func (m *ClientStateData) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientState == nil {
- m.ClientState = &types.Any{}
+ m.ClientState = &any.Any{}
}
if err := m.ClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -3343,7 +3343,7 @@ func (m *ConsensusStateData) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ConsensusState == nil {
- m.ConsensusState = &types.Any{}
+ m.ConsensusState = &any.Any{}
}
if err := m.ConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -3463,7 +3463,7 @@ func (m *ConnectionStateData) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.Connection == nil {
- m.Connection = &types1.ConnectionEnd{}
+ m.Connection = &types.ConnectionEnd{}
}
if err := m.Connection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -3583,7 +3583,7 @@ func (m *ChannelStateData) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.Channel == nil {
- m.Channel = &types2.Channel{}
+ m.Channel = &types1.Channel{}
}
if err := m.Channel.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/core/02-client/migrations/v7/store.go b/modules/core/02-client/migrations/v7/store.go
index 2bfff6099de..bf9e44656b9 100644
--- a/modules/core/02-client/migrations/v7/store.go
+++ b/modules/core/02-client/migrations/v7/store.go
@@ -16,6 +16,7 @@ import (
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
solomachine "github.com/cosmos/ibc-go/v9/modules/light-clients/06-solomachine"
ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint"
)
@@ -143,7 +144,7 @@ func collectClients(ctx sdk.Context, store storetypes.KVStore, clientType string
clientPrefix := host.PrefixedClientStoreKey([]byte(clientType))
iterator := storetypes.KVStorePrefixIterator(store, clientPrefix)
- defer sdk.LogDeferred(ctx.Logger(), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(ctx.Logger(), func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
path := string(iterator.Key())
if !strings.Contains(path, host.KeyClientState) {
diff --git a/modules/core/02-client/types/client.go b/modules/core/02-client/types/client.go
index 6e3df24694e..304b7f16841 100644
--- a/modules/core/02-client/types/client.go
+++ b/modules/core/02-client/types/client.go
@@ -7,6 +7,7 @@ import (
"strings"
"github.com/cosmos/gogoproto/proto"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
errorsmod "cosmossdk.io/errors"
@@ -17,8 +18,8 @@ import (
)
var (
- _ codectypes.UnpackInterfacesMessage = (*IdentifiedClientState)(nil)
- _ codectypes.UnpackInterfacesMessage = (*ConsensusStateWithHeight)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*IdentifiedClientState)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*ConsensusStateWithHeight)(nil)
)
// NewIdentifiedClientState creates a new IdentifiedClientState instance
@@ -39,8 +40,8 @@ func NewIdentifiedClientState(clientID string, clientState exported.ClientState)
}
}
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (ics IdentifiedClientState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (ics IdentifiedClientState) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(ics.ClientState, new(exported.ClientState))
}
@@ -82,8 +83,8 @@ func NewConsensusStateWithHeight(height Height, consensusState exported.Consensu
}
}
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (cswh ConsensusStateWithHeight) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (cswh ConsensusStateWithHeight) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(cswh.ConsensusState, new(exported.ConsensusState))
}
diff --git a/modules/core/02-client/types/client.pb.go b/modules/core/02-client/types/client.pb.go
index 0a61762a377..efd6867d69b 100644
--- a/modules/core/02-client/types/client.pb.go
+++ b/modules/core/02-client/types/client.pb.go
@@ -5,9 +5,9 @@ package types
import (
fmt "fmt"
- types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
+ any "github.com/cosmos/gogoproto/types/any"
io "io"
math "math"
math_bits "math/bits"
@@ -30,7 +30,7 @@ type IdentifiedClientState struct {
// client identifier
ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
// client state
- ClientState *types.Any `protobuf:"bytes,2,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
+ ClientState *any.Any `protobuf:"bytes,2,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
}
func (m *IdentifiedClientState) Reset() { *m = IdentifiedClientState{} }
@@ -73,7 +73,7 @@ func (m *IdentifiedClientState) GetClientId() string {
return ""
}
-func (m *IdentifiedClientState) GetClientState() *types.Any {
+func (m *IdentifiedClientState) GetClientState() *any.Any {
if m != nil {
return m.ClientState
}
@@ -86,7 +86,7 @@ type ConsensusStateWithHeight struct {
// consensus state height
Height Height `protobuf:"bytes,1,opt,name=height,proto3" json:"height"`
// consensus state
- ConsensusState *types.Any `protobuf:"bytes,2,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
+ ConsensusState *any.Any `protobuf:"bytes,2,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
}
func (m *ConsensusStateWithHeight) Reset() { *m = ConsensusStateWithHeight{} }
@@ -129,7 +129,7 @@ func (m *ConsensusStateWithHeight) GetHeight() Height {
return Height{}
}
-func (m *ConsensusStateWithHeight) GetConsensusState() *types.Any {
+func (m *ConsensusStateWithHeight) GetConsensusState() *any.Any {
if m != nil {
return m.ConsensusState
}
@@ -720,7 +720,7 @@ func (m *IdentifiedClientState) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientState == nil {
- m.ClientState = &types.Any{}
+ m.ClientState = &any.Any{}
}
if err := m.ClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -839,7 +839,7 @@ func (m *ConsensusStateWithHeight) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ConsensusState == nil {
- m.ConsensusState = &types.Any{}
+ m.ConsensusState = &any.Any{}
}
if err := m.ConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/core/02-client/types/client_test.go b/modules/core/02-client/types/client_test.go
index 43b5b1c7f58..6655c04c6e3 100644
--- a/modules/core/02-client/types/client_test.go
+++ b/modules/core/02-client/types/client_test.go
@@ -1,6 +1,7 @@
package types_test
import (
+ "errors"
"testing"
"github.com/stretchr/testify/require"
@@ -63,15 +64,15 @@ func TestValidateClientType(t *testing.T) {
testCases := []struct {
name string
clientType string
- expPass bool
+ expError error
}{
- {"valid", "tendermint", true},
- {"valid solomachine", "solomachine-v1", true},
- {"too large", "tenderminttenderminttenderminttenderminttendermintt", false},
- {"too short", "t", false},
- {"blank id", " ", false},
- {"empty id", "", false},
- {"ends with dash", "tendermint-", false},
+ {"valid", "tendermint", nil},
+ {"valid solomachine", "solomachine-v1", nil},
+ {"too large", "tenderminttenderminttenderminttenderminttendermintt", errors.New("client type results in largest client identifier being invalid")},
+ {"too short", "t", errors.New("client type results in smallest client identifier being invalid")},
+ {"blank id", " ", errors.New("client type cannot be blank")},
+ {"empty id", "", errors.New("client type cannot be blank")},
+ {"ends with dash", "tendermint-", errors.New("invalid client type")},
}
for _, tc := range testCases {
@@ -79,10 +80,10 @@ func TestValidateClientType(t *testing.T) {
err := types.ValidateClientType(tc.clientType)
- if tc.expPass {
+ if tc.expError == nil {
require.NoError(t, err, tc.name)
} else {
- require.Error(t, err, tc.name)
+ require.ErrorContains(t, err, tc.expError.Error())
}
}
}
diff --git a/modules/core/02-client/types/codec.go b/modules/core/02-client/types/codec.go
index 082970cd598..b39023a3bba 100644
--- a/modules/core/02-client/types/codec.go
+++ b/modules/core/02-client/types/codec.go
@@ -2,7 +2,9 @@ package types
import (
"github.com/cosmos/gogoproto/proto"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
+ coreregistry "cosmossdk.io/core/registry"
errorsmod "cosmossdk.io/errors"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
@@ -14,7 +16,7 @@ import (
)
// RegisterInterfaces registers the client interfaces to protobuf Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterInterface(
"ibc.core.client.v1.ClientState",
(*exported.ClientState)(nil),
@@ -53,7 +55,7 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
// PackClientState constructs a new Any packed with the given client state value. It returns
// an error if the client state can't be casted to a protobuf message or if the concrete
// implementation is not registered to the protobuf codec.
-func PackClientState(clientState exported.ClientState) (*codectypes.Any, error) {
+func PackClientState(clientState exported.ClientState) (*gogoprotoany.Any, error) {
msg, ok := clientState.(proto.Message)
if !ok {
return nil, errorsmod.Wrapf(ibcerrors.ErrPackAny, "cannot proto marshal %T", clientState)
@@ -69,14 +71,14 @@ func PackClientState(clientState exported.ClientState) (*codectypes.Any, error)
// UnpackClientState unpacks an Any into a ClientState. It returns an error if the
// client state can't be unpacked into a ClientState.
-func UnpackClientState(any *codectypes.Any) (exported.ClientState, error) {
- if any == nil {
+func UnpackClientState(protoAny *gogoprotoany.Any) (exported.ClientState, error) {
+ if protoAny == nil {
return nil, errorsmod.Wrap(ibcerrors.ErrUnpackAny, "protobuf Any message cannot be nil")
}
- clientState, ok := any.GetCachedValue().(exported.ClientState)
+ clientState, ok := protoAny.GetCachedValue().(exported.ClientState)
if !ok {
- return nil, errorsmod.Wrapf(ibcerrors.ErrUnpackAny, "cannot unpack Any into ClientState %T", any)
+ return nil, errorsmod.Wrapf(ibcerrors.ErrUnpackAny, "cannot unpack Any into ClientState %T", protoAny)
}
return clientState, nil
@@ -85,7 +87,7 @@ func UnpackClientState(any *codectypes.Any) (exported.ClientState, error) {
// PackConsensusState constructs a new Any packed with the given consensus state value. It returns
// an error if the consensus state can't be casted to a protobuf message or if the concrete
// implementation is not registered to the protobuf codec.
-func PackConsensusState(consensusState exported.ConsensusState) (*codectypes.Any, error) {
+func PackConsensusState(consensusState exported.ConsensusState) (*gogoprotoany.Any, error) {
msg, ok := consensusState.(proto.Message)
if !ok {
return nil, errorsmod.Wrapf(ibcerrors.ErrPackAny, "cannot proto marshal %T", consensusState)
@@ -100,7 +102,7 @@ func PackConsensusState(consensusState exported.ConsensusState) (*codectypes.Any
}
// MustPackConsensusState calls PackConsensusState and panics on error.
-func MustPackConsensusState(consensusState exported.ConsensusState) *codectypes.Any {
+func MustPackConsensusState(consensusState exported.ConsensusState) *gogoprotoany.Any {
anyConsensusState, err := PackConsensusState(consensusState)
if err != nil {
panic(err)
@@ -111,14 +113,14 @@ func MustPackConsensusState(consensusState exported.ConsensusState) *codectypes.
// UnpackConsensusState unpacks an Any into a ConsensusState. It returns an error if the
// consensus state can't be unpacked into a ConsensusState.
-func UnpackConsensusState(any *codectypes.Any) (exported.ConsensusState, error) {
- if any == nil {
+func UnpackConsensusState(protoAny *gogoprotoany.Any) (exported.ConsensusState, error) {
+ if protoAny == nil {
return nil, errorsmod.Wrap(ibcerrors.ErrUnpackAny, "protobuf Any message cannot be nil")
}
- consensusState, ok := any.GetCachedValue().(exported.ConsensusState)
+ consensusState, ok := protoAny.GetCachedValue().(exported.ConsensusState)
if !ok {
- return nil, errorsmod.Wrapf(ibcerrors.ErrUnpackAny, "cannot unpack Any into ConsensusState %T", any)
+ return nil, errorsmod.Wrapf(ibcerrors.ErrUnpackAny, "cannot unpack Any into ConsensusState %T", protoAny)
}
return consensusState, nil
@@ -127,7 +129,7 @@ func UnpackConsensusState(any *codectypes.Any) (exported.ConsensusState, error)
// PackClientMessage constructs a new Any packed with the given value. It returns
// an error if the value can't be casted to a protobuf message or if the concrete
// implementation is not registered to the protobuf codec.
-func PackClientMessage(clientMessage exported.ClientMessage) (*codectypes.Any, error) {
+func PackClientMessage(clientMessage exported.ClientMessage) (*gogoprotoany.Any, error) {
msg, ok := clientMessage.(proto.Message)
if !ok {
return nil, errorsmod.Wrapf(ibcerrors.ErrPackAny, "cannot proto marshal %T", clientMessage)
@@ -143,14 +145,14 @@ func PackClientMessage(clientMessage exported.ClientMessage) (*codectypes.Any, e
// UnpackClientMessage unpacks an Any into a ClientMessage. It returns an error if the
// consensus state can't be unpacked into a ClientMessage.
-func UnpackClientMessage(any *codectypes.Any) (exported.ClientMessage, error) {
- if any == nil {
+func UnpackClientMessage(protoAny *gogoprotoany.Any) (exported.ClientMessage, error) {
+ if protoAny == nil {
return nil, errorsmod.Wrap(ibcerrors.ErrUnpackAny, "protobuf Any message cannot be nil")
}
- clientMessage, ok := any.GetCachedValue().(exported.ClientMessage)
+ clientMessage, ok := protoAny.GetCachedValue().(exported.ClientMessage)
if !ok {
- return nil, errorsmod.Wrapf(ibcerrors.ErrUnpackAny, "cannot unpack Any into Header %T", any)
+ return nil, errorsmod.Wrapf(ibcerrors.ErrUnpackAny, "cannot unpack Any into Header %T", protoAny)
}
return clientMessage, nil
diff --git a/modules/core/02-client/types/expected_keepers.go b/modules/core/02-client/types/expected_keepers.go
index 914dfd080f8..02ccc9d5653 100644
--- a/modules/core/02-client/types/expected_keepers.go
+++ b/modules/core/02-client/types/expected_keepers.go
@@ -3,10 +3,10 @@ package types
import (
"context"
+ paramtypes "cosmossdk.io/x/params/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
)
// UpgradeKeeper expected upgrade keeper
diff --git a/modules/core/02-client/types/genesis.go b/modules/core/02-client/types/genesis.go
index 3a72b57ed92..9e2cd5a327a 100644
--- a/modules/core/02-client/types/genesis.go
+++ b/modules/core/02-client/types/genesis.go
@@ -5,17 +5,17 @@ import (
"fmt"
"sort"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
)
var (
- _ codectypes.UnpackInterfacesMessage = (*IdentifiedClientState)(nil)
- _ codectypes.UnpackInterfacesMessage = (*ClientsConsensusStates)(nil)
- _ codectypes.UnpackInterfacesMessage = (*ClientConsensusStates)(nil)
- _ codectypes.UnpackInterfacesMessage = (*GenesisState)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*IdentifiedClientState)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*ClientsConsensusStates)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*ClientConsensusStates)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*GenesisState)(nil)
_ sort.Interface = (*ClientsConsensusStates)(nil)
_ exported.GenesisMetadata = (*GenesisMetadata)(nil)
@@ -40,7 +40,7 @@ func (ccs ClientsConsensusStates) Sort() ClientsConsensusStates {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (ccs ClientsConsensusStates) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (ccs ClientsConsensusStates) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
for _, clientConsensus := range ccs {
if err := clientConsensus.UnpackInterfaces(unpacker); err != nil {
return err
@@ -58,7 +58,7 @@ func NewClientConsensusStates(clientID string, consensusStates []ConsensusStateW
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (ccs ClientConsensusStates) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (ccs ClientConsensusStates) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
for _, consStateWithHeight := range ccs.ConsensusStates {
if err := consStateWithHeight.UnpackInterfaces(unpacker); err != nil {
return err
@@ -94,7 +94,7 @@ func DefaultGenesisState() GenesisState {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (gs GenesisState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (gs GenesisState) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
for _, client := range gs.Clients {
if err := client.UnpackInterfaces(unpacker); err != nil {
return err
diff --git a/modules/core/02-client/types/genesis_test.go b/modules/core/02-client/types/genesis_test.go
index cc6d4503fd1..09815dafac7 100644
--- a/modules/core/02-client/types/genesis_test.go
+++ b/modules/core/02-client/types/genesis_test.go
@@ -1,6 +1,7 @@
package types_test
import (
+ "errors"
"time"
cmttypes "github.com/cometbft/cometbft/types"
@@ -32,7 +33,8 @@ func (suite *TypesTestSuite) TestMarshalGenesisState() {
err := path.EndpointA.UpdateClient()
suite.Require().NoError(err)
- genesis := client.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
+ genesis, err := client.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
+ suite.Require().NoError(err)
bz, err := cdc.MarshalJSON(&genesis)
suite.Require().NoError(err)
@@ -62,12 +64,12 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
testCases := []struct {
name string
genState types.GenesisState
- expPass bool
+ expError error
}{
{
name: "default",
genState: types.DefaultGenesisState(),
- expPass: true,
+ expError: nil,
},
{
name: "valid custom genesis",
@@ -103,7 +105,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
2,
),
- expPass: true,
+ expError: nil,
},
{
name: "invalid client type",
@@ -120,7 +122,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("client state type 07-tendermint does not equal client type in client identifier 06-solomachine"),
},
{
name: "invalid clientid",
@@ -148,7 +150,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("client state type 07-tendermint does not equal client type in client identifier myclient"),
},
{
name: "consensus state client id does not match client id in genesis clients",
@@ -176,7 +178,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("consensus state in genesis has a client id 07-tendermint-1 that does not map to a genesis client"),
},
{
name: "invalid consensus state height",
@@ -204,7 +206,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("consensus state height cannot be zero"),
},
{
name: "invalid consensus state",
@@ -232,7 +234,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("invalid client consensus state timestamp"),
},
{
name: "client in genesis clients is disallowed by params",
@@ -260,7 +262,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("client type 07-tendermint not allowed by genesis params"),
},
{
name: "metadata client-id does not match a genesis client",
@@ -296,7 +298,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("metadata in genesis has a client id wrongclientid that does not map to a genesis client"),
},
{
name: "invalid metadata",
@@ -332,6 +334,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
+ expError: errors.New("invalid client metadata"),
},
{
name: "invalid params",
@@ -359,7 +362,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("client type 0 cannot be blank"),
},
{
name: "invalid param",
@@ -387,7 +390,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("client type 0 cannot be blank"),
},
{
name: "next sequence too small",
@@ -418,7 +421,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
0,
),
- expPass: false,
+ expError: errors.New("next client identifier sequence 0 must be greater than the maximum sequence used in the provided client identifiers 1"),
},
{
name: "failed to parse client identifier in client state loop",
@@ -446,7 +449,7 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
5,
),
- expPass: false,
+ expError: errors.New("invalid client identifier my-client is not in format"),
},
{
name: "consensus state different than client state type",
@@ -470,17 +473,17 @@ func (suite *TypesTestSuite) TestValidateGenesis() {
false,
5,
),
- expPass: false,
+ expError: errors.New("consensus state in genesis has a client id 07-tendermint-0 that does not map to a genesis client"),
},
}
for _, tc := range testCases {
tc := tc
err := tc.genState.Validate()
- if tc.expPass {
+ if tc.expError == nil {
suite.Require().NoError(err, tc.name)
} else {
- suite.Require().Error(err, tc.name)
+ suite.Require().ErrorContains(err, tc.expError.Error())
}
}
}
diff --git a/modules/core/02-client/types/height.go b/modules/core/02-client/types/height.go
index 82ce3a17a9c..6a61c0bf35c 100644
--- a/modules/core/02-client/types/height.go
+++ b/modules/core/02-client/types/height.go
@@ -166,7 +166,7 @@ func SetRevisionNumber(chainID string, revision uint64) (string, error) {
return strings.Join(splitStr, "-"), nil
}
-// ParseChainID is a utility function that returns an revision number from the given ChainID.
+// ParseChainID is a utility function that returns a revision number from the given ChainID.
// ParseChainID attempts to parse a chain id in the format: `{chainID}-{revision}`
// and return the revisionnumber as a uint64.
// If the chainID is not in the expected format, a default revision value of 0 is returned.
diff --git a/modules/core/02-client/types/keys_test.go b/modules/core/02-client/types/keys_test.go
index 3564c56d785..f031cf8b002 100644
--- a/modules/core/02-client/types/keys_test.go
+++ b/modules/core/02-client/types/keys_test.go
@@ -1,12 +1,14 @@
package types_test
import (
+ "errors"
"math"
"testing"
"github.com/stretchr/testify/require"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
+ host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
)
// tests ParseClientIdentifier and IsValidClientID
@@ -16,32 +18,32 @@ func TestParseClientIdentifier(t *testing.T) {
clientID string
clientType string
expSeq uint64
- expPass bool
+ expErr error
}{
- {"valid 0", "tendermint-0", "tendermint", 0, true},
- {"valid 1", "tendermint-1", "tendermint", 1, true},
- {"valid solemachine", "solomachine-v1-1", "solomachine-v1", 1, true},
- {"valid large sequence", types.FormatClientIdentifier("tendermint", math.MaxUint64), "tendermint", math.MaxUint64, true},
- {"valid short client type", "t-0", "t", 0, true},
+ {"valid 0", "tendermint-0", "tendermint", 0, nil},
+ {"valid 1", "tendermint-1", "tendermint", 1, nil},
+ {"valid solemachine", "solomachine-v1-1", "solomachine-v1", 1, nil},
+ {"valid large sequence", types.FormatClientIdentifier("tendermint", math.MaxUint64), "tendermint", math.MaxUint64, nil},
+ {"valid short client type", "t-0", "t", 0, nil},
// one above uint64 max
- {"invalid uint64", "tendermint-18446744073709551616", "tendermint", 0, false},
+ {"invalid uint64", "tendermint-18446744073709551616", "tendermint", 0, errors.New("failed to parse client identifier sequence")},
// uint64 == 20 characters
- {"invalid large sequence", "tendermint-2345682193567182931243", "tendermint", 0, false},
- {"invalid newline in clientID", "tendermin\nt-1", "tendermin\nt", 0, false},
- {"invalid newline character before dash", "tendermint\n-1", "tendermint", 0, false},
- {"missing dash", "tendermint0", "tendermint", 0, false},
- {"blank id", " ", " ", 0, false},
- {"empty id", "", "", 0, false},
- {"negative sequence", "tendermint--1", "tendermint", 0, false},
- {"invalid format", "tendermint-tm", "tendermint", 0, false},
- {"empty clientype", " -100", "tendermint", 0, false},
- {"with in the middle tabs", "a\t\t\t-100", "tendermint", 0, false},
- {"leading tabs", "\t\t\ta-100", "tendermint", 0, false},
- {"with whitespace", " a-100", "tendermint", 0, false},
- {"leading hyphens", "-----a-100", "tendermint", 0, false},
- {"with slash", "tendermint/-100", "tendermint", 0, false},
- {"non-ASCII:: emoji", "🚨😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎-100", "tendermint", 0, false},
- {"non-ASCII:: others", "世界-100", "tendermint", 0, false},
+ {"invalid large sequence", "tendermint-2345682193567182931243", "tendermint", 0, host.ErrInvalidID},
+ {"invalid newline in clientID", "tendermin\nt-1", "tendermin\nt", 0, host.ErrInvalidID},
+ {"invalid newline character before dash", "tendermint\n-1", "tendermint", 0, host.ErrInvalidID},
+ {"missing dash", "tendermint0", "tendermint", 0, host.ErrInvalidID},
+ {"blank id", " ", " ", 0, host.ErrInvalidID},
+ {"empty id", "", "", 0, host.ErrInvalidID},
+ {"negative sequence", "tendermint--1", "tendermint", 0, host.ErrInvalidID},
+ {"invalid format", "tendermint-tm", "tendermint", 0, host.ErrInvalidID},
+ {"empty clientype", " -100", "tendermint", 0, host.ErrInvalidID},
+ {"with in the middle tabs", "a\t\t\t-100", "tendermint", 0, host.ErrInvalidID},
+ {"leading tabs", "\t\t\ta-100", "tendermint", 0, host.ErrInvalidID},
+ {"with whitespace", " a-100", "tendermint", 0, host.ErrInvalidID},
+ {"leading hyphens", "-----a-100", "tendermint", 0, host.ErrInvalidID},
+ {"with slash", "tendermint/-100", "tendermint", 0, host.ErrInvalidID},
+ {"non-ASCII:: emoji", "🚨😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎😎-100", "tendermint", 0, host.ErrInvalidID},
+ {"non-ASCII:: others", "世界-100", "tendermint", 0, host.ErrInvalidID},
}
for _, tc := range testCases {
@@ -51,7 +53,7 @@ func TestParseClientIdentifier(t *testing.T) {
valid := types.IsValidClientID(tc.clientID)
require.Equal(t, tc.expSeq, seq, tc.clientID)
- if tc.expPass {
+ if tc.expErr == nil {
require.NoError(t, err, tc.name)
require.True(t, valid)
require.Equal(t, tc.clientType, clientType)
@@ -59,6 +61,7 @@ func TestParseClientIdentifier(t *testing.T) {
require.Error(t, err, tc.name, tc.clientID)
require.False(t, valid)
require.Equal(t, "", clientType)
+ require.ErrorContains(t, err, tc.expErr.Error())
}
})
}
diff --git a/modules/core/02-client/types/msgs.go b/modules/core/02-client/types/msgs.go
index e35b7bbbaad..a520a46ab7c 100644
--- a/modules/core/02-client/types/msgs.go
+++ b/modules/core/02-client/types/msgs.go
@@ -1,10 +1,11 @@
package types
import (
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
+
errorsmod "cosmossdk.io/errors"
upgradetypes "cosmossdk.io/x/upgrade/types"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
@@ -29,11 +30,11 @@ var (
_ sdk.HasValidateBasic = (*MsgIBCSoftwareUpgrade)(nil)
_ sdk.HasValidateBasic = (*MsgRecoverClient)(nil)
- _ codectypes.UnpackInterfacesMessage = (*MsgCreateClient)(nil)
- _ codectypes.UnpackInterfacesMessage = (*MsgUpdateClient)(nil)
- _ codectypes.UnpackInterfacesMessage = (*MsgSubmitMisbehaviour)(nil)
- _ codectypes.UnpackInterfacesMessage = (*MsgUpgradeClient)(nil)
- _ codectypes.UnpackInterfacesMessage = (*MsgIBCSoftwareUpgrade)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*MsgCreateClient)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*MsgUpdateClient)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*MsgSubmitMisbehaviour)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*MsgUpgradeClient)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*MsgIBCSoftwareUpgrade)(nil)
)
// NewMsgCreateClient creates a new MsgCreateClient instance
@@ -84,7 +85,7 @@ func (msg MsgCreateClient) ValidateBasic() error {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (msg MsgCreateClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (msg MsgCreateClient) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
var clientState exported.ClientState
err := unpacker.UnpackAny(msg.ClientState, &clientState)
if err != nil {
@@ -126,7 +127,7 @@ func (msg MsgUpdateClient) ValidateBasic() error {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (msg MsgUpdateClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (msg MsgUpdateClient) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
var clientMsg exported.ClientMessage
return unpacker.UnpackAny(msg.ClientMessage, &clientMsg)
}
@@ -162,7 +163,7 @@ func (msg MsgUpgradeClient) ValidateBasic() error {
if err != nil {
return err
}
- // will not validate consensus state here since the trusted kernel may not form a valid consenus state.
+ // will not validate consensus state here since the trusted kernel may not form a valid consensus state.
// client implementations are responsible for ensuring client can submit new headers against this consensus state.
consensusState, err := UnpackConsensusState(msg.ConsensusState)
if err != nil {
@@ -187,7 +188,7 @@ func (msg MsgUpgradeClient) ValidateBasic() error {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (msg MsgUpgradeClient) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (msg MsgUpgradeClient) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
var (
clientState exported.ClientState
consState exported.ConsensusState
@@ -230,7 +231,7 @@ func (msg MsgSubmitMisbehaviour) ValidateBasic() error {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (msg MsgSubmitMisbehaviour) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (msg MsgSubmitMisbehaviour) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
var misbehaviour exported.ClientMessage
return unpacker.UnpackAny(msg.Misbehaviour, &misbehaviour)
}
@@ -299,8 +300,9 @@ func (msg *MsgIBCSoftwareUpgrade) ValidateBasic() error {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (msg *MsgIBCSoftwareUpgrade) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
- return unpacker.UnpackAny(msg.UpgradedClientState, new(exported.ClientState))
+func (msg *MsgIBCSoftwareUpgrade) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
+ var clientState exported.ClientState
+ return unpacker.UnpackAny(msg.UpgradedClientState, &clientState)
}
// NewMsgUpdateParams creates a new instance of MsgUpdateParams.
diff --git a/modules/core/02-client/types/msgs_test.go b/modules/core/02-client/types/msgs_test.go
index 31e4e6a8ef1..112b7beb211 100644
--- a/modules/core/02-client/types/msgs_test.go
+++ b/modules/core/02-client/types/msgs_test.go
@@ -13,6 +13,7 @@ import (
errorsmod "cosmossdk.io/errors"
upgradetypes "cosmossdk.io/x/upgrade/types"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
@@ -683,8 +684,7 @@ func (suite *TypesTestSuite) TestMsgRecoverClientValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err, "valid case %s failed", tc.name)
} else {
suite.Require().ErrorIs(err, tc.expError, "invalid case %s passed", tc.name)
@@ -695,12 +695,12 @@ func (suite *TypesTestSuite) TestMsgRecoverClientValidateBasic() {
// TestMsgRecoverClientGetSigners tests GetSigners for MsgRecoverClient
func TestMsgRecoverClientGetSigners(t *testing.T) {
testCases := []struct {
- name string
- address sdk.AccAddress
- expPass bool
+ name string
+ address sdk.AccAddress
+ expError error
}{
- {"success: valid address", sdk.AccAddress(ibctesting.TestAccAddress), true},
- {"failure: nil address", nil, false},
+ {"success: valid address", sdk.AccAddress(ibctesting.TestAccAddress), nil},
+ {"failure: nil address", nil, fmt.Errorf("empty address string is not allowed")},
}
for _, tc := range testCases {
@@ -708,13 +708,14 @@ func TestMsgRecoverClientGetSigners(t *testing.T) {
msg := types.MsgRecoverClient{
Signer: tc.address.String(),
}
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(&msg)
- if tc.expPass {
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(&msg)
+ if tc.expError == nil {
require.NoError(t, err)
require.Equal(t, tc.address.Bytes(), signers[0])
} else {
require.Error(t, err)
+ require.Equal(t, err.Error(), tc.expError.Error())
}
}
}
@@ -795,8 +796,9 @@ func TestMsgIBCSoftwareUpgrade_GetSigners(t *testing.T) {
)
require.NoError(t, err)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
+
if tc.expErr == nil {
require.NoError(t, err)
require.Equal(t, tc.address.Bytes(), signers[0])
@@ -867,9 +869,8 @@ func (suite *TypesTestSuite) TestMsgIBCSoftwareUpgrade_ValidateBasic() {
}
err = msg.ValidateBasic()
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
}
if tc.expError != nil {
@@ -968,8 +969,9 @@ func TestMsgUpdateParamsGetSigners(t *testing.T) {
Signer: tc.address.String(),
Params: types.DefaultParams(),
}
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(&msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(&msg)
+
if tc.expErr == nil {
require.NoError(t, err)
require.Equal(t, tc.address.Bytes(), signers[0])
diff --git a/modules/core/02-client/types/params_legacy.go b/modules/core/02-client/types/params_legacy.go
index c903b49f330..9a98cf797d7 100644
--- a/modules/core/02-client/types/params_legacy.go
+++ b/modules/core/02-client/types/params_legacy.go
@@ -9,7 +9,7 @@ package types
import (
"fmt"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ paramtypes "cosmossdk.io/x/params/types"
)
// KeyAllowedClients is store's key for AllowedClients Params
diff --git a/modules/core/02-client/types/params_test.go b/modules/core/02-client/types/params_test.go
index 15f7fd3cd68..26165bb0cb8 100644
--- a/modules/core/02-client/types/params_test.go
+++ b/modules/core/02-client/types/params_test.go
@@ -1,6 +1,7 @@
package types
import (
+ "errors"
"testing"
"github.com/stretchr/testify/require"
@@ -31,26 +32,27 @@ func TestIsAllowedClient(t *testing.T) {
func TestValidateParams(t *testing.T) {
testCases := []struct {
- name string
- params Params
- expPass bool
+ name string
+ params Params
+ expError error
}{
- {"default params", DefaultParams(), true},
- {"custom params", NewParams(exported.Tendermint), true},
- {"blank client", NewParams(" "), false},
- {"duplicate clients", NewParams(exported.Tendermint, exported.Tendermint), false},
- {"allow all clients plus valid client", NewParams(AllowAllClients, exported.Tendermint), false},
- {"too many allowed clients", NewParams(make([]string, MaxAllowedClientsLength+1)...), false},
+ {"default params", DefaultParams(), nil},
+ {"custom params", NewParams(exported.Tendermint), nil},
+ {"blank client", NewParams(" "), errors.New("client type 0 cannot be blank")},
+ {"duplicate clients", NewParams(exported.Tendermint, exported.Tendermint), errors.New("duplicate client type: 07-tendermint")},
+ {"allow all clients plus valid client", NewParams(AllowAllClients, exported.Tendermint), errors.New("allow list must have only one element because the allow all clients wildcard (*) is present")},
+ {"too many allowed clients", NewParams(make([]string, MaxAllowedClientsLength+1)...), errors.New("allowed clients length must not exceed 200 items")},
}
for _, tc := range testCases {
tc := tc
err := tc.params.Validate()
- if tc.expPass {
+ if tc.expError == nil {
require.NoError(t, err, tc.name)
} else {
require.Error(t, err, tc.name)
+ require.ErrorContains(t, err, tc.expError.Error())
}
}
}
diff --git a/modules/core/02-client/types/query.go b/modules/core/02-client/types/query.go
index 10757a47ef3..5c0dbf2bae0 100644
--- a/modules/core/02-client/types/query.go
+++ b/modules/core/02-client/types/query.go
@@ -1,20 +1,22 @@
package types
import (
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
+
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
)
var (
- _ codectypes.UnpackInterfacesMessage = (*QueryClientStateResponse)(nil)
- _ codectypes.UnpackInterfacesMessage = (*QueryClientStatesResponse)(nil)
- _ codectypes.UnpackInterfacesMessage = (*QueryConsensusStateResponse)(nil)
- _ codectypes.UnpackInterfacesMessage = (*QueryConsensusStatesResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryClientStateResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryClientStatesResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryConsensusStateResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryConsensusStatesResponse)(nil)
)
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (qcsr QueryClientStatesResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (qcsr QueryClientStatesResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
for _, cs := range qcsr.ClientStates {
if err := cs.UnpackInterfaces(unpacker); err != nil {
return err
@@ -34,13 +36,13 @@ func NewQueryClientStateResponse(
}
}
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (qcsr QueryClientStateResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (qcsr QueryClientStateResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(qcsr.ClientState, new(exported.ClientState))
}
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (qcsr QueryConsensusStatesResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (qcsr QueryConsensusStatesResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
for _, cs := range qcsr.ConsensusStates {
if err := cs.UnpackInterfaces(unpacker); err != nil {
return err
@@ -60,7 +62,7 @@ func NewQueryConsensusStateResponse(
}
}
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (qcsr QueryConsensusStateResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (qcsr QueryConsensusStateResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(qcsr.ConsensusState, new(exported.ConsensusState))
}
diff --git a/modules/core/02-client/types/query.pb.go b/modules/core/02-client/types/query.pb.go
index 2585a9a8988..4c501a97a2b 100644
--- a/modules/core/02-client/types/query.pb.go
+++ b/modules/core/02-client/types/query.pb.go
@@ -6,11 +6,11 @@ package types
import (
context "context"
fmt "fmt"
- types "github.com/cosmos/cosmos-sdk/codec/types"
query "github.com/cosmos/cosmos-sdk/types/query"
_ "github.com/cosmos/gogoproto/gogoproto"
grpc1 "github.com/cosmos/gogoproto/grpc"
proto "github.com/cosmos/gogoproto/proto"
+ any "github.com/cosmos/gogoproto/types/any"
v2 "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types/v2"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
@@ -84,7 +84,7 @@ func (m *QueryClientStateRequest) GetClientId() string {
// which the proof was retrieved.
type QueryClientStateResponse struct {
// client state associated with the request identifier
- ClientState *types.Any `protobuf:"bytes,1,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
+ ClientState *any.Any `protobuf:"bytes,1,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
// merkle proof of existence
Proof []byte `protobuf:"bytes,2,opt,name=proof,proto3" json:"proof,omitempty"`
// height at which the proof was retrieved
@@ -124,7 +124,7 @@ func (m *QueryClientStateResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryClientStateResponse proto.InternalMessageInfo
-func (m *QueryClientStateResponse) GetClientState() *types.Any {
+func (m *QueryClientStateResponse) GetClientState() *any.Any {
if m != nil {
return m.ClientState
}
@@ -328,7 +328,7 @@ func (m *QueryConsensusStateRequest) GetLatestHeight() bool {
// RPC method
type QueryConsensusStateResponse struct {
// consensus state associated with the client identifier at the given height
- ConsensusState *types.Any `protobuf:"bytes,1,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
+ ConsensusState *any.Any `protobuf:"bytes,1,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
// merkle proof of existence
Proof []byte `protobuf:"bytes,2,opt,name=proof,proto3" json:"proof,omitempty"`
// height at which the proof was retrieved
@@ -368,7 +368,7 @@ func (m *QueryConsensusStateResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryConsensusStateResponse proto.InternalMessageInfo
-func (m *QueryConsensusStateResponse) GetConsensusState() *types.Any {
+func (m *QueryConsensusStateResponse) GetConsensusState() *any.Any {
if m != nil {
return m.ConsensusState
}
@@ -833,7 +833,7 @@ var xxx_messageInfo_QueryUpgradedClientStateRequest proto.InternalMessageInfo
// Query/UpgradedClientState RPC method.
type QueryUpgradedClientStateResponse struct {
// client state associated with the request identifier
- UpgradedClientState *types.Any `protobuf:"bytes,1,opt,name=upgraded_client_state,json=upgradedClientState,proto3" json:"upgraded_client_state,omitempty"`
+ UpgradedClientState *any.Any `protobuf:"bytes,1,opt,name=upgraded_client_state,json=upgradedClientState,proto3" json:"upgraded_client_state,omitempty"`
}
func (m *QueryUpgradedClientStateResponse) Reset() { *m = QueryUpgradedClientStateResponse{} }
@@ -869,7 +869,7 @@ func (m *QueryUpgradedClientStateResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryUpgradedClientStateResponse proto.InternalMessageInfo
-func (m *QueryUpgradedClientStateResponse) GetUpgradedClientState() *types.Any {
+func (m *QueryUpgradedClientStateResponse) GetUpgradedClientState() *any.Any {
if m != nil {
return m.UpgradedClientState
}
@@ -918,7 +918,7 @@ var xxx_messageInfo_QueryUpgradedConsensusStateRequest proto.InternalMessageInfo
// Query/UpgradedConsensusState RPC method.
type QueryUpgradedConsensusStateResponse struct {
// Consensus state associated with the request identifier
- UpgradedConsensusState *types.Any `protobuf:"bytes,1,opt,name=upgraded_consensus_state,json=upgradedConsensusState,proto3" json:"upgraded_consensus_state,omitempty"`
+ UpgradedConsensusState *any.Any `protobuf:"bytes,1,opt,name=upgraded_consensus_state,json=upgradedConsensusState,proto3" json:"upgraded_consensus_state,omitempty"`
}
func (m *QueryUpgradedConsensusStateResponse) Reset() { *m = QueryUpgradedConsensusStateResponse{} }
@@ -954,7 +954,7 @@ func (m *QueryUpgradedConsensusStateResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryUpgradedConsensusStateResponse proto.InternalMessageInfo
-func (m *QueryUpgradedConsensusStateResponse) GetUpgradedConsensusState() *types.Any {
+func (m *QueryUpgradedConsensusStateResponse) GetUpgradedConsensusState() *any.Any {
if m != nil {
return m.UpgradedConsensusState
}
@@ -2904,7 +2904,7 @@ func (m *QueryClientStateResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientState == nil {
- m.ClientState = &types.Any{}
+ m.ClientState = &any.Any{}
}
if err := m.ClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -3403,7 +3403,7 @@ func (m *QueryConsensusStateResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ConsensusState == nil {
- m.ConsensusState = &types.Any{}
+ m.ConsensusState = &any.Any{}
}
if err := m.ConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -4382,7 +4382,7 @@ func (m *QueryUpgradedClientStateResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.UpgradedClientState == nil {
- m.UpgradedClientState = &types.Any{}
+ m.UpgradedClientState = &any.Any{}
}
if err := m.UpgradedClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -4518,7 +4518,7 @@ func (m *QueryUpgradedConsensusStateResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.UpgradedConsensusState == nil {
- m.UpgradedConsensusState = &types.Any{}
+ m.UpgradedConsensusState = &any.Any{}
}
if err := m.UpgradedConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/core/02-client/types/tx.pb.go b/modules/core/02-client/types/tx.pb.go
index 5a22491005e..9eb7ec90d60 100644
--- a/modules/core/02-client/types/tx.pb.go
+++ b/modules/core/02-client/types/tx.pb.go
@@ -5,13 +5,13 @@ package types
import (
context "context"
- types1 "cosmossdk.io/x/upgrade/types"
+ types "cosmossdk.io/x/upgrade/types"
fmt "fmt"
- types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/cosmos-sdk/types/msgservice"
_ "github.com/cosmos/gogoproto/gogoproto"
grpc1 "github.com/cosmos/gogoproto/grpc"
proto "github.com/cosmos/gogoproto/proto"
+ any "github.com/cosmos/gogoproto/types/any"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
@@ -34,10 +34,10 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
// MsgCreateClient defines a message to create an IBC client
type MsgCreateClient struct {
// light client state
- ClientState *types.Any `protobuf:"bytes,1,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
+ ClientState *any.Any `protobuf:"bytes,1,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
// consensus state associated with the client that corresponds to a given
// height.
- ConsensusState *types.Any `protobuf:"bytes,2,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
+ ConsensusState *any.Any `protobuf:"bytes,2,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
// signer address
Signer string `protobuf:"bytes,3,opt,name=signer,proto3" json:"signer,omitempty"`
}
@@ -119,7 +119,7 @@ type MsgUpdateClient struct {
// client unique identifier
ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
// client message to update the light client
- ClientMessage *types.Any `protobuf:"bytes,2,opt,name=client_message,json=clientMessage,proto3" json:"client_message,omitempty"`
+ ClientMessage *any.Any `protobuf:"bytes,2,opt,name=client_message,json=clientMessage,proto3" json:"client_message,omitempty"`
// signer address
Signer string `protobuf:"bytes,3,opt,name=signer,proto3" json:"signer,omitempty"`
}
@@ -200,10 +200,10 @@ type MsgUpgradeClient struct {
// client unique identifier
ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
// upgraded client state
- ClientState *types.Any `protobuf:"bytes,2,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
+ ClientState *any.Any `protobuf:"bytes,2,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"`
// upgraded consensus state, only contains enough information to serve as a
// basis of trust in update logic
- ConsensusState *types.Any `protobuf:"bytes,3,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
+ ConsensusState *any.Any `protobuf:"bytes,3,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
// proof that old chain committed to new client
ProofUpgradeClient []byte `protobuf:"bytes,4,opt,name=proof_upgrade_client,json=proofUpgradeClient,proto3" json:"proof_upgrade_client,omitempty"`
// proof that old chain committed to new consensus state
@@ -291,7 +291,7 @@ type MsgSubmitMisbehaviour struct {
// client unique identifier
ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
// misbehaviour used for freezing the light client
- Misbehaviour *types.Any `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"`
+ Misbehaviour *any.Any `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"`
// signer address
Signer string `protobuf:"bytes,3,opt,name=signer,proto3" json:"signer,omitempty"`
}
@@ -450,7 +450,7 @@ var xxx_messageInfo_MsgRecoverClientResponse proto.InternalMessageInfo
// MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of an IBC client using a v1 governance proposal
type MsgIBCSoftwareUpgrade struct {
- Plan types1.Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan"`
+ Plan types.Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan"`
// An UpgradedClientState must be provided to perform an IBC breaking upgrade.
// This will make the chain commit to the correct upgraded (self) client state
// before the upgrade occurs, so that connecting chains can verify that the
@@ -459,7 +459,7 @@ type MsgIBCSoftwareUpgrade struct {
// planned chain upgrades. Correspondingly, the UpgradedClientState field has been
// deprecated in the Cosmos SDK to allow for this logic to exist solely in
// the 02-client module.
- UpgradedClientState *types.Any `protobuf:"bytes,2,opt,name=upgraded_client_state,json=upgradedClientState,proto3" json:"upgraded_client_state,omitempty"`
+ UpgradedClientState *any.Any `protobuf:"bytes,2,opt,name=upgraded_client_state,json=upgradedClientState,proto3" json:"upgraded_client_state,omitempty"`
// signer address
Signer string `protobuf:"bytes,3,opt,name=signer,proto3" json:"signer,omitempty"`
}
@@ -497,14 +497,14 @@ func (m *MsgIBCSoftwareUpgrade) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgIBCSoftwareUpgrade proto.InternalMessageInfo
-func (m *MsgIBCSoftwareUpgrade) GetPlan() types1.Plan {
+func (m *MsgIBCSoftwareUpgrade) GetPlan() types.Plan {
if m != nil {
return m.Plan
}
- return types1.Plan{}
+ return types.Plan{}
}
-func (m *MsgIBCSoftwareUpgrade) GetUpgradedClientState() *types.Any {
+func (m *MsgIBCSoftwareUpgrade) GetUpgradedClientState() *any.Any {
if m != nil {
return m.UpgradedClientState
}
@@ -1845,7 +1845,7 @@ func (m *MsgCreateClient) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientState == nil {
- m.ClientState = &types.Any{}
+ m.ClientState = &any.Any{}
}
if err := m.ClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -1881,7 +1881,7 @@ func (m *MsgCreateClient) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ConsensusState == nil {
- m.ConsensusState = &types.Any{}
+ m.ConsensusState = &any.Any{}
}
if err := m.ConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -2113,7 +2113,7 @@ func (m *MsgUpdateClient) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientMessage == nil {
- m.ClientMessage = &types.Any{}
+ m.ClientMessage = &any.Any{}
}
if err := m.ClientMessage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -2313,7 +2313,7 @@ func (m *MsgUpgradeClient) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientState == nil {
- m.ClientState = &types.Any{}
+ m.ClientState = &any.Any{}
}
if err := m.ClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -2349,7 +2349,7 @@ func (m *MsgUpgradeClient) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ConsensusState == nil {
- m.ConsensusState = &types.Any{}
+ m.ConsensusState = &any.Any{}
}
if err := m.ConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -2617,7 +2617,7 @@ func (m *MsgSubmitMisbehaviour) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.Misbehaviour == nil {
- m.Misbehaviour = &types.Any{}
+ m.Misbehaviour = &any.Any{}
}
if err := m.Misbehaviour.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -3014,7 +3014,7 @@ func (m *MsgIBCSoftwareUpgrade) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.UpgradedClientState == nil {
- m.UpgradedClientState = &types.Any{}
+ m.UpgradedClientState = &any.Any{}
}
if err := m.UpgradedClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/core/03-connection/keeper/events.go b/modules/core/03-connection/keeper/events.go
index 04d0bb4851d..a05ca272741 100644
--- a/modules/core/03-connection/keeper/events.go
+++ b/modules/core/03-connection/keeper/events.go
@@ -3,78 +3,80 @@ package keeper
import (
"context"
+ "cosmossdk.io/core/event"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
)
// emitConnectionOpenInitEvent emits a connection open init event
-func emitConnectionOpenInitEvent(ctx context.Context, connectionID string, clientID string, counterparty types.Counterparty) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeConnectionOpenInit,
- sdk.NewAttribute(types.AttributeKeyConnectionID, connectionID),
- sdk.NewAttribute(types.AttributeKeyClientID, clientID),
- sdk.NewAttribute(types.AttributeKeyCounterpartyClientID, counterparty.ClientId),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitConnectionOpenInitEvent(ctx context.Context, connectionID string, clientID string, counterparty types.Counterparty) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeConnectionOpenInit,
+ event.NewAttribute(types.AttributeKeyConnectionID, connectionID),
+ event.NewAttribute(types.AttributeKeyClientID, clientID),
+ event.NewAttribute(types.AttributeKeyCounterpartyClientID, counterparty.ClientId),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitConnectionOpenTryEvent emits a connection open try event
-func emitConnectionOpenTryEvent(ctx context.Context, connectionID string, clientID string, counterparty types.Counterparty) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeConnectionOpenTry,
- sdk.NewAttribute(types.AttributeKeyConnectionID, connectionID),
- sdk.NewAttribute(types.AttributeKeyClientID, clientID),
- sdk.NewAttribute(types.AttributeKeyCounterpartyClientID, counterparty.ClientId),
- sdk.NewAttribute(types.AttributeKeyCounterpartyConnectionID, counterparty.ConnectionId),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitConnectionOpenTryEvent(ctx context.Context, connectionID string, clientID string, counterparty types.Counterparty) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeConnectionOpenTry,
+ event.NewAttribute(types.AttributeKeyConnectionID, connectionID),
+ event.NewAttribute(types.AttributeKeyClientID, clientID),
+ event.NewAttribute(types.AttributeKeyCounterpartyClientID, counterparty.ClientId),
+ event.NewAttribute(types.AttributeKeyCounterpartyConnectionID, counterparty.ConnectionId),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitConnectionOpenAckEvent emits a connection open acknowledge event
-func emitConnectionOpenAckEvent(ctx context.Context, connectionID string, connectionEnd types.ConnectionEnd) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeConnectionOpenAck,
- sdk.NewAttribute(types.AttributeKeyConnectionID, connectionID),
- sdk.NewAttribute(types.AttributeKeyClientID, connectionEnd.ClientId),
- sdk.NewAttribute(types.AttributeKeyCounterpartyClientID, connectionEnd.Counterparty.ClientId),
- sdk.NewAttribute(types.AttributeKeyCounterpartyConnectionID, connectionEnd.Counterparty.ConnectionId),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitConnectionOpenAckEvent(ctx context.Context, connectionID string, connectionEnd types.ConnectionEnd) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeConnectionOpenAck,
+ event.NewAttribute(types.AttributeKeyConnectionID, connectionID),
+ event.NewAttribute(types.AttributeKeyClientID, connectionEnd.ClientId),
+ event.NewAttribute(types.AttributeKeyCounterpartyClientID, connectionEnd.Counterparty.ClientId),
+ event.NewAttribute(types.AttributeKeyCounterpartyConnectionID, connectionEnd.Counterparty.ConnectionId),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitConnectionOpenConfirmEvent emits a connection open confirm event
-func emitConnectionOpenConfirmEvent(ctx context.Context, connectionID string, connectionEnd types.ConnectionEnd) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeConnectionOpenConfirm,
- sdk.NewAttribute(types.AttributeKeyConnectionID, connectionID),
- sdk.NewAttribute(types.AttributeKeyClientID, connectionEnd.ClientId),
- sdk.NewAttribute(types.AttributeKeyCounterpartyClientID, connectionEnd.Counterparty.ClientId),
- sdk.NewAttribute(types.AttributeKeyCounterpartyConnectionID, connectionEnd.Counterparty.ConnectionId),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitConnectionOpenConfirmEvent(ctx context.Context, connectionID string, connectionEnd types.ConnectionEnd) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeConnectionOpenConfirm,
+ event.NewAttribute(types.AttributeKeyConnectionID, connectionID),
+ event.NewAttribute(types.AttributeKeyClientID, connectionEnd.ClientId),
+ event.NewAttribute(types.AttributeKeyCounterpartyClientID, connectionEnd.Counterparty.ClientId),
+ event.NewAttribute(types.AttributeKeyCounterpartyConnectionID, connectionEnd.Counterparty.ConnectionId),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
diff --git a/modules/core/03-connection/keeper/grpc_query.go b/modules/core/03-connection/keeper/grpc_query.go
index 859b6125332..c7d331f5f6e 100644
--- a/modules/core/03-connection/keeper/grpc_query.go
+++ b/modules/core/03-connection/keeper/grpc_query.go
@@ -10,7 +10,6 @@ import (
"cosmossdk.io/store/prefix"
"github.com/cosmos/cosmos-sdk/runtime"
- sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/query"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
@@ -34,7 +33,7 @@ func NewQueryServer(k *Keeper) types.QueryServer {
}
// Connection implements the Query/Connection gRPC method
-func (q *queryServer) Connection(c context.Context, req *types.QueryConnectionRequest) (*types.QueryConnectionResponse, error) {
+func (q *queryServer) Connection(ctx context.Context, req *types.QueryConnectionRequest) (*types.QueryConnectionResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -43,7 +42,6 @@ func (q *queryServer) Connection(c context.Context, req *types.QueryConnectionRe
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
connection, found := q.GetConnection(ctx, req.ConnectionId)
if !found {
return nil, status.Error(
@@ -59,16 +57,14 @@ func (q *queryServer) Connection(c context.Context, req *types.QueryConnectionRe
}
// Connections implements the Query/Connections gRPC method
-func (q *queryServer) Connections(c context.Context, req *types.QueryConnectionsRequest) (*types.QueryConnectionsResponse, error) {
+func (q *queryServer) Connections(ctx context.Context, req *types.QueryConnectionsRequest) (*types.QueryConnectionsResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
- ctx := sdk.UnwrapSDKContext(c)
-
var connections []*types.IdentifiedConnection
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), []byte(host.KeyConnectionPrefix))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), []byte(host.KeyConnectionPrefix))
pageRes, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
var result types.ConnectionEnd
@@ -97,7 +93,7 @@ func (q *queryServer) Connections(c context.Context, req *types.QueryConnections
}
// ClientConnections implements the Query/ClientConnections gRPC method
-func (q *queryServer) ClientConnections(c context.Context, req *types.QueryClientConnectionsRequest) (*types.QueryClientConnectionsResponse, error) {
+func (q *queryServer) ClientConnections(ctx context.Context, req *types.QueryClientConnectionsRequest) (*types.QueryClientConnectionsResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -106,7 +102,6 @@ func (q *queryServer) ClientConnections(c context.Context, req *types.QueryClien
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
clientConnectionPaths, found := q.GetClientConnectionPaths(ctx, req.ClientId)
if !found {
return nil, status.Error(
@@ -122,7 +117,7 @@ func (q *queryServer) ClientConnections(c context.Context, req *types.QueryClien
}
// ConnectionClientState implements the Query/ConnectionClientState gRPC method
-func (q *queryServer) ConnectionClientState(c context.Context, req *types.QueryConnectionClientStateRequest) (*types.QueryConnectionClientStateResponse, error) {
+func (q *queryServer) ConnectionClientState(ctx context.Context, req *types.QueryConnectionClientStateRequest) (*types.QueryConnectionClientStateResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -131,8 +126,6 @@ func (q *queryServer) ConnectionClientState(c context.Context, req *types.QueryC
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
-
connection, found := q.GetConnection(ctx, req.ConnectionId)
if !found {
return nil, status.Error(
@@ -156,7 +149,7 @@ func (q *queryServer) ConnectionClientState(c context.Context, req *types.QueryC
}
// ConnectionConsensusState implements the Query/ConnectionConsensusState gRPC method
-func (q *queryServer) ConnectionConsensusState(c context.Context, req *types.QueryConnectionConsensusStateRequest) (*types.QueryConnectionConsensusStateResponse, error) {
+func (q *queryServer) ConnectionConsensusState(ctx context.Context, req *types.QueryConnectionConsensusStateRequest) (*types.QueryConnectionConsensusStateResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@@ -165,8 +158,6 @@ func (q *queryServer) ConnectionConsensusState(c context.Context, req *types.Que
return nil, status.Error(codes.InvalidArgument, err.Error())
}
- ctx := sdk.UnwrapSDKContext(c)
-
connection, found := q.GetConnection(ctx, req.ConnectionId)
if !found {
return nil, status.Error(
@@ -194,10 +185,8 @@ func (q *queryServer) ConnectionConsensusState(c context.Context, req *types.Que
}
// ConnectionParams implements the Query/ConnectionParams gRPC method.
-func (q *queryServer) ConnectionParams(c context.Context, req *types.QueryConnectionParamsRequest) (*types.QueryConnectionParamsResponse, error) {
- ctx := sdk.UnwrapSDKContext(c)
+func (q *queryServer) ConnectionParams(ctx context.Context, req *types.QueryConnectionParamsRequest) (*types.QueryConnectionParamsResponse, error) {
params := q.GetParams(ctx)
-
return &types.QueryConnectionParamsResponse{
Params: ¶ms,
}, nil
diff --git a/modules/core/03-connection/keeper/handshake.go b/modules/core/03-connection/keeper/handshake.go
index 0b52d58991a..9700097dd47 100644
--- a/modules/core/03-connection/keeper/handshake.go
+++ b/modules/core/03-connection/keeper/handshake.go
@@ -47,11 +47,13 @@ func (k *Keeper) ConnOpenInit(
connection := types.NewConnectionEnd(types.INIT, clientID, counterparty, versions, delayPeriod)
k.SetConnection(ctx, connectionID, connection)
- k.Logger(ctx).Info("connection state updated", "connection-id", connectionID, "previous-state", types.UNINITIALIZED, "new-state", types.INIT)
+ k.Logger.Info("connection state updated", "connection-id", connectionID, "previous-state", types.UNINITIALIZED, "new-state", types.INIT)
defer telemetry.IncrCounter(1, "ibc", "connection", "open-init")
- emitConnectionOpenInitEvent(ctx, connectionID, clientID, counterparty)
+ if err := k.emitConnectionOpenInitEvent(ctx, connectionID, clientID, counterparty); err != nil {
+ return "", err
+ }
return connectionID, nil
}
@@ -106,11 +108,13 @@ func (k *Keeper) ConnOpenTry(
}
k.SetConnection(ctx, connectionID, connection)
- k.Logger(ctx).Info("connection state updated", "connection-id", connectionID, "previous-state", types.UNINITIALIZED, "new-state", types.TRYOPEN)
+ k.Logger.Info("connection state updated", "connection-id", connectionID, "previous-state", types.UNINITIALIZED, "new-state", types.TRYOPEN)
defer telemetry.IncrCounter(1, "ibc", "connection", "open-try")
- emitConnectionOpenTryEvent(ctx, connectionID, clientID, counterparty)
+ if err := k.emitConnectionOpenTryEvent(ctx, connectionID, clientID, counterparty); err != nil {
+ return "", nil
+ }
return connectionID, nil
}
@@ -161,7 +165,7 @@ func (k *Keeper) ConnOpenAck(
return err
}
- k.Logger(ctx).Info("connection state updated", "connection-id", connectionID, "previous-state", types.INIT, "new-state", types.OPEN)
+ k.Logger.Info("connection state updated", "connection-id", connectionID, "previous-state", types.INIT, "new-state", types.OPEN)
defer telemetry.IncrCounter(1, "ibc", "connection", "open-ack")
@@ -171,9 +175,7 @@ func (k *Keeper) ConnOpenAck(
connection.Counterparty.ConnectionId = counterpartyConnectionID
k.SetConnection(ctx, connectionID, connection)
- emitConnectionOpenAckEvent(ctx, connectionID, connection)
-
- return nil
+ return k.emitConnectionOpenAckEvent(ctx, connectionID, connection)
}
// ConnOpenConfirm confirms opening of a connection on chain A to chain B, after
@@ -215,11 +217,9 @@ func (k *Keeper) ConnOpenConfirm(
// Update ChainB's connection to Open
connection.State = types.OPEN
k.SetConnection(ctx, connectionID, connection)
- k.Logger(ctx).Info("connection state updated", "connection-id", connectionID, "previous-state", types.TRYOPEN, "new-state", types.OPEN)
+ k.Logger.Info("connection state updated", "connection-id", connectionID, "previous-state", types.TRYOPEN, "new-state", types.OPEN)
defer telemetry.IncrCounter(1, "ibc", "connection", "open-confirm")
- emitConnectionOpenConfirmEvent(ctx, connectionID, connection)
-
- return nil
+ return k.emitConnectionOpenConfirmEvent(ctx, connectionID, connection)
}
diff --git a/modules/core/03-connection/keeper/keeper.go b/modules/core/03-connection/keeper/keeper.go
index 72d9beb6d08..f032e1fad81 100644
--- a/modules/core/03-connection/keeper/keeper.go
+++ b/modules/core/03-connection/keeper/keeper.go
@@ -4,9 +4,8 @@ import (
"context"
"errors"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
errorsmod "cosmossdk.io/errors"
- "cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec"
@@ -18,35 +17,28 @@ import (
commitmenttypes "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
// Keeper defines the IBC connection keeper
type Keeper struct {
- // implements gRPC QueryServer interface
- types.QueryServer
+ appmodule.Environment
- storeService corestore.KVStoreService
- legacySubspace types.ParamSubspace
cdc codec.BinaryCodec
clientKeeper types.ClientKeeper
+ legacySubspace types.ParamSubspace
}
// NewKeeper creates a new IBC connection Keeper instance
-func NewKeeper(cdc codec.BinaryCodec, storeService corestore.KVStoreService, legacySubspace types.ParamSubspace, ck types.ClientKeeper) *Keeper {
+func NewKeeper(cdc codec.BinaryCodec, env appmodule.Environment, legacySubspace types.ParamSubspace, ck types.ClientKeeper) *Keeper {
return &Keeper{
- storeService: storeService,
+ Environment: env,
cdc: cdc,
legacySubspace: legacySubspace,
clientKeeper: ck,
}
}
-// Logger returns a module-specific logger.
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return sdkCtx.Logger().With("module", "x/"+exported.ModuleName+"/"+types.SubModuleName)
-}
-
// GetCommitmentPrefix returns the IBC connection store prefix as a commitment
// Prefix
func (*Keeper) GetCommitmentPrefix() exported.Prefix {
@@ -65,7 +57,7 @@ func (k *Keeper) GenerateConnectionIdentifier(ctx context.Context) string {
// GetConnection returns a connection with a particular identifier
func (k *Keeper) GetConnection(ctx context.Context, connectionID string) (types.ConnectionEnd, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.ConnectionKey(connectionID))
if err != nil {
panic(err)
@@ -84,7 +76,7 @@ func (k *Keeper) GetConnection(ctx context.Context, connectionID string) (types.
// HasConnection returns a true if the connection with the given identifier
// exists in the store.
func (k *Keeper) HasConnection(ctx context.Context, connectionID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(host.ConnectionKey(connectionID))
if err != nil {
return false
@@ -94,7 +86,7 @@ func (k *Keeper) HasConnection(ctx context.Context, connectionID string) bool {
// SetConnection sets a connection to the store
func (k *Keeper) SetConnection(ctx context.Context, connectionID string, connection types.ConnectionEnd) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(&connection)
if err := store.Set(host.ConnectionKey(connectionID), bz); err != nil {
panic(err)
@@ -104,7 +96,7 @@ func (k *Keeper) SetConnection(ctx context.Context, connectionID string, connect
// GetClientConnectionPaths returns all the connection paths stored under a
// particular client
func (k *Keeper) GetClientConnectionPaths(ctx context.Context, clientID string) ([]string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.ClientConnectionsKey(clientID))
if err != nil {
panic(err)
@@ -121,7 +113,7 @@ func (k *Keeper) GetClientConnectionPaths(ctx context.Context, clientID string)
// SetClientConnectionPaths sets the connections paths for client
func (k *Keeper) SetClientConnectionPaths(ctx context.Context, clientID string, paths []string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
clientPaths := types.ClientPaths{Paths: paths}
bz := k.cdc.MustMarshal(&clientPaths)
if err := store.Set(host.ClientConnectionsKey(clientID), bz); err != nil {
@@ -131,7 +123,7 @@ func (k *Keeper) SetClientConnectionPaths(ctx context.Context, clientID string,
// GetNextConnectionSequence gets the next connection sequence from the store.
func (k *Keeper) GetNextConnectionSequence(ctx context.Context) uint64 {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.KeyNextConnectionSequence))
if err != nil {
panic(err)
@@ -146,7 +138,7 @@ func (k *Keeper) GetNextConnectionSequence(ctx context.Context) uint64 {
// SetNextConnectionSequence sets the next connection sequence to the store.
func (k *Keeper) SetNextConnectionSequence(ctx context.Context, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set([]byte(types.KeyNextConnectionSequence), bz); err != nil {
panic(err)
@@ -158,8 +150,7 @@ func (k *Keeper) SetNextConnectionSequence(ctx context.Context, sequence uint64)
// no paths are stored.
func (k *Keeper) GetAllClientConnectionPaths(ctx context.Context) []types.ConnectionPaths {
var allConnectionPaths []types.ConnectionPaths
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- k.clientKeeper.IterateClientStates(sdkCtx, nil, func(clientID string, cs exported.ClientState) bool {
+ k.clientKeeper.IterateClientStates(ctx, nil, func(clientID string, cs exported.ClientState) bool {
paths, found := k.GetClientConnectionPaths(ctx, clientID)
if !found {
// continue when connection handshake is not initialized
@@ -177,11 +168,11 @@ func (k *Keeper) GetAllClientConnectionPaths(ctx context.Context) []types.Connec
// For each ConnectionEnd, cb will be called. If the cb returns true, the
// iterator will close and stop.
func (k *Keeper) IterateConnections(ctx context.Context, cb func(types.IdentifiedConnection) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyConnectionPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
var connection types.ConnectionEnd
k.cdc.MustUnmarshal(iterator.Value(), &connection)
@@ -231,7 +222,7 @@ func (k *Keeper) addConnectionToClient(ctx context.Context, clientID, connection
// GetParams returns the total set of ibc-connection parameters.
func (k *Keeper) GetParams(ctx context.Context) types.Params {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.ParamsKey))
if err != nil {
panic(err)
@@ -248,7 +239,7 @@ func (k *Keeper) GetParams(ctx context.Context) types.Params {
// SetParams sets the total set of ibc-connection parameters.
func (k *Keeper) SetParams(ctx context.Context, params types.Params) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(¶ms)
if err := store.Set([]byte(types.ParamsKey), bz); err != nil {
panic(err)
diff --git a/modules/core/03-connection/keeper/migrations.go b/modules/core/03-connection/keeper/migrations.go
index d668687d017..83503ebf971 100644
--- a/modules/core/03-connection/keeper/migrations.go
+++ b/modules/core/03-connection/keeper/migrations.go
@@ -35,6 +35,6 @@ func (m Migrator) MigrateParams(ctx sdk.Context) error {
}
m.keeper.SetParams(ctx, params)
- m.keeper.Logger(ctx).Info("successfully migrated connection to self-manage params")
+ m.keeper.Logger.Info("successfully migrated connection to self-manage params")
return nil
}
diff --git a/modules/core/03-connection/types/codec.go b/modules/core/03-connection/types/codec.go
index 628fbf06526..8f47e20b56e 100644
--- a/modules/core/03-connection/types/codec.go
+++ b/modules/core/03-connection/types/codec.go
@@ -1,6 +1,8 @@
package types
import (
+ coreregistry "cosmossdk.io/core/registry"
+
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -9,7 +11,7 @@ import (
// RegisterInterfaces register the ibc interfaces submodule implementations to protobuf
// Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*sdk.Msg)(nil),
&MsgConnectionOpenInit{},
diff --git a/modules/core/03-connection/types/codec_test.go b/modules/core/03-connection/types/codec_test.go
index 3bd87924fc3..e70b72cd65b 100644
--- a/modules/core/03-connection/types/codec_test.go
+++ b/modules/core/03-connection/types/codec_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -55,7 +56,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expError == nil {
diff --git a/modules/core/03-connection/types/expected_keepers.go b/modules/core/03-connection/types/expected_keepers.go
index 81430da3242..bdfc0e81083 100644
--- a/modules/core/03-connection/types/expected_keepers.go
+++ b/modules/core/03-connection/types/expected_keepers.go
@@ -3,8 +3,9 @@ package types
import (
"context"
+ paramtypes "cosmossdk.io/x/params/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
)
diff --git a/modules/core/03-connection/types/msgs_test.go b/modules/core/03-connection/types/msgs_test.go
index 5d82fd94b50..4d3e7b067dc 100644
--- a/modules/core/03-connection/types/msgs_test.go
+++ b/modules/core/03-connection/types/msgs_test.go
@@ -15,6 +15,7 @@ import (
"cosmossdk.io/store/rootmulti"
storetypes "cosmossdk.io/store/types"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -263,8 +264,8 @@ func TestMsgUpdateParamsGetSigners(t *testing.T) {
Params: types.DefaultParams(),
}
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(&msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(&msg)
if tc.errMsg == "" {
require.NoError(t, err)
require.Equal(t, tc.address.Bytes(), signers[0])
diff --git a/modules/core/03-connection/types/params_legacy.go b/modules/core/03-connection/types/params_legacy.go
index 99f32271e6d..bee9b6d3642 100644
--- a/modules/core/03-connection/types/params_legacy.go
+++ b/modules/core/03-connection/types/params_legacy.go
@@ -9,7 +9,7 @@ package types
import (
"fmt"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ paramtypes "cosmossdk.io/x/params/types"
)
// KeyMaxExpectedTimePerBlock is store's key for MaxExpectedTimePerBlock parameter
diff --git a/modules/core/03-connection/types/params_test.go b/modules/core/03-connection/types/params_test.go
index 62b42b6d71f..0c515ba3ff3 100644
--- a/modules/core/03-connection/types/params_test.go
+++ b/modules/core/03-connection/types/params_test.go
@@ -1,6 +1,7 @@
package types_test
import (
+ "errors"
"testing"
"github.com/stretchr/testify/require"
@@ -10,23 +11,23 @@ import (
func TestValidateParams(t *testing.T) {
testCases := []struct {
- name string
- params types.Params
- expPass bool
+ name string
+ params types.Params
+ expError error
}{
- {"default params", types.DefaultParams(), true},
- {"custom params", types.NewParams(10), true},
- {"blank client", types.NewParams(0), false},
+ {"default params", types.DefaultParams(), nil},
+ {"custom params", types.NewParams(10), nil},
+ {"blank client", types.NewParams(0), errors.New("MaxExpectedTimePerBlock cannot be zero")},
}
for _, tc := range testCases {
tc := tc
err := tc.params.Validate()
- if tc.expPass {
+ if tc.expError == nil {
require.NoError(t, err, tc.name)
} else {
- require.Error(t, err, tc.name)
+ require.ErrorContains(t, err, tc.expError.Error())
}
}
}
diff --git a/modules/core/03-connection/types/query.go b/modules/core/03-connection/types/query.go
index af1dd7f9b33..c9858239c6a 100644
--- a/modules/core/03-connection/types/query.go
+++ b/modules/core/03-connection/types/query.go
@@ -1,15 +1,15 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
)
var (
- _ codectypes.UnpackInterfacesMessage = (*QueryConnectionClientStateResponse)(nil)
- _ codectypes.UnpackInterfacesMessage = (*QueryConnectionConsensusStateResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryConnectionClientStateResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryConnectionConsensusStateResponse)(nil)
)
// NewQueryConnectionResponse creates a new QueryConnectionResponse instance
@@ -50,13 +50,13 @@ func NewQueryConnectionClientStateResponse(identifiedClientState clienttypes.Ide
}
}
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (qccsr QueryConnectionClientStateResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (qccsr QueryConnectionClientStateResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return qccsr.IdentifiedClientState.UnpackInterfaces(unpacker)
}
// NewQueryConnectionConsensusStateResponse creates a newQueryConnectionConsensusStateResponse instance
-func NewQueryConnectionConsensusStateResponse(clientID string, anyConsensusState *codectypes.Any, consensusStateHeight exported.Height, proof []byte, height clienttypes.Height) *QueryConnectionConsensusStateResponse {
+func NewQueryConnectionConsensusStateResponse(clientID string, anyConsensusState *gogoprotoany.Any, consensusStateHeight exported.Height, proof []byte, height clienttypes.Height) *QueryConnectionConsensusStateResponse {
return &QueryConnectionConsensusStateResponse{
ConsensusState: anyConsensusState,
ClientId: clientID,
@@ -65,7 +65,7 @@ func NewQueryConnectionConsensusStateResponse(clientID string, anyConsensusState
}
}
-// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
-func (qccsr QueryConnectionConsensusStateResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
+func (qccsr QueryConnectionConsensusStateResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(qccsr.ConsensusState, new(exported.ConsensusState))
}
diff --git a/modules/core/03-connection/types/query.pb.go b/modules/core/03-connection/types/query.pb.go
index 2915d37eac8..6c4c0bb5011 100644
--- a/modules/core/03-connection/types/query.pb.go
+++ b/modules/core/03-connection/types/query.pb.go
@@ -6,11 +6,11 @@ package types
import (
context "context"
fmt "fmt"
- types1 "github.com/cosmos/cosmos-sdk/codec/types"
query "github.com/cosmos/cosmos-sdk/types/query"
_ "github.com/cosmos/gogoproto/gogoproto"
grpc1 "github.com/cosmos/gogoproto/grpc"
proto "github.com/cosmos/gogoproto/proto"
+ any "github.com/cosmos/gogoproto/types/any"
types "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
@@ -547,7 +547,7 @@ func (m *QueryConnectionConsensusStateRequest) GetRevisionHeight() uint64 {
// Query/ConnectionConsensusState RPC method
type QueryConnectionConsensusStateResponse struct {
// consensus state associated with the channel
- ConsensusState *types1.Any `protobuf:"bytes,1,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
+ ConsensusState *any.Any `protobuf:"bytes,1,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
// client ID associated with the consensus state
ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
// merkle proof of existence
@@ -589,7 +589,7 @@ func (m *QueryConnectionConsensusStateResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryConnectionConsensusStateResponse proto.InternalMessageInfo
-func (m *QueryConnectionConsensusStateResponse) GetConsensusState() *types1.Any {
+func (m *QueryConnectionConsensusStateResponse) GetConsensusState() *any.Any {
if m != nil {
return m.ConsensusState
}
@@ -2886,7 +2886,7 @@ func (m *QueryConnectionConsensusStateResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ConsensusState == nil {
- m.ConsensusState = &types1.Any{}
+ m.ConsensusState = &any.Any{}
}
if err := m.ConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/core/03-connection/types/tx.pb.go b/modules/core/03-connection/types/tx.pb.go
index 4ce68cd9ba6..53d67dbef5a 100644
--- a/modules/core/03-connection/types/tx.pb.go
+++ b/modules/core/03-connection/types/tx.pb.go
@@ -6,12 +6,12 @@ package types
import (
context "context"
fmt "fmt"
- types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/cosmos-sdk/types/msgservice"
_ "github.com/cosmos/gogoproto/gogoproto"
grpc1 "github.com/cosmos/gogoproto/grpc"
proto "github.com/cosmos/gogoproto/proto"
- types1 "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
+ any "github.com/cosmos/gogoproto/types/any"
+ types "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
@@ -119,11 +119,11 @@ type MsgConnectionOpenTry struct {
// Deprecated: this field is unused. Crossing hellos are no longer supported in core IBC.
PreviousConnectionId string `protobuf:"bytes,2,opt,name=previous_connection_id,json=previousConnectionId,proto3" json:"previous_connection_id,omitempty"` // Deprecated: Do not use.
// Deprecated: this field is unused.
- ClientState *types.Any `protobuf:"bytes,3,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"` // Deprecated: Do not use.
- Counterparty Counterparty `protobuf:"bytes,4,opt,name=counterparty,proto3" json:"counterparty"`
- DelayPeriod uint64 `protobuf:"varint,5,opt,name=delay_period,json=delayPeriod,proto3" json:"delay_period,omitempty"`
- CounterpartyVersions []*Version `protobuf:"bytes,6,rep,name=counterparty_versions,json=counterpartyVersions,proto3" json:"counterparty_versions,omitempty"`
- ProofHeight types1.Height `protobuf:"bytes,7,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height"`
+ ClientState *any.Any `protobuf:"bytes,3,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"` // Deprecated: Do not use.
+ Counterparty Counterparty `protobuf:"bytes,4,opt,name=counterparty,proto3" json:"counterparty"`
+ DelayPeriod uint64 `protobuf:"varint,5,opt,name=delay_period,json=delayPeriod,proto3" json:"delay_period,omitempty"`
+ CounterpartyVersions []*Version `protobuf:"bytes,6,rep,name=counterparty_versions,json=counterpartyVersions,proto3" json:"counterparty_versions,omitempty"`
+ ProofHeight types.Height `protobuf:"bytes,7,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height"`
// proof of the initialization the connection on Chain A: `UNINITIALIZED ->
// INIT`
ProofInit []byte `protobuf:"bytes,8,opt,name=proof_init,json=proofInit,proto3" json:"proof_init,omitempty"`
@@ -132,8 +132,8 @@ type MsgConnectionOpenTry struct {
// Deprecated: this field is unused.
ProofConsensus []byte `protobuf:"bytes,10,opt,name=proof_consensus,json=proofConsensus,proto3" json:"proof_consensus,omitempty"` // Deprecated: Do not use.
// Deprecated: this field is unused.
- ConsensusHeight types1.Height `protobuf:"bytes,11,opt,name=consensus_height,json=consensusHeight,proto3" json:"consensus_height"` // Deprecated: Do not use.
- Signer string `protobuf:"bytes,12,opt,name=signer,proto3" json:"signer,omitempty"`
+ ConsensusHeight types.Height `protobuf:"bytes,11,opt,name=consensus_height,json=consensusHeight,proto3" json:"consensus_height"` // Deprecated: Do not use.
+ Signer string `protobuf:"bytes,12,opt,name=signer,proto3" json:"signer,omitempty"`
// Deprecated: this field is unused.
HostConsensusStateProof []byte `protobuf:"bytes,13,opt,name=host_consensus_state_proof,json=hostConsensusStateProof,proto3" json:"host_consensus_state_proof,omitempty"` // Deprecated: Do not use.
}
@@ -215,8 +215,8 @@ type MsgConnectionOpenAck struct {
CounterpartyConnectionId string `protobuf:"bytes,2,opt,name=counterparty_connection_id,json=counterpartyConnectionId,proto3" json:"counterparty_connection_id,omitempty"`
Version *Version `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
// Deprecated: this field is unused.
- ClientState *types.Any `protobuf:"bytes,4,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"` // Deprecated: Do not use.
- ProofHeight types1.Height `protobuf:"bytes,5,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height"`
+ ClientState *any.Any `protobuf:"bytes,4,opt,name=client_state,json=clientState,proto3" json:"client_state,omitempty"` // Deprecated: Do not use.
+ ProofHeight types.Height `protobuf:"bytes,5,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height"`
// proof of the initialization the connection on Chain B: `UNINITIALIZED ->
// TRYOPEN`
ProofTry []byte `protobuf:"bytes,6,opt,name=proof_try,json=proofTry,proto3" json:"proof_try,omitempty"`
@@ -225,8 +225,8 @@ type MsgConnectionOpenAck struct {
// Deprecated: this field is unused.
ProofConsensus []byte `protobuf:"bytes,8,opt,name=proof_consensus,json=proofConsensus,proto3" json:"proof_consensus,omitempty"` // Deprecated: Do not use.
// Deprecated: this field is unused.
- ConsensusHeight types1.Height `protobuf:"bytes,9,opt,name=consensus_height,json=consensusHeight,proto3" json:"consensus_height"` // Deprecated: Do not use.
- Signer string `protobuf:"bytes,10,opt,name=signer,proto3" json:"signer,omitempty"`
+ ConsensusHeight types.Height `protobuf:"bytes,9,opt,name=consensus_height,json=consensusHeight,proto3" json:"consensus_height"` // Deprecated: Do not use.
+ Signer string `protobuf:"bytes,10,opt,name=signer,proto3" json:"signer,omitempty"`
// Deprecated: this field is unused.
HostConsensusStateProof []byte `protobuf:"bytes,11,opt,name=host_consensus_state_proof,json=hostConsensusStateProof,proto3" json:"host_consensus_state_proof,omitempty"` // Deprecated: Do not use.
}
@@ -306,9 +306,9 @@ var xxx_messageInfo_MsgConnectionOpenAckResponse proto.InternalMessageInfo
type MsgConnectionOpenConfirm struct {
ConnectionId string `protobuf:"bytes,1,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"`
// proof for the change of the connection state on Chain A: `INIT -> OPEN`
- ProofAck []byte `protobuf:"bytes,2,opt,name=proof_ack,json=proofAck,proto3" json:"proof_ack,omitempty"`
- ProofHeight types1.Height `protobuf:"bytes,3,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height"`
- Signer string `protobuf:"bytes,4,opt,name=signer,proto3" json:"signer,omitempty"`
+ ProofAck []byte `protobuf:"bytes,2,opt,name=proof_ack,json=proofAck,proto3" json:"proof_ack,omitempty"`
+ ProofHeight types.Height `protobuf:"bytes,3,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height"`
+ Signer string `protobuf:"bytes,4,opt,name=signer,proto3" json:"signer,omitempty"`
}
func (m *MsgConnectionOpenConfirm) Reset() { *m = MsgConnectionOpenConfirm{} }
@@ -1906,7 +1906,7 @@ func (m *MsgConnectionOpenTry) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientState == nil {
- m.ClientState = &types.Any{}
+ m.ClientState = &any.Any{}
}
if err := m.ClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -2462,7 +2462,7 @@ func (m *MsgConnectionOpenAck) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ClientState == nil {
- m.ClientState = &types.Any{}
+ m.ClientState = &any.Any{}
}
if err := m.ClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/core/04-channel/client/cli/tx.go b/modules/core/04-channel/client/cli/tx.go
index 748f9cf82be..dd858a00f13 100644
--- a/modules/core/04-channel/client/cli/tx.go
+++ b/modules/core/04-channel/client/cli/tx.go
@@ -9,12 +9,13 @@ import (
"github.com/spf13/cobra"
+ govcli "cosmossdk.io/x/gov/client/cli"
+
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/version"
- govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli"
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -23,7 +24,6 @@ import (
const (
flagJSON = "json"
flagPortPattern = "port-pattern"
- flagExpedited = "expedited"
flagChannelIDs = "channel-ids"
)
@@ -144,7 +144,6 @@ func newUpgradeChannelsTxCmd() *cobra.Command {
cmd.Flags().Bool(flagJSON, false, "specify true to output valid proposal.json contents, instead of submitting a governance proposal.")
cmd.Flags().String(flagPortPattern, "transfer", "The pattern to use to match port ids.")
cmd.Flags().String(flagChannelIDs, "", "a comma separated list of channel IDs to upgrade.")
- cmd.Flags().Bool(flagExpedited, false, "set the expedited value for the governance proposal.")
return cmd
}
diff --git a/modules/core/04-channel/keeper/ante_test.go b/modules/core/04-channel/keeper/ante_test.go
index 4332788baaf..4de476a81f5 100644
--- a/modules/core/04-channel/keeper/ante_test.go
+++ b/modules/core/04-channel/keeper/ante_test.go
@@ -53,8 +53,7 @@ func (suite *KeeperTestSuite) TestRecvPacketReCheckTx() {
err = suite.chainB.App.GetIBCKeeper().ChannelKeeper.RecvPacketReCheckTx(suite.chainB.GetContext(), packet)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expError)
diff --git a/modules/core/04-channel/keeper/events.go b/modules/core/04-channel/keeper/events.go
index b83af2a7c16..fa8477ad387 100644
--- a/modules/core/04-channel/keeper/events.go
+++ b/modules/core/04-channel/keeper/events.go
@@ -5,6 +5,8 @@ import (
"encoding/hex"
"fmt"
+ "cosmossdk.io/core/event"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -12,455 +14,447 @@ import (
)
// emitChannelOpenInitEvent emits a channel open init event
-func emitChannelOpenInitEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelOpenInit,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- sdk.NewAttribute(types.AttributeKeyVersion, channel.Version),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelOpenInitEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelOpenInit,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ event.NewAttribute(types.AttributeKeyVersion, channel.Version),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitChannelOpenTryEvent emits a channel open try event
-func emitChannelOpenTryEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelOpenTry,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- sdk.NewAttribute(types.AttributeKeyVersion, channel.Version),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelOpenTryEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelOpenTry,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ event.NewAttribute(types.AttributeKeyVersion, channel.Version),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitChannelOpenAckEvent emits a channel open acknowledge event
-func emitChannelOpenAckEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelOpenAck,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelOpenAckEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelOpenAck,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitChannelOpenConfirmEvent emits a channel open confirm event
-func emitChannelOpenConfirmEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelOpenConfirm,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelOpenConfirmEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelOpenConfirm,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitChannelCloseInitEvent emits a channel close init event
-func emitChannelCloseInitEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelCloseInit,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelCloseInitEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelCloseInit,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitChannelCloseConfirmEvent emits a channel close confirm event
-func emitChannelCloseConfirmEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelCloseConfirm,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelCloseConfirmEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelCloseConfirm,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitSendPacketEvent emits an event with packet data along with other packet information for relayer
// to pick up and relay to other chain
-func emitSendPacketEvent(ctx context.Context, packet types.Packet, channel types.Channel, timeoutHeight exported.Height) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeSendPacket,
- sdk.NewAttribute(types.AttributeKeyDataHex, hex.EncodeToString(packet.GetData())),
- sdk.NewAttribute(types.AttributeKeyTimeoutHeight, timeoutHeight.String()),
- sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
- sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
- sdk.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
- sdk.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
- sdk.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
- sdk.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
- sdk.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
- // we only support 1-hop packets now, and that is the most important hop for a relayer
- // (is it going to a chain I am connected to)
- sdk.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitSendPacketEvent(ctx context.Context, packet types.Packet, channel types.Channel, timeoutHeight exported.Height) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeSendPacket,
+ event.NewAttribute(types.AttributeKeyDataHex, hex.EncodeToString(packet.GetData())),
+ event.NewAttribute(types.AttributeKeyTimeoutHeight, timeoutHeight.String()),
+ event.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
+ event.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
+ event.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
+ event.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
+ event.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
+ event.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
+ event.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
+ // we only support 1-hop packets now, and that is the most important hop for a relayer
+ // (is it going to a chain I am connected to)
+ event.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitRecvPacketEvent emits a receive packet event. It will be emitted both the first time a packet
// is received for a certain sequence and for all duplicate receives.
-func emitRecvPacketEvent(ctx context.Context, packet types.Packet, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeRecvPacket,
- sdk.NewAttribute(types.AttributeKeyDataHex, hex.EncodeToString(packet.GetData())),
- sdk.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
- sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
- sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
- sdk.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
- sdk.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
- sdk.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
- sdk.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
- sdk.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
- // we only support 1-hop packets now, and that is the most important hop for a relayer
- // (is it going to a chain I am connected to)
- sdk.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitRecvPacketEvent(ctx context.Context, packet types.Packet, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeRecvPacket,
+ event.NewAttribute(types.AttributeKeyDataHex, hex.EncodeToString(packet.GetData())),
+ event.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
+ event.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
+ event.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
+ event.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
+ event.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
+ event.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
+ event.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
+ event.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
+ // we only support 1-hop packets now, and that is the most important hop for a relayer
+ // (is it going to a chain I am connected to)
+ event.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitWriteAcknowledgementEvent emits an event that the relayer can query for
-func emitWriteAcknowledgementEvent(ctx context.Context, packet types.Packet, channel types.Channel, acknowledgement []byte) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeWriteAck,
- sdk.NewAttribute(types.AttributeKeyDataHex, hex.EncodeToString(packet.GetData())),
- sdk.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
- sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
- sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
- sdk.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
- sdk.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
- sdk.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
- sdk.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
- sdk.NewAttribute(types.AttributeKeyAckHex, hex.EncodeToString(acknowledgement)),
- sdk.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
- // we only support 1-hop packets now, and that is the most important hop for a relayer
- // (is it going to a chain I am connected to)
- sdk.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitWriteAcknowledgementEvent(ctx context.Context, packet types.Packet, channel types.Channel, acknowledgement []byte) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeWriteAck,
+ event.NewAttribute(types.AttributeKeyDataHex, hex.EncodeToString(packet.GetData())),
+ event.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
+ event.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
+ event.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
+ event.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
+ event.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
+ event.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
+ event.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
+ event.NewAttribute(types.AttributeKeyAckHex, hex.EncodeToString(acknowledgement)),
+ event.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
+ // we only support 1-hop packets now, and that is the most important hop for a relayer
+ // (is it going to a chain I am connected to)
+ event.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitAcknowledgePacketEvent emits an acknowledge packet event. It will be emitted both the first time
// a packet is acknowledged for a certain sequence and for all duplicate acknowledgements.
-func emitAcknowledgePacketEvent(ctx context.Context, packet types.Packet, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeAcknowledgePacket,
- sdk.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
- sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
- sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
- sdk.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
- sdk.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
- sdk.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
- sdk.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
- sdk.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
- // we only support 1-hop packets now, and that is the most important hop for a relayer
- // (is it going to a chain I am connected to)
- sdk.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitAcknowledgePacketEvent(ctx context.Context, packet types.Packet, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeAcknowledgePacket,
+ event.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
+ event.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
+ event.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
+ event.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
+ event.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
+ event.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
+ event.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
+ event.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
+ // we only support 1-hop packets now, and that is the most important hop for a relayer
+ // (is it going to a chain I am connected to)
+ event.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitTimeoutPacketEvent emits a timeout packet event. It will be emitted both the first time a packet
// is timed out for a certain sequence and for all duplicate timeouts.
-func emitTimeoutPacketEvent(ctx context.Context, packet types.Packet, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
-
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeTimeoutPacket,
- sdk.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
- sdk.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
- sdk.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
- sdk.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
- sdk.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
- sdk.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
- sdk.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
- sdk.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
- // we only support 1-hop packets now, and that is the most important hop for a relayer
- // (is it going to a chain I am connected to)
- sdk.NewAttribute(types.AttributeKeyConnection, channel.ConnectionHops[0]), // DEPRECATED
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitTimeoutPacketEvent(ctx context.Context, packet types.Packet, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeTimeoutPacket,
+ event.NewAttribute(types.AttributeKeyTimeoutHeight, packet.GetTimeoutHeight().String()),
+ event.NewAttribute(types.AttributeKeyTimeoutTimestamp, fmt.Sprintf("%d", packet.GetTimeoutTimestamp())),
+ event.NewAttribute(types.AttributeKeySequence, fmt.Sprintf("%d", packet.GetSequence())),
+ event.NewAttribute(types.AttributeKeySrcPort, packet.GetSourcePort()),
+ event.NewAttribute(types.AttributeKeySrcChannel, packet.GetSourceChannel()),
+ event.NewAttribute(types.AttributeKeyDstPort, packet.GetDestPort()),
+ event.NewAttribute(types.AttributeKeyDstChannel, packet.GetDestChannel()),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ event.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitChannelClosedEvent emits a channel closed event.
-func emitChannelClosedEvent(ctx context.Context, packet types.Packet, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelClosed,
- sdk.NewAttribute(types.AttributeKeyPortID, packet.GetSourcePort()),
- sdk.NewAttribute(types.AttributeKeyChannelID, packet.GetSourceChannel()),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
- sdk.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelClosedEvent(ctx context.Context, packet types.Packet, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelClosed,
+ event.NewAttribute(types.AttributeKeyPortID, packet.GetSourcePort()),
+ event.NewAttribute(types.AttributeKeyChannelID, packet.GetSourceChannel()),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyConnectionID, channel.ConnectionHops[0]),
+ event.NewAttribute(types.AttributeKeyChannelOrdering, channel.Ordering.String()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitChannelUpgradeInitEvent emits a channel upgrade init event
-func EmitChannelUpgradeInitEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeInit,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitChannelUpgradeInitEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeInit,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitChannelUpgradeTryEvent emits a channel upgrade try event
-func EmitChannelUpgradeTryEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeTry,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitChannelUpgradeTryEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeTry,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitChannelUpgradeAckEvent emits a channel upgrade ack event
-func EmitChannelUpgradeAckEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeAck,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitChannelUpgradeAckEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeAck,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitChannelUpgradeConfirmEvent emits a channel upgrade confirm event
-func EmitChannelUpgradeConfirmEvent(ctx context.Context, portID, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeConfirm,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeKeyChannelState, channel.State.String()),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitChannelUpgradeConfirmEvent(ctx context.Context, portID, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeConfirm,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeKeyChannelState, channel.State.String()),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitChannelUpgradeOpenEvent emits a channel upgrade open event
-func EmitChannelUpgradeOpenEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeOpen,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeKeyChannelState, channel.State.String()),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitChannelUpgradeOpenEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeOpen,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeKeyChannelState, channel.State.String()),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitChannelUpgradeTimeoutEvent emits an upgrade timeout event.
-func EmitChannelUpgradeTimeoutEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeTimeout,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeTimeoutHeight, upgrade.Timeout.Height.String()),
- sdk.NewAttribute(types.AttributeKeyUpgradeTimeoutTimestamp, fmt.Sprintf("%d", upgrade.Timeout.Timestamp)),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitChannelUpgradeTimeoutEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeTimeout,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeTimeoutHeight, upgrade.Timeout.Height.String()),
+ event.NewAttribute(types.AttributeKeyUpgradeTimeoutTimestamp, fmt.Sprintf("%d", upgrade.Timeout.Timestamp)),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitErrorReceiptEvent emits an error receipt event
-func EmitErrorReceiptEvent(ctx context.Context, portID string, channelID string, channel types.Channel, err error) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeError,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- sdk.NewAttribute(types.AttributeKeyErrorReceipt, err.Error()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitErrorReceiptEvent(ctx context.Context, portID string, channelID string, channel types.Channel, err error) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeError,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ event.NewAttribute(types.AttributeKeyErrorReceipt, err.Error()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// EmitChannelUpgradeCancelEvent emits an upgraded cancelled event.
-func EmitChannelUpgradeCancelEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelUpgradeCancel,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) EmitChannelUpgradeCancelEvent(ctx context.Context, portID string, channelID string, channel types.Channel, upgrade types.Upgrade) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelUpgradeCancel,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyUpgradeSequence, fmt.Sprintf("%d", channel.UpgradeSequence)),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
// emitChannelFlushCompleteEvent emits an flushing event.
-func emitChannelFlushCompleteEvent(ctx context.Context, portID string, channelID string, channel types.Channel) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- sdkCtx.EventManager().EmitEvents(sdk.Events{
- sdk.NewEvent(
- types.EventTypeChannelFlushComplete,
- sdk.NewAttribute(types.AttributeKeyPortID, portID),
- sdk.NewAttribute(types.AttributeKeyChannelID, channelID),
- sdk.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
- sdk.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
- sdk.NewAttribute(types.AttributeKeyChannelState, channel.State.String()),
- ),
- sdk.NewEvent(
- sdk.EventTypeMessage,
- sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
- ),
- })
+func (k *Keeper) emitChannelFlushCompleteEvent(ctx context.Context, portID string, channelID string, channel types.Channel) error {
+ if err := k.EventService.EventManager(ctx).EmitKV(
+ types.EventTypeChannelFlushComplete,
+ event.NewAttribute(types.AttributeKeyPortID, portID),
+ event.NewAttribute(types.AttributeKeyChannelID, channelID),
+ event.NewAttribute(types.AttributeCounterpartyPortID, channel.Counterparty.PortId),
+ event.NewAttribute(types.AttributeCounterpartyChannelID, channel.Counterparty.ChannelId),
+ event.NewAttribute(types.AttributeKeyChannelState, channel.State.String()),
+ ); err != nil {
+ return err
+ }
+
+ return k.EventService.EventManager(ctx).EmitKV(
+ sdk.EventTypeMessage,
+ event.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
+ )
}
diff --git a/modules/core/04-channel/keeper/grpc_query.go b/modules/core/04-channel/keeper/grpc_query.go
index 648a8028534..d2ef8fed802 100644
--- a/modules/core/04-channel/keeper/grpc_query.go
+++ b/modules/core/04-channel/keeper/grpc_query.go
@@ -65,7 +65,7 @@ func (q *queryServer) Channels(ctx context.Context, req *types.QueryChannelsRequ
}
var channels []*types.IdentifiedChannel
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), []byte(host.KeyChannelEndPrefix))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), []byte(host.KeyChannelEndPrefix))
pageRes, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
var result types.Channel
@@ -106,7 +106,7 @@ func (q *queryServer) ConnectionChannels(ctx context.Context, req *types.QueryCo
var channels []*types.IdentifiedChannel
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), []byte(host.KeyChannelEndPrefix))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), []byte(host.KeyChannelEndPrefix))
pageRes, err := query.FilteredPaginate(store, req.Pagination, func(key, value []byte, accumulate bool) (bool, error) {
// filter any metadata stored under channel key
@@ -254,7 +254,7 @@ func (q *queryServer) PacketCommitments(ctx context.Context, req *types.QueryPac
)
}
var commitments []*types.PacketState
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), host.PacketCommitmentPrefixKey(req.PortId, req.ChannelId))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), host.PacketCommitmentPrefixKey(req.PortId, req.ChannelId))
pageRes, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
keySplit := strings.Split(string(key), "/")
@@ -352,7 +352,7 @@ func (q *queryServer) PacketAcknowledgements(ctx context.Context, req *types.Que
)
}
var acks []*types.PacketState
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), host.PacketAcknowledgementPrefixKey(req.PortId, req.ChannelId))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), host.PacketAcknowledgementPrefixKey(req.PortId, req.ChannelId))
// if a list of packet sequences is provided then query for each specific ack and return a list <= len(req.PacketCommitmentSequences)
// otherwise, maintain previous behaviour and perform paginated query
diff --git a/modules/core/04-channel/keeper/handshake.go b/modules/core/04-channel/keeper/handshake.go
index 635b178e067..a3c49629574 100644
--- a/modules/core/04-channel/keeper/handshake.go
+++ b/modules/core/04-channel/keeper/handshake.go
@@ -76,11 +76,13 @@ func (k *Keeper) WriteOpenInitChannel(
k.SetNextSequenceRecv(ctx, portID, channelID, 1)
k.SetNextSequenceAck(ctx, portID, channelID, 1)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.UNINITIALIZED, "new-state", types.INIT)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.UNINITIALIZED, "new-state", types.INIT)
defer telemetry.IncrCounter(1, "ibc", "channel", "open-init")
- emitChannelOpenInitEvent(ctx, portID, channelID, channel)
+ if err := k.emitChannelOpenInitEvent(ctx, portID, channelID, channel); err != nil {
+ panic(err)
+ }
}
// ChanOpenTry is called by a module to accept the first step of a channel opening
@@ -169,11 +171,13 @@ func (k *Keeper) WriteOpenTryChannel(
k.SetChannel(ctx, portID, channelID, channel)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.UNINITIALIZED, "new-state", types.TRYOPEN)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.UNINITIALIZED, "new-state", types.TRYOPEN)
defer telemetry.IncrCounter(1, "ibc", "channel", "open-try")
- emitChannelOpenTryEvent(ctx, portID, channelID, channel)
+ if err := k.emitChannelOpenTryEvent(ctx, portID, channelID, channel); err != nil {
+ panic(err)
+ }
}
// ChanOpenAck is called by the handshake-originating module to acknowledge the
@@ -239,11 +243,13 @@ func (k *Keeper) WriteOpenAckChannel(
channel.Counterparty.ChannelId = counterpartyChannelID
k.SetChannel(ctx, portID, channelID, channel)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.INIT, "new-state", types.OPEN)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.INIT, "new-state", types.OPEN)
defer telemetry.IncrCounter(1, "ibc", "channel", "open-ack")
- emitChannelOpenAckEvent(ctx, portID, channelID, channel)
+ if err := k.emitChannelOpenAckEvent(ctx, portID, channelID, channel); err != nil {
+ panic(err)
+ }
}
// ChanOpenConfirm is called by the handshake-accepting module to confirm the acknowledgement
@@ -306,11 +312,13 @@ func (k *Keeper) WriteOpenConfirmChannel(
channel.State = types.OPEN
k.SetChannel(ctx, portID, channelID, channel)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.TRYOPEN, "new-state", types.OPEN)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.TRYOPEN, "new-state", types.OPEN)
defer telemetry.IncrCounter(1, "ibc", "channel", "open-confirm")
- emitChannelOpenConfirmEvent(ctx, portID, channelID, channel)
+ if err := k.emitChannelOpenConfirmEvent(ctx, portID, channelID, channel); err != nil {
+ panic(err)
+ }
}
// Closing Handshake
@@ -347,16 +355,14 @@ func (k *Keeper) ChanCloseInit(
return errorsmod.Wrapf(connectiontypes.ErrInvalidConnectionState, "connection state is not OPEN (got %s)", connectionEnd.State)
}
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", channel.State, "new-state", types.CLOSED)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", channel.State, "new-state", types.CLOSED)
defer telemetry.IncrCounter(1, "ibc", "channel", "close-init")
channel.State = types.CLOSED
k.SetChannel(ctx, portID, channelID, channel)
- emitChannelCloseInitEvent(ctx, portID, channelID, channel)
-
- return nil
+ return k.emitChannelCloseInitEvent(ctx, portID, channelID, channel)
}
// ChanCloseConfirm is called by the counterparty module to close their end of the
@@ -410,7 +416,7 @@ func (k *Keeper) ChanCloseConfirm(
// If the channel is closing during an upgrade, then we can delete all upgrade information.
if k.hasUpgrade(ctx, portID, channelID) {
k.deleteUpgradeInfo(ctx, portID, channelID)
- k.Logger(ctx).Info(
+ k.Logger.Info(
"upgrade info deleted",
"port_id", portID,
"channel_id", channelID,
@@ -418,14 +424,12 @@ func (k *Keeper) ChanCloseConfirm(
)
}
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", channel.State, "new-state", types.CLOSED)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", channel.State, "new-state", types.CLOSED)
defer telemetry.IncrCounter(1, "ibc", "channel", "close-confirm")
channel.State = types.CLOSED
k.SetChannel(ctx, portID, channelID, channel)
- emitChannelCloseConfirmEvent(ctx, portID, channelID, channel)
-
- return nil
+ return k.emitChannelCloseConfirmEvent(ctx, portID, channelID, channel)
}
diff --git a/modules/core/04-channel/keeper/keeper.go b/modules/core/04-channel/keeper/keeper.go
index db81e134084..527cd10007d 100644
--- a/modules/core/04-channel/keeper/keeper.go
+++ b/modules/core/04-channel/keeper/keeper.go
@@ -8,9 +8,8 @@ import (
db "github.com/cosmos/cosmos-db"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
errorsmod "cosmossdk.io/errors"
- "cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec"
@@ -23,16 +22,15 @@ import (
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
+ coretypes "github.com/cosmos/ibc-go/v9/modules/core/types"
)
var _ porttypes.ICS4Wrapper = (*Keeper)(nil)
// Keeper defines the IBC channel keeper
type Keeper struct {
- // implements gRPC QueryServer interface
- types.QueryServer
+ appmodule.Environment
- storeService corestore.KVStoreService
cdc codec.BinaryCodec
clientKeeper types.ClientKeeper
connectionKeeper types.ConnectionKeeper
@@ -41,24 +39,18 @@ type Keeper struct {
// NewKeeper creates a new IBC channel Keeper instance
func NewKeeper(
cdc codec.BinaryCodec,
- storeService corestore.KVStoreService,
+ env appmodule.Environment,
clientKeeper types.ClientKeeper,
connectionKeeper types.ConnectionKeeper,
) *Keeper {
return &Keeper{
- storeService: storeService,
+ Environment: env,
cdc: cdc,
clientKeeper: clientKeeper,
connectionKeeper: connectionKeeper,
}
}
-// Logger returns a module-specific logger.
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return sdkCtx.Logger().With("module", "x/"+exported.ModuleName+"/"+types.SubModuleName)
-}
-
// GenerateChannelIdentifier returns the next channel identifier.
func (k *Keeper) GenerateChannelIdentifier(ctx context.Context) string {
nextChannelSeq := k.GetNextChannelSequence(ctx)
@@ -71,7 +63,7 @@ func (k *Keeper) GenerateChannelIdentifier(ctx context.Context) string {
// HasChannel true if the channel with the given identifiers exists in state.
func (k *Keeper) HasChannel(ctx context.Context, portID, channelID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(host.ChannelKey(portID, channelID))
if err != nil {
panic(err)
@@ -81,7 +73,7 @@ func (k *Keeper) HasChannel(ctx context.Context, portID, channelID string) bool
// GetChannel returns a channel with a particular identifier binded to a specific port
func (k *Keeper) GetChannel(ctx context.Context, portID, channelID string) (types.Channel, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.ChannelKey(portID, channelID))
if err != nil {
panic(err)
@@ -97,7 +89,7 @@ func (k *Keeper) GetChannel(ctx context.Context, portID, channelID string) (type
// SetChannel sets a channel to the store
func (k *Keeper) SetChannel(ctx context.Context, portID, channelID string, channel types.Channel) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(&channel)
if err := store.Set(host.ChannelKey(portID, channelID), bz); err != nil {
panic(err)
@@ -116,7 +108,7 @@ func (k *Keeper) GetAppVersion(ctx context.Context, portID, channelID string) (s
// GetNextChannelSequence gets the next channel sequence from the store.
func (k *Keeper) GetNextChannelSequence(ctx context.Context) uint64 {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.KeyNextChannelSequence))
if err != nil {
panic(err)
@@ -130,7 +122,7 @@ func (k *Keeper) GetNextChannelSequence(ctx context.Context) uint64 {
// SetNextChannelSequence sets the next channel sequence to the store.
func (k *Keeper) SetNextChannelSequence(ctx context.Context, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set([]byte(types.KeyNextChannelSequence), bz); err != nil {
panic(err)
@@ -139,7 +131,7 @@ func (k *Keeper) SetNextChannelSequence(ctx context.Context, sequence uint64) {
// GetNextSequenceSend gets a channel's next send sequence from the store
func (k *Keeper) GetNextSequenceSend(ctx context.Context, portID, channelID string) (uint64, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.NextSequenceSendKey(portID, channelID))
if err != nil {
panic(err)
@@ -153,7 +145,7 @@ func (k *Keeper) GetNextSequenceSend(ctx context.Context, portID, channelID stri
// SetNextSequenceSend sets a channel's next send sequence to the store
func (k *Keeper) SetNextSequenceSend(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set(host.NextSequenceSendKey(portID, channelID), bz); err != nil {
panic(err)
@@ -162,7 +154,7 @@ func (k *Keeper) SetNextSequenceSend(ctx context.Context, portID, channelID stri
// GetNextSequenceRecv gets a channel's next receive sequence from the store
func (k *Keeper) GetNextSequenceRecv(ctx context.Context, portID, channelID string) (uint64, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.NextSequenceRecvKey(portID, channelID))
if err != nil {
panic(err)
@@ -176,7 +168,7 @@ func (k *Keeper) GetNextSequenceRecv(ctx context.Context, portID, channelID stri
// SetNextSequenceRecv sets a channel's next receive sequence to the store
func (k *Keeper) SetNextSequenceRecv(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set(host.NextSequenceRecvKey(portID, channelID), bz); err != nil {
panic(err)
@@ -185,7 +177,7 @@ func (k *Keeper) SetNextSequenceRecv(ctx context.Context, portID, channelID stri
// GetNextSequenceAck gets a channel's next ack sequence from the store
func (k *Keeper) GetNextSequenceAck(ctx context.Context, portID, channelID string) (uint64, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.NextSequenceAckKey(portID, channelID))
if err != nil {
panic(err)
@@ -200,7 +192,7 @@ func (k *Keeper) GetNextSequenceAck(ctx context.Context, portID, channelID strin
// SetNextSequenceAck sets a channel's next ack sequence to the store
func (k *Keeper) SetNextSequenceAck(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set(host.NextSequenceAckKey(portID, channelID), bz); err != nil {
panic(err)
@@ -209,7 +201,7 @@ func (k *Keeper) SetNextSequenceAck(ctx context.Context, portID, channelID strin
// GetPacketReceipt gets a packet receipt from the store
func (k *Keeper) GetPacketReceipt(ctx context.Context, portID, channelID string, sequence uint64) (string, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.PacketReceiptKey(portID, channelID, sequence))
if err != nil {
panic(err)
@@ -224,7 +216,7 @@ func (k *Keeper) GetPacketReceipt(ctx context.Context, portID, channelID string,
// SetPacketReceipt sets an empty packet receipt to the store
func (k *Keeper) SetPacketReceipt(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(host.PacketReceiptKey(portID, channelID, sequence), []byte{byte(1)}); err != nil {
panic(err)
}
@@ -232,7 +224,7 @@ func (k *Keeper) SetPacketReceipt(ctx context.Context, portID, channelID string,
// deletePacketReceipt deletes a packet receipt from the store
func (k *Keeper) deletePacketReceipt(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(host.PacketReceiptKey(portID, channelID, sequence)); err != nil {
panic(err)
}
@@ -240,7 +232,7 @@ func (k *Keeper) deletePacketReceipt(ctx context.Context, portID, channelID stri
// GetPacketCommitment gets the packet commitment hash from the store
func (k *Keeper) GetPacketCommitment(ctx context.Context, portID, channelID string, sequence uint64) []byte {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.PacketCommitmentKey(portID, channelID, sequence))
if err != nil {
panic(err)
@@ -251,7 +243,7 @@ func (k *Keeper) GetPacketCommitment(ctx context.Context, portID, channelID stri
// HasPacketCommitment returns true if the packet commitment exists
func (k *Keeper) HasPacketCommitment(ctx context.Context, portID, channelID string, sequence uint64) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(host.PacketCommitmentKey(portID, channelID, sequence))
if err != nil {
panic(err)
@@ -261,14 +253,14 @@ func (k *Keeper) HasPacketCommitment(ctx context.Context, portID, channelID stri
// SetPacketCommitment sets the packet commitment hash to the store
func (k *Keeper) SetPacketCommitment(ctx context.Context, portID, channelID string, sequence uint64, commitmentHash []byte) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(host.PacketCommitmentKey(portID, channelID, sequence), commitmentHash); err != nil {
panic(err)
}
}
func (k *Keeper) deletePacketCommitment(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(host.PacketCommitmentKey(portID, channelID, sequence)); err != nil {
panic(err)
}
@@ -276,7 +268,7 @@ func (k *Keeper) deletePacketCommitment(ctx context.Context, portID, channelID s
// SetPacketAcknowledgement sets the packet ack hash to the store
func (k *Keeper) SetPacketAcknowledgement(ctx context.Context, portID, channelID string, sequence uint64, ackHash []byte) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(host.PacketAcknowledgementKey(portID, channelID, sequence), ackHash); err != nil {
panic(err)
}
@@ -284,7 +276,7 @@ func (k *Keeper) SetPacketAcknowledgement(ctx context.Context, portID, channelID
// GetPacketAcknowledgement gets the packet ack hash from the store
func (k *Keeper) GetPacketAcknowledgement(ctx context.Context, portID, channelID string, sequence uint64) ([]byte, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.PacketAcknowledgementKey(portID, channelID, sequence))
if err != nil {
panic(err)
@@ -299,7 +291,7 @@ func (k *Keeper) GetPacketAcknowledgement(ctx context.Context, portID, channelID
// HasPacketAcknowledgement check if the packet ack hash is already on the store
func (k *Keeper) HasPacketAcknowledgement(ctx context.Context, portID, channelID string, sequence uint64) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(host.PacketAcknowledgementKey(portID, channelID, sequence))
if err != nil {
panic(err)
@@ -309,7 +301,7 @@ func (k *Keeper) HasPacketAcknowledgement(ctx context.Context, portID, channelID
// deletePacketAcknowledgement deletes the packet ack hash from the store
func (k *Keeper) deletePacketAcknowledgement(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(host.PacketAcknowledgementKey(portID, channelID, sequence)); err != nil {
panic(err)
}
@@ -319,7 +311,7 @@ func (k *Keeper) deletePacketAcknowledgement(ctx context.Context, portID, channe
// For each sequence, cb will be called. If the cb returns true, the iterator
// will close and stop.
func (k *Keeper) IteratePacketSequence(ctx context.Context, iterator db.Iterator, cb func(portID, channelID string, sequence uint64) bool) {
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
portID, channelID, err := host.ParseChannelPath(string(iterator.Key()))
if err != nil {
@@ -337,7 +329,7 @@ func (k *Keeper) IteratePacketSequence(ctx context.Context, iterator db.Iterator
// GetAllPacketSendSeqs returns all stored next send sequences.
func (k *Keeper) GetAllPacketSendSeqs(ctx context.Context) (seqs []types.PacketSequence) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyNextSeqSendPrefix))
k.IteratePacketSequence(ctx, iterator, func(portID, channelID string, nextSendSeq uint64) bool {
ps := types.NewPacketSequence(portID, channelID, nextSendSeq)
@@ -349,7 +341,7 @@ func (k *Keeper) GetAllPacketSendSeqs(ctx context.Context) (seqs []types.PacketS
// GetAllPacketRecvSeqs returns all stored next recv sequences.
func (k *Keeper) GetAllPacketRecvSeqs(ctx context.Context) (seqs []types.PacketSequence) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyNextSeqRecvPrefix))
k.IteratePacketSequence(ctx, iterator, func(portID, channelID string, nextRecvSeq uint64) bool {
ps := types.NewPacketSequence(portID, channelID, nextRecvSeq)
@@ -361,7 +353,7 @@ func (k *Keeper) GetAllPacketRecvSeqs(ctx context.Context) (seqs []types.PacketS
// GetAllPacketAckSeqs returns all stored next acknowledgements sequences.
func (k *Keeper) GetAllPacketAckSeqs(ctx context.Context) (seqs []types.PacketSequence) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyNextSeqAckPrefix))
k.IteratePacketSequence(ctx, iterator, func(portID, channelID string, nextAckSeq uint64) bool {
ps := types.NewPacketSequence(portID, channelID, nextAckSeq)
@@ -375,9 +367,9 @@ func (k *Keeper) GetAllPacketAckSeqs(ctx context.Context) (seqs []types.PacketSe
// packet commitment, cb will be called. If the cb returns true, the iterator will close
// and stop.
func (k *Keeper) IteratePacketCommitment(ctx context.Context, cb func(portID, channelID string, sequence uint64, hash []byte) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyPacketCommitmentPrefix))
- k.iterateHashes(ctx, iterator, cb)
+ k.iterateHashes(iterator, cb)
}
// GetAllPacketCommitments returns all stored PacketCommitments objects.
@@ -390,13 +382,13 @@ func (k *Keeper) GetAllPacketCommitments(ctx context.Context) (commitments []typ
return commitments
}
-// IteratePacketCommitmentAtChannel provides an iterator over all PacketCommmitment objects
+// IteratePacketCommitmentAtChannel provides an iterator over all PacketCommitment objects
// at a specified channel. For each packet commitment, cb will be called. If the cb returns
// true, the iterator will close and stop.
func (k *Keeper) IteratePacketCommitmentAtChannel(ctx context.Context, portID, channelID string, cb func(_, _ string, sequence uint64, hash []byte) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, host.PacketCommitmentPrefixKey(portID, channelID))
- k.iterateHashes(ctx, iterator, cb)
+ k.iterateHashes(iterator, cb)
}
// GetAllPacketCommitmentsAtChannel returns all stored PacketCommitments objects for a specified
@@ -414,9 +406,9 @@ func (k *Keeper) GetAllPacketCommitmentsAtChannel(ctx context.Context, portID, c
// receipt, cb will be called. If the cb returns true, the iterator will close
// and stop.
func (k *Keeper) IteratePacketReceipt(ctx context.Context, cb func(portID, channelID string, sequence uint64, receipt []byte) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyPacketReceiptPrefix))
- k.iterateHashes(ctx, iterator, cb)
+ k.iterateHashes(iterator, cb)
}
// GetAllPacketReceipts returns all stored PacketReceipt objects.
@@ -433,9 +425,9 @@ func (k *Keeper) GetAllPacketReceipts(ctx context.Context) (receipts []types.Pac
// acknowledgement, cb will be called. If the cb returns true, the iterator will close
// and stop.
func (k *Keeper) IteratePacketAcknowledgement(ctx context.Context, cb func(portID, channelID string, sequence uint64, hash []byte) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyPacketAckPrefix))
- k.iterateHashes(ctx, iterator, cb)
+ k.iterateHashes(iterator, cb)
}
// GetAllPacketAcks returns all stored PacketAcknowledgements objects.
@@ -452,10 +444,10 @@ func (k *Keeper) GetAllPacketAcks(ctx context.Context) (acks []types.PacketState
// Channel, cb will be called. If the cb returns true, the iterator will close
// and stop.
func (k *Keeper) IterateChannels(ctx context.Context, cb func(types.IdentifiedChannel) bool) {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, []byte(host.KeyChannelEndPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
var channel types.Channel
k.cdc.MustUnmarshal(iterator.Value(), &channel)
@@ -474,9 +466,9 @@ func (k *Keeper) GetAllChannelsWithPortPrefix(ctx context.Context, portPrefix st
if strings.TrimSpace(portPrefix) == "" {
return k.GetAllChannels(ctx)
}
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, types.FilteredPortPrefix(portPrefix))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
var filteredChannels []types.IdentifiedChannel
for ; iterator.Valid(); iterator.Next() {
@@ -548,7 +540,7 @@ func (k *Keeper) GetChannelConnection(ctx context.Context, portID, channelID str
// GetUpgradeErrorReceipt returns the upgrade error receipt for the provided port and channel identifiers.
func (k *Keeper) GetUpgradeErrorReceipt(ctx context.Context, portID, channelID string) (types.ErrorReceipt, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.ChannelUpgradeErrorKey(portID, channelID))
if err != nil {
panic(err)
@@ -566,7 +558,7 @@ func (k *Keeper) GetUpgradeErrorReceipt(ctx context.Context, portID, channelID s
// setUpgradeErrorReceipt sets the provided error receipt in store using the port and channel identifiers.
func (k *Keeper) setUpgradeErrorReceipt(ctx context.Context, portID, channelID string, errorReceipt types.ErrorReceipt) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(&errorReceipt)
if err := store.Set(host.ChannelUpgradeErrorKey(portID, channelID), bz); err != nil {
panic(err)
@@ -575,7 +567,7 @@ func (k *Keeper) setUpgradeErrorReceipt(ctx context.Context, portID, channelID s
// hasUpgrade returns true if a proposed upgrade exists in store
func (k *Keeper) hasUpgrade(ctx context.Context, portID, channelID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(host.ChannelUpgradeKey(portID, channelID))
if err != nil {
panic(err)
@@ -585,7 +577,7 @@ func (k *Keeper) hasUpgrade(ctx context.Context, portID, channelID string) bool
// GetUpgrade returns the proposed upgrade for the provided port and channel identifiers.
func (k *Keeper) GetUpgrade(ctx context.Context, portID, channelID string) (types.Upgrade, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.ChannelUpgradeKey(portID, channelID))
if err != nil {
panic(err)
@@ -603,7 +595,7 @@ func (k *Keeper) GetUpgrade(ctx context.Context, portID, channelID string) (type
// SetUpgrade sets the proposed upgrade using the provided port and channel identifiers.
func (k *Keeper) SetUpgrade(ctx context.Context, portID, channelID string, upgrade types.Upgrade) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(&upgrade)
if err := store.Set(host.ChannelUpgradeKey(portID, channelID), bz); err != nil {
panic(err)
@@ -612,7 +604,7 @@ func (k *Keeper) SetUpgrade(ctx context.Context, portID, channelID string, upgra
// deleteUpgrade deletes the upgrade for the provided port and channel identifiers.
func (k *Keeper) deleteUpgrade(ctx context.Context, portID, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(host.ChannelUpgradeKey(portID, channelID)); err != nil {
panic(err)
}
@@ -620,7 +612,7 @@ func (k *Keeper) deleteUpgrade(ctx context.Context, portID, channelID string) {
// hasCounterpartyUpgrade returns true if a counterparty upgrade exists in store
func (k *Keeper) hasCounterpartyUpgrade(ctx context.Context, portID, channelID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(host.ChannelCounterpartyUpgradeKey(portID, channelID))
if err != nil {
panic(err)
@@ -630,7 +622,7 @@ func (k *Keeper) hasCounterpartyUpgrade(ctx context.Context, portID, channelID s
// GetCounterpartyUpgrade gets the counterparty upgrade from the store.
func (k *Keeper) GetCounterpartyUpgrade(ctx context.Context, portID, channelID string) (types.Upgrade, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.ChannelCounterpartyUpgradeKey(portID, channelID))
if err != nil {
panic(err)
@@ -648,7 +640,7 @@ func (k *Keeper) GetCounterpartyUpgrade(ctx context.Context, portID, channelID s
// SetCounterpartyUpgrade sets the counterparty upgrade in the store.
func (k *Keeper) SetCounterpartyUpgrade(ctx context.Context, portID, channelID string, upgrade types.Upgrade) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(&upgrade)
if err := store.Set(host.ChannelCounterpartyUpgradeKey(portID, channelID), bz); err != nil {
panic(err)
@@ -657,7 +649,7 @@ func (k *Keeper) SetCounterpartyUpgrade(ctx context.Context, portID, channelID s
// deleteCounterpartyUpgrade deletes the counterparty upgrade in the store.
func (k *Keeper) deleteCounterpartyUpgrade(ctx context.Context, portID, channelID string) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(host.ChannelCounterpartyUpgradeKey(portID, channelID)); err != nil {
panic(err)
}
@@ -671,7 +663,7 @@ func (k *Keeper) deleteUpgradeInfo(ctx context.Context, portID, channelID string
// SetParams sets the channel parameters.
func (k *Keeper) SetParams(ctx context.Context, params types.Params) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := k.cdc.MustMarshal(¶ms)
if err := store.Set([]byte(types.ParamsKey), bz); err != nil {
panic(err)
@@ -680,7 +672,7 @@ func (k *Keeper) SetParams(ctx context.Context, params types.Params) {
// GetParams returns the total set of the channel parameters.
func (k *Keeper) GetParams(ctx context.Context) types.Params {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get([]byte(types.ParamsKey))
if err != nil {
panic(err)
@@ -696,8 +688,8 @@ func (k *Keeper) GetParams(ctx context.Context) types.Params {
}
// common functionality for IteratePacketCommitment and IteratePacketAcknowledgement
-func (k *Keeper) iterateHashes(ctx context.Context, iterator db.Iterator, cb func(portID, channelID string, sequence uint64, hash []byte) bool) {
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+func (k *Keeper) iterateHashes(iterator db.Iterator, cb func(portID, channelID string, sequence uint64, hash []byte) bool) {
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
for ; iterator.Valid(); iterator.Next() {
keySplit := strings.Split(string(iterator.Key()), "/")
@@ -718,16 +710,16 @@ func (k *Keeper) iterateHashes(ctx context.Context, iterator db.Iterator, cb fun
// HasInflightPackets returns true if there are packet commitments stored at the specified
// port and channel, and false otherwise.
func (k *Keeper) HasInflightPackets(ctx context.Context, portID, channelID string) bool {
- store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
+ store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx))
iterator := storetypes.KVStorePrefixIterator(store, host.PacketCommitmentPrefixKey(portID, channelID))
- defer sdk.LogDeferred(k.Logger(ctx), func() error { return iterator.Close() })
+ defer coretypes.LogDeferred(k.Logger, func() error { return iterator.Close() })
return iterator.Valid()
}
// setRecvStartSequence sets the channel's recv start sequence to the store.
func (k *Keeper) setRecvStartSequence(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set(host.RecvStartSequenceKey(portID, channelID), bz); err != nil {
panic(err)
@@ -739,7 +731,7 @@ func (k *Keeper) setRecvStartSequence(ctx context.Context, portID, channelID str
// upon a successful channel upgrade. It will be used for replay protection of
// historical packets and as the upper bound for pruning stale packet receives.
func (k *Keeper) GetRecvStartSequence(ctx context.Context, portID, channelID string) (uint64, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.RecvStartSequenceKey(portID, channelID))
if err != nil {
panic(err)
@@ -754,7 +746,7 @@ func (k *Keeper) GetRecvStartSequence(ctx context.Context, portID, channelID str
// SetPruningSequenceStart sets a channel's pruning sequence start to the store.
func (k *Keeper) SetPruningSequenceStart(ctx context.Context, portID, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set(host.PruningSequenceStartKey(portID, channelID), bz); err != nil {
panic(err)
@@ -763,7 +755,7 @@ func (k *Keeper) SetPruningSequenceStart(ctx context.Context, portID, channelID
// GetPruningSequenceStart gets a channel's pruning sequence start from the store.
func (k *Keeper) GetPruningSequenceStart(ctx context.Context, portID, channelID string) (uint64, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(host.PruningSequenceStartKey(portID, channelID))
if err != nil {
panic(err)
@@ -778,7 +770,7 @@ func (k *Keeper) GetPruningSequenceStart(ctx context.Context, portID, channelID
// HasPruningSequenceStart returns true if the pruning sequence start is set for the specified channel.
func (k *Keeper) HasPruningSequenceStart(ctx context.Context, portID, channelID string) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(host.PruningSequenceStartKey(portID, channelID))
if err != nil {
panic(err)
diff --git a/modules/core/04-channel/keeper/migrations.go b/modules/core/04-channel/keeper/migrations.go
index 9a382d26265..c83cf865022 100644
--- a/modules/core/04-channel/keeper/migrations.go
+++ b/modules/core/04-channel/keeper/migrations.go
@@ -20,6 +20,6 @@ func NewMigrator(keeper *Keeper) Migrator {
func (m Migrator) MigrateParams(ctx sdk.Context) error {
params := channeltypes.DefaultParams()
m.keeper.SetParams(ctx, params)
- m.keeper.Logger(ctx).Info("successfully migrated ibc channel params")
+ m.keeper.Logger.Info("successfully migrated ibc channel params")
return nil
}
diff --git a/modules/core/04-channel/keeper/packet.go b/modules/core/04-channel/keeper/packet.go
index 4be14bbf330..7be59d9ecaf 100644
--- a/modules/core/04-channel/keeper/packet.go
+++ b/modules/core/04-channel/keeper/packet.go
@@ -8,8 +8,6 @@ import (
errorsmod "cosmossdk.io/errors"
- sdk "github.com/cosmos/cosmos-sdk/types"
-
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -36,8 +34,6 @@ func (k *Keeper) SendPacket(
return 0, errorsmod.Wrapf(types.ErrInvalidChannelState, "channel is not OPEN (got %s)", channel.State)
}
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
-
sequence, found := k.GetNextSequenceSend(ctx, sourcePort, sourceChannel)
if !found {
return 0, errorsmod.Wrapf(
@@ -85,9 +81,11 @@ func (k *Keeper) SendPacket(
k.SetNextSequenceSend(ctx, sourcePort, sourceChannel, sequence+1)
k.SetPacketCommitment(ctx, sourcePort, sourceChannel, packet.GetSequence(), commitment)
- emitSendPacketEvent(sdkCtx, packet, channel, timeoutHeight)
+ if err := k.emitSendPacketEvent(ctx, packet, channel, timeoutHeight); err != nil {
+ return 0, err
+ }
- k.Logger(ctx).Info(
+ k.Logger.Info(
"packet sent",
"sequence", strconv.FormatUint(packet.GetSequence(), 10),
"src_port", sourcePort,
@@ -157,8 +155,7 @@ func (k *Keeper) RecvPacket(
}
// check if packet timed out by comparing it with the latest height of the chain
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- selfHeight, selfTimestamp := clienttypes.GetSelfHeight(sdkCtx), uint64(sdkCtx.BlockTime().UnixNano())
+ selfHeight, selfTimestamp := clienttypes.GetSelfHeight(ctx), uint64(k.HeaderService.HeaderInfo(ctx).Time.UnixNano())
timeout := types.NewTimeout(packet.GetTimeoutHeight().(clienttypes.Height), packet.GetTimeoutTimestamp())
if timeout.Elapsed(selfHeight, selfTimestamp) {
return "", errorsmod.Wrap(timeout.ErrTimeoutElapsed(selfHeight, selfTimestamp), "packet timeout elapsed")
@@ -180,7 +177,7 @@ func (k *Keeper) RecvPacket(
}
// log that a packet has been received & executed
- k.Logger(ctx).Info(
+ k.Logger.Info(
"packet received",
"sequence", strconv.FormatUint(packet.GetSequence(), 10),
"src_port", packet.GetSourcePort(),
@@ -190,7 +187,9 @@ func (k *Keeper) RecvPacket(
)
// emit an event that the relayer can query for
- emitRecvPacketEvent(sdkCtx, packet, channel)
+ if err := k.emitRecvPacketEvent(ctx, packet, channel); err != nil {
+ return "", err
+ }
return channel.Version, nil
}
@@ -207,7 +206,6 @@ func (k *Keeper) applyReplayProtection(ctx context.Context, packet types.Packet,
return errorsmod.Wrap(types.ErrPacketReceived, "packet already processed in previous channel upgrade")
}
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
switch channel.Ordering {
case types.UNORDERED:
// REPLAY PROTECTION: Packet receipts will indicate that a packet has already been received
@@ -215,7 +213,9 @@ func (k *Keeper) applyReplayProtection(ctx context.Context, packet types.Packet,
// by the increase of the recvStartSequence.
_, found := k.GetPacketReceipt(ctx, packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence())
if found {
- emitRecvPacketEvent(sdkCtx, packet, channel)
+ if err := k.emitRecvPacketEvent(ctx, packet, channel); err != nil {
+ return err
+ }
// This error indicates that the packet has already been relayed. Core IBC will
// treat this error as a no-op in order to prevent an entire relay transaction
// from failing and consuming unnecessary fees.
@@ -239,7 +239,9 @@ func (k *Keeper) applyReplayProtection(ctx context.Context, packet types.Packet,
}
if packet.GetSequence() < nextSequenceRecv {
- emitRecvPacketEvent(sdkCtx, packet, channel)
+ if err := k.emitRecvPacketEvent(ctx, packet, channel); err != nil {
+ return err
+ }
// This error indicates that the packet has already been relayed. Core IBC will
// treat this error as a no-op in order to prevent an entire relay transaction
// from failing and consuming unnecessary fees.
@@ -325,7 +327,7 @@ func (k *Keeper) WriteAcknowledgement(
)
// log that a packet acknowledgement has been written
- k.Logger(ctx).Info(
+ k.Logger.Info(
"acknowledgement written",
"sequence", strconv.FormatUint(packet.GetSequence(), 10),
"src_port", packet.GetSourcePort(),
@@ -334,10 +336,7 @@ func (k *Keeper) WriteAcknowledgement(
"dst_channel", packet.GetDestChannel(),
)
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- emitWriteAcknowledgementEvent(sdkCtx, packet.(types.Packet), channel, bz)
-
- return nil
+ return k.emitWriteAcknowledgementEvent(ctx, packet.(types.Packet), channel, bz)
}
// AcknowledgePacket is called by a module to process the acknowledgement of a
@@ -392,7 +391,9 @@ func (k *Keeper) AcknowledgePacket(
commitment := k.GetPacketCommitment(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence())
if len(commitment) == 0 {
- emitAcknowledgePacketEvent(ctx, packet, channel)
+ if err := k.emitAcknowledgePacketEvent(ctx, packet, channel); err != nil {
+ return "", err
+ }
// This error indicates that the acknowledgement has already been relayed
// or there is a misconfigured relayer attempting to prove an acknowledgement
// for a packet never sent. Core IBC will treat this error as a no-op in order to
@@ -444,7 +445,7 @@ func (k *Keeper) AcknowledgePacket(
k.deletePacketCommitment(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence())
// log that a packet has been acknowledged
- k.Logger(ctx).Info(
+ k.Logger.Info(
"packet acknowledged",
"sequence", strconv.FormatUint(packet.GetSequence(), 10),
"src_port", packet.GetSourcePort(),
@@ -454,7 +455,9 @@ func (k *Keeper) AcknowledgePacket(
)
// emit an event marking that we have processed the acknowledgement
- emitAcknowledgePacketEvent(ctx, packet, channel)
+ if err := k.emitAcknowledgePacketEvent(ctx, packet, channel); err != nil {
+ return "", err
+ }
// if an upgrade is in progress, handling packet flushing and update channel state appropriately
if channel.State == types.FLUSHING {
@@ -471,19 +474,20 @@ func (k *Keeper) AcknowledgePacket(
func (k *Keeper) handleFlushState(ctx context.Context, packet types.Packet, channel types.Channel) {
if counterpartyUpgrade, found := k.GetCounterpartyUpgrade(ctx, packet.GetSourcePort(), packet.GetSourceChannel()); found {
timeout := counterpartyUpgrade.Timeout
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- selfHeight, selfTimestamp := clienttypes.GetSelfHeight(sdkCtx), uint64(sdkCtx.BlockTime().UnixNano())
+ selfHeight, selfTimestamp := clienttypes.GetSelfHeight(ctx), uint64(k.HeaderService.HeaderInfo(ctx).Time.UnixNano())
if timeout.Elapsed(selfHeight, selfTimestamp) {
// packet flushing timeout has expired, abort the upgrade
// committing an error receipt to state, deleting upgrade information and restoring the channel.
- k.Logger(ctx).Info("upgrade aborted", "port_id", packet.GetSourcePort(), "channel_id", packet.GetSourceChannel(), "upgrade_sequence", channel.UpgradeSequence)
+ k.Logger.Info("upgrade aborted", "port_id", packet.GetSourcePort(), "channel_id", packet.GetSourceChannel(), "upgrade_sequence", channel.UpgradeSequence)
k.MustAbortUpgrade(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), timeout.ErrTimeoutElapsed(selfHeight, selfTimestamp))
} else if !k.HasInflightPackets(ctx, packet.GetSourcePort(), packet.GetSourceChannel()) {
// set the channel state to flush complete if all packets have been acknowledged/flushed.
channel.State = types.FLUSHCOMPLETE
k.SetChannel(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), channel)
- emitChannelFlushCompleteEvent(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), channel)
+ if err := k.emitChannelFlushCompleteEvent(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), channel); err != nil {
+ panic(err)
+ }
}
}
}
diff --git a/modules/core/04-channel/keeper/packet_test.go b/modules/core/04-channel/keeper/packet_test.go
index 055d94abaf7..3945264db11 100644
--- a/modules/core/04-channel/keeper/packet_test.go
+++ b/modules/core/04-channel/keeper/packet_test.go
@@ -7,7 +7,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
@@ -596,8 +596,7 @@ func (suite *KeeperTestSuite) TestRecvPacket() {
channelVersion, err := suite.chainB.App.GetIBCKeeper().ChannelKeeper.RecvPacket(suite.chainB.GetContext(), packet, proof, proofHeight)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(path.EndpointA.GetChannel().Version, channelVersion, "channel version is incorrect")
diff --git a/modules/core/04-channel/keeper/timeout.go b/modules/core/04-channel/keeper/timeout.go
index b7d39b843c4..a1d75a32a00 100644
--- a/modules/core/04-channel/keeper/timeout.go
+++ b/modules/core/04-channel/keeper/timeout.go
@@ -70,7 +70,9 @@ func (k *Keeper) TimeoutPacket(
commitment := k.GetPacketCommitment(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence())
if len(commitment) == 0 {
- emitTimeoutPacketEvent(ctx, packet, channel)
+ if err := k.emitTimeoutPacketEvent(ctx, packet, channel); err != nil {
+ return "", err
+ }
// This error indicates that the timeout has already been relayed
// or there is a misconfigured relayer attempting to prove a timeout
// for a packet never sent. Core IBC will treat this error as a no-op in order to
@@ -144,7 +146,7 @@ func (k *Keeper) timeoutExecuted(
// all upgrade information is deleted and the channel is set to CLOSED.
if channel.State == types.FLUSHING {
k.deleteUpgradeInfo(ctx, packet.GetSourcePort(), packet.GetSourceChannel())
- k.Logger(ctx).Info(
+ k.Logger.Info(
"upgrade info deleted",
"port_id", packet.GetSourcePort(),
"channel_id", packet.GetSourceChannel(),
@@ -154,10 +156,12 @@ func (k *Keeper) timeoutExecuted(
channel.State = types.CLOSED
k.SetChannel(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), channel)
- emitChannelClosedEvent(ctx, packet, channel)
+ if err := k.emitChannelClosedEvent(ctx, packet, channel); err != nil {
+ return err
+ }
}
- k.Logger(ctx).Info(
+ k.Logger.Info(
"packet timed-out",
"sequence", strconv.FormatUint(packet.GetSequence(), 10),
"src_port", packet.GetSourcePort(),
@@ -167,9 +171,7 @@ func (k *Keeper) timeoutExecuted(
)
// emit an event marking that we have processed the timeout
- emitTimeoutPacketEvent(ctx, packet, channel)
-
- return nil
+ return k.emitTimeoutPacketEvent(ctx, packet, channel)
}
// TimeoutOnClose is called by a module in order to prove that the channel to
@@ -211,7 +213,9 @@ func (k *Keeper) TimeoutOnClose(
commitment := k.GetPacketCommitment(ctx, packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence())
if len(commitment) == 0 {
- emitTimeoutPacketEvent(ctx, packet, channel)
+ if err := k.emitTimeoutPacketEvent(ctx, packet, channel); err != nil {
+ return "", err
+ }
// This error indicates that the timeout has already been relayed
// or there is a misconfigured relayer attempting to prove a timeout
// for a packet never sent. Core IBC will treat this error as a no-op in order to
diff --git a/modules/core/04-channel/keeper/timeout_test.go b/modules/core/04-channel/keeper/timeout_test.go
index 8e10cf15c62..d1f5aeaf039 100644
--- a/modules/core/04-channel/keeper/timeout_test.go
+++ b/modules/core/04-channel/keeper/timeout_test.go
@@ -8,7 +8,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
diff --git a/modules/core/04-channel/keeper/upgrade.go b/modules/core/04-channel/keeper/upgrade.go
index cee41cbf4f0..b2c28e37d5b 100644
--- a/modules/core/04-channel/keeper/upgrade.go
+++ b/modules/core/04-channel/keeper/upgrade.go
@@ -9,7 +9,6 @@ import (
errorsmod "cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/telemetry"
- sdk "github.com/cosmos/cosmos-sdk/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
@@ -67,7 +66,7 @@ func (k *Keeper) WriteUpgradeInitChannel(ctx context.Context, portID, channelID
k.SetChannel(ctx, portID, channelID, channel)
k.SetUpgrade(ctx, portID, channelID, upgrade)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "state", channel.State, "upgrade-sequence", fmt.Sprintf("%d", channel.UpgradeSequence))
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "state", channel.State, "upgrade-sequence", fmt.Sprintf("%d", channel.UpgradeSequence))
return channel, upgrade
}
@@ -235,7 +234,7 @@ func (k *Keeper) WriteUpgradeTryChannel(ctx context.Context, portID, channelID s
upgrade.Fields.Version = upgradeVersion
k.SetUpgrade(ctx, portID, channelID, upgrade)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.OPEN, "new-state", channel.State)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", types.OPEN, "new-state", channel.State)
return channel, upgrade
}
@@ -341,9 +340,7 @@ func (k *Keeper) ChanUpgradeAck(
}
timeout := counterpartyUpgrade.Timeout
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- selfHeight, selfTimestamp := clienttypes.GetSelfHeight(sdkCtx), uint64(sdkCtx.BlockTime().UnixNano())
-
+ selfHeight, selfTimestamp := clienttypes.GetSelfHeight(ctx), uint64(k.HeaderService.HeaderInfo(ctx).Time.UnixNano())
if timeout.Elapsed(selfHeight, selfTimestamp) {
return types.NewUpgradeError(channel.UpgradeSequence, errorsmod.Wrap(timeout.ErrTimeoutElapsed(selfHeight, selfTimestamp), "counterparty upgrade timeout elapsed"))
}
@@ -366,7 +363,7 @@ func (k *Keeper) WriteUpgradeAckChannel(ctx context.Context, portID, channelID s
previousState := channel.State
channel.State = types.FLUSHCOMPLETE
k.SetChannel(ctx, portID, channelID, channel)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", channel.State)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", channel.State)
}
upgrade, found := k.GetUpgrade(ctx, portID, channelID)
@@ -464,9 +461,7 @@ func (k *Keeper) ChanUpgradeConfirm(
}
timeout := counterpartyUpgrade.Timeout
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- selfHeight, selfTimestamp := clienttypes.GetSelfHeight(sdkCtx), uint64(sdkCtx.BlockTime().UnixNano())
-
+ selfHeight, selfTimestamp := clienttypes.GetSelfHeight(ctx), uint64(k.HeaderService.HeaderInfo(ctx).Time.UnixNano())
if timeout.Elapsed(selfHeight, selfTimestamp) {
return types.NewUpgradeError(channel.UpgradeSequence, errorsmod.Wrap(timeout.ErrTimeoutElapsed(selfHeight, selfTimestamp), "counterparty upgrade timeout elapsed"))
}
@@ -490,7 +485,7 @@ func (k *Keeper) WriteUpgradeConfirmChannel(ctx context.Context, portID, channel
previousState := channel.State
channel.State = types.FLUSHCOMPLETE
k.SetChannel(ctx, portID, channelID, channel)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", channel.State)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", channel.State)
}
k.SetCounterpartyUpgrade(ctx, portID, channelID, counterpartyUpgrade)
@@ -647,7 +642,7 @@ func (k *Keeper) WriteUpgradeOpenChannel(ctx context.Context, portID, channelID
// delete state associated with upgrade which is no longer required.
k.deleteUpgradeInfo(ctx, portID, channelID)
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", types.OPEN)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", types.OPEN)
return channel
}
@@ -725,7 +720,7 @@ func (k *Keeper) WriteUpgradeCancelChannel(ctx context.Context, portID, channelI
channel = k.restoreChannel(ctx, portID, channelID, sequence, channel)
k.WriteErrorReceipt(ctx, portID, channelID, types.NewUpgradeError(sequence, types.ErrInvalidUpgrade))
- k.Logger(ctx).Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", types.OPEN)
+ k.Logger.Info("channel state updated", "port-id", portID, "channel-id", channelID, "previous-state", previousState, "new-state", types.OPEN)
}
// ChanUpgradeTimeout times out an outstanding upgrade.
@@ -845,7 +840,7 @@ func (k *Keeper) WriteUpgradeTimeoutChannel(
channel = k.restoreChannel(ctx, portID, channelID, channel.UpgradeSequence, channel)
k.WriteErrorReceipt(ctx, portID, channelID, types.NewUpgradeError(channel.UpgradeSequence, types.ErrUpgradeTimeout))
- k.Logger(ctx).Info("channel state restored", "port-id", portID, "channel-id", channelID)
+ k.Logger.Info("channel state restored", "port-id", portID, "channel-id", channelID)
return channel, upgrade
}
@@ -885,8 +880,8 @@ func (k *Keeper) startFlushing(ctx context.Context, portID, channelID string, up
// getAbsoluteUpgradeTimeout returns the absolute timeout for the given upgrade.
func (k *Keeper) getAbsoluteUpgradeTimeout(ctx context.Context) types.Timeout {
upgradeTimeout := k.GetParams(ctx).UpgradeTimeout
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/7223
- return types.NewTimeout(clienttypes.ZeroHeight(), uint64(sdkCtx.BlockTime().UnixNano())+upgradeTimeout.Timestamp)
+ blockTime := k.HeaderService.HeaderInfo(ctx).Time.UnixNano()
+ return types.NewTimeout(clienttypes.ZeroHeight(), uint64(blockTime)+upgradeTimeout.Timestamp)
}
// checkForUpgradeCompatibility checks performs stateful validation of self upgrade fields relative to counterparty upgrade.
@@ -1053,5 +1048,7 @@ func (k *Keeper) WriteErrorReceipt(ctx context.Context, portID, channelID string
}
k.setUpgradeErrorReceipt(ctx, portID, channelID, errorReceiptToWrite)
- EmitErrorReceiptEvent(ctx, portID, channelID, channel, upgradeError)
+ if err := k.EmitErrorReceiptEvent(ctx, portID, channelID, channel, upgradeError); err != nil {
+ panic(err)
+ }
}
diff --git a/modules/core/04-channel/keeper/upgrade_test.go b/modules/core/04-channel/keeper/upgrade_test.go
index 8565f12a195..26ee0e22b6d 100644
--- a/modules/core/04-channel/keeper/upgrade_test.go
+++ b/modules/core/04-channel/keeper/upgrade_test.go
@@ -295,7 +295,6 @@ func (suite *KeeperTestSuite) TestChanUpgradeTry() {
tc := tc
suite.Run(tc.name, func() {
suite.SetupTest()
- expPass := tc.expError == nil
path = ibctesting.NewPath(suite.chainA, suite.chainB)
path.Setup()
@@ -330,7 +329,7 @@ func (suite *KeeperTestSuite) TestChanUpgradeTry() {
proofHeight,
)
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotEmpty(upgrade)
suite.Require().Equal(proposedUpgrade.Fields, upgrade.Fields)
@@ -782,8 +781,7 @@ func (suite *KeeperTestSuite) TestChanUpgradeAck() {
channelProof, upgradeProof, proofHeight,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
channel := path.EndpointA.GetChannel()
@@ -1132,8 +1130,7 @@ func (suite *KeeperTestSuite) TestChanUpgradeConfirm() {
channelProof, upgradeProof, proofHeight,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.assertUpgradeError(err, tc.expError)
@@ -1843,8 +1840,7 @@ func (suite *KeeperTestSuite) TestChanUpgradeCancel() {
err := suite.chainA.GetSimApp().IBCKeeper.ChannelKeeper.ChanUpgradeCancel(suite.chainA.GetContext(), path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, errorReceipt, errorReceiptProof, proofHeight)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expError)
@@ -2174,7 +2170,6 @@ func (suite *KeeperTestSuite) TestChanUpgradeTimeout() {
tc := tc
suite.Run(tc.name, func() {
suite.SetupTest()
- expPass := tc.expError == nil
path = ibctesting.NewPath(suite.chainA, suite.chainB)
path.Setup()
@@ -2200,7 +2195,7 @@ func (suite *KeeperTestSuite) TestChanUpgradeTimeout() {
proofHeight,
)
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.assertUpgradeError(err, tc.expError)
@@ -2686,8 +2681,7 @@ func (suite *KeeperTestSuite) TestChanUpgradeCrossingHelloWithHistoricalProofs()
proofHeight,
)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotEmpty(upgrade)
} else {
diff --git a/modules/core/04-channel/types/acknowledgement_test.go b/modules/core/04-channel/types/acknowledgement_test.go
index 45e61097bc0..4354735392c 100644
--- a/modules/core/04-channel/types/acknowledgement_test.go
+++ b/modules/core/04-channel/types/acknowledgement_test.go
@@ -5,9 +5,7 @@ import (
errorsmod "cosmossdk.io/errors"
- sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
-
- abcitypes "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
cmtstate "github.com/cometbft/cometbft/state"
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
@@ -20,7 +18,7 @@ const (
)
// tests acknowledgement.ValidateBasic and acknowledgement.Acknowledgement
-func (suite TypesTestSuite) TestAcknowledgement() { //nolint:govet // this is a test, we are okay with copying locks
+func (suite *TypesTestSuite) TestAcknowledgement() {
testCases := []struct {
name string
ack types.Acknowledgement
@@ -94,7 +92,7 @@ func (suite TypesTestSuite) TestAcknowledgement() { //nolint:govet // this is a
}
// The safety of including ABCI error codes in the acknowledgement rests
-// on the inclusion of these ABCI error codes in the abcitypes.ResposneDeliverTx
+// on the inclusion of these ABCI error codes in the abcitypes.ResponseDeliverTx
// hash. If the ABCI codes get removed from consensus they must no longer be used
// in the packet acknowledgement.
//
@@ -107,14 +105,14 @@ func (suite *TypesTestSuite) TestABCICodeDeterminism() {
// different ABCI error code used
errDifferentABCICode := ibcerrors.ErrNotFound
- deliverTx := sdkerrors.ResponseExecTxResultWithEvents(err, gasUsed, gasWanted, []abcitypes.Event{}, false)
- execTxResults := []*abcitypes.ExecTxResult{deliverTx}
+ deliverTx := responseExecTxResultWithEvents(err, gasUsed, gasWanted, []abci.Event{}, false)
+ execTxResults := []*abci.ExecTxResult{deliverTx}
- deliverTxSameABCICode := sdkerrors.ResponseExecTxResultWithEvents(errSameABCICode, gasUsed, gasWanted, []abcitypes.Event{}, false)
- resultsSameABCICode := []*abcitypes.ExecTxResult{deliverTxSameABCICode}
+ deliverTxSameABCICode := responseExecTxResultWithEvents(errSameABCICode, gasUsed, gasWanted, []abci.Event{}, false)
+ resultsSameABCICode := []*abci.ExecTxResult{deliverTxSameABCICode}
- deliverTxDifferentABCICode := sdkerrors.ResponseExecTxResultWithEvents(errDifferentABCICode, gasUsed, gasWanted, []abcitypes.Event{}, false)
- resultsDifferentABCICode := []*abcitypes.ExecTxResult{deliverTxDifferentABCICode}
+ deliverTxDifferentABCICode := responseExecTxResultWithEvents(errDifferentABCICode, gasUsed, gasWanted, []abci.Event{}, false)
+ resultsDifferentABCICode := []*abci.ExecTxResult{deliverTxDifferentABCICode}
hash := cmtstate.TxResultsHash(execTxResults)
hashSameABCICode := cmtstate.TxResultsHash(resultsSameABCICode)
@@ -124,6 +122,20 @@ func (suite *TypesTestSuite) TestABCICodeDeterminism() {
suite.Require().NotEqual(hash, hashDifferentABCICode)
}
+// responseExecTxResultWithEvents returns an ABCI ExecTxResult object with fields
+// filled in from the given error, gas values and events.
+func responseExecTxResultWithEvents(err error, gw, gu uint64, events []abci.Event, debug bool) *abci.ExecTxResult {
+ space, code, log := errorsmod.ABCIInfo(err, debug)
+ return &abci.ExecTxResult{
+ Codespace: space,
+ Code: code,
+ Log: log,
+ GasWanted: int64(gw),
+ GasUsed: int64(gu),
+ Events: events,
+ }
+}
+
// TestAcknowledgementError will verify that only a constant string and
// ABCI error code are used in constructing the acknowledgement error string
func (suite *TypesTestSuite) TestAcknowledgementError() {
@@ -142,7 +154,7 @@ func (suite *TypesTestSuite) TestAcknowledgementError() {
suite.Require().NotEqual(ack, ackDifferentABCICode)
}
-func (suite TypesTestSuite) TestAcknowledgementWithCodespace() { //nolint:govet // this is a test, we are okay with copying locks
+func (suite *TypesTestSuite) TestAcknowledgementWithCodespace() {
testCases := []struct {
name string
ack types.Acknowledgement
diff --git a/modules/core/04-channel/types/channel_test.go b/modules/core/04-channel/types/channel_test.go
index d8fe010933d..a589fe8a2d8 100644
--- a/modules/core/04-channel/types/channel_test.go
+++ b/modules/core/04-channel/types/channel_test.go
@@ -14,24 +14,25 @@ func TestChannelValidateBasic(t *testing.T) {
testCases := []struct {
name string
channel types.Channel
- expPass bool
+ expErr error
}{
- {"valid channel", types.NewChannel(types.TRYOPEN, types.ORDERED, counterparty, connHops, version), true},
- {"invalid state", types.NewChannel(types.UNINITIALIZED, types.ORDERED, counterparty, connHops, version), false},
- {"invalid order", types.NewChannel(types.TRYOPEN, types.NONE, counterparty, connHops, version), false},
- {"more than 1 connection hop", types.NewChannel(types.TRYOPEN, types.ORDERED, counterparty, []string{"connection1", "connection2"}, version), false},
- {"invalid connection hop identifier", types.NewChannel(types.TRYOPEN, types.ORDERED, counterparty, []string{"(invalid)"}, version), false},
- {"invalid counterparty", types.NewChannel(types.TRYOPEN, types.ORDERED, types.NewCounterparty("(invalidport)", "channelidone"), connHops, version), false},
+ {"valid channel", types.NewChannel(types.TRYOPEN, types.ORDERED, counterparty, connHops, version), nil},
+ {"invalid state", types.NewChannel(types.UNINITIALIZED, types.ORDERED, counterparty, connHops, version), types.ErrInvalidChannelState},
+ {"invalid order", types.NewChannel(types.TRYOPEN, types.NONE, counterparty, connHops, version), types.ErrInvalidChannelOrdering},
+ {"more than 1 connection hop", types.NewChannel(types.TRYOPEN, types.ORDERED, counterparty, []string{"connection1", "connection2"}, version), types.ErrTooManyConnectionHops},
+ {"invalid connection hop identifier", types.NewChannel(types.TRYOPEN, types.ORDERED, counterparty, []string{"(invalid)"}, version), host.ErrInvalidID},
+ {"invalid counterparty", types.NewChannel(types.TRYOPEN, types.ORDERED, types.NewCounterparty("(invalidport)", "channelidone"), connHops, version), host.ErrInvalidID},
}
for i, tc := range testCases {
tc := tc
err := tc.channel.ValidateBasic()
- if tc.expPass {
+ if tc.expErr == nil {
require.NoError(t, err, "valid test case %d failed: %s", i, tc.name)
} else {
require.Error(t, err, "invalid test case %d passed: %s", i, tc.name)
+ require.ErrorIs(t, err, tc.expErr)
}
}
}
@@ -40,21 +41,22 @@ func TestCounterpartyValidateBasic(t *testing.T) {
testCases := []struct {
name string
counterparty types.Counterparty
- expPass bool
+ expErr error
}{
- {"valid counterparty", types.Counterparty{"portidone", "channelidone"}, true},
- {"invalid port id", types.Counterparty{"(InvalidPort)", "channelidone"}, false},
- {"invalid channel id", types.Counterparty{"portidone", "(InvalidChannel)"}, false},
+ {"valid counterparty", types.Counterparty{"portidone", "channelidone"}, nil},
+ {"invalid port id", types.Counterparty{"(InvalidPort)", "channelidone"}, host.ErrInvalidID},
+ {"invalid channel id", types.Counterparty{"portidone", "(InvalidChannel)"}, host.ErrInvalidID},
}
for i, tc := range testCases {
tc := tc
err := tc.counterparty.ValidateBasic()
- if tc.expPass {
+ if tc.expErr == nil {
require.NoError(t, err, "valid test case %d failed: %s", i, tc.name)
} else {
require.Error(t, err, "invalid test case %d passed: %s", i, tc.name)
+ require.ErrorIs(t, err, tc.expErr)
}
}
}
diff --git a/modules/core/04-channel/types/codec.go b/modules/core/04-channel/types/codec.go
index 1b4fbef1493..32750c8271e 100644
--- a/modules/core/04-channel/types/codec.go
+++ b/modules/core/04-channel/types/codec.go
@@ -1,6 +1,8 @@
package types
import (
+ coreregistry "cosmossdk.io/core/registry"
+
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -11,7 +13,7 @@ import (
// RegisterInterfaces register the ibc channel submodule interfaces to protobuf
// Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterInterface(
"ibc.core.channel.v1.PacketI",
(*exported.PacketI)(nil),
diff --git a/modules/core/04-channel/types/codec_test.go b/modules/core/04-channel/types/codec_test.go
index 78289ea949f..54666b7179f 100644
--- a/modules/core/04-channel/types/codec_test.go
+++ b/modules/core/04-channel/types/codec_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -130,7 +131,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expError == nil {
diff --git a/modules/core/04-channel/types/errors.go b/modules/core/04-channel/types/errors.go
index 629a074a24d..9e13edef03c 100644
--- a/modules/core/04-channel/types/errors.go
+++ b/modules/core/04-channel/types/errors.go
@@ -58,4 +58,5 @@ var (
ErrTimeoutElapsed = errorsmod.Register(SubModuleName, 40, "timeout elapsed")
ErrPruningSequenceStartNotFound = errorsmod.Register(SubModuleName, 41, "pruning sequence start not found")
ErrRecvStartSequenceNotFound = errorsmod.Register(SubModuleName, 42, "recv start sequence not found")
+ ErrInvalidCommitment = errorsmod.Register(SubModuleName, 43, "invalid commitment")
)
diff --git a/modules/core/04-channel/types/genesis.go b/modules/core/04-channel/types/genesis.go
index c038b0fefb5..16ca4c369a8 100644
--- a/modules/core/04-channel/types/genesis.go
+++ b/modules/core/04-channel/types/genesis.go
@@ -4,7 +4,10 @@ import (
"errors"
"fmt"
+ errorsmod "cosmossdk.io/errors"
+
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
+ ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
)
// NewPacketState creates a new PacketState instance.
@@ -98,36 +101,36 @@ func (gs GenesisState) Validate() error {
}
if maxSequence != 0 && maxSequence >= gs.NextChannelSequence {
- return fmt.Errorf("next channel sequence %d must be greater than maximum sequence used in channel identifier %d", gs.NextChannelSequence, maxSequence)
+ return errorsmod.Wrapf(ibcerrors.ErrInvalidSequence, "next channel sequence %d must be greater than maximum sequence used in channel identifier %d", gs.NextChannelSequence, maxSequence)
}
for i, ack := range gs.Acknowledgements {
if err := ack.Validate(); err != nil {
- return fmt.Errorf("invalid acknowledgement %v ack index %d: %w", ack, i, err)
+ return errorsmod.Wrapf(ErrInvalidAcknowledgement, "%v ack index %d: %s", ack, i, err.Error())
}
if len(ack.Data) == 0 {
- return fmt.Errorf("invalid acknowledgement %v ack index %d: data bytes cannot be empty", ack, i)
+ return errorsmod.Wrapf(ErrInvalidAcknowledgement, "%v ack index %d: data bytes cannot be empty", ack, i)
}
}
for i, receipt := range gs.Receipts {
if err := receipt.Validate(); err != nil {
- return fmt.Errorf("invalid acknowledgement %v ack index %d: %w", receipt, i, err)
+ return errorsmod.Wrapf(ErrInvalidAcknowledgement, "%v ack index %d: %s", receipt, i, err.Error())
}
}
for i, commitment := range gs.Commitments {
if err := commitment.Validate(); err != nil {
- return fmt.Errorf("invalid commitment %v index %d: %w", commitment, i, err)
+ return errorsmod.Wrapf(ErrInvalidCommitment, "%v index %d: %s", commitment, i, err.Error())
}
if len(commitment.Data) == 0 {
- return fmt.Errorf("invalid acknowledgement %v ack index %d: data bytes cannot be empty", commitment, i)
+ return errorsmod.Wrapf(ErrInvalidAcknowledgement, "%v ack index %d: data bytes cannot be empty", commitment, i)
}
}
for i, ss := range gs.SendSequences {
if err := ss.Validate(); err != nil {
- return fmt.Errorf("invalid send sequence %v index %d: %w", ss, i, err)
+ return errorsmod.Wrapf(ibcerrors.ErrInvalidSequence, "invalid send sequence %v index %d: %s", ss, i, err.Error())
}
}
@@ -139,7 +142,7 @@ func (gs GenesisState) Validate() error {
for i, as := range gs.AckSequences {
if err := as.Validate(); err != nil {
- return fmt.Errorf("invalid acknowledgement sequence %v index %d: %w", as, i, err)
+ return errorsmod.Wrapf(ErrInvalidAcknowledgement, "sequence %v index %d: %s", as, i, err.Error())
}
}
diff --git a/modules/core/04-channel/types/genesis_test.go b/modules/core/04-channel/types/genesis_test.go
index e2a456ec55b..2da79970cab 100644
--- a/modules/core/04-channel/types/genesis_test.go
+++ b/modules/core/04-channel/types/genesis_test.go
@@ -6,6 +6,8 @@ import (
"github.com/stretchr/testify/require"
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
+ host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
+ ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
)
const (
@@ -26,12 +28,12 @@ func TestValidateGenesis(t *testing.T) {
testCases := []struct {
name string
genState types.GenesisState
- expPass bool
+ expErr error
}{
{
name: "default",
genState: types.DefaultGenesisState(),
- expPass: true,
+ expErr: nil,
},
{
name: "valid genesis",
@@ -69,7 +71,7 @@ func TestValidateGenesis(t *testing.T) {
2,
types.Params{UpgradeTimeout: types.DefaultTimeout},
),
- expPass: true,
+ expErr: nil,
},
{
name: "invalid channel",
@@ -82,7 +84,7 @@ func TestValidateGenesis(t *testing.T) {
),
},
},
- expPass: false,
+ expErr: host.ErrInvalidID,
},
{
name: "invalid ack",
@@ -91,7 +93,7 @@ func TestValidateGenesis(t *testing.T) {
types.NewPacketState(testPort2, testChannel2, 1, nil),
},
},
- expPass: false,
+ expErr: types.ErrInvalidAcknowledgement,
},
{
name: "invalid commitment",
@@ -100,7 +102,7 @@ func TestValidateGenesis(t *testing.T) {
types.NewPacketState(testPort1, testChannel1, 1, nil),
},
},
- expPass: false,
+ expErr: types.ErrInvalidCommitment,
},
{
name: "invalid send seq",
@@ -109,7 +111,7 @@ func TestValidateGenesis(t *testing.T) {
types.NewPacketSequence(testPort1, testChannel1, 0),
},
},
- expPass: false,
+ expErr: ibcerrors.ErrInvalidSequence,
},
{
name: "invalid recv seq",
@@ -118,7 +120,7 @@ func TestValidateGenesis(t *testing.T) {
types.NewPacketSequence(testPort1, "(testChannel1)", 1),
},
},
- expPass: false,
+ expErr: host.ErrInvalidID,
},
{
name: "invalid recv seq 2",
@@ -127,7 +129,7 @@ func TestValidateGenesis(t *testing.T) {
types.NewPacketSequence("(testPort1)", testChannel1, 1),
},
},
- expPass: false,
+ expErr: host.ErrInvalidID,
},
{
name: "invalid ack seq",
@@ -136,7 +138,7 @@ func TestValidateGenesis(t *testing.T) {
types.NewPacketSequence(testPort1, "(testChannel1)", 1),
},
},
- expPass: false,
+ expErr: types.ErrInvalidAcknowledgement,
},
{
name: "invalid channel identifier",
@@ -174,7 +176,7 @@ func TestValidateGenesis(t *testing.T) {
0,
types.Params{UpgradeTimeout: types.DefaultTimeout},
),
- expPass: false,
+ expErr: host.ErrInvalidID,
},
{
name: "next channel sequence is less than maximum channel identifier sequence used",
@@ -212,17 +214,18 @@ func TestValidateGenesis(t *testing.T) {
0,
types.Params{UpgradeTimeout: types.DefaultTimeout},
),
- expPass: false,
+ expErr: ibcerrors.ErrInvalidSequence,
},
}
for _, tc := range testCases {
tc := tc
err := tc.genState.Validate()
- if tc.expPass {
+ if tc.expErr == nil {
require.NoError(t, err, tc.name)
} else {
require.Error(t, err, tc.name)
+ require.ErrorIs(t, err, tc.expErr)
}
}
}
diff --git a/modules/core/04-channel/types/keys_test.go b/modules/core/04-channel/types/keys_test.go
index 16da18aee53..a8a0abfc15f 100644
--- a/modules/core/04-channel/types/keys_test.go
+++ b/modules/core/04-channel/types/keys_test.go
@@ -1,11 +1,13 @@
package types_test
import (
+ "errors"
"testing"
"github.com/stretchr/testify/require"
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
+ host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
)
// tests ParseChannelSequence and IsValidChannelID
@@ -14,20 +16,20 @@ func TestParseChannelSequence(t *testing.T) {
name string
channelID string
expSeq uint64
- expPass bool
+ expErr error
}{
- {"valid 0", "channel-0", 0, true},
- {"valid 1", "channel-1", 1, true},
- {"valid large sequence", "channel-234568219356718293", 234568219356718293, true},
+ {"valid 0", "channel-0", 0, nil},
+ {"valid 1", "channel-1", 1, nil},
+ {"valid large sequence", "channel-234568219356718293", 234568219356718293, nil},
// one above uint64 max
- {"invalid uint64", "channel-18446744073709551616", 0, false},
+ {"invalid uint64", "channel-18446744073709551616", 0, errors.New("invalid channel identifier: failed to parse identifier sequence")},
// uint64 == 20 characters
- {"invalid large sequence", "channel-2345682193567182931243", 0, false},
- {"capital prefix", "Channel-0", 0, false},
- {"missing dash", "channel0", 0, false},
- {"blank id", " ", 0, false},
- {"empty id", "", 0, false},
- {"negative sequence", "channel--1", 0, false},
+ {"invalid large sequence", "channel-2345682193567182931243", 0, host.ErrInvalidID},
+ {"capital prefix", "Channel-0", 0, host.ErrInvalidID},
+ {"missing dash", "channel0", 0, host.ErrInvalidID},
+ {"blank id", " ", 0, host.ErrInvalidID},
+ {"empty id", "", 0, host.ErrInvalidID},
+ {"negative sequence", "channel--1", 0, host.ErrInvalidID},
}
for _, tc := range testCases {
@@ -37,12 +39,13 @@ func TestParseChannelSequence(t *testing.T) {
valid := types.IsValidChannelID(tc.channelID)
require.Equal(t, tc.expSeq, seq)
- if tc.expPass {
+ if tc.expErr == nil {
require.NoError(t, err, tc.name)
require.True(t, valid)
} else {
require.Error(t, err, tc.name)
require.False(t, valid)
+ require.ErrorContains(t, err, tc.expErr.Error())
}
}
}
diff --git a/modules/core/04-channel/types/msgs_test.go b/modules/core/04-channel/types/msgs_test.go
index e660cf39bd4..ba1f7e6f289 100644
--- a/modules/core/04-channel/types/msgs_test.go
+++ b/modules/core/04-channel/types/msgs_test.go
@@ -14,11 +14,12 @@ import (
"cosmossdk.io/store/metrics"
"cosmossdk.io/store/rootmulti"
storetypes "cosmossdk.io/store/types"
+ govtypes "cosmossdk.io/x/gov/types"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
ibc "github.com/cosmos/ibc-go/v9/modules/core"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
@@ -248,8 +249,7 @@ func (suite *TypesTestSuite) TestMsgChannelOpenInitValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -264,8 +264,8 @@ func (suite *TypesTestSuite) TestMsgChannelOpenInitGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgChannelOpenInit(portid, version, types.ORDERED, connHops, cpportid, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -420,8 +420,7 @@ func (suite *TypesTestSuite) TestMsgChannelOpenTryValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -436,8 +435,8 @@ func (suite *TypesTestSuite) TestMsgChannelOpenTryGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgChannelOpenTry(portid, version, types.ORDERED, connHops, cpportid, cpchanid, version, suite.proof, height, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -531,8 +530,7 @@ func (suite *TypesTestSuite) TestMsgChannelOpenAckValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -547,8 +545,8 @@ func (suite *TypesTestSuite) TestMsgChannelOpenAckGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgChannelOpenAck(portid, chanid, chanid, version, suite.proof, height, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -626,8 +624,7 @@ func (suite *TypesTestSuite) TestMsgChannelOpenConfirmValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -642,8 +639,8 @@ func (suite *TypesTestSuite) TestMsgChannelOpenConfirmGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgChannelOpenConfirm(portid, chanid, suite.proof, height, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -716,8 +713,7 @@ func (suite *TypesTestSuite) TestMsgChannelCloseInitValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -732,8 +728,8 @@ func (suite *TypesTestSuite) TestMsgChannelCloseInitGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgChannelCloseInit(portid, chanid, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -816,8 +812,7 @@ func (suite *TypesTestSuite) TestMsgChannelCloseConfirmValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -832,8 +827,8 @@ func (suite *TypesTestSuite) TestMsgChannelCloseConfirmGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgChannelCloseConfirm(portid, chanid, suite.proof, height, addr, counterpartyUpgradeSequence)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -873,8 +868,7 @@ func (suite *TypesTestSuite) TestMsgRecvPacketValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.NoError(err)
} else {
suite.Error(err)
@@ -889,8 +883,8 @@ func (suite *TypesTestSuite) TestMsgRecvPacketGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgRecvPacket(packet, suite.proof, height, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -935,8 +929,7 @@ func (suite *TypesTestSuite) TestMsgTimeoutValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -951,8 +944,8 @@ func (suite *TypesTestSuite) TestMsgTimeoutGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgTimeout(packet, 1, suite.proof, height, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1007,8 +1000,7 @@ func (suite *TypesTestSuite) TestMsgTimeoutOnCloseValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1023,8 +1015,8 @@ func (suite *TypesTestSuite) TestMsgTimeoutOnCloseGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgTimeoutOnClose(packet, 1, suite.proof, suite.proof, height, addr, counterpartyUpgradeSequence)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1069,8 +1061,7 @@ func (suite *TypesTestSuite) TestMsgAcknowledgementValidateBasic() {
suite.Run(tc.name, func() {
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1085,8 +1076,8 @@ func (suite *TypesTestSuite) TestMsgAcknowledgementGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgAcknowledgement(packet, packet.GetData(), suite.proof, height, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1153,8 +1144,7 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeInitValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1173,8 +1163,8 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeInitGetSigners() {
addr,
)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1277,8 +1267,7 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeTryValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1303,8 +1292,8 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeTryGetSigners() {
addr,
)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1384,8 +1373,7 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeAckValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1410,8 +1398,8 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeAckGetSigners() {
height, addr,
)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1505,8 +1493,7 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeConfirmValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1522,8 +1509,8 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeConfirmGetSigners() {
msg := &types.MsgChannelUpgradeConfirm{Signer: addr}
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1612,8 +1599,7 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeOpenValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1692,8 +1678,7 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeTimeoutValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1713,8 +1698,8 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeTimeoutGetSigners() {
suite.proof,
height, addr,
)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1777,8 +1762,7 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeCancelValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
@@ -1793,8 +1777,8 @@ func (suite *TypesTestSuite) TestMsgChannelUpgradeCancelGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgChannelUpgradeCancel(ibctesting.MockPort, ibctesting.FirstChannelID, types.ErrorReceipt{Sequence: 1}, suite.proof, height, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
@@ -1851,8 +1835,7 @@ func (suite *TypesTestSuite) TestMsgPruneAcknowledgementsValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expErr)
@@ -1906,8 +1889,7 @@ func (suite *TypesTestSuite) TestMsgUpdateParamsValidateBasic() {
tc.malleate()
err := msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expErr)
@@ -1921,8 +1903,8 @@ func (suite *TypesTestSuite) TestMsgPruneAcknowledgementsGetSigners() {
suite.Require().NoError(err)
msg := types.NewMsgPruneAcknowledgements(ibctesting.MockPort, ibctesting.FirstChannelID, 0, addr)
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
- signers, _, err := encodingCfg.Codec.GetMsgV1Signers(msg)
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
+ signers, _, err := encodingCfg.Codec.GetMsgSigners(msg)
suite.Require().NoError(err)
suite.Require().Equal(expSigner.Bytes(), signers[0])
diff --git a/modules/core/04-channel/types/packet_test.go b/modules/core/04-channel/types/packet_test.go
index f26192b8712..13bbde87598 100644
--- a/modules/core/04-channel/types/packet_test.go
+++ b/modules/core/04-channel/types/packet_test.go
@@ -1,6 +1,7 @@
package types_test
import (
+ "errors"
"testing"
"github.com/stretchr/testify/require"
@@ -46,28 +47,27 @@ func TestCommitPacket(t *testing.T) {
func TestPacketValidateBasic(t *testing.T) {
testCases := []struct {
- packet types.Packet
- expPass bool
- errMsg string
+ packet types.Packet
+ expError error
}{
- {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), true, ""},
- {types.NewPacket(unknownPacketData, 1, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), true, ""},
- {types.NewPacket(validPacketData, 0, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), false, "invalid sequence"},
- {types.NewPacket(validPacketData, 1, invalidPort, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), false, "invalid source port"},
- {types.NewPacket(validPacketData, 1, portid, invalidChannel, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), false, "invalid source channel"},
- {types.NewPacket(validPacketData, 1, portid, chanid, invalidPort, cpchanid, timeoutHeight, timeoutTimestamp), false, "invalid destination port"},
- {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, invalidChannel, timeoutHeight, timeoutTimestamp), false, "invalid destination channel"},
- {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, disabledTimeout, 0), false, "disabled both timeout height and timestamp"},
- {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, disabledTimeout, timeoutTimestamp), true, "disabled timeout height, valid timeout timestamp"},
- {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, timeoutHeight, 0), true, "disabled timeout timestamp, valid timeout height"},
+ {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), nil},
+ {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, disabledTimeout, timeoutTimestamp), nil},
+ {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, timeoutHeight, 0), nil},
+ {types.NewPacket(unknownPacketData, 1, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), nil},
+ {types.NewPacket(validPacketData, 0, portid, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), errors.New("packet sequence cannot be 0: invalid packet")},
+ {types.NewPacket(validPacketData, 1, invalidPort, chanid, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), errors.New("invalid source port")},
+ {types.NewPacket(validPacketData, 1, portid, invalidChannel, cpportid, cpchanid, timeoutHeight, timeoutTimestamp), errors.New("invalid source channel")},
+ {types.NewPacket(validPacketData, 1, portid, chanid, invalidPort, cpchanid, timeoutHeight, timeoutTimestamp), errors.New("invalid destination port")},
+ {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, invalidChannel, timeoutHeight, timeoutTimestamp), errors.New("invalid destination channel")},
+ {types.NewPacket(validPacketData, 1, portid, chanid, cpportid, cpchanid, disabledTimeout, 0), errors.New("packet timeout height and packet timeout timestamp cannot both be 0: invalid packet")},
}
- for i, tc := range testCases {
+ for _, tc := range testCases {
err := tc.packet.ValidateBasic()
- if tc.expPass {
- require.NoError(t, err, "Msg %d failed: %s", i, tc.errMsg)
+ if tc.expError == nil {
+ require.NoError(t, err)
} else {
- require.Error(t, err, "Invalid Msg %d passed: %s", i, tc.errMsg)
+ require.ErrorContains(t, err, tc.expError.Error())
}
}
}
diff --git a/modules/core/04-channel/types/query.go b/modules/core/04-channel/types/query.go
index e0f8121d752..1bff1497c39 100644
--- a/modules/core/04-channel/types/query.go
+++ b/modules/core/04-channel/types/query.go
@@ -1,15 +1,15 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
)
var (
- _ codectypes.UnpackInterfacesMessage = (*QueryChannelClientStateResponse)(nil)
- _ codectypes.UnpackInterfacesMessage = (*QueryChannelConsensusStateResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryChannelClientStateResponse)(nil)
+ _ gogoprotoany.UnpackInterfacesMessage = (*QueryChannelConsensusStateResponse)(nil)
)
// NewQueryChannelResponse creates a new QueryChannelResponse instance
@@ -31,12 +31,12 @@ func NewQueryChannelClientStateResponse(identifiedClientState clienttypes.Identi
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (qccsr QueryChannelClientStateResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (qccsr QueryChannelClientStateResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return qccsr.IdentifiedClientState.UnpackInterfaces(unpacker)
}
// NewQueryChannelConsensusStateResponse creates a newQueryChannelConsensusStateResponse instance
-func NewQueryChannelConsensusStateResponse(clientID string, anyConsensusState *codectypes.Any, consensusStateHeight exported.Height, proof []byte, height clienttypes.Height) *QueryChannelConsensusStateResponse {
+func NewQueryChannelConsensusStateResponse(clientID string, anyConsensusState *gogoprotoany.Any, consensusStateHeight exported.Height, proof []byte, height clienttypes.Height) *QueryChannelConsensusStateResponse {
return &QueryChannelConsensusStateResponse{
ConsensusState: anyConsensusState,
ClientId: clientID,
@@ -46,7 +46,7 @@ func NewQueryChannelConsensusStateResponse(clientID string, anyConsensusState *c
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (qccsr QueryChannelConsensusStateResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (qccsr QueryChannelConsensusStateResponse) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(qccsr.ConsensusState, new(exported.ConsensusState))
}
diff --git a/modules/core/04-channel/types/query.pb.go b/modules/core/04-channel/types/query.pb.go
index aae2ab333d0..37deaeaf68f 100644
--- a/modules/core/04-channel/types/query.pb.go
+++ b/modules/core/04-channel/types/query.pb.go
@@ -6,11 +6,11 @@ package types
import (
context "context"
fmt "fmt"
- types1 "github.com/cosmos/cosmos-sdk/codec/types"
query "github.com/cosmos/cosmos-sdk/types/query"
_ "github.com/cosmos/gogoproto/gogoproto"
grpc1 "github.com/cosmos/gogoproto/grpc"
proto "github.com/cosmos/gogoproto/proto"
+ any "github.com/cosmos/gogoproto/types/any"
types "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
@@ -583,7 +583,7 @@ func (m *QueryChannelConsensusStateRequest) GetRevisionHeight() uint64 {
// Query/QueryChannelClientState RPC method
type QueryChannelConsensusStateResponse struct {
// consensus state associated with the channel
- ConsensusState *types1.Any `protobuf:"bytes,1,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
+ ConsensusState *any.Any `protobuf:"bytes,1,opt,name=consensus_state,json=consensusState,proto3" json:"consensus_state,omitempty"`
// client ID associated with the consensus state
ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
// merkle proof of existence
@@ -625,7 +625,7 @@ func (m *QueryChannelConsensusStateResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryChannelConsensusStateResponse proto.InternalMessageInfo
-func (m *QueryChannelConsensusStateResponse) GetConsensusState() *types1.Any {
+func (m *QueryChannelConsensusStateResponse) GetConsensusState() *any.Any {
if m != nil {
return m.ConsensusState
}
@@ -2165,13 +2165,13 @@ var fileDescriptor_1034a1e9abc4cca1 = []byte{
0xae, 0x6c, 0x97, 0x2d, 0xd7, 0x22, 0x03, 0x46, 0x5e, 0x97, 0xbd, 0x09, 0x32, 0x4c, 0x90, 0xab,
0x53, 0x52, 0xc0, 0x6a, 0xc5, 0xa0, 0xa6, 0xeb, 0x19, 0xf1, 0x5f, 0xdc, 0x4a, 0x3a, 0xa2, 0x5b,
0x4e, 0xc9, 0x72, 0x94, 0xbc, 0xe6, 0x50, 0xee, 0x4e, 0xa9, 0x4e, 0xe5, 0xa9, 0xab, 0x4d, 0x29,
- 0xb6, 0x56, 0x34, 0x4c, 0xcd, 0x35, 0x2c, 0x13, 0xe6, 0x1e, 0x88, 0x82, 0x20, 0x16, 0xe3, 0x53,
- 0x46, 0x8b, 0x96, 0x55, 0x5c, 0xa1, 0x8a, 0x66, 0x1b, 0x8a, 0x66, 0x9a, 0x96, 0xcb, 0xec, 0x1d,
- 0x78, 0xbb, 0x1f, 0xde, 0xb2, 0xa7, 0x7c, 0xe5, 0xa6, 0xa2, 0x99, 0x80, 0x5e, 0x1a, 0x2c, 0x5a,
- 0x45, 0x8b, 0xfd, 0x54, 0xbc, 0x5f, 0x49, 0x2b, 0x56, 0xec, 0x62, 0x59, 0x2b, 0x50, 0x3e, 0x25,
- 0x7b, 0x11, 0x0f, 0x5c, 0xf1, 0x60, 0xcf, 0xf1, 0x09, 0x2a, 0xbd, 0x55, 0xa1, 0x8e, 0x4b, 0xf6,
+ 0xb6, 0x56, 0x34, 0x4c, 0xcd, 0x35, 0x2c, 0x13, 0xe6, 0x1e, 0x88, 0x82, 0x20, 0x16, 0x4b, 0x98,
+ 0x52, 0xb1, 0x8b, 0x65, 0xad, 0x40, 0x61, 0xca, 0x68, 0xd1, 0xb2, 0x8a, 0x2b, 0x54, 0xd1, 0x6c,
+ 0x43, 0xd1, 0x4c, 0xd3, 0x72, 0xd9, 0x12, 0x0e, 0xbc, 0xdd, 0x0f, 0x6f, 0xd9, 0x53, 0xbe, 0x72,
+ 0x53, 0xd1, 0x4c, 0x20, 0x28, 0x0d, 0x16, 0xad, 0xa2, 0xc5, 0x7e, 0x2a, 0xde, 0x2f, 0x3e, 0x9a,
+ 0xbd, 0x88, 0x07, 0xae, 0x78, 0xb0, 0xe7, 0xf8, 0x7a, 0x2a, 0xbd, 0x55, 0xa1, 0x8e, 0x4b, 0xf6,
0xe1, 0x6e, 0xdb, 0x2a, 0xbb, 0x39, 0xa3, 0x30, 0x8c, 0x26, 0xd0, 0x64, 0xaf, 0xda, 0xe5, 0x3d,
- 0xce, 0x17, 0xc8, 0x18, 0xc6, 0xe0, 0xcb, 0x7b, 0xd7, 0xce, 0xde, 0xf5, 0xc2, 0xc8, 0x7c, 0x21,
+ 0xce, 0x17, 0xc8, 0x18, 0xc6, 0x00, 0xcd, 0x7b, 0xd7, 0xce, 0xde, 0xf5, 0xc2, 0xc8, 0x7c, 0x21,
0xfb, 0x10, 0xe1, 0xc1, 0xb0, 0x3f, 0xc7, 0xb6, 0x4c, 0x87, 0x92, 0x13, 0xb8, 0x1b, 0x66, 0x31,
0x87, 0x3b, 0xa7, 0x47, 0xe5, 0x08, 0xc1, 0x65, 0x61, 0x26, 0x26, 0x93, 0x41, 0xbc, 0xc3, 0x2e,
0x5b, 0xd6, 0x4d, 0xb6, 0x54, 0x9f, 0xca, 0x1f, 0xc8, 0x1c, 0xee, 0x63, 0x3f, 0x72, 0x4b, 0xd4,
@@ -2191,7 +2191,7 @@ var fileDescriptor_1034a1e9abc4cca1 = []byte{
0x93, 0xe9, 0x54, 0x9c, 0xed, 0xd0, 0x8f, 0x1c, 0xc2, 0x7b, 0xca, 0xb4, 0x6a, 0x38, 0x86, 0x65,
0xe6, 0xcc, 0x4a, 0x29, 0x4f, 0xcb, 0x0c, 0x65, 0xa7, 0xba, 0x5b, 0x0c, 0x5f, 0x62, 0xa3, 0xa1,
0x89, 0x40, 0xa7, 0x33, 0x3c, 0x11, 0xf0, 0x3e, 0x45, 0x38, 0x9b, 0x84, 0x17, 0x82, 0xf2, 0x6f,
- 0xbc, 0x47, 0x17, 0x6f, 0x42, 0xc1, 0x18, 0x94, 0xf9, 0x27, 0x43, 0x16, 0x9f, 0x0c, 0xf9, 0xac,
+ 0xbc, 0x47, 0x17, 0x6f, 0x42, 0xc1, 0x18, 0x94, 0xf9, 0xf7, 0x40, 0x16, 0xdf, 0x03, 0xf9, 0xac,
0x79, 0x57, 0xdd, 0xad, 0x87, 0xdc, 0x90, 0x11, 0xdc, 0x0b, 0x81, 0xf4, 0x59, 0xf5, 0xf0, 0x81,
0xf9, 0x42, 0x2d, 0x1a, 0x1d, 0x49, 0xd1, 0xe8, 0xdc, 0x4a, 0x34, 0xca, 0x78, 0x94, 0x91, 0x5b,
0xd0, 0xf4, 0x65, 0xea, 0xce, 0x59, 0xa5, 0x92, 0xe1, 0x96, 0xa8, 0xe9, 0xa6, 0x8d, 0x83, 0x84,
@@ -2216,11 +2216,11 @@ var fileDescriptor_1034a1e9abc4cca1 = []byte{
0x0d, 0xbc, 0xa6, 0xf1, 0x90, 0x49, 0xef, 0xd4, 0x36, 0x4b, 0x0e, 0xd8, 0xb3, 0xa5, 0x3a, 0xd5,
0x01, 0xb3, 0xd1, 0xb6, 0x95, 0x29, 0xf0, 0x75, 0xb8, 0xcb, 0x05, 0x21, 0x2f, 0x52, 0xb3, 0x90,
0x56, 0x8b, 0x2f, 0xc4, 0xd1, 0x6b, 0x74, 0x0c, 0x42, 0xfc, 0x1d, 0x93, 0xb0, 0x10, 0x0e, 0x35,
- 0x0b, 0xa0, 0x42, 0xbf, 0x59, 0x67, 0xd5, 0x4a, 0x09, 0x54, 0x3c, 0xcc, 0x37, 0x22, 0x6f, 0xb0,
+ 0x0b, 0xa0, 0x42, 0xbf, 0x59, 0x67, 0xd5, 0x4a, 0x09, 0x54, 0x3c, 0xcc, 0x37, 0x22, 0xef, 0xd7,
0xfc, 0xb7, 0x5c, 0xb6, 0xca, 0x69, 0xe9, 0x7f, 0x87, 0xe0, 0x1a, 0x12, 0x76, 0xea, 0x27, 0xda,
0x5d, 0xd4, 0x1b, 0xe0, 0xb1, 0xb7, 0x5d, 0xb8, 0xf5, 0x1f, 0x88, 0xcc, 0xb2, 0x60, 0xca, 0x26,
0x02, 0xfc, 0x3e, 0x1a, 0x18, 0x6b, 0xa5, 0x34, 0xa2, 0xcb, 0x04, 0x2c, 0xd2, 0xaa, 0xf2, 0xb5,
- 0xe8, 0x32, 0xf9, 0xfe, 0x40, 0x90, 0xd3, 0xb8, 0x1b, 0xda, 0x5b, 0x89, 0x5d, 0x26, 0x30, 0x03,
+ 0xe8, 0x32, 0xf9, 0xfe, 0x40, 0x90, 0xd3, 0xb8, 0x1b, 0xba, 0x65, 0x89, 0x5d, 0x26, 0x30, 0x03,
0xa4, 0xc2, 0xa4, 0x95, 0x02, 0x8c, 0x40, 0x18, 0xa1, 0x8e, 0x5b, 0xd0, 0xca, 0x5a, 0x49, 0xe4,
0xca, 0xec, 0x15, 0xc8, 0xa4, 0x75, 0x2f, 0x81, 0xd3, 0x0c, 0xee, 0xb2, 0xd9, 0x08, 0x50, 0x1a,
0x89, 0xf9, 0x86, 0x32, 0x23, 0x98, 0x3a, 0xfd, 0xcb, 0x08, 0xde, 0xc1, 0x7c, 0x92, 0xcf, 0x11,
@@ -2262,7 +2262,7 @@ var fileDescriptor_1034a1e9abc4cca1 = []byte{
0xb6, 0x1b, 0xa7, 0x8a, 0x86, 0xbb, 0x54, 0xc9, 0xcb, 0xba, 0x55, 0x52, 0xe0, 0x9f, 0x54, 0x8c,
0xbc, 0x7e, 0xb4, 0x68, 0x29, 0xd5, 0x53, 0x4a, 0xc9, 0x2a, 0x54, 0x56, 0xa8, 0xc3, 0xbd, 0x1e,
0x3b, 0x7e, 0x54, 0x38, 0x76, 0xef, 0xda, 0xd4, 0xc9, 0x77, 0xb1, 0xbf, 0x16, 0xce, 0xfc, 0x11,
- 0x00, 0x00, 0xff, 0xff, 0x49, 0x5b, 0x44, 0x98, 0x34, 0x23, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xdb, 0x66, 0x8f, 0x32, 0x34, 0x23, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -6475,7 +6475,7 @@ func (m *QueryChannelConsensusStateResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ConsensusState == nil {
- m.ConsensusState = &types1.Any{}
+ m.ConsensusState = &any.Any{}
}
if err := m.ConsensusState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/core/04-channel/types/timeout_test.go b/modules/core/04-channel/types/timeout_test.go
index 8e564e56abc..842e5ac8fc1 100644
--- a/modules/core/04-channel/types/timeout_test.go
+++ b/modules/core/04-channel/types/timeout_test.go
@@ -13,7 +13,7 @@ func (suite *TypesTestSuite) TestIsValid() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ isValid bool
}{
{
"success: valid timeout with height and timestamp",
@@ -51,11 +51,7 @@ func (suite *TypesTestSuite) TestIsValid() {
tc.malleate()
isValid := timeout.IsValid()
- if tc.expPass {
- suite.Require().True(isValid)
- } else {
- suite.Require().False(isValid)
- }
+ suite.Require().Equal(tc.isValid, isValid)
})
}
}
diff --git a/modules/core/04-channel/types/upgrade.go b/modules/core/04-channel/types/upgrade.go
index 8e192be7e72..55119a0ed7f 100644
--- a/modules/core/04-channel/types/upgrade.go
+++ b/modules/core/04-channel/types/upgrade.go
@@ -114,7 +114,7 @@ func (u *UpgradeError) GetErrorReceipt() ErrorReceipt {
// NOTE: Changing this const is state machine breaking as it is written into state.
const restoreErrorString = "restored channel to pre-upgrade state"
- _, code, _ := errorsmod.ABCIInfo(u, false) // discard non-determinstic codespace and log values
+ _, code, _ := errorsmod.ABCIInfo(u, false) // discard non-deterministic codespace and log values
return ErrorReceipt{
Sequence: u.sequence,
Message: fmt.Sprintf("ABCI code: %d: %s", code, restoreErrorString),
diff --git a/modules/core/04-channel/types/upgrade_test.go b/modules/core/04-channel/types/upgrade_test.go
index dda92c7c335..ef5631f1d85 100644
--- a/modules/core/04-channel/types/upgrade_test.go
+++ b/modules/core/04-channel/types/upgrade_test.go
@@ -18,33 +18,33 @@ func (suite *TypesTestSuite) TestUpgradeValidateBasic() {
testCases := []struct {
name string
malleate func()
- expPass bool
+ expErr error
}{
{
"success",
func() {},
- true,
+ nil,
},
{
"invalid ordering",
func() {
upgrade.Fields.Ordering = types.NONE
},
- false,
+ types.ErrInvalidChannelOrdering,
},
{
"connection hops length not equal to 1",
func() {
upgrade.Fields.ConnectionHops = []string{"connection-0", "connection-1"}
},
- false,
+ types.ErrTooManyConnectionHops,
},
{
"empty version",
func() {
upgrade.Fields.Version = " "
},
- false,
+ types.ErrInvalidChannelVersion,
},
{
"invalid timeout",
@@ -52,7 +52,7 @@ func (suite *TypesTestSuite) TestUpgradeValidateBasic() {
upgrade.Timeout.Height = clienttypes.ZeroHeight()
upgrade.Timeout.Timestamp = 0
},
- false,
+ types.ErrInvalidUpgrade,
},
}
@@ -69,10 +69,11 @@ func (suite *TypesTestSuite) TestUpgradeValidateBasic() {
err := upgrade.ValidateBasic()
- if tc.expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().Error(err)
+ suite.Require().ErrorIs(err, tc.expErr)
}
})
}
diff --git a/modules/core/04-channel/v2/keeper/grpc_query.go b/modules/core/04-channel/v2/keeper/grpc_query.go
index 93ccb5f41ee..709781e4a4d 100644
--- a/modules/core/04-channel/v2/keeper/grpc_query.go
+++ b/modules/core/04-channel/v2/keeper/grpc_query.go
@@ -171,7 +171,7 @@ func (q *queryServer) PacketCommitments(ctx context.Context, req *types.QueryPac
}
var commitments []*types.PacketState
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), hostv2.PacketCommitmentPrefixKey(req.ChannelId))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), hostv2.PacketCommitmentPrefixKey(req.ChannelId))
pageRes, err := query.Paginate(store, req.Pagination, func(key, value []byte) error {
keySplit := strings.Split(string(key), "/")
@@ -234,11 +234,11 @@ func (q *queryServer) PacketAcknowledgements(ctx context.Context, req *types.Que
}
if !q.HasChannel(ctx, req.ChannelId) {
- return nil, status.Error(codes.NotFound, errorsmod.Wrapf(types.ErrChannelNotFound, req.ChannelId).Error())
+ return nil, status.Error(codes.NotFound, errorsmod.Wrap(types.ErrChannelNotFound, req.ChannelId).Error())
}
var acks []*types.PacketState
- store := prefix.NewStore(runtime.KVStoreAdapter(q.storeService.OpenKVStore(ctx)), hostv2.PacketAcknowledgementPrefixKey(req.ChannelId))
+ store := prefix.NewStore(runtime.KVStoreAdapter(q.KVStoreService.OpenKVStore(ctx)), hostv2.PacketAcknowledgementPrefixKey(req.ChannelId))
// if a list of packet sequences is provided then query for each specific ack and return a list <= len(req.PacketCommitmentSequences)
// otherwise, maintain previous behaviour and perform paginated query
diff --git a/modules/core/04-channel/v2/keeper/keeper.go b/modules/core/04-channel/v2/keeper/keeper.go
index ebf512063b2..e9843f71bb3 100644
--- a/modules/core/04-channel/v2/keeper/keeper.go
+++ b/modules/core/04-channel/v2/keeper/keeper.go
@@ -4,7 +4,7 @@ import (
"context"
"fmt"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
"cosmossdk.io/log"
"cosmossdk.io/store/prefix"
storetypes "cosmossdk.io/store/types"
@@ -25,8 +25,9 @@ import (
// Keeper defines the channel keeper v2.
type Keeper struct {
+ appmodule.Environment
+
cdc codec.BinaryCodec
- storeService corestore.KVStoreService
ClientKeeper types.ClientKeeper
// channelKeeperV1 is used for channel aliasing only.
channelKeeperV1 *channelkeeperv1.Keeper
@@ -38,10 +39,16 @@ type Keeper struct {
}
// NewKeeper creates a new channel v2 keeper
-func NewKeeper(cdc codec.BinaryCodec, storeService corestore.KVStoreService, clientKeeper types.ClientKeeper, channelKeeperV1 *channelkeeperv1.Keeper, connectionKeeper *connectionkeeper.Keeper) *Keeper {
+func NewKeeper(
+ cdc codec.BinaryCodec,
+ env appmodule.Environment,
+ clientKeeper types.ClientKeeper,
+ channelKeeperV1 *channelkeeperv1.Keeper,
+ connectionKeeper *connectionkeeper.Keeper,
+) *Keeper {
return &Keeper{
+ Environment: env,
cdc: cdc,
- storeService: storeService,
channelKeeperV1: channelKeeperV1,
connectionKeeper: connectionKeeper,
ClientKeeper: clientKeeper,
@@ -57,13 +64,13 @@ func (Keeper) Logger(ctx context.Context) log.Logger {
// channelStore returns the KV store under which channels are stored.
func (k Keeper) channelStore(ctx context.Context) storetypes.KVStore {
channelPrefix := []byte(fmt.Sprintf("%s/", types.ChannelPrefix))
- return prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), channelPrefix)
+ return prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), channelPrefix)
}
// creatorStore returns the KV store under which creators are stored.
func (k Keeper) creatorStore(ctx context.Context) storetypes.KVStore {
creatorPrefix := []byte(fmt.Sprintf("%s/", types.CreatorPrefix))
- return prefix.NewStore(runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)), creatorPrefix)
+ return prefix.NewStore(runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)), creatorPrefix)
}
// SetChannel sets the Channel for a given channel identifier.
@@ -113,7 +120,7 @@ func (k *Keeper) DeleteCreator(ctx context.Context, channelID string) {
// GetPacketReceipt returns the packet receipt from the packet receipt path based on the channelID and sequence.
func (k *Keeper) GetPacketReceipt(ctx context.Context, channelID string, sequence uint64) ([]byte, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(hostv2.PacketReceiptKey(channelID, sequence))
if err != nil {
panic(err)
@@ -126,7 +133,7 @@ func (k *Keeper) GetPacketReceipt(ctx context.Context, channelID string, sequenc
// HasPacketReceipt returns true if the packet receipt exists, otherwise false.
func (k *Keeper) HasPacketReceipt(ctx context.Context, channelID string, sequence uint64) bool {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
has, err := store.Has(hostv2.PacketReceiptKey(channelID, sequence))
if err != nil {
panic(err)
@@ -138,7 +145,7 @@ func (k *Keeper) HasPacketReceipt(ctx context.Context, channelID string, sequenc
// SetPacketReceipt writes the packet receipt under the receipt path
// This is a public path that is standardized by the IBC V2 specification.
func (k *Keeper) SetPacketReceipt(ctx context.Context, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(hostv2.PacketReceiptKey(channelID, sequence), []byte{byte(2)}); err != nil {
panic(err)
}
@@ -146,7 +153,7 @@ func (k *Keeper) SetPacketReceipt(ctx context.Context, channelID string, sequenc
// GetPacketAcknowledgement fetches the packet acknowledgement from the store.
func (k *Keeper) GetPacketAcknowledgement(ctx context.Context, channelID string, sequence uint64) []byte {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(hostv2.PacketAcknowledgementKey(channelID, sequence))
if err != nil {
panic(err)
@@ -157,7 +164,7 @@ func (k *Keeper) GetPacketAcknowledgement(ctx context.Context, channelID string,
// SetPacketAcknowledgement writes the acknowledgement hash under the acknowledgement path
// This is a public path that is standardized by the IBC V2 specification.
func (k *Keeper) SetPacketAcknowledgement(ctx context.Context, channelID string, sequence uint64, ackHash []byte) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(hostv2.PacketAcknowledgementKey(channelID, sequence), ackHash); err != nil {
panic(err)
}
@@ -170,7 +177,7 @@ func (k *Keeper) HasPacketAcknowledgement(ctx context.Context, channelID string,
// GetPacketCommitment returns the packet commitment hash under the commitment path.
func (k *Keeper) GetPacketCommitment(ctx context.Context, channelID string, sequence uint64) []byte {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(hostv2.PacketCommitmentKey(channelID, sequence))
if err != nil {
panic(err)
@@ -183,7 +190,7 @@ func (k *Keeper) GetPacketCommitment(ctx context.Context, channelID string, sequ
// SetPacketCommitment writes the commitment hash under the commitment path.
func (k *Keeper) SetPacketCommitment(ctx context.Context, channelID string, sequence uint64, commitment []byte) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Set(hostv2.PacketCommitmentKey(channelID, sequence), commitment); err != nil {
panic(err)
}
@@ -191,7 +198,7 @@ func (k *Keeper) SetPacketCommitment(ctx context.Context, channelID string, sequ
// DeletePacketCommitment deletes the packet commitment hash under the commitment path.
func (k *Keeper) DeletePacketCommitment(ctx context.Context, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
if err := store.Delete(hostv2.PacketCommitmentKey(channelID, sequence)); err != nil {
panic(err)
}
@@ -199,7 +206,7 @@ func (k *Keeper) DeletePacketCommitment(ctx context.Context, channelID string, s
// GetNextSequenceSend returns the next send sequence from the sequence path
func (k *Keeper) GetNextSequenceSend(ctx context.Context, channelID string) (uint64, bool) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bz, err := store.Get(hostv2.NextSequenceSendKey(channelID))
if err != nil {
panic(err)
@@ -212,7 +219,7 @@ func (k *Keeper) GetNextSequenceSend(ctx context.Context, channelID string) (uin
// SetNextSequenceSend writes the next send sequence under the sequence path
func (k *Keeper) SetNextSequenceSend(ctx context.Context, channelID string, sequence uint64) {
- store := k.storeService.OpenKVStore(ctx)
+ store := k.KVStoreService.OpenKVStore(ctx)
bigEndianBz := sdk.Uint64ToBigEndian(sequence)
if err := store.Set(hostv2.NextSequenceSendKey(channelID), bigEndianBz); err != nil {
panic(err)
diff --git a/modules/core/04-channel/v2/types/codec.go b/modules/core/04-channel/v2/types/codec.go
index 788cdb30732..12124c4e841 100644
--- a/modules/core/04-channel/v2/types/codec.go
+++ b/modules/core/04-channel/v2/types/codec.go
@@ -1,13 +1,14 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ coreregistry "cosmossdk.io/core/registry"
+
sdk "github.com/cosmos/cosmos-sdk/types"
)
// RegisterInterfaces register the ibc channel submodule interfaces to protobuf
// Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*sdk.Msg)(nil),
&MsgCreateChannel{},
diff --git a/modules/core/05-port/keeper/keeper.go b/modules/core/05-port/keeper/keeper.go
index 41bce412efc..197c39b4746 100644
--- a/modules/core/05-port/keeper/keeper.go
+++ b/modules/core/05-port/keeper/keeper.go
@@ -1,16 +1,10 @@
package keeper
import (
- "context"
"strings"
- "cosmossdk.io/log"
-
- sdk "github.com/cosmos/cosmos-sdk/types"
-
"github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
"github.com/cosmos/ibc-go/v9/modules/core/api"
- "github.com/cosmos/ibc-go/v9/modules/core/exported"
)
// Keeper defines the IBC connection keeper
@@ -24,12 +18,6 @@ func NewKeeper() *Keeper {
return &Keeper{}
}
-// Logger returns a module-specific logger.
-func (Keeper) Logger(ctx context.Context) log.Logger {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return sdkCtx.Logger().With("module", "x/"+exported.ModuleName+"/"+types.SubModuleName)
-}
-
// Route returns a IBCModule for a given module, and a boolean indicating
// whether or not the route is present.
func (k *Keeper) Route(module string) (types.IBCModule, bool) {
diff --git a/modules/core/23-commitment/types/codec.go b/modules/core/23-commitment/types/codec.go
index 28a429d0f9f..53c8f85383e 100644
--- a/modules/core/23-commitment/types/codec.go
+++ b/modules/core/23-commitment/types/codec.go
@@ -1,14 +1,14 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ coreregistry "cosmossdk.io/core/registry"
- "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types/v2"
+ v2 "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types/v2"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
)
// RegisterInterfaces registers the commitment interfaces to protobuf Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterInterface(
"ibc.core.commitment.v1.Root",
(*exported.Root)(nil),
diff --git a/modules/core/23-commitment/types/codec_test.go b/modules/core/23-commitment/types/codec_test.go
index f9044bc9900..308787bcce7 100644
--- a/modules/core/23-commitment/types/codec_test.go
+++ b/modules/core/23-commitment/types/codec_test.go
@@ -3,12 +3,13 @@ package types_test
import (
"fmt"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
ibc "github.com/cosmos/ibc-go/v9/modules/core"
"github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types"
- "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types/v2"
+ v2 "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types/v2"
)
func (suite *MerkleTestSuite) TestCodecTypeRegistration() {
@@ -43,7 +44,7 @@ func (suite *MerkleTestSuite) TestCodecTypeRegistration() {
tc := tc
suite.Run(tc.name, func() {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(ibc.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, ibc.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expErr == nil {
diff --git a/modules/core/23-commitment/types/utils.go b/modules/core/23-commitment/types/utils.go
index 8c5416262d0..5fb9a34f057 100644
--- a/modules/core/23-commitment/types/utils.go
+++ b/modules/core/23-commitment/types/utils.go
@@ -5,7 +5,7 @@ import (
errorsmod "cosmossdk.io/errors"
- "github.com/cometbft/cometbft/proto/tendermint/crypto"
+ crypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1"
)
// ConvertProofs converts crypto.ProofOps into MerkleProof
diff --git a/modules/core/23-commitment/types/utils_test.go b/modules/core/23-commitment/types/utils_test.go
index 909f081430a..4446daae3d6 100644
--- a/modules/core/23-commitment/types/utils_test.go
+++ b/modules/core/23-commitment/types/utils_test.go
@@ -7,7 +7,7 @@ import (
storetypes "cosmossdk.io/store/types"
- "github.com/cometbft/cometbft/proto/tendermint/crypto"
+ crypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1"
"github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types"
)
diff --git a/modules/core/24-host/validate.go b/modules/core/24-host/validate.go
index 8802099abb9..fb83a83542c 100644
--- a/modules/core/24-host/validate.go
+++ b/modules/core/24-host/validate.go
@@ -36,7 +36,7 @@ var IsValidID = regexp.MustCompile(`^[a-zA-Z0-9\.\_\+\-\#\[\]\<\>]+$`).MatchStri
// ValidateFn function type to validate path and identifier bytestrings
type ValidateFn func(string) error
-func defaultIdentifierValidator(id string, min, max int) error {
+func defaultIdentifierValidator(id string, minLength, maxLength int) error {
if strings.TrimSpace(id) == "" {
return errorsmod.Wrap(ErrInvalidID, "identifier cannot be blank")
}
@@ -45,8 +45,8 @@ func defaultIdentifierValidator(id string, min, max int) error {
return errorsmod.Wrapf(ErrInvalidID, "identifier %s cannot contain separator '/'", id)
}
// valid id must fit the length requirements
- if len(id) < min || len(id) > max {
- return errorsmod.Wrapf(ErrInvalidID, "identifier %s has invalid length: %d, must be between %d-%d characters", id, len(id), min, max)
+ if len(id) < minLength || len(id) > maxLength {
+ return errorsmod.Wrapf(ErrInvalidID, "identifier %s has invalid length: %d, must be between %d-%d characters", id, len(id), minLength, maxLength)
}
// valid id must contain only alphanumeric characters and some allowed symbols.
if !IsValidID(id) {
@@ -87,7 +87,7 @@ func PortIdentifierValidator(id string) error {
return defaultIdentifierValidator(id, 2, DefaultMaxPortCharacterLength)
}
-// NewPathValidator takes in a Identifier Validator function and returns
+// NewPathValidator takes in an Identifier Validator function and returns
// a Path Validator function which requires path to consist of `/`-separated valid identifiers,
// where a valid identifier is between 1-64 characters, contains only alphanumeric and some allowed
// special characters (see IsValidID), and satisfies the custom `idValidator` function.
diff --git a/modules/core/ante/ante_test.go b/modules/core/ante/ante_test.go
index a7fd7062f5e..6e8472c6847 100644
--- a/modules/core/ante/ante_test.go
+++ b/modules/core/ante/ante_test.go
@@ -433,7 +433,7 @@ func (suite *AnteTestSuite) TestAnteDecoratorCheckTx() {
}
// append non packet and update message to msgs to ensure multimsg tx should pass
- msgs = append(msgs, &clienttypes.MsgSubmitMisbehaviour{}) //nolint:staticcheck // we're using the deprecated message for testing
+ msgs = append(msgs, &clienttypes.MsgSubmitMisbehaviour{Signer: ibctesting.TestAccAddress}) //nolint:staticcheck // we're using the deprecated message for testing
return msgs
},
nil,
@@ -511,7 +511,7 @@ func (suite *AnteTestSuite) TestAnteDecoratorCheckTx() {
clientMsg, err := codectypes.NewAnyWithValue(&ibctm.Header{})
suite.Require().NoError(err)
- msgs := []sdk.Msg{&clienttypes.MsgUpdateClient{ClientId: ibctesting.InvalidID, ClientMessage: clientMsg}}
+ msgs := []sdk.Msg{&clienttypes.MsgUpdateClient{ClientId: ibctesting.InvalidID, ClientMessage: clientMsg, Signer: ibctesting.TestAccAddress}}
return msgs
},
clienttypes.ErrClientNotActive,
@@ -522,7 +522,7 @@ func (suite *AnteTestSuite) TestAnteDecoratorCheckTx() {
clientMsg, err := codectypes.NewAnyWithValue(&ibctm.Header{})
suite.Require().NoError(err)
- msgs := []sdk.Msg{&clienttypes.MsgUpdateClient{ClientId: clienttypes.FormatClientIdentifier("08-wasm", 1), ClientMessage: clientMsg}}
+ msgs := []sdk.Msg{&clienttypes.MsgUpdateClient{ClientId: clienttypes.FormatClientIdentifier("08-wasm", 1), ClientMessage: clientMsg, Signer: ibctesting.TestAccAddress}}
return msgs
},
clienttypes.ErrClientNotActive,
@@ -533,7 +533,7 @@ func (suite *AnteTestSuite) TestAnteDecoratorCheckTx() {
clientMsg, err := codectypes.NewAnyWithValue(&ibctm.Header{TrustedHeight: clienttypes.NewHeight(1, 10000)})
suite.Require().NoError(err)
- msgs := []sdk.Msg{&clienttypes.MsgUpdateClient{ClientId: suite.path.EndpointA.ClientID, ClientMessage: clientMsg}}
+ msgs := []sdk.Msg{&clienttypes.MsgUpdateClient{ClientId: suite.path.EndpointA.ClientID, ClientMessage: clientMsg, Signer: ibctesting.TestAccAddress}}
return msgs
},
clienttypes.ErrConsensusStateNotFound,
@@ -573,7 +573,7 @@ func (suite *AnteTestSuite) TestAnteDecoratorCheckTx() {
return []sdk.Msg{
suite.createRecvPacketMessage(false),
- channeltypes.NewMsgRecvPacket(packet, []byte("proof"), clienttypes.NewHeight(1, 1), "signer"),
+ channeltypes.NewMsgRecvPacket(packet, []byte("proof"), clienttypes.NewHeight(1, 1), ibctesting.TestAccAddress),
}
},
commitmenttypes.ErrInvalidProof,
diff --git a/modules/core/client/query.go b/modules/core/client/query.go
index 815c81276f5..cb6da7ec275 100644
--- a/modules/core/client/query.go
+++ b/modules/core/client/query.go
@@ -7,7 +7,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
commitmenttypes "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types"
@@ -40,7 +40,7 @@ func QueryTendermintProof(clientCtx client.Context, key []byte) ([]byte, []byte,
height--
}
- req := abci.RequestQuery{
+ req := abci.QueryRequest{
Path: fmt.Sprintf("store/%s/key", ibcexported.StoreKey),
Height: height,
Data: key,
diff --git a/modules/core/genesis.go b/modules/core/genesis.go
index 972e1d3e723..ebe016ef56d 100644
--- a/modules/core/genesis.go
+++ b/modules/core/genesis.go
@@ -1,7 +1,7 @@
package ibc
import (
- sdk "github.com/cosmos/cosmos-sdk/types"
+ "context"
client "github.com/cosmos/ibc-go/v9/modules/core/02-client"
connection "github.com/cosmos/ibc-go/v9/modules/core/03-connection"
@@ -12,17 +12,24 @@ import (
// InitGenesis initializes the ibc state from a provided genesis
// state.
-func InitGenesis(ctx sdk.Context, k keeper.Keeper, gs *types.GenesisState) {
- client.InitGenesis(ctx, k.ClientKeeper, gs.ClientGenesis)
+func InitGenesis(ctx context.Context, k keeper.Keeper, gs *types.GenesisState) error {
+ if err := client.InitGenesis(ctx, k.ClientKeeper, gs.ClientGenesis); err != nil {
+ return err
+ }
connection.InitGenesis(ctx, k.ConnectionKeeper, gs.ConnectionGenesis)
channel.InitGenesis(ctx, k.ChannelKeeper, gs.ChannelGenesis)
+ return nil
}
// ExportGenesis returns the ibc exported genesis.
-func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState {
+func ExportGenesis(ctx context.Context, k keeper.Keeper) (*types.GenesisState, error) {
+ gs, err := client.ExportGenesis(ctx, k.ClientKeeper)
+ if err != nil {
+ return nil, err
+ }
return &types.GenesisState{
- ClientGenesis: client.ExportGenesis(ctx, k.ClientKeeper),
+ ClientGenesis: gs,
ConnectionGenesis: connection.ExportGenesis(ctx, k.ConnectionKeeper),
ChannelGenesis: channel.ExportGenesis(ctx, k.ChannelKeeper),
- }
+ }, nil
}
diff --git a/modules/core/genesis_test.go b/modules/core/genesis_test.go
index ea378605fd1..f3e5c71148b 100644
--- a/modules/core/genesis_test.go
+++ b/modules/core/genesis_test.go
@@ -314,9 +314,9 @@ func (suite *IBCTestSuite) TestInitGenesis() {
app := simapp.Setup(suite.T(), false)
- suite.NotPanics(func() {
- ibc.InitGenesis(app.BaseApp.NewContext(false), *app.IBCKeeper, tc.genState)
- })
+ err := ibc.InitGenesis(app.BaseApp.NewContext(false), *app.IBCKeeper, tc.genState)
+ suite.Require().NoError(err)
+
}
}
@@ -346,14 +346,14 @@ func (suite *IBCTestSuite) TestExportGenesis() {
tc.malleate()
var gs *types.GenesisState
- suite.NotPanics(func() {
- gs = ibc.ExportGenesis(suite.chainA.GetContext(), *suite.chainA.App.GetIBCKeeper())
- })
+
+ gs, err := ibc.ExportGenesis(suite.chainA.GetContext(), *suite.chainA.App.GetIBCKeeper())
+ suite.NoError(err)
// init genesis based on export
- suite.NotPanics(func() {
- ibc.InitGenesis(suite.chainA.GetContext(), *suite.chainA.App.GetIBCKeeper(), gs)
- })
+
+ err = ibc.InitGenesis(suite.chainA.GetContext(), *suite.chainA.App.GetIBCKeeper(), gs)
+ suite.Require().NoError(err)
suite.NotPanics(func() {
cdc := codec.NewProtoCodec(suite.chainA.GetSimApp().InterfaceRegistry())
@@ -362,9 +362,9 @@ func (suite *IBCTestSuite) TestExportGenesis() {
})
// init genesis based on marshal and unmarshal
- suite.NotPanics(func() {
- ibc.InitGenesis(suite.chainA.GetContext(), *suite.chainA.App.GetIBCKeeper(), gs)
- })
+
+ err = ibc.InitGenesis(suite.chainA.GetContext(), *suite.chainA.App.GetIBCKeeper(), gs)
+ suite.Require().NoError(err)
})
}
}
diff --git a/modules/core/keeper/keeper.go b/modules/core/keeper/keeper.go
index 7f5831d18b9..69a6e1f7631 100644
--- a/modules/core/keeper/keeper.go
+++ b/modules/core/keeper/keeper.go
@@ -5,7 +5,7 @@ import (
"reflect"
"strings"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
"github.com/cosmos/cosmos-sdk/codec"
@@ -22,6 +22,8 @@ import (
// Keeper defines each ICS keeper for IBC
type Keeper struct {
+ appmodule.Environment
+
ClientKeeper *clientkeeper.Keeper
ConnectionKeeper *connectionkeeper.Keeper
ChannelKeeper *channelkeeper.Keeper
@@ -35,7 +37,7 @@ type Keeper struct {
// NewKeeper creates a new ibc Keeper
func NewKeeper(
- cdc codec.BinaryCodec, storeService corestore.KVStoreService, paramSpace types.ParamSubspace,
+ cdc codec.BinaryCodec, env appmodule.Environment, paramSpace types.ParamSubspace,
upgradeKeeper clienttypes.UpgradeKeeper, authority string,
) *Keeper {
// panic if any of the keepers passed in is empty
@@ -47,13 +49,14 @@ func NewKeeper(
panic(errors.New("authority must be non-empty"))
}
- clientKeeper := clientkeeper.NewKeeper(cdc, storeService, paramSpace, upgradeKeeper)
- connectionKeeper := connectionkeeper.NewKeeper(cdc, storeService, paramSpace, clientKeeper)
+ clientKeeper := clientkeeper.NewKeeper(cdc, env, paramSpace, upgradeKeeper)
+ connectionKeeper := connectionkeeper.NewKeeper(cdc, env, paramSpace, clientKeeper)
portKeeper := portkeeper.NewKeeper()
- channelKeeper := channelkeeper.NewKeeper(cdc, storeService, clientKeeper, connectionKeeper)
- channelKeeperV2 := channelkeeperv2.NewKeeper(cdc, storeService, clientKeeper, channelKeeper, connectionKeeper)
+ channelKeeper := channelkeeper.NewKeeper(cdc, env, clientKeeper, connectionKeeper)
+ channelKeeperV2 := channelkeeperv2.NewKeeper(cdc, env, clientKeeper, channelKeeper, connectionKeeper)
return &Keeper{
+ Environment: env,
cdc: cdc,
ClientKeeper: clientKeeper,
ConnectionKeeper: connectionKeeper,
diff --git a/modules/core/keeper/keeper_test.go b/modules/core/keeper/keeper_test.go
index 77d11f82c70..fa4e01238c3 100644
--- a/modules/core/keeper/keeper_test.go
+++ b/modules/core/keeper/keeper_test.go
@@ -5,6 +5,7 @@ import (
testifysuite "github.com/stretchr/testify/suite"
+ "cosmossdk.io/log"
upgradekeeper "cosmossdk.io/x/upgrade/keeper"
"github.com/cosmos/cosmos-sdk/runtime"
@@ -75,7 +76,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() {
newIBCKeeperFn = func() {
ibckeeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(ibcexported.ModuleName),
upgradeKeeper,
"", // authority
@@ -95,7 +96,7 @@ func (suite *KeeperTestSuite) TestNewKeeper() {
newIBCKeeperFn = func() {
ibckeeper.NewKeeper(
suite.chainA.GetSimApp().AppCodec(),
- runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)),
+ runtime.NewEnvironment(runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), log.NewNopLogger()),
suite.chainA.GetSimApp().GetSubspace(ibcexported.ModuleName),
upgradeKeeper,
suite.chainA.App.GetIBCKeeper().GetAuthority(),
diff --git a/modules/core/keeper/msg_server.go b/modules/core/keeper/msg_server.go
index 396f89b5e9b..e99b58d3b9c 100644
--- a/modules/core/keeper/msg_server.go
+++ b/modules/core/keeper/msg_server.go
@@ -10,7 +10,6 @@ import (
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
- "github.com/cosmos/ibc-go/v9/modules/core/04-channel/keeper"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
ibcerrors "github.com/cosmos/ibc-go/v9/modules/core/errors"
@@ -30,9 +29,7 @@ var (
// of the light client module to unmarshal and interpret the proto encoded bytes.
// Backwards compatibility with older versions of ibc-go is maintained through the light client module reconstructing and encoding
// the expected concrete type to the protobuf.Any for proof verification.
-func (k *Keeper) CreateClient(goCtx context.Context, msg *clienttypes.MsgCreateClient) (*clienttypes.MsgCreateClientResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) CreateClient(ctx context.Context, msg *clienttypes.MsgCreateClient) (*clienttypes.MsgCreateClientResponse, error) {
clientState, err := clienttypes.UnpackClientState(msg.ClientState)
if err != nil {
return nil, err
@@ -47,9 +44,7 @@ func (k *Keeper) CreateClient(goCtx context.Context, msg *clienttypes.MsgCreateC
}
// UpdateClient defines a rpc handler method for MsgUpdateClient.
-func (k *Keeper) UpdateClient(goCtx context.Context, msg *clienttypes.MsgUpdateClient) (*clienttypes.MsgUpdateClientResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) UpdateClient(ctx context.Context, msg *clienttypes.MsgUpdateClient) (*clienttypes.MsgUpdateClientResponse, error) {
clientMsg, err := clienttypes.UnpackClientMessage(msg.ClientMessage)
if err != nil {
return nil, err
@@ -68,11 +63,10 @@ func (k *Keeper) UpdateClient(goCtx context.Context, msg *clienttypes.MsgUpdateC
// of the light client module to unmarshal and interpret the proto encoded bytes.
// Backwards compatibility with older versions of ibc-go is maintained through the light client module reconstructing and encoding
// the expected concrete type to the protobuf.Any for proof verification.
-func (k *Keeper) UpgradeClient(goCtx context.Context, msg *clienttypes.MsgUpgradeClient) (*clienttypes.MsgUpgradeClientResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) UpgradeClient(ctx context.Context, msg *clienttypes.MsgUpgradeClient) (*clienttypes.MsgUpgradeClientResponse, error) {
if err := k.ClientKeeper.UpgradeClient(
- ctx, msg.ClientId,
+ ctx,
+ msg.ClientId,
msg.ClientState.Value,
msg.ConsensusState.Value,
msg.ProofUpgradeClient,
@@ -87,9 +81,7 @@ func (k *Keeper) UpgradeClient(goCtx context.Context, msg *clienttypes.MsgUpgrad
// SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour.
// Warning: DEPRECATED
// This handler is redundant as `MsgUpdateClient` is now capable of handling both a Header and a Misbehaviour
-func (k *Keeper) SubmitMisbehaviour(goCtx context.Context, msg *clienttypes.MsgSubmitMisbehaviour) (*clienttypes.MsgSubmitMisbehaviourResponse, error) { //nolint:staticcheck // for now, we're using msgsubmitmisbehaviour.
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) SubmitMisbehaviour(ctx context.Context, msg *clienttypes.MsgSubmitMisbehaviour) (*clienttypes.MsgSubmitMisbehaviourResponse, error) { //nolint:staticcheck // for now, we're using msgsubmitmisbehaviour.
misbehaviour, err := clienttypes.UnpackClientMessage(msg.Misbehaviour)
if err != nil {
return nil, err
@@ -103,12 +95,11 @@ func (k *Keeper) SubmitMisbehaviour(goCtx context.Context, msg *clienttypes.MsgS
}
// RecoverClient defines a rpc handler method for MsgRecoverClient.
-func (k *Keeper) RecoverClient(goCtx context.Context, msg *clienttypes.MsgRecoverClient) (*clienttypes.MsgRecoverClientResponse, error) {
+func (k *Keeper) RecoverClient(ctx context.Context, msg *clienttypes.MsgRecoverClient) (*clienttypes.MsgRecoverClientResponse, error) {
if k.GetAuthority() != msg.Signer {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Signer)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
if err := k.ClientKeeper.RecoverClient(ctx, msg.SubjectClientId, msg.SubstituteClientId); err != nil {
return nil, errorsmod.Wrap(err, "client recovery failed")
}
@@ -117,18 +108,17 @@ func (k *Keeper) RecoverClient(goCtx context.Context, msg *clienttypes.MsgRecove
}
// IBCSoftwareUpgrade defines a rpc handler method for MsgIBCSoftwareUpgrade.
-func (k *Keeper) IBCSoftwareUpgrade(goCtx context.Context, msg *clienttypes.MsgIBCSoftwareUpgrade) (*clienttypes.MsgIBCSoftwareUpgradeResponse, error) {
+func (k *Keeper) IBCSoftwareUpgrade(ctx context.Context, msg *clienttypes.MsgIBCSoftwareUpgrade) (*clienttypes.MsgIBCSoftwareUpgradeResponse, error) {
if k.GetAuthority() != msg.Signer {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Signer)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
upgradedClientState, err := clienttypes.UnpackClientState(msg.UpgradedClientState)
if err != nil {
return nil, errorsmod.Wrapf(clienttypes.ErrInvalidClientType, "cannot unpack client state: %s", err)
}
- if err = k.ClientKeeper.ScheduleIBCSoftwareUpgrade(ctx, msg.Plan, upgradedClientState); err != nil {
+ if err := k.ClientKeeper.ScheduleIBCSoftwareUpgrade(ctx, msg.Plan, upgradedClientState); err != nil {
return nil, errorsmod.Wrap(err, "failed to schedule upgrade")
}
@@ -136,9 +126,7 @@ func (k *Keeper) IBCSoftwareUpgrade(goCtx context.Context, msg *clienttypes.MsgI
}
// ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit.
-func (k *Keeper) ConnectionOpenInit(goCtx context.Context, msg *connectiontypes.MsgConnectionOpenInit) (*connectiontypes.MsgConnectionOpenInitResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ConnectionOpenInit(ctx context.Context, msg *connectiontypes.MsgConnectionOpenInit) (*connectiontypes.MsgConnectionOpenInitResponse, error) {
if _, err := k.ConnectionKeeper.ConnOpenInit(ctx, msg.ClientId, msg.Counterparty, msg.Version, msg.DelayPeriod); err != nil {
return nil, errorsmod.Wrap(err, "connection handshake open init failed")
}
@@ -147,9 +135,7 @@ func (k *Keeper) ConnectionOpenInit(goCtx context.Context, msg *connectiontypes.
}
// ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.
-func (k *Keeper) ConnectionOpenTry(goCtx context.Context, msg *connectiontypes.MsgConnectionOpenTry) (*connectiontypes.MsgConnectionOpenTryResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ConnectionOpenTry(ctx context.Context, msg *connectiontypes.MsgConnectionOpenTry) (*connectiontypes.MsgConnectionOpenTryResponse, error) {
if _, err := k.ConnectionKeeper.ConnOpenTry(
ctx, msg.Counterparty, msg.DelayPeriod, msg.ClientId,
msg.CounterpartyVersions, msg.ProofInit, msg.ProofHeight,
@@ -161,9 +147,7 @@ func (k *Keeper) ConnectionOpenTry(goCtx context.Context, msg *connectiontypes.M
}
// ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.
-func (k *Keeper) ConnectionOpenAck(goCtx context.Context, msg *connectiontypes.MsgConnectionOpenAck) (*connectiontypes.MsgConnectionOpenAckResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ConnectionOpenAck(ctx context.Context, msg *connectiontypes.MsgConnectionOpenAck) (*connectiontypes.MsgConnectionOpenAckResponse, error) {
if err := k.ConnectionKeeper.ConnOpenAck(
ctx, msg.ConnectionId, msg.Version, msg.CounterpartyConnectionId,
msg.ProofTry, msg.ProofHeight,
@@ -175,9 +159,7 @@ func (k *Keeper) ConnectionOpenAck(goCtx context.Context, msg *connectiontypes.M
}
// ConnectionOpenConfirm defines a rpc handler method for MsgConnectionOpenConfirm.
-func (k *Keeper) ConnectionOpenConfirm(goCtx context.Context, msg *connectiontypes.MsgConnectionOpenConfirm) (*connectiontypes.MsgConnectionOpenConfirmResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ConnectionOpenConfirm(ctx context.Context, msg *connectiontypes.MsgConnectionOpenConfirm) (*connectiontypes.MsgConnectionOpenConfirmResponse, error) {
if err := k.ConnectionKeeper.ConnOpenConfirm(
ctx, msg.ConnectionId, msg.ProofAck, msg.ProofHeight,
); err != nil {
@@ -190,13 +172,11 @@ func (k *Keeper) ConnectionOpenConfirm(goCtx context.Context, msg *connectiontyp
// ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.
// ChannelOpenInit will perform 04-channel checks, route to the application
// callback, and write an OpenInit channel into state upon successful execution.
-func (k *Keeper) ChannelOpenInit(goCtx context.Context, msg *channeltypes.MsgChannelOpenInit) (*channeltypes.MsgChannelOpenInitResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelOpenInit(ctx context.Context, msg *channeltypes.MsgChannelOpenInit) (*channeltypes.MsgChannelOpenInitResponse, error) {
// Retrieve application callbacks from router
cbs, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel open init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel open init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
@@ -205,21 +185,21 @@ func (k *Keeper) ChannelOpenInit(goCtx context.Context, msg *channeltypes.MsgCha
ctx, msg.Channel.Ordering, msg.Channel.ConnectionHops, msg.PortId, msg.Channel.Counterparty, msg.Channel.Version,
)
if err != nil {
- ctx.Logger().Error("channel open init failed", "error", errorsmod.Wrap(err, "channel handshake open init failed"))
+ k.Logger.Error("channel open init failed", "error", errorsmod.Wrap(err, "channel handshake open init failed"))
return nil, errorsmod.Wrap(err, "channel handshake open init failed")
}
// Perform application logic callback
version, err := cbs.OnChanOpenInit(ctx, msg.Channel.Ordering, msg.Channel.ConnectionHops, msg.PortId, channelID, msg.Channel.Counterparty, msg.Channel.Version)
if err != nil {
- ctx.Logger().Error("channel open init failed", "port-id", msg.PortId, "channel-id", channelID, "error", errorsmod.Wrap(err, "channel open init callback failed"))
+ k.Logger.Error("channel open init failed", "port-id", msg.PortId, "channel-id", channelID, "error", errorsmod.Wrap(err, "channel open init callback failed"))
return nil, errorsmod.Wrapf(err, "channel open init callback failed for port ID: %s, channel ID: %s", msg.PortId, channelID)
}
// Write channel into state
k.ChannelKeeper.WriteOpenInitChannel(ctx, msg.PortId, channelID, msg.Channel.Ordering, msg.Channel.ConnectionHops, msg.Channel.Counterparty, version)
- ctx.Logger().Info("channel open init succeeded", "channel-id", channelID, "version", version)
+ k.Logger.Info("channel open init succeeded", "channel-id", channelID, "version", version)
return &channeltypes.MsgChannelOpenInitResponse{
ChannelId: channelID,
@@ -230,34 +210,32 @@ func (k *Keeper) ChannelOpenInit(goCtx context.Context, msg *channeltypes.MsgCha
// ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.
// ChannelOpenTry will perform 04-channel checks, route to the application
// callback, and write an OpenTry channel into state upon successful execution.
-func (k *Keeper) ChannelOpenTry(goCtx context.Context, msg *channeltypes.MsgChannelOpenTry) (*channeltypes.MsgChannelOpenTryResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelOpenTry(ctx context.Context, msg *channeltypes.MsgChannelOpenTry) (*channeltypes.MsgChannelOpenTryResponse, error) {
// Retrieve application callbacks from router
cbs, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel open try failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel open try failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
// Perform 04-channel verification
channelID, err := k.ChannelKeeper.ChanOpenTry(ctx, msg.Channel.Ordering, msg.Channel.ConnectionHops, msg.PortId, msg.Channel.Counterparty, msg.CounterpartyVersion, msg.ProofInit, msg.ProofHeight)
if err != nil {
- ctx.Logger().Error("channel open try failed", "error", errorsmod.Wrap(err, "channel handshake open try failed"))
+ k.Logger.Error("channel open try failed", "error", errorsmod.Wrap(err, "channel handshake open try failed"))
return nil, errorsmod.Wrap(err, "channel handshake open try failed")
}
// Perform application logic callback
version, err := cbs.OnChanOpenTry(ctx, msg.Channel.Ordering, msg.Channel.ConnectionHops, msg.PortId, channelID, msg.Channel.Counterparty, msg.CounterpartyVersion)
if err != nil {
- ctx.Logger().Error("channel open try failed", "port-id", msg.PortId, "channel-id", channelID, "error", errorsmod.Wrap(err, "channel open try callback failed"))
+ k.Logger.Error("channel open try failed", "port-id", msg.PortId, "channel-id", channelID, "error", errorsmod.Wrap(err, "channel open try callback failed"))
return nil, errorsmod.Wrapf(err, "channel open try callback failed for port ID: %s, channel ID: %s", msg.PortId, channelID)
}
// Write channel into state
k.ChannelKeeper.WriteOpenTryChannel(ctx, msg.PortId, channelID, msg.Channel.Ordering, msg.Channel.ConnectionHops, msg.Channel.Counterparty, version)
- ctx.Logger().Info("channel open try succeeded", "channel-id", channelID, "port-id", msg.PortId, "version", version)
+ k.Logger.Info("channel open try succeeded", "channel-id", channelID, "port-id", msg.PortId, "version", version)
return &channeltypes.MsgChannelOpenTryResponse{
ChannelId: channelID,
@@ -268,13 +246,11 @@ func (k *Keeper) ChannelOpenTry(goCtx context.Context, msg *channeltypes.MsgChan
// ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.
// ChannelOpenAck will perform 04-channel checks, route to the application
// callback, and write an OpenAck channel into state upon successful execution.
-func (k *Keeper) ChannelOpenAck(goCtx context.Context, msg *channeltypes.MsgChannelOpenAck) (*channeltypes.MsgChannelOpenAckResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelOpenAck(ctx context.Context, msg *channeltypes.MsgChannelOpenAck) (*channeltypes.MsgChannelOpenAckResponse, error) {
// Retrieve application callbacks from router
cbs, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel open ack failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel open ack failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
@@ -282,7 +258,7 @@ func (k *Keeper) ChannelOpenAck(goCtx context.Context, msg *channeltypes.MsgChan
if err := k.ChannelKeeper.ChanOpenAck(
ctx, msg.PortId, msg.ChannelId, msg.CounterpartyVersion, msg.CounterpartyChannelId, msg.ProofTry, msg.ProofHeight,
); err != nil {
- ctx.Logger().Error("channel open ack failed", "error", err.Error())
+ k.Logger.Error("channel open ack failed", "error", err.Error())
return nil, errorsmod.Wrap(err, "channel handshake open ack failed")
}
@@ -291,11 +267,11 @@ func (k *Keeper) ChannelOpenAck(goCtx context.Context, msg *channeltypes.MsgChan
// Perform application logic callback
if err := cbs.OnChanOpenAck(ctx, msg.PortId, msg.ChannelId, msg.CounterpartyChannelId, msg.CounterpartyVersion); err != nil {
- ctx.Logger().Error("channel open ack failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel open ack callback failed"))
+ k.Logger.Error("channel open ack failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel open ack callback failed"))
return nil, errorsmod.Wrapf(err, "channel open ack callback failed for port ID: %s, channel ID: %s", msg.PortId, msg.ChannelId)
}
- ctx.Logger().Info("channel open ack succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
+ k.Logger.Info("channel open ack succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
return &channeltypes.MsgChannelOpenAckResponse{}, nil
}
@@ -303,19 +279,17 @@ func (k *Keeper) ChannelOpenAck(goCtx context.Context, msg *channeltypes.MsgChan
// ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.
// ChannelOpenConfirm will perform 04-channel checks, route to the application
// callback, and write an OpenConfirm channel into state upon successful execution.
-func (k *Keeper) ChannelOpenConfirm(goCtx context.Context, msg *channeltypes.MsgChannelOpenConfirm) (*channeltypes.MsgChannelOpenConfirmResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelOpenConfirm(ctx context.Context, msg *channeltypes.MsgChannelOpenConfirm) (*channeltypes.MsgChannelOpenConfirmResponse, error) {
// Retrieve application callbacks from router
cbs, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel open confirm failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel open confirm failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
// Perform 04-channel verification
if err := k.ChannelKeeper.ChanOpenConfirm(ctx, msg.PortId, msg.ChannelId, msg.ProofAck, msg.ProofHeight); err != nil {
- ctx.Logger().Error("channel open confirm failed", "error", errorsmod.Wrap(err, "channel handshake open confirm failed"))
+ k.Logger.Error("channel open confirm failed", "error", errorsmod.Wrap(err, "channel handshake open confirm failed"))
return nil, errorsmod.Wrap(err, "channel handshake open confirm failed")
}
@@ -324,65 +298,61 @@ func (k *Keeper) ChannelOpenConfirm(goCtx context.Context, msg *channeltypes.Msg
// Perform application logic callback
if err := cbs.OnChanOpenConfirm(ctx, msg.PortId, msg.ChannelId); err != nil {
- ctx.Logger().Error("channel open confirm failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel open confirm callback failed"))
+ k.Logger.Error("channel open confirm failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel open confirm callback failed"))
return nil, errorsmod.Wrapf(err, "channel open confirm callback failed for port ID: %s, channel ID: %s", msg.PortId, msg.ChannelId)
}
- ctx.Logger().Info("channel open confirm succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
+ k.Logger.Info("channel open confirm succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
return &channeltypes.MsgChannelOpenConfirmResponse{}, nil
}
// ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.
-func (k *Keeper) ChannelCloseInit(goCtx context.Context, msg *channeltypes.MsgChannelCloseInit) (*channeltypes.MsgChannelCloseInitResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelCloseInit(ctx context.Context, msg *channeltypes.MsgChannelCloseInit) (*channeltypes.MsgChannelCloseInitResponse, error) {
// Retrieve callbacks from router
cbs, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel close init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel close init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
if err := cbs.OnChanCloseInit(ctx, msg.PortId, msg.ChannelId); err != nil {
- ctx.Logger().Error("channel close init failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel close init callback failed"))
+ k.Logger.Error("channel close init failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel close init callback failed"))
return nil, errorsmod.Wrapf(err, "channel close init callback failed for port ID: %s, channel ID: %s", msg.PortId, msg.ChannelId)
}
err := k.ChannelKeeper.ChanCloseInit(ctx, msg.PortId, msg.ChannelId)
if err != nil {
- ctx.Logger().Error("channel close init failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
+ k.Logger.Error("channel close init failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
return nil, errorsmod.Wrap(err, "channel handshake close init failed")
}
- ctx.Logger().Info("channel close init succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
+ k.Logger.Info("channel close init succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
return &channeltypes.MsgChannelCloseInitResponse{}, nil
}
// ChannelCloseConfirm defines a rpc handler method for MsgChannelCloseConfirm.
-func (k *Keeper) ChannelCloseConfirm(goCtx context.Context, msg *channeltypes.MsgChannelCloseConfirm) (*channeltypes.MsgChannelCloseConfirmResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelCloseConfirm(ctx context.Context, msg *channeltypes.MsgChannelCloseConfirm) (*channeltypes.MsgChannelCloseConfirmResponse, error) {
// Retrieve callbacks from router
cbs, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel close confirm failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel close confirm failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
if err := cbs.OnChanCloseConfirm(ctx, msg.PortId, msg.ChannelId); err != nil {
- ctx.Logger().Error("channel close confirm failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel close confirm callback failed"))
+ k.Logger.Error("channel close confirm failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", errorsmod.Wrap(err, "channel close confirm callback failed"))
return nil, errorsmod.Wrapf(err, "channel close confirm callback failed for port ID: %s, channel ID: %s", msg.PortId, msg.ChannelId)
}
err := k.ChannelKeeper.ChanCloseConfirm(ctx, msg.PortId, msg.ChannelId, msg.ProofInit, msg.ProofHeight, msg.CounterpartyUpgradeSequence)
if err != nil {
- ctx.Logger().Error("channel close confirm failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
+ k.Logger.Error("channel close confirm failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
return nil, errorsmod.Wrap(err, "channel handshake close confirm failed")
}
- ctx.Logger().Info("channel close confirm succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
+ k.Logger.Info("channel close confirm succeeded", "channel-id", msg.ChannelId, "port-id", msg.PortId)
return &channeltypes.MsgChannelCloseConfirmResponse{}, nil
}
@@ -393,14 +363,14 @@ func (k *Keeper) RecvPacket(goCtx context.Context, msg *channeltypes.MsgRecvPack
relayer, err := sdk.AccAddressFromBech32(msg.Signer)
if err != nil {
- ctx.Logger().Error("receive packet failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
+ k.Logger.Error("receive packet failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
return nil, errorsmod.Wrap(err, "Invalid address for msg Signer")
}
// Retrieve callbacks from router
cbs, ok := k.PortKeeper.Route(msg.Packet.DestinationPort)
if !ok {
- ctx.Logger().Error("receive packet failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.DestinationPort))
+ k.Logger.Error("receive packet failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.DestinationPort))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.DestinationPort)
}
@@ -416,10 +386,10 @@ func (k *Keeper) RecvPacket(goCtx context.Context, msg *channeltypes.MsgRecvPack
writeFn()
case channeltypes.ErrNoOpMsg:
// no-ops do not need event emission as they will be ignored
- ctx.Logger().Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
+ k.Logger.Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
return &channeltypes.MsgRecvPacketResponse{Result: channeltypes.NOOP}, nil
default:
- ctx.Logger().Error("receive packet failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "receive packet verification failed"))
+ k.Logger.Error("receive packet failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "receive packet verification failed"))
return nil, errorsmod.Wrap(err, "receive packet verification failed")
}
@@ -447,93 +417,98 @@ func (k *Keeper) RecvPacket(goCtx context.Context, msg *channeltypes.MsgRecvPack
defer telemetry.ReportRecvPacket(msg.Packet)
- ctx.Logger().Info("receive packet callback succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
+ k.Logger.Info("receive packet callback succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
return &channeltypes.MsgRecvPacketResponse{Result: channeltypes.SUCCESS}, nil
}
// Timeout defines a rpc handler method for MsgTimeout.
-func (k *Keeper) Timeout(goCtx context.Context, msg *channeltypes.MsgTimeout) (*channeltypes.MsgTimeoutResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) Timeout(ctx context.Context, msg *channeltypes.MsgTimeout) (*channeltypes.MsgTimeoutResponse, error) {
relayer, err := sdk.AccAddressFromBech32(msg.Signer)
if err != nil {
- ctx.Logger().Error("timeout failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
+ k.Logger.Error("timeout failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
return nil, errorsmod.Wrap(err, "Invalid address for msg Signer")
}
// Retrieve callbacks from router
cbs, ok := k.PortKeeper.Route(msg.Packet.SourcePort)
if !ok {
- ctx.Logger().Error("timeout failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort))
+ k.Logger.Error("timeout failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort)
}
- // Perform TAO verification
- //
- // If the timeout was already received, perform a no-op
- // Use a cached context to prevent accidental state changes
- cacheCtx, writeFn := ctx.CacheContext()
- channelVersion, err := k.ChannelKeeper.TimeoutPacket(cacheCtx, msg.Packet, msg.ProofUnreceived, msg.ProofHeight, msg.NextSequenceRecv)
+ var channelVersion string
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ // Perform TAO verification
+ //
+ // If the timeout was already received, perform a no-op
+ // Use a branched multistore to prevent accidental state changes
+ channelVersion, err = k.ChannelKeeper.TimeoutPacket(ctx, msg.Packet, msg.ProofUnreceived, msg.ProofHeight, msg.NextSequenceRecv)
+ if err != nil {
+ return err
+ }
- switch err {
- case nil:
- writeFn()
- case channeltypes.ErrNoOpMsg:
- // no-ops do not need event emission as they will be ignored
- ctx.Logger().Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
- return &channeltypes.MsgTimeoutResponse{Result: channeltypes.NOOP}, nil
- default:
- ctx.Logger().Error("timeout failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout packet verification failed"))
+ return nil
+ }); err != nil {
+ if errors.Is(err, channeltypes.ErrNoOpMsg) {
+ // no-ops do not need event emission as they will be ignored
+ k.Logger.Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
+ return &channeltypes.MsgTimeoutResponse{Result: channeltypes.NOOP}, nil
+ }
+
+ k.Logger.Error("timeout failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout packet verification failed"))
return nil, errorsmod.Wrap(err, "timeout packet verification failed")
}
- // Perform application logic callback
- err = cbs.OnTimeoutPacket(ctx, channelVersion, msg.Packet, relayer)
- if err != nil {
- ctx.Logger().Error("timeout failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout packet callback failed"))
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ // Perform application logic callback
+ return cbs.OnTimeoutPacket(ctx, channelVersion, msg.Packet, relayer)
+ }); err != nil {
+ k.Logger.Error("timeout failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout packet callback failed"))
return nil, errorsmod.Wrap(err, "timeout packet callback failed")
}
defer telemetry.ReportTimeoutPacket(msg.Packet, "height")
- ctx.Logger().Info("timeout packet callback succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
+ k.Logger.Info("timeout packet callback succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
return &channeltypes.MsgTimeoutResponse{Result: channeltypes.SUCCESS}, nil
}
// TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.
-func (k *Keeper) TimeoutOnClose(goCtx context.Context, msg *channeltypes.MsgTimeoutOnClose) (*channeltypes.MsgTimeoutOnCloseResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) TimeoutOnClose(ctx context.Context, msg *channeltypes.MsgTimeoutOnClose) (*channeltypes.MsgTimeoutOnCloseResponse, error) {
relayer, err := sdk.AccAddressFromBech32(msg.Signer)
if err != nil {
- ctx.Logger().Error("timeout on close failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
+ k.Logger.Error("timeout on close failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
return nil, errorsmod.Wrap(err, "Invalid address for msg Signer")
}
cbs, ok := k.PortKeeper.Route(msg.Packet.SourcePort)
if !ok {
- ctx.Logger().Error("timeout on close failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort))
+ k.Logger.Error("timeout on close failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort)
}
- // Perform TAO verification
- //
- // If the timeout was already received, perform a no-op
- // Use a cached context to prevent accidental state changes
- cacheCtx, writeFn := ctx.CacheContext()
- channelVersion, err := k.ChannelKeeper.TimeoutOnClose(cacheCtx, msg.Packet, msg.ProofUnreceived, msg.ProofClose, msg.ProofHeight, msg.NextSequenceRecv, msg.CounterpartyUpgradeSequence)
+ var channelVersion string
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ // Perform TAO verification
+ //
+ // If the timeout was already received, perform a no-op
+ // Use a branched multistore to prevent accidental state changes
+ channelVersion, err = k.ChannelKeeper.TimeoutOnClose(ctx, msg.Packet, msg.ProofUnreceived, msg.ProofClose, msg.ProofHeight, msg.NextSequenceRecv, msg.CounterpartyUpgradeSequence)
+ if err != nil {
+ return err
+ }
- switch err {
- case nil:
- writeFn()
- case channeltypes.ErrNoOpMsg:
- // no-ops do not need event emission as they will be ignored
- ctx.Logger().Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
- return &channeltypes.MsgTimeoutOnCloseResponse{Result: channeltypes.NOOP}, nil
- default:
- ctx.Logger().Error("timeout on close failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout on close packet verification failed"))
+ return nil
+ }); err != nil {
+ if errors.Is(err, channeltypes.ErrNoOpMsg) {
+ // no-ops do not need event emission as they will be ignored
+ k.Logger.Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
+ return &channeltypes.MsgTimeoutOnCloseResponse{Result: channeltypes.NOOP}, nil
+ }
+
+ k.Logger.Error("timeout on close failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout on close packet verification failed"))
return nil, errorsmod.Wrap(err, "timeout on close packet verification failed")
}
@@ -543,63 +518,65 @@ func (k *Keeper) TimeoutOnClose(goCtx context.Context, msg *channeltypes.MsgTime
// application logic callback.
err = cbs.OnTimeoutPacket(ctx, channelVersion, msg.Packet, relayer)
if err != nil {
- ctx.Logger().Error("timeout on close failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout on close callback failed"))
+ k.Logger.Error("timeout on close failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "timeout on close callback failed"))
return nil, errorsmod.Wrap(err, "timeout on close callback failed")
}
defer telemetry.ReportTimeoutPacket(msg.Packet, "channel-closed")
- ctx.Logger().Info("timeout on close callback succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
+ k.Logger.Info("timeout on close callback succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
return &channeltypes.MsgTimeoutOnCloseResponse{Result: channeltypes.SUCCESS}, nil
}
// Acknowledgement defines a rpc handler method for MsgAcknowledgement.
-func (k *Keeper) Acknowledgement(goCtx context.Context, msg *channeltypes.MsgAcknowledgement) (*channeltypes.MsgAcknowledgementResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) Acknowledgement(ctx context.Context, msg *channeltypes.MsgAcknowledgement) (*channeltypes.MsgAcknowledgementResponse, error) {
relayer, err := sdk.AccAddressFromBech32(msg.Signer)
if err != nil {
- ctx.Logger().Error("acknowledgement failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
+ k.Logger.Error("acknowledgement failed", "error", errorsmod.Wrap(err, "Invalid address for msg Signer"))
return nil, errorsmod.Wrap(err, "Invalid address for msg Signer")
}
// Retrieve callbacks from router
cbs, ok := k.PortKeeper.Route(msg.Packet.SourcePort)
if !ok {
- ctx.Logger().Error("acknowledgement failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort))
+ k.Logger.Error("acknowledgement failed", "port-id", msg.Packet.SourcePort, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.Packet.SourcePort)
}
- // Perform TAO verification
- //
- // If the acknowledgement was already received, perform a no-op
- // Use a cached context to prevent accidental state changes
- cacheCtx, writeFn := ctx.CacheContext()
- channelVersion, err := k.ChannelKeeper.AcknowledgePacket(cacheCtx, msg.Packet, msg.Acknowledgement, msg.ProofAcked, msg.ProofHeight)
+ var channelVersion string
+ if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
+ // Perform TAO verification
+ //
+ // If the acknowledgement was already received, perform a no-op
+ // Use a branched multistore to prevent accidental state changes
+ channelVersion, err = k.ChannelKeeper.AcknowledgePacket(ctx, msg.Packet, msg.Acknowledgement, msg.ProofAcked, msg.ProofHeight)
+ if err != nil {
+ return err
+ }
- switch err {
- case nil:
- writeFn()
- case channeltypes.ErrNoOpMsg:
- // no-ops do not need event emission as they will be ignored
- ctx.Logger().Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
- return &channeltypes.MsgAcknowledgementResponse{Result: channeltypes.NOOP}, nil
- default:
- ctx.Logger().Error("acknowledgement failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "acknowledge packet verification failed"))
+ return nil
+ }); err != nil {
+ if errors.Is(err, channeltypes.ErrNoOpMsg) {
+ // no-ops do not need event emission as they will be ignored
+ k.Logger.Debug("no-op on redundant relay", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel)
+ return &channeltypes.MsgAcknowledgementResponse{Result: channeltypes.NOOP}, nil
+ }
+
+ k.Logger.Error("acknowledgement failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "acknowledge packet verification failed"))
return nil, errorsmod.Wrap(err, "acknowledge packet verification failed")
}
// Perform application logic callback
err = cbs.OnAcknowledgementPacket(ctx, channelVersion, msg.Packet, msg.Acknowledgement, relayer)
if err != nil {
- ctx.Logger().Error("acknowledgement failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "acknowledge packet callback failed"))
+ k.Logger.Error("acknowledgement failed", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "error", errorsmod.Wrap(err, "acknowledge packet callback failed"))
return nil, errorsmod.Wrap(err, "acknowledge packet callback failed")
}
defer telemetry.ReportAcknowledgePacket(msg.Packet)
- ctx.Logger().Info("acknowledgement succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
+ k.Logger.Info("acknowledgement succeeded", "port-id", msg.Packet.SourcePort, "channel-id", msg.Packet.SourceChannel, "result", channeltypes.SUCCESS.String())
return &channeltypes.MsgAcknowledgementResponse{Result: channeltypes.SUCCESS}, nil
}
@@ -614,19 +591,19 @@ func (k *Keeper) ChannelUpgradeInit(goCtx context.Context, msg *channeltypes.Msg
app, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel upgrade init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel upgrade init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
cbs, ok := app.(porttypes.UpgradableModule)
if !ok {
- ctx.Logger().Error("channel upgrade init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel upgrade init failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId)
}
upgrade, err := k.ChannelKeeper.ChanUpgradeInit(ctx, msg.PortId, msg.ChannelId, msg.Fields)
if err != nil {
- ctx.Logger().Error("channel upgrade init failed", "error", errorsmod.Wrap(err, "channel upgrade init failed"))
+ k.Logger.Error("channel upgrade init failed", "error", errorsmod.Wrap(err, "channel upgrade init failed"))
return nil, errorsmod.Wrap(err, "channel upgrade init failed")
}
@@ -635,14 +612,16 @@ func (k *Keeper) ChannelUpgradeInit(goCtx context.Context, msg *channeltypes.Msg
cacheCtx, _ := ctx.CacheContext()
upgradeVersion, err := cbs.OnChanUpgradeInit(cacheCtx, msg.PortId, msg.ChannelId, upgrade.Fields.Ordering, upgrade.Fields.ConnectionHops, upgrade.Fields.Version)
if err != nil {
- ctx.Logger().Error("channel upgrade init callback failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
+ k.Logger.Error("channel upgrade init callback failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
return nil, errorsmod.Wrapf(err, "channel upgrade init callback failed for port ID: %s, channel ID: %s", msg.PortId, msg.ChannelId)
}
channel, upgrade := k.ChannelKeeper.WriteUpgradeInitChannel(ctx, msg.PortId, msg.ChannelId, upgrade, upgradeVersion)
- ctx.Logger().Info("channel upgrade init succeeded", "channel-id", msg.ChannelId, "version", upgradeVersion)
- keeper.EmitChannelUpgradeInitEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade)
+ k.Logger.Info("channel upgrade init succeeded", "channel-id", msg.ChannelId, "version", upgradeVersion)
+ if err := k.ChannelKeeper.EmitChannelUpgradeInitEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
return &channeltypes.MsgChannelUpgradeInitResponse{
Upgrade: upgrade,
@@ -656,19 +635,19 @@ func (k *Keeper) ChannelUpgradeTry(goCtx context.Context, msg *channeltypes.MsgC
app, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
- ctx.Logger().Error("channel upgrade try failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel upgrade try failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
}
cbs, ok := app.(porttypes.UpgradableModule)
if !ok {
- ctx.Logger().Error("channel upgrade try failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId))
+ k.Logger.Error("channel upgrade try failed", "port-id", msg.PortId, "error", errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId))
return nil, errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId)
}
channel, upgrade, err := k.ChannelKeeper.ChanUpgradeTry(ctx, msg.PortId, msg.ChannelId, msg.ProposedUpgradeConnectionHops, msg.CounterpartyUpgradeFields, msg.CounterpartyUpgradeSequence, msg.ProofChannel, msg.ProofUpgrade, msg.ProofHeight)
if err != nil {
- ctx.Logger().Error("channel upgrade try failed", "error", errorsmod.Wrap(err, "channel upgrade try failed"))
+ k.Logger.Error("channel upgrade try failed", "error", errorsmod.Wrap(err, "channel upgrade try failed"))
if channeltypes.IsUpgradeError(err) {
// In case the error is a wrapped upgrade error, we need to extract the inner error else process as normal
var upgradeErr *channeltypes.UpgradeError
@@ -689,14 +668,16 @@ func (k *Keeper) ChannelUpgradeTry(goCtx context.Context, msg *channeltypes.MsgC
cacheCtx, _ := ctx.CacheContext()
upgradeVersion, err := cbs.OnChanUpgradeTry(cacheCtx, msg.PortId, msg.ChannelId, upgrade.Fields.Ordering, upgrade.Fields.ConnectionHops, upgrade.Fields.Version)
if err != nil {
- ctx.Logger().Error("channel upgrade try callback failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
+ k.Logger.Error("channel upgrade try callback failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
return nil, errorsmod.Wrapf(err, "channel upgrade try callback failed for port ID: %s, channel ID: %s", msg.PortId, msg.ChannelId)
}
channel, upgrade = k.ChannelKeeper.WriteUpgradeTryChannel(ctx, msg.PortId, msg.ChannelId, upgrade, upgradeVersion)
- ctx.Logger().Info("channel upgrade try succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
- keeper.EmitChannelUpgradeTryEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade)
+ k.Logger.Info("channel upgrade try succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
+ if err := k.ChannelKeeper.EmitChannelUpgradeTryEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
return &channeltypes.MsgChannelUpgradeTryResponse{
Result: channeltypes.SUCCESS,
@@ -712,20 +693,20 @@ func (k *Keeper) ChannelUpgradeAck(goCtx context.Context, msg *channeltypes.MsgC
app, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
err := errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
- ctx.Logger().Error("channel upgrade ack failed", "port-id", msg.PortId, "error", err)
+ k.Logger.Error("channel upgrade ack failed", "port-id", msg.PortId, "error", err)
return nil, err
}
cbs, ok := app.(porttypes.UpgradableModule)
if !ok {
err := errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId)
- ctx.Logger().Error("channel upgrade ack failed", "port-id", msg.PortId, "error", err)
+ k.Logger.Error("channel upgrade ack failed", "port-id", msg.PortId, "error", err)
return nil, err
}
err := k.ChannelKeeper.ChanUpgradeAck(ctx, msg.PortId, msg.ChannelId, msg.CounterpartyUpgrade, msg.ProofChannel, msg.ProofUpgrade, msg.ProofHeight)
if err != nil {
- ctx.Logger().Error("channel upgrade ack failed", "error", errorsmod.Wrap(err, "channel upgrade ack failed"))
+ k.Logger.Error("channel upgrade ack failed", "error", errorsmod.Wrap(err, "channel upgrade ack failed"))
if channeltypes.IsUpgradeError(err) {
k.ChannelKeeper.MustAbortUpgrade(ctx, msg.PortId, msg.ChannelId, err)
@@ -748,7 +729,7 @@ func (k *Keeper) ChannelUpgradeAck(goCtx context.Context, msg *channeltypes.MsgC
return nil, errorsmod.Wrapf(channeltypes.ErrChannelNotFound, "channel not found for port ID (%s) channel ID (%s)", msg.PortId, msg.ChannelId)
}
- ctx.Logger().Error("channel upgrade ack callback failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
+ k.Logger.Error("channel upgrade ack callback failed", "port-id", msg.PortId, "channel-id", msg.ChannelId, "error", err.Error())
// explicitly wrap the application callback in an upgrade error with the correct upgrade sequence.
// this prevents any errors caused from the application returning an UpgradeError with an incorrect sequence.
@@ -759,33 +740,33 @@ func (k *Keeper) ChannelUpgradeAck(goCtx context.Context, msg *channeltypes.MsgC
channel, upgrade := k.ChannelKeeper.WriteUpgradeAckChannel(ctx, msg.PortId, msg.ChannelId, msg.CounterpartyUpgrade)
- ctx.Logger().Info("channel upgrade ack succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
- keeper.EmitChannelUpgradeAckEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade)
+ k.Logger.Info("channel upgrade ack succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
+ if err := k.ChannelKeeper.EmitChannelUpgradeAckEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
return &channeltypes.MsgChannelUpgradeAckResponse{Result: channeltypes.SUCCESS}, nil
}
// ChannelUpgradeConfirm defines a rpc handler method for MsgChannelUpgradeConfirm.
-func (k *Keeper) ChannelUpgradeConfirm(goCtx context.Context, msg *channeltypes.MsgChannelUpgradeConfirm) (*channeltypes.MsgChannelUpgradeConfirmResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelUpgradeConfirm(ctx context.Context, msg *channeltypes.MsgChannelUpgradeConfirm) (*channeltypes.MsgChannelUpgradeConfirmResponse, error) {
app, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
err := errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
- ctx.Logger().Error("channel upgrade confirm failed", "port-id", msg.PortId, "error", err)
+ k.Logger.Error("channel upgrade confirm failed", "port-id", msg.PortId, "error", err)
return nil, err
}
cbs, ok := app.(porttypes.UpgradableModule)
if !ok {
err := errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId)
- ctx.Logger().Error("channel upgrade confirm failed", "port-id", msg.PortId, "error", err)
+ k.Logger.Error("channel upgrade confirm failed", "port-id", msg.PortId, "error", err)
return nil, err
}
err := k.ChannelKeeper.ChanUpgradeConfirm(ctx, msg.PortId, msg.ChannelId, msg.CounterpartyChannelState, msg.CounterpartyUpgrade, msg.ProofChannel, msg.ProofUpgrade, msg.ProofHeight)
if err != nil {
- ctx.Logger().Error("channel upgrade confirm failed", "error", errorsmod.Wrap(err, "channel upgrade confirm failed"))
+ k.Logger.Error("channel upgrade confirm failed", "error", errorsmod.Wrap(err, "channel upgrade confirm failed"))
if channeltypes.IsUpgradeError(err) {
k.ChannelKeeper.MustAbortUpgrade(ctx, msg.PortId, msg.ChannelId, err)
@@ -799,8 +780,10 @@ func (k *Keeper) ChannelUpgradeConfirm(goCtx context.Context, msg *channeltypes.
}
channel := k.ChannelKeeper.WriteUpgradeConfirmChannel(ctx, msg.PortId, msg.ChannelId, msg.CounterpartyUpgrade)
- ctx.Logger().Info("channel upgrade confirm succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
- keeper.EmitChannelUpgradeConfirmEvent(ctx, msg.PortId, msg.ChannelId, channel)
+ k.Logger.Info("channel upgrade confirm succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
+ if err := k.ChannelKeeper.EmitChannelUpgradeConfirmEvent(ctx, msg.PortId, msg.ChannelId, channel); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
// Move channel to OPEN state if both chains have finished flushing in-flight packets.
// Counterparty channel state has been verified in ChanUpgradeConfirm.
@@ -813,33 +796,33 @@ func (k *Keeper) ChannelUpgradeConfirm(goCtx context.Context, msg *channeltypes.
cbs.OnChanUpgradeOpen(ctx, msg.PortId, msg.ChannelId, upgrade.Fields.Ordering, upgrade.Fields.ConnectionHops, upgrade.Fields.Version)
channel := k.ChannelKeeper.WriteUpgradeOpenChannel(ctx, msg.PortId, msg.ChannelId)
- ctx.Logger().Info("channel upgrade open succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
- keeper.EmitChannelUpgradeOpenEvent(ctx, msg.PortId, msg.ChannelId, channel)
+ k.Logger.Info("channel upgrade open succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
+ if err := k.ChannelKeeper.EmitChannelUpgradeOpenEvent(ctx, msg.PortId, msg.ChannelId, channel); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
}
return &channeltypes.MsgChannelUpgradeConfirmResponse{Result: channeltypes.SUCCESS}, nil
}
// ChannelUpgradeOpen defines a rpc handler method for MsgChannelUpgradeOpen.
-func (k *Keeper) ChannelUpgradeOpen(goCtx context.Context, msg *channeltypes.MsgChannelUpgradeOpen) (*channeltypes.MsgChannelUpgradeOpenResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelUpgradeOpen(ctx context.Context, msg *channeltypes.MsgChannelUpgradeOpen) (*channeltypes.MsgChannelUpgradeOpenResponse, error) {
app, ok := k.PortKeeper.Route(msg.PortId)
if !ok {
err := errorsmod.Wrapf(porttypes.ErrInvalidRoute, "route not found to portID: %s", msg.PortId)
- ctx.Logger().Error("channel upgrade open failed", "port-id", msg.PortId, "error", err)
+ k.Logger.Error("channel upgrade open failed", "port-id", msg.PortId, "error", err)
return nil, err
}
cbs, ok := app.(porttypes.UpgradableModule)
if !ok {
err := errorsmod.Wrapf(porttypes.ErrInvalidRoute, "upgrade route not found to portID: %s", msg.PortId)
- ctx.Logger().Error("channel upgrade open failed", "port-id", msg.PortId, "error", err)
+ k.Logger.Error("channel upgrade open failed", "port-id", msg.PortId, "error", err)
return nil, err
}
if err := k.ChannelKeeper.ChanUpgradeOpen(ctx, msg.PortId, msg.ChannelId, msg.CounterpartyChannelState, msg.CounterpartyUpgradeSequence, msg.ProofChannel, msg.ProofHeight); err != nil {
- ctx.Logger().Error("channel upgrade open failed", "error", errorsmod.Wrap(err, "channel upgrade open failed"))
+ k.Logger.Error("channel upgrade open failed", "error", errorsmod.Wrap(err, "channel upgrade open failed"))
return nil, errorsmod.Wrap(err, "channel upgrade open failed")
}
@@ -851,32 +834,32 @@ func (k *Keeper) ChannelUpgradeOpen(goCtx context.Context, msg *channeltypes.Msg
cbs.OnChanUpgradeOpen(ctx, msg.PortId, msg.ChannelId, upgrade.Fields.Ordering, upgrade.Fields.ConnectionHops, upgrade.Fields.Version)
channel := k.ChannelKeeper.WriteUpgradeOpenChannel(ctx, msg.PortId, msg.ChannelId)
- ctx.Logger().Info("channel upgrade open succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
- keeper.EmitChannelUpgradeOpenEvent(ctx, msg.PortId, msg.ChannelId, channel)
+ k.Logger.Info("channel upgrade open succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
+ if err := k.ChannelKeeper.EmitChannelUpgradeOpenEvent(ctx, msg.PortId, msg.ChannelId, channel); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
return &channeltypes.MsgChannelUpgradeOpenResponse{}, nil
}
// ChannelUpgradeTimeout defines a rpc handler method for MsgChannelUpgradeTimeout.
-func (k *Keeper) ChannelUpgradeTimeout(goCtx context.Context, msg *channeltypes.MsgChannelUpgradeTimeout) (*channeltypes.MsgChannelUpgradeTimeoutResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelUpgradeTimeout(ctx context.Context, msg *channeltypes.MsgChannelUpgradeTimeout) (*channeltypes.MsgChannelUpgradeTimeoutResponse, error) {
if err := k.ChannelKeeper.ChanUpgradeTimeout(ctx, msg.PortId, msg.ChannelId, msg.CounterpartyChannel, msg.ProofChannel, msg.ProofHeight); err != nil {
return nil, errorsmod.Wrapf(err, "could not timeout upgrade for channel: %s", msg.ChannelId)
}
channel, upgrade := k.ChannelKeeper.WriteUpgradeTimeoutChannel(ctx, msg.PortId, msg.ChannelId)
- ctx.Logger().Info("channel upgrade timeout callback succeeded: portID %s, channelID %s", msg.PortId, msg.ChannelId)
- keeper.EmitChannelUpgradeTimeoutEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade)
+ k.Logger.Info("channel upgrade timeout callback succeeded: portID %s, channelID %s", msg.PortId, msg.ChannelId)
+ if err := k.ChannelKeeper.EmitChannelUpgradeTimeoutEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
return &channeltypes.MsgChannelUpgradeTimeoutResponse{}, nil
}
// ChannelUpgradeCancel defines a rpc handler method for MsgChannelUpgradeCancel.
-func (k *Keeper) ChannelUpgradeCancel(goCtx context.Context, msg *channeltypes.MsgChannelUpgradeCancel) (*channeltypes.MsgChannelUpgradeCancelResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) ChannelUpgradeCancel(ctx context.Context, msg *channeltypes.MsgChannelUpgradeCancel) (*channeltypes.MsgChannelUpgradeCancelResponse, error) {
channel, found := k.ChannelKeeper.GetChannel(ctx, msg.PortId, msg.ChannelId)
if !found {
return nil, errorsmod.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", msg.PortId, msg.ChannelId)
@@ -893,15 +876,17 @@ func (k *Keeper) ChannelUpgradeCancel(goCtx context.Context, msg *channeltypes.M
k.ChannelKeeper.WriteUpgradeCancelChannel(ctx, msg.PortId, msg.ChannelId, channel.UpgradeSequence)
- ctx.Logger().Info("channel upgrade cancel succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
+ k.Logger.Info("channel upgrade cancel succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
- keeper.EmitChannelUpgradeCancelEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade)
+ if err := k.ChannelKeeper.EmitChannelUpgradeCancelEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
return &channeltypes.MsgChannelUpgradeCancelResponse{}, nil
}
if err := k.ChannelKeeper.ChanUpgradeCancel(ctx, msg.PortId, msg.ChannelId, msg.ErrorReceipt, msg.ProofErrorReceipt, msg.ProofHeight); err != nil {
- ctx.Logger().Error("channel upgrade cancel failed", "port-id", msg.PortId, "error", err.Error())
+ k.Logger.Error("channel upgrade cancel failed", "port-id", msg.PortId, "error", err.Error())
return nil, errorsmod.Wrap(err, "channel upgrade cancel failed")
}
@@ -913,22 +898,23 @@ func (k *Keeper) ChannelUpgradeCancel(goCtx context.Context, msg *channeltypes.M
k.ChannelKeeper.WriteUpgradeCancelChannel(ctx, msg.PortId, msg.ChannelId, msg.ErrorReceipt.Sequence)
- ctx.Logger().Info("channel upgrade cancel succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
+ k.Logger.Info("channel upgrade cancel succeeded", "port-id", msg.PortId, "channel-id", msg.ChannelId)
// get channel here again to get latest state after write
channel, found = k.ChannelKeeper.GetChannel(ctx, msg.PortId, msg.ChannelId)
if !found {
return nil, errorsmod.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", msg.PortId, msg.ChannelId)
}
- keeper.EmitChannelUpgradeCancelEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade)
+
+ if err := k.ChannelKeeper.EmitChannelUpgradeCancelEvent(ctx, msg.PortId, msg.ChannelId, channel, upgrade); err != nil {
+ return nil, errorsmod.Wrap(err, "event emission failed")
+ }
return &channeltypes.MsgChannelUpgradeCancelResponse{}, nil
}
// PruneAcknowledgements defines a rpc handler method for MsgPruneAcknowledgements.
-func (k *Keeper) PruneAcknowledgements(goCtx context.Context, msg *channeltypes.MsgPruneAcknowledgements) (*channeltypes.MsgPruneAcknowledgementsResponse, error) {
- ctx := sdk.UnwrapSDKContext(goCtx)
-
+func (k *Keeper) PruneAcknowledgements(ctx context.Context, msg *channeltypes.MsgPruneAcknowledgements) (*channeltypes.MsgPruneAcknowledgementsResponse, error) {
pruned, remaining, err := k.ChannelKeeper.PruneAcknowledgements(ctx, msg.PortId, msg.ChannelId, msg.Limit)
if err != nil {
return nil, err
@@ -941,36 +927,33 @@ func (k *Keeper) PruneAcknowledgements(goCtx context.Context, msg *channeltypes.
}
// UpdateClientParams defines a rpc handler method for MsgUpdateParams.
-func (k *Keeper) UpdateClientParams(goCtx context.Context, msg *clienttypes.MsgUpdateParams) (*clienttypes.MsgUpdateParamsResponse, error) {
+func (k *Keeper) UpdateClientParams(ctx context.Context, msg *clienttypes.MsgUpdateParams) (*clienttypes.MsgUpdateParamsResponse, error) {
if k.GetAuthority() != msg.Signer {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Signer)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
k.ClientKeeper.SetParams(ctx, msg.Params)
return &clienttypes.MsgUpdateParamsResponse{}, nil
}
// UpdateConnectionParams defines a rpc handler method for MsgUpdateParams for the 03-connection submodule.
-func (k *Keeper) UpdateConnectionParams(goCtx context.Context, msg *connectiontypes.MsgUpdateParams) (*connectiontypes.MsgUpdateParamsResponse, error) {
+func (k *Keeper) UpdateConnectionParams(ctx context.Context, msg *connectiontypes.MsgUpdateParams) (*connectiontypes.MsgUpdateParamsResponse, error) {
if k.GetAuthority() != msg.Signer {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Signer)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
k.ConnectionKeeper.SetParams(ctx, msg.Params)
return &connectiontypes.MsgUpdateParamsResponse{}, nil
}
// UpdateChannelParams defines a rpc handler method for MsgUpdateParams.
-func (k *Keeper) UpdateChannelParams(goCtx context.Context, msg *channeltypes.MsgUpdateParams) (*channeltypes.MsgUpdateParamsResponse, error) {
+func (k *Keeper) UpdateChannelParams(ctx context.Context, msg *channeltypes.MsgUpdateParams) (*channeltypes.MsgUpdateParamsResponse, error) {
if k.GetAuthority() != msg.Authority {
return nil, errorsmod.Wrapf(ibcerrors.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Authority)
}
- ctx := sdk.UnwrapSDKContext(goCtx)
k.ChannelKeeper.SetParams(ctx, msg.Params)
return &channeltypes.MsgUpdateParamsResponse{}, nil
diff --git a/modules/core/keeper/msg_server_test.go b/modules/core/keeper/msg_server_test.go
index 2c9c5045719..83f444f1c7d 100644
--- a/modules/core/keeper/msg_server_test.go
+++ b/modules/core/keeper/msg_server_test.go
@@ -10,7 +10,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
@@ -277,8 +277,7 @@ func (suite *KeeperTestSuite) TestRecoverClient() {
_, err = suite.chainA.App.GetIBCKeeper().RecoverClient(suite.chainA.GetContext(), msg)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
// Assert that client status is now Active
@@ -1005,12 +1004,13 @@ func (suite *KeeperTestSuite) TestChannelUpgradeInit() {
)
suite.chainA.GetSimApp().IBCMockModule.IBCApp.OnChanUpgradeInit = func(ctx context.Context, portID, channelID string, order channeltypes.Order, connectionHops []string, version string) (string, error) {
- storeKey := suite.chainA.GetSimApp().GetKey(exported.ModuleName)
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- store := sdkCtx.KVStore(storeKey)
- store.Set(ibcmock.TestKey, ibcmock.TestValue)
+ store := suite.chainA.GetSimApp().GetIBCKeeper().KVStoreService.OpenKVStore(ctx)
+ err := store.Set(ibcmock.TestKey, ibcmock.TestValue)
+ suite.Require().NoError(err)
- sdkCtx.EventManager().EmitEvent(sdk.NewEvent(ibcmock.MockEventType))
+ eventService := suite.chainA.GetSimApp().GetIBCKeeper().EventService
+ err = eventService.EventManager(ctx).EmitKV(ibcmock.MockEventType)
+ suite.Require().NoError(err)
return ibcmock.UpgradeVersion, nil
}
},
@@ -1153,12 +1153,13 @@ func (suite *KeeperTestSuite) TestChannelUpgradeTry() {
"ibc application does not commit state changes in callback",
func() {
suite.chainA.GetSimApp().IBCMockModule.IBCApp.OnChanUpgradeTry = func(ctx context.Context, portID, channelID string, order channeltypes.Order, connectionHops []string, counterpartyVersion string) (string, error) {
- storeKey := suite.chainA.GetSimApp().GetKey(exported.ModuleName)
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- store := sdkCtx.KVStore(storeKey)
- store.Set(ibcmock.TestKey, ibcmock.TestValue)
+ store := suite.chainA.GetSimApp().GetIBCKeeper().KVStoreService.OpenKVStore(ctx)
+ err := store.Set(ibcmock.TestKey, ibcmock.TestValue)
+ suite.Require().NoError(err)
- sdkCtx.EventManager().EmitEvent(sdk.NewEvent(ibcmock.MockEventType))
+ eventService := suite.chainA.GetSimApp().GetIBCKeeper().EventService
+ err = eventService.EventManager(ctx).EmitKV(ibcmock.MockEventType)
+ suite.Require().NoError(err)
return ibcmock.UpgradeVersion, nil
}
},
@@ -1361,9 +1362,9 @@ func (suite *KeeperTestSuite) TestChannelUpgradeAck() {
ctx context.Context, portID, channelID, counterpartyVersion string,
) error {
// set arbitrary value in store to mock application state changes
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- store := sdkCtx.KVStore(suite.chainA.GetSimApp().GetKey(exported.ModuleName))
- store.Set([]byte("foo"), []byte("bar"))
+ store := suite.chainA.GetSimApp().GetIBCKeeper().KVStoreService.OpenKVStore(ctx)
+ err := store.Set(ibcmock.TestKey, ibcmock.TestValue)
+ suite.Require().NoError(err)
return fmt.Errorf("mock app callback failed")
}
},
@@ -1435,12 +1436,13 @@ func (suite *KeeperTestSuite) TestChannelUpgradeAck() {
"ibc application does not commit state changes in callback",
func() {
suite.chainA.GetSimApp().IBCMockModule.IBCApp.OnChanUpgradeAck = func(ctx context.Context, portID, channelID, counterpartyVersion string) error {
- storeKey := suite.chainA.GetSimApp().GetKey(exported.ModuleName)
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- store := sdkCtx.KVStore(storeKey)
- store.Set(ibcmock.TestKey, ibcmock.TestValue)
+ store := suite.chainA.GetSimApp().GetIBCKeeper().KVStoreService.OpenKVStore(ctx)
+ err := store.Set(ibcmock.TestKey, ibcmock.TestValue)
+ suite.Require().NoError(err)
- sdkCtx.EventManager().EmitEvent(sdk.NewEvent(ibcmock.MockEventType))
+ eventService := suite.chainA.GetSimApp().GetIBCKeeper().EventService
+ err = eventService.EventManager(ctx).EmitKV(ibcmock.MockEventType)
+ suite.Require().NoError(err)
return nil
}
},
@@ -2525,7 +2527,7 @@ func (suite *KeeperTestSuite) TestIBCSoftwareUpgrade() {
suite.Require().NoError(err)
suite.Require().Equal(clientState.ZeroCustomFields(), upgradedClientState)
} else {
- suite.Require().True(errors.Is(err, tc.expError))
+ suite.Require().ErrorIs(err, tc.expError)
}
})
}
@@ -2675,8 +2677,7 @@ func (suite *KeeperTestSuite) TestUpdateChannelParams() {
suite.Run(tc.name, func() {
suite.SetupTest()
resp, err := suite.chainA.App.GetIBCKeeper().UpdateChannelParams(suite.chainA.GetContext(), tc.msg)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotNil(resp)
p := suite.chainA.App.GetIBCKeeper().ChannelKeeper.GetParams(suite.chainA.GetContext())
diff --git a/modules/core/migrations/v7/genesis.go b/modules/core/migrations/v7/genesis.go
index dccc918f75b..be707411940 100644
--- a/modules/core/migrations/v7/genesis.go
+++ b/modules/core/migrations/v7/genesis.go
@@ -14,7 +14,7 @@ import (
// - Update solo machine client state protobuf definition (v2 to v3)
// - Remove all solo machine consensus states
// - Remove any localhost clients
-func MigrateGenesis(appState genutiltypes.AppMap, cdc codec.ProtoCodecMarshaler) (genutiltypes.AppMap, error) {
+func MigrateGenesis(appState genutiltypes.AppMap, cdc codec.Codec) (genutiltypes.AppMap, error) {
if appState[ibcexported.ModuleName] == nil {
return appState, nil
}
diff --git a/modules/core/migrations/v7/genesis_test.go b/modules/core/migrations/v7/genesis_test.go
index 57ceb04973f..fd5d6add051 100644
--- a/modules/core/migrations/v7/genesis_test.go
+++ b/modules/core/migrations/v7/genesis_test.go
@@ -15,7 +15,7 @@ import (
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
host "github.com/cosmos/ibc-go/v9/modules/core/24-host"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
- "github.com/cosmos/ibc-go/v9/modules/core/migrations/v7"
+ v7 "github.com/cosmos/ibc-go/v9/modules/core/migrations/v7"
"github.com/cosmos/ibc-go/v9/modules/core/types"
ibctesting "github.com/cosmos/ibc-go/v9/testing"
)
@@ -62,7 +62,8 @@ func (suite *MigrationsV7TestSuite) TestMigrateGenesisSolomachine() {
solomachine := ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, ibctesting.DefaultSolomachineClientID, "testing", 1)
solomachineMulti := ibctesting.NewSolomachine(suite.T(), suite.chainA.Codec, "06-solomachine-1", "testing", 4)
- clientGenState := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
+ clientGenState, err := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
+ suite.Require().NoError(err)
// manually generate old proto buf definitions and set in genesis
// NOTE: we cannot use 'ExportGenesis' for the solo machines since we are
@@ -135,9 +136,10 @@ func (suite *MigrationsV7TestSuite) TestMigrateGenesisSolomachine() {
// migrate store get expected genesis
// store migration and genesis migration should produce identical results
// NOTE: tendermint clients are not pruned in genesis so the test should not have expired tendermint clients
- err := clientv7.MigrateStore(suite.chainA.GetContext(), runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), suite.chainA.App.AppCodec(), suite.chainA.GetSimApp().IBCKeeper.ClientKeeper)
+ err = clientv7.MigrateStore(suite.chainA.GetContext(), runtime.NewKVStoreService(suite.chainA.GetSimApp().GetKey(ibcexported.StoreKey)), suite.chainA.App.AppCodec(), suite.chainA.GetSimApp().IBCKeeper.ClientKeeper)
+ suite.Require().NoError(err)
+ expectedClientGenState, err := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
suite.Require().NoError(err)
- expectedClientGenState := ibcclient.ExportGenesis(suite.chainA.GetContext(), suite.chainA.App.GetIBCKeeper().ClientKeeper)
cdc, ok := suite.chainA.App.AppCodec().(*codec.ProtoCodec)
suite.Require().True(ok)
diff --git a/modules/core/module.go b/modules/core/module.go
index 32e2589d075..e330c99043e 100644
--- a/modules/core/module.go
+++ b/modules/core/module.go
@@ -9,10 +9,10 @@ import (
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
@@ -34,23 +34,32 @@ import (
)
var (
- _ module.AppModule = (*AppModule)(nil)
- _ module.AppModuleBasic = (*AppModuleBasic)(nil)
- _ module.AppModuleSimulation = (*AppModule)(nil)
- _ module.HasGenesis = (*AppModule)(nil)
- _ module.HasName = (*AppModule)(nil)
- _ module.HasConsensusVersion = (*AppModule)(nil)
- _ module.HasServices = (*AppModule)(nil)
- _ module.HasProposalMsgs = (*AppModule)(nil)
- _ appmodule.AppModule = (*AppModule)(nil)
- _ appmodule.HasBeginBlocker = (*AppModule)(nil)
+ _ module.AppModule = (*AppModule)(nil)
+ _ module.AppModuleBasic = (*AppModule)(nil)
+ _ module.AppModuleSimulation = (*AppModule)(nil)
+ _ module.HasGenesis = (*AppModule)(nil)
+ _ appmodule.HasConsensusVersion = (*AppModule)(nil)
+ _ module.HasServices = (*AppModule)(nil)
+ _ appmodule.AppModule = (*AppModule)(nil)
+ _ appmodule.HasBeginBlocker = (*AppModule)(nil)
)
-// AppModuleBasic defines the basic application module used by the ibc module.
-type AppModuleBasic struct{}
+// AppModule implements an application module for the ibc module.
+type AppModule struct {
+ cdc codec.Codec
+ keeper *keeper.Keeper
+}
+
+// NewAppModule creates a new AppModule object
+func NewAppModule(cdc codec.Codec, k *keeper.Keeper) AppModule {
+ return AppModule{
+ cdc: cdc,
+ keeper: k,
+ }
+}
// Name returns the ibc module's name.
-func (AppModuleBasic) Name() string {
+func (AppModule) Name() string {
return exported.ModuleName
}
@@ -61,18 +70,18 @@ func (AppModule) IsOnePerModuleType() {}
func (AppModule) IsAppModule() {}
// RegisterLegacyAminoCodec does nothing. IBC does not support amino.
-func (AppModuleBasic) RegisterLegacyAminoCodec(*codec.LegacyAmino) {}
+func (AppModule) RegisterLegacyAminoCodec(coreregistry.AminoRegistrar) {}
// DefaultGenesis returns default genesis state as raw bytes for the ibc
// module.
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
- return cdc.MustMarshalJSON(types.DefaultGenesisState())
+func (am AppModule) DefaultGenesis() json.RawMessage {
+ return am.cdc.MustMarshalJSON(types.DefaultGenesisState())
}
// ValidateGenesis performs genesis state validation for the ibc module.
-func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {
+func (am AppModule) ValidateGenesis(bz json.RawMessage) error {
var gs types.GenesisState
- if err := cdc.UnmarshalJSON(bz, &gs); err != nil {
+ if err := am.cdc.UnmarshalJSON(bz, &gs); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", exported.ModuleName, err)
}
@@ -80,7 +89,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod
}
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the ibc module.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
+func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
err := clienttypes.RegisterQueryHandlerClient(context.Background(), mux, clienttypes.NewQueryClient(clientCtx))
if err != nil {
panic(err)
@@ -100,38 +109,20 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r
}
// GetTxCmd returns the root tx command for the ibc module.
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+func (AppModule) GetTxCmd() *cobra.Command {
return cli.GetTxCmd()
}
// GetQueryCmd returns no root query command for the ibc module.
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+func (AppModule) GetQueryCmd() *cobra.Command {
return cli.GetQueryCmd()
}
// RegisterInterfaces registers module concrete types into protobuf Any.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func (AppModule) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
types.RegisterInterfaces(registry)
}
-// AppModule implements an application module for the ibc module.
-type AppModule struct {
- AppModuleBasic
- keeper *keeper.Keeper
-}
-
-// NewAppModule creates a new AppModule object
-func NewAppModule(k *keeper.Keeper) AppModule {
- return AppModule{
- keeper: k,
- }
-}
-
-// Name returns the ibc module's name.
-func (AppModule) Name() string {
- return exported.ModuleName
-}
-
// RegisterServices registers module services.
func (am AppModule) RegisterServices(cfg module.Configurator) {
clienttypes.RegisterMsgServer(cfg.MsgServer(), am.keeper)
@@ -176,19 +167,23 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
// InitGenesis performs genesis initialization for the ibc module. It returns
// no validator updates.
-func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, bz json.RawMessage) {
+func (am AppModule) InitGenesis(ctx context.Context, bz json.RawMessage) error {
var gs types.GenesisState
- err := cdc.UnmarshalJSON(bz, &gs)
+ err := am.cdc.UnmarshalJSON(bz, &gs)
if err != nil {
panic(fmt.Errorf("failed to unmarshal %s genesis state: %s", exported.ModuleName, err))
}
- InitGenesis(ctx, *am.keeper, &gs)
+ return InitGenesis(ctx, *am.keeper, &gs)
}
// ExportGenesis returns the exported genesis state as raw bytes for the ibc
// module.
-func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
- return cdc.MustMarshalJSON(ExportGenesis(ctx, *am.keeper))
+func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
+ gs, err := ExportGenesis(ctx, *am.keeper)
+ if err != nil {
+ return nil, err
+ }
+ return am.cdc.MarshalJSON(gs)
}
// ConsensusVersion implements AppModule/ConsensusVersion.
@@ -196,7 +191,7 @@ func (AppModule) ConsensusVersion() uint64 { return 7 }
// BeginBlock returns the begin blocker for the ibc module.
func (am AppModule) BeginBlock(ctx context.Context) error {
- ibcclient.BeginBlocker(sdk.UnwrapSDKContext(ctx), am.keeper.ClientKeeper)
+ ibcclient.BeginBlocker(ctx, am.keeper.ClientKeeper)
return nil
}
diff --git a/modules/core/simulation/proposals.go b/modules/core/simulation/proposals.go
index e909d1fa1f0..51229b1ae4b 100644
--- a/modules/core/simulation/proposals.go
+++ b/modules/core/simulation/proposals.go
@@ -1,9 +1,11 @@
package simulation
import (
+ "context"
"math/rand"
"time"
+ coreaddress "cosmossdk.io/core/address"
upgradetypes "cosmossdk.io/x/upgrade/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -29,22 +31,22 @@ const (
// ProposalMsgs defines the module weighted proposals' contents
func ProposalMsgs() []simtypes.WeightedProposalMsg {
return []simtypes.WeightedProposalMsg{
- simulation.NewWeightedProposalMsg(
+ simulation.NewWeightedProposalMsgX(
OpWeightMsgUpdateParams,
DefaultWeight,
SimulateClientMsgUpdateParams,
),
- simulation.NewWeightedProposalMsg(
+ simulation.NewWeightedProposalMsgX(
OpWeightMsgUpdateParams,
DefaultWeight,
SimulateConnectionMsgUpdateParams,
),
- simulation.NewWeightedProposalMsg(
+ simulation.NewWeightedProposalMsgX(
OpWeightMsgRecoverClient,
DefaultWeight,
SimulateClientMsgRecoverClient,
),
- simulation.NewWeightedProposalMsg(
+ simulation.NewWeightedProposalMsgX(
OpWeightMsgIBCSoftwareUpgrade,
DefaultWeight,
SimulateClientMsgScheduleIBCSoftwareUpgrade,
@@ -53,7 +55,7 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg {
}
// SimulateClientMsgUpdateParams returns a MsgUpdateParams for 02-client
-func SimulateClientMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
+func SimulateClientMsgUpdateParams(ctx context.Context, r *rand.Rand, _ []simtypes.Account, _ coreaddress.Codec) (sdk.Msg, error) {
var signer sdk.AccAddress = address.Module("gov")
params := types.DefaultParams()
params.AllowedClients = []string{"06-solomachine", "07-tendermint"}
@@ -61,22 +63,22 @@ func SimulateClientMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Acc
return &types.MsgUpdateParams{
Signer: signer.String(),
Params: params,
- }
+ }, nil
}
// SimulateClientMsgRecoverClient returns a MsgRecoverClient for 02-client
-func SimulateClientMsgRecoverClient(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
+func SimulateClientMsgRecoverClient(ctx context.Context, r *rand.Rand, _ []simtypes.Account, _ coreaddress.Codec) (sdk.Msg, error) {
var signer sdk.AccAddress = address.Module("gov")
return &types.MsgRecoverClient{
Signer: signer.String(),
SubjectClientId: "07-tendermint-0",
SubstituteClientId: "07-tendermint-1",
- }
+ }, nil
}
// SimulateClientMsgScheduleIBCSoftwareUpgrade returns a MsgScheduleIBCSoftwareUpgrade for 02-client
-func SimulateClientMsgScheduleIBCSoftwareUpgrade(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
+func SimulateClientMsgScheduleIBCSoftwareUpgrade(ctx context.Context, r *rand.Rand, _ []simtypes.Account, _ coreaddress.Codec) (sdk.Msg, error) {
var signer sdk.AccAddress = address.Module("gov")
chainID := "chain-a-0"
@@ -91,7 +93,7 @@ func SimulateClientMsgScheduleIBCSoftwareUpgrade(r *rand.Rand, _ sdk.Context, _
}
anyClient, err := types.PackClientState(upgradedClientState)
if err != nil {
- panic(err)
+ return nil, err
}
return &types.MsgIBCSoftwareUpgrade{
@@ -101,11 +103,11 @@ func SimulateClientMsgScheduleIBCSoftwareUpgrade(r *rand.Rand, _ sdk.Context, _
Height: 100,
},
UpgradedClientState: anyClient,
- }
+ }, nil
}
// SimulateConnectionMsgUpdateParams returns a MsgUpdateParams 03-connection
-func SimulateConnectionMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
+func SimulateConnectionMsgUpdateParams(ctx context.Context, r *rand.Rand, _ []simtypes.Account, _ coreaddress.Codec) (sdk.Msg, error) {
var signer sdk.AccAddress = address.Module("gov")
params := connectiontypes.DefaultParams()
params.MaxExpectedTimePerBlock = uint64(100)
@@ -113,5 +115,5 @@ func SimulateConnectionMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes
return &connectiontypes.MsgUpdateParams{
Signer: signer.String(),
Params: params,
- }
+ }, nil
}
diff --git a/modules/core/simulation/proposals_test.go b/modules/core/simulation/proposals_test.go
index b26bf9c94e6..ee96a555867 100644
--- a/modules/core/simulation/proposals_test.go
+++ b/modules/core/simulation/proposals_test.go
@@ -7,12 +7,11 @@ import (
"github.com/stretchr/testify/require"
+ codecaddress "github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
-
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
"github.com/cosmos/ibc-go/v9/modules/core/simulation"
@@ -24,7 +23,7 @@ func TestProposalMsgs(t *testing.T) {
s := rand.NewSource(1)
r := rand.New(s)
- ctx := sdk.NewContext(nil, cmtproto.Header{}, true, nil)
+ ctx := sdk.NewContext(nil, true, nil)
accounts := simtypes.RandomAccounts(r, 3)
// execute ProposalMsgs function
@@ -36,7 +35,9 @@ func TestProposalMsgs(t *testing.T) {
require.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey())
require.Equal(t, simulation.DefaultWeight, w0.DefaultWeight())
- msg := w0.MsgSimulatorFn()(r, ctx, accounts)
+ codec := codecaddress.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())
+ msg, err := w0.MsgSimulatorFn()(ctx, r, accounts, codec)
+ require.NoError(t, err)
msgUpdateParams, ok := msg.(*clienttypes.MsgUpdateParams)
require.True(t, ok)
@@ -48,7 +49,8 @@ func TestProposalMsgs(t *testing.T) {
require.Equal(t, simulation.OpWeightMsgUpdateParams, w1.AppParamsKey())
require.Equal(t, simulation.DefaultWeight, w1.DefaultWeight())
- msg1 := w1.MsgSimulatorFn()(r, ctx, accounts)
+ msg1, err := w1.MsgSimulatorFn()(ctx, r, accounts, nil)
+ require.NoError(t, err)
msgUpdateConnectionParams, ok := msg1.(*connectiontypes.MsgUpdateParams)
require.True(t, ok)
@@ -60,7 +62,8 @@ func TestProposalMsgs(t *testing.T) {
require.Equal(t, simulation.OpWeightMsgRecoverClient, w2.AppParamsKey())
require.Equal(t, simulation.DefaultWeight, w2.DefaultWeight())
- msg2 := w2.MsgSimulatorFn()(r, ctx, accounts)
+ msg2, err := w2.MsgSimulatorFn()(ctx, r, accounts, nil)
+ require.NoError(t, err)
msgRecoverClient, ok := msg2.(*clienttypes.MsgRecoverClient)
require.True(t, ok)
@@ -72,7 +75,8 @@ func TestProposalMsgs(t *testing.T) {
require.Equal(t, simulation.OpWeightMsgIBCSoftwareUpgrade, w3.AppParamsKey())
require.Equal(t, simulation.DefaultWeight, w3.DefaultWeight())
- msg3 := w3.MsgSimulatorFn()(r, ctx, accounts)
+ msg3, err := w3.MsgSimulatorFn()(ctx, r, accounts, nil)
+ require.NoError(t, err)
msgIBCSoftwareUpgrade, ok := msg3.(*clienttypes.MsgIBCSoftwareUpgrade)
require.True(t, ok)
diff --git a/modules/core/types/codec.go b/modules/core/types/codec.go
index d704d725ea3..ce4380ce183 100644
--- a/modules/core/types/codec.go
+++ b/modules/core/types/codec.go
@@ -1,7 +1,7 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ coreregistry "cosmossdk.io/core/registry"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
@@ -12,7 +12,7 @@ import (
// RegisterInterfaces registers ibc types against interfaces using the global InterfaceRegistry.
// Note: The localhost client is created by ibc core and thus requires explicit type registration.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
clienttypes.RegisterInterfaces(registry)
connectiontypes.RegisterInterfaces(registry)
channeltypes.RegisterInterfaces(registry)
diff --git a/modules/core/types/expected_interfaces.go b/modules/core/types/expected_interfaces.go
index c6aca313696..390e9ddec3c 100644
--- a/modules/core/types/expected_interfaces.go
+++ b/modules/core/types/expected_interfaces.go
@@ -1,8 +1,9 @@
package types
import (
+ paramtypes "cosmossdk.io/x/params/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
- paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
)
// ParamSubspace defines the expected Subspace interface for module parameters.
diff --git a/modules/core/types/genesis.go b/modules/core/types/genesis.go
index 7b43fd9c71a..7d5d73103c5 100644
--- a/modules/core/types/genesis.go
+++ b/modules/core/types/genesis.go
@@ -1,14 +1,14 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
)
-var _ codectypes.UnpackInterfacesMessage = (*GenesisState)(nil)
+var _ gogoprotoany.UnpackInterfacesMessage = (*GenesisState)(nil)
// DefaultGenesisState returns the ibc module's default genesis state.
func DefaultGenesisState() *GenesisState {
@@ -20,7 +20,7 @@ func DefaultGenesisState() *GenesisState {
}
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
-func (gs GenesisState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (gs GenesisState) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return gs.ClientGenesis.UnpackInterfaces(unpacker)
}
diff --git a/modules/core/types/log.go b/modules/core/types/log.go
new file mode 100644
index 00000000000..3f84e55925a
--- /dev/null
+++ b/modules/core/types/log.go
@@ -0,0 +1,10 @@
+package types
+
+import "cosmossdk.io/core/log"
+
+// LogDeferred logs an error in a deferred function call if the returned error is non-nil.
+func LogDeferred(logger log.Logger, f func() error) {
+ if err := f(); err != nil {
+ logger.Error(err.Error())
+ }
+}
diff --git a/modules/light-clients/06-solomachine/codec.go b/modules/light-clients/06-solomachine/codec.go
index e6f9a2c6184..d04e8476037 100644
--- a/modules/light-clients/06-solomachine/codec.go
+++ b/modules/light-clients/06-solomachine/codec.go
@@ -1,10 +1,10 @@
package solomachine
import (
+ coreregistry "cosmossdk.io/core/registry"
errorsmod "cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -12,7 +12,7 @@ import (
// RegisterInterfaces register the ibc channel submodule interfaces to protobuf
// Any.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*exported.ClientState)(nil),
&ClientState{},
diff --git a/modules/light-clients/06-solomachine/codec_test.go b/modules/light-clients/06-solomachine/codec_test.go
index 744a4b1537c..04b47e0ec13 100644
--- a/modules/light-clients/06-solomachine/codec_test.go
+++ b/modules/light-clients/06-solomachine/codec_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -49,7 +50,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(solomachine.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, solomachine.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expError == nil {
diff --git a/modules/light-clients/06-solomachine/light_client_module_test.go b/modules/light-clients/06-solomachine/light_client_module_test.go
index 78b0c49a3d8..fcefbf08044 100644
--- a/modules/light-clients/06-solomachine/light_client_module_test.go
+++ b/modules/light-clients/06-solomachine/light_client_module_test.go
@@ -203,8 +203,7 @@ func (suite *SoloMachineTestSuite) TestInitialize() {
err = lightClientModule.Initialize(suite.chainA.GetContext(), clientID, clientStateBz, consStateBz)
store := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), clientID)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
suite.Require().True(store.Has(host.ClientStateKey()))
} else {
@@ -679,8 +678,7 @@ func (suite *SoloMachineTestSuite) TestVerifyMembership() {
0, 0, proof, path, signBytes.Data,
)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
// Grab fresh client state after updates.
cs, found := suite.chainA.App.GetIBCKeeper().ClientKeeper.GetClientState(suite.chainA.GetContext(), clientID)
suite.Require().True(found)
@@ -904,8 +902,7 @@ func (suite *SoloMachineTestSuite) TestVerifyNonMembership() {
0, 0, proof, path,
)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
// Grab fresh client state after updates.
cs, found := suite.chainA.App.GetIBCKeeper().ClientKeeper.GetClientState(suite.chainA.GetContext(), clientID)
suite.Require().True(found)
@@ -1001,8 +998,7 @@ func (suite *SoloMachineTestSuite) TestRecoverClient() {
err = lightClientModule.RecoverClient(ctx, subjectClientID, substituteClientID)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
// assert that status of subject client is now Active
@@ -1084,8 +1080,7 @@ func (suite *SoloMachineTestSuite) TestUpdateState() {
consensusHeights = lightClientModule.UpdateState(suite.chainA.GetContext(), clientID, clientMsg)
}
- expPass := tc.expPanic == nil
- if expPass {
+ if tc.expPanic == nil {
updateStateFunc()
clientStateBz := store.Get(host.ClientStateKey())
@@ -1174,8 +1169,7 @@ func (suite *SoloMachineTestSuite) TestCheckForMisbehaviour() {
foundMisbehaviour = lightClientModule.CheckForMisbehaviour(suite.chainA.GetContext(), clientID, clientMsg)
}
- expPass := tc.expPanic == nil
- if expPass {
+ if tc.expPanic == nil {
foundMisbehaviourFunc()
suite.Require().Equal(tc.foundMisbehaviour, foundMisbehaviour)
@@ -1230,8 +1224,7 @@ func (suite *SoloMachineTestSuite) TestUpdateStateOnMisbehaviour() {
lightClientModule.UpdateStateOnMisbehaviour(suite.chainA.GetContext(), clientID, nil)
}
- expPass := tc.expPanic == nil
- if expPass {
+ if tc.expPanic == nil {
updateOnMisbehaviourFunc()
store := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), clientID)
@@ -1406,8 +1399,7 @@ func (suite *SoloMachineTestSuite) TestVerifyClientMessageHeader() {
err = lightClientModule.VerifyClientMessage(suite.chainA.GetContext(), clientID, clientMsg)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorContains(err, tc.expErr.Error())
@@ -1652,8 +1644,7 @@ func (suite *SoloMachineTestSuite) TestVerifyClientMessageMisbehaviour() {
err = lightClientModule.VerifyClientMessage(suite.chainA.GetContext(), clientID, clientMsg)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorContains(err, tc.expErr.Error())
diff --git a/modules/light-clients/06-solomachine/module.go b/modules/light-clients/06-solomachine/module.go
index 906231124c5..c940561c64c 100644
--- a/modules/light-clients/06-solomachine/module.go
+++ b/modules/light-clients/06-solomachine/module.go
@@ -7,31 +7,32 @@ import (
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/types/module"
)
var (
- _ module.AppModuleBasic = (*AppModuleBasic)(nil)
+ _ module.AppModuleBasic = (*AppModule)(nil)
_ appmodule.AppModule = (*AppModule)(nil)
)
-// AppModuleBasic defines the basic application module used by the solo machine light client.
-// Only the RegisterInterfaces function needs to be implemented. All other function perform
-// a no-op.
-type AppModuleBasic struct{}
-
-// IsOnePerModuleType implements the depinject.OnePerModuleType interface.
-func (AppModuleBasic) IsOnePerModuleType() {}
+// AppModule is the application module for the Solomachine client module
+type AppModule struct {
+ lightClientModule LightClientModule
+}
-// IsAppModule implements the appmodule.AppModule interface.
-func (AppModuleBasic) IsAppModule() {}
+// NewAppModule creates a new Solomachine client module
+func NewAppModule(lightClientModule LightClientModule) AppModule {
+ return AppModule{
+ lightClientModule: lightClientModule,
+ }
+}
// Name returns the solo machine module name.
-func (AppModuleBasic) Name() string {
+func (AppModule) Name() string {
return ModuleName
}
@@ -42,46 +43,33 @@ func (AppModule) IsOnePerModuleType() {}
func (AppModule) IsAppModule() {}
// RegisterLegacyAminoCodec performs a no-op. The solo machine client does not support amino.
-func (AppModuleBasic) RegisterLegacyAminoCodec(*codec.LegacyAmino) {}
+func (AppModule) RegisterLegacyAminoCodec(coreregistry.AminoRegistrar) {}
// RegisterInterfaces registers module concrete types into protobuf Any. This allows core IBC
// to unmarshal solo machine types.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func (AppModule) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
RegisterInterfaces(registry)
}
// DefaultGenesis performs a no-op. Genesis is not supported for solo machine.
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
+func (AppModule) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
return nil
}
// ValidateGenesis performs a no-op. Genesis is not supported for solo machine.
-func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {
+func (AppModule) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {
return nil
}
// RegisterGRPCGatewayRoutes performs a no-op.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {}
+func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {}
// GetTxCmd performs a no-op. Please see the 02-client cli commands.
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+func (AppModule) GetTxCmd() *cobra.Command {
return nil
}
// GetQueryCmd performs a no-op. Please see the 02-client cli commands.
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+func (AppModule) GetQueryCmd() *cobra.Command {
return nil
}
-
-// AppModule is the application module for the Solomachine client module
-type AppModule struct {
- AppModuleBasic
- lightClientModule LightClientModule
-}
-
-// NewAppModule creates a new Solomachine client module
-func NewAppModule(lightClientModule LightClientModule) AppModule {
- return AppModule{
- lightClientModule: lightClientModule,
- }
-}
diff --git a/modules/light-clients/06-solomachine/solomachine.go b/modules/light-clients/06-solomachine/solomachine.go
index b68ee7062b2..a3ae8c06f76 100644
--- a/modules/light-clients/06-solomachine/solomachine.go
+++ b/modules/light-clients/06-solomachine/solomachine.go
@@ -1,32 +1,33 @@
package solomachine
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ gogoprotoany "github.com/cosmos/gogoproto/types/any"
+
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
)
// Interface implementation checks.
-var _, _, _, _ codectypes.UnpackInterfacesMessage = (*ClientState)(nil), (*ConsensusState)(nil), (*Header)(nil), (*HeaderData)(nil)
+var _, _, _, _ gogoprotoany.UnpackInterfacesMessage = (*ClientState)(nil), (*ConsensusState)(nil), (*Header)(nil), (*HeaderData)(nil)
// Data is an interface used for all the signature data bytes proto definitions.
type Data interface{}
// UnpackInterfaces implements the UnpackInterfaceMessages.UnpackInterfaces method
-func (cs ClientState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (cs ClientState) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return cs.ConsensusState.UnpackInterfaces(unpacker)
}
// UnpackInterfaces implements the UnpackInterfaceMessages.UnpackInterfaces method
-func (cs ConsensusState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (cs ConsensusState) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(cs.PublicKey, new(cryptotypes.PubKey))
}
// UnpackInterfaces implements the UnpackInterfaceMessages.UnpackInterfaces method
-func (h Header) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (h Header) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(h.NewPublicKey, new(cryptotypes.PubKey))
}
// UnpackInterfaces implements the UnpackInterfaceMessages.UnpackInterfaces method
-func (hd HeaderData) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
+func (hd HeaderData) UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error {
return unpacker.UnpackAny(hd.NewPubKey, new(cryptotypes.PubKey))
}
diff --git a/modules/light-clients/06-solomachine/solomachine.pb.go b/modules/light-clients/06-solomachine/solomachine.pb.go
index 12389771751..6ed1f01f3fa 100644
--- a/modules/light-clients/06-solomachine/solomachine.pb.go
+++ b/modules/light-clients/06-solomachine/solomachine.pb.go
@@ -5,9 +5,9 @@ package solomachine
import (
fmt "fmt"
- types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
+ any "github.com/cosmos/gogoproto/types/any"
io "io"
math "math"
math_bits "math/bits"
@@ -72,7 +72,7 @@ var xxx_messageInfo_ClientState proto.InternalMessageInfo
// consensus state.
type ConsensusState struct {
// public key of the solo machine
- PublicKey *types.Any `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+ PublicKey *any.Any `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
// diversifier allows the same public key to be re-used across different solo
// machine clients (potentially on different chains) without being considered
// misbehaviour.
@@ -115,10 +115,10 @@ var xxx_messageInfo_ConsensusState proto.InternalMessageInfo
// Header defines a solo machine consensus header
type Header struct {
- Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
- Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
- NewPublicKey *types.Any `protobuf:"bytes,3,opt,name=new_public_key,json=newPublicKey,proto3" json:"new_public_key,omitempty"`
- NewDiversifier string `protobuf:"bytes,4,opt,name=new_diversifier,json=newDiversifier,proto3" json:"new_diversifier,omitempty"`
+ Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
+ NewPublicKey *any.Any `protobuf:"bytes,3,opt,name=new_public_key,json=newPublicKey,proto3" json:"new_public_key,omitempty"`
+ NewDiversifier string `protobuf:"bytes,4,opt,name=new_diversifier,json=newDiversifier,proto3" json:"new_diversifier,omitempty"`
}
func (m *Header) Reset() { *m = Header{} }
@@ -327,7 +327,7 @@ var xxx_messageInfo_SignBytes proto.InternalMessageInfo
// HeaderData returns the SignBytes data for update verification.
type HeaderData struct {
// header public key
- NewPubKey *types.Any `protobuf:"bytes,1,opt,name=new_pub_key,json=newPubKey,proto3" json:"new_pub_key,omitempty"`
+ NewPubKey *any.Any `protobuf:"bytes,1,opt,name=new_pub_key,json=newPubKey,proto3" json:"new_pub_key,omitempty"`
// header diversifier
NewDiversifier string `protobuf:"bytes,2,opt,name=new_diversifier,json=newDiversifier,proto3" json:"new_diversifier,omitempty"`
}
@@ -1174,7 +1174,7 @@ func (m *ConsensusState) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.PublicKey == nil {
- m.PublicKey = &types.Any{}
+ m.PublicKey = &any.Any{}
}
if err := m.PublicKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -1364,7 +1364,7 @@ func (m *Header) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.NewPublicKey == nil {
- m.NewPublicKey = &types.Any{}
+ m.NewPublicKey = &any.Any{}
}
if err := m.NewPublicKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -2085,7 +2085,7 @@ func (m *HeaderData) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.NewPubKey == nil {
- m.NewPubKey = &types.Any{}
+ m.NewPubKey = &any.Any{}
}
if err := m.NewPubKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/light-clients/07-tendermint/client_state.go b/modules/light-clients/07-tendermint/client_state.go
index 89ab21128d7..f400f4cbf47 100644
--- a/modules/light-clients/07-tendermint/client_state.go
+++ b/modules/light-clients/07-tendermint/client_state.go
@@ -125,7 +125,7 @@ func (cs ClientState) Validate() error {
}
if err := light.ValidateTrustLevel(cs.TrustLevel.ToTendermint()); err != nil {
- return errorsmod.Wrapf(ErrInvalidTrustLevel, err.Error())
+ return errorsmod.Wrap(ErrInvalidTrustLevel, err.Error())
}
if cs.TrustingPeriod <= 0 {
return errorsmod.Wrap(ErrInvalidTrustingPeriod, "trusting period must be greater than zero")
@@ -143,7 +143,7 @@ func (cs ClientState) Validate() error {
"latest height revision number must match chain id revision number (%d != %d)", cs.LatestHeight.RevisionNumber, clienttypes.ParseChainID(cs.ChainId))
}
if cs.LatestHeight.RevisionHeight == 0 {
- return errorsmod.Wrapf(ErrInvalidHeaderHeight, "tendermint client's latest height revision height cannot be zero")
+ return errorsmod.Wrap(ErrInvalidHeaderHeight, "tendermint client's latest height revision height cannot be zero")
}
if cs.TrustingPeriod >= cs.UnbondingPeriod {
return errorsmod.Wrapf(
diff --git a/modules/light-clients/07-tendermint/client_state_test.go b/modules/light-clients/07-tendermint/client_state_test.go
index 82aecf465da..74935533c7d 100644
--- a/modules/light-clients/07-tendermint/client_state_test.go
+++ b/modules/light-clients/07-tendermint/client_state_test.go
@@ -21,7 +21,6 @@ func (suite *TendermintTestSuite) TestValidate() {
name string
clientState *ibctm.ClientState
expErr error
- expPass bool
}{
{
name: "valid client",
@@ -126,8 +125,7 @@ func (suite *TendermintTestSuite) TestValidate() {
suite.Run(tc.name, func() {
err := tc.clientState.Validate()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, tc.name)
} else {
suite.Require().ErrorContains(err, tc.expErr.Error())
diff --git a/modules/light-clients/07-tendermint/codec.go b/modules/light-clients/07-tendermint/codec.go
index 1b35bed3aae..897ba9ee88b 100644
--- a/modules/light-clients/07-tendermint/codec.go
+++ b/modules/light-clients/07-tendermint/codec.go
@@ -1,14 +1,14 @@
package tendermint
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
)
// RegisterInterfaces registers the tendermint concrete client-related
// implementations and interfaces.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*exported.ClientState)(nil),
&ClientState{},
diff --git a/modules/light-clients/07-tendermint/codec_test.go b/modules/light-clients/07-tendermint/codec_test.go
index 6e3f07e33ff..87c01eba8d6 100644
--- a/modules/light-clients/07-tendermint/codec_test.go
+++ b/modules/light-clients/07-tendermint/codec_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -49,7 +50,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(tendermint.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, tendermint.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expError == nil {
diff --git a/modules/light-clients/07-tendermint/header_test.go b/modules/light-clients/07-tendermint/header_test.go
index fcdb3403984..19716c8a19a 100644
--- a/modules/light-clients/07-tendermint/header_test.go
+++ b/modules/light-clients/07-tendermint/header_test.go
@@ -4,8 +4,6 @@ import (
"errors"
"time"
- cmtprotocrypto "github.com/cometbft/cometbft/proto/tendermint/crypto"
-
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint"
@@ -51,7 +49,7 @@ func (suite *TendermintTestSuite) TestHeaderValidateBasic() {
header.ValidatorSet = nil
}, errors.New("invalid client header")},
{"ValidatorSetFromProto failed", func() {
- header.ValidatorSet.Validators[0].PubKey = cmtprotocrypto.PublicKey{}
+ header.ValidatorSet.Validators[0].VotingPower = -1
}, errors.New("validator set is not tendermint validator set")},
{"header validator hash does not equal hash of validator set", func() {
// use chainB's randomly generated validator set
diff --git a/modules/light-clients/07-tendermint/light_client_module_test.go b/modules/light-clients/07-tendermint/light_client_module_test.go
index f196ac0aa3e..5ca14aca0ce 100644
--- a/modules/light-clients/07-tendermint/light_client_module_test.go
+++ b/modules/light-clients/07-tendermint/light_client_module_test.go
@@ -103,8 +103,7 @@ func (suite *TendermintTestSuite) TestInitialize() {
store := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), path.EndpointA.ClientID)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, "valid case returned an error")
suite.Require().True(store.Has(host.ClientStateKey()))
suite.Require().True(store.Has(host.ConsensusStateKey(suite.chainB.LatestCommittedHeader.GetHeight())))
@@ -162,8 +161,7 @@ func (suite *TendermintTestSuite) TestVerifyClientMessage() {
err = lightClientModule.VerifyClientMessage(suite.chainA.GetContext(), path.EndpointA.ClientID, header)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expErr)
@@ -515,8 +513,7 @@ func (suite *TendermintTestSuite) TestVerifyMembership() {
suite.chainA.GetContext(), testingpath.EndpointA.ClientID, proofHeight, delayTimePeriod, delayBlockPeriod,
proof, path, value,
)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorContains(err, tc.expErr.Error())
@@ -741,8 +738,7 @@ func (suite *TendermintTestSuite) TestVerifyNonMembership() {
proof, path,
)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorContains(err, tc.expErr.Error())
@@ -934,8 +930,7 @@ func (suite *TendermintTestSuite) TestGetTimestampAtHeight() {
timestamp, err := lightClientModule.TimestampAtHeight(suite.chainA.GetContext(), path.EndpointA.ClientID, height)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
expectedTimestamp := uint64(expectedTimestamp.UnixNano())
@@ -1021,8 +1016,7 @@ func (suite *TendermintTestSuite) TestRecoverClient() {
err = lightClientModule.RecoverClient(ctx, subjectClientID, substituteClientID)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
// assert that status of subject client is now Active
@@ -1184,8 +1178,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgradeAndUpdateState() {
upgradedConsensusStateProof,
)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
expClientState := path.EndpointA.GetClientState()
diff --git a/modules/light-clients/07-tendermint/migrations/expected_keepers.go b/modules/light-clients/07-tendermint/migrations/expected_keepers.go
index 48ff97e416d..b56b5c4171f 100644
--- a/modules/light-clients/07-tendermint/migrations/expected_keepers.go
+++ b/modules/light-clients/07-tendermint/migrations/expected_keepers.go
@@ -3,7 +3,6 @@ package migrations
import (
"context"
- "cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -14,5 +13,4 @@ type ClientKeeper interface {
GetClientState(ctx context.Context, clientID string) (exported.ClientState, bool)
IterateClientStates(ctx context.Context, prefix []byte, cb func(string, exported.ClientState) bool)
ClientStore(ctx context.Context, clientID string) storetypes.KVStore
- Logger(ctx context.Context) log.Logger
}
diff --git a/modules/light-clients/07-tendermint/migrations/migrations.go b/modules/light-clients/07-tendermint/migrations/migrations.go
index c5457f6e684..c5705f7a90c 100644
--- a/modules/light-clients/07-tendermint/migrations/migrations.go
+++ b/modules/light-clients/07-tendermint/migrations/migrations.go
@@ -6,6 +6,7 @@ import (
errorsmod "cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/codec"
+ sdk "github.com/cosmos/cosmos-sdk/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -41,7 +42,7 @@ func PruneExpiredConsensusStates(ctx context.Context, cdc codec.BinaryCodec, cli
totalPruned += ibctm.PruneAllExpiredConsensusStates(ctx, clientStore, cdc, tmClientState)
}
- clientKeeper.Logger(ctx).Info("pruned expired tendermint consensus states", "total", totalPruned)
+ sdk.UnwrapSDKContext(ctx).Logger().Info("pruned expired tendermint consensus states", "total", totalPruned)
return totalPruned, nil
}
diff --git a/modules/light-clients/07-tendermint/misbehaviour.go b/modules/light-clients/07-tendermint/misbehaviour.go
index 86d1de187bc..c87d42c4aa4 100644
--- a/modules/light-clients/07-tendermint/misbehaviour.go
+++ b/modules/light-clients/07-tendermint/misbehaviour.go
@@ -5,7 +5,7 @@ import (
errorsmod "cosmossdk.io/errors"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
cmttypes "github.com/cometbft/cometbft/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
diff --git a/modules/light-clients/07-tendermint/misbehaviour_test.go b/modules/light-clients/07-tendermint/misbehaviour_test.go
index fe5efaea67f..554fadab29e 100644
--- a/modules/light-clients/07-tendermint/misbehaviour_test.go
+++ b/modules/light-clients/07-tendermint/misbehaviour_test.go
@@ -6,8 +6,8 @@ import (
errorsmod "cosmossdk.io/errors"
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
"github.com/cometbft/cometbft/crypto/tmhash"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
cmttypes "github.com/cometbft/cometbft/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
diff --git a/modules/light-clients/07-tendermint/module.go b/modules/light-clients/07-tendermint/module.go
index 78d71691ce7..2d426b3c2ce 100644
--- a/modules/light-clients/07-tendermint/module.go
+++ b/modules/light-clients/07-tendermint/module.go
@@ -1,38 +1,31 @@
package tendermint
import (
- "encoding/json"
-
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
- "github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/types/module"
)
var (
- _ module.AppModuleBasic = (*AppModuleBasic)(nil)
+ _ module.AppModuleBasic = (*AppModule)(nil)
_ appmodule.AppModule = (*AppModule)(nil)
)
-// AppModuleBasic defines the basic application module used by the tendermint light client.
-// Only the RegisterInterfaces function needs to be implemented. All other function perform
-// a no-op.
-type AppModuleBasic struct{}
-
-// IsOnePerModuleType implements the depinject.OnePerModuleType interface.
-func (AppModuleBasic) IsOnePerModuleType() {}
-
-// IsAppModule implements the appmodule.AppModule interface.
-func (AppModuleBasic) IsAppModule() {}
+// AppModule is the application module for the Tendermint client module
+type AppModule struct {
+ lightClientModule LightClientModule
+}
-// Name returns the tendermint module name.
-func (AppModuleBasic) Name() string {
- return ModuleName
+// NewAppModule creates a new Tendermint client module
+func NewAppModule(lightClientModule LightClientModule) AppModule {
+ return AppModule{
+ lightClientModule: lightClientModule,
+ }
}
// IsOnePerModuleType implements the depinject.OnePerModuleType interface.
@@ -41,47 +34,29 @@ func (AppModule) IsOnePerModuleType() {}
// IsAppModule implements the appmodule.AppModule interface.
func (AppModule) IsAppModule() {}
+// Name returns the tendermint module name.
+func (AppModule) Name() string {
+ return ModuleName
+}
+
// RegisterLegacyAminoCodec performs a no-op. The Tendermint client does not support amino.
-func (AppModuleBasic) RegisterLegacyAminoCodec(*codec.LegacyAmino) {}
+func (AppModule) RegisterLegacyAminoCodec(coreregistry.AminoRegistrar) {}
// RegisterInterfaces registers module concrete types into protobuf Any. This allows core IBC
// to unmarshal tendermint light client types.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func (AppModule) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
RegisterInterfaces(registry)
}
-// DefaultGenesis performs a no-op. Genesis is not supported for the tendermint light client.
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
- return nil
-}
-
-// ValidateGenesis performs a no-op. Genesis is not supported for the tendermint light client.
-func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {
- return nil
-}
-
// RegisterGRPCGatewayRoutes performs a no-op.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {}
+func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {}
// GetTxCmd performs a no-op. Please see the 02-client cli commands.
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+func (AppModule) GetTxCmd() *cobra.Command {
return nil
}
// GetQueryCmd performs a no-op. Please see the 02-client cli commands.
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+func (AppModule) GetQueryCmd() *cobra.Command {
return nil
}
-
-// AppModule is the application module for the Tendermint client module
-type AppModule struct {
- AppModuleBasic
- lightClientModule LightClientModule
-}
-
-// NewAppModule creates a new Tendermint client module
-func NewAppModule(lightClientModule LightClientModule) AppModule {
- return AppModule{
- lightClientModule: lightClientModule,
- }
-}
diff --git a/modules/light-clients/07-tendermint/store.go b/modules/light-clients/07-tendermint/store.go
index ef89b8de780..b3ea14bf3a8 100644
--- a/modules/light-clients/07-tendermint/store.go
+++ b/modules/light-clients/07-tendermint/store.go
@@ -220,7 +220,7 @@ func IterateConsensusStateAscending(clientStore storetypes.KVStore, cb func(heig
// GetNextConsensusState returns the lowest consensus state that is larger than the given height.
// The Iterator returns a storetypes.Iterator which iterates from start (inclusive) to end (exclusive).
-// If the starting height exists in store, we need to call iterator.Next() to get the next consenus state.
+// If the starting height exists in store, we need to call iterator.Next() to get the next consensus state.
// Otherwise, the iterator is already at the next consensus state so we can call iterator.Value() immediately.
func GetNextConsensusState(clientStore storetypes.KVStore, cdc codec.BinaryCodec, height exported.Height) (*ConsensusState, bool) {
iterateStore := prefix.NewStore(clientStore, []byte(KeyIterateConsensusStatePrefix))
diff --git a/modules/light-clients/07-tendermint/tendermint.pb.go b/modules/light-clients/07-tendermint/tendermint.pb.go
index b2224d12c44..ad907b657db 100644
--- a/modules/light-clients/07-tendermint/tendermint.pb.go
+++ b/modules/light-clients/07-tendermint/tendermint.pb.go
@@ -5,8 +5,8 @@ package tendermint
import (
fmt "fmt"
+ v1 "github.com/cometbft/cometbft/api/cometbft/types/v1"
github_com_cometbft_cometbft_libs_bytes "github.com/cometbft/cometbft/libs/bytes"
- types2 "github.com/cometbft/cometbft/proto/tendermint/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types"
@@ -196,10 +196,10 @@ var xxx_messageInfo_Misbehaviour proto.InternalMessageInfo
// hash to TrustedConsensusState.NextValidatorsHash since that is the last
// trusted validator set at the TrustedHeight.
type Header struct {
- *types2.SignedHeader `protobuf:"bytes,1,opt,name=signed_header,json=signedHeader,proto3,embedded=signed_header" json:"signed_header,omitempty"`
- ValidatorSet *types2.ValidatorSet `protobuf:"bytes,2,opt,name=validator_set,json=validatorSet,proto3" json:"validator_set,omitempty"`
- TrustedHeight types.Height `protobuf:"bytes,3,opt,name=trusted_height,json=trustedHeight,proto3" json:"trusted_height"`
- TrustedValidators *types2.ValidatorSet `protobuf:"bytes,4,opt,name=trusted_validators,json=trustedValidators,proto3" json:"trusted_validators,omitempty"`
+ *v1.SignedHeader `protobuf:"bytes,1,opt,name=signed_header,json=signedHeader,proto3,embedded=signed_header" json:"signed_header,omitempty"`
+ ValidatorSet *v1.ValidatorSet `protobuf:"bytes,2,opt,name=validator_set,json=validatorSet,proto3" json:"validator_set,omitempty"`
+ TrustedHeight types.Height `protobuf:"bytes,3,opt,name=trusted_height,json=trustedHeight,proto3" json:"trusted_height"`
+ TrustedValidators *v1.ValidatorSet `protobuf:"bytes,4,opt,name=trusted_validators,json=trustedValidators,proto3" json:"trusted_validators,omitempty"`
}
func (m *Header) Reset() { *m = Header{} }
@@ -235,7 +235,7 @@ func (m *Header) XXX_DiscardUnknown() {
var xxx_messageInfo_Header proto.InternalMessageInfo
-func (m *Header) GetValidatorSet() *types2.ValidatorSet {
+func (m *Header) GetValidatorSet() *v1.ValidatorSet {
if m != nil {
return m.ValidatorSet
}
@@ -249,7 +249,7 @@ func (m *Header) GetTrustedHeight() types.Height {
return types.Height{}
}
-func (m *Header) GetTrustedValidators() *types2.ValidatorSet {
+func (m *Header) GetTrustedValidators() *v1.ValidatorSet {
if m != nil {
return m.TrustedValidators
}
@@ -323,66 +323,67 @@ func init() {
}
var fileDescriptor_c6d6cf2b288949be = []byte{
- // 943 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x95, 0x4f, 0x6f, 0xe3, 0xc4,
- 0x1b, 0xc7, 0xe3, 0x34, 0xdb, 0x26, 0x93, 0x64, 0xfb, 0xfb, 0x8d, 0x56, 0xc8, 0xad, 0xaa, 0x24,
- 0xf4, 0x00, 0xb9, 0xd4, 0xde, 0x64, 0x91, 0x10, 0x2c, 0x1c, 0x48, 0x77, 0xa1, 0x5d, 0xb6, 0x50,
- 0xb9, 0xc0, 0x81, 0x8b, 0x35, 0xb6, 0x27, 0xf6, 0x68, 0x6d, 0x8f, 0x35, 0x33, 0x0e, 0x29, 0x27,
- 0x8e, 0x1c, 0xf7, 0xc8, 0x91, 0x97, 0xc0, 0xcb, 0xd8, 0x63, 0x2f, 0x48, 0x9c, 0x0a, 0x4a, 0xdf,
- 0x05, 0x27, 0x34, 0x7f, 0x9c, 0x98, 0xb2, 0x62, 0x2b, 0x2e, 0xd1, 0x33, 0xf3, 0x7c, 0x9f, 0x4f,
- 0x66, 0x9e, 0x3f, 0x63, 0xe0, 0x92, 0x20, 0x74, 0x53, 0x12, 0x27, 0x22, 0x4c, 0x09, 0xce, 0x05,
- 0x77, 0x05, 0xce, 0x23, 0xcc, 0x32, 0x92, 0x0b, 0x77, 0x31, 0xa9, 0xad, 0x9c, 0x82, 0x51, 0x41,
- 0xe1, 0x80, 0x04, 0xa1, 0x53, 0x0f, 0x70, 0x6a, 0x92, 0xc5, 0x64, 0x7f, 0x54, 0x8b, 0x17, 0x97,
- 0x05, 0xe6, 0xee, 0x02, 0xa5, 0x24, 0x42, 0x82, 0x32, 0x4d, 0xd8, 0x3f, 0xf8, 0x87, 0x42, 0xfd,
- 0x56, 0xde, 0x90, 0xf2, 0x8c, 0x72, 0x97, 0x84, 0x7c, 0xfa, 0x48, 0x9e, 0xa0, 0x60, 0x94, 0xce,
- 0x2b, 0xef, 0x20, 0xa6, 0x34, 0x4e, 0xb1, 0xab, 0x56, 0x41, 0x39, 0x77, 0xa3, 0x92, 0x21, 0x41,
- 0x68, 0x6e, 0xfc, 0xc3, 0xdb, 0x7e, 0x41, 0x32, 0xcc, 0x05, 0xca, 0x8a, 0x4a, 0x20, 0xef, 0x1b,
- 0x52, 0x86, 0x5d, 0x7d, 0x7c, 0xf9, 0x0f, 0xda, 0x32, 0x82, 0x77, 0x37, 0x02, 0x9a, 0x65, 0x44,
- 0x64, 0x95, 0x68, 0xbd, 0x32, 0xc2, 0x07, 0x31, 0x8d, 0xa9, 0x32, 0x5d, 0x69, 0xe9, 0xdd, 0xc3,
- 0xd5, 0x3d, 0xd0, 0x3d, 0x56, 0xbc, 0x0b, 0x81, 0x04, 0x86, 0x7b, 0xa0, 0x1d, 0x26, 0x88, 0xe4,
- 0x3e, 0x89, 0x6c, 0x6b, 0x64, 0x8d, 0x3b, 0xde, 0x8e, 0x5a, 0x9f, 0x46, 0xf0, 0x4b, 0xd0, 0x15,
- 0xac, 0xe4, 0xc2, 0x4f, 0xf1, 0x02, 0xa7, 0x76, 0x73, 0x64, 0x8d, 0xbb, 0xd3, 0xb1, 0xf3, 0xef,
- 0xf9, 0x75, 0x3e, 0x65, 0x28, 0x94, 0x17, 0x9e, 0xb5, 0x5e, 0x5d, 0x0f, 0x1b, 0x1e, 0x50, 0x88,
- 0xe7, 0x92, 0x00, 0x9f, 0x83, 0x5d, 0xb5, 0x22, 0x79, 0xec, 0x17, 0x98, 0x11, 0x1a, 0xd9, 0x5b,
- 0x0a, 0xba, 0xe7, 0xe8, 0xb4, 0x38, 0x55, 0x5a, 0x9c, 0x27, 0x26, 0x6d, 0xb3, 0xb6, 0xa4, 0xfc,
- 0xf4, 0xfb, 0xd0, 0xf2, 0xee, 0x57, 0xb1, 0xe7, 0x2a, 0x14, 0x7e, 0x01, 0xfe, 0x57, 0xe6, 0x01,
- 0xcd, 0xa3, 0x1a, 0xae, 0x75, 0x77, 0xdc, 0xee, 0x3a, 0xd8, 0xf0, 0x3e, 0x07, 0xbb, 0x19, 0x5a,
- 0xfa, 0x61, 0x4a, 0xc3, 0x17, 0x7e, 0xc4, 0xc8, 0x5c, 0xd8, 0xf7, 0xee, 0x8e, 0xeb, 0x67, 0x68,
- 0x79, 0x2c, 0x43, 0x9f, 0xc8, 0x48, 0xf8, 0x14, 0xf4, 0xe7, 0x8c, 0x7e, 0x8f, 0x73, 0x3f, 0xc1,
- 0x32, 0x57, 0xf6, 0xb6, 0x42, 0xed, 0xab, 0xec, 0xc9, 0xea, 0x39, 0xa6, 0xa8, 0x8b, 0x89, 0x73,
- 0xa2, 0x14, 0x26, 0x5f, 0x3d, 0x1d, 0xa6, 0xf7, 0x24, 0x26, 0x45, 0x02, 0x73, 0x51, 0x61, 0x76,
- 0xee, 0x8a, 0xd1, 0x61, 0x06, 0xf3, 0x18, 0x74, 0x55, 0x97, 0xfa, 0xbc, 0xc0, 0x21, 0xb7, 0xdb,
- 0xa3, 0x2d, 0x05, 0xd1, 0x9d, 0xec, 0xa8, 0x4e, 0x96, 0x84, 0x73, 0xa9, 0xb9, 0x28, 0x70, 0xe8,
- 0x81, 0xa2, 0x32, 0x39, 0x7c, 0x1b, 0xf4, 0xca, 0x22, 0x66, 0x28, 0xc2, 0x7e, 0x81, 0x44, 0x62,
- 0x77, 0x46, 0x5b, 0xe3, 0x8e, 0xd7, 0x35, 0x7b, 0xe7, 0x48, 0x24, 0xf0, 0x63, 0xb0, 0x87, 0xd2,
- 0x94, 0x7e, 0xe7, 0x97, 0x45, 0x84, 0x04, 0xf6, 0xd1, 0x5c, 0x60, 0xe6, 0xe3, 0x65, 0x41, 0xd8,
- 0xa5, 0x0d, 0x46, 0xd6, 0xb8, 0x3d, 0x6b, 0xda, 0x96, 0xf7, 0x96, 0x12, 0x7d, 0xad, 0x34, 0x9f,
- 0x48, 0xc9, 0x53, 0xa5, 0x80, 0xa7, 0x60, 0xf8, 0x9a, 0xf0, 0x8c, 0xf0, 0x00, 0x27, 0x68, 0x41,
- 0x68, 0xc9, 0xec, 0xee, 0x1a, 0x72, 0x70, 0x1b, 0x72, 0x56, 0xd3, 0x7d, 0xd8, 0xfa, 0xf1, 0xe7,
- 0x61, 0xe3, 0xf0, 0x87, 0x26, 0xb8, 0x7f, 0x4c, 0x73, 0x8e, 0x73, 0x5e, 0x72, 0xdd, 0xe7, 0x33,
- 0xd0, 0x59, 0x8f, 0x9a, 0x6a, 0x74, 0x99, 0x80, 0xdb, 0x75, 0xfd, 0xaa, 0x52, 0xe8, 0xc2, 0xbe,
- 0x94, 0x85, 0xdd, 0x84, 0xc1, 0x8f, 0x40, 0x8b, 0x51, 0x2a, 0xcc, 0x24, 0x1c, 0xd6, 0x8a, 0xb0,
- 0x99, 0xbd, 0xc5, 0xc4, 0x39, 0xc3, 0xec, 0x45, 0x8a, 0x3d, 0x4a, 0xab, 0x62, 0xa8, 0x28, 0x38,
- 0x07, 0x0f, 0x72, 0xbc, 0x14, 0xfe, 0xfa, 0xb9, 0xe1, 0x7e, 0x82, 0x78, 0xa2, 0x46, 0xa0, 0x37,
- 0x7b, 0xef, 0xcf, 0xeb, 0xe1, 0xc3, 0x98, 0x88, 0xa4, 0x0c, 0x24, 0x4e, 0x8e, 0x33, 0x16, 0xc1,
- 0x5c, 0x6c, 0x8c, 0x94, 0x04, 0xdc, 0x0d, 0x2e, 0x05, 0xe6, 0xce, 0x09, 0x5e, 0xce, 0xa4, 0xe1,
- 0x41, 0x49, 0xfc, 0x66, 0x0d, 0x3c, 0x41, 0x3c, 0x31, 0x29, 0xf8, 0xd5, 0x02, 0xbd, 0x7a, 0x66,
- 0xe0, 0x10, 0x74, 0x74, 0xaf, 0xac, 0x27, 0x5d, 0xa5, 0xb3, 0xad, 0x37, 0x4f, 0xe5, 0x3c, 0xb5,
- 0x13, 0x8c, 0x22, 0xcc, 0xfc, 0x89, 0xb9, 0xe1, 0x3b, 0x6f, 0x9a, 0xf5, 0x13, 0xa5, 0x9f, 0x75,
- 0x57, 0xd7, 0xc3, 0x1d, 0x6d, 0x4f, 0xbc, 0x1d, 0x0d, 0x99, 0xd4, 0x78, 0x53, 0x33, 0xe6, 0xff,
- 0x81, 0x37, 0xad, 0x78, 0x53, 0x73, 0xaf, 0x5f, 0x9a, 0x60, 0x5b, 0xbb, 0xe0, 0x29, 0xe8, 0x73,
- 0x12, 0xe7, 0x38, 0xf2, 0xb5, 0xc4, 0x94, 0x75, 0x50, 0x87, 0xea, 0x97, 0xfb, 0x42, 0xc9, 0x0c,
- 0xbd, 0x75, 0x75, 0x3d, 0xb4, 0xbc, 0x1e, 0xaf, 0xed, 0xc1, 0x63, 0xd0, 0x5f, 0x97, 0xc5, 0xe7,
- 0xb8, 0x2a, 0xf1, 0x6b, 0x50, 0xeb, 0x64, 0x5f, 0x60, 0xe1, 0xf5, 0x16, 0xb5, 0x15, 0xfc, 0x0c,
- 0xe8, 0x27, 0x4a, 0x1d, 0x48, 0x4d, 0xeb, 0xd6, 0x1d, 0xa7, 0xb5, 0x6f, 0xe2, 0xcc, 0xb8, 0x9e,
- 0x01, 0x58, 0x81, 0x36, 0xcd, 0x62, 0xde, 0xb6, 0x37, 0x1d, 0xe9, 0xff, 0x26, 0x72, 0xd3, 0x14,
- 0x87, 0xcf, 0x40, 0xbb, 0x7a, 0x94, 0xe1, 0x01, 0xe8, 0xe4, 0x65, 0x86, 0x99, 0xf4, 0xa8, 0x7c,
- 0xb5, 0xbc, 0xcd, 0x06, 0x1c, 0x81, 0x6e, 0x84, 0x73, 0x9a, 0x91, 0x5c, 0xf9, 0x9b, 0xca, 0x5f,
- 0xdf, 0x9a, 0x45, 0xaf, 0x56, 0x03, 0xeb, 0x6a, 0x35, 0xb0, 0xfe, 0x58, 0x0d, 0xac, 0x97, 0x37,
- 0x83, 0xc6, 0xd5, 0xcd, 0xa0, 0xf1, 0xdb, 0xcd, 0xa0, 0xf1, 0xed, 0xb3, 0xbf, 0x35, 0xaf, 0xfe,
- 0x44, 0x06, 0xe1, 0x51, 0x4c, 0xdd, 0xc5, 0x07, 0x6e, 0x46, 0xa3, 0x32, 0xc5, 0x5c, 0x7f, 0xc8,
- 0x8f, 0xaa, 0x2f, 0xf9, 0xc3, 0xf7, 0x8f, 0x36, 0x97, 0x79, 0xbc, 0x31, 0x83, 0x6d, 0x35, 0x91,
- 0x8f, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xcd, 0xc5, 0x40, 0xb7, 0xfd, 0x07, 0x00, 0x00,
+ // 949 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x95, 0xcf, 0x6f, 0xe3, 0x44,
+ 0x14, 0xc7, 0xe3, 0x34, 0xdb, 0x26, 0x93, 0x64, 0x0b, 0xd6, 0x0a, 0xb9, 0x55, 0x89, 0xb3, 0x3d,
+ 0x40, 0x2e, 0xb5, 0x37, 0x59, 0x24, 0x04, 0x0b, 0x07, 0xd2, 0x2e, 0xb4, 0x65, 0x77, 0xa9, 0x5c,
+ 0xe0, 0xc0, 0xc5, 0x1a, 0xdb, 0x13, 0x7b, 0xb4, 0xb6, 0xc7, 0xf2, 0x8c, 0x4d, 0xca, 0x89, 0x23,
+ 0xc7, 0x3d, 0x72, 0xe4, 0x7f, 0xe0, 0x9f, 0xd8, 0x63, 0x2f, 0x48, 0x9c, 0x0a, 0x4a, 0xff, 0x0b,
+ 0x4e, 0x68, 0x7e, 0xd8, 0x31, 0x65, 0x45, 0x2b, 0x6e, 0x6f, 0xde, 0xfb, 0xbe, 0x4f, 0x32, 0xef,
+ 0xc7, 0x18, 0xd8, 0xd8, 0xf3, 0xed, 0x18, 0x87, 0x11, 0xf3, 0x63, 0x8c, 0x52, 0x46, 0x6d, 0x86,
+ 0xd2, 0x00, 0xe5, 0x09, 0x4e, 0x99, 0x5d, 0x4e, 0x1b, 0x27, 0x2b, 0xcb, 0x09, 0x23, 0xfa, 0x08,
+ 0x7b, 0xbe, 0xd5, 0x4c, 0xb0, 0x1a, 0x92, 0x72, 0xba, 0xfb, 0xd0, 0x27, 0x09, 0x62, 0xde, 0x82,
+ 0xd9, 0xec, 0x22, 0x43, 0x94, 0x33, 0x4a, 0x18, 0xe3, 0x00, 0x32, 0x92, 0x4b, 0xc4, 0xee, 0xbb,
+ 0xff, 0x96, 0x08, 0x43, 0x85, 0xf7, 0x7c, 0x42, 0x13, 0x42, 0x6d, 0xec, 0xd3, 0xd9, 0x63, 0x1e,
+ 0xcc, 0x72, 0x42, 0x16, 0x55, 0x74, 0x14, 0x12, 0x12, 0xc6, 0xc8, 0x16, 0x27, 0xaf, 0x58, 0xd8,
+ 0x41, 0x91, 0x43, 0x86, 0x49, 0xaa, 0xe2, 0xe6, 0xcd, 0x38, 0xc3, 0x09, 0xa2, 0x0c, 0x26, 0x59,
+ 0x25, 0xe0, 0x37, 0xf6, 0x49, 0x8e, 0x6c, 0x79, 0x01, 0xfe, 0x0b, 0xd2, 0x52, 0x82, 0xf7, 0xd7,
+ 0x02, 0x92, 0x24, 0x98, 0x25, 0x95, 0xa8, 0x3e, 0x29, 0xe1, 0x83, 0x90, 0x84, 0x44, 0x98, 0x36,
+ 0xb7, 0xa4, 0x77, 0x7f, 0x75, 0x0f, 0xf4, 0x0f, 0x05, 0xef, 0x9c, 0x41, 0x86, 0xf4, 0x1d, 0xd0,
+ 0xf5, 0x23, 0x88, 0x53, 0x17, 0x07, 0x86, 0x36, 0xd6, 0x26, 0x3d, 0x67, 0x4b, 0x9c, 0x4f, 0x02,
+ 0xfd, 0x2b, 0xd0, 0x67, 0x79, 0x41, 0x99, 0x1b, 0xa3, 0x12, 0xc5, 0x46, 0x7b, 0xac, 0x4d, 0xfa,
+ 0xb3, 0x89, 0xf5, 0xdf, 0x15, 0xb6, 0x3e, 0xcf, 0xa1, 0xcf, 0x2f, 0x3c, 0xef, 0xbc, 0xbe, 0x32,
+ 0x5b, 0x0e, 0x10, 0x88, 0x67, 0x9c, 0xa0, 0x3f, 0x03, 0xdb, 0xe2, 0x84, 0xd3, 0xd0, 0xcd, 0x50,
+ 0x8e, 0x49, 0x60, 0x6c, 0x08, 0xe8, 0x8e, 0x25, 0xcb, 0x62, 0x55, 0x65, 0xb1, 0x8e, 0x54, 0xd9,
+ 0xe6, 0x5d, 0x4e, 0xf9, 0xf9, 0x0f, 0x53, 0x73, 0xee, 0x57, 0xb9, 0x67, 0x22, 0x55, 0x7f, 0x01,
+ 0xde, 0x2a, 0x52, 0x8f, 0xa4, 0x41, 0x03, 0xd7, 0xb9, 0x3b, 0x6e, 0xbb, 0x4e, 0x56, 0xbc, 0x2f,
+ 0xc1, 0x76, 0x02, 0x97, 0xae, 0x1f, 0x13, 0xff, 0xa5, 0x1b, 0xe4, 0x78, 0xc1, 0x8c, 0x7b, 0x77,
+ 0xc7, 0x0d, 0x13, 0xb8, 0x3c, 0xe4, 0xa9, 0x47, 0x3c, 0x53, 0x7f, 0x0a, 0x86, 0x8b, 0x9c, 0xfc,
+ 0x80, 0x52, 0x37, 0x42, 0xbc, 0x56, 0xc6, 0xa6, 0x40, 0xed, 0x8a, 0xea, 0xf1, 0xee, 0x59, 0xaa,
+ 0xa9, 0xe5, 0xd4, 0x3a, 0x16, 0x0a, 0x55, 0xaf, 0x81, 0x4c, 0x93, 0x3e, 0x8e, 0x89, 0x21, 0x43,
+ 0x94, 0x55, 0x98, 0xad, 0xbb, 0x62, 0x64, 0x9a, 0xc2, 0x3c, 0x01, 0x7d, 0x31, 0xa5, 0x2e, 0xcd,
+ 0x90, 0x4f, 0x8d, 0xee, 0x78, 0x43, 0x40, 0xe4, 0x24, 0x5b, 0x62, 0x92, 0x39, 0xe1, 0x8c, 0x6b,
+ 0xce, 0x33, 0xe4, 0x3b, 0x20, 0xab, 0x4c, 0xaa, 0x3f, 0x04, 0x83, 0x22, 0x0b, 0x73, 0x18, 0x20,
+ 0x37, 0x83, 0x2c, 0x32, 0x7a, 0xe3, 0x8d, 0x49, 0xcf, 0xe9, 0x2b, 0xdf, 0x19, 0x64, 0x91, 0xfe,
+ 0x29, 0xd8, 0x81, 0x71, 0x4c, 0xbe, 0x77, 0x8b, 0x2c, 0x80, 0x0c, 0xb9, 0x70, 0xc1, 0x50, 0xee,
+ 0xa2, 0x65, 0x86, 0xf3, 0x0b, 0x03, 0x8c, 0xb5, 0x49, 0x77, 0xde, 0x36, 0x34, 0xe7, 0x1d, 0x21,
+ 0xfa, 0x46, 0x68, 0x3e, 0xe3, 0x92, 0xa7, 0x42, 0xa1, 0x9f, 0x00, 0xf3, 0x0d, 0xe9, 0x09, 0xa6,
+ 0x1e, 0x8a, 0x60, 0x89, 0x49, 0x91, 0x1b, 0xfd, 0x1a, 0xb2, 0x77, 0x13, 0xf2, 0xbc, 0xa1, 0xfb,
+ 0xb8, 0xf3, 0xd3, 0x2f, 0x66, 0x6b, 0xff, 0xc7, 0x36, 0xb8, 0x7f, 0x48, 0x52, 0x8a, 0x52, 0x5a,
+ 0x50, 0x39, 0xe7, 0x73, 0xd0, 0xab, 0x57, 0x4d, 0x0c, 0x3a, 0x2f, 0xc0, 0xcd, 0xbe, 0x7e, 0x5d,
+ 0x29, 0x64, 0x63, 0x5f, 0xf1, 0xc6, 0xae, 0xd3, 0xf4, 0x4f, 0x40, 0x27, 0x27, 0x84, 0xa9, 0x4d,
+ 0xd8, 0x6f, 0x34, 0x61, 0xbd, 0x7b, 0xe5, 0xd4, 0x7a, 0x8e, 0xf2, 0x97, 0x31, 0x72, 0x08, 0xa9,
+ 0x9a, 0x21, 0xb2, 0xf4, 0x05, 0x78, 0x90, 0xa2, 0x25, 0x73, 0xeb, 0xf7, 0x86, 0xba, 0x11, 0xa4,
+ 0x91, 0x58, 0x81, 0xc1, 0xfc, 0x83, 0xbf, 0xae, 0xcc, 0x47, 0x21, 0x66, 0x51, 0xe1, 0x71, 0x9c,
+ 0x5d, 0x3f, 0x42, 0xb5, 0x11, 0x63, 0x8f, 0xda, 0xde, 0x05, 0x43, 0xd4, 0x3a, 0x46, 0xcb, 0x39,
+ 0x37, 0x1c, 0x9d, 0x13, 0xbf, 0xad, 0x81, 0xc7, 0x90, 0x46, 0xaa, 0x04, 0xbf, 0x69, 0x60, 0xd0,
+ 0xac, 0x8c, 0x6e, 0x82, 0x9e, 0x9c, 0x95, 0x7a, 0xd3, 0x45, 0x39, 0xbb, 0xd2, 0x79, 0xc2, 0xf7,
+ 0xa9, 0x1b, 0x21, 0x18, 0xa0, 0xdc, 0x9d, 0xaa, 0x1b, 0xbe, 0x77, 0xdb, 0xae, 0x1f, 0x0b, 0xfd,
+ 0xbc, 0xbf, 0xba, 0x32, 0xb7, 0xa4, 0x3d, 0x75, 0xb6, 0x24, 0x64, 0xda, 0xe0, 0xcd, 0xd4, 0x9a,
+ 0xff, 0x0f, 0xde, 0xac, 0xe2, 0xcd, 0xd4, 0xbd, 0x7e, 0x6d, 0x83, 0x4d, 0x19, 0xd2, 0x4f, 0xc1,
+ 0x90, 0xe2, 0x30, 0x45, 0x81, 0x2b, 0x25, 0xaa, 0xad, 0xa6, 0x55, 0x95, 0xcc, 0x92, 0xef, 0x76,
+ 0x39, 0xb5, 0xce, 0x85, 0x4e, 0xe1, 0x3b, 0x97, 0x57, 0xa6, 0xe6, 0x0c, 0x68, 0xc3, 0xa7, 0x1f,
+ 0x81, 0x61, 0xdd, 0x17, 0x97, 0xa2, 0xaa, 0xc7, 0x6f, 0x62, 0xd5, 0xe5, 0x3e, 0x47, 0xcc, 0x19,
+ 0x94, 0x8d, 0x93, 0xfe, 0x05, 0x90, 0x8f, 0x94, 0xf8, 0x4b, 0x62, 0x5f, 0x37, 0xee, 0xb8, 0xaf,
+ 0x43, 0x95, 0xa7, 0x16, 0xf6, 0x05, 0xd0, 0x2b, 0xd0, 0x7a, 0x5c, 0xd4, 0xeb, 0x76, 0xeb, 0x7f,
+ 0x7a, 0x5b, 0xa5, 0xae, 0xe7, 0x62, 0xff, 0x14, 0x74, 0xab, 0x77, 0x59, 0xdf, 0x03, 0xbd, 0xb4,
+ 0x48, 0x50, 0xce, 0x23, 0xa2, 0x64, 0x1d, 0x67, 0xed, 0xd0, 0xc7, 0xa0, 0x1f, 0xa0, 0x94, 0x24,
+ 0x38, 0x15, 0xf1, 0xb6, 0x88, 0x37, 0x5d, 0xf3, 0xe0, 0xf5, 0x6a, 0xa4, 0x5d, 0xae, 0x46, 0xda,
+ 0x9f, 0xab, 0x91, 0xf6, 0xea, 0x7a, 0xd4, 0xba, 0xbc, 0x1e, 0xb5, 0x7e, 0xbf, 0x1e, 0xb5, 0xbe,
+ 0x3b, 0xfd, 0xc7, 0xfc, 0xca, 0xaf, 0xa4, 0xe7, 0x1f, 0x84, 0xc4, 0x2e, 0x3f, 0xb2, 0x13, 0x12,
+ 0x14, 0x31, 0xa2, 0xf2, 0x6b, 0x7e, 0x50, 0x7d, 0xce, 0x1f, 0x7d, 0x78, 0xb0, 0x1e, 0x81, 0x27,
+ 0x6b, 0xd3, 0xdb, 0x14, 0x4b, 0xf9, 0xf8, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x5d, 0x2c,
+ 0x63, 0x02, 0x08, 0x00, 0x00,
}
func (m *ClientState) Marshal() (dAtA []byte, err error) {
@@ -1601,7 +1602,7 @@ func (m *Header) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.SignedHeader == nil {
- m.SignedHeader = &types2.SignedHeader{}
+ m.SignedHeader = &v1.SignedHeader{}
}
if err := m.SignedHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -1637,7 +1638,7 @@ func (m *Header) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.ValidatorSet == nil {
- m.ValidatorSet = &types2.ValidatorSet{}
+ m.ValidatorSet = &v1.ValidatorSet{}
}
if err := m.ValidatorSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -1706,7 +1707,7 @@ func (m *Header) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.TrustedValidators == nil {
- m.TrustedValidators = &types2.ValidatorSet{}
+ m.TrustedValidators = &v1.ValidatorSet{}
}
if err := m.TrustedValidators.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
diff --git a/modules/light-clients/07-tendermint/update.go b/modules/light-clients/07-tendermint/update.go
index 07b3dc1ec42..85ae08a4b6e 100644
--- a/modules/light-clients/07-tendermint/update.go
+++ b/modules/light-clients/07-tendermint/update.go
@@ -48,7 +48,7 @@ func (cs *ClientState) verifyHeader(
header *Header,
) error {
sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- currentTimestamp := sdkCtx.BlockTime()
+ currentTimestamp := sdkCtx.HeaderInfo().Time
// Retrieve trusted consensus states for each Header in misbehaviour
consState, found := GetConsensusState(clientStore, cdc, header.TrustedHeight)
diff --git a/modules/light-clients/07-tendermint/update_test.go b/modules/light-clients/07-tendermint/update_test.go
index 05ed8cfb2d2..d9d79e0d746 100644
--- a/modules/light-clients/07-tendermint/update_test.go
+++ b/modules/light-clients/07-tendermint/update_test.go
@@ -143,7 +143,7 @@ func (suite *TendermintTestSuite) TestVerifyHeader() {
header = suite.chainB.CreateTMClientHeader(suite.chainB.ChainID, suite.chainB.ProposedHeader.Height+1, trustedHeight, suite.chainB.ProposedHeader.Time, altValSet, altValSet, trustedVals, altSigners)
},
- expErr: errors.New("failed to verify header: cant trust new val set"),
+ expErr: errors.New("failed to verify header: can't trust new val set"),
},
{
name: "unsuccessful verify header: header height revision and trusted height revision mismatch",
diff --git a/modules/light-clients/07-tendermint/upgrade_test.go b/modules/light-clients/07-tendermint/upgrade_test.go
index ea653cba82e..5fcda9454d3 100644
--- a/modules/light-clients/07-tendermint/upgrade_test.go
+++ b/modules/light-clients/07-tendermint/upgrade_test.go
@@ -583,8 +583,7 @@ func (suite *TendermintTestSuite) TestVerifyUpgrade() {
upgradedConsensusStateProof,
)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err, "verify upgrade failed on valid case: %s", tc.name)
clientState, ok := suite.chainA.GetClientState(path.EndpointA.ClientID).(*ibctm.ClientState)
diff --git a/modules/light-clients/08-wasm/Dockerfile b/modules/light-clients/08-wasm/Dockerfile
index 317a9b2a3fe..2877f026ef3 100644
--- a/modules/light-clients/08-wasm/Dockerfile
+++ b/modules/light-clients/08-wasm/Dockerfile
@@ -1,4 +1,5 @@
-FROM golang:1.22-alpine3.20 AS builder-base
+FROM golang:1.23.4-alpine as builder
+
ARG LIBWASM_VERSION
ARG TARGETARCH
diff --git a/modules/light-clients/08-wasm/client/cli/tx.go b/modules/light-clients/08-wasm/client/cli/tx.go
index da371b37f09..222418c4924 100644
--- a/modules/light-clients/08-wasm/client/cli/tx.go
+++ b/modules/light-clients/08-wasm/client/cli/tx.go
@@ -7,14 +7,15 @@ import (
"github.com/spf13/cobra"
+ govcli "cosmossdk.io/x/gov/client/cli"
+ govtypes "cosmossdk.io/x/gov/types"
+
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
"github.com/cosmos/cosmos-sdk/version"
- govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported"
diff --git a/modules/light-clients/08-wasm/go.mod b/modules/light-clients/08-wasm/go.mod
index 59cd53f576a..40751a39438 100644
--- a/modules/light-clients/08-wasm/go.mod
+++ b/modules/light-clients/08-wasm/go.mod
@@ -1,85 +1,106 @@
module github.com/cosmos/ibc-go/modules/light-clients/08-wasm
-go 1.22.7
-
-toolchain go1.22.8
-
-replace github.com/cosmos/ibc-go/v9 => ../../../
-
-replace github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
+go 1.23.4
require (
- cosmossdk.io/api v0.7.6
- cosmossdk.io/client/v2 v2.0.0-beta.5
- cosmossdk.io/collections v0.4.0
- cosmossdk.io/core v0.11.1
+ cosmossdk.io/api v0.8.0
+ cosmossdk.io/client/v2 v2.0.0-beta.6
+ cosmossdk.io/collections v1.0.0-rc.1
+ cosmossdk.io/core v1.0.0
cosmossdk.io/errors v1.0.1
- cosmossdk.io/log v1.4.1
+ cosmossdk.io/log v1.5.0
cosmossdk.io/math v1.4.0
- cosmossdk.io/store v1.1.1
+ cosmossdk.io/store v1.10.0-rc.1.0.20241218084712-ca559989da43
cosmossdk.io/tools/confix v0.1.2
+ cosmossdk.io/x/accounts v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1
+ cosmossdk.io/x/accounts/defaults/lockup v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/bank v0.0.0-20241218110910-47409028a73d
cosmossdk.io/x/circuit v0.1.1
- cosmossdk.io/x/evidence v0.1.1
- cosmossdk.io/x/feegrant v0.1.1
- cosmossdk.io/x/tx v0.13.6
+ cosmossdk.io/x/consensus v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/distribution v0.0.0-20240906090851-36d9b25e8981
+ cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337
+ cosmossdk.io/x/evidence v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/feegrant v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a
+ cosmossdk.io/x/group v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/mint v0.0.0-20240909082436-01c0e9ba3581
+ cosmossdk.io/x/nft v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/params v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190
+ cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/staking v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/tx v1.0.0-alpha.3
cosmossdk.io/x/upgrade v0.1.4
- github.com/CosmWasm/wasmvm/v2 v2.1.2
- github.com/cometbft/cometbft v0.38.15
- github.com/cosmos/cosmos-db v1.1.0
- github.com/cosmos/cosmos-sdk v0.50.10
+ github.com/CosmWasm/wasmvm/v2 v2.1.4
+ github.com/cometbft/cometbft v1.0.0
+ github.com/cometbft/cometbft/api v1.0.0
+ github.com/cosmos/cosmos-db v1.1.1
+ github.com/cosmos/cosmos-sdk v0.53.0
github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/ibc-go/v9 v9.0.0
github.com/golang/protobuf v1.5.4
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/prysmaticlabs/prysm/v5 v5.1.2 // used by simapp for custom querier
- github.com/spf13/cast v1.7.0
+ github.com/spf13/cast v1.7.1
github.com/spf13/cobra v1.8.1
github.com/spf13/viper v1.19.0
github.com/stretchr/testify v1.10.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/grpc v1.68.1
+ google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53
+ google.golang.org/grpc v1.69.2
)
require (
- cloud.google.com/go v0.115.0 // indirect
- cloud.google.com/go/auth v0.6.0 // indirect
- cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
- cloud.google.com/go/compute/metadata v0.5.0 // indirect
- cloud.google.com/go/iam v1.1.9 // indirect
- cloud.google.com/go/storage v1.41.0 // indirect
- cosmossdk.io/depinject v1.0.0 // indirect
+ buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 // indirect
+ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.8.1 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.5.2 // indirect
+ cloud.google.com/go/iam v1.1.13 // indirect
+ cloud.google.com/go/storage v1.43.0 // indirect
+ cosmossdk.io/core/testing v0.0.1 // indirect
+ cosmossdk.io/depinject v1.1.0 // indirect
+ cosmossdk.io/schema v1.0.0 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/DataDog/datadog-go v4.8.3+incompatible // indirect
- github.com/DataDog/zstd v1.5.5 // indirect
+ github.com/DataDog/zstd v1.5.6 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
- github.com/aws/aws-sdk-go v1.44.224 // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // indirect
+ github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.2.0 // indirect
github.com/bits-and-blooms/bitset v1.13.0 // indirect
- github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
+ github.com/bytedance/sonic v1.12.6 // indirect
+ github.com/bytedance/sonic/loader v0.2.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chzyer/readline v1.5.1 // indirect
- github.com/cockroachdb/apd/v2 v2.0.2 // indirect
+ github.com/cloudwego/base64x v0.1.4 // indirect
+ github.com/cloudwego/iasm v0.2.0 // indirect
+ github.com/cockroachdb/apd/v3 v3.2.1 // indirect
github.com/cockroachdb/errors v1.11.3 // indirect
- github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect
+ github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v1.1.2 // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
- github.com/cometbft/cometbft-db v0.14.1 // indirect
+ github.com/cometbft/cometbft-db v1.0.1 // indirect
github.com/consensys/bavard v0.1.13 // indirect
github.com/consensys/gnark-crypto v0.12.1 // indirect
github.com/cosmos/btcutil v1.0.5 // indirect
github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect
github.com/cosmos/go-bip39 v1.0.0 // indirect
github.com/cosmos/gogogateway v1.2.0 // indirect
- github.com/cosmos/iavl v1.2.0 // indirect
+ github.com/cosmos/iavl v1.3.4 // indirect
github.com/cosmos/ics23/go v0.11.0 // indirect
github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect
- github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 // indirect
+ github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect
github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
github.com/creachadair/atomicfile v0.3.1 // indirect
@@ -88,19 +109,18 @@ require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
- github.com/desertbit/timer v1.0.1 // indirect
- github.com/dgraph-io/badger/v4 v4.2.0 // indirect
- github.com/dgraph-io/ristretto v0.1.1 // indirect
+ github.com/dgraph-io/badger/v4 v4.5.0 // indirect
+ github.com/dgraph-io/ristretto/v2 v2.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/dvsekhvalnov/jose2go v1.7.0 // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
github.com/ethereum/go-ethereum v1.14.12 // indirect
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect
- github.com/fatih/color v1.17.0 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/getsentry/sentry-go v0.28.1 // indirect
+ github.com/fsnotify/fsnotify v1.8.0 // indirect
+ github.com/getsentry/sentry-go v0.29.0 // indirect
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
@@ -110,7 +130,6 @@ require (
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
@@ -118,46 +137,48 @@ require (
github.com/google/flatbuffers v24.3.25+incompatible // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/orderedcode v0.0.1 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.5 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
github.com/gorilla/handlers v1.5.2 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-getter v1.7.4 // indirect
+ github.com/hashicorp/go-getter v1.7.6 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-metrics v0.5.3 // indirect
- github.com/hashicorp/go-plugin v1.6.1 // indirect
+ github.com/hashicorp/go-plugin v1.6.2 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
+ github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/golang-lru v1.0.2 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/hashicorp/yamux v0.1.2 // indirect
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e // indirect
github.com/holiman/uint256 v1.3.1 // indirect
- github.com/huandu/skiplist v1.2.0 // indirect
+ github.com/huandu/skiplist v1.2.1 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
- github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
- github.com/klauspost/compress v1.17.9 // indirect
- github.com/klauspost/cpuid/v2 v2.2.8 // indirect
+ github.com/klauspost/compress v1.17.11 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.9 // indirect
- github.com/linxGnu/grocksdb v1.9.2 // indirect
- github.com/magiconair/properties v1.8.7 // indirect
+ github.com/linxGnu/grocksdb v1.9.3 // indirect
+ github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
+ github.com/magiconair/properties v1.8.9 // indirect
github.com/manifoldco/promptui v0.9.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/mattn/go-runewidth v0.0.15 // indirect
+ github.com/mdp/qrterminal/v3 v3.2.0 // indirect
github.com/minio/highwayhash v1.0.3 // indirect
github.com/minio/sha256-simd v1.0.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
@@ -166,22 +187,24 @@ require (
github.com/mmcloughlin/addchain v0.4.0 // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/mtibben/percent v0.2.1 // indirect
+ github.com/muesli/termenv v0.15.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
github.com/oklog/run v1.1.0 // indirect
- github.com/pelletier/go-toml/v2 v2.2.2 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.60.1 // indirect
+ github.com/prometheus/common v0.61.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 // indirect
github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect
github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
- github.com/rogpeppe/go-internal v1.12.0 // indirect
+ github.com/rivo/uniseg v0.4.4 // indirect
+ github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
@@ -201,37 +224,79 @@ require (
github.com/tidwall/btree v1.7.0 // indirect
github.com/tklauser/go-sysconf v0.3.13 // indirect
github.com/tklauser/numcpus v0.7.0 // indirect
- github.com/ulikunitz/xz v0.5.11 // indirect
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
+ github.com/ulikunitz/xz v0.5.12 // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
github.com/zondax/hid v0.9.2 // indirect
github.com/zondax/ledger-go v0.14.3 // indirect
+ gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
+ gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
go.etcd.io/bbolt v1.4.0-alpha.1 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
- go.opentelemetry.io/otel v1.29.0 // indirect
- go.opentelemetry.io/otel/metric v1.29.0 // indirect
- go.opentelemetry.io/otel/trace v1.29.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
+ go.opentelemetry.io/otel v1.31.0 // indirect
+ go.opentelemetry.io/otel/metric v1.31.0 // indirect
+ go.opentelemetry.io/otel/trace v1.31.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.28.0 // indirect
- golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
- golang.org/x/net v0.30.0 // indirect
- golang.org/x/oauth2 v0.23.0 // indirect
- golang.org/x/sync v0.8.0 // indirect
- golang.org/x/sys v0.26.0 // indirect
- golang.org/x/term v0.25.0 // indirect
- golang.org/x/text v0.19.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- google.golang.org/api v0.186.0 // indirect
- google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/protobuf v1.35.2 // indirect
+ golang.org/x/arch v0.12.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
+ golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
+ golang.org/x/net v0.32.0 // indirect
+ golang.org/x/oauth2 v0.24.0 // indirect
+ golang.org/x/sync v0.10.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/time v0.6.0 // indirect
+ google.golang.org/api v0.192.0 // indirect
+ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
+ google.golang.org/protobuf v1.36.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.1 // indirect
- nhooyr.io/websocket v1.8.11 // indirect
pgregory.net/rapid v1.1.0 // indirect
+ rsc.io/qr v0.2.0 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
+
+replace github.com/cosmos/ibc-go/v9 => ../../../
+
+replace github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
+
+replace github.com/cosmos/ibc-go/modules/capability => ../../capability
+
+//TODO: remove everything below after tags are created
+replace (
+ cosmossdk.io/api => cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608
+ cosmossdk.io/client/v2 => cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608
+ cosmossdk.io/core => cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608
+ cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608
+ cosmossdk.io/x/accounts => cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/lockup => cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/multisig => cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/authz => cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/bank => cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/circuit => cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/consensus => cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/distribution => cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/epochs => cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/evidence => cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/feegrant => cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/gov => cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/group => cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/mint => cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/nft => cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/params => cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/protocolpool => cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/slashing => cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/staking => cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/tx => cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938
+ cosmossdk.io/x/upgrade => cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608
+ github.com/cometbft/cometbft => github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f
+ // pseudo version lower than the latest tag
+ github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b
+)
diff --git a/modules/light-clients/08-wasm/go.sum b/modules/light-clients/08-wasm/go.sum
index bb8361dc04a..06858e0b96c 100644
--- a/modules/light-clients/08-wasm/go.sum
+++ b/modules/light-clients/08-wasm/go.sum
@@ -1,3 +1,7 @@
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 h1:LBP+N3ehp1hseHYlIIHlU0gMM3aGYDcgx/H//Pk12ko=
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1/go.mod h1:pab5p7+q6IAI+R+Z2MQ+hP7ZV+FP2mcbucv6xs5WFPk=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 h1:5wJBiYyPUS2xpqLJKm7ZEKx1VhesPOXXx5y+JxgVSX4=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1/go.mod h1:VItWFs9dzQsqOin45pYbA4O/SRdqMPDs4XPZBHL+u2w=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -30,8 +34,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
-cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
-cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
@@ -46,10 +50,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby
cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
-cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=
-cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
-cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
-cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
+cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo=
+cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
@@ -72,8 +76,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
-cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
-cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
+cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo=
+cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
@@ -111,12 +115,14 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97
cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
-cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE=
-cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ=
+cloud.google.com/go/iam v1.1.13 h1:7zWBXG9ERbMLrzQBRhFliAV+kjcRToDTgQT3CTwYyv4=
+cloud.google.com/go/iam v1.1.13/go.mod h1:K8mY0uSXwEXS30KrnVb+j54LB/ntfZu1dr+4zFMNbus=
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
+cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk=
+cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4=
cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
@@ -173,8 +179,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
-cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0=
-cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80=
+cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
+cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
@@ -186,36 +192,74 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
-cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY=
-cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38=
-cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I=
-cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as=
-cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s=
-cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0=
-cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA=
-cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0=
-cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050=
-cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608 h1:0266beLan2snXZMeELYMpTVcFjlSgzHhLBKxSuNVZUI=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608 h1:umN3k+AZ91ZjYv3CDiTgFDaWe22w3JxpeJmepUwKXV8=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608/go.mod h1:Xxz5u4rK+ArCsRo9TMSirg6jPMdva6BHv9Db65OkN/Q=
+cosmossdk.io/collections v1.0.0-rc.1 h1:Mzv0YKZJ6aloy4oSnMnyl8b6PtM2dTdDlzRR/079TyM=
+cosmossdk.io/collections v1.0.0-rc.1/go.mod h1:nOgrEpyMFOWBy8QmSbq/T6Tgtm2IyOFvxDRWk+DI97k=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608 h1:w+/cxqYHud1plzCTIvEBtab6RqpgAl2C5Hgn1l4p+oo=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608/go.mod h1:gCTZBT00tI2zTQy65aSolV3aUnQDqpVgz5yOp96LpGg=
+cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
+cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
+cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
+cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
-cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
-cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU=
+cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g=
+cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI=
cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ=
cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk=
-cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y=
-cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=
+cosmossdk.io/schema v1.0.0 h1:/diH4XJjpV1JQwuIozwr+A4uFuuwanFdnw2kKeiXwwQ=
+cosmossdk.io/schema v1.0.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608 h1:NaFVgzmO3YFX+l7696SdDTtvJR0MTjjwSe0sX+inAI4=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608/go.mod h1:eZNgZKvZRlDUk8CE3LTDVMAcSM7zLOet2S8fByQkF3s=
cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4=
cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo=
-cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ=
-cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q=
-cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4=
-cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc=
-cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8=
-cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ=
-cosmossdk.io/x/tx v0.13.6 h1:qCiZJ+yK5MsSdUByjOUrfm3sk7aZk1AuYufX22VLC1M=
-cosmossdk.io/x/tx v0.13.6/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w=
-cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38=
-cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608 h1:No84LXBp0kEzJfAqorxrgqzmzqOpHhbs8IK2nBpVQJY=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608/go.mod h1:wADXnci9qeFwOQ09qiyf1uLdI4n/RSSTG8mSM9hmxys=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1 h1:sVAOVQLbdmzLmjnWLhAhIN65HTmSMGBIwU2uTeSCEp0=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1/go.mod h1:52PyilJMRraVwNcG58q4t7OSzSHApqNfJheq+mNB+qw=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608 h1:nMu0DD9qutZ7dzIySxTRnLYvZtockBghVkwBHyuwBLI=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608/go.mod h1:m0eg/A4J5fmXFNGEldQpeTrMr9PFWaVIFjbDYes0j9I=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608 h1:JL+VXHmb8xqwU7ToR2RG0V2BTmE+t1PkJ880xKi46Tc=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608/go.mod h1:huNjmnJuvPXAT5zvK8S29X0u9DpCa3X9ZCUd3bJ8bng=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608 h1:MzRTC+W0Uv40yfFNegDskcisgui9lQdeG9FZxOixATk=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608/go.mod h1:GMLM+m3Il+QTfOrQG08sFJXlKw95UDKPIOYcuSwjbzQ=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608 h1:lbtU7rYltk2axJ5h1DgPamVosuZEeyOAaqYPQpQBH4g=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608/go.mod h1:GN02Rosc2O/vCNBnXqY35vA2hoMmRQeCKd81FuoMzmE=
+cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608 h1:ATB7FV12GCjS+KN2Fx8B878LbwzNP4bkzsznRqMmn3k=
+cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608/go.mod h1:d4a/F6pXE2KWJdshiRxCPKyW6h5gAnAWmSCtlRrhcYk=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608 h1:lstvqRuVEDtRxiF9+LM16SpRriq0O+5lMHzsGKheXH4=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608/go.mod h1:ib+kqbNMsj6n7/LvW+qi24/1kp/ApWJpsnCWY5yN6Mk=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608 h1:hYFPPs5WsMWj/1sRpw6Aqmioph3qw5VN76geVxtaWtI=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608/go.mod h1:bG9SiC6YsVOpsKgOd+b+t3Kl4GLb9T6RjhBKesPn+Gg=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608 h1:UZSqhiAi1mKi8DE+OLGMrXSoenSl4PkyQT7xxNfr9Bw=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608/go.mod h1:PLdiJlSC0XveXA3vJ0E4n1NCG78UeHXwEk0razSnEk4=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608 h1:KqJ+F0YVwFlu06gEoWHvGvdC1DYXDL5Rykra61/pY4Q=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608/go.mod h1:YBMj0T87xliEfldeZHC60AqyZoLoy1wJzAAgaaQubBM=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608 h1:iSOOM7vAa0LuJ9xKZ7k34g5uyy9WQyfKbnAPmnf8Abc=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608/go.mod h1:yIgJCAGBnM3sull2qACQP+uMsEoogyNO6OXz82z3tVg=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608 h1:F+w/ofuUDxFyyk6t7kt7cdcBsTa2gA7zuvCEplB871A=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608/go.mod h1:ynGp02hnYhVidQiL9KOKeiZnn0h+PSEJb+XjgKH6+v4=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608 h1:ll6Pk+WoPlusW2uy8HTXupL+mees6mNohS4dfGYJsZ0=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608/go.mod h1:L8fBvuIwBQzABO/cYEOpekmaKlR4ELclrrGNZ6r//sg=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608 h1:t0A/ip5m09OuAY0bvpnfxJhD1/dL44JYNwffy5boqB4=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608/go.mod h1:apbBgC0mKZTbgvW2ACPcNBl0z8HjCp7R9ZBns7F6J2E=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608 h1:bB3FhjvPZfkS3EksYB3YR7muxGk0/rr6U993a7ETHx0=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608/go.mod h1:H1QoaISMz78OyBwXKU4gp8Gmwd1EVWq+Lb9P3BUfXUM=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608 h1:ZD/gSJbfpC2WzXr17xq5UkJBQd/BfBVajzKrieu6zjQ=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608/go.mod h1:btgbNMPZJWZLd03ef2AblrpJ7e9ocpTvA0xUw0hIHew=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608 h1:3rdbR/782gMtQo+1yxH+wuhJKd1jm/4X0pBgQX7pDp4=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608/go.mod h1:xLb6tQ33fgSOmwlMui9UjLzI9xmOclfjG2g+/z4XiUc=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608 h1:+GBTBLH54gKT2dFlUgN/XzawdBG/9U5djPecjr7meas=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608/go.mod h1:BlYhkjtZZdKXQP9mBiVwRbaduXtDKEJHQC3dZ6fZBS0=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608 h1:aycIQRLzdtuI99FkTRo4Y2QerkfKqZRYNN2BPESEc8A=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608/go.mod h1:4Zyt59oTQdaKitlYyz9K7d8Mi32e+K5NliOf9HAj5Wo=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938 h1:kqbOiJpmSBE03Isw7KY27N4oCSaOcG28oaJgCLh9Rhk=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938/go.mod h1:xlJjZV1wxZBTCP+ygZx9pNT/XxsfHDPf1H0VhHaUp5w=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608 h1:80l+duTMRKnszkWXolEs1n+1j4RFYd41mrV24P79vcY=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608/go.mod h1:5GIkumZszCtSzsXcTtL2YP4mIU25Rn3t0y51JWzzUDI=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
@@ -229,46 +273,34 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/CosmWasm/wasmvm/v2 v2.1.2 h1:GkJ5bAsRlLHfIQVg/FY1VHwLyBwlCjAhDea0B8L+e20=
-github.com/CosmWasm/wasmvm/v2 v2.1.2/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg=
+github.com/CosmWasm/wasmvm/v2 v2.1.4 h1:7EUVQjBxXHkVjL2AqqXD7hMEe0dmoNn2li9E4PWRAnA=
+github.com/CosmWasm/wasmvm/v2 v2.1.4/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q=
github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
-github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
-github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
+github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY=
+github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I=
github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
-github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ=
-github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
-github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/bazelbuild/rules_go v0.23.2 h1:Wxu7JjqnF78cKZbsBsARLSXx/jlGaSLCnUV3mTlyHvM=
github.com/bazelbuild/rules_go v0.23.2/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -278,7 +310,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
-github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E=
github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
@@ -287,14 +318,17 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurT
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c=
github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE=
-github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
-github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
-github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
+github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
+github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
+github.com/bytedance/sonic v1.12.6 h1:/isNmCUF2x3Sh8RAp/4mh4ZGkcFAX/hLrzrK3AvpRzk=
+github.com/bytedance/sonic v1.12.6/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
+github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E=
+github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
-github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
-github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU=
github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
@@ -314,8 +348,11 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
+github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
+github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
+github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -325,15 +362,14 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
-github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=
+github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k0egdR5V6eALQYq2qbSmukrkgIh/0A=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
@@ -342,29 +378,27 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg=
-github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ=
-github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ=
-github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f h1:rPWKqyc+CeuddICqlqptf+3NPE8exbC9SOGuDPTEN3k=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f/go.mod h1:MqZ5E5jLU1JdP10FSRXhItpm+GdHMbW7Myv3UARLxqg=
+github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE=
+github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk=
+github.com/cometbft/cometbft/api v1.0.0 h1:gGBwvsJi/gnHJEtwYfjPIGs2AKg/Vfa1ZuKCPD1/Ko4=
+github.com/cometbft/cometbft/api v1.0.0/go.mod h1:EkQiqVSu/p2ebrZEnB2z6Re7r8XNe//M7ylR0qEwWm0=
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=
github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=
-github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI=
-github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg=
+github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM=
+github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
-github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM=
-github.com/cosmos/cosmos-sdk v0.50.10/go.mod h1:6Eesrx3ZE7vxBZWpK++30H+Uc7Q4ahQWCL7JKU/LEdU=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b h1:ZaEAV5tsUTnyWEC/Gt8DXHKBANDyx70PVCiPOEVnuHk=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b/go.mod h1:ecJnx3s3oQK5BR7vu25fYSD2/ND9YLGkVpST7uiBkT0=
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE=
@@ -372,15 +406,14 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ
github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
-github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM=
-github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI=
+github.com/cosmos/iavl v1.3.4 h1:A0RUAms7TZ0L6EFrrBIPg4Dy7qD9vvD5lJKUxEXURLM=
+github.com/cosmos/iavl v1.3.4/go.mod h1:T6SfBcyhulVIY2G/ZtAtQm/QiJvsuhIos52V4dWYk88=
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM=
github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 h1:B23RM5CtuNCgvEffdaMXNZxOH3fVOtNEfEVviOs4364=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4/go.mod h1:O7A2Q93QyD0m69LQmnDgOSvHGF5URFBTgY2QsxpdqSs=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 h1:9o9xcAsD+JAJQTnI9sRwdCSz28o3zHqqgKaHBYcXP+s=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9/go.mod h1:gfJFGujP9PIuiyu9AfewNjtVx6cqUh6cNFXjEa3RObo=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I=
@@ -391,7 +424,6 @@ github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84
github.com/creachadair/atomicfile v0.3.1/go.mod h1:mwfrkRxFKwpNAflYZzytbSwxvbK6fdGRRlp0KEQc0qU=
github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6QKQDhQ=
github.com/creachadair/tomledit v0.0.24/go.mod h1:9qHbShRWQzSCcn617cMzg4eab1vbLCOjOshAWSzWr8U=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U=
github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
@@ -407,34 +439,22 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
-github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo=
-github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE=
-github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs=
-github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak=
-github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
-github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgraph-io/badger/v4 v4.5.0 h1:TeJE3I1pIWLBjYhIYCA1+uxrjWEoJXImFBMEBVSm16g=
+github.com/dgraph-io/badger/v4 v4.5.0/go.mod h1:ysgYmIeG8dS/E8kwxT7xHyc7MkmwNYLRoYnFbr7387A=
+github.com/dgraph-io/ristretto/v2 v2.0.0 h1:l0yiSOtlJvc0otkqyMaDNysg8E9/F/TYZwMbxscNOAQ=
+github.com/dgraph-io/ristretto/v2 v2.0.0/go.mod h1:FVFokF2dRqXyPyeMnK1YDy8Fc6aTe0IKgbcd03CYeEk=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo=
github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -453,25 +473,21 @@ github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
-github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
-github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k=
-github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg=
+github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
+github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/getsentry/sentry-go v0.29.0 h1:YtWluuCFg9OfcqnaujpY918N/AhCCwarIDWOYSBAjCA=
+github.com/getsentry/sentry-go v0.29.0/go.mod h1:jhPesDAL0Q0W2+2YEuVOvdWmVtdsr1+jtBrlDEVWwLY=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -479,7 +495,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU=
github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
@@ -498,36 +513,22 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
-github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
-github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -563,7 +564,6 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
@@ -619,10 +619,9 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -641,42 +640,28 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
-github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
-github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
-github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0=
-github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
+github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4=
+github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -684,24 +669,17 @@ github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJ
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE=
github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI=
-github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0=
+github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog=
+github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
+github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
@@ -710,12 +688,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8=
+github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns=
github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU=
github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=
github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e h1:wCMygKUQhmcQAjlk2Gquzq6dLmyMv2kF+llRspoRgrk=
@@ -729,59 +703,44 @@ github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
-github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
-github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
-github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
+github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w=
+github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=
-github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
-github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=
-github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
+github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
-github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
-github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
+github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
+github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -794,16 +753,14 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
-github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/linxGnu/grocksdb v1.9.2 h1:O3mzvO0wuzQ9mtlHbDrShixyVjVbmuqTjFrzlf43wZ8=
-github.com/linxGnu/grocksdb v1.9.2/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
-github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
-github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik=
+github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
+github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
+github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
+github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
+github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -811,7 +768,6 @@ github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@@ -819,27 +775,20 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
+github.com/mdp/qrterminal/v3 v3.2.0 h1:qteQMXO3oyTK4IHwj2mWsKYYRBOp1Pj2WRYFYYNTCdk=
+github.com/mdp/qrterminal/v3 v3.2.0/go.mod h1:XGGuua4Lefrl7TLEsSONiD+UEjQXJZ4mPzF+gWYIJkk=
github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
@@ -858,74 +807,47 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
+github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
+github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
-github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s=
-github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
-github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
+github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
+github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss=
github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
-github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
-github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
-github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
-github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
-github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
-github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
+github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
+github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -933,41 +855,27 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
-github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc=
-github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
+github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ=
+github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/prysmaticlabs/fastssz v0.0.0-20241008181541-518c4ce73516 h1:xuVAdtz5ShYblG2sPyb4gw01DF8InbOI/kBCQjk7NiM=
@@ -978,68 +886,50 @@ github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b h1
github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b/go.mod h1:HRuvtXLZ4WkaB1MItToVH2e8ZwKwZPY5/Rcby+CvvLY=
github.com/prysmaticlabs/prysm/v5 v5.1.2 h1:ib9D7Drh7QPoetJPnYXAHaArmjIreXPZ0FboW9EMzT8=
github.com/prysmaticlabs/prysm/v5 v5.1.2/go.mod h1:ykj3Bl9dHv35cC7fRw6Cd1aCd9l+eNvInHY6gsPbEig=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
-github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/shamaton/msgpack/v2 v2.2.0 h1:IP1m01pHwCrMa6ZccP9B3bqxEMKMSmMVAVKk54g3L/Y=
github.com/shamaton/msgpack/v2 v2.2.0/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
-github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
-github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
+github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -1056,8 +946,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
@@ -1076,19 +964,14 @@ github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08
github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0=
github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4=
github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
-github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
-github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
-github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
+github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli/v2 v2.26.0 h1:3f3AMg3HpThFNT4I++TKOejZO8yU55t3JnnSr4S4QEI=
github.com/urfave/cli/v2 v2.26.0/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -1103,12 +986,12 @@ github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=
github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I=
go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4=
go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -1118,45 +1001,41 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
-go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
-go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
-go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc=
-go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
-go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo=
-go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok=
-go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
-go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
+go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
+go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
+go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
+go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
+go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
+go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
+go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
+go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
+go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
+go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
+go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
+golang.org/x/arch v0.12.0 h1:UsYJhbzPYGsT0HbEdmYcqtCv8UNGvnaL561NnIUvaKg=
+golang.org/x/arch v0.12.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
-golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1167,9 +1046,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI=
-golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1199,12 +1077,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -1215,7 +1089,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1223,7 +1096,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
@@ -1242,7 +1114,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
@@ -1255,8 +1126,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
-golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
+golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1282,8 +1153,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
-golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
-golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
+golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1298,14 +1169,11 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
-golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1317,17 +1185,13 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1337,14 +1201,11 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1366,7 +1227,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1391,19 +1251,17 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
-golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
-golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1414,16 +1272,13 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
-golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
-golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
+golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1431,7 +1286,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@@ -1441,8 +1295,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1451,7 +1303,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1492,9 +1343,6 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1543,10 +1391,9 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
-google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=
-google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=
+google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0=
+google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
@@ -1559,7 +1406,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
@@ -1591,7 +1437,6 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -1659,21 +1504,16 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 h1:fVoAXEKA4+yufmbdVYv+SE73+cPZbbbe8paLsHfkK+U=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53/go.mod h1:riSXTwQ4+nqmPGtobMFyW5FqVAmIs0St6VPp4Ug7CE4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
@@ -1683,7 +1523,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
@@ -1706,8 +1545,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0=
-google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
+google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
+google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1724,8 +1563,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
-google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1733,22 +1572,17 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -1764,7 +1598,6 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1780,12 +1613,12 @@ k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
-nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
-nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
+rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
@@ -1794,7 +1627,5 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMm
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/modules/light-clients/08-wasm/internal/types/store_test.go b/modules/light-clients/08-wasm/internal/types/store_test.go
index 583ada4b16f..b063acbe0b2 100644
--- a/modules/light-clients/08-wasm/internal/types/store_test.go
+++ b/modules/light-clients/08-wasm/internal/types/store_test.go
@@ -60,7 +60,7 @@ func GetSimApp(chain *ibctesting.TestChain) *simapp.SimApp {
// setupTestingApp provides the duplicated simapp which is specific to the 08-wasm module on chain creation.
func setupTestingApp() (ibctesting.TestingApp, map[string]json.RawMessage) {
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{}, nil)
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.AppOptionsMap{}, nil)
return app, app.DefaultGenesis()
}
@@ -417,8 +417,7 @@ func (suite *TypesTestSuite) TestNewClientRecoveryStore() {
suite.Run(tc.name, func() {
tc.malleate()
- expPass := !tc.expPanic
- if expPass {
+ if !tc.expPanic {
suite.Require().NotPanics(func() {
internaltypes.NewClientRecoveryStore(subjectStore, substituteStore)
})
diff --git a/modules/light-clients/08-wasm/keeper/contract_keeper_test.go b/modules/light-clients/08-wasm/keeper/contract_keeper_test.go
index 86e213aef79..c22ffd4a378 100644
--- a/modules/light-clients/08-wasm/keeper/contract_keeper_test.go
+++ b/modules/light-clients/08-wasm/keeper/contract_keeper_test.go
@@ -179,8 +179,7 @@ func (suite *KeeperTestSuite) TestWasmInstantiate() {
wasmClientKeeper := GetSimApp(suite.chainA).WasmClientKeeper
err := wasmClientKeeper.WasmInstantiate(suite.chainA.GetContext(), defaultWasmClientID, clientStore, &types.ClientState{Checksum: checksum}, initMsg)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expError)
@@ -318,8 +317,7 @@ func (suite *KeeperTestSuite) TestWasmMigrate() {
wasmClientKeeper := GetSimApp(suite.chainA).WasmClientKeeper
err = wasmClientKeeper.WasmMigrate(suite.chainA.GetContext(), clientStore, &types.ClientState{}, defaultWasmClientID, []byte("{}"))
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expError)
@@ -396,8 +394,7 @@ func (suite *KeeperTestSuite) TestWasmQuery() {
wasmClientKeeper := GetSimApp(suite.chainA).WasmClientKeeper
res, err := wasmClientKeeper.WasmQuery(suite.chainA.GetContext(), endpoint.ClientID, clientStore, wasmClientState, payload)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotNil(res)
} else {
@@ -552,8 +549,7 @@ func (suite *KeeperTestSuite) TestWasmSudo() {
wasmClientKeeper := GetSimApp(suite.chainA).WasmClientKeeper
res, err := wasmClientKeeper.WasmSudo(suite.chainA.GetContext(), endpoint.ClientID, clientStore, wasmClientState, payload)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotNil(res)
} else {
diff --git a/modules/light-clients/08-wasm/keeper/genesis.go b/modules/light-clients/08-wasm/keeper/genesis.go
index 53ada55069f..ab7a5e6b389 100644
--- a/modules/light-clients/08-wasm/keeper/genesis.go
+++ b/modules/light-clients/08-wasm/keeper/genesis.go
@@ -1,16 +1,16 @@
package keeper
import (
- wasmvm "github.com/CosmWasm/wasmvm/v2"
+ "context"
- sdk "github.com/cosmos/cosmos-sdk/types"
+ wasmvm "github.com/CosmWasm/wasmvm/v2"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
)
// InitGenesis initializes the 08-wasm module's state from a provided genesis
// state.
-func (k Keeper) InitGenesis(ctx sdk.Context, gs types.GenesisState) error {
+func (k Keeper) InitGenesis(ctx context.Context, gs types.GenesisState) error {
storeFn := func(code wasmvm.WasmCode, _ uint64) (wasmvm.Checksum, uint64, error) {
checksum, err := k.GetVM().StoreCodeUnchecked(code)
return checksum, 0, err
@@ -27,7 +27,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, gs types.GenesisState) error {
// ExportGenesis returns the 08-wasm module's exported genesis. This includes the code
// for all contracts previously stored.
-func (k Keeper) ExportGenesis(ctx sdk.Context) types.GenesisState {
+func (k Keeper) ExportGenesis(ctx context.Context) types.GenesisState {
checksums, err := k.GetAllChecksums(ctx)
if err != nil {
panic(err)
diff --git a/modules/light-clients/08-wasm/keeper/genesis_test.go b/modules/light-clients/08-wasm/keeper/genesis_test.go
index 8accae7476c..a246921175f 100644
--- a/modules/light-clients/08-wasm/keeper/genesis_test.go
+++ b/modules/light-clients/08-wasm/keeper/genesis_test.go
@@ -3,8 +3,9 @@ package keeper_test
import (
"encoding/hex"
+ govtypes "cosmossdk.io/x/gov/types"
+
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
wasmtesting "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
diff --git a/modules/light-clients/08-wasm/keeper/grpc_query_test.go b/modules/light-clients/08-wasm/keeper/grpc_query_test.go
index 4ede97842fe..fd92d3cc7bb 100644
--- a/modules/light-clients/08-wasm/keeper/grpc_query_test.go
+++ b/modules/light-clients/08-wasm/keeper/grpc_query_test.go
@@ -7,9 +7,9 @@ import (
"google.golang.org/grpc/status"
errorsmod "cosmossdk.io/errors"
+ govtypes "cosmossdk.io/x/gov/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
wasmtesting "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
diff --git a/modules/light-clients/08-wasm/keeper/keeper.go b/modules/light-clients/08-wasm/keeper/keeper.go
index 5e05a7a44c4..0be1bb9064c 100644
--- a/modules/light-clients/08-wasm/keeper/keeper.go
+++ b/modules/light-clients/08-wasm/keeper/keeper.go
@@ -86,10 +86,11 @@ func (k Keeper) newQueryHandler(ctx sdk.Context, callerID string) *queryHandler
// contract code before storing:
// - Size bounds are checked. Contract length must not be 0 or exceed a specific size (maxWasmSize).
// - The contract must not have already been stored in store.
-func (k Keeper) storeWasmCode(ctx sdk.Context, code []byte, storeFn func(code wasmvm.WasmCode, gasLimit uint64) (wasmvm.Checksum, uint64, error)) ([]byte, error) {
+func (k Keeper) storeWasmCode(ctx context.Context, code []byte, storeFn func(code wasmvm.WasmCode, gasLimit uint64) (wasmvm.Checksum, uint64, error)) ([]byte, error) {
+ sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
var err error
if types.IsGzip(code) {
- ctx.GasMeter().ConsumeGas(types.VMGasRegister.UncompressCosts(len(code)), "Uncompress gzip bytecode")
+ sdkCtx.GasMeter().ConsumeGas(types.VMGasRegister.UncompressCosts(len(code)), "Uncompress gzip bytecode")
code, err = types.Uncompress(code, types.MaxWasmSize)
if err != nil {
return nil, errorsmod.Wrap(err, "failed to store contract")
@@ -112,9 +113,9 @@ func (k Keeper) storeWasmCode(ctx sdk.Context, code []byte, storeFn func(code wa
}
// create the code in the vm
- gasLeft := types.VMGasRegister.RuntimeGasForContract(ctx)
+ gasLeft := types.VMGasRegister.RuntimeGasForContract(sdkCtx)
vmChecksum, gasUsed, err := storeFn(code, gasLeft)
- types.VMGasRegister.ConsumeRuntimeGas(ctx, gasUsed)
+ types.VMGasRegister.ConsumeRuntimeGas(sdkCtx, gasUsed)
if err != nil {
return nil, errorsmod.Wrap(err, "failed to store contract")
}
diff --git a/modules/light-clients/08-wasm/keeper/keeper_test.go b/modules/light-clients/08-wasm/keeper/keeper_test.go
index dacea997a09..9974671d270 100644
--- a/modules/light-clients/08-wasm/keeper/keeper_test.go
+++ b/modules/light-clients/08-wasm/keeper/keeper_test.go
@@ -12,12 +12,12 @@ import (
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
+ govtypes "cosmossdk.io/x/gov/types"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/runtime"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper"
wasmtesting "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing"
@@ -51,7 +51,7 @@ func init() {
// setupTestingApp provides the duplicated simapp which is specific to the 08-wasm module on chain creation.
func setupTestingApp() (ibctesting.TestingApp, map[string]json.RawMessage) {
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{}, nil)
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.AppOptionsMap{}, nil)
return app, app.DefaultGenesis()
}
@@ -113,7 +113,7 @@ func (suite *KeeperTestSuite) setupWasmWithMockVM() (ibctesting.TestingApp, map[
})
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{}, suite.mockVM)
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.AppOptionsMap{}, suite.mockVM)
// reset DefaultTestingAppInit to its original value
ibctesting.DefaultTestingAppInit = setupTestingApp
diff --git a/modules/light-clients/08-wasm/keeper/msg_server_test.go b/modules/light-clients/08-wasm/keeper/msg_server_test.go
index 250f2f7c967..9d3d2be9640 100644
--- a/modules/light-clients/08-wasm/keeper/msg_server_test.go
+++ b/modules/light-clients/08-wasm/keeper/msg_server_test.go
@@ -8,9 +8,10 @@ import (
wasmvm "github.com/CosmWasm/wasmvm/v2"
wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types"
+ govtypes "cosmossdk.io/x/gov/types"
+
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
wasmtesting "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
diff --git a/modules/light-clients/08-wasm/keeper/querier.go b/modules/light-clients/08-wasm/keeper/querier.go
index 3c8bda4515b..20fa56b6ca0 100644
--- a/modules/light-clients/08-wasm/keeper/querier.go
+++ b/modules/light-clients/08-wasm/keeper/querier.go
@@ -12,7 +12,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
)
@@ -146,7 +146,7 @@ func AcceptListStargateQuerier(acceptedQueries []string, queryRouter types.Query
return nil, wasmvmtypes.UnsupportedRequest{Kind: fmt.Sprintf("No route to query '%s'", request.Path)}
}
- res, err := route(ctx, &abci.RequestQuery{
+ res, err := route(ctx, &abci.QueryRequest{
Data: request.Data,
Path: request.Path,
})
diff --git a/modules/light-clients/08-wasm/keeper/querier_test.go b/modules/light-clients/08-wasm/keeper/querier_test.go
index e9362fb24f4..e1b31efe032 100644
--- a/modules/light-clients/08-wasm/keeper/querier_test.go
+++ b/modules/light-clients/08-wasm/keeper/querier_test.go
@@ -119,8 +119,7 @@ func (suite *KeeperTestSuite) TestCustomQuery() {
res, err := wasmClientKeeper.WasmQuery(suite.chainA.GetContext(), endpoint.ClientID, clientStore, clientState, types.QueryMsg{Status: &types.StatusMsg{}})
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().Nil(err)
suite.Require().NotNil(res)
} else {
@@ -330,8 +329,7 @@ func (suite *KeeperTestSuite) TestStargateQuery() {
// due to test case: "success: verify membership query"
res, err := wasmClientKeeper.WasmQuery(suite.chainA.GetContext(), endpoint.ClientID, clientStore, clientState, payload)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().NotNil(res)
} else {
diff --git a/modules/light-clients/08-wasm/keeper/snapshotter.go b/modules/light-clients/08-wasm/keeper/snapshotter.go
index 8175005050c..fa8163c64c2 100644
--- a/modules/light-clients/08-wasm/keeper/snapshotter.go
+++ b/modules/light-clients/08-wasm/keeper/snapshotter.go
@@ -10,8 +10,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
-
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
)
@@ -64,7 +62,7 @@ func (ws *WasmSnapshotter) SnapshotExtension(height uint64, payloadWriter snapsh
return err
}
- ctx := sdk.NewContext(cacheMS, cmtproto.Header{}, false, nil)
+ ctx := sdk.NewContext(cacheMS, false, nil)
checksums, err := ws.keeper.GetAllChecksums(ctx)
if err != nil {
@@ -128,7 +126,7 @@ func (ws *WasmSnapshotter) processAllItems(
payloadReader snapshot.ExtensionPayloadReader,
cb func(sdk.Context, *Keeper, []byte) error,
) error {
- ctx := sdk.NewContext(ws.cms, cmtproto.Header{Height: int64(height)}, false, nil)
+ ctx := sdk.NewContext(ws.cms, false, nil).WithBlockHeight(int64(height))
for {
payload, err := payloadReader()
if err == io.EOF {
diff --git a/modules/light-clients/08-wasm/keeper/snapshotter_test.go b/modules/light-clients/08-wasm/keeper/snapshotter_test.go
index 94be36131fc..00602f0ff9f 100644
--- a/modules/light-clients/08-wasm/keeper/snapshotter_test.go
+++ b/modules/light-clients/08-wasm/keeper/snapshotter_test.go
@@ -4,10 +4,11 @@ import (
"encoding/hex"
"time"
+ govtypes "cosmossdk.io/x/gov/types"
+
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
wasmtesting "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing/simapp"
diff --git a/modules/light-clients/08-wasm/light_client_module_test.go b/modules/light-clients/08-wasm/light_client_module_test.go
index 53979978335..43ae4027ae4 100644
--- a/modules/light-clients/08-wasm/light_client_module_test.go
+++ b/modules/light-clients/08-wasm/light_client_module_test.go
@@ -223,8 +223,7 @@ func (suite *WasmTestSuite) TestTimestampAtHeight() {
timestamp, err := lightClientModule.TimestampAtHeight(suite.chainA.GetContext(), clientID, height)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
suite.Require().Equal(expectedTimestamp, timestamp)
} else {
@@ -351,8 +350,7 @@ func (suite *WasmTestSuite) TestInitialize() {
err = lightClientModule.Initialize(suite.chainA.GetContext(), clientID, clientStateBz, consensusStateBz)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorContains(err, tc.expError.Error())
@@ -495,8 +493,7 @@ func (suite *WasmTestSuite) TestVerifyMembership() {
err = lightClientModule.VerifyMembership(suite.chainA.GetContext(), clientID, proofHeight, 0, 0, proof, path, value)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
clientStore := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), clientID)
suite.Require().NoError(err)
@@ -661,8 +658,7 @@ func (suite *WasmTestSuite) TestVerifyNonMembership() {
err = lightClientModule.VerifyNonMembership(suite.chainA.GetContext(), clientID, proofHeight, 0, 0, proof, path)
- expPass := tc.expError == nil
- if expPass {
+ if tc.expError == nil {
clientStore := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), clientID)
suite.Require().NoError(err)
@@ -772,8 +768,7 @@ func (suite *WasmTestSuite) TestVerifyClientMessage() {
err = lightClientModule.VerifyClientMessage(suite.chainA.GetContext(), clientID, clientMsg)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
} else {
suite.Require().ErrorIs(err, tc.expErr)
@@ -933,8 +928,7 @@ func (suite *WasmTestSuite) TestVerifyUpgradeAndUpdateState() {
upgradedConsensusStateProof,
)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
// verify new client state and consensus state
@@ -1530,8 +1524,7 @@ func (suite *WasmTestSuite) TestRecoverClient() {
err = lightClientModule.RecoverClient(suite.chainA.GetContext(), subjectClientID, substituteClientID)
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
suite.Require().NoError(err)
subjectClientStore := suite.chainA.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.chainA.GetContext(), subjectClientID)
diff --git a/modules/light-clients/08-wasm/module.go b/modules/light-clients/08-wasm/module.go
index b70a6067651..cee85f7ce88 100644
--- a/modules/light-clients/08-wasm/module.go
+++ b/modules/light-clients/08-wasm/module.go
@@ -9,14 +9,11 @@ import (
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
- sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
- simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
- "github.com/cosmos/cosmos-sdk/x/gov/simulation"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/client/cli"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper"
@@ -24,52 +21,59 @@ import (
)
var (
- _ module.AppModule = (*AppModule)(nil)
- _ module.AppModuleBasic = (*AppModule)(nil)
- _ module.HasProposalMsgs = (*AppModule)(nil)
- _ module.HasGenesis = (*AppModule)(nil)
- _ module.HasName = (*AppModule)(nil)
- _ module.HasConsensusVersion = (*AppModule)(nil)
- _ module.HasServices = (*AppModule)(nil)
- _ appmodule.AppModule = (*AppModule)(nil)
+ _ module.AppModule = (*AppModule)(nil)
+ _ module.AppModuleBasic = (*AppModule)(nil)
+ _ module.HasGenesis = (*AppModule)(nil)
+ _ appmodule.HasConsensusVersion = (*AppModule)(nil)
+ _ module.HasServices = (*AppModule)(nil)
+ _ appmodule.AppModule = (*AppModule)(nil)
)
+// AppModule represents the AppModule for this module
+type AppModule struct {
+ cdc codec.Codec
+ keeper keeper.Keeper
+}
+
+// NewAppModule creates a new 08-wasm module
+func NewAppModule(cdc codec.Codec, k keeper.Keeper) AppModule {
+ return AppModule{
+ cdc: cdc,
+ keeper: k,
+ }
+}
+
// IsOnePerModuleType implements the depinject.OnePerModuleType interface.
func (AppModule) IsOnePerModuleType() {}
// IsAppModule implements the appmodule.AppModule interface.
func (AppModule) IsAppModule() {}
-// AppModuleBasic defines the basic application module used by the Wasm light client.
-// Only the RegisterInterfaces function needs to be implemented. All other function perform
-// a no-op.
-type AppModuleBasic struct{}
-
// Name returns the tendermint module name.
-func (AppModuleBasic) Name() string {
+func (AppModule) Name() string {
return types.ModuleName
}
// RegisterLegacyAminoCodec performs a no-op. The Wasm client does not support amino.
-func (AppModuleBasic) RegisterLegacyAminoCodec(*codec.LegacyAmino) {}
+func (AppModule) RegisterLegacyAminoCodec(coreregistry.AminoRegistrar) {}
// RegisterInterfaces registers module concrete types into protobuf Any. This allows core IBC
// to unmarshal Wasm light client types.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {
- types.RegisterInterfaces(registry)
+func (AppModule) RegisterInterfaces(reg coreregistry.InterfaceRegistrar) {
+ types.RegisterInterfaces(reg)
}
// DefaultGenesis returns an empty state, i.e. no contracts
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
- return cdc.MustMarshalJSON(&types.GenesisState{
+func (am AppModule) DefaultGenesis() json.RawMessage {
+ return am.cdc.MustMarshalJSON(&types.GenesisState{
Contracts: []types.Contract{},
})
}
// ValidateGenesis performs a no-op.
-func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error {
+func (am AppModule) ValidateGenesis(bz json.RawMessage) error {
var gs types.GenesisState
- if err := cdc.UnmarshalJSON(bz, &gs); err != nil {
+ if err := am.cdc.UnmarshalJSON(bz, &gs); err != nil {
return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err)
}
@@ -77,36 +81,23 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingCo
}
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for Wasm client module.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
+func (AppModule) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx))
if err != nil {
panic(err)
}
}
-// GetTxCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+// GetTxCmd implements AppModule interface
+func (AppModule) GetTxCmd() *cobra.Command {
return cli.NewTxCmd()
}
-// GetQueryCmd implements AppModuleBasic interface
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+// GetQueryCmd implements AppModule interface
+func (AppModule) GetQueryCmd() *cobra.Command {
return cli.GetQueryCmd()
}
-// AppModule represents the AppModule for this module
-type AppModule struct {
- AppModuleBasic
- keeper keeper.Keeper
-}
-
-// NewAppModule creates a new 08-wasm module
-func NewAppModule(k keeper.Keeper) AppModule {
- return AppModule{
- keeper: k,
- }
-}
-
// RegisterServices registers module services.
func (am AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterMsgServer(cfg.MsgServer(), am.keeper)
@@ -121,24 +112,20 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return 2 }
-// ProposalMsgs returns msgs used for governance proposals for simulations.
-func (AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg {
- return simulation.ProposalMsgs()
-}
-
-func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, bz json.RawMessage) {
+func (am AppModule) InitGenesis(ctx context.Context, bz json.RawMessage) error {
var gs types.GenesisState
- err := cdc.UnmarshalJSON(bz, &gs)
+ err := am.cdc.UnmarshalJSON(bz, &gs)
if err != nil {
panic(fmt.Errorf("failed to unmarshal %s genesis state: %s", am.Name(), err))
}
err = am.keeper.InitGenesis(ctx, gs)
if err != nil {
- panic(err)
+ return err
}
+ return nil
}
-func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
+func (am AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
gs := am.keeper.ExportGenesis(ctx)
- return cdc.MustMarshalJSON(&gs)
+ return am.cdc.MarshalJSON(&gs)
}
diff --git a/modules/light-clients/08-wasm/simulation/proposals.go b/modules/light-clients/08-wasm/simulation/proposals.go
index 2767d5fa52c..cee7a3e94a2 100644
--- a/modules/light-clients/08-wasm/simulation/proposals.go
+++ b/modules/light-clients/08-wasm/simulation/proposals.go
@@ -1,8 +1,11 @@
package simulation
import (
+ "context"
"math/rand"
+ coreaddress "cosmossdk.io/core/address"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
@@ -21,7 +24,7 @@ const (
// ProposalMsgs defines the module weighted proposals' contents
func ProposalMsgs() []simtypes.WeightedProposalMsg {
return []simtypes.WeightedProposalMsg{
- simulation.NewWeightedProposalMsg(
+ simulation.NewWeightedProposalMsgX(
OpWeightMsgStoreCode,
DefaultWeightMsgStoreCode,
SimulateMsgStoreCode,
@@ -30,11 +33,11 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg {
}
// SimulateMsgStoreCode returns a random MsgStoreCode for the 08-wasm module
-func SimulateMsgStoreCode(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg {
+func SimulateMsgStoreCode(ctx context.Context, r *rand.Rand, _ []simtypes.Account, addrCdc coreaddress.Codec) (sdk.Msg, error) {
var signer sdk.AccAddress = address.Module("gov")
return &types.MsgStoreCode{
Signer: signer.String(),
WasmByteCode: []byte{0x01},
- }
+ }, nil
}
diff --git a/modules/light-clients/08-wasm/simulation/proposals_test.go b/modules/light-clients/08-wasm/simulation/proposals_test.go
index cc1f6dd9925..5e64ede961d 100644
--- a/modules/light-clients/08-wasm/simulation/proposals_test.go
+++ b/modules/light-clients/08-wasm/simulation/proposals_test.go
@@ -6,12 +6,11 @@ import (
"github.com/stretchr/testify/require"
+ codecaddress "github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
-
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/simulation"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
)
@@ -21,7 +20,7 @@ func TestProposalMsgs(t *testing.T) {
s := rand.NewSource(1)
r := rand.New(s)
- ctx := sdk.NewContext(nil, cmtproto.Header{}, true, nil)
+ ctx := sdk.NewContext(nil, true, nil)
accounts := simtypes.RandomAccounts(r, 3)
// execute ProposalMsgs function
@@ -32,7 +31,9 @@ func TestProposalMsgs(t *testing.T) {
require.Equal(t, simulation.OpWeightMsgStoreCode, w0.AppParamsKey())
require.Equal(t, simulation.DefaultWeightMsgStoreCode, w0.DefaultWeight())
- msg := w0.MsgSimulatorFn()(r, ctx, accounts)
+ codec := codecaddress.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())
+ msg, err := w0.MsgSimulatorFn()(ctx, r, accounts, codec)
+ require.NoError(t, err)
msgStoreCode, ok := msg.(*types.MsgStoreCode)
require.True(t, ok)
diff --git a/modules/light-clients/08-wasm/testing/simapp/ante_handler.go b/modules/light-clients/08-wasm/testing/simapp/ante_handler.go
index a95f9657b5f..e45f9795704 100644
--- a/modules/light-clients/08-wasm/testing/simapp/ante_handler.go
+++ b/modules/light-clients/08-wasm/testing/simapp/ante_handler.go
@@ -31,18 +31,15 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
}
anteDecorators := []sdk.AnteDecorator{
- ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
+ ante.NewSetUpContextDecorator(options.Environment, options.ConsensusKeeper), // outermost AnteDecorator. SetUpContext must be called first
ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker),
- ante.NewValidateBasicDecorator(),
- ante.NewTxTimeoutHeightDecorator(),
+ ante.NewValidateBasicDecorator(options.Environment),
+ ante.NewTxTimeoutHeightDecorator(options.Environment),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker),
- ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators
ante.NewValidateSigCountDecorator(options.AccountKeeper),
- ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
- ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
- ante.NewIncrementSequenceDecorator(options.AccountKeeper),
+ ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler, options.SigGasConsumer, options.AccountAbstractionKeeper),
ibcante.NewRedundantRelayDecorator(options.IBCKeeper),
}
diff --git a/modules/light-clients/08-wasm/testing/simapp/app.go b/modules/light-clients/08-wasm/testing/simapp/app.go
index bd4ce547337..f8d27ad0ce9 100644
--- a/modules/light-clients/08-wasm/testing/simapp/app.go
+++ b/modules/light-clients/08-wasm/testing/simapp/app.go
@@ -9,25 +9,63 @@ import (
"path/filepath"
"strconv"
- dbm "github.com/cosmos/cosmos-db"
"github.com/cosmos/gogoproto/proto"
"github.com/spf13/cast"
autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
"cosmossdk.io/client/v2/autocli"
- "cosmossdk.io/core/appmodule"
+ coreaddress "cosmossdk.io/core/address"
+ corestore "cosmossdk.io/core/store"
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
- "cosmossdk.io/x/circuit"
- circuitkeeper "cosmossdk.io/x/circuit/keeper"
- circuittypes "cosmossdk.io/x/circuit/types"
+ "cosmossdk.io/x/accounts"
+ "cosmossdk.io/x/accounts/accountstd"
+ baseaccount "cosmossdk.io/x/accounts/defaults/base"
+ "cosmossdk.io/x/accounts/defaults/lockup"
+ "cosmossdk.io/x/accounts/defaults/multisig"
+ "cosmossdk.io/x/authz"
+ authzkeeper "cosmossdk.io/x/authz/keeper"
+ authzmodule "cosmossdk.io/x/authz/module"
+ "cosmossdk.io/x/bank"
+ bankkeeper "cosmossdk.io/x/bank/keeper"
+ banktypes "cosmossdk.io/x/bank/types"
+ "cosmossdk.io/x/consensus"
+ consensusparamkeeper "cosmossdk.io/x/consensus/keeper"
+ consensusparamtypes "cosmossdk.io/x/consensus/types"
+ distr "cosmossdk.io/x/distribution"
+ distrkeeper "cosmossdk.io/x/distribution/keeper"
+ distrtypes "cosmossdk.io/x/distribution/types"
+ epochstypes "cosmossdk.io/x/epochs/types"
"cosmossdk.io/x/evidence"
evidencekeeper "cosmossdk.io/x/evidence/keeper"
evidencetypes "cosmossdk.io/x/evidence/types"
"cosmossdk.io/x/feegrant"
feegrantkeeper "cosmossdk.io/x/feegrant/keeper"
feegrantmodule "cosmossdk.io/x/feegrant/module"
+ "cosmossdk.io/x/gov"
+ govkeeper "cosmossdk.io/x/gov/keeper"
+ govtypes "cosmossdk.io/x/gov/types"
+ govv1beta1 "cosmossdk.io/x/gov/types/v1beta1"
+ "cosmossdk.io/x/group"
+ groupkeeper "cosmossdk.io/x/group/keeper"
+ groupmodule "cosmossdk.io/x/group/module"
+ "cosmossdk.io/x/mint"
+ mintkeeper "cosmossdk.io/x/mint/keeper"
+ minttypes "cosmossdk.io/x/mint/types"
+ nftkeeper "cosmossdk.io/x/nft/keeper"
+ "cosmossdk.io/x/params"
+ paramskeeper "cosmossdk.io/x/params/keeper"
+ paramstypes "cosmossdk.io/x/params/types"
+ poolkeeper "cosmossdk.io/x/protocolpool/keeper"
+ pooltypes "cosmossdk.io/x/protocolpool/types"
+ "cosmossdk.io/x/slashing"
+ slashingkeeper "cosmossdk.io/x/slashing/keeper"
+ slashingtypes "cosmossdk.io/x/slashing/types"
+ "cosmossdk.io/x/staking"
+ stakingkeeper "cosmossdk.io/x/staking/keeper"
+ stakingtypes "cosmossdk.io/x/staking/types"
+ txdecode "cosmossdk.io/x/tx/decode"
"cosmossdk.io/x/tx/signing"
"cosmossdk.io/x/upgrade"
upgradekeeper "cosmossdk.io/x/upgrade/keeper"
@@ -52,6 +90,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/types/msgservice"
+ sigtypes "github.com/cosmos/cosmos-sdk/types/tx/signing"
"github.com/cosmos/cosmos-sdk/version"
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
@@ -60,50 +99,17 @@ import (
"github.com/cosmos/cosmos-sdk/x/auth/posthandler"
authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation"
authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
+ txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
- "github.com/cosmos/cosmos-sdk/x/authz"
- authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
- authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module"
- "github.com/cosmos/cosmos-sdk/x/bank"
- bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- "github.com/cosmos/cosmos-sdk/x/consensus"
- consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
- consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
- "github.com/cosmos/cosmos-sdk/x/crisis"
- crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
- crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
- distr "github.com/cosmos/cosmos-sdk/x/distribution"
- distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
- distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
- "github.com/cosmos/cosmos-sdk/x/gov"
- govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
- govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- "github.com/cosmos/cosmos-sdk/x/group"
- groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper"
- groupmodule "github.com/cosmos/cosmos-sdk/x/group/module"
- "github.com/cosmos/cosmos-sdk/x/mint"
- mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
- "github.com/cosmos/cosmos-sdk/x/params"
- paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
- paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
- paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
- "github.com/cosmos/cosmos-sdk/x/slashing"
- slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- "github.com/cosmos/cosmos-sdk/x/staking"
- stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-
- abci "github.com/cometbft/cometbft/abci/types"
- cmtos "github.com/cometbft/cometbft/libs/os"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
+ cmtcrypto "github.com/cometbft/cometbft/crypto"
+ cmted25519 "github.com/cometbft/cometbft/crypto/ed25519"
wasm "github.com/cosmos/ibc-go/modules/light-clients/08-wasm"
wasmkeeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper"
@@ -135,7 +141,6 @@ import (
solomachine "github.com/cosmos/ibc-go/v9/modules/light-clients/06-solomachine"
ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint"
ibcmock "github.com/cosmos/ibc-go/v9/testing/mock"
- ibctestingtypes "github.com/cosmos/ibc-go/v9/testing/types"
)
const appName = "SimApp"
@@ -151,16 +156,19 @@ var (
// module account permissions
maccPerms = map[string][]string{
- authtypes.FeeCollectorName: nil,
- distrtypes.ModuleName: nil,
- minttypes.ModuleName: {authtypes.Minter},
- stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
- stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
- govtypes.ModuleName: {authtypes.Burner},
- ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
- ibcfeetypes.ModuleName: nil,
- icatypes.ModuleName: nil,
- ibcmock.ModuleName: nil,
+ authtypes.FeeCollectorName: nil,
+ distrtypes.ModuleName: nil,
+ minttypes.ModuleName: {authtypes.Minter},
+ stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
+ stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
+ govtypes.ModuleName: {authtypes.Burner},
+ ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
+ ibcfeetypes.ModuleName: nil,
+ icatypes.ModuleName: nil,
+ ibcmock.ModuleName: nil,
+ pooltypes.ModuleName: nil,
+ pooltypes.StreamAccount: nil,
+ pooltypes.ProtocolPoolDistrAccount: nil,
}
)
@@ -184,14 +192,14 @@ type SimApp struct {
memKeys map[string]*storetypes.MemoryStoreKey
// keepers
- AccountKeeper authkeeper.AccountKeeper
- BankKeeper bankkeeper.Keeper
+ AuthKeeper authkeeper.AccountKeeper
+ AccountsKeeper accounts.Keeper
+ BankKeeper bankkeeper.BaseKeeper
StakingKeeper *stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
- MintKeeper mintkeeper.Keeper
+ MintKeeper *mintkeeper.Keeper
DistrKeeper distrkeeper.Keeper
GovKeeper govkeeper.Keeper
- CrisisKeeper *crisiskeeper.Keeper
UpgradeKeeper *upgradekeeper.Keeper
ParamsKeeper paramskeeper.Keeper
AuthzKeeper authzkeeper.Keeper
@@ -206,7 +214,7 @@ type SimApp struct {
FeeGrantKeeper feegrantkeeper.Keeper
GroupKeeper groupkeeper.Keeper
ConsensusParamsKeeper consensusparamkeeper.Keeper
- CircuitKeeper circuitkeeper.Keeper
+ PoolKeeper poolkeeper.Keeper
// make IBC modules public for test purposes
// these modules are never directly routed to by the IBC Router
@@ -214,8 +222,7 @@ type SimApp struct {
FeeMockModule ibcmock.IBCModule
// the module manager
- ModuleManager *module.Manager
- BasicModuleManager module.BasicManager
+ ModuleManager *module.Manager
// simulation manager
simulationManager *module.SimulationManager
@@ -236,27 +243,43 @@ func init() {
// NewSimApp returns a reference to an initialized SimApp.
func NewSimApp(
logger log.Logger,
- db dbm.DB,
+ db corestore.KVStoreWithBatch,
traceStore io.Writer,
loadLatest bool,
appOpts servertypes.AppOptions,
mockVM wasmtypes.WasmEngine,
baseAppOptions ...func(*baseapp.BaseApp),
) *SimApp {
- interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
+ interfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
ProtoFiles: proto.HybridResolver,
SigningOptions: signing.Options{
- AddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(),
- },
- ValidatorAddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(),
- },
+ AddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
+ ValidatorAddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
},
})
+ if err != nil {
+ panic(err)
+ }
appCodec := codec.NewProtoCodec(interfaceRegistry)
legacyAmino := codec.NewLegacyAmino()
- txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes)
+ signingCtx := interfaceRegistry.SigningContext()
+ txDecoder, err := txdecode.NewDecoder(txdecode.Options{
+ SigningContext: signingCtx,
+ ProtoCodec: appCodec,
+ })
+ if err != nil {
+ panic(err)
+ }
+ txConfig := authtx.NewTxConfig(appCodec, signingCtx.AddressCodec(), signingCtx.ValidatorAddressCodec(), authtx.DefaultSignModes)
+
+ govModuleAddr, err := signingCtx.AddressCodec().BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ panic(err)
+ }
+
+ if err := signingCtx.Validate(); err != nil {
+ panic(err)
+ }
std.RegisterLegacyAminoCodec(legacyAmino)
std.RegisterInterfaces(interfaceRegistry)
@@ -294,11 +317,15 @@ func NewSimApp(
bApp.SetTxEncoder(txConfig.TxEncoder())
keys := storetypes.NewKVStoreKeys(
- authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey,
+ authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
- govtypes.StoreKey, group.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey,
- evidencetypes.StoreKey, ibctransfertypes.StoreKey, icacontrollertypes.StoreKey, icahosttypes.StoreKey,
- authzkeeper.StoreKey, ibcfeetypes.StoreKey, consensusparamtypes.StoreKey, circuittypes.StoreKey, wasmtypes.StoreKey,
+ govtypes.StoreKey, consensusparamtypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey,
+ evidencetypes.StoreKey,
+ authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, pooltypes.StoreKey,
+ accounts.StoreKey, epochstypes.StoreKey,
+ paramstypes.StoreKey,
+ ibcexported.StoreKey, ibctransfertypes.StoreKey, icacontrollertypes.StoreKey,
+ icahosttypes.StoreKey, ibcfeetypes.StoreKey, wasmtypes.StoreKey,
)
// register streaming services
@@ -320,41 +347,105 @@ func NewSimApp(
memKeys: memKeys,
}
+ cometService := runtime.NewContextAwareCometInfoService()
+
app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey])
// set the BaseApp's parameter store
- app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), runtime.EventService{})
+ app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), logger.With(log.ModuleKey, "x/consensus")), govModuleAddr)
bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore)
- // SDK module keepers
+ // set the version modifier
+ bApp.SetVersionModifier(consensus.ProvideAppVersionModifier(app.ConsensusParamsKeeper))
// add keepers
- app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.Bech32MainPrefix), sdk.Bech32MainPrefix, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+
+ // add keepers
+ accountsKeeper, err := accounts.NewKeeper(
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[accounts.StoreKey]), logger.With(log.ModuleKey, "x/accounts"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ signingCtx.AddressCodec(),
+ appCodec.InterfaceRegistry(),
+ txDecoder,
+ // Lockup account
+ accountstd.AddAccount(lockup.CONTINUOUS_LOCKING_ACCOUNT, lockup.NewContinuousLockingAccount),
+ accountstd.AddAccount(lockup.PERIODIC_LOCKING_ACCOUNT, lockup.NewPeriodicLockingAccount),
+ accountstd.AddAccount(lockup.DELAYED_LOCKING_ACCOUNT, lockup.NewDelayedLockingAccount),
+ accountstd.AddAccount(lockup.PERMANENT_LOCKING_ACCOUNT, lockup.NewPermanentLockingAccount),
+ accountstd.AddAccount("multisig", multisig.NewAccount),
+ // PRODUCTION: add
+ baseaccount.NewAccount("base", txConfig.SignModeHandler(), baseaccount.WithSecp256K1PubKey()),
+ )
+ if err != nil {
+ panic(err)
+ }
+
+ app.AccountsKeeper = accountsKeeper
+
+ app.AuthKeeper = authkeeper.NewAccountKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), logger.With(log.ModuleKey, "x/auth")), appCodec, authtypes.ProtoBaseAccount, accountsKeeper, maccPerms, signingCtx.AddressCodec(), sdk.Bech32MainPrefix, govModuleAddr)
+
+ blockedAddrs, err := BlockedAddresses(signingCtx.AddressCodec())
+ if err != nil {
+ panic(err)
+ }
app.BankKeeper = bankkeeper.NewBaseKeeper(
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), logger.With(log.ModuleKey, "x/bank")),
appCodec,
- runtime.NewKVStoreService(keys[banktypes.StoreKey]),
- app.AccountKeeper,
- BlockedAddresses(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- logger,
+ app.AuthKeeper,
+ blockedAddrs,
+ govModuleAddr,
+ )
+
+ // optional: enable sign mode textual by overwriting the default tx config (after setting the bank keeper)
+ enabledSignModes := append(authtx.DefaultSignModes, sigtypes.SignMode_SIGN_MODE_TEXTUAL)
+ txConfigOpts := authtx.ConfigOptions{
+ EnabledSignModes: enabledSignModes,
+ TextualCoinMetadataQueryFn: txmodule.NewBankKeeperCoinMetadataQueryFn(app.BankKeeper),
+ SigningOptions: &signing.Options{
+ AddressCodec: signingCtx.AddressCodec(),
+ ValidatorAddressCodec: signingCtx.ValidatorAddressCodec(),
+ },
+ }
+ txConfig, err = authtx.NewTxConfigWithOptions(
+ appCodec,
+ txConfigOpts,
)
+ if err != nil {
+ panic(err)
+ }
+ app.txConfig = txConfig
+
app.StakingKeeper = stakingkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr), authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ appCodec,
+ runtime.NewEnvironment(
+ runtime.NewKVStoreService(keys[stakingtypes.StoreKey]),
+ logger.With(log.ModuleKey, "x/staking"),
+ runtime.EnvWithMsgRouterService(app.MsgServiceRouter()),
+ runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.AuthKeeper,
+ app.BankKeeper,
+ app.ConsensusParamsKeeper,
+ govModuleAddr,
+ signingCtx.ValidatorAddressCodec(),
+ authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ cometService,
)
- app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), app.StakingKeeper, app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, app.StakingKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[minttypes.StoreKey]), logger.With(log.ModuleKey, "x/mint")), app.AuthKeeper, app.BankKeeper, authtypes.FeeCollectorName, govModuleAddr)
+ if err := app.MintKeeper.SetMintFn(mintkeeper.DefaultMintFn(minttypes.DefaultInflationCalculationFn, app.StakingKeeper, app.MintKeeper)); err != nil {
+ panic(err)
+ }
- app.SlashingKeeper = slashingkeeper.NewKeeper(
- appCodec, legacyAmino, runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- )
+ app.PoolKeeper = poolkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), logger.With(log.ModuleKey, "x/protocolpool")), app.AuthKeeper, app.BankKeeper, govModuleAddr)
- invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod))
- app.CrisisKeeper = crisiskeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[crisistypes.StoreKey]), invCheckPeriod,
- app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec())
+ app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[distrtypes.StoreKey]), logger.With(log.ModuleKey, "x/distribution")), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, cometService, authtypes.FeeCollectorName, govModuleAddr)
- app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[feegrant.StoreKey]), app.AccountKeeper)
+ app.SlashingKeeper = slashingkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), logger.With(log.ModuleKey, "x/slashing")),
+ appCodec, legacyAmino, app.StakingKeeper, govModuleAddr,
+ )
+
+ app.FeeGrantKeeper = feegrantkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[feegrant.StoreKey]), logger.With(log.ModuleKey, "x/feegrant")), appCodec, app.AuthKeeper.AddressCodec())
// register the staking hooks
// NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
@@ -362,17 +453,17 @@ func NewSimApp(
stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()),
)
- app.CircuitKeeper = circuitkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[circuittypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec())
- app.BaseApp.SetCircuitBreaker(&app.CircuitKeeper)
-
- app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), appCodec, app.MsgServiceRouter(), app.AccountKeeper)
+ app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), logger.With(log.ModuleKey, "x/authz"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, app.AuthKeeper.AddressCodec())
groupConfig := group.DefaultConfig()
/*
- Example of setting group params:
- groupConfig.MaxMetadataLen = 1000
+ Example of group params:
+ config.MaxExecutionPeriod = "1209600s" // example execution period in seconds
+ config.MaxMetadataLen = 1000 // example metadata length in bytes
+ config.MaxProposalTitleLen = 255 // example max title length in characters
+ config.MaxProposalSummaryLen = 10200 // example max summary length in characters
*/
- app.GroupKeeper = groupkeeper.NewKeeper(keys[group.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper, groupConfig)
+ app.GroupKeeper = groupkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[group.StoreKey]), logger.With(log.ModuleKey, "x/group"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, app.AuthKeeper, groupConfig)
// get skipUpgradeHeights from the app options
skipUpgradeHeights := map[int64]bool{}
@@ -381,21 +472,34 @@ func NewSimApp(
}
homePath := cast.ToString(appOpts.Get(flags.FlagHome))
// set the governance module account as the authority for conducting upgrades
- app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.UpgradeKeeper = upgradekeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), logger.With(log.ModuleKey, "x/upgrade"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), skipUpgradeHeights, appCodec, homePath, app.BaseApp, govModuleAddr, app.ConsensusParamsKeeper)
app.IBCKeeper = ibckeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcexported.StoreKey]), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")),
+ app.GetSubspace(ibcexported.ModuleName),
+ app.UpgradeKeeper,
+ govModuleAddr,
)
- govConfig := govtypes.DefaultConfig()
+ govRouter := govv1beta1.NewRouter()
+ govConfig := govkeeper.DefaultConfig()
/*
Example of setting gov params:
govConfig.MaxMetadataLen = 10000
*/
govKeeper := govkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[govtypes.StoreKey]), app.AccountKeeper, app.BankKeeper,
- app.StakingKeeper, app.DistrKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- )
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[govtypes.StoreKey]), logger.With(log.ModuleKey, "x/gov"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.AuthKeeper,
+ app.BankKeeper,
+ app.StakingKeeper,
+ app.PoolKeeper,
+ govConfig,
+ govModuleAddr)
+
+ // Set legacy router for backwards compatibility with gov v1beta1
+ govKeeper.SetLegacyRouter(govRouter)
app.GovKeeper = *govKeeper.SetHooks(
govtypes.NewMultiGovHooks(
@@ -403,6 +507,19 @@ func NewSimApp(
),
)
+ evidenceKeeper := evidencekeeper.NewKeeper(
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), logger.With(log.ModuleKey, "x/evidence"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.StakingKeeper,
+ app.SlashingKeeper,
+ app.ConsensusParamsKeeper,
+ app.AuthKeeper.AddressCodec(),
+ app.StakingKeeper.ConsensusAddressCodec(),
+ )
+
+ // If evidence needs to be handled for the app, set routes in router here and seal
+ app.EvidenceKeeper = *evidenceKeeper
+
// 08-wasm's Keeper can be instantiated in two different ways:
// 1. If the chain uses x/wasm:
// Both x/wasm's Keeper and 08-wasm Keeper should share the same Wasm VM instance.
@@ -418,7 +535,7 @@ func NewSimApp(
// you can use NewKeeperWithConfig constructor function and provide
// the Wasm VM configuration parameters of your choice.
// Check out the WasmConfig type definition for more information on
- // each parameter. Some parameters allow node-leve configurations.
+ // each parameter. Some parameters allow node-level configurations.
// Function DefaultWasmConfig can also be used to use default values.
//
// In the code below we use the second method because we are not using x/wasm in this app.go.
@@ -455,28 +572,32 @@ func NewSimApp(
// IBC Fee Module keeper
app.IBCFeeKeeper = ibcfeekeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))),
app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
+ app.AuthKeeper, app.BankKeeper,
)
// ICA Controller keeper
app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), app.GetSubspace(icacontrollertypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), logger.With(log.ModuleKey, "x/icacontroller"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter())),
+ app.GetSubspace(icacontrollertypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
app.IBCKeeper.ChannelKeeper,
- app.MsgServiceRouter(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ govModuleAddr,
)
// ICA Host keeper
app.ICAHostKeeper = icahostkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), app.GetSubspace(icahosttypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), logger.With(log.ModuleKey, "x/icahost"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.GetSubspace(icahosttypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.MsgServiceRouter(),
- app.GRPCQueryRouter(), authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.AuthKeeper,
+ govModuleAddr,
)
// Create IBC Router
@@ -488,10 +609,12 @@ func NewSimApp(
// Create Transfer Keeper and pass IBCFeeKeeper as expected Channel and PortKeeper
// since fee middleware will wrap the IBCKeeper for underlying application.
app.TransferKeeper = ibctransferkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), app.GetSubspace(ibctransfertypes.ModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))),
+ app.GetSubspace(ibctransfertypes.ModuleName),
app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
+ app.AuthKeeper, app.BankKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)
@@ -588,73 +711,43 @@ func NewSimApp(
wasmLightClientModule := wasm.NewLightClientModule(app.WasmClientKeeper, storeProvider)
clientKeeper.AddRoute(wasmtypes.ModuleName, &wasmLightClientModule)
- // create evidence keeper with router
- evidenceKeeper := evidencekeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), app.StakingKeeper, app.SlashingKeeper, app.AccountKeeper.AddressCodec(), runtime.ProvideCometInfoService(),
- )
- // If evidence needs to be handled for the app, set routes in router here and seal
- app.EvidenceKeeper = *evidenceKeeper
-
// **** Module Options ****
- // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment
- // we prefer to be more strict in what arguments the modules expect.
- skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants))
-
// NOTE: Any module instantiated in the module manager that is later modified
// must be passed by reference here.
app.ModuleManager = module.NewManager(
- genutil.NewAppModule(
- app.AccountKeeper, app.StakingKeeper, app,
- txConfig,
- ),
- auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
- vesting.NewAppModule(app.AccountKeeper, app.BankKeeper),
- bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)),
- crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)),
- feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry),
- gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
- mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)),
- slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry),
- distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)),
- staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)),
- upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()),
- evidence.NewAppModule(app.EvidenceKeeper),
+ genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator),
+ auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
+ vesting.NewAppModule(app.AuthKeeper, app.BankKeeper),
+ bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper),
+ feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry),
+ gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper),
+ mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper),
+ slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService),
+ distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper),
+ staking.NewAppModule(appCodec, app.StakingKeeper),
+ upgrade.NewAppModule(app.UpgradeKeeper),
+ evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService),
params.NewAppModule(app.ParamsKeeper),
- authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
- groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
+ authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry),
+ groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper),
- circuit.NewAppModule(appCodec, app.CircuitKeeper),
// IBC modules
- ibc.NewAppModule(app.IBCKeeper),
- transfer.NewAppModule(app.TransferKeeper),
- ibcfee.NewAppModule(app.IBCFeeKeeper),
- ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper),
+ ibc.NewAppModule(appCodec, app.IBCKeeper),
+ transfer.NewAppModule(appCodec, app.TransferKeeper),
+ ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper),
+ ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper),
mockModule,
// IBC light clients
- wasm.NewAppModule(app.WasmClientKeeper), // TODO(damian): see if we want to pass the lightclient module here, keeper is used in AppModule.RegisterServices etc
+ wasm.NewAppModule(appCodec, app.WasmClientKeeper), // TODO(damian): see if we want to pass the lightclient module here, keeper is used in AppModule.RegisterServices etc
ibctm.NewAppModule(tmLightClientModule),
solomachine.NewAppModule(smLightClientModule),
)
- // BasicModuleManager defines the module BasicManager is in charge of setting up basic,
- // non-dependant module elements, such as codec registration and genesis verification.
- // By default it is composed of all the module from the module manager.
- // Additionally, app module basics can be overwritten by passing them as argument.
- app.BasicModuleManager = module.NewBasicManagerFromManager(
- app.ModuleManager,
- map[string]module.AppModuleBasic{
- genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
- govtypes.ModuleName: gov.NewAppModuleBasic(
- []govclient.ProposalHandler{
- paramsclient.ProposalHandler,
- },
- ),
- })
- app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino)
- app.BasicModuleManager.RegisterInterfaces(interfaceRegistry)
+ app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino)
+ app.ModuleManager.RegisterInterfaces(interfaceRegistry)
// NOTE: upgrade module is required to be prioritized
app.ModuleManager.SetOrderPreBlockers(
@@ -681,7 +774,6 @@ func NewSimApp(
ibcmock.ModuleName,
)
app.ModuleManager.SetOrderEndBlockers(
- crisistypes.ModuleName,
govtypes.ModuleName,
stakingtypes.ModuleName,
ibcexported.ModuleName,
@@ -701,10 +793,10 @@ func NewSimApp(
genesisModuleOrder := []string{
authtypes.ModuleName,
banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName,
- slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName,
+ slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName,
ibcexported.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, ibctransfertypes.ModuleName,
icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName,
- vestingtypes.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName, wasmtypes.ModuleName,
+ vestingtypes.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, wasmtypes.ModuleName,
}
app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...)
app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...)
@@ -712,9 +804,8 @@ func NewSimApp(
// Uncomment if you want to set a custom migration order here.
// app.ModuleManager.SetOrderMigrations(custom order)
- app.ModuleManager.RegisterInvariants(app.CrisisKeeper)
app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter())
- err := app.ModuleManager.RegisterServices(app.configurator)
+ err = app.ModuleManager.RegisterServices(app.configurator)
if err != nil {
panic(err)
}
@@ -739,7 +830,7 @@ func NewSimApp(
// NOTE: this is not required apps that don't use the simulator for fuzz testing
// transactions
overrideModules := map[string]module.AppModuleSimulation{
- authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
+ authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
}
app.simulationManager = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
@@ -812,7 +903,8 @@ func NewSimApp(
// Initialize pinned codes in wasmvm as they are not persisted there
if err := app.WasmClientKeeper.InitializePinnedCodes(ctx); err != nil {
- cmtos.Exit(fmt.Sprintf("failed initialize pinned codes %s", err))
+ fmt.Printf("failed initialize pinned codes %s\n", err)
+ os.Exit(1)
}
}
@@ -823,8 +915,10 @@ func (app *SimApp) setAnteHandler(txConfig client.TxConfig) {
anteHandler, err := NewAnteHandler(
HandlerOptions{
HandlerOptions: ante.HandlerOptions{
- AccountKeeper: app.AccountKeeper,
+ AccountKeeper: app.AuthKeeper,
BankKeeper: app.BankKeeper,
+ ConsensusKeeper: app.ConsensusParamsKeeper,
+ Environment: runtime.NewEnvironment(nil, app.Logger(), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), // nil is set as the kvstoreservice to avoid module access,
FeegrantKeeper: app.FeeGrantKeeper,
SignModeHandler: txConfig.SignModeHandler(),
SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
@@ -855,7 +949,7 @@ func (app *SimApp) setPostHandler() {
func (app *SimApp) Name() string { return app.BaseApp.Name() }
// PreBlocker application updates every pre block
-func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) {
+func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.FinalizeBlockRequest) error {
return app.ModuleManager.PreBlock(ctx)
}
@@ -875,7 +969,7 @@ func (app *SimApp) Configurator() module.Configurator {
}
// InitChainer application update at chain initialization
-func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
+func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.InitChainRequest) (*abci.InitChainResponse, error) {
var genesisState GenesisState
if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
panic(err)
@@ -883,7 +977,7 @@ func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*ab
if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()); err != nil {
panic(err)
}
- return app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
+ return app.ModuleManager.InitGenesis(ctx, genesisState)
}
// LoadHeight loads a particular height
@@ -919,25 +1013,21 @@ func (app *SimApp) TxConfig() client.TxConfig {
// AutoCliOpts returns the autocli options for the app.
func (app *SimApp) AutoCliOpts() autocli.AppOptions {
- modules := make(map[string]appmodule.AppModule, 0)
- for _, m := range app.ModuleManager.Modules {
- if moduleWithName, ok := m.(module.HasName); ok {
- moduleName := moduleWithName.Name()
- if appModule, ok := moduleWithName.(appmodule.AppModule); ok {
- modules[moduleName] = appModule
- }
- }
- }
-
return autocli.AppOptions{
- Modules: modules,
+ Modules: app.ModuleManager.Modules,
ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules),
}
}
// DefaultGenesis returns a default genesis from the registered AppModuleBasic's.
func (app *SimApp) DefaultGenesis() map[string]json.RawMessage {
- return app.BasicModuleManager.DefaultGenesis(app.appCodec)
+ return app.ModuleManager.DefaultGenesis()
+}
+
+func (*SimApp) ValidatorKeyProvider() runtime.KeyGenF {
+ return func() (cmtcrypto.PrivKey, error) {
+ return cmted25519.GenPrivKey(), nil
+ }
}
// GetKey returns the KVStoreKey for the provided store key.
@@ -984,7 +1074,7 @@ func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICon
nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// Register grpc-gateway routes for all modules.
- app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
+ app.ModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// register swagger API from root so that other applications can override easily
if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil {
@@ -1025,17 +1115,31 @@ func GetMaccPerms() map[string][]string {
}
// BlockedAddresses returns all the app's blocked account addresses.
-func BlockedAddresses() map[string]bool {
+func BlockedAddresses(ac coreaddress.Codec) (map[string]bool, error) {
modAccAddrs := make(map[string]bool)
for acc := range GetMaccPerms() {
- modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true
+ addr, err := ac.BytesToString(authtypes.NewModuleAddress(acc))
+ if err != nil {
+ return nil, err
+ }
+ modAccAddrs[addr] = true
}
// allow the following addresses to receive funds
- delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- delete(modAccAddrs, authtypes.NewModuleAddress(ibcmock.ModuleName).String())
+ govAddr, err := ac.BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ return nil, err
+ }
- return modAccAddrs
+ ibcMockAddr, err := ac.BytesToString(authtypes.NewModuleAddress(ibcmock.ModuleName))
+ if err != nil {
+ return nil, err
+ }
+
+ delete(modAccAddrs, govAddr)
+ delete(modAccAddrs, ibcMockAddr)
+
+ return modAccAddrs, nil
}
// initParamsKeeper init params keeper and its subspaces
@@ -1060,11 +1164,6 @@ func (app *SimApp) GetBaseApp() *baseapp.BaseApp {
return app.BaseApp
}
-// GetStakingKeeper implements the TestingApp interface.
-func (app *SimApp) GetStakingKeeper() ibctestingtypes.StakingKeeper {
- return app.StakingKeeper
-}
-
// GetIBCKeeper implements the TestingApp interface.
func (app *SimApp) GetIBCKeeper() *ibckeeper.Keeper {
return app.IBCKeeper
diff --git a/modules/light-clients/08-wasm/testing/simapp/encoding.go b/modules/light-clients/08-wasm/testing/simapp/encoding.go
deleted file mode 100644
index ba2d01ecbcf..00000000000
--- a/modules/light-clients/08-wasm/testing/simapp/encoding.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package simapp
-
-import (
- "github.com/cosmos/cosmos-sdk/std"
-
- simappparams "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing/simapp/params"
-)
-
-// MakeTestEncodingConfig creates an EncodingConfig for testing. This function
-// should be used only in tests or when creating a new app instance (NewApp*()).
-// App user shouldn't create new codecs - use the app.AppCodec instead.
-// [DEPRECATED]
-func MakeTestEncodingConfig() simappparams.EncodingConfig {
- encodingConfig := simappparams.MakeTestEncodingConfig()
- std.RegisterLegacyAminoCodec(encodingConfig.Amino)
- std.RegisterInterfaces(encodingConfig.InterfaceRegistry)
- return encodingConfig
-}
diff --git a/modules/light-clients/08-wasm/testing/simapp/export.go b/modules/light-clients/08-wasm/testing/simapp/export.go
index 871b15cb41c..f6fe79c8649 100644
--- a/modules/light-clients/08-wasm/testing/simapp/export.go
+++ b/modules/light-clients/08-wasm/testing/simapp/export.go
@@ -2,44 +2,46 @@ package simapp
import (
"encoding/json"
- "errors"
- "log"
+ "fmt"
+ "cosmossdk.io/collections"
storetypes "cosmossdk.io/store/types"
+ slashingtypes "cosmossdk.io/x/slashing/types"
+ "cosmossdk.io/x/staking"
+ stakingtypes "cosmossdk.io/x/staking/types"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- "github.com/cosmos/cosmos-sdk/x/staking"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
)
// ExportAppStateAndValidators exports the state of the application for a genesis
// file.
-func (app *SimApp) ExportAppStateAndValidators(
- forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string,
-) (servertypes.ExportedApp, error) {
+func (app *SimApp) ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (servertypes.ExportedApp, error) {
// as if they could withdraw from the start of the next block
- ctx := app.NewContext(true)
+ ctx := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()})
// We export at last height + 1, because that's the height at which
- // Tendermint will start InitChain.
+ // CometBFT will start InitChain.
height := app.LastBlockHeight() + 1
if forZeroHeight {
height = 0
app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs)
}
- genState, err := app.ModuleManager.ExportGenesis(ctx, app.appCodec)
+ genState, err := app.ModuleManager.ExportGenesisForModules(ctx, modulesToExport)
if err != nil {
return servertypes.ExportedApp{}, err
}
+
appState, err := json.MarshalIndent(genState, "", " ")
if err != nil {
return servertypes.ExportedApp{}, err
}
validators, err := staking.WriteValidators(ctx, app.StakingKeeper)
+
return servertypes.ExportedApp{
AppState: appState,
Validators: validators,
@@ -48,13 +50,14 @@ func (app *SimApp) ExportAppStateAndValidators(
}, err
}
-// prepare for fresh start at zero height
+// prepForZeroHeightGenesis prepares for fresh start at zero height
// NOTE zero height genesis is a temporary feature which will be deprecated
-// in favour of export at a block height
+//
+// in favor of export at a block height
func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) {
applyAllowedAddrs := false
- // check if there is a allowed address list
+ // check if there is an allowed address list
if len(jailAllowedAddrs) > 0 {
applyAllowedAddrs = true
}
@@ -62,20 +65,17 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
allowedAddrsMap := make(map[string]bool)
for _, addr := range jailAllowedAddrs {
- _, err := sdk.ValAddressFromBech32(addr)
+ _, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(addr)
if err != nil {
- log.Fatal(err)
+ panic(err)
}
allowedAddrsMap[addr] = true
}
- /* Just to be safe, assert the invariants on current state. */
- app.CrisisKeeper.AssertInvariants(ctx)
-
/* Handle fee distribution state. */
// withdraw all validator commission
- err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
+ err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
@@ -92,37 +92,45 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
if err != nil {
panic(err)
}
+
for _, delegation := range dels {
- valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)
+ valAddr, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(delegation.ValidatorAddress)
if err != nil {
panic(err)
}
- delAddr, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress)
+ delAddr, err := app.InterfaceRegistry().SigningContext().AddressCodec().StringToBytes(delegation.DelegatorAddress)
if err != nil {
panic(err)
}
+
_, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr)
}
// clear validator slash events
- app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx)
+ err = app.DistrKeeper.ValidatorSlashEvents.Clear(ctx, nil)
+ if err != nil {
+ panic(err)
+ }
// clear validator historical rewards
- app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx)
+ err = app.DistrKeeper.ValidatorHistoricalRewards.Clear(ctx, nil)
+ if err != nil {
+ panic(err)
+ }
// set context height to zero
height := ctx.BlockHeight()
ctx = ctx.WithBlockHeight(0)
// reinitialize all validators
- err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
- valBz, err := sdk.ValAddressFromBech32(val.GetOperator())
+ err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
+ valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
}
- // donate any unwithdrawn outstanding reward fraction tokens to the community pool
- scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)
+ // donate any unwithdrawn outstanding reward tokens to the community pool
+ rewards, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)
if err != nil {
panic(err)
}
@@ -130,7 +138,7 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
if err != nil {
panic(err)
}
- feePool.CommunityPool = feePool.CommunityPool.Add(scraps...)
+ feePool.DecimalPool = feePool.DecimalPool.Add(rewards...) // distribution will allocate this to the protocolpool eventually
if err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil {
panic(err)
}
@@ -146,21 +154,23 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
// reinitialize all delegations
for _, del := range dels {
- valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress)
+ valAddr, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(del.ValidatorAddress)
if err != nil {
panic(err)
}
- delAddr, err := sdk.AccAddressFromBech32(del.DelegatorAddress)
+ delAddr, err := app.InterfaceRegistry().SigningContext().AddressCodec().StringToBytes(del.DelegatorAddress)
if err != nil {
panic(err)
}
- err = app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr)
- if err != nil {
- panic(err)
+
+ if err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr); err != nil {
+ // never called as BeforeDelegationCreated always returns nil
+ panic(fmt.Errorf("error while incrementing period: %w", err))
}
- err = app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr)
- if err != nil {
- panic(err)
+
+ if err := app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr); err != nil {
+ // never called as AfterDelegationModified always returns nil
+ panic(fmt.Errorf("error while creating a new delegation period record: %w", err))
}
}
@@ -174,7 +184,7 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
for i := range red.Entries {
red.Entries[i].CreationHeight = 0
}
- err := app.StakingKeeper.SetRedelegation(ctx, red)
+ err = app.StakingKeeper.SetRedelegation(ctx, red)
if err != nil {
panic(err)
}
@@ -185,23 +195,26 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
}
// iterate through unbonding delegations, reset creation height
- err = app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) {
- for i := range ubd.Entries {
- ubd.Entries[i].CreationHeight = 0
- }
-
- if err := app.StakingKeeper.SetUnbondingDelegation(ctx, ubd); err != nil {
- panic(err)
- }
- return false
- })
+ err = app.StakingKeeper.UnbondingDelegations.Walk(
+ ctx,
+ nil,
+ func(_ collections.Pair[[]byte, []byte], ubd stakingtypes.UnbondingDelegation) (stop bool, err error) {
+ for i := range ubd.Entries {
+ ubd.Entries[i].CreationHeight = 0
+ }
+ err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
+ if err != nil {
+ return true, err
+ }
+ return false, err
+ },
+ )
if err != nil {
panic(err)
}
-
// Iterate through validators by power descending, reset bond heights, and
// update bond intra-tx counters.
- store := ctx.KVStore(app.keys[stakingtypes.StoreKey])
+ store := ctx.KVStore(app.GetKey(stakingtypes.StoreKey))
iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey)
counter := int16(0)
@@ -209,40 +222,46 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key()))
validator, err := app.StakingKeeper.GetValidator(ctx, addr)
if err != nil {
- panic(errors.New("expected validator, not found"))
+ panic("expected validator, not found")
+ }
+
+ valAddr, err := app.StakingKeeper.ValidatorAddressCodec().BytesToString(addr)
+ if err != nil {
+ panic(err)
}
validator.UnbondingHeight = 0
- if applyAllowedAddrs && !allowedAddrsMap[addr.String()] {
+ if applyAllowedAddrs && !allowedAddrsMap[valAddr] {
validator.Jailed = true
}
- if err := app.StakingKeeper.SetValidator(ctx, validator); err != nil {
+ if err = app.StakingKeeper.SetValidator(ctx, validator); err != nil {
panic(err)
}
counter++
}
- iter.Close()
+ if err := iter.Close(); err != nil {
+ app.Logger().Error("error while closing the key-value store reverse prefix iterator: ", err)
+ return
+ }
_, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
if err != nil {
- log.Fatal(err)
+ panic(err)
}
/* Handle slashing state. */
// reset start height on signing infos
- err = app.SlashingKeeper.IterateValidatorSigningInfos(
- ctx,
- func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {
- info.StartHeight = 0
- if err := app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info); err != nil {
- panic(err)
- }
- return false
- },
- )
+ err = app.SlashingKeeper.ValidatorSigningInfo.Walk(ctx, nil, func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool, err error) {
+ info.StartHeight = 0
+ err = app.SlashingKeeper.ValidatorSigningInfo.Set(ctx, addr, info)
+ if err != nil {
+ return true, err
+ }
+ return false, nil
+ })
if err != nil {
panic(err)
}
diff --git a/modules/light-clients/08-wasm/testing/simapp/genesis.go b/modules/light-clients/08-wasm/testing/simapp/genesis.go
index 2667b97a4fc..d71d15f4970 100644
--- a/modules/light-clients/08-wasm/testing/simapp/genesis.go
+++ b/modules/light-clients/08-wasm/testing/simapp/genesis.go
@@ -5,7 +5,7 @@ import (
)
// The genesis state of the blockchain is represented here as a map of raw json
-// messages key'd by a identifier string.
+// messages key'd by an identifier string.
// The identifier is used to determine which module genesis information belongs
// to so it may be appropriately routed during init chain.
// Within this application default genesis information is retrieved from
diff --git a/modules/light-clients/08-wasm/testing/simapp/params/proto.go b/modules/light-clients/08-wasm/testing/simapp/params/proto.go
deleted file mode 100644
index 73702a15abf..00000000000
--- a/modules/light-clients/08-wasm/testing/simapp/params/proto.go
+++ /dev/null
@@ -1,27 +0,0 @@
-//go:build !test_amino
-// +build !test_amino
-
-package params
-
-import (
- "github.com/cosmos/cosmos-sdk/codec"
- "github.com/cosmos/cosmos-sdk/codec/types"
- "github.com/cosmos/cosmos-sdk/x/auth/tx"
-)
-
-// MakeTestEncodingConfig creates an EncodingConfig for a non-amino based test configuration.
-// This function should be used only internally (in the SDK).
-// App user shouldn't create new codecs - use the app.AppCodec instead.
-// [DEPRECATED]
-func MakeTestEncodingConfig() EncodingConfig {
- cdc := codec.NewLegacyAmino()
- interfaceRegistry := types.NewInterfaceRegistry()
- protoCdc := codec.NewProtoCodec(interfaceRegistry)
-
- return EncodingConfig{
- InterfaceRegistry: interfaceRegistry,
- Codec: protoCdc,
- TxConfig: tx.NewTxConfig(protoCdc, tx.DefaultSignModes),
- Amino: cdc,
- }
-}
diff --git a/modules/light-clients/08-wasm/testing/simapp/simd/cmd/root.go b/modules/light-clients/08-wasm/testing/simapp/simd/cmd/root.go
index a1e4677f614..ba5303918c0 100644
--- a/modules/light-clients/08-wasm/testing/simapp/simd/cmd/root.go
+++ b/modules/light-clients/08-wasm/testing/simapp/simd/cmd/root.go
@@ -5,7 +5,6 @@ import (
"fmt"
"io"
"os"
- "runtime/debug"
"strings"
wasmvm "github.com/CosmWasm/wasmvm/v2"
@@ -13,7 +12,8 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
- "cosmossdk.io/client/v2/autocli"
+ "cosmossdk.io/client/v2/offchain"
+ corestore "cosmossdk.io/core/store"
"cosmossdk.io/log"
confixcmd "cosmossdk.io/tools/confix/cmd"
@@ -21,12 +21,12 @@ import (
"github.com/cosmos/cosmos-sdk/client/config"
sdkdebug "github.com/cosmos/cosmos-sdk/client/debug"
"github.com/cosmos/cosmos-sdk/client/flags"
+ nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node"
"github.com/cosmos/cosmos-sdk/client/keys"
"github.com/cosmos/cosmos-sdk/client/pruning"
"github.com/cosmos/cosmos-sdk/client/rpc"
"github.com/cosmos/cosmos-sdk/client/snapshot"
"github.com/cosmos/cosmos-sdk/codec"
- addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/server"
serverconfig "github.com/cosmos/cosmos-sdk/server/config"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
@@ -38,8 +38,9 @@ import (
"github.com/cosmos/cosmos-sdk/x/auth/tx"
txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config"
"github.com/cosmos/cosmos-sdk/x/auth/types"
- "github.com/cosmos/cosmos-sdk/x/crisis"
+ "github.com/cosmos/cosmos-sdk/x/genutil"
genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
+ genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
cmtcfg "github.com/cometbft/cometbft/config"
@@ -116,12 +117,16 @@ func NewRootCmd() *cobra.Command {
},
}
- initRootCmd(rootCmd, encodingConfig, tempApp.BasicModuleManager)
+ initRootCmd(rootCmd, tempApp.ModuleManager)
- autoCliOpts, err := enrichAutoCliOpts(tempApp.AutoCliOpts(), initClientCtx)
- if err != nil {
- panic(err)
- }
+ autoCliOpts := tempApp.AutoCliOpts()
+ autoCliOpts.AddressCodec = initClientCtx.AddressCodec
+ autoCliOpts.ValidatorAddressCodec = initClientCtx.ValidatorAddressCodec
+ autoCliOpts.ConsensusAddressCodec = initClientCtx.ConsensusAddressCodec
+ autoCliOpts.Cdc = initClientCtx.Codec
+
+ nodeCmds := nodeservice.NewNodeCommands()
+ autoCliOpts.ModuleOptions[nodeCmds.Name()] = nodeCmds.AutoCLIOptions()
if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil {
panic(err)
@@ -130,22 +135,6 @@ func NewRootCmd() *cobra.Command {
return rootCmd
}
-func enrichAutoCliOpts(autoCliOpts autocli.AppOptions, clientCtx client.Context) (autocli.AppOptions, error) {
- autoCliOpts.AddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())
- autoCliOpts.ValidatorAddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix())
- autoCliOpts.ConsensusAddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix())
-
- var err error
- clientCtx, err = config.ReadFromClientConfig(clientCtx)
- if err != nil {
- return autocli.AppOptions{}, err
- }
-
- autoCliOpts.ClientCtx = clientCtx
-
- return autoCliOpts, nil
-}
-
// initCometBFTConfig helps to override default CometBFT Config values.
// return cmtcfg.DefaultConfig if no custom configuration is required for the application.
func initCometBFTConfig() *cmtcfg.Config {
@@ -215,39 +204,32 @@ lru_size = 0`
return customAppTemplate, customAppConfig
}
-func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig, basicManager module.BasicManager) {
+func initRootCmd(rootCmd *cobra.Command, moduleManager *module.Manager) {
cfg := sdk.GetConfig()
cfg.Seal()
rootCmd.AddCommand(
- genutilcli.InitCmd(basicManager, simapp.DefaultNodeHome),
+ genutilcli.InitCmd(moduleManager),
sdkdebug.Cmd(),
confixcmd.ConfigCommand(),
- pruning.Cmd(newApp, simapp.DefaultNodeHome),
+ pruning.Cmd(newApp),
snapshot.Cmd(newApp),
server.QueryBlockResultsCmd(),
)
- server.AddCommands(rootCmd, simapp.DefaultNodeHome, newApp, appExport, addModuleInitFlags)
+ server.AddCommands(rootCmd, newApp, server.StartCmdOptions[servertypes.Application]{})
// add keybase, auxiliary RPC, query, genesis, and tx child commands
rootCmd.AddCommand(
server.StatusCommand(),
- genesisCommand(encodingConfig, basicManager),
- txCommand(),
+ genesisCommand(moduleManager, appExport),
queryCommand(),
+ txCommand(),
keys.Commands(),
+ offchain.OffChain(),
)
}
-func addModuleInitFlags(startCmd *cobra.Command) {
- crisis.AddModuleInitFlags(startCmd)
- preCheck := func(cmd *cobra.Command, _ []string) error {
- return CheckLibwasmVersion(getExpectedLibwasmVersion())
- }
- startCmd.PreRunE = chainPreRuns(preCheck, startCmd.PreRunE)
-}
-
func queryCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "query",
@@ -259,7 +241,7 @@ func queryCommand() *cobra.Command {
}
cmd.AddCommand(
- rpc.ValidatorCommand(),
+ rpc.WaitTxCmd(),
server.QueryBlockCmd(),
authcmd.QueryTxsByEventsCmd(),
server.QueryBlocksCmd(),
@@ -295,9 +277,8 @@ func txCommand() *cobra.Command {
}
// genesisCommand builds genesis-related `simd genesis` command. Users may provide application specific commands as a parameter
-func genesisCommand(encodingConfig params.EncodingConfig, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command {
- cmd := genutilcli.Commands(encodingConfig.TxConfig, basicManager, simapp.DefaultNodeHome)
-
+func genesisCommand(moduleManager *module.Manager, appExport servertypes.AppExporter, cmds ...*cobra.Command) *cobra.Command {
+ cmd := genutilcli.Commands(moduleManager.Modules[genutiltypes.ModuleName].(genutil.AppModule), moduleManager, appExport)
for _, subCmd := range cmds {
cmd.AddCommand(subCmd)
}
@@ -307,7 +288,7 @@ func genesisCommand(encodingConfig params.EncodingConfig, basicManager module.Ba
// newApp creates the application
func newApp(
logger log.Logger,
- db dbm.DB,
+ db corestore.KVStoreWithBatch,
traceStore io.Writer,
appOpts servertypes.AppOptions,
) servertypes.Application {
@@ -323,7 +304,7 @@ func newApp(
// appExport creates a new simapp (optionally at a given height) and exports state.
func appExport(
logger log.Logger,
- db dbm.DB,
+ db corestore.KVStoreWithBatch,
traceStore io.Writer,
height int64,
forZeroHeight bool,
@@ -388,35 +369,3 @@ func CheckLibwasmVersion(wasmExpectedVersion string) error {
}
return nil
}
-
-type preRunFn func(cmd *cobra.Command, args []string) error
-
-func chainPreRuns(pfns ...preRunFn) preRunFn {
- return func(cmd *cobra.Command, args []string) error {
- for _, pfn := range pfns {
- if pfn != nil {
- if err := pfn(cmd, args); err != nil {
- return err
- }
- }
- }
- return nil
- }
-}
-
-func getExpectedLibwasmVersion() string {
- buildInfo, ok := debug.ReadBuildInfo()
- if !ok {
- panic("can't read build info")
- }
- for _, d := range buildInfo.Deps {
- if d.Path != "github.com/CosmWasm/wasmvm/v2" {
- continue
- }
- if d.Replace != nil {
- return d.Replace.Version
- }
- return d.Version
- }
- return ""
-}
diff --git a/modules/light-clients/08-wasm/testing/simapp/test_helpers.go b/modules/light-clients/08-wasm/testing/simapp/test_helpers.go
index 209b84e169e..070eef6e74d 100644
--- a/modules/light-clients/08-wasm/testing/simapp/test_helpers.go
+++ b/modules/light-clients/08-wasm/testing/simapp/test_helpers.go
@@ -12,6 +12,7 @@ import (
sdkmath "cosmossdk.io/math"
"cosmossdk.io/store/snapshots"
snapshottypes "cosmossdk.io/store/snapshots/types"
+ banktypes "cosmossdk.io/x/bank/types"
bam "github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client/flags"
@@ -20,9 +21,8 @@ import (
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
cmttypes "github.com/cometbft/cometbft/types"
wasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types"
@@ -76,7 +76,7 @@ func SetupWithGenesisValSetSnapshotter(t *testing.T, mockVM wasmtypes.WasmEngine
require.NoError(t, err)
// init chain will set the validator set and initialize the genesis accounts
- _, err = app.InitChain(&abci.RequestInitChain{
+ _, err = app.InitChain(&abci.InitChainRequest{
Validators: []abci.ValidatorUpdate{},
ConsensusParams: simtestutil.DefaultConsensusParams,
AppStateBytes: stateBytes,
diff --git a/modules/light-clients/08-wasm/testing/simapp/upgrades.go b/modules/light-clients/08-wasm/testing/simapp/upgrades.go
index 4ae6c20ccf5..2f64f618cf8 100644
--- a/modules/light-clients/08-wasm/testing/simapp/upgrades.go
+++ b/modules/light-clients/08-wasm/testing/simapp/upgrades.go
@@ -3,7 +3,8 @@ package simapp
import (
"context"
- storetypes "cosmossdk.io/store/types"
+ "cosmossdk.io/core/appmodule"
+ corestore "cosmossdk.io/core/store"
circuittypes "cosmossdk.io/x/circuit/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
@@ -27,7 +28,7 @@ func (app *SimApp) registerUpgradeHandlers() {
}
if upgradeInfo.Name == IBCWasmUpgrade && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
- storeUpgrades := storetypes.StoreUpgrades{
+ storeUpgrades := corestore.StoreUpgrades{
Added: []string{
circuittypes.ModuleName,
},
@@ -39,7 +40,7 @@ func (app *SimApp) registerUpgradeHandlers() {
// createWasmStoreUpgradeHandler creates an upgrade handler for the 08-wasm ibc-go/v9 SimApp upgrade.
func createWasmStoreUpgradeHandler(mm *module.Manager, configurator module.Configurator) upgradetypes.UpgradeHandler {
- return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
+ return func(ctx context.Context, _ upgradetypes.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) {
return mm.RunMigrations(ctx, configurator, vm)
}
}
diff --git a/modules/light-clients/08-wasm/types/codec.go b/modules/light-clients/08-wasm/types/codec.go
index 73f2f51a3a1..b6743a9c69a 100644
--- a/modules/light-clients/08-wasm/types/codec.go
+++ b/modules/light-clients/08-wasm/types/codec.go
@@ -1,7 +1,8 @@
package types
import (
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ coreregistry "cosmossdk.io/core/registry"
+
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
@@ -10,7 +11,7 @@ import (
// RegisterInterfaces registers the Wasm concrete client-related
// implementations and interfaces.
-func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
+func RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {
registry.RegisterImplementations(
(*exported.ClientState)(nil),
&ClientState{},
diff --git a/modules/light-clients/08-wasm/types/codec_test.go b/modules/light-clients/08-wasm/types/codec_test.go
index bde7f1beb3b..1df1c2a3000 100644
--- a/modules/light-clients/08-wasm/types/codec_test.go
+++ b/modules/light-clients/08-wasm/types/codec_test.go
@@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/cosmos/cosmos-sdk/codec/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@@ -60,7 +61,7 @@ func TestCodecTypeRegistration(t *testing.T) {
tc := tc
t.Run(tc.name, func(t *testing.T) {
- encodingCfg := moduletestutil.MakeTestEncodingConfig(wasm.AppModuleBasic{})
+ encodingCfg := moduletestutil.MakeTestEncodingConfig(testutil.CodecOptions{}, wasm.AppModule{})
msg, err := encodingCfg.Codec.InterfaceRegistry().Resolve(tc.typeURL)
if tc.expError == nil {
diff --git a/modules/light-clients/08-wasm/types/gas_register.go b/modules/light-clients/08-wasm/types/gas_register.go
index a58453d2b2c..4efea591019 100644
--- a/modules/light-clients/08-wasm/types/gas_register.go
+++ b/modules/light-clients/08-wasm/types/gas_register.go
@@ -110,7 +110,7 @@ type WasmGasRegisterConfig struct {
// See also https://github.com/CosmWasm/wasmd/issues/1798 for more thinking around
// discount cases.
InstanceCostDiscount storetypes.Gas
- // CompileCosts costs to persist and "compile" a new wasm contract
+ // CompileCost costs to persist and "compile" a new wasm contract
CompileCost storetypes.Gas
// UncompressCost costs per byte to unpack a contract
UncompressCost wasmvmtypes.UFraction
diff --git a/modules/light-clients/08-wasm/types/msgs_test.go b/modules/light-clients/08-wasm/types/msgs_test.go
index 9167386ec17..60feb9a1bd8 100644
--- a/modules/light-clients/08-wasm/types/msgs_test.go
+++ b/modules/light-clients/08-wasm/types/msgs_test.go
@@ -76,7 +76,7 @@ func (suite *TypesTestSuite) TestMsgStoreCodeGetSigners() {
address := tc.address
msg := types.NewMsgStoreCode(address.String(), wasmtesting.Code)
- signers, _, err := GetSimApp(suite.chainA).AppCodec().GetMsgV1Signers(msg)
+ signers, _, err := GetSimApp(suite.chainA).AppCodec().GetMsgSigners(msg)
if tc.expErr == nil {
suite.Require().NoError(err)
suite.Require().Equal(address.Bytes(), signers[0])
@@ -150,8 +150,7 @@ func TestMsgMigrateContractValidateBasic(t *testing.T) {
tc := tc
err := tc.msg.ValidateBasic()
- expPass := tc.expErr == nil
- if expPass {
+ if tc.expErr == nil {
require.NoError(t, err)
} else {
require.ErrorIs(t, err, tc.expErr, tc.name)
@@ -180,7 +179,7 @@ func (suite *TypesTestSuite) TestMsgMigrateContractGetSigners() {
address := tc.address
msg := types.NewMsgMigrateContract(address.String(), defaultWasmClientID, checksum, []byte("{}"))
- signers, _, err := GetSimApp(suite.chainA).AppCodec().GetMsgV1Signers(msg)
+ signers, _, err := GetSimApp(suite.chainA).AppCodec().GetMsgSigners(msg)
if tc.expErr == nil {
suite.Require().NoError(err)
suite.Require().Equal(address.Bytes(), signers[0])
@@ -242,12 +241,12 @@ func (suite *TypesTestSuite) TestMsgRemoveChecksumGetSigners() {
suite.Require().NoError(err)
testCases := []struct {
- name string
- address sdk.AccAddress
- expPass bool
+ name string
+ address sdk.AccAddress
+ expError error
}{
- {"success: valid address", sdk.AccAddress(ibctesting.TestAccAddress), true},
- {"failure: nil address", nil, false},
+ {"success: valid address", sdk.AccAddress(ibctesting.TestAccAddress), nil},
+ {"failure: nil address", nil, fmt.Errorf("empty address string is not allowed")},
}
for _, tc := range testCases {
@@ -258,12 +257,13 @@ func (suite *TypesTestSuite) TestMsgRemoveChecksumGetSigners() {
address := tc.address
msg := types.NewMsgRemoveChecksum(address.String(), checksum)
- signers, _, err := GetSimApp(suite.chainA).AppCodec().GetMsgV1Signers(msg)
- if tc.expPass {
+ signers, _, err := GetSimApp(suite.chainA).AppCodec().GetMsgSigners(msg)
+ if tc.expError == nil {
suite.Require().NoError(err)
suite.Require().Equal(address.Bytes(), signers[0])
} else {
suite.Require().Error(err)
+ suite.Require().Equal(err.Error(), tc.expError.Error())
}
})
}
diff --git a/modules/light-clients/08-wasm/types/types_test.go b/modules/light-clients/08-wasm/types/types_test.go
index f3c1b51afcb..88540fbd5e7 100644
--- a/modules/light-clients/08-wasm/types/types_test.go
+++ b/modules/light-clients/08-wasm/types/types_test.go
@@ -55,6 +55,6 @@ func GetSimApp(chain *ibctesting.TestChain) *simapp.SimApp {
// setupTestingApp provides the duplicated simapp which is specific to the 08-wasm module on chain creation.
func setupTestingApp() (ibctesting.TestingApp, map[string]json.RawMessage) {
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{}, nil)
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.AppOptionsMap{}, nil)
return app, app.DefaultGenesis()
}
diff --git a/modules/light-clients/08-wasm/wasm_test.go b/modules/light-clients/08-wasm/wasm_test.go
index 09bccba6023..d47f678214e 100644
--- a/modules/light-clients/08-wasm/wasm_test.go
+++ b/modules/light-clients/08-wasm/wasm_test.go
@@ -12,10 +12,10 @@ import (
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
+ govtypes "cosmossdk.io/x/gov/types"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
wasmtesting "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing"
"github.com/cosmos/ibc-go/modules/light-clients/08-wasm/testing/simapp"
@@ -64,7 +64,7 @@ func GetSimApp(chain *ibctesting.TestChain) *simapp.SimApp {
// setupTestingApp provides the duplicated simapp which is specific to the 08-wasm module on chain creation.
func setupTestingApp() (ibctesting.TestingApp, map[string]json.RawMessage) {
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{}, nil)
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.AppOptionsMap{}, nil)
return app, app.DefaultGenesis()
}
@@ -109,7 +109,7 @@ func (suite *WasmTestSuite) setupWasmWithMockVM() (ibctesting.TestingApp, map[st
})
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{}, suite.mockVM)
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.AppOptionsMap{}, suite.mockVM)
// reset DefaultTestingAppInit to its original value
ibctesting.DefaultTestingAppInit = setupTestingApp
diff --git a/modules/light-clients/09-localhost/light_client_module.go b/modules/light-clients/09-localhost/light_client_module.go
index d18cbce8eef..d4d941bfcd0 100644
--- a/modules/light-clients/09-localhost/light_client_module.go
+++ b/modules/light-clients/09-localhost/light_client_module.go
@@ -4,11 +4,10 @@ import (
"bytes"
"context"
- corestore "cosmossdk.io/core/store"
+ "cosmossdk.io/core/appmodule"
errorsmod "cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/codec"
- sdk "github.com/cosmos/cosmos-sdk/types"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
commitmenttypes "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types"
@@ -33,15 +32,15 @@ var _ exported.LightClientModule = (*LightClientModule)(nil)
// LightClientModule implements the core IBC api.LightClientModule interface.
type LightClientModule struct {
- cdc codec.BinaryCodec
- storeService corestore.KVStoreService
+ cdc codec.BinaryCodec
+ appmodule.Environment
}
// NewLightClientModule creates and returns a new 09-localhost LightClientModule.
-func NewLightClientModule(cdc codec.BinaryCodec, storeService corestore.KVStoreService) *LightClientModule {
+func NewLightClientModule(cdc codec.BinaryCodec, env appmodule.Environment) *LightClientModule {
return &LightClientModule{
- cdc: cdc,
- storeService: storeService,
+ cdc: cdc,
+ Environment: env,
}
}
@@ -83,7 +82,7 @@ func (l LightClientModule) VerifyMembership(
path exported.Path,
value []byte,
) error {
- ibcStore := l.storeService.OpenKVStore(ctx)
+ ibcStore := l.KVStoreService.OpenKVStore(ctx)
// ensure the proof provided is the expected sentinel localhost client proof
if !bytes.Equal(proof, SentinelProof) {
@@ -127,7 +126,7 @@ func (l LightClientModule) VerifyNonMembership(
proof []byte,
path exported.Path,
) error {
- ibcStore := l.storeService.OpenKVStore(ctx)
+ ibcStore := l.KVStoreService.OpenKVStore(ctx)
// ensure the proof provided is the expected sentinel localhost client proof
if !bytes.Equal(proof, SentinelProof) {
@@ -167,9 +166,8 @@ func (LightClientModule) LatestHeight(ctx context.Context, _ string) exported.He
// TimestampAtHeight returns the current block time retrieved from the application context. The localhost client does not store consensus states and thus
// cannot provide a timestamp for the provided height.
-func (LightClientModule) TimestampAtHeight(ctx context.Context, _ string, _ exported.Height) (uint64, error) {
- sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917
- return uint64(sdkCtx.BlockTime().UnixNano()), nil
+func (l LightClientModule) TimestampAtHeight(ctx context.Context, _ string, _ exported.Height) (uint64, error) {
+ return uint64(l.HeaderService.HeaderInfo(ctx).Time.UnixNano()), nil
}
// RecoverClient returns an error. The localhost cannot be modified by proposals.
diff --git a/proto/buf.gen.gogo.yaml b/proto/buf.gen.gogo.yaml
index 9c8ba0a4b1f..db36231d0c8 100644
--- a/proto/buf.gen.gogo.yaml
+++ b/proto/buf.gen.gogo.yaml
@@ -2,7 +2,7 @@ version: v1
plugins:
- name: gocosmos
out: ..
- opt: plugins=grpc,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types
+ opt: plugins=grpc,Mgoogle/protobuf/any.proto=github.com/cosmos/gogoproto/types/any
- name: grpc-gateway
out: ..
opt: logtostderr=true,allow_colon_final_segments=true
diff --git a/proto/buf.lock b/proto/buf.lock
index d8577cc0b96..a545e3ad2fd 100644
--- a/proto/buf.lock
+++ b/proto/buf.lock
@@ -1,6 +1,11 @@
# Generated by buf. DO NOT EDIT.
version: v1
deps:
+ - remote: buf.build
+ owner: cometbft
+ repository: cometbft
+ commit: c0d3497e35d649538679874acdd86660
+ digest: shake256:05d2fb9e6b6bf82385ac26b250afbba281a2ca79f51729291373d24ca676d743183bf70a921daae6feafd5f9917120e2548a7c477d9743f668bca27cc1e12fdf
- remote: buf.build
owner: cosmos
repository: cosmos-proto
diff --git a/proto/buf.yaml b/proto/buf.yaml
index 68d17ed2f07..665884852f6 100644
--- a/proto/buf.yaml
+++ b/proto/buf.yaml
@@ -6,6 +6,7 @@ deps:
- buf.build/cosmos/gogo-proto:a14993478f40695898ed8a86931094b6656e8a5d
- buf.build/googleapis/googleapis:8d7204855ec14631a499bd7393ce1970
- buf.build/cosmos/ics23:b1abd8678aab07165efd453c96796a179eb3131f
+ - buf.build/cometbft/cometbft:4a62c99d422068a5165429b62a7eb824df46cca9
breaking:
use:
- FILE
diff --git a/proto/ibc/applications/fee/v1/query.proto b/proto/ibc/applications/fee/v1/query.proto
index 59018306ab9..cd6bf18e663 100644
--- a/proto/ibc/applications/fee/v1/query.proto
+++ b/proto/ibc/applications/fee/v1/query.proto
@@ -26,7 +26,7 @@ service Query {
"{packet_id.sequence}/incentivized_packet";
}
- // Gets all incentivized packets for a specific channel
+ // IncentivizedPacketsForChannel retrieves all incentivized packets for a specific channel
rpc IncentivizedPacketsForChannel(QueryIncentivizedPacketsForChannelRequest)
returns (QueryIncentivizedPacketsForChannelResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets";
diff --git a/proto/ibc/core/channel/v1/query.proto b/proto/ibc/core/channel/v1/query.proto
index f44a3e5aa62..635f1b3d96a 100644
--- a/proto/ibc/core/channel/v1/query.proto
+++ b/proto/ibc/core/channel/v1/query.proto
@@ -7,10 +7,10 @@ option go_package = "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types";
import "ibc/core/client/v1/client.proto";
import "cosmos/base/query/v1beta1/pagination.proto";
import "ibc/core/channel/v1/channel.proto";
+import "ibc/core/channel/v1/upgrade.proto";
import "google/api/annotations.proto";
import "google/protobuf/any.proto";
import "gogoproto/gogo.proto";
-import "ibc/core/channel/v1/upgrade.proto";
// Query provides defines the gRPC querier service
service Query {
diff --git a/proto/ibc/core/channel/v1/upgrade.proto b/proto/ibc/core/channel/v1/upgrade.proto
index ea5ae929b46..001fc882d2b 100644
--- a/proto/ibc/core/channel/v1/upgrade.proto
+++ b/proto/ibc/core/channel/v1/upgrade.proto
@@ -40,4 +40,4 @@ message ErrorReceipt {
uint64 sequence = 1;
// the error message detailing the cause of failure
string message = 2;
-}
+}
\ No newline at end of file
diff --git a/proto/ibc/lightclients/tendermint/v1/tendermint.proto b/proto/ibc/lightclients/tendermint/v1/tendermint.proto
index 9069fd6fa5a..d447a2f5b78 100644
--- a/proto/ibc/lightclients/tendermint/v1/tendermint.proto
+++ b/proto/ibc/lightclients/tendermint/v1/tendermint.proto
@@ -4,8 +4,8 @@ package ibc.lightclients.tendermint.v1;
option go_package = "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint;tendermint";
-import "tendermint/types/validator.proto";
-import "tendermint/types/types.proto";
+import "cometbft/types/v1/validator.proto";
+import "cometbft/types/v1/types.proto";
import "cosmos/ics23/v1/proofs.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
@@ -86,11 +86,11 @@ message Misbehaviour {
// hash to TrustedConsensusState.NextValidatorsHash since that is the last
// trusted validator set at the TrustedHeight.
message Header {
- .tendermint.types.SignedHeader signed_header = 1 [(gogoproto.embed) = true];
+ .cometbft.types.v1.SignedHeader signed_header = 1 [(gogoproto.embed) = true];
- .tendermint.types.ValidatorSet validator_set = 2;
- ibc.core.client.v1.Height trusted_height = 3 [(gogoproto.nullable) = false];
- .tendermint.types.ValidatorSet trusted_validators = 4;
+ .cometbft.types.v1.ValidatorSet validator_set = 2;
+ ibc.core.client.v1.Height trusted_height = 3 [(gogoproto.nullable) = false];
+ .cometbft.types.v1.ValidatorSet trusted_validators = 4;
}
// Fraction defines the protobuf message type for tmmath.Fraction that only
diff --git a/scripts/compatibility.md b/scripts/compatibility.md
index a93aa2d178c..a63e3203755 100644
--- a/scripts/compatibility.md
+++ b/scripts/compatibility.md
@@ -2,7 +2,7 @@
## Introduction
-The generate-compatibility-json.py script is used to generate matricies that can be fed into github workflows
+The generate-compatibility-json.py script is used to generate matrices that can be fed into github workflows
as the matrix for the compatibility job.
This is done by generating a matrix of all possible combinations based on a provided release branch
diff --git a/simapp/ante.go b/simapp/ante.go
index 58603401edf..5549194e933 100644
--- a/simapp/ante.go
+++ b/simapp/ante.go
@@ -7,6 +7,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
+ "github.com/cosmos/cosmos-sdk/x/auth/ante/unorderedtx"
ibcante "github.com/cosmos/ibc-go/v9/modules/core/ante"
"github.com/cosmos/ibc-go/v9/modules/core/keeper"
@@ -24,31 +25,33 @@ type HandlerOptions struct {
// signer.
func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
if options.AccountKeeper == nil {
- return nil, errors.New("account keeper is required for ante builder")
+ return nil, errors.New("account keeper is required for ante handler")
}
if options.BankKeeper == nil {
- return nil, errors.New("bank keeper is required for ante builder")
+ return nil, errors.New("bank keeper is required for ante handler")
}
if options.SignModeHandler == nil {
- return nil, errors.New("sign mode handler is required for ante builder")
+ return nil, errors.New("sign mode handler is required for ante handler")
+ }
+
+ if options.IBCKeeper == nil {
+ return nil, errors.New("ibc keeper is required for the ante handler")
}
anteDecorators := []sdk.AnteDecorator{
- ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
+ ante.NewSetUpContextDecorator(options.Environment, options.ConsensusKeeper), // outermost AnteDecorator. SetUpContext must be called first
circuitante.NewCircuitBreakerDecorator(options.CircuitKeeper),
ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker),
- ante.NewValidateBasicDecorator(),
- ante.NewTxTimeoutHeightDecorator(),
+ ante.NewValidateBasicDecorator(options.Environment),
+ ante.NewTxTimeoutHeightDecorator(options.Environment),
+ ante.NewUnorderedTxDecorator(unorderedtx.DefaultMaxTimeoutDuration, options.UnorderedTxManager, options.Environment, ante.DefaultSha256Cost),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker),
- ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators
ante.NewValidateSigCountDecorator(options.AccountKeeper),
- ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
- ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
- ante.NewIncrementSequenceDecorator(options.AccountKeeper),
+ ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler, options.SigGasConsumer, options.AccountAbstractionKeeper),
ibcante.NewRedundantRelayDecorator(options.IBCKeeper),
}
diff --git a/simapp/app.go b/simapp/app.go
index cba03e2f857..8e21bcff17e 100644
--- a/simapp/app.go
+++ b/simapp/app.go
@@ -4,28 +4,77 @@ import (
"encoding/json"
"fmt"
"io"
+ "maps"
"os"
"path/filepath"
- dbm "github.com/cosmos/cosmos-db"
"github.com/cosmos/gogoproto/proto"
"github.com/spf13/cast"
autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
"cosmossdk.io/client/v2/autocli"
- "cosmossdk.io/core/appmodule"
+ clienthelpers "cosmossdk.io/client/v2/helpers"
+ coreaddress "cosmossdk.io/core/address"
+ corestore "cosmossdk.io/core/store"
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
+ "cosmossdk.io/x/accounts"
+ "cosmossdk.io/x/accounts/accountstd"
+ baseaccount "cosmossdk.io/x/accounts/defaults/base"
+ "cosmossdk.io/x/accounts/defaults/lockup"
+ "cosmossdk.io/x/accounts/defaults/multisig"
+ "cosmossdk.io/x/authz"
+ authzkeeper "cosmossdk.io/x/authz/keeper"
+ authzmodule "cosmossdk.io/x/authz/module"
+ "cosmossdk.io/x/bank"
+ bankkeeper "cosmossdk.io/x/bank/keeper"
+ banktypes "cosmossdk.io/x/bank/types"
"cosmossdk.io/x/circuit"
circuitkeeper "cosmossdk.io/x/circuit/keeper"
circuittypes "cosmossdk.io/x/circuit/types"
+ "cosmossdk.io/x/consensus"
+ consensusparamkeeper "cosmossdk.io/x/consensus/keeper"
+ consensustypes "cosmossdk.io/x/consensus/types"
+ distr "cosmossdk.io/x/distribution"
+ distrkeeper "cosmossdk.io/x/distribution/keeper"
+ distrtypes "cosmossdk.io/x/distribution/types"
+ "cosmossdk.io/x/epochs"
+ epochskeeper "cosmossdk.io/x/epochs/keeper"
+ epochstypes "cosmossdk.io/x/epochs/types"
"cosmossdk.io/x/evidence"
evidencekeeper "cosmossdk.io/x/evidence/keeper"
evidencetypes "cosmossdk.io/x/evidence/types"
"cosmossdk.io/x/feegrant"
feegrantkeeper "cosmossdk.io/x/feegrant/keeper"
feegrantmodule "cosmossdk.io/x/feegrant/module"
+ "cosmossdk.io/x/gov"
+ govkeeper "cosmossdk.io/x/gov/keeper"
+ govtypes "cosmossdk.io/x/gov/types"
+ govv1beta1 "cosmossdk.io/x/gov/types/v1beta1"
+ "cosmossdk.io/x/group"
+ groupkeeper "cosmossdk.io/x/group/keeper"
+ groupmodule "cosmossdk.io/x/group/module"
+ "cosmossdk.io/x/mint"
+ mintkeeper "cosmossdk.io/x/mint/keeper"
+ minttypes "cosmossdk.io/x/mint/types"
+ "cosmossdk.io/x/nft"
+ nftkeeper "cosmossdk.io/x/nft/keeper"
+ nftmodule "cosmossdk.io/x/nft/module"
+ "cosmossdk.io/x/params"
+ paramskeeper "cosmossdk.io/x/params/keeper"
+ paramstypes "cosmossdk.io/x/params/types"
+ paramproposal "cosmossdk.io/x/params/types/proposal"
+ "cosmossdk.io/x/protocolpool"
+ poolkeeper "cosmossdk.io/x/protocolpool/keeper"
+ pooltypes "cosmossdk.io/x/protocolpool/types"
+ "cosmossdk.io/x/slashing"
+ slashingkeeper "cosmossdk.io/x/slashing/keeper"
+ slashingtypes "cosmossdk.io/x/slashing/types"
+ "cosmossdk.io/x/staking"
+ stakingkeeper "cosmossdk.io/x/staking/keeper"
+ stakingtypes "cosmossdk.io/x/staking/types"
+ txdecode "cosmossdk.io/x/tx/decode"
"cosmossdk.io/x/tx/signing"
"cosmossdk.io/x/upgrade"
upgradekeeper "cosmossdk.io/x/upgrade/keeper"
@@ -50,56 +99,26 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/types/msgservice"
+ sigtypes "github.com/cosmos/cosmos-sdk/types/tx/signing"
"github.com/cosmos/cosmos-sdk/version"
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
+ "github.com/cosmos/cosmos-sdk/x/auth/ante/unorderedtx"
authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
"github.com/cosmos/cosmos-sdk/x/auth/posthandler"
authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation"
authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
+ txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
- "github.com/cosmos/cosmos-sdk/x/authz"
- authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
- authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module"
- "github.com/cosmos/cosmos-sdk/x/bank"
- bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- "github.com/cosmos/cosmos-sdk/x/consensus"
- consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
- consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
- "github.com/cosmos/cosmos-sdk/x/crisis"
- crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
- crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
- distr "github.com/cosmos/cosmos-sdk/x/distribution"
- distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
- distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
- "github.com/cosmos/cosmos-sdk/x/gov"
- govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
- govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- "github.com/cosmos/cosmos-sdk/x/group"
- groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper"
- groupmodule "github.com/cosmos/cosmos-sdk/x/group/module"
- "github.com/cosmos/cosmos-sdk/x/mint"
- mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
- "github.com/cosmos/cosmos-sdk/x/params"
- paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
- paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
- paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
- "github.com/cosmos/cosmos-sdk/x/slashing"
- slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- "github.com/cosmos/cosmos-sdk/x/staking"
- stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-
- abci "github.com/cometbft/cometbft/abci/types"
+
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
+ cmtcrypto "github.com/cometbft/cometbft/crypto"
+ cmted25519 "github.com/cometbft/cometbft/crypto/ed25519"
ica "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts"
icacontroller "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller"
@@ -123,25 +142,36 @@ import (
ibckeeper "github.com/cosmos/ibc-go/v9/modules/core/keeper"
solomachine "github.com/cosmos/ibc-go/v9/modules/light-clients/06-solomachine"
ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint"
+ ibcmock "github.com/cosmos/ibc-go/v9/testing/mock"
)
const appName = "SimApp"
+// IBC application testing ports
+const (
+ MockFeePort string = ibcmock.ModuleName + ibcfeetypes.ModuleName
+)
+
var (
// DefaultNodeHome default home directories for the application daemon
DefaultNodeHome string
// module account permissions
maccPerms = map[string][]string{
- authtypes.FeeCollectorName: nil,
- distrtypes.ModuleName: nil,
- minttypes.ModuleName: {authtypes.Minter},
- stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
- stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
- govtypes.ModuleName: {authtypes.Burner},
- ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
- ibcfeetypes.ModuleName: nil,
- icatypes.ModuleName: nil,
+ authtypes.FeeCollectorName: nil,
+ distrtypes.ModuleName: nil,
+ pooltypes.ModuleName: nil,
+ pooltypes.StreamAccount: nil,
+ pooltypes.ProtocolPoolDistrAccount: nil,
+ minttypes.ModuleName: {authtypes.Minter},
+ stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
+ stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
+ govtypes.ModuleName: {authtypes.Burner},
+ nft.ModuleName: nil,
+ ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
+ ibcfeetypes.ModuleName: nil,
+ icatypes.ModuleName: nil,
+ ibcmock.ModuleName: nil,
}
)
@@ -154,6 +184,7 @@ var (
// They are exported for convenience in creating helper functions.
type SimApp struct {
*baseapp.BaseApp
+ logger log.Logger
legacyAmino *codec.LegacyAmino
appCodec codec.Codec
txConfig client.TxConfig
@@ -164,71 +195,97 @@ type SimApp struct {
tkeys map[string]*storetypes.TransientStoreKey
// keepers
- AccountKeeper authkeeper.AccountKeeper
- BankKeeper bankkeeper.Keeper
+ AccountsKeeper accounts.Keeper
+ AuthKeeper authkeeper.AccountKeeper
+ BankKeeper bankkeeper.BaseKeeper
StakingKeeper *stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
- MintKeeper mintkeeper.Keeper
+ MintKeeper *mintkeeper.Keeper
DistrKeeper distrkeeper.Keeper
GovKeeper govkeeper.Keeper
- CrisisKeeper *crisiskeeper.Keeper
UpgradeKeeper *upgradekeeper.Keeper
- ParamsKeeper paramskeeper.Keeper
AuthzKeeper authzkeeper.Keeper
- IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
- IBCFeeKeeper ibcfeekeeper.Keeper
- ICAControllerKeeper icacontrollerkeeper.Keeper
- ICAHostKeeper icahostkeeper.Keeper
EvidenceKeeper evidencekeeper.Keeper
- TransferKeeper ibctransferkeeper.Keeper
FeeGrantKeeper feegrantkeeper.Keeper
GroupKeeper groupkeeper.Keeper
+ NFTKeeper nftkeeper.Keeper
ConsensusParamsKeeper consensusparamkeeper.Keeper
CircuitKeeper circuitkeeper.Keeper
+ PoolKeeper poolkeeper.Keeper
+ EpochsKeeper *epochskeeper.Keeper
+ ParamsKeeper paramskeeper.Keeper
+
+ IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
+ IBCFeeKeeper ibcfeekeeper.Keeper
+ ICAControllerKeeper icacontrollerkeeper.Keeper
+ ICAHostKeeper icahostkeeper.Keeper
+ TransferKeeper ibctransferkeeper.Keeper
+
+ // make IBC modules public for test purposes
+ // these modules are never directly routed to by the IBC Router
+ IBCMockModule ibcmock.IBCModule
+ ICAAuthModule ibcmock.IBCModule
+ FeeMockModule ibcmock.IBCModule
// the module manager
- ModuleManager *module.Manager
- BasicModuleManager module.BasicManager
+ ModuleManager *module.Manager
// simulation manager
- simulationManager *module.SimulationManager
+ sm *module.SimulationManager
+
+ UnorderedTxManager *unorderedtx.Manager
// module configurator
- configurator module.Configurator
+ configurator module.Configurator //nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
}
func init() {
- userHomeDir, err := os.UserHomeDir()
+ var err error
+ DefaultNodeHome, err = clienthelpers.GetNodeHomeDirectory(".simapp")
if err != nil {
panic(err)
}
-
- DefaultNodeHome = filepath.Join(userHomeDir, ".simapp")
}
// NewSimApp returns a reference to an initialized SimApp.
func NewSimApp(
logger log.Logger,
- db dbm.DB,
+ db corestore.KVStoreWithBatch,
traceStore io.Writer,
loadLatest bool,
appOpts servertypes.AppOptions,
baseAppOptions ...func(*baseapp.BaseApp),
) *SimApp {
- interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
+ interfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
ProtoFiles: proto.HybridResolver,
SigningOptions: signing.Options{
- AddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(),
- },
- ValidatorAddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(),
- },
+ AddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
+ ValidatorAddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
},
})
+ if err != nil {
+ panic(err)
+ }
appCodec := codec.NewProtoCodec(interfaceRegistry)
legacyAmino := codec.NewLegacyAmino()
- txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes)
+ signingCtx := interfaceRegistry.SigningContext()
+ txDecoder, err := txdecode.NewDecoder(txdecode.Options{
+ SigningContext: signingCtx,
+ ProtoCodec: appCodec,
+ })
+ if err != nil {
+ panic(err)
+ }
+ txConfig := authtx.NewTxConfig(appCodec, signingCtx.AddressCodec(), signingCtx.ValidatorAddressCodec(), authtx.DefaultSignModes)
+
+ govModuleAddr, err := signingCtx.AddressCodec().BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ panic(err)
+ }
+
+ if err := signingCtx.Validate(); err != nil {
+ panic(err)
+ }
std.RegisterLegacyAminoCodec(legacyAmino)
std.RegisterInterfaces(interfaceRegistry)
@@ -259,6 +316,14 @@ func NewSimApp(
// }
// baseAppOptions = append(baseAppOptions, prepareOpt)
+ // create and set dummy vote extension handler
+ // voteExtOp := func(bApp *baseapp.BaseApp) {
+ // voteExtHandler := NewVoteExtensionHandler()
+ // voteExtHandler.SetHandlers(bApp)
+ // }
+ // baseAppOptions = append(baseAppOptions, voteExtOp, baseapp.SetOptimisticExecution(),
+ // baseapp.SetIncludeNestedMsgsGas([]sdk.Msg{&govv1.MsgSubmitProposal{}}))
+
bApp := baseapp.NewBaseApp(appName, logger, db, txConfig.TxDecoder(), baseAppOptions...)
bApp.SetCommitMultiStoreTracer(traceStore)
bApp.SetVersion(version.Version)
@@ -266,11 +331,15 @@ func NewSimApp(
bApp.SetTxEncoder(txConfig.TxEncoder())
keys := storetypes.NewKVStoreKeys(
- authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey,
+ authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
- govtypes.StoreKey, group.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey,
- evidencetypes.StoreKey, ibctransfertypes.StoreKey, icacontrollertypes.StoreKey, icahosttypes.StoreKey,
- authzkeeper.StoreKey, ibcfeetypes.StoreKey, consensusparamtypes.StoreKey, circuittypes.StoreKey,
+ govtypes.StoreKey, consensustypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey,
+ evidencetypes.StoreKey, circuittypes.StoreKey,
+ authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, pooltypes.StoreKey,
+ accounts.StoreKey, epochstypes.StoreKey,
+ paramstypes.StoreKey,
+ ibcexported.StoreKey, ibctransfertypes.StoreKey, icacontrollertypes.StoreKey,
+ icahosttypes.StoreKey, ibcfeetypes.StoreKey,
)
// register streaming services
@@ -282,6 +351,7 @@ func NewSimApp(
app := &SimApp{
BaseApp: bApp,
+ logger: logger,
legacyAmino: legacyAmino,
appCodec: appCodec,
txConfig: txConfig,
@@ -289,42 +359,101 @@ func NewSimApp(
keys: keys,
tkeys: tkeys,
}
+ cometService := runtime.NewContextAwareCometInfoService()
app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey])
// set the BaseApp's parameter store
- app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), runtime.EventService{})
+ app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[consensustypes.StoreKey]), logger.With(log.ModuleKey, "x/consensus")), govModuleAddr)
bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore)
- // SDK module keepers
+ // set the version modifier
+ bApp.SetVersionModifier(consensus.ProvideAppVersionModifier(app.ConsensusParamsKeeper))
// add keepers
- app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.Bech32MainPrefix), sdk.Bech32MainPrefix, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ accountsKeeper, err := accounts.NewKeeper(
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[accounts.StoreKey]), logger.With(log.ModuleKey, "x/accounts"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ signingCtx.AddressCodec(),
+ appCodec.InterfaceRegistry(),
+ txDecoder,
+ // Lockup account
+ accountstd.AddAccount(lockup.CONTINUOUS_LOCKING_ACCOUNT, lockup.NewContinuousLockingAccount),
+ accountstd.AddAccount(lockup.PERIODIC_LOCKING_ACCOUNT, lockup.NewPeriodicLockingAccount),
+ accountstd.AddAccount(lockup.DELAYED_LOCKING_ACCOUNT, lockup.NewDelayedLockingAccount),
+ accountstd.AddAccount(lockup.PERMANENT_LOCKING_ACCOUNT, lockup.NewPermanentLockingAccount),
+ accountstd.AddAccount("multisig", multisig.NewAccount),
+ // PRODUCTION: add
+ baseaccount.NewAccount("base", txConfig.SignModeHandler(), baseaccount.WithSecp256K1PubKey()),
+ )
+ if err != nil {
+ panic(err)
+ }
+ app.AccountsKeeper = accountsKeeper
+
+ app.AuthKeeper = authkeeper.NewAccountKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), logger.With(log.ModuleKey, "x/auth")), appCodec, authtypes.ProtoBaseAccount, accountsKeeper, maccPerms, signingCtx.AddressCodec(), sdk.Bech32MainPrefix, govModuleAddr)
+ blockedAddrs, err := BlockedAddresses(signingCtx.AddressCodec())
+ if err != nil {
+ panic(err)
+ }
app.BankKeeper = bankkeeper.NewBaseKeeper(
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), logger.With(log.ModuleKey, "x/bank")),
appCodec,
- runtime.NewKVStoreService(keys[banktypes.StoreKey]),
- app.AccountKeeper,
- BlockedAddresses(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- logger,
+ app.AuthKeeper,
+ blockedAddrs,
+ govModuleAddr,
)
+
+ // optional: enable sign mode textual by overwriting the default tx config (after setting the bank keeper)
+ enabledSignModes := append(authtx.DefaultSignModes, sigtypes.SignMode_SIGN_MODE_TEXTUAL)
+ txConfigOpts := authtx.ConfigOptions{
+ EnabledSignModes: enabledSignModes,
+ TextualCoinMetadataQueryFn: txmodule.NewBankKeeperCoinMetadataQueryFn(app.BankKeeper),
+ SigningOptions: &signing.Options{
+ AddressCodec: signingCtx.AddressCodec(),
+ ValidatorAddressCodec: signingCtx.ValidatorAddressCodec(),
+ },
+ }
+ txConfig, err = authtx.NewTxConfigWithOptions(
+ appCodec,
+ txConfigOpts,
+ )
+ if err != nil {
+ panic(err)
+ }
+ app.txConfig = txConfig
+
app.StakingKeeper = stakingkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr), authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ appCodec,
+ runtime.NewEnvironment(
+ runtime.NewKVStoreService(keys[stakingtypes.StoreKey]),
+ logger.With(log.ModuleKey, "x/staking"),
+ runtime.EnvWithMsgRouterService(app.MsgServiceRouter()),
+ runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.AuthKeeper,
+ app.BankKeeper,
+ app.ConsensusParamsKeeper,
+ govModuleAddr,
+ signingCtx.ValidatorAddressCodec(),
+ authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ cometService,
)
- app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), app.StakingKeeper, app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, app.StakingKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[minttypes.StoreKey]), logger.With(log.ModuleKey, "x/mint")), app.AuthKeeper, app.BankKeeper, authtypes.FeeCollectorName, govModuleAddr)
+ if err := app.MintKeeper.SetMintFn(mintkeeper.DefaultMintFn(minttypes.DefaultInflationCalculationFn, app.StakingKeeper, app.MintKeeper)); err != nil {
+ panic(err)
+ }
- app.SlashingKeeper = slashingkeeper.NewKeeper(
- appCodec, legacyAmino, runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- )
+ app.PoolKeeper = poolkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), logger.With(log.ModuleKey, "x/protocolpool")), app.AuthKeeper, app.BankKeeper, govModuleAddr)
- invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod))
- app.CrisisKeeper = crisiskeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[crisistypes.StoreKey]), invCheckPeriod,
- app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec())
+ app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[distrtypes.StoreKey]), logger.With(log.ModuleKey, "x/distribution")), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, cometService, authtypes.FeeCollectorName, govModuleAddr)
- app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[feegrant.StoreKey]), app.AccountKeeper)
+ app.SlashingKeeper = slashingkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), logger.With(log.ModuleKey, "x/slashing")),
+ appCodec, legacyAmino, app.StakingKeeper, govModuleAddr,
+ )
+
+ app.FeeGrantKeeper = feegrantkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[feegrant.StoreKey]), logger.With(log.ModuleKey, "x/feegrant")), appCodec, app.AuthKeeper.AddressCodec())
// register the staking hooks
// NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
@@ -332,17 +461,20 @@ func NewSimApp(
stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()),
)
- app.CircuitKeeper = circuitkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[circuittypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec())
+ app.CircuitKeeper = circuitkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[circuittypes.StoreKey]), logger.With(log.ModuleKey, "x/circuit")), appCodec, govModuleAddr, app.AuthKeeper.AddressCodec())
app.BaseApp.SetCircuitBreaker(&app.CircuitKeeper)
- app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), appCodec, app.MsgServiceRouter(), app.AccountKeeper)
+ app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), logger.With(log.ModuleKey, "x/authz"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, app.AuthKeeper.AddressCodec())
groupConfig := group.DefaultConfig()
/*
- Example of setting group params:
- groupConfig.MaxMetadataLen = 1000
+ Example of group params:
+ config.MaxExecutionPeriod = "1209600s" // example execution period in seconds
+ config.MaxMetadataLen = 1000 // example metadata length in bytes
+ config.MaxProposalTitleLen = 255 // example max title length in characters
+ config.MaxProposalSummaryLen = 10200 // example max summary length in characters
*/
- app.GroupKeeper = groupkeeper.NewKeeper(keys[group.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper, groupConfig)
+ app.GroupKeeper = groupkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[group.StoreKey]), logger.With(log.ModuleKey, "x/group"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, app.AuthKeeper, groupConfig)
// get skipUpgradeHeights from the app options
skipUpgradeHeights := map[int64]bool{}
@@ -351,21 +483,29 @@ func NewSimApp(
}
homePath := cast.ToString(appOpts.Get(flags.FlagHome))
// set the governance module account as the authority for conducting upgrades
- app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.UpgradeKeeper = upgradekeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), logger.With(log.ModuleKey, "x/upgrade"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), skipUpgradeHeights, appCodec, homePath, app.BaseApp, govModuleAddr, app.ConsensusParamsKeeper)
app.IBCKeeper = ibckeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcexported.StoreKey]), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")),
+ app.GetSubspace(ibcexported.ModuleName),
+ app.UpgradeKeeper,
+ govModuleAddr,
)
- govConfig := govtypes.DefaultConfig()
+ govRouter := govv1beta1.NewRouter()
+ govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).
+ AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper))
+
+ govConfig := govkeeper.DefaultConfig()
/*
Example of setting gov params:
govConfig.MaxMetadataLen = 10000
*/
- govKeeper := govkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[govtypes.StoreKey]), app.AccountKeeper, app.BankKeeper,
- app.StakingKeeper, app.DistrKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- )
+ govKeeper := govkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[govtypes.StoreKey]), logger.With(log.ModuleKey, "x/gov"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper, govConfig, govModuleAddr)
+
+ // Set legacy router for backwards compatibility with gov v1beta1
+ govKeeper.SetLegacyRouter(govRouter)
app.GovKeeper = *govKeeper.SetHooks(
govtypes.NewMultiGovHooks(
@@ -373,30 +513,60 @@ func NewSimApp(
),
)
+ app.NFTKeeper = nftkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[nftkeeper.StoreKey]), logger.With(log.ModuleKey, "x/nft")), appCodec, app.AuthKeeper, app.BankKeeper)
+
+ evidenceKeeper := evidencekeeper.NewKeeper(
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), logger.With(log.ModuleKey, "x/evidence"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.StakingKeeper,
+ app.SlashingKeeper,
+ app.ConsensusParamsKeeper,
+ app.AuthKeeper.AddressCodec(),
+ app.StakingKeeper.ConsensusAddressCodec(),
+ )
+
+ // If evidence needs to be handled for the app, set routes in router here and seal
+ app.EvidenceKeeper = *evidenceKeeper
+
+ app.EpochsKeeper = epochskeeper.NewKeeper(
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[epochstypes.StoreKey]), logger.With(log.ModuleKey, "x/epochs")),
+ appCodec,
+ )
+
+ app.EpochsKeeper.SetHooks(
+ epochstypes.NewMultiEpochHooks(
+ // insert epoch hooks receivers here
+ ),
+ )
+
// IBC Fee Module keeper
app.IBCFeeKeeper = ibcfeekeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))),
app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
+ app.AuthKeeper, app.BankKeeper,
)
// ICA Controller keeper
app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), app.GetSubspace(icacontrollertypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), logger.With(log.ModuleKey, "x/icacontroller"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter())),
+ app.GetSubspace(icacontrollertypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
app.IBCKeeper.ChannelKeeper,
- app.MsgServiceRouter(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ govModuleAddr,
)
// ICA Host keeper
app.ICAHostKeeper = icahostkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), app.GetSubspace(icahosttypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), logger.With(log.ModuleKey, "x/icahost"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.GetSubspace(icahosttypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
- app.IBCKeeper.ChannelKeeper, app.AccountKeeper,
- app.MsgServiceRouter(), app.GRPCQueryRouter(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.IBCKeeper.ChannelKeeper,
+ app.AuthKeeper,
+ govModuleAddr,
)
// Create IBC Router
@@ -407,13 +577,34 @@ func NewSimApp(
// Create Transfer Keeper and pass IBCFeeKeeper as expected Channel and PortKeeper
// since fee middleware will wrap the IBCKeeper for underlying application.
app.TransferKeeper = ibctransferkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), app.GetSubspace(ibctransfertypes.ModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))),
+ app.GetSubspace(ibctransfertypes.ModuleName),
app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.AuthKeeper, app.BankKeeper,
+ govModuleAddr,
)
+ // Mock Module Stack
+
+ // Mock Module setup for testing IBC and also acts as the interchain accounts authentication module
+ // NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do
+ // not replicate if you do not need to test core IBC or light clients.
+ mockModule := ibcmock.NewAppModule()
+
+ // The mock module is used for testing IBC
+ mockIBCModule := ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(ibcmock.ModuleName))
+ app.IBCMockModule = mockIBCModule
+ ibcRouter.AddRoute(ibcmock.ModuleName, mockIBCModule)
+
+ // Mock IBC app wrapped with a middleware which does not implement the UpgradeableModule interface.
+ // NOTE: this is used to test integration with apps which do not yet fulfill the UpgradeableModule interface and error when
+ // an upgrade is tried on the channel.
+ mockBlockUpgradeIBCModule := ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(ibcmock.MockBlockUpgrade))
+ mockBlockUpgradeMw := ibcmock.NewBlockUpgradeMiddleware(&mockModule, mockBlockUpgradeIBCModule.IBCApp)
+ ibcRouter.AddRoute(ibcmock.MockBlockUpgrade, mockBlockUpgradeMw)
+
// Create Transfer Stack
// SendPacket, since it is originating from the application to core IBC:
// transferKeeper.SendPacket -> fee.SendPacket -> channel.SendPacket
@@ -436,8 +627,16 @@ func NewSimApp(
// Create Interchain Accounts Stack
// SendPacket, since it is originating from the application to core IBC:
// icaControllerKeeper.SendTx -> fee.SendPacket -> channel.SendPacket
+
+ // initialize ICA module with mock module as the authentication module on the controller side
var icaControllerStack porttypes.IBCModule
- icaControllerStack = icacontroller.NewIBCMiddleware(app.ICAControllerKeeper)
+ icaControllerStack = ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(""))
+ var ok bool
+ app.ICAAuthModule, ok = icaControllerStack.(ibcmock.IBCModule)
+ if !ok {
+ panic(fmt.Errorf("cannot convert %T into %T", icaControllerStack, app.ICAAuthModule))
+ }
+ icaControllerStack = icacontroller.NewIBCMiddlewareWithAuth(icaControllerStack, app.ICAControllerKeeper)
icaControllerStack = ibcfee.NewIBCMiddleware(icaControllerStack, app.IBCFeeKeeper)
// RecvPacket, message that originates from core IBC and goes down to app, the flow is:
@@ -450,13 +649,29 @@ func NewSimApp(
// Add host, controller & ica auth modules to IBC router
ibcRouter.
AddRoute(icacontrollertypes.SubModuleName, icaControllerStack).
- AddRoute(icahosttypes.SubModuleName, icaHostStack)
+ AddRoute(icahosttypes.SubModuleName, icaHostStack).
+ AddRoute(ibcmock.ModuleName+icacontrollertypes.SubModuleName, icaControllerStack) // ica with mock auth module stack route to ica (top level of middleware stack)
+
+ // Create Mock IBC Fee module stack for testing
+ // SendPacket, mock module cannot send packets
+
+ // OnRecvPacket, message that originates from core IBC and goes down to app, the flow is the otherway
+ // channel.RecvPacket -> fee.OnRecvPacket -> mockModule.OnRecvPacket
+
+ // OnAcknowledgementPacket as this is where fee's are paid out
+ // mockModule.OnAcknowledgementPacket -> fee.OnAcknowledgementPacket -> channel.OnAcknowledgementPacket
+
+ // create fee wrapped mock module
+ feeMockModule := ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(MockFeePort))
+ app.FeeMockModule = feeMockModule
+ feeWithMockModule := ibcfee.NewIBCMiddleware(feeMockModule, app.IBCFeeKeeper)
+ ibcRouter.AddRoute(MockFeePort, feeWithMockModule)
// Set the IBC Routers
app.IBCKeeper.SetRouter(ibcRouter)
clientKeeper := app.IBCKeeper.ClientKeeper
- storeProvider := clientKeeper.GetStoreProvider()
+ storeProvider := app.IBCKeeper.ClientKeeper.GetStoreProvider()
tmLightClientModule := ibctm.NewLightClientModule(appCodec, storeProvider)
clientKeeper.AddRoute(ibctm.ModuleName, &tmLightClientModule)
@@ -464,71 +679,47 @@ func NewSimApp(
smLightClientModule := solomachine.NewLightClientModule(appCodec, storeProvider)
clientKeeper.AddRoute(solomachine.ModuleName, &smLightClientModule)
- // create evidence keeper with router
- evidenceKeeper := evidencekeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), app.StakingKeeper, app.SlashingKeeper, app.AccountKeeper.AddressCodec(), runtime.ProvideCometInfoService(),
- )
- // If evidence needs to be handled for the app, set routes in router here and seal
- app.EvidenceKeeper = *evidenceKeeper
-
// **** Module Options ****
- // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment
- // we prefer to be more strict in what arguments the modules expect.
- skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants))
-
// NOTE: Any module instantiated in the module manager that is later modified
// must be passed by reference here.
app.ModuleManager = module.NewManager(
- genutil.NewAppModule(
- app.AccountKeeper, app.StakingKeeper, app,
- txConfig,
- ),
- auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
- vesting.NewAppModule(app.AccountKeeper, app.BankKeeper),
- bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)),
- crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)),
- feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry),
- gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
- mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)),
- slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry),
- distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)),
- staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)),
- upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()),
- evidence.NewAppModule(app.EvidenceKeeper),
+ genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator),
+ accounts.NewAppModule(appCodec, app.AccountsKeeper),
+ auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
+ vesting.NewAppModule(app.AuthKeeper, app.BankKeeper),
+ bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper),
+ feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry),
+ gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper),
+ mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper),
+ slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService),
+ distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper),
+ staking.NewAppModule(appCodec, app.StakingKeeper),
+ upgrade.NewAppModule(app.UpgradeKeeper),
params.NewAppModule(app.ParamsKeeper),
- authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
- groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
+ evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService),
+ authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry),
+ groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
+ nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper),
circuit.NewAppModule(appCodec, app.CircuitKeeper),
+ protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper),
+ epochs.NewAppModule(appCodec, app.EpochsKeeper),
// IBC modules
- ibc.NewAppModule(app.IBCKeeper),
- transfer.NewAppModule(app.TransferKeeper),
- ibcfee.NewAppModule(app.IBCFeeKeeper),
- ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper),
+ ibc.NewAppModule(appCodec, app.IBCKeeper),
+ transfer.NewAppModule(appCodec, app.TransferKeeper),
+ ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper),
+ ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper),
+ mockModule,
// IBC light clients
ibctm.NewAppModule(tmLightClientModule),
solomachine.NewAppModule(smLightClientModule),
)
- // BasicModuleManager defines the module BasicManager is in charge of setting up basic,
- // non-dependant module elements, such as codec registration and genesis verification.
- // By default it is composed of all the module from the module manager.
- // Additionally, app module basics can be overwritten by passing them as argument.
- app.BasicModuleManager = module.NewBasicManagerFromManager(
- app.ModuleManager,
- map[string]module.AppModuleBasic{
- genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
- govtypes.ModuleName: gov.NewAppModuleBasic(
- []govclient.ProposalHandler{
- paramsclient.ProposalHandler,
- },
- ),
- })
- app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino)
- app.BasicModuleManager.RegisterInterfaces(interfaceRegistry)
+ app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino)
+ app.ModuleManager.RegisterInterfaces(interfaceRegistry)
// NOTE: upgrade module is required to be prioritized
app.ModuleManager.SetOrderPreBlockers(
@@ -542,6 +733,7 @@ func NewSimApp(
app.ModuleManager.SetOrderBeginBlockers(
minttypes.ModuleName,
distrtypes.ModuleName,
+ pooltypes.ModuleName,
slashingtypes.ModuleName,
evidencetypes.ModuleName,
stakingtypes.ModuleName,
@@ -549,11 +741,12 @@ func NewSimApp(
ibctransfertypes.ModuleName,
genutiltypes.ModuleName,
authz.ModuleName,
+ epochstypes.ModuleName,
icatypes.ModuleName,
ibcfeetypes.ModuleName,
+ ibcmock.ModuleName,
)
app.ModuleManager.SetOrderEndBlockers(
- crisistypes.ModuleName,
govtypes.ModuleName,
stakingtypes.ModuleName,
ibcexported.ModuleName,
@@ -562,19 +755,38 @@ func NewSimApp(
feegrant.ModuleName,
icatypes.ModuleName,
ibcfeetypes.ModuleName,
+ ibcmock.ModuleName,
group.ModuleName,
+ pooltypes.ModuleName,
)
// NOTE: The genutils module must occur after staking so that pools are
// properly initialized with tokens from genesis accounts.
// NOTE: The genutils module must also occur after auth so that it can access the params from auth.
genesisModuleOrder := []string{
+ consensustypes.ModuleName,
+ accounts.ModuleName,
authtypes.ModuleName,
- banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName,
- slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName,
- ibcexported.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, ibctransfertypes.ModuleName,
- icatypes.ModuleName, ibcfeetypes.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName,
- vestingtypes.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName,
+ banktypes.ModuleName,
+ distrtypes.ModuleName,
+ stakingtypes.ModuleName,
+ slashingtypes.ModuleName,
+ govtypes.ModuleName,
+ minttypes.ModuleName,
+ ibcexported.ModuleName,
+ genutiltypes.ModuleName,
+ evidencetypes.ModuleName,
+ authz.ModuleName,
+ ibctransfertypes.ModuleName,
+ feegrant.ModuleName,
+ nft.ModuleName,
+ group.ModuleName,
+ icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, paramstypes.ModuleName,
+ upgradetypes.ModuleName,
+ vestingtypes.ModuleName,
+ circuittypes.ModuleName,
+ pooltypes.ModuleName,
+ epochstypes.ModuleName,
}
app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...)
app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...)
@@ -582,16 +794,15 @@ func NewSimApp(
// Uncomment if you want to set a custom migration order here.
// app.ModuleManager.SetOrderMigrations(custom order)
- app.ModuleManager.RegisterInvariants(app.CrisisKeeper)
app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter())
- err := app.ModuleManager.RegisterServices(app.configurator)
+ err = app.ModuleManager.RegisterServices(app.configurator)
if err != nil {
panic(err)
}
- // registerUpgradeHandlers is used for registering any on-chain upgrades.
+ // RegisterUpgradeHandlers is used for registering any on-chain upgrades.
// Make sure it's called after `app.ModuleManager` and `app.configurator` are set.
- app.registerUpgradeHandlers()
+ // app.RegisterUpgradeHandlers()
autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules))
@@ -609,11 +820,30 @@ func NewSimApp(
// NOTE: this is not required apps that don't use the simulator for fuzz testing
// transactions
overrideModules := map[string]module.AppModuleSimulation{
- authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
+ authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
}
- app.simulationManager = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
+ app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
- app.simulationManager.RegisterStoreDecoders()
+ // create, start, and load the unordered tx manager
+ utxDataDir := filepath.Join(homePath, "data")
+ app.UnorderedTxManager = unorderedtx.NewManager(utxDataDir)
+ app.UnorderedTxManager.Start()
+
+ if err := app.UnorderedTxManager.OnInit(); err != nil {
+ panic(fmt.Errorf("failed to initialize unordered tx manager: %w", err))
+ }
+
+ // register custom snapshot extensions (if any)
+ if manager := app.SnapshotManager(); manager != nil {
+ err := manager.RegisterExtensions(
+ unorderedtx.NewSnapshotter(app.UnorderedTxManager),
+ )
+ if err != nil {
+ panic(fmt.Errorf("failed to register snapshot extension: %w", err))
+ }
+ }
+
+ app.sm.RegisterStoreDecoders()
// initialize stores
app.MountKVStores(keys)
@@ -634,12 +864,7 @@ func NewSimApp(
// meaning that both `runMsgs` and `postHandler` state will be committed if
// both are successful, and both will be reverted if any of the two fails.
//
- // The SDK exposes a default postHandlers chain, which is comprised of only
- // one decorator: the Transaction Tips decorator. However, some chains do
- // not need it by default, so feel free to comment the next line if you do
- // not need tips.
- // To read more about tips:
- // https://docs.cosmos.network/main/core/tips.html
+ // The SDK exposes a default postHandlers chain
//
// Please note that changing any of the anteHandler or postHandler chain is
// likely to be a state-machine breaking change, which needs a coordinated
@@ -674,15 +899,19 @@ func NewSimApp(
func (app *SimApp) setAnteHandler(txConfig client.TxConfig) {
anteHandler, err := NewAnteHandler(
HandlerOptions{
- ante.HandlerOptions{
- AccountKeeper: app.AccountKeeper,
- BankKeeper: app.BankKeeper,
- SignModeHandler: txConfig.SignModeHandler(),
- FeegrantKeeper: app.FeeGrantKeeper,
- SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
+ HandlerOptions: ante.HandlerOptions{
+ Environment: runtime.NewEnvironment(nil, app.logger, runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), // nil is set as the kvstoreservice to avoid module access
+ AccountAbstractionKeeper: app.AccountsKeeper,
+ AccountKeeper: app.AuthKeeper,
+ BankKeeper: app.BankKeeper,
+ ConsensusKeeper: app.ConsensusParamsKeeper,
+ SignModeHandler: txConfig.SignModeHandler(),
+ FeegrantKeeper: app.FeeGrantKeeper,
+ SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
+ UnorderedTxManager: app.UnorderedTxManager,
},
- &app.CircuitKeeper,
- app.IBCKeeper,
+ CircuitKeeper: &app.CircuitKeeper,
+ IBCKeeper: app.IBCKeeper,
},
)
if err != nil {
@@ -704,11 +933,22 @@ func (app *SimApp) setPostHandler() {
app.SetPostHandler(postHandler)
}
+// Close closes all necessary application resources.
+// It implements servertypes.Application.
+func (app *SimApp) Close() error {
+ if err := app.BaseApp.Close(); err != nil {
+ return err
+ }
+
+ return app.UnorderedTxManager.Close()
+}
+
// Name returns the name of the App
func (app *SimApp) Name() string { return app.BaseApp.Name() }
// PreBlocker application updates every pre block
-func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) {
+func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.FinalizeBlockRequest) error {
+ app.UnorderedTxManager.OnNewBlock(ctx.BlockTime())
return app.ModuleManager.PreBlock(ctx)
}
@@ -722,21 +962,22 @@ func (app *SimApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) {
return app.ModuleManager.EndBlock(ctx)
}
-// Configurator returns the configurator for the app
-func (app *SimApp) Configurator() module.Configurator {
+func (app *SimApp) Configurator() module.Configurator { //nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
return app.configurator
}
// InitChainer application update at chain initialization
-func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
+func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.InitChainRequest) (*abci.InitChainResponse, error) {
var genesisState GenesisState
- if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
- panic(err)
+ err := json.Unmarshal(req.AppStateBytes, &genesisState)
+ if err != nil {
+ return nil, err
}
- if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()); err != nil {
- panic(err)
+ err = app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap())
+ if err != nil {
+ return nil, err
}
- return app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
+ return app.ModuleManager.InitGenesis(ctx, genesisState)
}
// LoadHeight loads a particular height
@@ -772,25 +1013,15 @@ func (app *SimApp) TxConfig() client.TxConfig {
// AutoCliOpts returns the autocli options for the app.
func (app *SimApp) AutoCliOpts() autocli.AppOptions {
- modules := make(map[string]appmodule.AppModule, 0)
- for _, m := range app.ModuleManager.Modules {
- if moduleWithName, ok := m.(module.HasName); ok {
- moduleName := moduleWithName.Name()
- if appModule, ok := moduleWithName.(appmodule.AppModule); ok {
- modules[moduleName] = appModule
- }
- }
- }
-
return autocli.AppOptions{
- Modules: modules,
+ Modules: app.ModuleManager.Modules,
ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules),
}
}
-// DefaultGenesis returns a default genesis from the registered AppModuleBasic's.
+// DefaultGenesis returns a default genesis from the registered AppModule's.
func (app *SimApp) DefaultGenesis() map[string]json.RawMessage {
- return app.BasicModuleManager.DefaultGenesis(app.appCodec)
+ return app.ModuleManager.DefaultGenesis()
}
// GetKey returns the KVStoreKey for the provided store key.
@@ -820,7 +1051,7 @@ func (app *SimApp) GetSubspace(moduleName string) paramstypes.Subspace {
// SimulationManager implements the SimulationApp interface
func (app *SimApp) SimulationManager() *module.SimulationManager {
- return app.simulationManager
+ return app.sm
}
// RegisterAPIRoutes registers all application module routes with the provided
@@ -837,7 +1068,7 @@ func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICon
nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// Register grpc-gateway routes for all modules.
- app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
+ app.ModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// register swagger API from root so that other applications can override easily
if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil {
@@ -865,29 +1096,40 @@ func (app *SimApp) RegisterNodeService(clientCtx client.Context, cfg config.Conf
nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg)
}
+// ValidatorKeyProvider returns a function that generates a validator key
+// Supported key types are those supported by Comet: ed25519, secp256k1, bls12-381
+func (*SimApp) ValidatorKeyProvider() runtime.KeyGenF {
+ return func() (cmtcrypto.PrivKey, error) {
+ return cmted25519.GenPrivKey(), nil
+ }
+}
+
// GetMaccPerms returns a copy of the module account permissions
//
// NOTE: This is solely to be used for testing purposes.
func GetMaccPerms() map[string][]string {
- dupMaccPerms := make(map[string][]string)
- for k, v := range maccPerms {
- dupMaccPerms[k] = v
- }
-
- return dupMaccPerms
+ return maps.Clone(maccPerms)
}
// BlockedAddresses returns all the app's blocked account addresses.
-func BlockedAddresses() map[string]bool {
+func BlockedAddresses(ac coreaddress.Codec) (map[string]bool, error) {
modAccAddrs := make(map[string]bool)
for acc := range GetMaccPerms() {
- modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true
+ addr, err := ac.BytesToString(authtypes.NewModuleAddress(acc))
+ if err != nil {
+ return nil, err
+ }
+ modAccAddrs[addr] = true
}
// allow the following addresses to receive funds
- delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ addr, err := ac.BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ return nil, err
+ }
+ delete(modAccAddrs, addr)
- return modAccAddrs
+ return modAccAddrs, nil
}
// initParamsKeeper init params keeper and its subspaces
@@ -904,3 +1146,20 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
return paramsKeeper
}
+
+// IBC TestingApp functions
+
+// GetBaseApp implements the TestingApp interface.
+func (app *SimApp) GetBaseApp() *baseapp.BaseApp {
+ return app.BaseApp
+}
+
+// GetIBCKeeper implements the TestingApp interface.
+func (app *SimApp) GetIBCKeeper() *ibckeeper.Keeper {
+ return app.IBCKeeper
+}
+
+// GetTxConfig implements the TestingApp interface.
+func (app *SimApp) GetTxConfig() client.TxConfig {
+ return app.txConfig
+}
diff --git a/simapp/export.go b/simapp/export.go
index 26438874ac8..f6fe79c8649 100644
--- a/simapp/export.go
+++ b/simapp/export.go
@@ -2,44 +2,46 @@ package simapp
import (
"encoding/json"
- "errors"
- "log"
+ "fmt"
+ "cosmossdk.io/collections"
storetypes "cosmossdk.io/store/types"
+ slashingtypes "cosmossdk.io/x/slashing/types"
+ "cosmossdk.io/x/staking"
+ stakingtypes "cosmossdk.io/x/staking/types"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- "github.com/cosmos/cosmos-sdk/x/staking"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
)
// ExportAppStateAndValidators exports the state of the application for a genesis
// file.
-func (app *SimApp) ExportAppStateAndValidators(
- forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string,
-) (servertypes.ExportedApp, error) {
+func (app *SimApp) ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (servertypes.ExportedApp, error) {
// as if they could withdraw from the start of the next block
- ctx := app.NewContext(true)
+ ctx := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()})
// We export at last height + 1, because that's the height at which
- // Tendermint will start InitChain.
+ // CometBFT will start InitChain.
height := app.LastBlockHeight() + 1
if forZeroHeight {
height = 0
app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs)
}
- genState, err := app.ModuleManager.ExportGenesis(ctx, app.appCodec)
+ genState, err := app.ModuleManager.ExportGenesisForModules(ctx, modulesToExport)
if err != nil {
return servertypes.ExportedApp{}, err
}
+
appState, err := json.MarshalIndent(genState, "", " ")
if err != nil {
return servertypes.ExportedApp{}, err
}
validators, err := staking.WriteValidators(ctx, app.StakingKeeper)
+
return servertypes.ExportedApp{
AppState: appState,
Validators: validators,
@@ -48,13 +50,14 @@ func (app *SimApp) ExportAppStateAndValidators(
}, err
}
-// prepare for fresh start at zero height
+// prepForZeroHeightGenesis prepares for fresh start at zero height
// NOTE zero height genesis is a temporary feature which will be deprecated
-// in favour of export at a block height
+//
+// in favor of export at a block height
func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) {
applyAllowedAddrs := false
- // check if there is a allowed address list
+ // check if there is an allowed address list
if len(jailAllowedAddrs) > 0 {
applyAllowedAddrs = true
}
@@ -62,20 +65,17 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
allowedAddrsMap := make(map[string]bool)
for _, addr := range jailAllowedAddrs {
- _, err := sdk.ValAddressFromBech32(addr)
+ _, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(addr)
if err != nil {
- log.Fatal(err)
+ panic(err)
}
allowedAddrsMap[addr] = true
}
- /* Just to be safe, assert the invariants on current state. */
- app.CrisisKeeper.AssertInvariants(ctx)
-
/* Handle fee distribution state. */
// withdraw all validator commission
- err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
+ err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
@@ -94,36 +94,43 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
}
for _, delegation := range dels {
- valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)
+ valAddr, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(delegation.ValidatorAddress)
if err != nil {
panic(err)
}
- delAddr, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress)
+ delAddr, err := app.InterfaceRegistry().SigningContext().AddressCodec().StringToBytes(delegation.DelegatorAddress)
if err != nil {
panic(err)
}
+
_, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr)
}
// clear validator slash events
- app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx)
+ err = app.DistrKeeper.ValidatorSlashEvents.Clear(ctx, nil)
+ if err != nil {
+ panic(err)
+ }
// clear validator historical rewards
- app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx)
+ err = app.DistrKeeper.ValidatorHistoricalRewards.Clear(ctx, nil)
+ if err != nil {
+ panic(err)
+ }
// set context height to zero
height := ctx.BlockHeight()
ctx = ctx.WithBlockHeight(0)
// reinitialize all validators
- err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
- valBz, err := sdk.ValAddressFromBech32(val.GetOperator())
+ err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val sdk.ValidatorI) (stop bool) {
+ valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
if err != nil {
panic(err)
}
- // donate any unwithdrawn outstanding reward fraction tokens to the community pool
- scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)
+ // donate any unwithdrawn outstanding reward tokens to the community pool
+ rewards, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)
if err != nil {
panic(err)
}
@@ -131,7 +138,7 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
if err != nil {
panic(err)
}
- feePool.CommunityPool = feePool.CommunityPool.Add(scraps...)
+ feePool.DecimalPool = feePool.DecimalPool.Add(rewards...) // distribution will allocate this to the protocolpool eventually
if err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil {
panic(err)
}
@@ -147,21 +154,23 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
// reinitialize all delegations
for _, del := range dels {
- valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress)
+ valAddr, err := app.InterfaceRegistry().SigningContext().ValidatorAddressCodec().StringToBytes(del.ValidatorAddress)
if err != nil {
panic(err)
}
- delAddr, err := sdk.AccAddressFromBech32(del.DelegatorAddress)
+ delAddr, err := app.InterfaceRegistry().SigningContext().AddressCodec().StringToBytes(del.DelegatorAddress)
if err != nil {
panic(err)
}
- err = app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr)
- if err != nil {
- panic(err)
+
+ if err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr); err != nil {
+ // never called as BeforeDelegationCreated always returns nil
+ panic(fmt.Errorf("error while incrementing period: %w", err))
}
- err = app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr)
- if err != nil {
- panic(err)
+
+ if err := app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr); err != nil {
+ // never called as AfterDelegationModified always returns nil
+ panic(fmt.Errorf("error while creating a new delegation period record: %w", err))
}
}
@@ -186,23 +195,26 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
}
// iterate through unbonding delegations, reset creation height
- err = app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) {
- for i := range ubd.Entries {
- ubd.Entries[i].CreationHeight = 0
- }
- err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
- if err != nil {
- panic(err)
- }
- return false
- })
+ err = app.StakingKeeper.UnbondingDelegations.Walk(
+ ctx,
+ nil,
+ func(_ collections.Pair[[]byte, []byte], ubd stakingtypes.UnbondingDelegation) (stop bool, err error) {
+ for i := range ubd.Entries {
+ ubd.Entries[i].CreationHeight = 0
+ }
+ err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
+ if err != nil {
+ return true, err
+ }
+ return false, err
+ },
+ )
if err != nil {
panic(err)
}
-
// Iterate through validators by power descending, reset bond heights, and
// update bond intra-tx counters.
- store := ctx.KVStore(app.keys[stakingtypes.StoreKey])
+ store := ctx.KVStore(app.GetKey(stakingtypes.StoreKey))
iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey)
counter := int16(0)
@@ -210,43 +222,47 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []
addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key()))
validator, err := app.StakingKeeper.GetValidator(ctx, addr)
if err != nil {
- panic(errors.New("expected validator, not found"))
+ panic("expected validator, not found")
+ }
+
+ valAddr, err := app.StakingKeeper.ValidatorAddressCodec().BytesToString(addr)
+ if err != nil {
+ panic(err)
}
validator.UnbondingHeight = 0
- if applyAllowedAddrs && !allowedAddrsMap[addr.String()] {
+ if applyAllowedAddrs && !allowedAddrsMap[valAddr] {
validator.Jailed = true
}
- err = app.StakingKeeper.SetValidator(ctx, validator)
- if err != nil {
- panic(errors.New("couldn't set validator"))
+ if err = app.StakingKeeper.SetValidator(ctx, validator); err != nil {
+ panic(err)
}
counter++
}
- iter.Close()
+ if err := iter.Close(); err != nil {
+ app.Logger().Error("error while closing the key-value store reverse prefix iterator: ", err)
+ return
+ }
_, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
if err != nil {
- log.Fatal(err)
+ panic(err)
}
/* Handle slashing state. */
// reset start height on signing infos
- err = app.SlashingKeeper.IterateValidatorSigningInfos(
- ctx,
- func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {
- info.StartHeight = 0
- err = app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info)
- if err != nil {
- panic(err)
- }
- return false
- },
- )
+ err = app.SlashingKeeper.ValidatorSigningInfo.Walk(ctx, nil, func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool, err error) {
+ info.StartHeight = 0
+ err = app.SlashingKeeper.ValidatorSigningInfo.Set(ctx, addr, info)
+ if err != nil {
+ return true, err
+ }
+ return false, nil
+ })
if err != nil {
- log.Fatal(err)
+ panic(err)
}
}
diff --git a/simapp/go.mod b/simapp/go.mod
index e68263e7181..e33a831a836 100644
--- a/simapp/go.mod
+++ b/simapp/go.mod
@@ -1,78 +1,103 @@
-go 1.22.7
-
-toolchain go1.22.8
+go 1.23.4
module github.com/cosmos/ibc-go/simapp
replace github.com/cosmos/ibc-go/v9 => ../
require (
- cosmossdk.io/api v0.7.6
- cosmossdk.io/client/v2 v2.0.0-beta.5
- cosmossdk.io/core v0.11.1
- cosmossdk.io/log v1.4.1
- cosmossdk.io/store v1.1.1
+ cosmossdk.io/api v0.8.0
+ cosmossdk.io/client/v2 v2.0.0-beta.6
+ cosmossdk.io/collections v1.0.0-rc.1
+ cosmossdk.io/core v1.0.0
+ cosmossdk.io/core/testing v0.0.1
+ cosmossdk.io/log v1.5.0
+ cosmossdk.io/store v1.10.0-rc.1.0.20241218084712-ca559989da43
cosmossdk.io/tools/confix v0.1.2
+ cosmossdk.io/x/accounts v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1
+ cosmossdk.io/x/accounts/defaults/lockup v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/authz v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/bank v0.0.0-20241218110910-47409028a73d
cosmossdk.io/x/circuit v0.1.1
- cosmossdk.io/x/evidence v0.1.1
- cosmossdk.io/x/feegrant v0.1.1
- cosmossdk.io/x/tx v0.13.6
+ cosmossdk.io/x/consensus v0.0.0-20240911130545-9e7848985491
+ cosmossdk.io/x/distribution v0.0.0-20240906090851-36d9b25e8981
+ cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337
+ cosmossdk.io/x/evidence v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/feegrant v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/gov v0.0.0-20231113122742-912390d5fc4a
+ cosmossdk.io/x/group v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/mint v0.0.0-20240909082436-01c0e9ba3581
+ cosmossdk.io/x/nft v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/params v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/protocolpool v0.0.0-20230925135524-a1bc045b3190
+ cosmossdk.io/x/slashing v0.0.0-00010101000000-000000000000
+ cosmossdk.io/x/staking v0.0.0-20241218110910-47409028a73d
+ cosmossdk.io/x/tx v1.0.0-alpha.3
cosmossdk.io/x/upgrade v0.1.4
- github.com/cometbft/cometbft v0.38.15
- github.com/cosmos/cosmos-db v1.1.0
- github.com/cosmos/cosmos-sdk v0.50.10
+ github.com/cometbft/cometbft v1.0.0
+ github.com/cometbft/cometbft/api v1.0.0
+ github.com/cosmos/cosmos-sdk v0.53.0
github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/ibc-go/v9 v9.0.0
- github.com/spf13/cast v1.7.0
+ github.com/spf13/cast v1.7.1
github.com/spf13/cobra v1.8.1
github.com/spf13/viper v1.19.0
github.com/stretchr/testify v1.10.0
)
require (
- cloud.google.com/go v0.115.0 // indirect
- cloud.google.com/go/auth v0.6.0 // indirect
- cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
- cloud.google.com/go/compute/metadata v0.5.0 // indirect
- cloud.google.com/go/iam v1.1.9 // indirect
- cloud.google.com/go/storage v1.41.0 // indirect
- cosmossdk.io/collections v0.4.0 // indirect
- cosmossdk.io/depinject v1.0.0 // indirect
+ buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 // indirect
+ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 // indirect
+ cloud.google.com/go v0.115.1 // indirect
+ cloud.google.com/go/auth v0.8.1 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
+ cloud.google.com/go/compute/metadata v0.5.2 // indirect
+ cloud.google.com/go/iam v1.1.13 // indirect
+ cloud.google.com/go/storage v1.43.0 // indirect
+ cosmossdk.io/depinject v1.1.0 // indirect
cosmossdk.io/errors v1.0.1 // indirect
cosmossdk.io/math v1.4.0 // indirect
+ cosmossdk.io/schema v1.0.0 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/DataDog/datadog-go v4.8.3+incompatible // indirect
- github.com/DataDog/zstd v1.5.5 // indirect
+ github.com/DataDog/zstd v1.5.6 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
- github.com/aws/aws-sdk-go v1.44.224 // indirect
+ github.com/aws/aws-sdk-go v1.55.5 // indirect
+ github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.2.0 // indirect
github.com/bits-and-blooms/bitset v1.13.0 // indirect
- github.com/cenkalti/backoff/v4 v4.3.0 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
+ github.com/bytedance/sonic v1.12.6 // indirect
+ github.com/bytedance/sonic/loader v0.2.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chzyer/readline v1.5.1 // indirect
- github.com/cockroachdb/apd/v2 v2.0.2 // indirect
+ github.com/cloudwego/base64x v0.1.4 // indirect
+ github.com/cloudwego/iasm v0.2.0 // indirect
+ github.com/cockroachdb/apd/v3 v3.2.1 // indirect
github.com/cockroachdb/errors v1.11.3 // indirect
- github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect
+ github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v1.1.2 // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
- github.com/cometbft/cometbft-db v0.14.1 // indirect
+ github.com/cometbft/cometbft-db v1.0.1 // indirect
github.com/consensys/bavard v0.1.13 // indirect
github.com/consensys/gnark-crypto v0.12.1 // indirect
github.com/cosmos/btcutil v1.0.5 // indirect
+ github.com/cosmos/cosmos-db v1.1.1 // indirect
github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect
github.com/cosmos/go-bip39 v1.0.0 // indirect
github.com/cosmos/gogogateway v1.2.0 // indirect
- github.com/cosmos/iavl v1.2.0 // indirect
+ github.com/cosmos/iavl v1.3.4 // indirect
github.com/cosmos/ics23/go v0.11.0 // indirect
github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect
- github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 // indirect
+ github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect
github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
github.com/creachadair/atomicfile v0.3.1 // indirect
@@ -81,29 +106,27 @@ require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
- github.com/desertbit/timer v1.0.1 // indirect
- github.com/dgraph-io/badger/v4 v4.2.0 // indirect
- github.com/dgraph-io/ristretto v0.1.1 // indirect
+ github.com/dgraph-io/badger/v4 v4.5.0 // indirect
+ github.com/dgraph-io/ristretto/v2 v2.0.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/dvsekhvalnov/jose2go v1.7.0 // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
github.com/ethereum/go-ethereum v1.14.12 // indirect
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect
- github.com/fatih/color v1.17.0 // indirect
+ github.com/fatih/color v1.18.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/getsentry/sentry-go v0.28.1 // indirect
+ github.com/fsnotify/fsnotify v1.8.0 // indirect
+ github.com/getsentry/sentry-go v0.29.0 // indirect
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
@@ -112,10 +135,10 @@ require (
github.com/google/flatbuffers v24.3.25+incompatible // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/orderedcode v0.0.1 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
+ github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.5 // indirect
+ github.com/googleapis/gax-go/v2 v2.13.0 // indirect
github.com/gorilla/handlers v1.5.2 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
@@ -123,53 +146,58 @@ require (
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-getter v1.7.4 // indirect
+ github.com/hashicorp/go-getter v1.7.6 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-metrics v0.5.3 // indirect
- github.com/hashicorp/go-plugin v1.6.1 // indirect
+ github.com/hashicorp/go-plugin v1.6.2 // indirect
github.com/hashicorp/go-safetemp v1.0.0 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
+ github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/golang-lru v1.0.2 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/hashicorp/yamux v0.1.2 // indirect
github.com/hdevalence/ed25519consensus v0.2.0 // indirect
github.com/holiman/uint256 v1.3.1 // indirect
- github.com/huandu/skiplist v1.2.0 // indirect
+ github.com/huandu/skiplist v1.2.1 // indirect
github.com/iancoleman/strcase v0.3.0 // indirect
- github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
- github.com/klauspost/compress v1.17.9 // indirect
+ github.com/klauspost/compress v1.17.11 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.9 // indirect
- github.com/linxGnu/grocksdb v1.9.2 // indirect
- github.com/magiconair/properties v1.8.7 // indirect
+ github.com/linxGnu/grocksdb v1.9.3 // indirect
+ github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
+ github.com/magiconair/properties v1.8.9 // indirect
github.com/manifoldco/promptui v0.9.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/mattn/go-runewidth v0.0.15 // indirect
+ github.com/mdp/qrterminal/v3 v3.2.0 // indirect
github.com/minio/highwayhash v1.0.3 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mmcloughlin/addchain v0.4.0 // indirect
github.com/mtibben/percent v0.2.1 // indirect
+ github.com/muesli/termenv v0.15.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
github.com/oklog/run v1.1.0 // indirect
- github.com/pelletier/go-toml/v2 v2.2.2 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.60.1 // indirect
+ github.com/prometheus/common v0.61.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
- github.com/rogpeppe/go-internal v1.12.0 // indirect
+ github.com/rivo/uniseg v0.2.0 // indirect
+ github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/sagikazarmark/locafero v0.6.0 // indirect
@@ -186,40 +214,79 @@ require (
github.com/tidwall/btree v1.7.0 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
- github.com/ulikunitz/xz v0.5.11 // indirect
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
+ github.com/ulikunitz/xz v0.5.12 // indirect
github.com/zondax/hid v0.9.2 // indirect
github.com/zondax/ledger-go v0.14.3 // indirect
+ gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
+ gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
go.etcd.io/bbolt v1.4.0-alpha.1 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
- go.opentelemetry.io/otel v1.24.0 // indirect
- go.opentelemetry.io/otel/metric v1.24.0 // indirect
- go.opentelemetry.io/otel/trace v1.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
+ go.opentelemetry.io/otel v1.31.0 // indirect
+ go.opentelemetry.io/otel/metric v1.31.0 // indirect
+ go.opentelemetry.io/otel/trace v1.31.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/crypto v0.28.0 // indirect
- golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
- golang.org/x/net v0.30.0 // indirect
- golang.org/x/oauth2 v0.23.0 // indirect
- golang.org/x/sync v0.8.0 // indirect
- golang.org/x/sys v0.26.0 // indirect
- golang.org/x/term v0.25.0 // indirect
- golang.org/x/text v0.19.0 // indirect
- golang.org/x/time v0.5.0 // indirect
- google.golang.org/api v0.186.0 // indirect
- google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
- google.golang.org/grpc v1.68.1 // indirect
- google.golang.org/protobuf v1.35.2 // indirect
+ golang.org/x/arch v0.12.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
+ golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
+ golang.org/x/net v0.32.0 // indirect
+ golang.org/x/oauth2 v0.24.0 // indirect
+ golang.org/x/sync v0.10.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/time v0.6.0 // indirect
+ google.golang.org/api v0.192.0 // indirect
+ google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
+ google.golang.org/grpc v1.69.2 // indirect
+ google.golang.org/protobuf v1.36.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.1 // indirect
- nhooyr.io/websocket v1.8.11 // indirect
pgregory.net/rapid v1.1.0 // indirect
+ rsc.io/qr v0.2.0 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
replace github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
+
+//TODO: remove everything below after tags are created
+// v0.0.0-20241108061010-a0458127fccf = sdk release/v0.52.x branch
+// v0.0.0-20241106165340-4eb943897eaa = ibc-go marko/gomod_change branch
+// v1.0.0-alpha.5.0.20241108095921-406f977be0b9 = sdk main branch
+replace (
+ cosmossdk.io/api => cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608
+ cosmossdk.io/client/v2 => cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608
+ cosmossdk.io/core => cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608
+ cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608
+ cosmossdk.io/x/accounts => cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/lockup => cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/accounts/defaults/multisig => cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/authz => cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/bank => cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/circuit => cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/consensus => cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/distribution => cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/epochs => cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/evidence => cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/feegrant => cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/gov => cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/group => cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/mint => cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/nft => cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/params => cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/protocolpool => cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/slashing => cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/staking => cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608
+ cosmossdk.io/x/tx => cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938
+ cosmossdk.io/x/upgrade => cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608
+ github.com/cometbft/cometbft => github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f
+ // pseudo version lower than the latest tag
+ github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b
+)
diff --git a/simapp/go.sum b/simapp/go.sum
index 4fd0ffe4255..7c2c4d30c8b 100644
--- a/simapp/go.sum
+++ b/simapp/go.sum
@@ -1,3 +1,7 @@
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1 h1:LBP+N3ehp1hseHYlIIHlU0gMM3aGYDcgx/H//Pk12ko=
+buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.0-20241120201313-68e42a58b301.1/go.mod h1:pab5p7+q6IAI+R+Z2MQ+hP7ZV+FP2mcbucv6xs5WFPk=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1 h1:5wJBiYyPUS2xpqLJKm7ZEKx1VhesPOXXx5y+JxgVSX4=
+buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.0-20240130113600-88ef6483f90f.1/go.mod h1:VItWFs9dzQsqOin45pYbA4O/SRdqMPDs4XPZBHL+u2w=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -30,8 +34,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
-cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
-cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
+cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
+cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
@@ -46,10 +50,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby
cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
-cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=
-cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
-cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
-cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
+cloud.google.com/go/auth v0.8.1 h1:QZW9FjC5lZzN864p13YxvAtGUlQ+KgRL+8Sg45Z6vxo=
+cloud.google.com/go/auth v0.8.1/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc=
+cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
+cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
@@ -72,8 +76,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
-cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
-cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
+cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo=
+cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
@@ -111,12 +115,14 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97
cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
-cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE=
-cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ=
+cloud.google.com/go/iam v1.1.13 h1:7zWBXG9ERbMLrzQBRhFliAV+kjcRToDTgQT3CTwYyv4=
+cloud.google.com/go/iam v1.1.13/go.mod h1:K8mY0uSXwEXS30KrnVb+j54LB/ntfZu1dr+4zFMNbus=
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
+cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk=
+cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4=
cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
@@ -173,8 +179,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
-cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0=
-cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80=
+cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
+cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
@@ -186,36 +192,74 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
-cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY=
-cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38=
-cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I=
-cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as=
-cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s=
-cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0=
-cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA=
-cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0=
-cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050=
-cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608 h1:0266beLan2snXZMeELYMpTVcFjlSgzHhLBKxSuNVZUI=
+cosmossdk.io/api v0.8.0-rc.2.0.20241213081318-957e24171608/go.mod h1:edvI8tMINqCH75EgkOEMnCZEQ3iKJgOlZ+ZxOu4gmXU=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608 h1:umN3k+AZ91ZjYv3CDiTgFDaWe22w3JxpeJmepUwKXV8=
+cosmossdk.io/client/v2 v2.0.0-20241213081318-957e24171608/go.mod h1:Xxz5u4rK+ArCsRo9TMSirg6jPMdva6BHv9Db65OkN/Q=
+cosmossdk.io/collections v1.0.0-rc.1 h1:Mzv0YKZJ6aloy4oSnMnyl8b6PtM2dTdDlzRR/079TyM=
+cosmossdk.io/collections v1.0.0-rc.1/go.mod h1:nOgrEpyMFOWBy8QmSbq/T6Tgtm2IyOFvxDRWk+DI97k=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608 h1:w+/cxqYHud1plzCTIvEBtab6RqpgAl2C5Hgn1l4p+oo=
+cosmossdk.io/core v1.0.0-alpha.6.0.20241213081318-957e24171608/go.mod h1:gCTZBT00tI2zTQy65aSolV3aUnQDqpVgz5yOp96LpGg=
+cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
+cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
+cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
+cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
-cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
-cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU=
+cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g=
+cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI=
cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ=
cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk=
-cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y=
-cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=
+cosmossdk.io/schema v1.0.0 h1:/diH4XJjpV1JQwuIozwr+A4uFuuwanFdnw2kKeiXwwQ=
+cosmossdk.io/schema v1.0.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608 h1:NaFVgzmO3YFX+l7696SdDTtvJR0MTjjwSe0sX+inAI4=
+cosmossdk.io/store v1.0.0-rc.0.0.20241213081318-957e24171608/go.mod h1:eZNgZKvZRlDUk8CE3LTDVMAcSM7zLOet2S8fByQkF3s=
cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4=
cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo=
-cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ=
-cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q=
-cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4=
-cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc=
-cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8=
-cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ=
-cosmossdk.io/x/tx v0.13.6 h1:qCiZJ+yK5MsSdUByjOUrfm3sk7aZk1AuYufX22VLC1M=
-cosmossdk.io/x/tx v0.13.6/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w=
-cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38=
-cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608 h1:No84LXBp0kEzJfAqorxrgqzmzqOpHhbs8IK2nBpVQJY=
+cosmossdk.io/x/accounts v0.0.0-20241213081318-957e24171608/go.mod h1:wADXnci9qeFwOQ09qiyf1uLdI4n/RSSTG8mSM9hmxys=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1 h1:sVAOVQLbdmzLmjnWLhAhIN65HTmSMGBIwU2uTeSCEp0=
+cosmossdk.io/x/accounts/defaults/base v0.2.0-rc.1/go.mod h1:52PyilJMRraVwNcG58q4t7OSzSHApqNfJheq+mNB+qw=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608 h1:nMu0DD9qutZ7dzIySxTRnLYvZtockBghVkwBHyuwBLI=
+cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20241213081318-957e24171608/go.mod h1:m0eg/A4J5fmXFNGEldQpeTrMr9PFWaVIFjbDYes0j9I=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608 h1:JL+VXHmb8xqwU7ToR2RG0V2BTmE+t1PkJ880xKi46Tc=
+cosmossdk.io/x/accounts/defaults/multisig v0.0.0-20241213081318-957e24171608/go.mod h1:huNjmnJuvPXAT5zvK8S29X0u9DpCa3X9ZCUd3bJ8bng=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608 h1:MzRTC+W0Uv40yfFNegDskcisgui9lQdeG9FZxOixATk=
+cosmossdk.io/x/authz v0.0.0-20241213081318-957e24171608/go.mod h1:GMLM+m3Il+QTfOrQG08sFJXlKw95UDKPIOYcuSwjbzQ=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608 h1:lbtU7rYltk2axJ5h1DgPamVosuZEeyOAaqYPQpQBH4g=
+cosmossdk.io/x/bank v0.0.0-20241213081318-957e24171608/go.mod h1:GN02Rosc2O/vCNBnXqY35vA2hoMmRQeCKd81FuoMzmE=
+cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608 h1:ATB7FV12GCjS+KN2Fx8B878LbwzNP4bkzsznRqMmn3k=
+cosmossdk.io/x/circuit v0.0.0-20241213081318-957e24171608/go.mod h1:d4a/F6pXE2KWJdshiRxCPKyW6h5gAnAWmSCtlRrhcYk=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608 h1:lstvqRuVEDtRxiF9+LM16SpRriq0O+5lMHzsGKheXH4=
+cosmossdk.io/x/consensus v0.0.0-20241213081318-957e24171608/go.mod h1:ib+kqbNMsj6n7/LvW+qi24/1kp/ApWJpsnCWY5yN6Mk=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608 h1:hYFPPs5WsMWj/1sRpw6Aqmioph3qw5VN76geVxtaWtI=
+cosmossdk.io/x/distribution v0.0.0-20241213081318-957e24171608/go.mod h1:bG9SiC6YsVOpsKgOd+b+t3Kl4GLb9T6RjhBKesPn+Gg=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608 h1:UZSqhiAi1mKi8DE+OLGMrXSoenSl4PkyQT7xxNfr9Bw=
+cosmossdk.io/x/epochs v0.0.0-20241213081318-957e24171608/go.mod h1:PLdiJlSC0XveXA3vJ0E4n1NCG78UeHXwEk0razSnEk4=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608 h1:KqJ+F0YVwFlu06gEoWHvGvdC1DYXDL5Rykra61/pY4Q=
+cosmossdk.io/x/evidence v0.0.0-20241213081318-957e24171608/go.mod h1:YBMj0T87xliEfldeZHC60AqyZoLoy1wJzAAgaaQubBM=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608 h1:iSOOM7vAa0LuJ9xKZ7k34g5uyy9WQyfKbnAPmnf8Abc=
+cosmossdk.io/x/feegrant v0.0.0-20241213081318-957e24171608/go.mod h1:yIgJCAGBnM3sull2qACQP+uMsEoogyNO6OXz82z3tVg=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608 h1:F+w/ofuUDxFyyk6t7kt7cdcBsTa2gA7zuvCEplB871A=
+cosmossdk.io/x/gov v0.0.0-20241213081318-957e24171608/go.mod h1:ynGp02hnYhVidQiL9KOKeiZnn0h+PSEJb+XjgKH6+v4=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608 h1:ll6Pk+WoPlusW2uy8HTXupL+mees6mNohS4dfGYJsZ0=
+cosmossdk.io/x/group v0.0.0-20241213081318-957e24171608/go.mod h1:L8fBvuIwBQzABO/cYEOpekmaKlR4ELclrrGNZ6r//sg=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608 h1:t0A/ip5m09OuAY0bvpnfxJhD1/dL44JYNwffy5boqB4=
+cosmossdk.io/x/mint v0.0.0-20241213081318-957e24171608/go.mod h1:apbBgC0mKZTbgvW2ACPcNBl0z8HjCp7R9ZBns7F6J2E=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608 h1:bB3FhjvPZfkS3EksYB3YR7muxGk0/rr6U993a7ETHx0=
+cosmossdk.io/x/nft v0.0.0-20241213081318-957e24171608/go.mod h1:H1QoaISMz78OyBwXKU4gp8Gmwd1EVWq+Lb9P3BUfXUM=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608 h1:ZD/gSJbfpC2WzXr17xq5UkJBQd/BfBVajzKrieu6zjQ=
+cosmossdk.io/x/params v0.0.0-20241213081318-957e24171608/go.mod h1:btgbNMPZJWZLd03ef2AblrpJ7e9ocpTvA0xUw0hIHew=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608 h1:3rdbR/782gMtQo+1yxH+wuhJKd1jm/4X0pBgQX7pDp4=
+cosmossdk.io/x/protocolpool v0.0.0-20241213081318-957e24171608/go.mod h1:xLb6tQ33fgSOmwlMui9UjLzI9xmOclfjG2g+/z4XiUc=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608 h1:+GBTBLH54gKT2dFlUgN/XzawdBG/9U5djPecjr7meas=
+cosmossdk.io/x/slashing v0.0.0-20241213081318-957e24171608/go.mod h1:BlYhkjtZZdKXQP9mBiVwRbaduXtDKEJHQC3dZ6fZBS0=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608 h1:aycIQRLzdtuI99FkTRo4Y2QerkfKqZRYNN2BPESEc8A=
+cosmossdk.io/x/staking v0.0.0-20241213081318-957e24171608/go.mod h1:4Zyt59oTQdaKitlYyz9K7d8Mi32e+K5NliOf9HAj5Wo=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938 h1:kqbOiJpmSBE03Isw7KY27N4oCSaOcG28oaJgCLh9Rhk=
+cosmossdk.io/x/tx v1.0.0-alpha.1.0.20241212002302-a6d28e384938/go.mod h1:xlJjZV1wxZBTCP+ygZx9pNT/XxsfHDPf1H0VhHaUp5w=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608 h1:80l+duTMRKnszkWXolEs1n+1j4RFYd41mrV24P79vcY=
+cosmossdk.io/x/upgrade v0.0.0-20241213081318-957e24171608/go.mod h1:5GIkumZszCtSzsXcTtL2YP4mIU25Rn3t0y51JWzzUDI=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
@@ -230,16 +274,13 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q=
github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
-github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
-github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
+github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY=
+github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
@@ -248,25 +289,16 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I=
github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
-github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
-github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ=
-github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
-github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
+github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
+github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -274,7 +306,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
-github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E=
github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
@@ -283,14 +314,17 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurT
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c=
github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE=
-github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
-github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
-github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
+github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
+github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
+github.com/bytedance/sonic v1.12.6 h1:/isNmCUF2x3Sh8RAp/4mh4ZGkcFAX/hLrzrK3AvpRzk=
+github.com/bytedance/sonic v1.12.6/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
+github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E=
+github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
-github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
-github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
@@ -310,8 +344,11 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
+github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
+github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
+github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -321,15 +358,14 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
-github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
+github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=
+github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4=
-github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k0egdR5V6eALQYq2qbSmukrkgIh/0A=
+github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
@@ -338,29 +374,27 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg=
-github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ=
-github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ=
-github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f h1:rPWKqyc+CeuddICqlqptf+3NPE8exbC9SOGuDPTEN3k=
+github.com/cometbft/cometbft v1.0.0-rc1.0.20240908111210-ab0be101882f/go.mod h1:MqZ5E5jLU1JdP10FSRXhItpm+GdHMbW7Myv3UARLxqg=
+github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE=
+github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk=
+github.com/cometbft/cometbft/api v1.0.0 h1:gGBwvsJi/gnHJEtwYfjPIGs2AKg/Vfa1ZuKCPD1/Ko4=
+github.com/cometbft/cometbft/api v1.0.0/go.mod h1:EkQiqVSu/p2ebrZEnB2z6Re7r8XNe//M7ylR0qEwWm0=
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=
github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=
-github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI=
-github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg=
+github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM=
+github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
-github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM=
-github.com/cosmos/cosmos-sdk v0.50.10/go.mod h1:6Eesrx3ZE7vxBZWpK++30H+Uc7Q4ahQWCL7JKU/LEdU=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b h1:ZaEAV5tsUTnyWEC/Gt8DXHKBANDyx70PVCiPOEVnuHk=
+github.com/cosmos/cosmos-sdk v0.52.0-beta.2.0.20241213155709-f1e881e81b1b/go.mod h1:ecJnx3s3oQK5BR7vu25fYSD2/ND9YLGkVpST7uiBkT0=
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE=
@@ -368,15 +402,14 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ
github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
-github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM=
-github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI=
+github.com/cosmos/iavl v1.3.4 h1:A0RUAms7TZ0L6EFrrBIPg4Dy7qD9vvD5lJKUxEXURLM=
+github.com/cosmos/iavl v1.3.4/go.mod h1:T6SfBcyhulVIY2G/ZtAtQm/QiJvsuhIos52V4dWYk88=
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM=
github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4 h1:B23RM5CtuNCgvEffdaMXNZxOH3fVOtNEfEVviOs4364=
-github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241124101149-3e2c74b736f4/go.mod h1:O7A2Q93QyD0m69LQmnDgOSvHGF5URFBTgY2QsxpdqSs=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9 h1:9o9xcAsD+JAJQTnI9sRwdCSz28o3zHqqgKaHBYcXP+s=
+github.com/cosmos/solidity-ibc-eureka/abigen v0.0.0-20241224052802-b77c838815f9/go.mod h1:gfJFGujP9PIuiyu9AfewNjtVx6cqUh6cNFXjEa3RObo=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I=
@@ -387,7 +420,6 @@ github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84
github.com/creachadair/atomicfile v0.3.1/go.mod h1:mwfrkRxFKwpNAflYZzytbSwxvbK6fdGRRlp0KEQc0qU=
github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6QKQDhQ=
github.com/creachadair/tomledit v0.0.24/go.mod h1:9qHbShRWQzSCcn617cMzg4eab1vbLCOjOshAWSzWr8U=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs=
github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps=
@@ -401,34 +433,22 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
-github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
-github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo=
-github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE=
-github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs=
-github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak=
-github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
-github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgraph-io/badger/v4 v4.5.0 h1:TeJE3I1pIWLBjYhIYCA1+uxrjWEoJXImFBMEBVSm16g=
+github.com/dgraph-io/badger/v4 v4.5.0/go.mod h1:ysgYmIeG8dS/E8kwxT7xHyc7MkmwNYLRoYnFbr7387A=
+github.com/dgraph-io/ristretto/v2 v2.0.0 h1:l0yiSOtlJvc0otkqyMaDNysg8E9/F/TYZwMbxscNOAQ=
+github.com/dgraph-io/ristretto/v2 v2.0.0/go.mod h1:FVFokF2dRqXyPyeMnK1YDy8Fc6aTe0IKgbcd03CYeEk=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo=
github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -447,25 +467,21 @@ github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ
github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
-github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
-github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
-github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
-github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k=
-github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg=
+github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
+github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/getsentry/sentry-go v0.29.0 h1:YtWluuCFg9OfcqnaujpY918N/AhCCwarIDWOYSBAjCA=
+github.com/getsentry/sentry-go v0.29.0/go.mod h1:jhPesDAL0Q0W2+2YEuVOvdWmVtdsr1+jtBrlDEVWwLY=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
@@ -473,7 +489,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU=
github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
@@ -485,43 +500,29 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
-github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
-github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
-github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -557,7 +558,6 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
@@ -613,10 +613,9 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -635,42 +634,28 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
-github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
-github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
-github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0=
-github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
+github.com/hashicorp/go-getter v1.7.6 h1:5jHuM+aH373XNtXl9TNTUH5Qd69Trve11tHIrB+6yj4=
+github.com/hashicorp/go-getter v1.7.6/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -678,24 +663,17 @@ github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJ
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE=
github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI=
-github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0=
+github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog=
+github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
+github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
@@ -704,12 +682,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8=
+github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns=
github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU=
github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=
github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4=
@@ -721,55 +695,42 @@ github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
-github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
-github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
-github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
+github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w=
+github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=
-github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
-github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=
-github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k=
-github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
+github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
+github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
+github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -782,16 +743,14 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
-github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/linxGnu/grocksdb v1.9.2 h1:O3mzvO0wuzQ9mtlHbDrShixyVjVbmuqTjFrzlf43wZ8=
-github.com/linxGnu/grocksdb v1.9.2/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
-github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
-github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik=
+github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA=
+github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
+github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
+github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
+github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -799,7 +758,6 @@ github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@@ -807,25 +765,18 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
+github.com/mdp/qrterminal/v3 v3.2.0 h1:qteQMXO3oyTK4IHwj2mWsKYYRBOp1Pj2WRYFYYNTCdk=
+github.com/mdp/qrterminal/v3 v3.2.0/go.mod h1:XGGuua4Lefrl7TLEsSONiD+UEjQXJZ4mPzF+gWYIJkk=
github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
@@ -839,72 +790,45 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
+github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
+github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
-github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q=
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s=
-github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q=
-github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
+github.com/onsi/gomega v1.28.1 h1:MijcGUbfYuznzK/5R4CPNoUP/9Xvuo20sXfEm6XxoTA=
+github.com/onsi/gomega v1.28.1/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
-github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
+github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
+github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss=
github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
-github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
-github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
-github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
-github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
-github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
-github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
+github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
+github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -912,103 +836,70 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
-github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc=
-github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
+github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ=
+github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=
github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
-github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=
github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
-github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
-github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
+github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -1025,8 +916,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
@@ -1043,19 +932,14 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
-github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
-github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
-github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
+github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
+github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -1068,12 +952,12 @@ github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=
github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA=
+gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q=
+gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I=
go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4=
go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -1083,45 +967,41 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
-go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
-go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
-go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
-go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
-go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
-go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
-go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
-go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
+go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
+go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
+go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
+go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
+go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
+go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
+go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
+go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
+go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
+go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
+go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
+go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
+golang.org/x/arch v0.12.0 h1:UsYJhbzPYGsT0HbEdmYcqtCv8UNGvnaL561NnIUvaKg=
+golang.org/x/arch v0.12.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
-golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1132,9 +1012,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY=
-golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
+golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1164,12 +1043,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -1180,7 +1055,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1188,7 +1062,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
@@ -1207,7 +1080,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
@@ -1220,8 +1092,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
-golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
+golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1247,8 +1119,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
-golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
-golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
+golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1263,14 +1135,11 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
-golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1282,17 +1151,13 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1302,14 +1167,11 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1331,7 +1193,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1355,20 +1216,19 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
-golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
-golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1379,16 +1239,13 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
-golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
-golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
+golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1396,7 +1253,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@@ -1406,8 +1262,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1416,7 +1270,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1457,9 +1310,6 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1508,10 +1358,9 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
-google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=
-google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=
+google.golang.org/api v0.192.0 h1:PljqpNAfZaaSpS+TnANfnNAXKdzHM/B9bKhwRlo7JP0=
+google.golang.org/api v0.192.0/go.mod h1:9VcphjvAxPKLmSxVSzPlSRXy/5ARMEw5bf58WoVXafQ=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
@@ -1524,7 +1373,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
@@ -1556,7 +1404,6 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -1624,21 +1471,16 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8=
-google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0=
+google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 h1:fVoAXEKA4+yufmbdVYv+SE73+cPZbbbe8paLsHfkK+U=
+google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53/go.mod h1:riSXTwQ4+nqmPGtobMFyW5FqVAmIs0St6VPp4Ug7CE4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
@@ -1648,7 +1490,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
@@ -1671,8 +1512,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0=
-google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
+google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
+google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1689,8 +1530,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
-google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1698,20 +1539,15 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -1727,7 +1563,6 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1735,17 +1570,15 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
-nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0=
-nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
+rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/simapp/simd/cmd/commands.go b/simapp/simd/cmd/commands.go
new file mode 100644
index 00000000000..7b4f516b271
--- /dev/null
+++ b/simapp/simd/cmd/commands.go
@@ -0,0 +1,107 @@
+package cmd
+
+import (
+ "github.com/spf13/cobra"
+
+ "cosmossdk.io/client/v2/offchain"
+ confixcmd "cosmossdk.io/tools/confix/cmd"
+
+ "github.com/cosmos/cosmos-sdk/client"
+ "github.com/cosmos/cosmos-sdk/client/debug"
+ "github.com/cosmos/cosmos-sdk/client/keys"
+ "github.com/cosmos/cosmos-sdk/client/pruning"
+ "github.com/cosmos/cosmos-sdk/client/rpc"
+ "github.com/cosmos/cosmos-sdk/client/snapshot"
+ "github.com/cosmos/cosmos-sdk/server"
+ servertypes "github.com/cosmos/cosmos-sdk/server/types"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ "github.com/cosmos/cosmos-sdk/types/module"
+ authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
+ "github.com/cosmos/cosmos-sdk/x/genutil"
+ genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
+ genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
+)
+
+func initRootCmd(
+ rootCmd *cobra.Command,
+ moduleManager *module.Manager,
+) {
+ cfg := sdk.GetConfig()
+ cfg.Seal()
+
+ rootCmd.AddCommand(
+ genutilcli.InitCmd(moduleManager),
+ debug.Cmd(),
+ confixcmd.ConfigCommand(),
+ pruning.Cmd(newApp),
+ snapshot.Cmd(newApp),
+ server.QueryBlockResultsCmd(),
+ )
+
+ server.AddCommands(rootCmd, newApp, server.StartCmdOptions[servertypes.Application]{})
+
+ // add keybase, auxiliary RPC, query, genesis, and tx child commands
+ rootCmd.AddCommand(
+ server.StatusCommand(),
+ genesisCommand(moduleManager, appExport),
+ queryCommand(),
+ txCommand(),
+ keys.Commands(),
+ offchain.OffChain(),
+ )
+}
+
+func queryCommand() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "query",
+ Aliases: []string{"q"},
+ Short: "Querying subcommands",
+ DisableFlagParsing: false,
+ SuggestionsMinimumDistance: 2,
+ RunE: client.ValidateCmd,
+ }
+
+ cmd.AddCommand(
+ rpc.WaitTxCmd(),
+ server.QueryBlockCmd(),
+ authcmd.QueryTxsByEventsCmd(),
+ server.QueryBlocksCmd(),
+ authcmd.QueryTxCmd(),
+ authcmd.GetSimulateCmd(),
+ )
+
+ return cmd
+}
+
+func txCommand() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "tx",
+ Short: "Transactions subcommands",
+ DisableFlagParsing: false,
+ SuggestionsMinimumDistance: 2,
+ RunE: client.ValidateCmd,
+ }
+
+ cmd.AddCommand(
+ authcmd.GetSignCommand(),
+ authcmd.GetSignBatchCommand(),
+ authcmd.GetMultiSignCommand(),
+ authcmd.GetMultiSignBatchCmd(),
+ authcmd.GetValidateSignaturesCommand(),
+ authcmd.GetBroadcastCommand(),
+ authcmd.GetEncodeCommand(),
+ authcmd.GetDecodeCommand(),
+ authcmd.GetSimulateCmd(),
+ )
+
+ return cmd
+}
+
+// genesisCommand builds genesis-related `simd genesis` command. Users may provide application specific commands as a parameter
+func genesisCommand(moduleManager *module.Manager, appExport servertypes.AppExporter, cmds ...*cobra.Command) *cobra.Command {
+ cmd := genutilcli.Commands(moduleManager.Modules[genutiltypes.ModuleName].(genutil.AppModule), moduleManager, appExport)
+ for _, subCmd := range cmds {
+ cmd.AddCommand(subCmd)
+ }
+ return cmd
+}
diff --git a/simapp/simd/cmd/config.go b/simapp/simd/cmd/config.go
new file mode 100644
index 00000000000..14e1543450c
--- /dev/null
+++ b/simapp/simd/cmd/config.go
@@ -0,0 +1,126 @@
+package cmd
+
+import (
+ "strings"
+
+ clientconfig "github.com/cosmos/cosmos-sdk/client/config"
+ "github.com/cosmos/cosmos-sdk/crypto/keyring"
+ serverconfig "github.com/cosmos/cosmos-sdk/server/config"
+
+ cmtcfg "github.com/cometbft/cometbft/config"
+)
+
+// initCometBFTConfig helps to override default CometBFT Config values.
+// return cmtcfg.DefaultConfig if no custom configuration is required for the application.
+func initCometBFTConfig() *cmtcfg.Config {
+ cfg := cmtcfg.DefaultConfig()
+
+ // display only error logs by default except for p2p and state
+ cfg.LogLevel = "*:error,p2p:info,state:info"
+
+ // these values put a higher strain on node memory
+ // cfg.P2P.MaxNumInboundPeers = 100
+ // cfg.P2P.MaxNumOutboundPeers = 40
+
+ return cfg
+}
+
+// initClientConfig helps to override default client config template and configs.
+// return "", nil if no custom configuration is required for the application.
+func initClientConfig() (string, interface{}) {
+ type GasConfig struct {
+ GasAdjustment float64 `mapstructure:"gas-adjustment"`
+ }
+
+ type CustomClientConfig struct {
+ clientconfig.Config `mapstructure:",squash"`
+
+ GasConfig GasConfig `mapstructure:"gas"`
+ }
+
+ // Optionally allow the chain developer to overwrite the SDK's default client config.
+ clientCfg := clientconfig.DefaultConfig()
+
+ // The SDK's default keyring backend is set to "os".
+ // This is more secure than "test" and is the recommended value.
+ //
+ // In simapp, we set the default keyring backend to test, as SimApp is meant
+ // to be an example and testing application.
+ clientCfg.KeyringBackend = keyring.BackendTest
+
+ // Now we set the custom config default values.
+ customClientConfig := CustomClientConfig{
+ Config: *clientCfg,
+ GasConfig: GasConfig{
+ GasAdjustment: 1.5,
+ },
+ }
+
+ // The default SDK app template is defined in serverconfig.DefaultConfigTemplate.
+ // We append the custom config template to the default one.
+ // And we set the default config to the custom app template.
+ customClientConfigTemplate := clientconfig.DefaultClientConfigTemplate + strings.TrimSpace(`
+# This is default the gas adjustment factor used in tx commands.
+# It can be overwritten by the --gas-adjustment flag in each tx command.
+gas-adjustment = {{ .GasConfig.GasAdjustment }}
+`)
+
+ return customClientConfigTemplate, customClientConfig
+}
+
+// initAppConfig helps to override default appConfig template and configs.
+// return "", nil if no custom configuration is required for the application.
+func initAppConfig() (string, interface{}) {
+ // The following code snippet is just for reference.
+
+ // WASMConfig defines configuration for the wasm module.
+ type WASMConfig struct {
+ // This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries
+ QueryGasLimit uint64 `mapstructure:"query_gas_limit"`
+
+ // Address defines the gRPC-web server to listen on
+ LruSize uint64 `mapstructure:"lru_size"`
+ }
+
+ type CustomAppConfig struct {
+ serverconfig.Config
+
+ WASM WASMConfig `mapstructure:"wasm"`
+ }
+
+ // Optionally allow the chain developer to overwrite the SDK's default
+ // server config.
+ srvCfg := serverconfig.DefaultConfig()
+ // The SDK's default minimum gas price is set to "" (empty value) inside
+ // app.toml. If left empty by validators, the node will halt on startup.
+ // However, the chain developer can set a default app.toml value for their
+ // validators here.
+ //
+ // In summary:
+ // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their
+ // own app.toml config,
+ // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their
+ // own app.toml to override, or use this default value.
+ //
+ // In simapp, we set the min gas prices to 0.
+ srvCfg.MinGasPrices = "0stake"
+ // srvCfg.BaseConfig.IAVLDisableFastNode = true // disable fastnode by default
+
+ customAppConfig := CustomAppConfig{
+ Config: *srvCfg,
+ WASM: WASMConfig{
+ LruSize: 1,
+ QueryGasLimit: 300000,
+ },
+ }
+
+ customAppTemplate := serverconfig.DefaultConfigTemplate + `
+[wasm]
+# This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries
+query_gas_limit = 300000
+# This is the number of wasm vm instances we keep cached in memory for speed-up
+# Warning: this is currently unstable and may lead to crashes, best to keep for 0 unless testing locally
+lru_size = 0`
+
+ return customAppTemplate, customAppConfig
+}
diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go
index 496a129da46..766bb0dba84 100644
--- a/simapp/simd/cmd/root.go
+++ b/simapp/simd/cmd/root.go
@@ -5,39 +5,27 @@ import (
"io"
"os"
- dbm "github.com/cosmos/cosmos-db"
"github.com/spf13/cobra"
"github.com/spf13/viper"
- "cosmossdk.io/client/v2/autocli"
+ corestore "cosmossdk.io/core/store"
+ coretesting "cosmossdk.io/core/testing"
"cosmossdk.io/log"
- confixcmd "cosmossdk.io/tools/confix/cmd"
+ txsigning "cosmossdk.io/x/tx/signing"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/config"
- "github.com/cosmos/cosmos-sdk/client/debug"
"github.com/cosmos/cosmos-sdk/client/flags"
- "github.com/cosmos/cosmos-sdk/client/keys"
- "github.com/cosmos/cosmos-sdk/client/pruning"
- "github.com/cosmos/cosmos-sdk/client/rpc"
- "github.com/cosmos/cosmos-sdk/client/snapshot"
- "github.com/cosmos/cosmos-sdk/codec"
+ nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/server"
- serverconfig "github.com/cosmos/cosmos-sdk/server/config"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
- authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
"github.com/cosmos/cosmos-sdk/x/auth/tx"
- txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config"
+ authtxconfig "github.com/cosmos/cosmos-sdk/x/auth/tx/config"
"github.com/cosmos/cosmos-sdk/x/auth/types"
- "github.com/cosmos/cosmos-sdk/x/crisis"
- genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
-
- cmtcfg "github.com/cometbft/cometbft/config"
"github.com/cosmos/ibc-go/simapp"
"github.com/cosmos/ibc-go/simapp/params"
@@ -48,7 +36,7 @@ import (
func NewRootCmd() *cobra.Command {
// we "pre"-instantiate the application for getting the injected/configured encoding configuration
// note, this is not necessary when using app wiring, as depinject can be directly used (see root_v2.go)
- tempApp := simapp.NewSimApp(log.NewNopLogger(), dbm.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(tempDir()))
+ tempApp := simapp.NewSimApp(log.NewNopLogger(), coretesting.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(simapp.DefaultNodeHome))
encodingConfig := params.EncodingConfig{
InterfaceRegistry: tempApp.InterfaceRegistry(),
Codec: tempApp.AppCodec(),
@@ -59,11 +47,17 @@ func NewRootCmd() *cobra.Command {
initClientCtx := client.Context{}.
WithCodec(encodingConfig.Codec).
WithInterfaceRegistry(encodingConfig.InterfaceRegistry).
+ WithTxConfig(encodingConfig.TxConfig).
WithLegacyAmino(encodingConfig.Amino).
WithInput(os.Stdin).
WithAccountRetriever(types.AccountRetriever{}).
+ WithAddressCodec(addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())).
+ WithValidatorAddressCodec(addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix())).
+ WithConsensusAddressCodec(addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix())).
WithHomeDir(simapp.DefaultNodeHome).
- WithViper("") // In simapp, we don't use any prefix for env variables.
+ WithViper(""). // uses by default the binary name as prefix
+ WithAddressPrefix(sdk.GetConfig().GetBech32AccountAddrPrefix()).
+ WithValidatorPrefix(sdk.GetConfig().GetBech32ValidatorAddrPrefix())
rootCmd := &cobra.Command{
Use: "simd",
@@ -80,27 +74,34 @@ func NewRootCmd() *cobra.Command {
return err
}
- initClientCtx, err = config.ReadFromClientConfig(initClientCtx)
+ customClientTemplate, customClientConfig := initClientConfig()
+ initClientCtx, err = config.CreateClientConfig(initClientCtx, customClientTemplate, customClientConfig)
if err != nil {
return err
}
- // This needs to go after ReadFromClientConfig, as that function
+ // This needs to go after CreateClientConfig, as that function
// sets the RPC client needed for SIGN_MODE_TEXTUAL. This sign mode
// is only available if the client is online.
if !initClientCtx.Offline {
+ enabledSignModes := append(tx.DefaultSignModes, signing.SignMode_SIGN_MODE_TEXTUAL)
txConfigOpts := tx.ConfigOptions{
- EnabledSignModes: append(tx.DefaultSignModes, signing.SignMode_SIGN_MODE_TEXTUAL),
- TextualCoinMetadataQueryFn: txmodule.NewGRPCCoinMetadataQueryFn(initClientCtx),
+ EnabledSignModes: enabledSignModes,
+ TextualCoinMetadataQueryFn: authtxconfig.NewGRPCCoinMetadataQueryFn(initClientCtx),
+ SigningOptions: &txsigning.Options{
+ AddressCodec: initClientCtx.InterfaceRegistry.SigningContext().AddressCodec(),
+ ValidatorAddressCodec: initClientCtx.InterfaceRegistry.SigningContext().ValidatorAddressCodec(),
+ },
}
- txConfigWithTextual, err := tx.NewTxConfigWithOptions(
- codec.NewProtoCodec(encodingConfig.InterfaceRegistry),
+ txConfig, err := tx.NewTxConfigWithOptions(
+ initClientCtx.Codec,
txConfigOpts,
)
if err != nil {
return err
}
- initClientCtx = initClientCtx.WithTxConfig(txConfigWithTextual)
+
+ initClientCtx = initClientCtx.WithTxConfig(txConfig)
}
if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil {
@@ -114,12 +115,16 @@ func NewRootCmd() *cobra.Command {
},
}
- initRootCmd(rootCmd, encodingConfig, tempApp.BasicModuleManager)
+ initRootCmd(rootCmd, tempApp.ModuleManager)
- autoCliOpts, err := enrichAutoCliOpts(tempApp.AutoCliOpts(), initClientCtx)
- if err != nil {
- panic(err)
- }
+ autoCliOpts := tempApp.AutoCliOpts()
+ autoCliOpts.AddressCodec = initClientCtx.AddressCodec
+ autoCliOpts.ValidatorAddressCodec = initClientCtx.ValidatorAddressCodec
+ autoCliOpts.ConsensusAddressCodec = initClientCtx.ConsensusAddressCodec
+ autoCliOpts.Cdc = initClientCtx.Codec
+
+ nodeCmds := nodeservice.NewNodeCommands()
+ autoCliOpts.ModuleOptions[nodeCmds.Name()] = nodeCmds.AutoCLIOptions()
if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil {
panic(err)
@@ -128,180 +133,10 @@ func NewRootCmd() *cobra.Command {
return rootCmd
}
-func enrichAutoCliOpts(autoCliOpts autocli.AppOptions, clientCtx client.Context) (autocli.AppOptions, error) {
- autoCliOpts.AddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix())
- autoCliOpts.ValidatorAddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix())
- autoCliOpts.ConsensusAddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix())
-
- var err error
- clientCtx, err = config.ReadFromClientConfig(clientCtx)
- if err != nil {
- return autocli.AppOptions{}, err
- }
-
- autoCliOpts.ClientCtx = clientCtx
-
- return autoCliOpts, nil
-}
-
-// initCometBFTConfig helps to override default CometBFT Config values.
-// return cmtcfg.DefaultConfig if no custom configuration is required for the application.
-func initCometBFTConfig() *cmtcfg.Config {
- cfg := cmtcfg.DefaultConfig()
-
- // these values put a higher strain on node memory
- // cfg.P2P.MaxNumInboundPeers = 100
- // cfg.P2P.MaxNumOutboundPeers = 40
-
- return cfg
-}
-
-// initAppConfig helps to override default appConfig template and configs.
-// return "", nil if no custom configuration is required for the application.
-func initAppConfig() (string, interface{}) {
- // The following code snippet is just for reference.
-
- // WASMConfig defines configuration for the wasm module.
- type WASMConfig struct {
- // This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries
- QueryGasLimit uint64 `mapstructure:"query_gas_limit"`
-
- // Address defines the gRPC-web server to listen on
- LruSize uint64 `mapstructure:"lru_size"`
- }
-
- type CustomAppConfig struct {
- serverconfig.Config
-
- WASM WASMConfig `mapstructure:"wasm"`
- }
-
- // Optionally allow the chain developer to overwrite the SDK's default
- // server config.
- srvCfg := serverconfig.DefaultConfig()
- // The SDK's default minimum gas price is set to "" (empty value) inside
- // app.toml. If left empty by validators, the node will halt on startup.
- // However, the chain developer can set a default app.toml value for their
- // validators here.
- //
- // In summary:
- // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their
- // own app.toml config,
- // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their
- // own app.toml to override, or use this default value.
- //
- // In simapp, we set the min gas prices to 0.
- srvCfg.MinGasPrices = "0stake"
- // srvCfg.BaseConfig.IAVLDisableFastNode = true // disable fastnode by default
-
- customAppConfig := CustomAppConfig{
- Config: *srvCfg,
- WASM: WASMConfig{
- LruSize: 1,
- QueryGasLimit: 300000,
- },
- }
-
- customAppTemplate := serverconfig.DefaultConfigTemplate + `
-[wasm]
-# This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries
-query_gas_limit = 300000
-# This is the number of wasm vm instances we keep cached in memory for speed-up
-# Warning: this is currently unstable and may lead to crashes, best to keep for 0 unless testing locally
-lru_size = 0`
-
- return customAppTemplate, customAppConfig
-}
-
-func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig, basicManager module.BasicManager) {
- cfg := sdk.GetConfig()
- cfg.Seal()
-
- rootCmd.AddCommand(
- genutilcli.InitCmd(basicManager, simapp.DefaultNodeHome),
- debug.Cmd(),
- confixcmd.ConfigCommand(),
- pruning.Cmd(newApp, simapp.DefaultNodeHome),
- snapshot.Cmd(newApp),
- server.QueryBlockResultsCmd(),
- )
-
- server.AddCommands(rootCmd, simapp.DefaultNodeHome, newApp, appExport, addModuleInitFlags)
-
- // add keybase, auxiliary RPC, query, genesis, and tx child commands
- rootCmd.AddCommand(
- server.StatusCommand(),
- genesisCommand(encodingConfig, basicManager),
- txCommand(),
- queryCommand(),
- keys.Commands(),
- )
-}
-
-func addModuleInitFlags(startCmd *cobra.Command) {
- crisis.AddModuleInitFlags(startCmd)
-}
-
-func queryCommand() *cobra.Command {
- cmd := &cobra.Command{
- Use: "query",
- Aliases: []string{"q"},
- Short: "Querying subcommands",
- DisableFlagParsing: false,
- SuggestionsMinimumDistance: 2,
- RunE: client.ValidateCmd,
- }
-
- cmd.AddCommand(
- rpc.ValidatorCommand(),
- server.QueryBlockCmd(),
- authcmd.QueryTxsByEventsCmd(),
- server.QueryBlocksCmd(),
- authcmd.QueryTxCmd(),
- authcmd.GetSimulateCmd(),
- )
-
- return cmd
-}
-
-func txCommand() *cobra.Command {
- cmd := &cobra.Command{
- Use: "tx",
- Short: "Transactions subcommands",
- DisableFlagParsing: false,
- SuggestionsMinimumDistance: 2,
- RunE: client.ValidateCmd,
- }
-
- cmd.AddCommand(
- authcmd.GetSignCommand(),
- authcmd.GetSignBatchCommand(),
- authcmd.GetMultiSignCommand(),
- authcmd.GetMultiSignBatchCmd(),
- authcmd.GetValidateSignaturesCommand(),
- authcmd.GetBroadcastCommand(),
- authcmd.GetEncodeCommand(),
- authcmd.GetDecodeCommand(),
- authcmd.GetSimulateCmd(),
- )
-
- return cmd
-}
-
-// genesisCommand builds genesis-related `simd genesis` command. Users may provide application specific commands as a parameter
-func genesisCommand(encodingConfig params.EncodingConfig, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command {
- cmd := genutilcli.Commands(encodingConfig.TxConfig, basicManager, simapp.DefaultNodeHome)
-
- for _, subCmd := range cmds {
- cmd.AddCommand(subCmd)
- }
- return cmd
-}
-
// newApp creates the application
func newApp(
logger log.Logger,
- db dbm.DB,
+ db corestore.KVStoreWithBatch,
traceStore io.Writer,
appOpts servertypes.AppOptions,
) servertypes.Application {
@@ -317,7 +152,7 @@ func newApp(
// appExport creates a new simapp (optionally at a given height) and exports state.
func appExport(
logger log.Logger,
- db dbm.DB,
+ db corestore.KVStoreWithBatch,
traceStore io.Writer,
height int64,
forZeroHeight bool,
@@ -355,13 +190,3 @@ func appExport(
return simApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport)
}
-
-var tempDir = func() string {
- dir, err := os.MkdirTemp("", "simapp")
- if err != nil {
- dir = simapp.DefaultNodeHome
- }
- defer os.RemoveAll(dir)
-
- return dir
-}
diff --git a/simapp/upgrades.go b/simapp/upgrades.go
deleted file mode 100644
index 90b694ca800..00000000000
--- a/simapp/upgrades.go
+++ /dev/null
@@ -1,83 +0,0 @@
-package simapp
-
-import (
- storetypes "cosmossdk.io/store/types"
- circuittypes "cosmossdk.io/x/circuit/types"
- upgradetypes "cosmossdk.io/x/upgrade/types"
-
- consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
- crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
-
- "github.com/cosmos/ibc-go/simapp/upgrades"
-)
-
-// registerUpgradeHandlers registers all supported upgrade handlers
-func (app *SimApp) registerUpgradeHandlers() {
- app.UpgradeKeeper.SetUpgradeHandler(
- upgrades.V7,
- upgrades.CreateV7UpgradeHandler(
- app.ModuleManager,
- app.configurator,
- app.appCodec,
- *app.IBCKeeper.ClientKeeper,
- app.ConsensusParamsKeeper,
- app.ParamsKeeper,
- ),
- )
-
- app.UpgradeKeeper.SetUpgradeHandler(
- upgrades.V7_1,
- upgrades.CreateV7LocalhostUpgradeHandler(app.ModuleManager, app.configurator, *app.IBCKeeper.ClientKeeper),
- )
-
- app.UpgradeKeeper.SetUpgradeHandler(
- upgrades.V8,
- upgrades.CreateDefaultUpgradeHandler(
- app.ModuleManager,
- app.configurator,
- ),
- )
-
- app.UpgradeKeeper.SetUpgradeHandler(
- upgrades.V8_1,
- upgrades.CreateDefaultUpgradeHandler(
- app.ModuleManager,
- app.configurator,
- ),
- )
-
- app.UpgradeKeeper.SetUpgradeHandler(
- upgrades.V9,
- upgrades.CreateDefaultUpgradeHandler(
- app.ModuleManager,
- app.configurator,
- ),
- )
-
- upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
- if err != nil {
- panic(err)
- }
-
- if upgradeInfo.Name == upgrades.V7 && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
- storeUpgrades := storetypes.StoreUpgrades{
- Added: []string{
- consensusparamtypes.StoreKey,
- crisistypes.StoreKey,
- },
- }
-
- // configure store loader that checks if version == upgradeHeight and applies store upgrades
- app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
- }
-
- if upgradeInfo.Name == upgrades.V8 && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
- storeUpgrades := storetypes.StoreUpgrades{
- Added: []string{
- circuittypes.ModuleName,
- },
- }
- // configure store loader that checks if version == upgradeHeight and applies store upgrades
- app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
- }
-}
diff --git a/simapp/upgrades/upgrades.go b/simapp/upgrades/upgrades.go
index 863318da367..e4c767d122b 100644
--- a/simapp/upgrades/upgrades.go
+++ b/simapp/upgrades/upgrades.go
@@ -3,15 +3,16 @@ package upgrades
import (
"context"
+ "cosmossdk.io/core/appmodule"
+ consensusparamskeeper "cosmossdk.io/x/consensus/keeper"
+ paramskeeper "cosmossdk.io/x/params/keeper"
+ paramstypes "cosmossdk.io/x/params/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
- consensusparamskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
- paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
- paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
clientkeeper "github.com/cosmos/ibc-go/v9/modules/core/02-client/keeper"
"github.com/cosmos/ibc-go/v9/modules/core/exported"
@@ -29,6 +30,8 @@ const (
V8_1 = "v8.1"
// V9 defines the upgrade name for the ibc-go/v9 upgrade handler.
V9 = "v9"
+ // V1010 upgrade handler.
+ V10 = "v10"
)
// CreateDefaultUpgradeHandler creates an upgrade handler which can be used for regular upgrade tests
@@ -37,7 +40,7 @@ func CreateDefaultUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
) upgradetypes.UpgradeHandler {
- return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
+ return func(ctx context.Context, _ upgradetypes.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) {
return mm.RunMigrations(ctx, configurator, vm)
}
}
@@ -51,7 +54,7 @@ func CreateV7UpgradeHandler(
consensusParamsKeeper consensusparamskeeper.Keeper,
paramsKeeper paramskeeper.Keeper,
) upgradetypes.UpgradeHandler {
- return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
+ return func(ctx context.Context, _ upgradetypes.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) {
sdkCtx := sdk.UnwrapSDKContext(ctx)
// OPTIONAL: prune expired tendermint consensus states to save storage space
if _, err := ibctmmigrations.PruneExpiredConsensusStates(sdkCtx, cdc, &clientKeeper); err != nil {
@@ -74,7 +77,7 @@ func CreateV7LocalhostUpgradeHandler(
configurator module.Configurator,
clientKeeper clientkeeper.Keeper,
) upgradetypes.UpgradeHandler {
- return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
+ return func(ctx context.Context, _ upgradetypes.Plan, vm appmodule.VersionMap) (appmodule.VersionMap, error) {
sdkCtx := sdk.UnwrapSDKContext(ctx)
// explicitly update the IBC 02-client params, adding the localhost client type
params := clientKeeper.GetParams(sdkCtx)
diff --git a/testing/README.md b/testing/README.md
index 844b011fd99..124586e6d80 100644
--- a/testing/README.md
+++ b/testing/README.md
@@ -51,7 +51,6 @@ type TestingApp interface {
// ibc-go additions
GetBaseApp() *baseapp.BaseApp
- GetStakingKeeper() ibctestingtypes.StakingKeeper
GetIBCKeeper() *keeper.Keeper
GetTxConfig() client.TxConfig
diff --git a/testing/chain.go b/testing/chain.go
index 54ebc978c4c..ba41a0ec2fb 100644
--- a/testing/chain.go
+++ b/testing/chain.go
@@ -7,8 +7,10 @@ import (
"github.com/stretchr/testify/require"
+ "cosmossdk.io/core/header"
errorsmod "cosmossdk.io/errors"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
@@ -16,12 +18,11 @@ import (
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
+ cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1"
+ cmtprotoversion "github.com/cometbft/cometbft/api/cometbft/version/v1"
"github.com/cometbft/cometbft/crypto/tmhash"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
- cmtprotoversion "github.com/cometbft/cometbft/proto/tendermint/version"
cmttypes "github.com/cometbft/cometbft/types"
cmtversion "github.com/cometbft/cometbft/version"
@@ -137,7 +138,7 @@ func NewTestChainWithValSet(tb testing.TB, coord *Coordinator, chainID string, v
app := SetupWithGenesisValSet(tb, valSet, genAccs, chainID, sdk.DefaultPowerReduction, genBals...)
// create current header and call begin block
- header := cmtproto.Header{
+ cmtHeader := cmtproto.Header{
ChainID: chainID,
Height: 1,
Time: coord.CurrentTime.UTC(),
@@ -151,7 +152,7 @@ func NewTestChainWithValSet(tb testing.TB, coord *Coordinator, chainID string, v
Coordinator: coord,
ChainID: chainID,
App: app,
- ProposedHeader: header,
+ ProposedHeader: cmtHeader,
TxConfig: txConfig,
Codec: app.AppCodec(),
Vals: valSet,
@@ -198,7 +199,21 @@ func NewTestChain(t *testing.T, coord *Coordinator, chainID string) *TestChain {
// GetContext returns the current context for the application.
func (chain *TestChain) GetContext() sdk.Context {
- return chain.App.GetBaseApp().NewUncachedContext(false, chain.ProposedHeader)
+ ctx := chain.App.GetBaseApp().NewUncachedContext(false, chain.ProposedHeader)
+
+ cmtHeader, err := cmttypes.HeaderFromProto(&chain.ProposedHeader)
+ require.NoError(chain.TB, err)
+
+ // since:cosmos-sdk/v0.52 when fetching time from context, it now returns from HeaderInfo
+ headerInfo := header.Info{
+ AppHash: chain.ProposedHeader.AppHash,
+ Hash: cmtHeader.Hash(),
+ ChainID: chain.ProposedHeader.ChainID,
+ Height: chain.ProposedHeader.Height,
+ Time: chain.ProposedHeader.Time,
+ }
+
+ return ctx.WithHeaderInfo(headerInfo)
}
// GetSimApp returns the SimApp to allow usage ofnon-interface fields.
@@ -229,7 +244,7 @@ func (chain *TestChain) QueryProofAtHeight(key []byte, height int64) ([]byte, cl
func (chain *TestChain) QueryProofForStore(storeKey string, key []byte, height int64) ([]byte, clienttypes.Height) {
res, err := chain.App.Query(
chain.GetContext().Context(),
- &abci.RequestQuery{
+ &abci.QueryRequest{
Path: fmt.Sprintf("store/%s/key", storeKey),
Height: height - 1,
Data: key,
@@ -256,7 +271,7 @@ func (chain *TestChain) QueryProofForStore(storeKey string, key []byte, height i
func (chain *TestChain) QueryUpgradeProof(key []byte, height uint64) ([]byte, clienttypes.Height) {
res, err := chain.App.Query(
chain.GetContext().Context(),
- &abci.RequestQuery{
+ &abci.QueryRequest{
Path: "store/upgrade/key",
Height: int64(height - 1),
Data: key,
@@ -296,7 +311,7 @@ func (chain *TestChain) QueryConsensusStateProof(clientID string) ([]byte, clien
// returned on block `n` to the validators of block `n+2`.
// It calls BeginBlock with the new block created before returning.
func (chain *TestChain) NextBlock() {
- res, err := chain.App.FinalizeBlock(&abci.RequestFinalizeBlock{
+ res, err := chain.App.FinalizeBlock(&abci.FinalizeBlockRequest{
Height: chain.ProposedHeader.Height,
Time: chain.ProposedHeader.GetTime(),
NextValidatorsHash: chain.NextVals.Hash(),
@@ -305,7 +320,7 @@ func (chain *TestChain) NextBlock() {
chain.commitBlock(res)
}
-func (chain *TestChain) commitBlock(res *abci.ResponseFinalizeBlock) {
+func (chain *TestChain) commitBlock(res *abci.FinalizeBlockResponse) {
_, err := chain.App.Commit()
require.NoError(chain.TB, err)
@@ -328,6 +343,7 @@ func (chain *TestChain) commitBlock(res *abci.ResponseFinalizeBlock) {
// increment the current header
chain.ProposedHeader = cmtproto.Header{
+ Version: cmtprotoversion.Consensus{Block: cmtversion.BlockProtocol, App: 1},
ChainID: chain.ChainID,
Height: chain.App.LastBlockHeight() + 1,
AppHash: chain.App.LastCommitID().Hash,
@@ -363,7 +379,6 @@ func (chain *TestChain) SendMsgsWithSender(sender SenderAccount, msgs ...sdk.Msg
if chain.SendMsgsOverride != nil {
return chain.SendMsgsOverride(msgs...)
}
-
// ensure the chain has the latest time
chain.Coordinator.UpdateTimeForChain(chain)
@@ -374,7 +389,6 @@ func (chain *TestChain) SendMsgsWithSender(sender SenderAccount, msgs ...sdk.Msg
panic(err)
}
}()
-
resp, err := simapp.SignAndDeliver(
chain.TB,
chain.TxConfig,
@@ -582,7 +596,7 @@ func (chain *TestChain) DeleteKey(key []byte) {
// IBCClientHeader will construct a 07-tendermint Header to update the light client
// on the counterparty chain. The trustedHeight must be passed in as a non-zero height.
-func (chain *TestChain) IBCClientHeader(header *ibctm.Header, trustedHeight clienttypes.Height) (*ibctm.Header, error) {
+func (chain *TestChain) IBCClientHeader(ibcHeader *ibctm.Header, trustedHeight clienttypes.Height) (*ibctm.Header, error) {
if trustedHeight.IsZero() {
return nil, errorsmod.Wrap(ibctm.ErrInvalidHeaderHeight, "trustedHeight must be a non-zero height")
}
@@ -597,16 +611,16 @@ func (chain *TestChain) IBCClientHeader(header *ibctm.Header, trustedHeight clie
return nil, err
}
- header.TrustedHeight = trustedHeight
+ ibcHeader.TrustedHeight = trustedHeight
trustedVals.TotalVotingPower = cmtTrustedVals.TotalVotingPower()
- header.TrustedValidators = trustedVals
+ ibcHeader.TrustedValidators = trustedVals
- return header, nil
+ return ibcHeader, nil
}
// GetSenderAccount returns the sender account associated with the provided private key.
func (chain *TestChain) GetSenderAccount(privKey cryptotypes.PrivKey) SenderAccount {
- account := chain.GetSimApp().AccountKeeper.GetAccount(chain.GetContext(), sdk.AccAddress(privKey.PubKey().Address()))
+ account := chain.GetSimApp().AuthKeeper.GetAccount(chain.GetContext(), sdk.AccAddress(privKey.PubKey().Address()))
return SenderAccount{
SenderPrivKey: privKey,
diff --git a/testing/chain_test.go b/testing/chain_test.go
index e72057765b3..1966d7490d3 100644
--- a/testing/chain_test.go
+++ b/testing/chain_test.go
@@ -6,9 +6,9 @@ import (
"github.com/stretchr/testify/require"
sdkmath "cosmossdk.io/math"
+ "cosmossdk.io/x/staking/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/cosmos/cosmos-sdk/x/staking/types"
ibctesting "github.com/cosmos/ibc-go/v9/testing"
)
diff --git a/testing/endpoint.go b/testing/endpoint.go
index 0ea35992205..869f92a8ee8 100644
--- a/testing/endpoint.go
+++ b/testing/endpoint.go
@@ -7,11 +7,12 @@ import (
"github.com/stretchr/testify/require"
+ govtypesv1 "cosmossdk.io/x/gov/types/v1"
+
"github.com/cosmos/cosmos-sdk/baseapp"
sdk "github.com/cosmos/cosmos-sdk/types"
- govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
@@ -633,7 +634,7 @@ func (endpoint *Endpoint) ChanUpgradeInit() error {
endpoint.ChannelID,
"upgrade-init",
fmt.Sprintf("gov proposal for initialising channel upgrade: %s", endpoint.ChannelID),
- false,
+ govtypesv1.ProposalType_PROPOSAL_TYPE_STANDARD,
)
require.NoError(endpoint.Chain.TB, err)
diff --git a/testing/events.go b/testing/events.go
index a4caaf46a9e..22f52ffebd2 100644
--- a/testing/events.go
+++ b/testing/events.go
@@ -9,7 +9,7 @@ import (
testifysuite "github.com/stretchr/testify/suite"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
connectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types"
@@ -217,17 +217,7 @@ func AssertEvents(
// shouldProcessEvent returns true if the given expected event should be processed based on event type.
func shouldProcessEvent(expectedEvent abci.Event, actualEvent abci.Event) bool {
- if expectedEvent.Type != actualEvent.Type {
- return false
- }
- // the actual event will have an extra attribute added automatically
- // by Cosmos SDK since v0.50, that's why we subtract 1 when comparing
- // with the number of attributes in the expected event.
- if containsAttributeKey(actualEvent.Attributes, "msg_index") {
- return len(expectedEvent.Attributes) == len(actualEvent.Attributes)-1
- }
-
- return len(expectedEvent.Attributes) == len(actualEvent.Attributes)
+ return expectedEvent.Type == actualEvent.Type
}
// containsAttribute returns true if the given key/value pair is contained in the given attributes.
@@ -238,12 +228,6 @@ func containsAttribute(attrs []abci.EventAttribute, key, value string) bool {
})
}
-// containsAttributeKey returns true if the given key is contained in the given attributes.
-func containsAttributeKey(attrs []abci.EventAttribute, key string) bool {
- _, found := attributeByKey(attrs, key)
- return found
-}
-
// attributeByKey returns the event attribute's value keyed by the given key and a boolean indicating its presence in the given attributes.
func attributeByKey(attributes []abci.EventAttribute, key string) (abci.EventAttribute, bool) {
idx := slices.IndexFunc(attributes, func(a abci.EventAttribute) bool { return a.Key == key })
diff --git a/testing/events_test.go b/testing/events_test.go
index c18a75866a4..b8725a27e65 100644
--- a/testing/events_test.go
+++ b/testing/events_test.go
@@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/require"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
"github.com/cosmos/ibc-go/v9/modules/core/02-client/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
diff --git a/testing/mock/mock.go b/testing/mock/mock.go
index 0fe029ad64f..c8307dc8474 100644
--- a/testing/mock/mock.go
+++ b/testing/mock/mock.go
@@ -1,6 +1,7 @@
package mock
import (
+ "context"
"encoding/json"
"errors"
"fmt"
@@ -9,15 +10,12 @@ import (
"github.com/spf13/cobra"
"cosmossdk.io/core/appmodule"
+ coreregistry "cosmossdk.io/core/registry"
"github.com/cosmos/cosmos-sdk/client"
- "github.com/cosmos/cosmos-sdk/codec"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
- abci "github.com/cometbft/cometbft/abci/types"
-
feetypes "github.com/cosmos/ibc-go/v9/modules/apps/29-fee/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types"
@@ -53,23 +51,23 @@ var (
)
var (
- _ module.AppModuleBasic = (*AppModuleBasic)(nil)
- _ appmodule.AppModule = (*AppModule)(nil)
+ _ appmodule.AppModule = (*AppModule)(nil)
_ porttypes.IBCModule = (*IBCModule)(nil)
)
-// AppModuleBasic is the mock AppModuleBasic.
-type AppModuleBasic struct{}
-
-// IsOnePerModuleType implements the depinject.OnePerModuleType interface.
-func (AppModuleBasic) IsOnePerModuleType() {}
+// AppModule represents the AppModule for the mock module.
+type AppModule struct {
+ ibcApps []*IBCApp
+}
-// IsAppModule implements the appmodule.AppModule interface.
-func (AppModuleBasic) IsAppModule() {}
+// NewAppModule returns a mock AppModule instance.
+func NewAppModule() AppModule {
+ return AppModule{}
+}
-// Name implements AppModuleBasic interface.
-func (AppModuleBasic) Name() string {
+// Name implements AppModule interface.
+func (AppModule) Name() string {
return ModuleName
}
@@ -80,45 +78,34 @@ func (AppModule) IsOnePerModuleType() {}
func (AppModule) IsAppModule() {}
// RegisterLegacyAminoCodec implements AppModuleBasic interface.
-func (AppModuleBasic) RegisterLegacyAminoCodec(*codec.LegacyAmino) {}
+func (AppModule) RegisterLegacyAminoCodec(coreregistry.AminoRegistrar) {}
// RegisterInterfaces implements AppModuleBasic interface.
-func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) {}
+func (AppModule) RegisterInterfaces(registry coreregistry.InterfaceRegistrar) {}
// DefaultGenesis implements AppModuleBasic interface.
-func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {
+func (AppModule) DefaultGenesis() json.RawMessage {
return nil
}
// ValidateGenesis implements the AppModuleBasic interface.
-func (AppModuleBasic) ValidateGenesis(codec.JSONCodec, client.TxEncodingConfig, json.RawMessage) error {
+func (AppModule) ValidateGenesis(json.RawMessage) error {
return nil
}
// RegisterGRPCGatewayRoutes implements AppModuleBasic interface.
-func (AppModuleBasic) RegisterGRPCGatewayRoutes(_ client.Context, _ *runtime.ServeMux) {}
+func (AppModule) RegisterGRPCGatewayRoutes(_ client.Context, _ *runtime.ServeMux) {}
// GetTxCmd implements AppModuleBasic interface.
-func (AppModuleBasic) GetTxCmd() *cobra.Command {
+func (AppModule) GetTxCmd() *cobra.Command {
return nil
}
// GetQueryCmd implements AppModuleBasic interface.
-func (AppModuleBasic) GetQueryCmd() *cobra.Command {
+func (AppModule) GetQueryCmd() *cobra.Command {
return nil
}
-// AppModule represents the AppModule for the mock module.
-type AppModule struct {
- AppModuleBasic
- ibcApps []*IBCApp
-}
-
-// NewAppModule returns a mock AppModule instance.
-func NewAppModule() AppModule {
- return AppModule{}
-}
-
// RegisterInvariants implements the AppModule interface.
func (AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {}
@@ -126,13 +113,13 @@ func (AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {}
func (AppModule) RegisterServices(module.Configurator) {}
// InitGenesis implements the AppModule interface.
-func (AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate {
- return []abci.ValidatorUpdate{}
+func (AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) error {
+ return nil
}
// ExportGenesis implements the AppModule interface.
-func (AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {
- return nil
+func (AppModule) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
+ return nil, nil
}
// ConsensusVersion implements AppModule/ConsensusVersion.
diff --git a/testing/path.go b/testing/path.go
index cc2949158e7..862b03d3691 100644
--- a/testing/path.go
+++ b/testing/path.go
@@ -4,7 +4,7 @@ import (
"bytes"
"errors"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types"
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types"
diff --git a/testing/simapp/ante.go b/testing/simapp/ante.go
index 45d5529e038..78eda683202 100644
--- a/testing/simapp/ante.go
+++ b/testing/simapp/ante.go
@@ -5,6 +5,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
+ "github.com/cosmos/cosmos-sdk/x/auth/ante/unorderedtx"
ibcante "github.com/cosmos/ibc-go/v9/modules/core/ante"
"github.com/cosmos/ibc-go/v9/modules/core/keeper"
@@ -33,17 +34,16 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
}
anteDecorators := []sdk.AnteDecorator{
- ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
+ ante.NewSetUpContextDecorator(options.Environment, options.ConsensusKeeper), // outermost AnteDecorator. SetUpContext must be called first
ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker),
- ante.NewValidateBasicDecorator(),
- ante.NewTxTimeoutHeightDecorator(),
+ ante.NewValidateBasicDecorator(options.Environment),
+ ante.NewTxTimeoutHeightDecorator(options.Environment),
+ ante.NewUnorderedTxDecorator(unorderedtx.DefaultMaxTimeoutDuration, options.UnorderedTxManager, options.Environment, ante.DefaultSha256Cost),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
- ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators
+ ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker),
ante.NewValidateSigCountDecorator(options.AccountKeeper),
- ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
- ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
- ante.NewIncrementSequenceDecorator(options.AccountKeeper),
+ ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler, options.SigGasConsumer, options.AccountAbstractionKeeper),
ibcante.NewRedundantRelayDecorator(options.IBCKeeper),
}
diff --git a/testing/simapp/app.go b/testing/simapp/app.go
index 3405ab8047c..1c56f8a122e 100644
--- a/testing/simapp/app.go
+++ b/testing/simapp/app.go
@@ -4,15 +4,74 @@ import (
"encoding/json"
"fmt"
"io"
+ "maps"
"os"
"path/filepath"
- dbm "github.com/cosmos/cosmos-db"
"github.com/cosmos/gogoproto/proto"
"github.com/spf13/cast"
+ autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
+ reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
+ "cosmossdk.io/client/v2/autocli"
+ clienthelpers "cosmossdk.io/client/v2/helpers"
+ coreaddress "cosmossdk.io/core/address"
+ corestore "cosmossdk.io/core/store"
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
+ "cosmossdk.io/x/accounts"
+ "cosmossdk.io/x/accounts/accountstd"
+ baseaccount "cosmossdk.io/x/accounts/defaults/base"
+ "cosmossdk.io/x/accounts/defaults/lockup"
+ "cosmossdk.io/x/accounts/defaults/multisig"
+ "cosmossdk.io/x/authz"
+ authzkeeper "cosmossdk.io/x/authz/keeper"
+ authzmodule "cosmossdk.io/x/authz/module"
+ "cosmossdk.io/x/bank"
+ bankkeeper "cosmossdk.io/x/bank/keeper"
+ banktypes "cosmossdk.io/x/bank/types"
+ "cosmossdk.io/x/consensus"
+ consensusparamkeeper "cosmossdk.io/x/consensus/keeper"
+ consensustypes "cosmossdk.io/x/consensus/types"
+ distr "cosmossdk.io/x/distribution"
+ distrkeeper "cosmossdk.io/x/distribution/keeper"
+ distrtypes "cosmossdk.io/x/distribution/types"
+ "cosmossdk.io/x/epochs"
+ epochskeeper "cosmossdk.io/x/epochs/keeper"
+ epochstypes "cosmossdk.io/x/epochs/types"
+ "cosmossdk.io/x/evidence"
+ evidencekeeper "cosmossdk.io/x/evidence/keeper"
+ evidencetypes "cosmossdk.io/x/evidence/types"
+ "cosmossdk.io/x/feegrant"
+ feegrantkeeper "cosmossdk.io/x/feegrant/keeper"
+ feegrantmodule "cosmossdk.io/x/feegrant/module"
+ "cosmossdk.io/x/gov"
+ govkeeper "cosmossdk.io/x/gov/keeper"
+ govtypes "cosmossdk.io/x/gov/types"
+ govv1beta1 "cosmossdk.io/x/gov/types/v1beta1"
+ "cosmossdk.io/x/group"
+ groupkeeper "cosmossdk.io/x/group/keeper"
+ groupmodule "cosmossdk.io/x/group/module"
+ "cosmossdk.io/x/mint"
+ mintkeeper "cosmossdk.io/x/mint/keeper"
+ minttypes "cosmossdk.io/x/mint/types"
+ "cosmossdk.io/x/nft"
+ nftkeeper "cosmossdk.io/x/nft/keeper"
+ nftmodule "cosmossdk.io/x/nft/module"
+ "cosmossdk.io/x/params"
+ paramskeeper "cosmossdk.io/x/params/keeper"
+ paramstypes "cosmossdk.io/x/params/types"
+ paramproposal "cosmossdk.io/x/params/types/proposal"
+ "cosmossdk.io/x/protocolpool"
+ poolkeeper "cosmossdk.io/x/protocolpool/keeper"
+ pooltypes "cosmossdk.io/x/protocolpool/types"
+ "cosmossdk.io/x/slashing"
+ slashingkeeper "cosmossdk.io/x/slashing/keeper"
+ slashingtypes "cosmossdk.io/x/slashing/types"
+ "cosmossdk.io/x/staking"
+ stakingkeeper "cosmossdk.io/x/staking/keeper"
+ stakingtypes "cosmossdk.io/x/staking/types"
+ txdecode "cosmossdk.io/x/tx/decode"
"cosmossdk.io/x/tx/signing"
"cosmossdk.io/x/upgrade"
upgradekeeper "cosmossdk.io/x/upgrade/keeper"
@@ -27,6 +86,7 @@ import (
"github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/runtime"
+ runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services"
"github.com/cosmos/cosmos-sdk/server"
"github.com/cosmos/cosmos-sdk/server/api"
"github.com/cosmos/cosmos-sdk/server/config"
@@ -39,6 +99,7 @@ import (
"github.com/cosmos/cosmos-sdk/version"
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
+ "github.com/cosmos/cosmos-sdk/x/auth/ante/unorderedtx"
authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
"github.com/cosmos/cosmos-sdk/x/auth/posthandler"
@@ -47,40 +108,12 @@ import (
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
- "github.com/cosmos/cosmos-sdk/x/authz"
- authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
- authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module"
- "github.com/cosmos/cosmos-sdk/x/bank"
- bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- "github.com/cosmos/cosmos-sdk/x/consensus"
- consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
- consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
- distr "github.com/cosmos/cosmos-sdk/x/distribution"
- distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
- distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
- "github.com/cosmos/cosmos-sdk/x/gov"
- govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
- govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
- "github.com/cosmos/cosmos-sdk/x/group"
- "github.com/cosmos/cosmos-sdk/x/mint"
- mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
- "github.com/cosmos/cosmos-sdk/x/params"
- paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
- paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
- paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
- "github.com/cosmos/cosmos-sdk/x/slashing"
- slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- "github.com/cosmos/cosmos-sdk/x/staking"
- stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-
- abci "github.com/cometbft/cometbft/abci/types"
+
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
+ cmtcrypto "github.com/cometbft/cometbft/crypto"
+ cmted25519 "github.com/cometbft/cometbft/crypto/ed25519"
ica "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts"
icacontroller "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/controller"
@@ -109,7 +142,6 @@ import (
ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint"
ibcmock "github.com/cosmos/ibc-go/v9/testing/mock"
mockv2 "github.com/cosmos/ibc-go/v9/testing/mock/v2"
- ibctestingtypes "github.com/cosmos/ibc-go/v9/testing/types"
)
const appName = "SimApp"
@@ -125,53 +157,66 @@ var (
// module account permissions
maccPerms = map[string][]string{
- authtypes.FeeCollectorName: nil,
- distrtypes.ModuleName: nil,
- minttypes.ModuleName: {authtypes.Minter},
- stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
- stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
- govtypes.ModuleName: {authtypes.Burner},
- ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
- ibcfeetypes.ModuleName: nil,
- icatypes.ModuleName: nil,
- ibcmock.ModuleName: nil,
+ authtypes.FeeCollectorName: nil,
+ distrtypes.ModuleName: nil,
+ pooltypes.ModuleName: nil,
+ pooltypes.StreamAccount: nil,
+ pooltypes.ProtocolPoolDistrAccount: nil,
+ minttypes.ModuleName: {authtypes.Minter},
+ stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
+ stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
+ govtypes.ModuleName: {authtypes.Burner},
+ nft.ModuleName: nil,
+ ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
+ ibcfeetypes.ModuleName: nil,
+ icatypes.ModuleName: nil,
+ ibcmock.ModuleName: nil,
}
)
+// _ runtime.AppI = (*SimApp)(nil)
var _ servertypes.Application = (*SimApp)(nil)
// SimApp extends an ABCI application, but with most of its parameters exported.
// They are exported for convenience in creating helper functions.
type SimApp struct {
*baseapp.BaseApp
+ logger log.Logger
legacyAmino *codec.LegacyAmino
appCodec codec.Codec
txConfig client.TxConfig
interfaceRegistry types.InterfaceRegistry
// keys to access the substores
- keys map[string]*storetypes.KVStoreKey
- tkeys map[string]*storetypes.TransientStoreKey
- memKeys map[string]*storetypes.MemoryStoreKey
+ keys map[string]*storetypes.KVStoreKey
+ tkeys map[string]*storetypes.TransientStoreKey
// keepers
- AccountKeeper authkeeper.AccountKeeper
- BankKeeper bankkeeper.Keeper
+ AccountsKeeper accounts.Keeper
+ AuthKeeper authkeeper.AccountKeeper
+ BankKeeper bankkeeper.BaseKeeper
StakingKeeper *stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
- MintKeeper mintkeeper.Keeper
+ MintKeeper *mintkeeper.Keeper
DistrKeeper distrkeeper.Keeper
GovKeeper govkeeper.Keeper
UpgradeKeeper *upgradekeeper.Keeper
- ParamsKeeper paramskeeper.Keeper
AuthzKeeper authzkeeper.Keeper
- IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
- IBCFeeKeeper ibcfeekeeper.Keeper
- ICAControllerKeeper icacontrollerkeeper.Keeper
- ICAHostKeeper icahostkeeper.Keeper
- TransferKeeper ibctransferkeeper.Keeper
- TransferKeeperV2 *ibctransferkeeperv2.Keeper
+ EvidenceKeeper evidencekeeper.Keeper
+ FeeGrantKeeper feegrantkeeper.Keeper
+ GroupKeeper groupkeeper.Keeper
+ NFTKeeper nftkeeper.Keeper
ConsensusParamsKeeper consensusparamkeeper.Keeper
+ PoolKeeper poolkeeper.Keeper
+ EpochsKeeper *epochskeeper.Keeper
+ ParamsKeeper paramskeeper.Keeper
+
+ IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
+ IBCFeeKeeper ibcfeekeeper.Keeper
+ ICAControllerKeeper icacontrollerkeeper.Keeper
+ ICAHostKeeper icahostkeeper.Keeper
+ TransferKeeper ibctransferkeeper.Keeper
+ TransferKeeperV2 *ibctransferkeeperv2.Keeper
// make IBC modules public for test purposes
// these modules are never directly routed to by the IBC Router
@@ -183,48 +228,64 @@ type SimApp struct {
MockModuleV2B mockv2.IBCModule
// the module manager
- ModuleManager *module.Manager
- BasicModuleManager module.BasicManager
+ ModuleManager *module.Manager
// simulation manager
- simulationManager *module.SimulationManager
+ sm *module.SimulationManager
+
+ UnorderedTxManager *unorderedtx.Manager
// module configurator
- configurator module.Configurator
+ configurator module.Configurator //nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
}
func init() {
- userHomeDir, err := os.UserHomeDir()
+ var err error
+ DefaultNodeHome, err = clienthelpers.GetNodeHomeDirectory(".simapp")
if err != nil {
panic(err)
}
-
- DefaultNodeHome = filepath.Join(userHomeDir, ".simapp")
}
// NewSimApp returns a reference to an initialized SimApp.
func NewSimApp(
logger log.Logger,
- db dbm.DB,
+ db corestore.KVStoreWithBatch,
traceStore io.Writer,
loadLatest bool,
appOpts servertypes.AppOptions,
baseAppOptions ...func(*baseapp.BaseApp),
) *SimApp {
- interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
+ interfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
ProtoFiles: proto.HybridResolver,
SigningOptions: signing.Options{
- AddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(),
- },
- ValidatorAddressCodec: address.Bech32Codec{
- Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(),
- },
+ AddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
+ ValidatorAddressCodec: address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
},
})
+ if err != nil {
+ panic(err)
+ }
appCodec := codec.NewProtoCodec(interfaceRegistry)
legacyAmino := codec.NewLegacyAmino()
- txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes)
+ signingCtx := interfaceRegistry.SigningContext()
+ txDecoder, err := txdecode.NewDecoder(txdecode.Options{
+ SigningContext: signingCtx,
+ ProtoCodec: appCodec,
+ })
+ if err != nil {
+ panic(err)
+ }
+ txConfig := authtx.NewTxConfig(appCodec, signingCtx.AddressCodec(), signingCtx.ValidatorAddressCodec(), authtx.DefaultSignModes)
+
+ govModuleAddr, err := signingCtx.AddressCodec().BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ panic(err)
+ }
+
+ if err := signingCtx.Validate(); err != nil {
+ panic(err)
+ }
std.RegisterLegacyAminoCodec(legacyAmino)
std.RegisterInterfaces(interfaceRegistry)
@@ -255,6 +316,14 @@ func NewSimApp(
// }
// baseAppOptions = append(baseAppOptions, prepareOpt)
+ // create and set dummy vote extension handler
+ // voteExtOp := func(bApp *baseapp.BaseApp) {
+ // voteExtHandler := NewVoteExtensionHandler()
+ // voteExtHandler.SetHandlers(bApp)
+ // }
+ // baseAppOptions = append(baseAppOptions, voteExtOp, baseapp.SetOptimisticExecution(),
+ // baseapp.SetIncludeNestedMsgsGas([]sdk.Msg{&govv1.MsgSubmitProposal{}}))
+
bApp := baseapp.NewBaseApp(appName, logger, db, txConfig.TxDecoder(), baseAppOptions...)
bApp.SetCommitMultiStoreTracer(traceStore)
bApp.SetVersion(version.Version)
@@ -264,9 +333,13 @@ func NewSimApp(
keys := storetypes.NewKVStoreKeys(
authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
- govtypes.StoreKey, group.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey,
- ibctransfertypes.StoreKey, icacontrollertypes.StoreKey, icahosttypes.StoreKey,
- authzkeeper.StoreKey, ibcfeetypes.StoreKey, consensusparamtypes.StoreKey,
+ govtypes.StoreKey, consensustypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey,
+ evidencetypes.StoreKey,
+ authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, pooltypes.StoreKey,
+ accounts.StoreKey, epochstypes.StoreKey,
+ paramstypes.StoreKey,
+ ibcexported.StoreKey, ibctransfertypes.StoreKey, icacontrollertypes.StoreKey,
+ icahosttypes.StoreKey, ibcfeetypes.StoreKey,
)
// register streaming services
@@ -275,56 +348,111 @@ func NewSimApp(
}
tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey)
- memKeys := storetypes.NewMemoryStoreKeys(ibcmock.MemStoreKey)
app := &SimApp{
BaseApp: bApp,
+ logger: logger,
legacyAmino: legacyAmino,
appCodec: appCodec,
txConfig: txConfig,
interfaceRegistry: interfaceRegistry,
keys: keys,
tkeys: tkeys,
- memKeys: memKeys,
}
+ cometService := runtime.NewContextAwareCometInfoService()
app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey])
// set the BaseApp's parameter store
- app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), runtime.EventService{})
+ app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[consensustypes.StoreKey]), logger.With(log.ModuleKey, "x/consensus")), govModuleAddr)
bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore)
- // SDK module keepers
+ // set the version modifier
+ bApp.SetVersionModifier(consensus.ProvideAppVersionModifier(app.ConsensusParamsKeeper))
// add keepers
- app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.Bech32MainPrefix), sdk.Bech32MainPrefix, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ accountsKeeper, err := accounts.NewKeeper(
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[accounts.StoreKey]), logger.With(log.ModuleKey, "x/accounts"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ signingCtx.AddressCodec(),
+ appCodec.InterfaceRegistry(),
+ txDecoder,
+ // Lockup account
+ accountstd.AddAccount(lockup.CONTINUOUS_LOCKING_ACCOUNT, lockup.NewContinuousLockingAccount),
+ accountstd.AddAccount(lockup.PERIODIC_LOCKING_ACCOUNT, lockup.NewPeriodicLockingAccount),
+ accountstd.AddAccount(lockup.DELAYED_LOCKING_ACCOUNT, lockup.NewDelayedLockingAccount),
+ accountstd.AddAccount(lockup.PERMANENT_LOCKING_ACCOUNT, lockup.NewPermanentLockingAccount),
+ accountstd.AddAccount("multisig", multisig.NewAccount),
+ // PRODUCTION: add
+ baseaccount.NewAccount("base", txConfig.SignModeHandler(), baseaccount.WithSecp256K1PubKey()),
+ )
+ if err != nil {
+ panic(err)
+ }
+ app.AccountsKeeper = accountsKeeper
+
+ app.AuthKeeper = authkeeper.NewAccountKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authtypes.StoreKey]), logger.With(log.ModuleKey, "x/auth")), appCodec, authtypes.ProtoBaseAccount, accountsKeeper, maccPerms, signingCtx.AddressCodec(), sdk.Bech32MainPrefix, govModuleAddr)
+ blockedAddrs, err := BlockedAddresses(signingCtx.AddressCodec())
+ if err != nil {
+ panic(err)
+ }
app.BankKeeper = bankkeeper.NewBaseKeeper(
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[banktypes.StoreKey]), logger.With(log.ModuleKey, "x/bank")),
appCodec,
- runtime.NewKVStoreService(keys[banktypes.StoreKey]),
- app.AccountKeeper,
- BlockedAddresses(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- logger,
+ app.AuthKeeper,
+ blockedAddrs,
+ govModuleAddr,
)
+
app.StakingKeeper = stakingkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr), authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ appCodec,
+ runtime.NewEnvironment(
+ runtime.NewKVStoreService(keys[stakingtypes.StoreKey]),
+ logger.With(log.ModuleKey, "x/staking"),
+ runtime.EnvWithMsgRouterService(app.MsgServiceRouter()),
+ runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.AuthKeeper,
+ app.BankKeeper,
+ app.ConsensusParamsKeeper,
+ govModuleAddr,
+ signingCtx.ValidatorAddressCodec(),
+ authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
+ cometService,
)
- app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), app.StakingKeeper, app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, app.StakingKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[minttypes.StoreKey]), logger.With(log.ModuleKey, "x/mint")), app.AuthKeeper, app.BankKeeper, authtypes.FeeCollectorName, govModuleAddr)
+ if err := app.MintKeeper.SetMintFn(mintkeeper.DefaultMintFn(minttypes.DefaultInflationCalculationFn, app.StakingKeeper, app.MintKeeper)); err != nil {
+ panic(err)
+ }
+
+ app.PoolKeeper = poolkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[pooltypes.StoreKey]), logger.With(log.ModuleKey, "x/protocolpool")), app.AuthKeeper, app.BankKeeper, govModuleAddr)
- app.SlashingKeeper = slashingkeeper.NewKeeper(
- appCodec, legacyAmino, runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[distrtypes.StoreKey]), logger.With(log.ModuleKey, "x/distribution")), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, cometService, authtypes.FeeCollectorName, govModuleAddr)
+
+ app.SlashingKeeper = slashingkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), logger.With(log.ModuleKey, "x/slashing")),
+ appCodec, legacyAmino, app.StakingKeeper, govModuleAddr,
)
+ app.FeeGrantKeeper = feegrantkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[feegrant.StoreKey]), logger.With(log.ModuleKey, "x/feegrant")), appCodec, app.AuthKeeper.AddressCodec())
+
// register the staking hooks
// NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
app.StakingKeeper.SetHooks(
stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()),
)
- app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), appCodec, app.MsgServiceRouter(), app.AccountKeeper)
+ app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), logger.With(log.ModuleKey, "x/authz"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, app.AuthKeeper.AddressCodec())
+
+ groupConfig := group.DefaultConfig()
+ /*
+ Example of group params:
+ config.MaxExecutionPeriod = "1209600s" // example execution period in seconds
+ config.MaxMetadataLen = 1000 // example metadata length in bytes
+ config.MaxProposalTitleLen = 255 // example max title length in characters
+ config.MaxProposalSummaryLen = 10200 // example max summary length in characters
+ */
+ app.GroupKeeper = groupkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[group.StoreKey]), logger.With(log.ModuleKey, "x/group"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), appCodec, app.AuthKeeper, groupConfig)
// get skipUpgradeHeights from the app options
skipUpgradeHeights := map[int64]bool{}
@@ -333,21 +461,29 @@ func NewSimApp(
}
homePath := cast.ToString(appOpts.Get(flags.FlagHome))
// set the governance module account as the authority for conducting upgrades
- app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String())
+ app.UpgradeKeeper = upgradekeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), logger.With(log.ModuleKey, "x/upgrade"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), skipUpgradeHeights, appCodec, homePath, app.BaseApp, govModuleAddr, app.ConsensusParamsKeeper)
app.IBCKeeper = ibckeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcexported.StoreKey]), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcexported.StoreKey]), logger.With(log.ModuleKey, "x/ibc")),
+ app.GetSubspace(ibcexported.ModuleName),
+ app.UpgradeKeeper,
+ govModuleAddr,
)
- govConfig := govtypes.DefaultConfig()
+ govRouter := govv1beta1.NewRouter()
+ govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).
+ AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper))
+
+ govConfig := govkeeper.DefaultConfig()
/*
Example of setting gov params:
govConfig.MaxMetadataLen = 10000
*/
- govKeeper := govkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[govtypes.StoreKey]), app.AccountKeeper, app.BankKeeper,
- app.StakingKeeper, app.DistrKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
- )
+ govKeeper := govkeeper.NewKeeper(appCodec, runtime.NewEnvironment(runtime.NewKVStoreService(keys[govtypes.StoreKey]), logger.With(log.ModuleKey, "x/gov"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper, govConfig, govModuleAddr)
+
+ // Set legacy router for backwards compatibility with gov v1beta1
+ govKeeper.SetLegacyRouter(govRouter)
app.GovKeeper = *govKeeper.SetHooks(
govtypes.NewMultiGovHooks(
@@ -355,30 +491,60 @@ func NewSimApp(
),
)
+ app.NFTKeeper = nftkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[nftkeeper.StoreKey]), logger.With(log.ModuleKey, "x/nft")), appCodec, app.AuthKeeper, app.BankKeeper)
+
+ evidenceKeeper := evidencekeeper.NewKeeper(
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), logger.With(log.ModuleKey, "x/evidence"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.StakingKeeper,
+ app.SlashingKeeper,
+ app.ConsensusParamsKeeper,
+ app.AuthKeeper.AddressCodec(),
+ app.StakingKeeper.ConsensusAddressCodec(),
+ )
+
+ // If evidence needs to be handled for the app, set routes in router here and seal
+ app.EvidenceKeeper = *evidenceKeeper
+
+ app.EpochsKeeper = epochskeeper.NewKeeper(
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[epochstypes.StoreKey]), logger.With(log.ModuleKey, "x/epochs")),
+ appCodec,
+ )
+
+ app.EpochsKeeper.SetHooks(
+ epochstypes.NewMultiEpochHooks(
+ // insert epoch hooks receivers here
+ ),
+ )
+
// IBC Fee Module keeper
app.IBCFeeKeeper = ibcfeekeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibcfeetypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibcfeetypes.ModuleName))),
app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
+ app.AuthKeeper, app.BankKeeper,
)
// ICA Controller keeper
app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), app.GetSubspace(icacontrollertypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icacontrollertypes.StoreKey]), logger.With(log.ModuleKey, "x/icacontroller"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter())),
+ app.GetSubspace(icacontrollertypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
app.IBCKeeper.ChannelKeeper,
- app.MsgServiceRouter(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ govModuleAddr,
)
// ICA Host keeper
app.ICAHostKeeper = icahostkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), app.GetSubspace(icahosttypes.SubModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[icahosttypes.StoreKey]), logger.With(log.ModuleKey, "x/icahost"), runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())),
+ app.GetSubspace(icahosttypes.SubModuleName),
app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
- app.IBCKeeper.ChannelKeeper, app.AccountKeeper,
- app.MsgServiceRouter(), app.GRPCQueryRouter(),
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.IBCKeeper.ChannelKeeper,
+ app.AuthKeeper,
+ govModuleAddr,
)
// Create IBC Router
@@ -390,11 +556,13 @@ func NewSimApp(
// Create Transfer Keeper and pass IBCFeeKeeper as expected Channel and PortKeeper
// since fee middleware will wrap the IBCKeeper for underlying application.
app.TransferKeeper = ibctransferkeeper.NewKeeper(
- appCodec, runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), app.GetSubspace(ibctransfertypes.ModuleName),
+ appCodec,
+ runtime.NewEnvironment(runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), logger.With(log.ModuleKey, fmt.Sprintf("x/%s-%s", ibcexported.ModuleName, ibctransfertypes.ModuleName))),
+ app.GetSubspace(ibctransfertypes.ModuleName),
app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware
app.IBCKeeper.ChannelKeeper,
- app.AccountKeeper, app.BankKeeper,
- authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ app.AuthKeeper, app.BankKeeper,
+ govModuleAddr,
)
// Mock Module Stack
@@ -509,28 +677,32 @@ func NewSimApp(
// NOTE: Any module instantiated in the module manager that is later modified
// must be passed by reference here.
app.ModuleManager = module.NewManager(
- genutil.NewAppModule(
- app.AccountKeeper, app.StakingKeeper, app,
- txConfig,
- ),
- auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
- vesting.NewAppModule(app.AccountKeeper, app.BankKeeper),
- bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)),
- gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
- mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)),
- slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry),
- distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)),
- staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)),
- upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()),
+ genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator),
+ accounts.NewAppModule(appCodec, app.AccountsKeeper),
+ auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
+ vesting.NewAppModule(app.AuthKeeper, app.BankKeeper),
+ bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper),
+ feegrantmodule.NewAppModule(appCodec, app.FeeGrantKeeper, app.interfaceRegistry),
+ gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper),
+ mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper),
+ slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService),
+ distr.NewAppModule(appCodec, app.DistrKeeper, app.StakingKeeper),
+ staking.NewAppModule(appCodec, app.StakingKeeper),
+ upgrade.NewAppModule(app.UpgradeKeeper),
params.NewAppModule(app.ParamsKeeper),
- authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
+ evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService),
+ authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.interfaceRegistry),
+ groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
+ nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper),
+ protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper),
+ epochs.NewAppModule(appCodec, app.EpochsKeeper),
// IBC modules
- ibc.NewAppModule(app.IBCKeeper),
- transfer.NewAppModule(app.TransferKeeper),
- ibcfee.NewAppModule(app.IBCFeeKeeper),
- ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper),
+ ibc.NewAppModule(appCodec, app.IBCKeeper),
+ transfer.NewAppModule(appCodec, app.TransferKeeper),
+ ibcfee.NewAppModule(appCodec, app.IBCFeeKeeper),
+ ica.NewAppModule(appCodec, &app.ICAControllerKeeper, &app.ICAHostKeeper),
mockModule,
// IBC light clients
@@ -538,22 +710,8 @@ func NewSimApp(
solomachine.NewAppModule(smLightClientModule),
)
- // BasicModuleManager defines the module BasicManager is in charge of setting up basic,
- // non-dependant module elements, such as codec registration and genesis verification.
- // By default it is composed of all the module from the module manager.
- // Additionally, app module basics can be overwritten by passing them as argument.
- app.BasicModuleManager = module.NewBasicManagerFromManager(
- app.ModuleManager,
- map[string]module.AppModuleBasic{
- genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
- govtypes.ModuleName: gov.NewAppModuleBasic(
- []govclient.ProposalHandler{
- paramsclient.ProposalHandler,
- },
- ),
- })
- app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino)
- app.BasicModuleManager.RegisterInterfaces(interfaceRegistry)
+ app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino)
+ app.ModuleManager.RegisterInterfaces(interfaceRegistry)
// NOTE: upgrade module is required to be prioritized
app.ModuleManager.SetOrderPreBlockers(
@@ -567,12 +725,15 @@ func NewSimApp(
app.ModuleManager.SetOrderBeginBlockers(
minttypes.ModuleName,
distrtypes.ModuleName,
+ pooltypes.ModuleName,
slashingtypes.ModuleName,
+ evidencetypes.ModuleName,
stakingtypes.ModuleName,
ibcexported.ModuleName,
ibctransfertypes.ModuleName,
genutiltypes.ModuleName,
authz.ModuleName,
+ epochstypes.ModuleName,
icatypes.ModuleName,
ibcfeetypes.ModuleName,
ibcmock.ModuleName,
@@ -583,22 +744,40 @@ func NewSimApp(
ibcexported.ModuleName,
ibctransfertypes.ModuleName,
genutiltypes.ModuleName,
+ feegrant.ModuleName,
icatypes.ModuleName,
ibcfeetypes.ModuleName,
ibcmock.ModuleName,
group.ModuleName,
+ pooltypes.ModuleName,
)
// NOTE: The genutils module must occur after staking so that pools are
// properly initialized with tokens from genesis accounts.
// NOTE: The genutils module must also occur after auth so that it can access the params from auth.
genesisModuleOrder := []string{
+ consensustypes.ModuleName,
+ accounts.ModuleName,
authtypes.ModuleName,
- banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName,
- slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName,
- ibcexported.ModuleName, genutiltypes.ModuleName, authz.ModuleName, ibctransfertypes.ModuleName,
- icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName,
- vestingtypes.ModuleName, group.ModuleName, consensusparamtypes.ModuleName,
+ banktypes.ModuleName,
+ distrtypes.ModuleName,
+ pooltypes.ModuleName,
+ stakingtypes.ModuleName,
+ slashingtypes.ModuleName,
+ govtypes.ModuleName,
+ minttypes.ModuleName,
+ ibcexported.ModuleName,
+ genutiltypes.ModuleName,
+ evidencetypes.ModuleName,
+ authz.ModuleName,
+ ibctransfertypes.ModuleName,
+ feegrant.ModuleName,
+ nft.ModuleName,
+ group.ModuleName,
+ icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, paramstypes.ModuleName,
+ upgradetypes.ModuleName,
+ vestingtypes.ModuleName,
+ epochstypes.ModuleName,
}
app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...)
app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...)
@@ -607,10 +786,22 @@ func NewSimApp(
// app.ModuleManager.SetOrderMigrations(custom order)
app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter())
- err := app.ModuleManager.RegisterServices(app.configurator)
+ err = app.ModuleManager.RegisterServices(app.configurator)
+ if err != nil {
+ panic(err)
+ }
+
+ // RegisterUpgradeHandlers is used for registering any on-chain upgrades.
+ // Make sure it's called after `app.ModuleManager` and `app.configurator` are set.
+ // app.RegisterUpgradeHandlers()
+
+ autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules))
+
+ reflectionSvc, err := runtimeservices.NewReflectionService()
if err != nil {
panic(err)
}
+ reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc)
// add test gRPC service for testing gRPC queries in isolation
testpb.RegisterQueryServer(app.GRPCQueryRouter(), testpb.QueryImpl{})
@@ -620,16 +811,35 @@ func NewSimApp(
// NOTE: this is not required apps that don't use the simulator for fuzz testing
// transactions
overrideModules := map[string]module.AppModuleSimulation{
- authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
+ authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts, nil),
+ }
+
+ app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
+
+ // create, start, and load the unordered tx manager
+ utxDataDir := filepath.Join(homePath, "data")
+ app.UnorderedTxManager = unorderedtx.NewManager(utxDataDir)
+ app.UnorderedTxManager.Start()
+
+ if err := app.UnorderedTxManager.OnInit(); err != nil {
+ panic(fmt.Errorf("failed to initialize unordered tx manager: %w", err))
+ }
+
+ // register custom snapshot extensions (if any)
+ if manager := app.SnapshotManager(); manager != nil {
+ err := manager.RegisterExtensions(
+ unorderedtx.NewSnapshotter(app.UnorderedTxManager),
+ )
+ if err != nil {
+ panic(fmt.Errorf("failed to register snapshot extension: %w", err))
+ }
}
- app.simulationManager = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
- app.simulationManager.RegisterStoreDecoders()
+ app.sm.RegisterStoreDecoders()
// initialize stores
app.MountKVStores(keys)
app.MountTransientStores(tkeys)
- app.MountMemoryStores(memKeys)
// initialize BaseApp
app.SetInitChainer(app.InitChainer)
@@ -646,12 +856,7 @@ func NewSimApp(
// meaning that both `runMsgs` and `postHandler` state will be committed if
// both are successful, and both will be reverted if any of the two fails.
//
- // The SDK exposes a default postHandlers chain, which is comprised of only
- // one decorator: the Transaction Tips decorator. However, some chains do
- // not need it by default, so feel free to comment the next line if you do
- // not need tips.
- // To read more about tips:
- // https://docs.cosmos.network/main/core/tips.html
+ // The SDK exposes a default postHandlers chain
//
// Please note that changing any of the anteHandler or postHandler chain is
// likely to be a state-machine breaking change, which needs a coordinated
@@ -686,13 +891,18 @@ func NewSimApp(
func (app *SimApp) setAnteHandler(txConfig client.TxConfig) {
anteHandler, err := NewAnteHandler(
HandlerOptions{
- ante.HandlerOptions{
- AccountKeeper: app.AccountKeeper,
- BankKeeper: app.BankKeeper,
- SignModeHandler: txConfig.SignModeHandler(),
- SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
+ HandlerOptions: ante.HandlerOptions{
+ Environment: runtime.NewEnvironment(nil, app.logger, runtime.EnvWithMsgRouterService(app.MsgServiceRouter()), runtime.EnvWithQueryRouterService(app.GRPCQueryRouter())), // nil is set as the kvstoreservice to avoid module access
+ AccountAbstractionKeeper: app.AccountsKeeper,
+ AccountKeeper: app.AuthKeeper,
+ BankKeeper: app.BankKeeper,
+ ConsensusKeeper: app.ConsensusParamsKeeper,
+ SignModeHandler: txConfig.SignModeHandler(),
+ FeegrantKeeper: app.FeeGrantKeeper,
+ SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
+ UnorderedTxManager: app.UnorderedTxManager,
},
- app.IBCKeeper,
+ IBCKeeper: app.IBCKeeper,
},
)
if err != nil {
@@ -714,11 +924,22 @@ func (app *SimApp) setPostHandler() {
app.SetPostHandler(postHandler)
}
+// Close closes all necessary application resources.
+// It implements servertypes.Application.
+func (app *SimApp) Close() error {
+ if err := app.BaseApp.Close(); err != nil {
+ return err
+ }
+
+ return app.UnorderedTxManager.Close()
+}
+
// Name returns the name of the App
func (app *SimApp) Name() string { return app.BaseApp.Name() }
// PreBlocker application updates every pre block
-func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) {
+func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.FinalizeBlockRequest) error {
+ app.UnorderedTxManager.OnNewBlock(ctx.BlockTime())
return app.ModuleManager.PreBlock(ctx)
}
@@ -732,21 +953,22 @@ func (app *SimApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) {
return app.ModuleManager.EndBlock(ctx)
}
-// Configurator returns the configurator for the app
-func (app *SimApp) Configurator() module.Configurator {
+func (app *SimApp) Configurator() module.Configurator { //nolint:staticcheck // SA1019: Configurator is deprecated but still used in runtime v1.
return app.configurator
}
// InitChainer application update at chain initialization
-func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
+func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.InitChainRequest) (*abci.InitChainResponse, error) {
var genesisState GenesisState
- if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
- panic(err)
+ err := json.Unmarshal(req.AppStateBytes, &genesisState)
+ if err != nil {
+ return nil, err
}
- if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()); err != nil {
- panic(err)
+ err = app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap())
+ if err != nil {
+ return nil, err
}
- return app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
+ return app.ModuleManager.InitGenesis(ctx, genesisState)
}
// LoadHeight loads a particular height
@@ -780,9 +1002,17 @@ func (app *SimApp) TxConfig() client.TxConfig {
return app.txConfig
}
-// DefaultGenesis returns a default genesis from the registered AppModuleBasic's.
+// AutoCliOpts returns the autocli options for the app.
+func (app *SimApp) AutoCliOpts() autocli.AppOptions {
+ return autocli.AppOptions{
+ Modules: app.ModuleManager.Modules,
+ ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules),
+ }
+}
+
+// DefaultGenesis returns a default genesis from the registered AppModule's.
func (app *SimApp) DefaultGenesis() map[string]json.RawMessage {
- return app.BasicModuleManager.DefaultGenesis(app.appCodec)
+ return app.ModuleManager.DefaultGenesis()
}
// GetKey returns the KVStoreKey for the provided store key.
@@ -812,7 +1042,7 @@ func (app *SimApp) GetSubspace(moduleName string) paramstypes.Subspace {
// SimulationManager implements the SimulationApp interface
func (app *SimApp) SimulationManager() *module.SimulationManager {
- return app.simulationManager
+ return app.sm
}
// RegisterAPIRoutes registers all application module routes with the provided
@@ -829,7 +1059,7 @@ func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICon
nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// Register grpc-gateway routes for all modules.
- app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
+ app.ModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// register swagger API from root so that other applications can override easily
if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil {
@@ -857,30 +1087,47 @@ func (app *SimApp) RegisterNodeService(clientCtx client.Context, cfg config.Conf
nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg)
}
+// ValidatorKeyProvider returns a function that generates a validator key
+// Supported key types are those supported by Comet: ed25519, secp256k1, bls12-381
+func (*SimApp) ValidatorKeyProvider() runtime.KeyGenF {
+ return func() (cmtcrypto.PrivKey, error) {
+ return cmted25519.GenPrivKey(), nil
+ }
+}
+
// GetMaccPerms returns a copy of the module account permissions
//
// NOTE: This is solely to be used for testing purposes.
func GetMaccPerms() map[string][]string {
- dupMaccPerms := make(map[string][]string)
- for k, v := range maccPerms {
- dupMaccPerms[k] = v
- }
-
- return dupMaccPerms
+ return maps.Clone(maccPerms)
}
// BlockedAddresses returns all the app's blocked account addresses.
-func BlockedAddresses() map[string]bool {
+func BlockedAddresses(ac coreaddress.Codec) (map[string]bool, error) {
modAccAddrs := make(map[string]bool)
for acc := range GetMaccPerms() {
- modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true
+ addr, err := ac.BytesToString(authtypes.NewModuleAddress(acc))
+ if err != nil {
+ return nil, err
+ }
+ modAccAddrs[addr] = true
}
// allow the following addresses to receive funds
- delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- delete(modAccAddrs, authtypes.NewModuleAddress(ibcmock.ModuleName).String())
+ govAddr, err := ac.BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName))
+ if err != nil {
+ return nil, err
+ }
+
+ ibcMockAddr, err := ac.BytesToString(authtypes.NewModuleAddress(ibcmock.ModuleName))
+ if err != nil {
+ return nil, err
+ }
+
+ delete(modAccAddrs, govAddr)
+ delete(modAccAddrs, ibcMockAddr)
- return modAccAddrs
+ return modAccAddrs, nil
}
// initParamsKeeper init params keeper and its subspaces
@@ -905,11 +1152,6 @@ func (app *SimApp) GetBaseApp() *baseapp.BaseApp {
return app.BaseApp
}
-// GetStakingKeeper implements the TestingApp interface.
-func (app *SimApp) GetStakingKeeper() ibctestingtypes.StakingKeeper {
- return app.StakingKeeper
-}
-
// GetIBCKeeper implements the TestingApp interface.
func (app *SimApp) GetIBCKeeper() *ibckeeper.Keeper {
return app.IBCKeeper
@@ -919,10 +1161,3 @@ func (app *SimApp) GetIBCKeeper() *ibckeeper.Keeper {
func (app *SimApp) GetTxConfig() client.TxConfig {
return app.txConfig
}
-
-// GetMemKey returns the MemStoreKey for the provided mem key.
-//
-// NOTE: This is solely used for testing purposes.
-func (app *SimApp) GetMemKey(storeKey string) *storetypes.MemoryStoreKey {
- return app.memKeys[storeKey]
-}
diff --git a/testing/simapp/test_helpers.go b/testing/simapp/test_helpers.go
index a3c4e8764be..2e32e74bdbb 100644
--- a/testing/simapp/test_helpers.go
+++ b/testing/simapp/test_helpers.go
@@ -11,6 +11,7 @@ import (
"cosmossdk.io/log"
sdkmath "cosmossdk.io/math"
+ banktypes "cosmossdk.io/x/bank/types"
bam "github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client"
@@ -23,9 +24,8 @@ import (
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
cmttypes "github.com/cometbft/cometbft/types"
)
@@ -91,7 +91,7 @@ func SetupWithGenesisValSet(t *testing.T, valSet *cmttypes.ValidatorSet, genAccs
require.NoError(t, err)
// init chain will set the validator set and initialize the genesis accounts
- _, err = app.InitChain(&abci.RequestInitChain{
+ _, err = app.InitChain(&abci.InitChainRequest{
Validators: []abci.ValidatorUpdate{},
ConsensusParams: simtestutil.DefaultConsensusParams,
AppStateBytes: stateBytes,
@@ -109,7 +109,7 @@ func SetupWithGenesisValSet(t *testing.T, valSet *cmttypes.ValidatorSet, genAccs
func SignAndDeliver(
tb testing.TB, txCfg client.TxConfig, app *bam.BaseApp, msgs []sdk.Msg,
chainID string, accNums, accSeqs []uint64, expPass bool, blockTime time.Time, nextValHash []byte, priv ...cryptotypes.PrivKey,
-) (*abci.ResponseFinalizeBlock, error) {
+) (*abci.FinalizeBlockResponse, error) {
tb.Helper()
tx, err := simtestutil.GenSignedMockTx(
rand.New(rand.NewSource(time.Now().UnixNano())),
@@ -127,7 +127,7 @@ func SignAndDeliver(
txBytes, err := txCfg.TxEncoder()(tx)
require.NoError(tb, err)
- return app.FinalizeBlock(&abci.RequestFinalizeBlock{
+ return app.FinalizeBlock(&abci.FinalizeBlockRequest{
Height: app.LastBlockHeight() + 1,
Time: blockTime,
NextValidatorsHash: nextValHash,
diff --git a/testing/testing_app.go b/testing/testing_app.go
index bdb99ec35fc..0125368474b 100644
--- a/testing/testing_app.go
+++ b/testing/testing_app.go
@@ -11,6 +11,8 @@ import (
"cosmossdk.io/log"
sdkmath "cosmossdk.io/math"
storetypes "cosmossdk.io/store/types"
+ banktypes "cosmossdk.io/x/bank/types"
+ stakingtypes "cosmossdk.io/x/staking/types"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client"
@@ -21,15 +23,12 @@ import (
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
cmttypes "github.com/cometbft/cometbft/types"
"github.com/cosmos/ibc-go/v9/modules/core/keeper"
"github.com/cosmos/ibc-go/v9/testing/simapp"
- ibctestingtypes "github.com/cosmos/ibc-go/v9/testing/types"
)
var DefaultTestingAppInit = SetupTestingApp
@@ -39,7 +38,6 @@ type TestingApp interface {
// ibc-go additions
GetBaseApp() *baseapp.BaseApp
- GetStakingKeeper() ibctestingtypes.StakingKeeper
GetIBCKeeper() *keeper.Keeper
GetTxConfig() client.TxConfig
@@ -53,7 +51,7 @@ type TestingApp interface {
func SetupTestingApp() (TestingApp, map[string]json.RawMessage) {
db := dbm.NewMemDB()
- app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{})
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, make(simtestutil.AppOptionsMap))
return app, app.DefaultGenesis()
}
@@ -125,7 +123,7 @@ func SetupWithGenesisValSet(tb testing.TB, valSet *cmttypes.ValidatorSet, genAcc
// init chain will set the validator set and initialize the genesis accounts
_, err = app.InitChain(
- &abci.RequestInitChain{
+ &abci.InitChainRequest{
ChainId: chainID,
Validators: []abci.ValidatorUpdate{},
AppStateBytes: stateBytes,
diff --git a/testing/types/expected_keepers.go b/testing/types/expected_keepers.go
deleted file mode 100644
index e0d3af4b878..00000000000
--- a/testing/types/expected_keepers.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package types
-
-import (
- "context"
-
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-)
-
-// StakingKeeper defines the expected staking keeper interface used in the
-// IBC testing package
-type StakingKeeper interface {
- GetHistoricalInfo(ctx context.Context, height int64) (stakingtypes.HistoricalInfo, error)
-}
diff --git a/testing/utils.go b/testing/utils.go
index 861bb54e1a6..0e6dc5db2d5 100644
--- a/testing/utils.go
+++ b/testing/utils.go
@@ -9,11 +9,12 @@ import (
"github.com/stretchr/testify/require"
+ govtypesv1 "cosmossdk.io/x/gov/types/v1"
+
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
- govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
- abci "github.com/cometbft/cometbft/abci/types"
+ abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
cmttypes "github.com/cometbft/cometbft/types"
)