upgrade to ethermint v0.21.0 #99
82
.github/workflows/codeql-analysis.yml
vendored
82
.github/workflows/codeql-analysis.yml
vendored
@ -13,10 +13,10 @@ name: "CodeQL"
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ main ]
|
branches: [main]
|
||||||
pull_request:
|
pull_request:
|
||||||
# The branches below must be a subset of the branches above
|
# The branches below must be a subset of the branches above
|
||||||
branches: [ main ]
|
branches: [main]
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '37 21 * * 4'
|
- cron: '37 21 * * 4'
|
||||||
|
|
||||||
@ -32,53 +32,53 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
language: [ 'go' ]
|
language: ['go', 'javascript', 'python']
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||||
# Learn more:
|
# Learn more:
|
||||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- uses: technote-space/get-diff-action@v6.1.2
|
- uses: technote-space/get-diff-action@v6.1.2
|
||||||
with:
|
with:
|
||||||
PATTERNS: |
|
PATTERNS: |
|
||||||
**/**.sol
|
**/**.go
|
||||||
**/**.go
|
**/**.ts
|
||||||
**/**.ts
|
**/**.js
|
||||||
**/**.js
|
**/**.py
|
||||||
go.mod
|
go.mod
|
||||||
go.sum
|
go.sum
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v2
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
# By default, queries listed here will override any specified in a config file.
|
# By default, queries listed here will override any specified in a config file.
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
queries: crypto-com/cosmos-sdk-codeql@main,security-and-quality
|
queries: crypto-com/cosmos-sdk-codeql@main,security-and-quality
|
||||||
if: env.GIT_DIFF
|
if: env.GIT_DIFF
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
|
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v2
|
uses: github/codeql-action/autobuild@v2
|
||||||
if: env.GIT_DIFF
|
if: env.GIT_DIFF
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||||
# and modify them (or add more) to build your code if your project
|
# and modify them (or add more) to build your code if your project
|
||||||
# uses a compiled language
|
# uses a compiled language
|
||||||
|
|
||||||
#- run: |
|
# - run: |
|
||||||
# make bootstrap
|
# make bootstrap
|
||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v2
|
||||||
if: env.GIT_DIFF
|
if: env.GIT_DIFF
|
||||||
|
22
.github/workflows/lint.yml
vendored
22
.github/workflows/lint.yml
vendored
@ -33,7 +33,25 @@ jobs:
|
|||||||
github-token: ${{ secrets.github_token }}
|
github-token: ${{ secrets.github_token }}
|
||||||
# Check only if there are differences in the source code
|
# Check only if there are differences in the source code
|
||||||
if: env.GIT_DIFF
|
if: env.GIT_DIFF
|
||||||
|
markdown-lint:
|
||||||
|
name: Run markdown-lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: technote-space/get-diff-action@v6.1.2
|
||||||
|
with:
|
||||||
|
PATTERNS: |
|
||||||
|
docs/**/*.md
|
||||||
|
x/**/*.md
|
||||||
|
README.md
|
||||||
|
- uses: nosborn/github-action-markdown-cli@v3.2.0
|
||||||
|
with:
|
||||||
|
files: .
|
||||||
|
config_file: .markdownlint.yml
|
||||||
|
ignore_path: .markdownlintignore
|
||||||
|
# Check only if there are differences in the source code
|
||||||
|
if: env.GIT_DIFF
|
||||||
python-lint:
|
python-lint:
|
||||||
name: Run flake8 on python integration tests
|
name: Run flake8 on python integration tests
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -49,4 +67,4 @@ jobs:
|
|||||||
**/**.py
|
**/**.py
|
||||||
- run: |
|
- run: |
|
||||||
nix-shell -I nixpkgs=./nix -p test-env --run "make lint-py"
|
nix-shell -I nixpkgs=./nix -p test-env --run "make lint-py"
|
||||||
if: env.GIT_DIFF
|
if: env.GIT_DIFF
|
||||||
|
4
.github/workflows/proto.yml
vendored
4
.github/workflows/proto.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: bufbuild/buf-setup-action@v1.9.0
|
- uses: bufbuild/buf-setup-action@v1.12.0
|
||||||
- uses: bufbuild/buf-lint-action@v1
|
- uses: bufbuild/buf-lint-action@v1
|
||||||
with:
|
with:
|
||||||
input: "proto"
|
input: "proto"
|
||||||
@ -21,7 +21,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: bufbuild/buf-setup-action@v1.9.0
|
- uses: bufbuild/buf-setup-action@v1.12.0
|
||||||
- uses: bufbuild/buf-breaking-action@v1
|
- uses: bufbuild/buf-breaking-action@v1
|
||||||
with:
|
with:
|
||||||
input: "proto"
|
input: "proto"
|
||||||
|
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@ -7,7 +7,7 @@ jobs:
|
|||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v6
|
- uses: actions/stale@v7
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
stale-pr-message: "This pull request has been automatically marked as stale because it has not had
|
stale-pr-message: "This pull request has been automatically marked as stale because it has not had
|
||||||
|
41
.github/workflows/super-linter.yml
vendored
Normal file
41
.github/workflows/super-linter.yml
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# This workflow executes several linters on changed files based on languages used in your code base whenever
|
||||||
|
# you push a code or open a pull request.
|
||||||
|
#
|
||||||
|
# You can adjust the behavior by modifying this file.
|
||||||
|
# For more information, see:
|
||||||
|
# https://github.com/github/super-linter
|
||||||
|
---
|
||||||
|
name: Lint Code Base
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["main"]
|
||||||
|
pull_request:
|
||||||
|
branches: ["main"]
|
||||||
|
jobs:
|
||||||
|
run-lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
# Full git history is needed to get a proper list of changed files within `super-linter`
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Lint Code Base
|
||||||
|
uses: github/super-linter@v4
|
||||||
|
env:
|
||||||
|
LINTER_RULES_PATH: /
|
||||||
|
YAML_CONFIG_FILE: .yamllint
|
||||||
|
VALIDATE_ALL_CODEBASE: false
|
||||||
|
MARKDOWN_CONFIG_FILE: .markdownlint.yml
|
||||||
|
PROTOBUF_CONFIG_FILE: .protolint.yml
|
||||||
|
VALIDATE_NATURAL_LANGUAGE: false
|
||||||
|
VALIDATE_OPENAPI: false
|
||||||
|
VALIDATE_JSCPD: false
|
||||||
|
VALIDATE_GO: false
|
||||||
|
VALIDATE_JAVASCRIPT_STANDARD: false
|
||||||
|
VALIDATE_GITLEAKS: false
|
||||||
|
VALIDATE_DOCKERFILE_HADOLINT: false
|
||||||
|
DEFAULT_BRANCH: "main"
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
52
.github/workflows/test.yml
vendored
52
.github/workflows/test.yml
vendored
@ -36,7 +36,8 @@ jobs:
|
|||||||
- uses: codecov/codecov-action@v3
|
- uses: codecov/codecov-action@v3
|
||||||
with:
|
with:
|
||||||
file: ./coverage.txt
|
file: ./coverage.txt
|
||||||
fail_ci_if_error: false
|
fail_ci_if_error: true
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
if: env.GIT_DIFF
|
if: env.GIT_DIFF
|
||||||
|
|
||||||
test-importer:
|
test-importer:
|
||||||
@ -62,7 +63,7 @@ jobs:
|
|||||||
|
|
||||||
test-rpc:
|
test-rpc:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 15
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-go@v3
|
- uses: actions/setup-go@v3
|
||||||
with:
|
with:
|
||||||
@ -127,50 +128,3 @@ jobs:
|
|||||||
working-directory: tests/sdk_tests
|
working-directory: tests/sdk_tests
|
||||||
if: always()
|
if: always()
|
||||||
run: docker compose -f docker-compose-nameservice.yml down
|
run: docker compose -f docker-compose-nameservice.yml down
|
||||||
|
|
||||||
# integration_tests:
|
|
||||||
# runs-on: ubuntu-latest
|
|
||||||
# steps:
|
|
||||||
# - uses: actions/checkout@v2
|
|
||||||
# - uses: cachix/install-nix-action@v18
|
|
||||||
# - uses: cachix/cachix-action@v12
|
|
||||||
# with:
|
|
||||||
# name: ethermint
|
|
||||||
# signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
|
|
||||||
# - uses: technote-space/get-diff-action@v6.1.2
|
|
||||||
# with:
|
|
||||||
# PATTERNS: |
|
|
||||||
# **/**.sol
|
|
||||||
# **/**.go
|
|
||||||
# go.mod
|
|
||||||
# go.sum
|
|
||||||
# tests/integration_tests/**
|
|
||||||
# - name: Run integration tests
|
|
||||||
# run: make run-integration-tests
|
|
||||||
# if: env.GIT_DIFF
|
|
||||||
# - name: 'Tar debug files'
|
|
||||||
# if: failure()
|
|
||||||
# run: tar cfz debug_files.tar.gz -C /tmp/pytest-of-runner .
|
|
||||||
# - uses: actions/upload-artifact@v3
|
|
||||||
# if: failure()
|
|
||||||
# with:
|
|
||||||
# name: debug-files
|
|
||||||
# path: debug_files.tar.gz
|
|
||||||
# if-no-files-found: ignore
|
|
||||||
|
|
||||||
# upload-cache:
|
|
||||||
# if: github.event_name == 'push'
|
|
||||||
# needs: ["integration_tests"]
|
|
||||||
# strategy:
|
|
||||||
# matrix:
|
|
||||||
# os: [macos-latest]
|
|
||||||
# runs-on: ${{ matrix.os }}
|
|
||||||
# steps:
|
|
||||||
# - uses: actions/checkout@v2
|
|
||||||
# - uses: cachix/install-nix-action@v18
|
|
||||||
# - uses: cachix/cachix-action@v12
|
|
||||||
# with:
|
|
||||||
# name: ethermint
|
|
||||||
# signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
|
|
||||||
# - name: 'instantiate integration test env'
|
|
||||||
# run: nix-store -r "$(nix-instantiate tests/integration_tests/shell.nix)"
|
|
||||||
|
@ -19,6 +19,9 @@ test/
|
|||||||
tests/
|
tests/
|
||||||
*_test.go
|
*_test.go
|
||||||
|
|
||||||
|
# false positive
|
||||||
|
testutil/network/network.go
|
||||||
|
|
||||||
# Semgrep rules folder
|
# Semgrep rules folder
|
||||||
.semgrep
|
.semgrep
|
||||||
|
|
||||||
|
55
CHANGELOG.md
55
CHANGELOG.md
@ -36,17 +36,39 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [v0.21.0] - 2023-01-26
|
||||||
|
|
||||||
|
### State Machine Breaking
|
||||||
|
|
||||||
|
* (feemarket) [#1509](https://github.com/evmos/ethermint/pull/1509) Deprecate usage of x/params in x/feemarket
|
||||||
|
* (evm) [#1472](https://github.com/evmos/ethermint/pull/1472) Deprecate usage of x/params in x/evm
|
||||||
|
* (deps) [#1575](https://github.com/evmos/ethermint/pull/1575) Bump ibc-go to [`v6.1.0`](https://github.com/cosmos/ibc-go/releases/tag/v6.1.0)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* (cli) [#1615](https://github.com/evmos/ethermint/pull/1615) Support customize db opener in `StartCmd`.
|
||||||
|
* (evm) [#1582](https://github.com/evmos/ethermint/pull/1582) Cleanup `evm` files
|
||||||
|
* (evm) [#1544](https://github.com/evmos/ethermint/pull/1544) Migrate deprecated event emitting to new `TypedEvent`
|
||||||
|
* (deps) [#1532](https://github.com/evmos/ethermint/pull/1532) Upgrade Go-Ethereum version to [`v1.10.26`](https://github.com/ethereum/go-ethereum/releases/tag/v1.10.26).
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
* (upgrade) [#1617](https://github.com/evmos/ethermint/pull/1617) Refactor `evm` module's parameters to store them under a single store key
|
||||||
|
* (rpc) [#1600](https://github.com/evmos/ethermint/pull/1600) Revert changes from `TypedEvents`
|
||||||
|
* (rpc) [#1613](https://github.com/evmos/ethermint/pull/1613) Change the default json-rpc listen address to localhost.
|
||||||
|
* (rpc) [#1611](https://github.com/evmos/ethermint/pull/1611) Add missing next fee in fee history, fix wrong oldestBlock and align earliest input as ethereum.
|
||||||
|
* (proto) [#1586](https://github.com/evmos/ethermint/pull/1586) Avoid duplicate register proto type in `evm` & `feemarket`
|
||||||
|
|
||||||
## [v0.20.0] - 2022-12-28
|
## [v0.20.0] - 2022-12-28
|
||||||
|
|
||||||
### State Machine Breaking
|
### State Machine Breaking
|
||||||
|
|
||||||
* (deps) [#1564](https://github.com/evmos/ethermint/pull/1564) Bump ibc-go to [`v5.2.0`](https://github.com/cosmos/ibc-go/releases/tag/v5.2.0)
|
* (deps) [#1564](https://github.com/evmos/ethermint/pull/1564) Bump ibc-go to [`v5.2.0`](https://github.com/cosmos/ibc-go/releases/tag/v5.2.0)
|
||||||
* (evm) [\#1272](https://github.com/evmos/ethermint/pull/1272) Implement modular interface for the EVM.
|
* (evm) [#1272](https://github.com/evmos/ethermint/pull/1272) Implement modular interface for the EVM.
|
||||||
* (deps) [#1551](https://github.com/evmos/ethermint/pull/1551) Upgrade Cosmos SDK to [`v0.46.7`](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.46.7).
|
* (deps) [#1551](https://github.com/evmos/ethermint/pull/1551) Upgrade Cosmos SDK to [`v0.46.7`](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.46.7).
|
||||||
* (feemarket) [#1194](https://github.com/evmos/ethermint/pull/1194) Apply feemarket to native cosmos tx.
|
* (feemarket) [#1194](https://github.com/evmos/ethermint/pull/1194) Apply feemarket to native cosmos tx.
|
||||||
* (eth) [#1346](https://github.com/evmos/ethermint/pull/1346) Added support for `sdk.Dec` and `ed25519` type on eip712.
|
* (eth) [#1346](https://github.com/evmos/ethermint/pull/1346) Added support for `sdk.Dec` and `ed25519` type on eip712.
|
||||||
* (evm) [#1452](https://github.com/evmos/ethermint/pull/1452) Simplify Gas Math in `ApplyTransaction`.
|
* (evm) [#1452](https://github.com/evmos/ethermint/pull/1452) Simplify Gas Math in `ApplyTransaction`.
|
||||||
* (eth) [#1430](https://github.com/evmos/ethermint/pull/1430) Added support for array of type `Any` on eip712.
|
* (eth) [#1430](https://github.com/evmos/ethermint/pull/1430) Added support for array of type `Any` on eip712.
|
||||||
* (ante) [1460](https://github.com/evmos/ethermint/pull/1460) Add KV Gas config on ethereum Txs.
|
* (ante) [1460](https://github.com/evmos/ethermint/pull/1460) Add KV Gas config on ethereum Txs.
|
||||||
* (eth) [#1459](https://github.com/evmos/ethermint/pull/1459) Added support for messages with optional types omitted on eip712.
|
* (eth) [#1459](https://github.com/evmos/ethermint/pull/1459) Added support for messages with optional types omitted on eip712.
|
||||||
* (geth) [#1413](https://github.com/evmos/ethermint/pull/1413) Update go-ethereum version to [`v1.10.26`](https://github.com/ethereum/go-ethereum/releases/tag/v1.10.26).
|
* (geth) [#1413](https://github.com/evmos/ethermint/pull/1413) Update go-ethereum version to [`v1.10.26`](https://github.com/ethereum/go-ethereum/releases/tag/v1.10.26).
|
||||||
@ -70,9 +92,9 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
|||||||
* (evm) [#1499](https://github.com/evmos/ethermint/pull/1499) Add Shanghai and Cancun block
|
* (evm) [#1499](https://github.com/evmos/ethermint/pull/1499) Add Shanghai and Cancun block
|
||||||
* (ante) [#1455](https://github.com/evmos/ethermint/pull/1455) Refactor `AnteHandler` logic
|
* (ante) [#1455](https://github.com/evmos/ethermint/pull/1455) Refactor `AnteHandler` logic
|
||||||
* (evm) [#1444](https://github.com/evmos/ethermint/pull/1444) Improve performance of `eth_estimateGas`
|
* (evm) [#1444](https://github.com/evmos/ethermint/pull/1444) Improve performance of `eth_estimateGas`
|
||||||
* (ante) [\#1388](https://github.com/evmos/ethermint/pull/1388) Optimize AnteHandler gas consumption
|
* (ante) [#1388](https://github.com/evmos/ethermint/pull/1388) Optimize AnteHandler gas consumption
|
||||||
* (lint) [#1298](https://github.com/evmos/ethermint/pull/1298) 150 character line length limit, `gofumpt`, and linting
|
* (lint) [#1298](https://github.com/evmos/ethermint/pull/1298) 150 character line length limit, `gofumpt`, and linting
|
||||||
* (feemarket) [\#1165](https://github.com/evmos/ethermint/pull/1165) Add hint in specs about different gas terminology in Cosmos and Ethereum.
|
* (feemarket) [#1165](https://github.com/evmos/ethermint/pull/1165) Add hint in specs about different gas terminology in Cosmos and Ethereum.
|
||||||
* (cli) [#1226](https://github.com/evmos/ethermint/pull/1226) Add custom app db backend flag.
|
* (cli) [#1226](https://github.com/evmos/ethermint/pull/1226) Add custom app db backend flag.
|
||||||
* (ante) [#1289](https://github.com/evmos/ethermint/pull/1289) Change the fallback tx priority mechanism to be based on gas price.
|
* (ante) [#1289](https://github.com/evmos/ethermint/pull/1289) Change the fallback tx priority mechanism to be based on gas price.
|
||||||
* (test) [#1311](https://github.com/evmos/ethermint/pull/1311) Add integration test for the `rollback` cmd
|
* (test) [#1311](https://github.com/evmos/ethermint/pull/1311) Add integration test for the `rollback` cmd
|
||||||
@ -85,32 +107,9 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
|||||||
* (test) [#1396](https://github.com/evmos/ethermint/pull/1396) Increase test coverage for the EVM module `keeper`
|
* (test) [#1396](https://github.com/evmos/ethermint/pull/1396) Increase test coverage for the EVM module `keeper`
|
||||||
* (ante) [#1397](https://github.com/evmos/ethermint/pull/1397) Refactor EIP-712 signature verification to support EIP-712 multi-signing.
|
* (ante) [#1397](https://github.com/evmos/ethermint/pull/1397) Refactor EIP-712 signature verification to support EIP-712 multi-signing.
|
||||||
* (deps) [#1416](https://github.com/evmos/ethermint/pull/1416) Bump Go version to `1.19`
|
* (deps) [#1416](https://github.com/evmos/ethermint/pull/1416) Bump Go version to `1.19`
|
||||||
* (cmd) [\#1417](https://github.com/evmos/ethermint/pull/1417) Apply Google CLI Syntax for required and optional args.
|
* (cmd) [#1417](https://github.com/evmos/ethermint/pull/1417) Apply Google CLI Syntax for required and optional args.
|
||||||
* (deps) [#1456](https://github.com/evmos/ethermint/pull/1456) Migrate errors-related functionality from "github.com/cosmos/cosmos-sdk/types/errors" (deprecated) to "cosmossdk.io/errors"
|
* (deps) [#1456](https://github.com/evmos/ethermint/pull/1456) Migrate errors-related functionality from "github.com/cosmos/cosmos-sdk/types/errors" (deprecated) to "cosmossdk.io/errors"
|
||||||
|
|
||||||
### State Machine Breaking
|
|
||||||
|
|
||||||
* (deps) [#1361](https://github.com/evmos/ethermint/pull/1361) Bump ibc-go to [`v5.0.0`](https://github.com/cosmos/ibc-go/releases/tag/v5.0.0)
|
|
||||||
* (evm) [\#1272](https://github.com/evmos/ethermint/pull/1272) Implement modular interface for the EVM.
|
|
||||||
* (deps) [#1168](https://github.com/evmos/ethermint/pull/1168) Upgrade Cosmos SDK to `v0.46`.
|
|
||||||
* (feemarket) [#1194](https://github.com/evmos/ethermint/pull/1194) Apply feemarket to native cosmos tx.
|
|
||||||
* (eth) [#1346](https://github.com/evmos/ethermint/pull/1346) Added support for `sdk.Dec` and `ed25519` type on eip712.
|
|
||||||
|
|
||||||
### API Breaking
|
|
||||||
|
|
||||||
* (ante) [#1214](https://github.com/evmos/ethermint/pull/1214) Set mempool priority to EVM transactions.
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
* (lint) [#1298](https://github.com/evmos/ethermint/pull/1298) 150 character line length limit, `gofumpt`, and linting
|
|
||||||
* (feemarket) [\#1165](https://github.com/evmos/ethermint/pull/1165) Add hint in specs about different gas terminology in Cosmos and Ethereum.
|
|
||||||
* (cli) [#1226](https://github.com/evmos/ethermint/pull/1226) Add custom app db backend flag.
|
|
||||||
* (ante) [#1289](https://github.com/evmos/ethermint/pull/1289) Change the fallback tx priority mechanism to be based on gas price.
|
|
||||||
* (test) [#1311](https://github.com/evmos/ethermint/pull/1311) Add integration test for the `rollback` cmd
|
|
||||||
* (ledger) [#1277](https://github.com/evmos/ethermint/pull/1277) Add Ledger preprocessing transaction hook for EIP-712-signed Cosmos payloads.
|
|
||||||
* (rpc) [#1296](https://github.com/evmos/ethermint/pull/1296) Add RPC Backend unit tests.
|
|
||||||
* (rpc) [#1352](https://github.com/evmos/ethermint/pull/1352) Make the grpc queries run concurrently, don't block the consensus state machine.
|
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* (rpc) [#1561](https://github.com/evmos/ethermint/pull/1561) Fix call to `NewMnemonic` in `personal_newAccount`
|
* (rpc) [#1561](https://github.com/evmos/ethermint/pull/1561) Fix call to `NewMnemonic` in `personal_newAccount`
|
||||||
|
@ -17,7 +17,7 @@ COPY . .
|
|||||||
RUN make build
|
RUN make build
|
||||||
|
|
||||||
# Final image
|
# Final image
|
||||||
FROM alpine:3.17.0
|
FROM alpine:3.17.1
|
||||||
|
|
||||||
# Install ca-certificates
|
# Install ca-certificates
|
||||||
RUN apk add --update ca-certificates jq curl
|
RUN apk add --update ca-certificates jq curl
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
![banner](docs/laconic.jpeg)
|
![banner](docs/laconic.jpeg)
|
||||||
|
|
||||||
|
|
||||||
The Source of Proof. Laconic is a next generation data availability & verifiability layer with cryptographic proofs, powering internet-scale Web3 applications, built on Proof-of-Stake with fast-finality using the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/) which runs on top of [Tendermint Core](https://github.com/tendermint/tendermint) consensus engine.
|
The Source of Proof. Laconic is a next generation data availability & verifiability layer with cryptographic proofs, powering internet-scale Web3 applications, built on Proof-of-Stake with fast-finality using the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/) which runs on top of [Tendermint Core](https://github.com/tendermint/tendermint) consensus engine.
|
||||||
|
|
||||||
**Note**: Requires [Go 1.19+](https://golang.org/dl/)
|
**Note**: Requires [Go 1.19+](https://golang.org/dl/)
|
||||||
|
62
SECURITY.md
Normal file
62
SECURITY.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Security
|
||||||
|
|
||||||
|
As part of our vulnerability disclosure policy, we operate a security vulnerability program through [Immunefi](https://immunefi.com/). This document serves as a complementary guideline for reporting vulnerabilities and how the disclosure process is managed. Please refer to the official Evmos [bug bounty program](https://immunefi.com/bounty/evmos/) for up-to-date information.
|
||||||
|
|
||||||
|
## Guidelines
|
||||||
|
|
||||||
|
We require that all researchers:
|
||||||
|
|
||||||
|
- Use the Evmos [bug bounty program](https://immunefi.com/bounty/evmos/) on Immunefi to disclose all vulnerabilities, and avoid posting vulnerability information in public places, including GitHub, Discord, Telegram, Twitter or other non-private channels.
|
||||||
|
- Make every effort to avoid privacy violations, degradation of user experience, disruption to production systems, and destruction of data.
|
||||||
|
- Keep any information about vulnerabilities that you’ve discovered confidential between yourself and the engineering team until the issue has been resolved and disclosed
|
||||||
|
- Avoid posting personally identifiable information, privately or publicly
|
||||||
|
|
||||||
|
If you follow these guidelines when reporting an issue to us, we commit to:
|
||||||
|
|
||||||
|
- Not pursue or support any legal action related to your research on this vulnerability
|
||||||
|
- Work with you to understand, resolve and ultimately disclose the issue in a timely fashion
|
||||||
|
|
||||||
|
## Disclosure Process
|
||||||
|
|
||||||
|
Evmos uses the following disclosure process:
|
||||||
|
|
||||||
|
1. Once a security report is received via the Immunefi Bug Bounty program, the team works to verify the issue and confirm its severity level using [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) or [Immunefi’s Vulnerability Severity Classification System v2.2](https://immunefi.com/immunefi-vulnerability-severity-classification-system-v2-2/).
|
||||||
|
1. Two people from the affected project will review, replicate and acknowledge the report within 48-96 hours of the alert according to the table below:
|
||||||
|
| Security Level | Hours to First Response (ACK) from Escalation |
|
||||||
|
| -------------------- | --------------------------------------------- |
|
||||||
|
| Critical | 48 |
|
||||||
|
| High | 96 |
|
||||||
|
| Medium | 96 |
|
||||||
|
| Low or Informational | 96 |
|
||||||
|
| None | 96 |
|
||||||
|
|
||||||
|
2. If the report is not applicable or reproducible, the Security Lead (or Security Secondary) will revert to the reporter to request more info or close the report.
|
||||||
|
3. The report is confirmed by the Security Lead to the reporter.
|
||||||
|
2. The team determines the vulnerability’s potential impact on Evmos.
|
||||||
|
1. Vulnerabilities with `Informational` and `Low` categorization will result in creating a public issue.
|
||||||
|
2. Vulnerabilities with `Medium` categorization will result in the creation of an internal ticket and patch of the code.
|
||||||
|
3. Vulnerabilities with `High` or `Critical` will result in the [creation of a new Security Advisory](https://docs.github.com/en/code-security/repository-security-advisories/creating-a-repository-security-advisory)
|
||||||
|
|
||||||
|
Once the vulnerability severity is defined, the following steps apply:
|
||||||
|
|
||||||
|
- For `High` and `Critical`:
|
||||||
|
1. Patches are prepared for supported releases of Evmos in a [temporary private fork](https://docs.github.com/en/code-security/repository-security-advisories/collaborating-in-a-temporary-private-fork-to-resolve-a-repository-security-vulnerability) of the repository.
|
||||||
|
2. Only relevant parties will be notified about an upcoming upgrade. These being validators, the core developer team, and users directly affected by the vulnerability.
|
||||||
|
3. 24 hours following this notification, relevant releases with the patch will be made public.
|
||||||
|
4. The nodes and validators update their Evmos and Ethermint dependencies to use these releases.
|
||||||
|
5. A week (or less) after the security vulnerability has been patched on Evmos, we will disclose that the mentioned release contained a security fix.
|
||||||
|
6. After an additional 2 weeks, we will publish a public announcement of the vulnerability. We also publish a security Advisory on GitHub and publish a [CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)
|
||||||
|
|
||||||
|
- For `Informational` , `Low` and `Medium` severities:
|
||||||
|
1. `Medium` and `Low` severity bug reports are included in a public issue and will be incorporated in the current sprint and patched in the next release. `Informational` reports are additionally categorized as with low or medium priority and might not be included in the next release.
|
||||||
|
2. One week after the releases go out, we will publish a post with further details on the vulnerability as well as our response to it.
|
||||||
|
|
||||||
|
This process can take some time. Every effort will be made to handle the bug in as timely a manner as possible, however, it's important that we follow the process described above to ensure that disclosures are handled consistently and to keep Ethermint and its downstream dependent projects, including but not limited to Evmos, as secure as possible.
|
||||||
|
|
||||||
|
### Payment Process
|
||||||
|
|
||||||
|
The payment process will be executed according to Evmos’s Immunefi Bug Bounty program Rules.
|
||||||
|
|
||||||
|
### Contact
|
||||||
|
|
||||||
|
The Evmos Security Team is constantly being monitored. If you need to reach out to the team directly, please reach out via email: [security@evmos.org](mailto:security@evmos.org)
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
/*
|
|
||||||
Package ante defines the SDK auth module's AnteHandler as well as an internal
|
|
||||||
AnteHandler for an Ethereum transaction (i.e MsgEthereumTx).
|
|
||||||
|
|
||||||
During CheckTx, the transaction is passed through a series of
|
|
||||||
pre-message execution validation checks such as signature and account
|
|
||||||
verification in addition to minimum fees being checked. Otherwise, during
|
|
||||||
DeliverTx, the transaction is simply passed to the EVM which will also
|
|
||||||
perform the same series of checks. The distinction is made in CheckTx to
|
|
||||||
prevent spam and DoS attacks.
|
|
||||||
*/
|
|
||||||
package ante
|
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -13,7 +28,7 @@ import (
|
|||||||
authante "github.com/cosmos/cosmos-sdk/x/auth/ante"
|
authante "github.com/cosmos/cosmos-sdk/x/auth/ante"
|
||||||
"github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx"
|
"github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx"
|
||||||
authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
|
authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
|
||||||
ibcante "github.com/cosmos/ibc-go/v5/modules/core/ante"
|
ibcante "github.com/cosmos/ibc-go/v6/modules/core/ante"
|
||||||
|
|
||||||
"github.com/cerc-io/laconicd/crypto/ethsecp256k1"
|
"github.com/cerc-io/laconicd/crypto/ethsecp256k1"
|
||||||
"github.com/cerc-io/laconicd/ethereum/eip712"
|
"github.com/cerc-io/laconicd/ethereum/eip712"
|
||||||
|
@ -144,12 +144,13 @@ func (egcd EthGasConsumeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simula
|
|||||||
// that is not bubbled up. Thus, the Tx never runs on DeliverMode
|
// that is not bubbled up. Thus, the Tx never runs on DeliverMode
|
||||||
// Error: "gas wanted -1 is negative"
|
// Error: "gas wanted -1 is negative"
|
||||||
// For more information, see issue #1554
|
// For more information, see issue #1554
|
||||||
// https://github.com/cerc-io/laconicd/issues/1554
|
// https://github.com/evmos/ethermint/issues/1554
|
||||||
newCtx := ctx.WithGasMeter(ethermint.NewInfiniteGasMeterWithLimit(gasWanted))
|
newCtx := ctx.WithGasMeter(ethermint.NewInfiniteGasMeterWithLimit(gasWanted))
|
||||||
return next(newCtx, tx, simulate)
|
return next(newCtx, tx, simulate)
|
||||||
}
|
}
|
||||||
|
|
||||||
chainCfg := egcd.evmKeeper.GetChainConfig(ctx)
|
evmParams := egcd.evmKeeper.GetParams(ctx)
|
||||||
|
chainCfg := evmParams.GetChainConfig()
|
||||||
ethCfg := chainCfg.EthereumConfig(egcd.evmKeeper.ChainID())
|
ethCfg := chainCfg.EthereumConfig(egcd.evmKeeper.ChainID())
|
||||||
|
|
||||||
blockHeight := big.NewInt(ctx.BlockHeight())
|
blockHeight := big.NewInt(ctx.BlockHeight())
|
||||||
@ -183,7 +184,7 @@ func (egcd EthGasConsumeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simula
|
|||||||
gasWanted += txData.GetGas()
|
gasWanted += txData.GetGas()
|
||||||
}
|
}
|
||||||
|
|
||||||
evmDenom := egcd.evmKeeper.GetEVMDenom(ctx)
|
evmDenom := evmParams.GetEvmDenom()
|
||||||
|
|
||||||
fees, err := keeper.VerifyFee(txData, evmDenom, baseFee, homestead, istanbul, ctx.IsCheckTx())
|
fees, err := keeper.VerifyFee(txData, evmDenom, baseFee, homestead, istanbul, ctx.IsCheckTx())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -294,7 +295,7 @@ func (ctd CanTransferDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: pass in an empty coinbase address and nil tracer as we don't need them for the check below
|
// NOTE: pass in an empty coinbase address and nil tracer as we don't need them for the check below
|
||||||
cfg := &evmtypes.EVMConfig{
|
cfg := &statedb.EVMConfig{
|
||||||
ChainConfig: ethCfg,
|
ChainConfig: ethCfg,
|
||||||
Params: params,
|
Params: params,
|
||||||
CoinBase: common.Address{},
|
CoinBase: common.Address{},
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -27,7 +42,8 @@ func NewGasWantedDecorator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gwd GasWantedDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
|
func (gwd GasWantedDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
|
||||||
chainCfg := gwd.evmKeeper.GetChainConfig(ctx)
|
evmParams := gwd.evmKeeper.GetParams(ctx)
|
||||||
|
chainCfg := evmParams.GetChainConfig()
|
||||||
ethCfg := chainCfg.EthereumConfig(gwd.evmKeeper.ChainID())
|
ethCfg := chainCfg.EthereumConfig(gwd.evmKeeper.ChainID())
|
||||||
|
|
||||||
blockHeight := big.NewInt(ctx.BlockHeight())
|
blockHeight := big.NewInt(ctx.BlockHeight())
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -73,8 +88,8 @@ func (mpd MinGasPriceDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate
|
|||||||
if minGasPrice.IsZero() || simulate {
|
if minGasPrice.IsZero() || simulate {
|
||||||
return next(ctx, tx, simulate)
|
return next(ctx, tx, simulate)
|
||||||
}
|
}
|
||||||
|
evmParams := mpd.evmKeeper.GetParams(ctx)
|
||||||
evmDenom := mpd.evmKeeper.GetEVMDenom(ctx)
|
evmDenom := evmParams.GetEvmDenom()
|
||||||
minGasPrices := sdk.DecCoins{
|
minGasPrices := sdk.DecCoins{
|
||||||
{
|
{
|
||||||
Denom: evmDenom,
|
Denom: evmDenom,
|
||||||
@ -118,7 +133,8 @@ func (empd EthMinGasPriceDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul
|
|||||||
return next(ctx, tx, simulate)
|
return next(ctx, tx, simulate)
|
||||||
}
|
}
|
||||||
|
|
||||||
chainCfg := empd.evmKeeper.GetChainConfig(ctx)
|
evmParams := empd.evmKeeper.GetParams(ctx)
|
||||||
|
chainCfg := evmParams.GetChainConfig()
|
||||||
ethCfg := chainCfg.EthereumConfig(empd.evmKeeper.ChainID())
|
ethCfg := chainCfg.EthereumConfig(empd.evmKeeper.ChainID())
|
||||||
baseFee := empd.evmKeeper.GetBaseFee(ctx, ethCfg)
|
baseFee := empd.evmKeeper.GetBaseFee(ctx, ethCfg)
|
||||||
|
|
||||||
@ -176,7 +192,8 @@ func (mfd EthMempoolFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulat
|
|||||||
if !ctx.IsCheckTx() || simulate {
|
if !ctx.IsCheckTx() || simulate {
|
||||||
return next(ctx, tx, simulate)
|
return next(ctx, tx, simulate)
|
||||||
}
|
}
|
||||||
chainCfg := mfd.evmKeeper.GetChainConfig(ctx)
|
evmParams := mfd.evmKeeper.GetParams(ctx)
|
||||||
|
chainCfg := evmParams.GetChainConfig()
|
||||||
ethCfg := chainCfg.EthereumConfig(mfd.evmKeeper.ChainID())
|
ethCfg := chainCfg.EthereumConfig(mfd.evmKeeper.ChainID())
|
||||||
|
|
||||||
baseFee := mfd.evmKeeper.GetBaseFee(ctx, ethCfg)
|
baseFee := mfd.evmKeeper.GetBaseFee(ctx, ethCfg)
|
||||||
@ -185,7 +202,7 @@ func (mfd EthMempoolFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulat
|
|||||||
return next(ctx, tx, simulate)
|
return next(ctx, tx, simulate)
|
||||||
}
|
}
|
||||||
|
|
||||||
evmDenom := mfd.evmKeeper.GetEVMDenom(ctx)
|
evmDenom := evmParams.GetEvmDenom()
|
||||||
minGasPrice := ctx.MinGasPrices().AmountOf(evmDenom)
|
minGasPrice := ctx.MinGasPrices().AmountOf(evmDenom)
|
||||||
|
|
||||||
for _, msg := range tx.GetMsgs() {
|
for _, msg := range tx.GetMsgs() {
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -9,8 +24,8 @@ import (
|
|||||||
authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
|
authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
|
||||||
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
||||||
|
|
||||||
ibcante "github.com/cosmos/ibc-go/v5/modules/core/ante"
|
ibcante "github.com/cosmos/ibc-go/v6/modules/core/ante"
|
||||||
ibckeeper "github.com/cosmos/ibc-go/v5/modules/core/keeper"
|
ibckeeper "github.com/cosmos/ibc-go/v6/modules/core/keeper"
|
||||||
|
|
||||||
evmtypes "github.com/cerc-io/laconicd/x/evm/types"
|
evmtypes "github.com/cerc-io/laconicd/x/evm/types"
|
||||||
)
|
)
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -9,6 +24,7 @@ import (
|
|||||||
feemarkettypes "github.com/cerc-io/laconicd/x/feemarket/types"
|
feemarkettypes "github.com/cerc-io/laconicd/x/feemarket/types"
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
tx "github.com/cosmos/cosmos-sdk/types/tx"
|
tx "github.com/cosmos/cosmos-sdk/types/tx"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
"github.com/ethereum/go-ethereum/core/vm"
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
@ -27,16 +43,12 @@ type EVMKeeper interface {
|
|||||||
statedb.Keeper
|
statedb.Keeper
|
||||||
DynamicFeeEVMKeeper
|
DynamicFeeEVMKeeper
|
||||||
|
|
||||||
NewEVM(ctx sdk.Context, msg core.Message, cfg *evmtypes.EVMConfig, tracer vm.EVMLogger, stateDB vm.StateDB) evm.EVM
|
NewEVM(ctx sdk.Context, msg core.Message, cfg *statedb.EVMConfig, tracer vm.EVMLogger, stateDB vm.StateDB) evm.EVM
|
||||||
DeductTxCostsFromUserBalance(ctx sdk.Context, fees sdk.Coins, from common.Address) error
|
DeductTxCostsFromUserBalance(ctx sdk.Context, fees sdk.Coins, from common.Address) error
|
||||||
GetBalance(ctx sdk.Context, addr common.Address) *big.Int
|
GetBalance(ctx sdk.Context, addr common.Address) *big.Int
|
||||||
ResetTransientGasUsed(ctx sdk.Context)
|
ResetTransientGasUsed(ctx sdk.Context)
|
||||||
GetTxIndexTransient(ctx sdk.Context) uint64
|
GetTxIndexTransient(ctx sdk.Context) uint64
|
||||||
GetChainConfig(ctx sdk.Context) evmtypes.ChainConfig
|
GetParams(ctx sdk.Context) evmtypes.Params
|
||||||
GetEVMDenom(ctx sdk.Context) string
|
|
||||||
GetEnableCreate(ctx sdk.Context) bool
|
|
||||||
GetEnableCall(ctx sdk.Context) bool
|
|
||||||
GetAllowUnprotectedTxs(ctx sdk.Context) bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type protoTxProvider interface {
|
type protoTxProvider interface {
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -137,13 +152,14 @@ func (vbd EthValidateBasicDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simu
|
|||||||
txFee := sdk.Coins{}
|
txFee := sdk.Coins{}
|
||||||
txGasLimit := uint64(0)
|
txGasLimit := uint64(0)
|
||||||
|
|
||||||
chainCfg := vbd.evmKeeper.GetChainConfig(ctx)
|
evmParams := vbd.evmKeeper.GetParams(ctx)
|
||||||
|
chainCfg := evmParams.GetChainConfig()
|
||||||
chainID := vbd.evmKeeper.ChainID()
|
chainID := vbd.evmKeeper.ChainID()
|
||||||
ethCfg := chainCfg.EthereumConfig(chainID)
|
ethCfg := chainCfg.EthereumConfig(chainID)
|
||||||
baseFee := vbd.evmKeeper.GetBaseFee(ctx, ethCfg)
|
baseFee := vbd.evmKeeper.GetBaseFee(ctx, ethCfg)
|
||||||
enableCreate := vbd.evmKeeper.GetEnableCreate(ctx)
|
enableCreate := evmParams.GetEnableCreate()
|
||||||
enableCall := vbd.evmKeeper.GetEnableCall(ctx)
|
enableCall := evmParams.GetEnableCall()
|
||||||
evmDenom := vbd.evmKeeper.GetEVMDenom(ctx)
|
evmDenom := evmParams.GetEvmDenom()
|
||||||
|
|
||||||
for _, msg := range protoTx.GetMsgs() {
|
for _, msg := range protoTx.GetMsgs() {
|
||||||
msgEthTx, ok := msg.(*evmtypes.MsgEthereumTx)
|
msgEthTx, ok := msg.(*evmtypes.MsgEthereumTx)
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ante
|
package ante
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -29,7 +44,8 @@ func NewEthSigVerificationDecorator(ek EVMKeeper) EthSigVerificationDecorator {
|
|||||||
// won't see the error message.
|
// won't see the error message.
|
||||||
func (esvd EthSigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
|
func (esvd EthSigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
|
||||||
chainID := esvd.evmKeeper.ChainID()
|
chainID := esvd.evmKeeper.ChainID()
|
||||||
chainCfg := esvd.evmKeeper.GetChainConfig(ctx)
|
evmParams := esvd.evmKeeper.GetParams(ctx)
|
||||||
|
chainCfg := evmParams.GetChainConfig()
|
||||||
ethCfg := chainCfg.EthereumConfig(chainID)
|
ethCfg := chainCfg.EthereumConfig(chainID)
|
||||||
blockNum := big.NewInt(ctx.BlockHeight())
|
blockNum := big.NewInt(ctx.BlockHeight())
|
||||||
signer := ethtypes.MakeSigner(ethCfg, blockNum)
|
signer := ethtypes.MakeSigner(ethCfg, blockNum)
|
||||||
@ -40,7 +56,7 @@ func (esvd EthSigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, s
|
|||||||
return ctx, errorsmod.Wrapf(errortypes.ErrUnknownRequest, "invalid message type %T, expected %T", msg, (*evmtypes.MsgEthereumTx)(nil))
|
return ctx, errorsmod.Wrapf(errortypes.ErrUnknownRequest, "invalid message type %T, expected %T", msg, (*evmtypes.MsgEthereumTx)(nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
allowUnprotectedTxs := esvd.evmKeeper.GetAllowUnprotectedTxs(ctx)
|
allowUnprotectedTxs := evmParams.GetAllowUnprotectedTxs()
|
||||||
ethTx := msgEthTx.AsTransaction()
|
ethTx := msgEthTx.AsTransaction()
|
||||||
if !allowUnprotectedTxs && !ethTx.Protected() {
|
if !allowUnprotectedTxs && !ethTx.Protected() {
|
||||||
return ctx, errorsmod.Wrapf(
|
return ctx, errorsmod.Wrapf(
|
||||||
|
51
app/app.go
51
app/app.go
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -90,15 +105,15 @@ import (
|
|||||||
upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper"
|
upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper"
|
||||||
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
|
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
|
||||||
|
|
||||||
"github.com/cosmos/ibc-go/v5/modules/apps/transfer"
|
"github.com/cosmos/ibc-go/v6/modules/apps/transfer"
|
||||||
ibctransferkeeper "github.com/cosmos/ibc-go/v5/modules/apps/transfer/keeper"
|
ibctransferkeeper "github.com/cosmos/ibc-go/v6/modules/apps/transfer/keeper"
|
||||||
ibctransfertypes "github.com/cosmos/ibc-go/v5/modules/apps/transfer/types"
|
ibctransfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types"
|
||||||
ibc "github.com/cosmos/ibc-go/v5/modules/core"
|
ibc "github.com/cosmos/ibc-go/v6/modules/core"
|
||||||
ibcclient "github.com/cosmos/ibc-go/v5/modules/core/02-client"
|
ibcclient "github.com/cosmos/ibc-go/v6/modules/core/02-client"
|
||||||
ibcclientclient "github.com/cosmos/ibc-go/v5/modules/core/02-client/client"
|
ibcclientclient "github.com/cosmos/ibc-go/v6/modules/core/02-client/client"
|
||||||
porttypes "github.com/cosmos/ibc-go/v5/modules/core/05-port/types"
|
porttypes "github.com/cosmos/ibc-go/v6/modules/core/05-port/types"
|
||||||
ibchost "github.com/cosmos/ibc-go/v5/modules/core/24-host"
|
ibchost "github.com/cosmos/ibc-go/v6/modules/core/24-host"
|
||||||
ibckeeper "github.com/cosmos/ibc-go/v5/modules/core/keeper"
|
ibckeeper "github.com/cosmos/ibc-go/v6/modules/core/keeper"
|
||||||
|
|
||||||
// unnamed import of statik for swagger UI support
|
// unnamed import of statik for swagger UI support
|
||||||
_ "github.com/cerc-io/laconicd/client/docs/statik"
|
_ "github.com/cerc-io/laconicd/client/docs/statik"
|
||||||
@ -427,14 +442,18 @@ func NewEthermintApp(
|
|||||||
tracer := cast.ToString(appOpts.Get(srvflags.EVMTracer))
|
tracer := cast.ToString(appOpts.Get(srvflags.EVMTracer))
|
||||||
|
|
||||||
// Create Ethermint keepers
|
// Create Ethermint keepers
|
||||||
|
feeMarketSs := app.GetSubspace(feemarkettypes.ModuleName)
|
||||||
app.FeeMarketKeeper = feemarketkeeper.NewKeeper(
|
app.FeeMarketKeeper = feemarketkeeper.NewKeeper(
|
||||||
appCodec, app.GetSubspace(feemarkettypes.ModuleName), keys[feemarkettypes.StoreKey], tkeys[feemarkettypes.TransientKey],
|
appCodec, authtypes.NewModuleAddress(govtypes.ModuleName),
|
||||||
|
keys[feemarkettypes.StoreKey], tkeys[feemarkettypes.TransientKey], feeMarketSs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Set authority to x/gov module account to only expect the module account to update params
|
||||||
|
evmSs := app.GetSubspace(evmtypes.ModuleName)
|
||||||
app.EvmKeeper = evmkeeper.NewKeeper(
|
app.EvmKeeper = evmkeeper.NewKeeper(
|
||||||
appCodec, keys[evmtypes.StoreKey], tkeys[evmtypes.TransientKey], app.GetSubspace(evmtypes.ModuleName),
|
appCodec, keys[evmtypes.StoreKey], tkeys[evmtypes.TransientKey], authtypes.NewModuleAddress(govtypes.ModuleName),
|
||||||
app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.FeeMarketKeeper,
|
app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.FeeMarketKeeper,
|
||||||
nil, geth.NewEVM, tracer,
|
nil, geth.NewEVM, tracer, evmSs,
|
||||||
)
|
)
|
||||||
|
|
||||||
// Create laconic keepers
|
// Create laconic keepers
|
||||||
@ -541,8 +560,8 @@ func NewEthermintApp(
|
|||||||
ibc.NewAppModule(app.IBCKeeper),
|
ibc.NewAppModule(app.IBCKeeper),
|
||||||
transferModule,
|
transferModule,
|
||||||
// Ethermint app modules
|
// Ethermint app modules
|
||||||
evm.NewAppModule(app.EvmKeeper, app.AccountKeeper),
|
feemarket.NewAppModule(app.FeeMarketKeeper, feeMarketSs),
|
||||||
feemarket.NewAppModule(app.FeeMarketKeeper),
|
evm.NewAppModule(app.EvmKeeper, app.AccountKeeper, evmSs),
|
||||||
// laconic modules
|
// laconic modules
|
||||||
auction.NewAppModule(appCodec, app.AuctionKeeper),
|
auction.NewAppModule(appCodec, app.AuctionKeeper),
|
||||||
bond.NewAppModule(appCodec, app.BondKeeper),
|
bond.NewAppModule(appCodec, app.BondKeeper),
|
||||||
@ -913,8 +932,8 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
|
|||||||
paramsKeeper.Subspace(ibctransfertypes.ModuleName)
|
paramsKeeper.Subspace(ibctransfertypes.ModuleName)
|
||||||
paramsKeeper.Subspace(ibchost.ModuleName)
|
paramsKeeper.Subspace(ibchost.ModuleName)
|
||||||
// ethermint subspaces
|
// ethermint subspaces
|
||||||
paramsKeeper.Subspace(evmtypes.ModuleName)
|
paramsKeeper.Subspace(evmtypes.ModuleName).WithKeyTable(evmtypes.ParamKeyTable()) //nolint: staticcheck
|
||||||
paramsKeeper.Subspace(feemarkettypes.ModuleName)
|
paramsKeeper.Subspace(feemarkettypes.ModuleName).WithKeyTable(feemarkettypes.ParamKeyTable())
|
||||||
// laconic subspaces
|
// laconic subspaces
|
||||||
paramsKeeper.Subspace(auctiontypes.ModuleName)
|
paramsKeeper.Subspace(auctiontypes.ModuleName)
|
||||||
paramsKeeper.Subspace(bondtypes.ModuleName)
|
paramsKeeper.Subspace(bondtypes.ModuleName)
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
15
app/utils.go
15
app/utils.go
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package debug
|
package debug
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
7
client/docs/statik/statik.go
vendored
7
client/docs/statik/statik.go
vendored
File diff suppressed because one or more lines are too long
2
client/docs/swagger-ui/swagger-ui-bundle.js
vendored
2
client/docs/swagger-ui/swagger-ui-bundle.js
vendored
@ -3048,7 +3048,7 @@
|
|||||||
})
|
})
|
||||||
}, t.getCommonExtensions = function(e) {
|
}, t.getCommonExtensions = function(e) {
|
||||||
return e.filter(function(e, t) {
|
return e.filter(function(e, t) {
|
||||||
return /^pattern|maxLength|minLength|maximum|minimum/.test(t)
|
return /^pattern$|^maxLength$|^minLength$|^maximum$|^minimum$/.test(t)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}).call(t, n(54).Buffer)
|
}).call(t, n(54).Buffer)
|
||||||
|
@ -3283,7 +3283,7 @@
|
|||||||
})
|
})
|
||||||
}, e.getCommonExtensions = function(t) {
|
}, e.getCommonExtensions = function(t) {
|
||||||
return t.filter(function(t, e) {
|
return t.filter(function(t, e) {
|
||||||
return /^pattern|maxLength|minLength|maximum|minimum/.test(e)
|
return /^pattern$|^maxLength$|^minLength$|^maximum$|^minimum$/.test(e)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}).call(e, n(68).Buffer)
|
}).call(e, n(68).Buffer)
|
||||||
|
67
client/docs/swagger-ui/swagger.yaml
vendored
67
client/docs/swagger-ui/swagger.yaml
vendored
@ -589,12 +589,14 @@ paths:
|
|||||||
Example 4: Pack and unpack a message in Go
|
Example 4: Pack and unpack a message in Go
|
||||||
|
|
||||||
foo := &pb.Foo{...}
|
foo := &pb.Foo{...}
|
||||||
<<<<<<< HEAD
|
|
||||||
any, err := ptypes.MarshalAny(foo)
|
any, err := anypb.New(foo)
|
||||||
...
|
if err != nil {
|
||||||
foo := &pb.Foo{}
|
...
|
||||||
if err := ptypes.UnmarshalAny(any, foo); err != nil {
|
}
|
||||||
=======
|
...
|
||||||
|
foo := &pb.Foo{}
|
||||||
|
if err := any.UnmarshalTo(foo); err != nil {
|
||||||
any, err := anypb.New(foo)
|
any, err := anypb.New(foo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
...
|
...
|
||||||
@ -602,7 +604,6 @@ paths:
|
|||||||
...
|
...
|
||||||
foo := &pb.Foo{}
|
foo := &pb.Foo{}
|
||||||
if err := any.UnmarshalTo(foo); err != nil {
|
if err := any.UnmarshalTo(foo); err != nil {
|
||||||
>>>>>>> v0.20.0
|
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1765,13 +1766,11 @@ paths:
|
|||||||
title: >-
|
title: >-
|
||||||
Eip-4345 (bomb delay) switch block (nil = no fork, 0 =
|
Eip-4345 (bomb delay) switch block (nil = no fork, 0 =
|
||||||
already activated)
|
already activated)
|
||||||
<<<<<<< HEAD
|
|
||||||
merge_fork_block:
|
merge_fork_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
EIP-3675 (TheMerge) switch block (nil = no fork, 0 =
|
EIP-3675 (TheMerge) switch block (nil = no fork, 0 =
|
||||||
already in merge proceedings)
|
already in merge proceedings)
|
||||||
=======
|
|
||||||
gray_glacier_block:
|
gray_glacier_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
@ -1782,7 +1781,6 @@ paths:
|
|||||||
title: >-
|
title: >-
|
||||||
Virtual fork after The Merge to use as a network
|
Virtual fork after The Merge to use as a network
|
||||||
splitter
|
splitter
|
||||||
>>>>>>> v0.20.0
|
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters
|
ChainConfig defines the Ethereum ChainConfig parameters
|
||||||
using *sdk.Int values
|
using *sdk.Int values
|
||||||
@ -1792,13 +1790,7 @@ paths:
|
|||||||
type: boolean
|
type: boolean
|
||||||
description: >-
|
description: >-
|
||||||
Allow unprotected transactions defines if replay-protected
|
Allow unprotected transactions defines if replay-protected
|
||||||
<<<<<<< HEAD
|
(i.e non EIP155 signed) transactions can be executed on the state machine.
|
||||||
(i.e non EIP155
|
|
||||||
=======
|
|
||||||
(i.e non EIP155
|
|
||||||
>>>>>>> v0.20.0
|
|
||||||
|
|
||||||
signed) transactions can be executed on the state machine.
|
|
||||||
title: Params defines the EVM module parameters
|
title: Params defines the EVM module parameters
|
||||||
description: >-
|
description: >-
|
||||||
QueryParamsResponse defines the response type for querying x/evm
|
QueryParamsResponse defines the response type for querying x/evm
|
||||||
@ -2559,12 +2551,10 @@ paths:
|
|||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
<<<<<<< HEAD
|
|
||||||
- name: trace_config.overrides.merge_fork_block
|
- name: trace_config.overrides.merge_fork_block
|
||||||
description: >-
|
description: >-
|
||||||
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
||||||
merge proceedings).
|
merge proceedings).
|
||||||
=======
|
|
||||||
- name: trace_config.overrides.gray_glacier_block
|
- name: trace_config.overrides.gray_glacier_block
|
||||||
description: >-
|
description: >-
|
||||||
EIP-5133 (bomb delay) switch block (nil = no fork, 0 = already
|
EIP-5133 (bomb delay) switch block (nil = no fork, 0 = already
|
||||||
@ -2574,7 +2564,6 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
- name: trace_config.overrides.merge_netsplit_block
|
- name: trace_config.overrides.merge_netsplit_block
|
||||||
description: Virtual fork after The Merge to use as a network splitter.
|
description: Virtual fork after The Merge to use as a network splitter.
|
||||||
>>>>>>> v0.20.0
|
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
@ -3037,12 +3026,10 @@ paths:
|
|||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
<<<<<<< HEAD
|
|
||||||
- name: trace_config.overrides.merge_fork_block
|
- name: trace_config.overrides.merge_fork_block
|
||||||
description: >-
|
description: >-
|
||||||
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
||||||
merge proceedings).
|
merge proceedings).
|
||||||
=======
|
|
||||||
- name: trace_config.overrides.gray_glacier_block
|
- name: trace_config.overrides.gray_glacier_block
|
||||||
description: >-
|
description: >-
|
||||||
EIP-5133 (bomb delay) switch block (nil = no fork, 0 = already
|
EIP-5133 (bomb delay) switch block (nil = no fork, 0 = already
|
||||||
@ -3052,7 +3039,6 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
- name: trace_config.overrides.merge_netsplit_block
|
- name: trace_config.overrides.merge_netsplit_block
|
||||||
description: Virtual fork after The Merge to use as a network splitter.
|
description: Virtual fork after The Merge to use as a network splitter.
|
||||||
>>>>>>> v0.20.0
|
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
@ -3332,7 +3318,6 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- Query
|
- Query
|
||||||
<<<<<<< HEAD
|
|
||||||
/cosmos/auth/v1beta1/accounts:
|
/cosmos/auth/v1beta1/accounts:
|
||||||
get:
|
get:
|
||||||
summary: Accounts returns all the existing accounts
|
summary: Accounts returns all the existing accounts
|
||||||
@ -14195,8 +14180,6 @@ paths:
|
|||||||
type: boolean
|
type: boolean
|
||||||
tags:
|
tags:
|
||||||
- Query
|
- Query
|
||||||
=======
|
|
||||||
>>>>>>> v0.20.0
|
|
||||||
definitions:
|
definitions:
|
||||||
ethermint.evm.v1.ChainConfig:
|
ethermint.evm.v1.ChainConfig:
|
||||||
type: object
|
type: object
|
||||||
@ -14256,13 +14239,11 @@ definitions:
|
|||||||
title: >-
|
title: >-
|
||||||
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
||||||
activated)
|
activated)
|
||||||
<<<<<<< HEAD
|
|
||||||
merge_fork_block:
|
merge_fork_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge
|
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge
|
||||||
proceedings)
|
proceedings)
|
||||||
=======
|
|
||||||
gray_glacier_block:
|
gray_glacier_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
@ -14271,7 +14252,6 @@ definitions:
|
|||||||
merge_netsplit_block:
|
merge_netsplit_block:
|
||||||
type: string
|
type: string
|
||||||
title: Virtual fork after The Merge to use as a network splitter
|
title: Virtual fork after The Merge to use as a network splitter
|
||||||
>>>>>>> v0.20.0
|
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
||||||
values
|
values
|
||||||
@ -14674,13 +14654,11 @@ definitions:
|
|||||||
title: >-
|
title: >-
|
||||||
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
||||||
activated)
|
activated)
|
||||||
<<<<<<< HEAD
|
|
||||||
merge_fork_block:
|
merge_fork_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
||||||
merge proceedings)
|
merge proceedings)
|
||||||
=======
|
|
||||||
gray_glacier_block:
|
gray_glacier_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
@ -14689,7 +14667,6 @@ definitions:
|
|||||||
merge_netsplit_block:
|
merge_netsplit_block:
|
||||||
type: string
|
type: string
|
||||||
title: Virtual fork after The Merge to use as a network splitter
|
title: Virtual fork after The Merge to use as a network splitter
|
||||||
>>>>>>> v0.20.0
|
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
||||||
values
|
values
|
||||||
@ -14699,13 +14676,7 @@ definitions:
|
|||||||
type: boolean
|
type: boolean
|
||||||
description: >-
|
description: >-
|
||||||
Allow unprotected transactions defines if replay-protected (i.e non
|
Allow unprotected transactions defines if replay-protected (i.e non
|
||||||
<<<<<<< HEAD
|
EIP155 signed) transactions can be executed on the state machine.
|
||||||
EIP155
|
|
||||||
=======
|
|
||||||
EIP155
|
|
||||||
>>>>>>> v0.20.0
|
|
||||||
|
|
||||||
signed) transactions can be executed on the state machine.
|
|
||||||
title: Params defines the EVM module parameters
|
title: Params defines the EVM module parameters
|
||||||
ethermint.evm.v1.QueryAccountResponse:
|
ethermint.evm.v1.QueryAccountResponse:
|
||||||
type: object
|
type: object
|
||||||
@ -14858,13 +14829,11 @@ definitions:
|
|||||||
title: >-
|
title: >-
|
||||||
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
||||||
activated)
|
activated)
|
||||||
<<<<<<< HEAD
|
|
||||||
merge_fork_block:
|
merge_fork_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already
|
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already
|
||||||
in merge proceedings)
|
in merge proceedings)
|
||||||
=======
|
|
||||||
gray_glacier_block:
|
gray_glacier_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
@ -14873,7 +14842,6 @@ definitions:
|
|||||||
merge_netsplit_block:
|
merge_netsplit_block:
|
||||||
type: string
|
type: string
|
||||||
title: Virtual fork after The Merge to use as a network splitter
|
title: Virtual fork after The Merge to use as a network splitter
|
||||||
>>>>>>> v0.20.0
|
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters using
|
ChainConfig defines the Ethereum ChainConfig parameters using
|
||||||
*sdk.Int values
|
*sdk.Int values
|
||||||
@ -14883,13 +14851,7 @@ definitions:
|
|||||||
type: boolean
|
type: boolean
|
||||||
description: >-
|
description: >-
|
||||||
Allow unprotected transactions defines if replay-protected (i.e
|
Allow unprotected transactions defines if replay-protected (i.e
|
||||||
<<<<<<< HEAD
|
non EIP155 signed) transactions can be executed on the state machine.
|
||||||
non EIP155
|
|
||||||
=======
|
|
||||||
non EIP155
|
|
||||||
>>>>>>> v0.20.0
|
|
||||||
|
|
||||||
signed) transactions can be executed on the state machine.
|
|
||||||
title: Params defines the EVM module parameters
|
title: Params defines the EVM module parameters
|
||||||
description: >-
|
description: >-
|
||||||
QueryParamsResponse defines the response type for querying x/evm
|
QueryParamsResponse defines the response type for querying x/evm
|
||||||
@ -15028,13 +14990,12 @@ definitions:
|
|||||||
title: >-
|
title: >-
|
||||||
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already
|
||||||
activated)
|
activated)
|
||||||
<<<<<<< HEAD
|
|
||||||
merge_fork_block:
|
merge_fork_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in
|
||||||
merge proceedings)
|
merge proceedings)
|
||||||
=======
|
|
||||||
gray_glacier_block:
|
gray_glacier_block:
|
||||||
type: string
|
type: string
|
||||||
title: >-
|
title: >-
|
||||||
@ -15043,7 +15004,6 @@ definitions:
|
|||||||
merge_netsplit_block:
|
merge_netsplit_block:
|
||||||
type: string
|
type: string
|
||||||
title: Virtual fork after The Merge to use as a network splitter
|
title: Virtual fork after The Merge to use as a network splitter
|
||||||
>>>>>>> v0.20.0
|
|
||||||
description: >-
|
description: >-
|
||||||
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int
|
||||||
values
|
values
|
||||||
@ -15394,7 +15354,6 @@ definitions:
|
|||||||
"@type": "type.googleapis.com/google.protobuf.Duration",
|
"@type": "type.googleapis.com/google.protobuf.Duration",
|
||||||
"value": "1.212s"
|
"value": "1.212s"
|
||||||
}
|
}
|
||||||
<<<<<<< HEAD
|
|
||||||
cosmos.auth.v1beta1.Params:
|
cosmos.auth.v1beta1.Params:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -21355,5 +21314,3 @@ definitions:
|
|||||||
application's
|
application's
|
||||||
|
|
||||||
state transition machine.
|
state transition machine.
|
||||||
=======
|
|
||||||
>>>>>>> v0.20.0
|
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package keys
|
package keys
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package keys
|
package keys
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package client
|
package client
|
||||||
|
|
||||||
// DONTCOVER
|
// DONTCOVER
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -115,7 +130,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
a := appCreator{encodingConfig}
|
a := appCreator{encodingConfig}
|
||||||
server.AddCommands(rootCmd, app.DefaultNodeHome, a.newApp, a.appExport, addModuleInitFlags)
|
server.AddCommands(rootCmd, server.NewDefaultStartOptions(a.newApp, app.DefaultNodeHome), a.appExport, addModuleInitFlags)
|
||||||
|
|
||||||
// add keybase, auxiliary RPC, query, and tx child commands
|
// add keybase, auxiliary RPC, query, and tx child commands
|
||||||
rootCmd.AddCommand(
|
rootCmd.AddCommand(
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package codec
|
package codec
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package codec
|
package codec
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package ethsecp256k1
|
package ethsecp256k1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package hd
|
package hd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -28,7 +28,7 @@ buildGoApplication rec {
|
|||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK which runs on top of Tendermint Core consensus engine.";
|
description = "Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK which runs on top of Tendermint Core consensus engine.";
|
||||||
homepage = "https://github.com/evmos/ethermint";
|
homepage = "https://github.com/cerc-io/laconicd";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
mainProgram = "laconicd";
|
mainProgram = "laconicd";
|
||||||
};
|
};
|
||||||
|
@ -434,7 +434,7 @@ TraceConfig holds extra parameters to trace functions.
|
|||||||
|
|
||||||
### TransactionLogs
|
### TransactionLogs
|
||||||
TransactionLogs define the logs generated from a transaction execution
|
TransactionLogs define the logs generated from a transaction execution
|
||||||
with a given hash. It it used for import/export data as transactions are not
|
with a given hash. It is used for import/export data as transactions are not
|
||||||
persisted on blockchain state after an upgrade.
|
persisted on blockchain state after an upgrade.
|
||||||
|
|
||||||
|
|
||||||
@ -488,7 +488,7 @@ TxResult stores results of Tx execution.
|
|||||||
|
|
||||||
### GenesisAccount
|
### GenesisAccount
|
||||||
GenesisAccount defines an account to be initialized in the genesis state.
|
GenesisAccount defines an account to be initialized in the genesis state.
|
||||||
Its main difference between with Geth's GenesisAccount is that it uses a
|
Its main difference with Geth's GenesisAccount is that it uses a
|
||||||
custom storage type and that it doesn't contain the private key field.
|
custom storage type and that it doesn't contain the private key field.
|
||||||
|
|
||||||
|
|
||||||
@ -563,7 +563,7 @@ AccessListTx is the data of EIP-2930 access list transactions.
|
|||||||
<a name="ethermint.evm.v1.DynamicFeeTx"></a>
|
<a name="ethermint.evm.v1.DynamicFeeTx"></a>
|
||||||
|
|
||||||
### DynamicFeeTx
|
### DynamicFeeTx
|
||||||
DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
|
DynamicFeeTx is the data of EIP-1559 dynamic fee transactions.
|
||||||
|
|
||||||
|
|
||||||
| Field | Type | Label | Description |
|
| Field | Type | Label | Description |
|
||||||
@ -574,7 +574,7 @@ DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
|
|||||||
| `gas_fee_cap` | [string](#string) | | gas fee cap defines the max value for the gas fee |
|
| `gas_fee_cap` | [string](#string) | | gas fee cap defines the max value for the gas fee |
|
||||||
| `gas` | [uint64](#uint64) | | gas defines the gas limit defined for the transaction. |
|
| `gas` | [uint64](#uint64) | | gas defines the gas limit defined for the transaction. |
|
||||||
| `to` | [string](#string) | | hex formatted address of the recipient |
|
| `to` | [string](#string) | | hex formatted address of the recipient |
|
||||||
| `value` | [string](#string) | | value defines the the transaction amount. |
|
| `value` | [string](#string) | | value defines the transaction amount. |
|
||||||
| `data` | [bytes](#bytes) | | input defines the data payload bytes of the transaction. |
|
| `data` | [bytes](#bytes) | | input defines the data payload bytes of the transaction. |
|
||||||
| `accesses` | [AccessTuple](#ethermint.evm.v1.AccessTuple) | repeated | |
|
| `accesses` | [AccessTuple](#ethermint.evm.v1.AccessTuple) | repeated | |
|
||||||
| `v` | [bytes](#bytes) | | v defines the signature value |
|
| `v` | [bytes](#bytes) | | v defines the signature value |
|
||||||
@ -865,7 +865,7 @@ RPC method.
|
|||||||
| ----- | ---- | ----- | ----------- |
|
| ----- | ---- | ----- | ----------- |
|
||||||
| `cosmos_address` | [string](#string) | | cosmos_address is the cosmos address of the account. |
|
| `cosmos_address` | [string](#string) | | cosmos_address is the cosmos address of the account. |
|
||||||
| `sequence` | [uint64](#uint64) | | sequence is the account's sequence number. |
|
| `sequence` | [uint64](#uint64) | | sequence is the account's sequence number. |
|
||||||
| `account_number` | [uint64](#uint64) | | account_number is the account numbert |
|
| `account_number` | [uint64](#uint64) | | account_number is the account number. |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ If recorded decisions turned out to be lacking, convene a discussion, record the
|
|||||||
|
|
||||||
Note the context/background should be written in the present tense.
|
Note the context/background should be written in the present tense.
|
||||||
|
|
||||||
Please add a entry below in your Pull Request for an ADR.
|
Please add an entry below in your Pull Request for an ADR.
|
||||||
|
|
||||||
## ADR Table of Contents
|
## ADR Table of Contents
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ type Keeper struct {
|
|||||||
|
|
||||||
This means that a `Keeper` pointer will now directly be passed to the `vm.EVM` for accessing the state and performing state transitions.
|
This means that a `Keeper` pointer will now directly be passed to the `vm.EVM` for accessing the state and performing state transitions.
|
||||||
|
|
||||||
The ABCI `BeginBlock` and `EndBlock` are have now been refactored to only keep track of internal fields (hashes, block bloom, etc).
|
The ABCI `BeginBlock` and `EndBlock` have now been refactored to only keep track of internal fields (hashes, block bloom, etc).
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func (k *Keeper) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {
|
func (k *Keeper) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {
|
||||||
@ -131,7 +131,7 @@ func (k Keeper) EndBlock(ctx sdk.Context, req abci.RequestEndBlock) []abci.Valid
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The new `StateDB` (`Keeper`) will adopt the use of the [`TransientStore`](https://docs.cosmos.network/master/core/store.html#transient-store) that discards the existing values of the store when the block is commited.
|
The new `StateDB` (`Keeper`) will adopt the use of the [`TransientStore`](https://docs.cosmos.network/master/core/store.html#transient-store) that discards the existing values of the store when the block is committed.
|
||||||
|
|
||||||
The fields that have been modified to use the `TransientStore` are:
|
The fields that have been modified to use the `TransientStore` are:
|
||||||
|
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package codec
|
package codec
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package encoding
|
package encoding
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package eip712
|
package eip712
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -244,11 +259,6 @@ func traverseFields(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// If its a nil pointer, do not include in types
|
|
||||||
if fieldType.Kind() == reflect.Ptr && field.IsNil() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
if fieldType.Kind() == reflect.Ptr {
|
if fieldType.Kind() == reflect.Ptr {
|
||||||
fieldType = fieldType.Elem()
|
fieldType = fieldType.Elem()
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package eip712
|
package eip712
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package eip712
|
package eip712
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
26
go.mod
26
go.mod
@ -13,7 +13,7 @@ require (
|
|||||||
github.com/cosmos/cosmos-sdk v0.46.7
|
github.com/cosmos/cosmos-sdk v0.46.7
|
||||||
github.com/cosmos/go-bip39 v1.0.0
|
github.com/cosmos/go-bip39 v1.0.0
|
||||||
github.com/cosmos/gogoproto v1.4.3
|
github.com/cosmos/gogoproto v1.4.3
|
||||||
github.com/cosmos/ibc-go/v5 v5.2.0
|
github.com/cosmos/ibc-go/v6 v6.1.0
|
||||||
github.com/davecgh/go-spew v1.1.1
|
github.com/davecgh/go-spew v1.1.1
|
||||||
github.com/deckarep/golang-set v1.8.0
|
github.com/deckarep/golang-set v1.8.0
|
||||||
github.com/ethereum/go-ethereum v1.10.26
|
github.com/ethereum/go-ethereum v1.10.26
|
||||||
@ -29,11 +29,11 @@ require (
|
|||||||
github.com/ipfs/go-cid v0.3.2
|
github.com/ipfs/go-cid v0.3.2
|
||||||
github.com/ipld/go-ipld-prime v0.18.0
|
github.com/ipld/go-ipld-prime v0.18.0
|
||||||
github.com/miguelmota/go-ethereum-hdwallet v0.1.1
|
github.com/miguelmota/go-ethereum-hdwallet v0.1.1
|
||||||
github.com/onsi/ginkgo/v2 v2.5.1
|
github.com/onsi/ginkgo/v2 v2.7.0
|
||||||
github.com/onsi/gomega v1.24.1
|
github.com/onsi/gomega v1.24.2
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/rakyll/statik v0.1.7
|
github.com/rakyll/statik v0.1.7
|
||||||
github.com/rs/cors v1.8.2
|
github.com/rs/cors v1.8.3
|
||||||
github.com/spf13/cast v1.5.0
|
github.com/spf13/cast v1.5.0
|
||||||
github.com/spf13/cobra v1.6.1
|
github.com/spf13/cobra v1.6.1
|
||||||
github.com/spf13/viper v1.14.0
|
github.com/spf13/viper v1.14.0
|
||||||
@ -45,8 +45,8 @@ require (
|
|||||||
github.com/vektah/gqlparser/v2 v2.5.1
|
github.com/vektah/gqlparser/v2 v2.5.1
|
||||||
golang.org/x/net v0.7.0
|
golang.org/x/net v0.7.0
|
||||||
golang.org/x/text v0.7.0
|
golang.org/x/text v0.7.0
|
||||||
google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c
|
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6
|
||||||
google.golang.org/grpc v1.51.0
|
google.golang.org/grpc v1.52.0
|
||||||
google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8
|
google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
sigs.k8s.io/yaml v1.3.0
|
sigs.k8s.io/yaml v1.3.0
|
||||||
@ -54,9 +54,9 @@ require (
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.105.0 // indirect
|
cloud.google.com/go v0.105.0 // indirect
|
||||||
cloud.google.com/go/compute v1.13.0 // indirect
|
cloud.google.com/go/compute v1.12.1 // indirect
|
||||||
cloud.google.com/go/compute/metadata v0.2.1 // indirect
|
cloud.google.com/go/compute/metadata v0.2.1 // indirect
|
||||||
cloud.google.com/go/iam v0.8.0 // indirect
|
cloud.google.com/go/iam v0.7.0 // indirect
|
||||||
cloud.google.com/go/storage v1.27.0 // indirect
|
cloud.google.com/go/storage v1.27.0 // indirect
|
||||||
filippo.io/edwards25519 v1.0.0-rc.1 // indirect
|
filippo.io/edwards25519 v1.0.0-rc.1 // indirect
|
||||||
github.com/99designs/keyring v1.2.1 // indirect
|
github.com/99designs/keyring v1.2.1 // indirect
|
||||||
@ -114,7 +114,7 @@ require (
|
|||||||
github.com/google/orderedcode v0.0.1 // indirect
|
github.com/google/orderedcode v0.0.1 // indirect
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect
|
github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect
|
||||||
github.com/googleapis/gax-go/v2 v2.7.0 // indirect
|
github.com/googleapis/gax-go/v2 v2.6.0 // indirect
|
||||||
github.com/gorilla/handlers v1.5.1 // indirect
|
github.com/gorilla/handlers v1.5.1 // indirect
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
|
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
|
||||||
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
|
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
|
||||||
@ -191,15 +191,15 @@ require (
|
|||||||
github.com/zondax/hid v0.9.1 // indirect
|
github.com/zondax/hid v0.9.1 // indirect
|
||||||
github.com/zondax/ledger-go v0.14.0 // indirect
|
github.com/zondax/ledger-go v0.14.0 // indirect
|
||||||
go.etcd.io/bbolt v1.3.6 // indirect
|
go.etcd.io/bbolt v1.3.6 // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.23.0 // indirect
|
||||||
golang.org/x/crypto v0.4.0 // indirect
|
golang.org/x/crypto v0.3.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
|
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
|
||||||
golang.org/x/oauth2 v0.1.0 // indirect
|
golang.org/x/oauth2 v0.1.0 // indirect
|
||||||
golang.org/x/sync v0.1.0 // indirect
|
golang.org/x/sync v0.1.0 // indirect
|
||||||
golang.org/x/sys v0.5.0 // indirect
|
golang.org/x/sys v0.5.0 // indirect
|
||||||
golang.org/x/term v0.5.0 // indirect
|
golang.org/x/term v0.5.0 // indirect
|
||||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
||||||
google.golang.org/api v0.103.0 // indirect
|
google.golang.org/api v0.102.0 // indirect
|
||||||
google.golang.org/appengine v1.6.7 // indirect
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
|
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
|
||||||
@ -211,8 +211,6 @@ require (
|
|||||||
replace (
|
replace (
|
||||||
// use cosmos keyring
|
// use cosmos keyring
|
||||||
github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76
|
github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76
|
||||||
// ics23 patch for dragonberry
|
|
||||||
github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0
|
|
||||||
// Fix upstream GHSA-h395-qcrw-5vmq vulnerability.
|
// Fix upstream GHSA-h395-qcrw-5vmq vulnerability.
|
||||||
// TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409
|
// TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409
|
||||||
github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0
|
github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0
|
||||||
|
52
go.sum
52
go.sum
@ -73,8 +73,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.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.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
|
||||||
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
|
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
|
||||||
cloud.google.com/go/compute v1.13.0 h1:AYrLkB8NPdDRslNp4Jxmzrhdr03fUAIDbiGFjLWowoU=
|
cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0=
|
||||||
cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE=
|
cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU=
|
||||||
cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48=
|
cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48=
|
||||||
cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
|
cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
|
||||||
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
|
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
|
||||||
@ -114,8 +114,8 @@ 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/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.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 v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
|
||||||
cloud.google.com/go/iam v0.8.0 h1:E2osAkZzxI/+8pZcxVLcDtAQx/u+hZXVryUaYQ5O0Kk=
|
cloud.google.com/go/iam v0.7.0 h1:k4MuwOsS7zGJJ+QfZ5vBK8SgHBAvYN/23BWsiihJ1vs=
|
||||||
cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE=
|
cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg=
|
||||||
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
|
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/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.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
|
||||||
@ -366,6 +366,8 @@ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE
|
|||||||
github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI=
|
github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI=
|
||||||
github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA=
|
github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA=
|
||||||
github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M=
|
github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M=
|
||||||
|
github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4=
|
||||||
|
github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak=
|
||||||
github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ=
|
github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ=
|
||||||
github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
|
github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
|
||||||
github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q=
|
github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q=
|
||||||
@ -383,8 +385,6 @@ github.com/cosmos/cosmos-proto v1.0.0-beta.1 h1:iDL5qh++NoXxG8hSy93FdYJut4XfgbSh
|
|||||||
github.com/cosmos/cosmos-proto v1.0.0-beta.1/go.mod h1:8k2GNZghi5sDRFw/scPL8gMSowT1vDA+5ouxL8GjaUE=
|
github.com/cosmos/cosmos-proto v1.0.0-beta.1/go.mod h1:8k2GNZghi5sDRFw/scPL8gMSowT1vDA+5ouxL8GjaUE=
|
||||||
github.com/cosmos/cosmos-sdk v0.46.7 h1:dkGy9y2ewgqvawrUOuWb2oz3MdotVduokyreXC4bS0s=
|
github.com/cosmos/cosmos-sdk v0.46.7 h1:dkGy9y2ewgqvawrUOuWb2oz3MdotVduokyreXC4bS0s=
|
||||||
github.com/cosmos/cosmos-sdk v0.46.7/go.mod h1:fqKqz39U5IlEFb4nbQ72951myztsDzFKKDtffYJ63nk=
|
github.com/cosmos/cosmos-sdk v0.46.7/go.mod h1:fqKqz39U5IlEFb4nbQ72951myztsDzFKKDtffYJ63nk=
|
||||||
github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 h1:iKclrn3YEOwk4jQHT2ulgzuXyxmzmPczUalMwW4XH9k=
|
|
||||||
github.com/cosmos/cosmos-sdk/ics23/go v0.8.0/go.mod h1:2a4dBq88TUoqoWAU5eu0lGvpFP3wWDPgdHPargtyw30=
|
|
||||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
||||||
github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
|
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/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
|
||||||
@ -394,8 +394,8 @@ github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4
|
|||||||
github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw=
|
github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw=
|
||||||
github.com/cosmos/iavl v0.19.4 h1:t82sN+Y0WeqxDLJRSpNd8YFX5URIrT+p8n6oJbJ2Dok=
|
github.com/cosmos/iavl v0.19.4 h1:t82sN+Y0WeqxDLJRSpNd8YFX5URIrT+p8n6oJbJ2Dok=
|
||||||
github.com/cosmos/iavl v0.19.4/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw=
|
github.com/cosmos/iavl v0.19.4/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw=
|
||||||
github.com/cosmos/ibc-go/v5 v5.2.0 h1:LxwttRQqdUJpQ3/Gc3XPg5lkRo3pcbzx65dxFIY6ONE=
|
github.com/cosmos/ibc-go/v6 v6.1.0 h1:o7oXws2vKkKfOFzJI+oNylRn44PCNt5wzHd/zKQKbvQ=
|
||||||
github.com/cosmos/ibc-go/v5 v5.2.0/go.mod h1:MhDUMDVSboK5JW2pEWHNcw0wJHaHqKV/vwwP7awGhzI=
|
github.com/cosmos/ibc-go/v6 v6.1.0/go.mod h1:CY3zh2HLfetRiW8LY6kVHMATe90Wj/UOoY8T6cuB0is=
|
||||||
github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU=
|
github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU=
|
||||||
github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8=
|
github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8=
|
||||||
github.com/cosmos/ledger-cosmos-go v0.12.1 h1:sMBxza5p/rNK/06nBSNmsI/WDqI0pVJFVNihy1Y984w=
|
github.com/cosmos/ledger-cosmos-go v0.12.1 h1:sMBxza5p/rNK/06nBSNmsI/WDqI0pVJFVNihy1Y984w=
|
||||||
@ -686,9 +686,8 @@ github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/Oth
|
|||||||
github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
|
github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
|
||||||
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
|
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.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU=
|
||||||
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
|
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
|
||||||
github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ=
|
|
||||||
github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8=
|
|
||||||
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
|
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
|
||||||
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||||
@ -1000,14 +999,14 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
|
|||||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||||
github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
|
github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
|
||||||
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||||
github.com/onsi/ginkgo/v2 v2.5.1 h1:auzK7OI497k6x4OvWq+TKAcpcSAlod0doAH72oIN0Jw=
|
github.com/onsi/ginkgo/v2 v2.7.0 h1:/XxtEV3I3Eif/HobnVx9YmJgk8ENdRsuUmM+fLCFNow=
|
||||||
github.com/onsi/ginkgo/v2 v2.5.1/go.mod h1:63DOGlLAH8+REH8jUGdL3YpCpu7JODesutUjdENfUAc=
|
github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
|
||||||
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
|
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
|
||||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
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.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.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||||
github.com/onsi/gomega v1.24.1 h1:KORJXNNTzJXzu4ScJWssJfJMnJ+2QJqhoQSRwNlze9E=
|
github.com/onsi/gomega v1.24.2 h1:J/tulyYK6JwBldPViHJReihxxZ+22FHs0piGjQAvoUE=
|
||||||
github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
|
github.com/onsi/gomega v1.24.2/go.mod h1:gs3J10IS7Z7r7eXRoNJIrNqU4ToQukCJhFtKrWgHWnk=
|
||||||
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
|
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 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||||
github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
|
github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
|
||||||
@ -1112,8 +1111,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L
|
|||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
|
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
|
||||||
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
||||||
github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U=
|
github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo=
|
||||||
github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
|
github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
|
||||||
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||||
github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
|
github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
|
||||||
github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
|
github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
|
||||||
@ -1279,9 +1278,8 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
|||||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||||
|
go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=
|
||||||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
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/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
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.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.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||||
@ -1315,8 +1313,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm
|
|||||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
|
golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A=
|
||||||
golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
|
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||||
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
@ -1675,7 +1673,7 @@ 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.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
|
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE=
|
golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
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-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
@ -1740,8 +1738,8 @@ 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.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.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.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
|
||||||
google.golang.org/api v0.103.0 h1:9yuVqlu2JCvcLg9p8S3fcFLZij8EPSyvODIY1rkMizQ=
|
google.golang.org/api v0.102.0 h1:JxJl2qQ85fRMPNvlZY/enexbxpCjLwGhZUtgfGeQ51I=
|
||||||
google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0=
|
google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo=
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
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.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.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
@ -1861,8 +1859,8 @@ 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-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-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-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
|
||||||
google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c h1:S34D59DS2GWOEwWNt4fYmTcFrtlOgukG2k9WsomZ7tg=
|
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c=
|
||||||
google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
|
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
|
||||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
@ -1905,8 +1903,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.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.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||||
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||||
google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U=
|
google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk=
|
||||||
google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
|
google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=
|
||||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
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-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
|
@ -93,9 +93,8 @@ schema = 3
|
|||||||
version = "v0.7.9"
|
version = "v0.7.9"
|
||||||
hash = "sha256-ZWIXIXcHGjeCNgMrpXymry8/8esDDauGFfF/+gEoO1Y="
|
hash = "sha256-ZWIXIXcHGjeCNgMrpXymry8/8esDDauGFfF/+gEoO1Y="
|
||||||
[mod."github.com/confio/ics23/go"]
|
[mod."github.com/confio/ics23/go"]
|
||||||
version = "v0.8.0"
|
version = "v0.9.0"
|
||||||
hash = "sha256-mFKxFHp7RaE1L5NdtH9H9px2Cy6I5uOZVnFOgE8Nrew="
|
hash = "sha256-guD8w7YygfUp7lpTAUyXQuCPx8F3lXkcg+yR5+JOCbk="
|
||||||
replaced = "github.com/cosmos/cosmos-sdk/ics23/go"
|
|
||||||
[mod."github.com/cosmos/btcutil"]
|
[mod."github.com/cosmos/btcutil"]
|
||||||
version = "v1.0.5"
|
version = "v1.0.5"
|
||||||
hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI="
|
hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI="
|
||||||
@ -117,9 +116,9 @@ schema = 3
|
|||||||
[mod."github.com/cosmos/iavl"]
|
[mod."github.com/cosmos/iavl"]
|
||||||
version = "v0.19.4"
|
version = "v0.19.4"
|
||||||
hash = "sha256-EmpRZ48pjPFq/fIHneut9Vyo5QJATfb3ZO7KzWnqs9g="
|
hash = "sha256-EmpRZ48pjPFq/fIHneut9Vyo5QJATfb3ZO7KzWnqs9g="
|
||||||
[mod."github.com/cosmos/ibc-go/v5"]
|
[mod."github.com/cosmos/ibc-go/v6"]
|
||||||
version = "v5.2.0"
|
version = "v6.1.0"
|
||||||
hash = "sha256-Gfqhdz9ZKEgb7LCkHiXCwYZYUYluQ+vMew/GkssfVj8="
|
hash = "sha256-mHYCqLedcveDjfm1EiO2EMMNJqLm9u4WHwQTy1muOoc="
|
||||||
[mod."github.com/cosmos/ledger-cosmos-go"]
|
[mod."github.com/cosmos/ledger-cosmos-go"]
|
||||||
version = "v0.12.1"
|
version = "v0.12.1"
|
||||||
hash = "sha256-9+nr+/r4MyiogddS0JcXOuriPqXP4nxln8ts+mYQRcg="
|
hash = "sha256-9+nr+/r4MyiogddS0JcXOuriPqXP4nxln8ts+mYQRcg="
|
||||||
@ -337,9 +336,6 @@ schema = 3
|
|||||||
[mod."github.com/klauspost/compress"]
|
[mod."github.com/klauspost/compress"]
|
||||||
version = "v1.15.11"
|
version = "v1.15.11"
|
||||||
hash = "sha256-9MXm0TObg6DyqnYMIw3IChrorHc2ILf5djZYoM0e1J0="
|
hash = "sha256-9MXm0TObg6DyqnYMIw3IChrorHc2ILf5djZYoM0e1J0="
|
||||||
[mod."github.com/klauspost/cpuid/v2"]
|
|
||||||
version = "v2.0.9"
|
|
||||||
hash = "sha256-0rHlHzEVaDdkVbRJDhnAJjfJUmAHOYjXN5u7VoCi5uk="
|
|
||||||
[mod."github.com/lib/pq"]
|
[mod."github.com/lib/pq"]
|
||||||
version = "v1.10.6"
|
version = "v1.10.6"
|
||||||
hash = "sha256-8EhFwY/9YH5L/fd6l2beOnC3VvpegRAmCCsnDVJBqBM="
|
hash = "sha256-8EhFwY/9YH5L/fd6l2beOnC3VvpegRAmCCsnDVJBqBM="
|
||||||
@ -410,11 +406,11 @@ schema = 3
|
|||||||
version = "v0.0.5"
|
version = "v0.0.5"
|
||||||
hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4="
|
hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4="
|
||||||
[mod."github.com/onsi/ginkgo/v2"]
|
[mod."github.com/onsi/ginkgo/v2"]
|
||||||
version = "v2.5.1"
|
version = "v2.7.0"
|
||||||
hash = "sha256-VB29+H9k7l6il63oXJvsjamSUhsw/e99iI/BeTCderA="
|
hash = "sha256-BKqQKCsPA73FaQwYpAY+QsWFHIncrG5jgRhC2IiNmCk="
|
||||||
[mod."github.com/onsi/gomega"]
|
[mod."github.com/onsi/gomega"]
|
||||||
version = "v1.24.1"
|
version = "v1.25.0"
|
||||||
hash = "sha256-REfxQTDRcO23GnmJfOW8/MmPJf9oE2grVvvGiC1eSbo="
|
hash = "sha256-knaJppfBzKSMD4Gsqzx22SGrti7G5UyDBYrothAqsrs="
|
||||||
[mod."github.com/pelletier/go-toml"]
|
[mod."github.com/pelletier/go-toml"]
|
||||||
version = "v1.9.5"
|
version = "v1.9.5"
|
||||||
hash = "sha256-RJ9K1BTId0Mled7S66iGgxHkZ5JKEIsrrNaEfM8aImc="
|
hash = "sha256-RJ9K1BTId0Mled7S66iGgxHkZ5JKEIsrrNaEfM8aImc="
|
||||||
@ -461,8 +457,8 @@ schema = 3
|
|||||||
version = "v0.9.1"
|
version = "v0.9.1"
|
||||||
hash = "sha256-YLGNrHHM+mN4ElW/XWuylOnFrA/VjSY+eBuC4LN//5c="
|
hash = "sha256-YLGNrHHM+mN4ElW/XWuylOnFrA/VjSY+eBuC4LN//5c="
|
||||||
[mod."github.com/rs/cors"]
|
[mod."github.com/rs/cors"]
|
||||||
version = "v1.8.2"
|
version = "v1.8.3"
|
||||||
hash = "sha256-FxBbQVb8zIoDGGaAJKfsYV0+POkh1tyX7P6A/Lk5Vsc="
|
hash = "sha256-VgVB4HKAhPSjNg96mIEUN1bt5ZQng8Fi3ZABy3CDWQE="
|
||||||
[mod."github.com/rs/zerolog"]
|
[mod."github.com/rs/zerolog"]
|
||||||
version = "v1.27.0"
|
version = "v1.27.0"
|
||||||
hash = "sha256-BxQtP2TROeSSpj9l1irocuSfxn55UL4ugzB/og7r8eE="
|
hash = "sha256-BxQtP2TROeSSpj9l1irocuSfxn55UL4ugzB/og7r8eE="
|
||||||
@ -560,8 +556,8 @@ schema = 3
|
|||||||
version = "v0.0.0-20220722155223-a9213eeb770e"
|
version = "v0.0.0-20220722155223-a9213eeb770e"
|
||||||
hash = "sha256-kNgzydWRpjm0sZl4uXEs3LX5L0xjJtJRAFf/CTlYUN4="
|
hash = "sha256-kNgzydWRpjm0sZl4uXEs3LX5L0xjJtJRAFf/CTlYUN4="
|
||||||
[mod."golang.org/x/net"]
|
[mod."golang.org/x/net"]
|
||||||
version = "v0.4.0"
|
version = "v0.5.0"
|
||||||
hash = "sha256-7IwGZh/xg4mQz88cJio2Ov5d3jGRXKj1itlAja/EAbQ="
|
hash = "sha256-HpbIAiLs7S1+tVsaSSdbCPw1IK43A0bFFuSzPSyjLbo="
|
||||||
[mod."golang.org/x/oauth2"]
|
[mod."golang.org/x/oauth2"]
|
||||||
version = "v0.0.0-20221014153046-6fdb5e3db783"
|
version = "v0.0.0-20221014153046-6fdb5e3db783"
|
||||||
hash = "sha256-IoygidVNqyAZmN+3macDeIefK8hhJToygpcqlwehdYQ="
|
hash = "sha256-IoygidVNqyAZmN+3macDeIefK8hhJToygpcqlwehdYQ="
|
||||||
@ -569,14 +565,14 @@ schema = 3
|
|||||||
version = "v0.1.0"
|
version = "v0.1.0"
|
||||||
hash = "sha256-Hygjq9euZ0qz6TvHYQwOZEjNiTbTh1nSLRAWZ6KFGR8="
|
hash = "sha256-Hygjq9euZ0qz6TvHYQwOZEjNiTbTh1nSLRAWZ6KFGR8="
|
||||||
[mod."golang.org/x/sys"]
|
[mod."golang.org/x/sys"]
|
||||||
version = "v0.3.0"
|
version = "v0.4.0"
|
||||||
hash = "sha256-TIHhfYbZ99sCU1ZMikxwomXH5AEtD/lA1VMMW+UAhbU="
|
hash = "sha256-jchMzHCH5dg+IL/F+LqaX/fyAcB/nvHQpfBjqwaRJH0="
|
||||||
[mod."golang.org/x/term"]
|
[mod."golang.org/x/term"]
|
||||||
version = "v0.3.0"
|
version = "v0.4.0"
|
||||||
hash = "sha256-NKv2o8wz8DB/2W2h/muGEIHb+S06mBXZxhG254RpQ5s="
|
hash = "sha256-wQKxHV10TU4vCU8Re2/hFmAbur/jRWEOB8QXBzgTFNY="
|
||||||
[mod."golang.org/x/text"]
|
[mod."golang.org/x/text"]
|
||||||
version = "v0.5.0"
|
version = "v0.6.0"
|
||||||
hash = "sha256-ztH+xQyM/clOcQl+y/UEPcfNKbc3xApMbEPDDZ9up0o="
|
hash = "sha256-+bpeRWR3relKACdal6NPj+eP5dnWCplTViArSN7/qA4="
|
||||||
[mod."golang.org/x/xerrors"]
|
[mod."golang.org/x/xerrors"]
|
||||||
version = "v0.0.0-20220907171357-04be3eba64a2"
|
version = "v0.0.0-20220907171357-04be3eba64a2"
|
||||||
hash = "sha256-6+zueutgefIYmgXinOflz8qGDDDj0Zhv+2OkGhBTKno="
|
hash = "sha256-6+zueutgefIYmgXinOflz8qGDDDj0Zhv+2OkGhBTKno="
|
||||||
@ -587,11 +583,11 @@ schema = 3
|
|||||||
version = "v1.6.7"
|
version = "v1.6.7"
|
||||||
hash = "sha256-zIxGRHiq4QBvRqkrhMGMGCaVL4iM4TtlYpAi/hrivS4="
|
hash = "sha256-zIxGRHiq4QBvRqkrhMGMGCaVL4iM4TtlYpAi/hrivS4="
|
||||||
[mod."google.golang.org/genproto"]
|
[mod."google.golang.org/genproto"]
|
||||||
version = "v0.0.0-20221116193143-41c2ba794472"
|
version = "v0.0.0-20221118155620-16455021b5e6"
|
||||||
hash = "sha256-uQuxuOvWRsdMii5M5QresisVd1E+Ss8s2WfR2n7QSXk="
|
hash = "sha256-FFSliEzgr7AceO8B+ZoPAlZDFVPLeqAFg+25VQw6cFs="
|
||||||
[mod."google.golang.org/grpc"]
|
[mod."google.golang.org/grpc"]
|
||||||
version = "v1.51.0"
|
version = "v1.52.0"
|
||||||
hash = "sha256-RzH5DU13D/ulxxOouIKpdNt8eHdff7mrEnB+JUupbLU="
|
hash = "sha256-wYJ/ysugKxz1O9u6BxECTIGFJ3sv0XmxOfM+Y0jW3KQ="
|
||||||
[mod."google.golang.org/protobuf"]
|
[mod."google.golang.org/protobuf"]
|
||||||
version = "v1.28.2-0.20220831092852-f930b1dc76e8"
|
version = "v1.28.2-0.20220831092852-f930b1dc76e8"
|
||||||
hash = "sha256-li5hXlXwTJ5LIZ8bVki1AZ6UFI2gXHl33JwdX1dOrtM="
|
hash = "sha256-li5hXlXwTJ5LIZ8bVki1AZ6UFI2gXHl33JwdX1dOrtM="
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package indexer
|
package indexer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
114
init.sh
114
init.sh
@ -28,69 +28,69 @@ laconicd keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO
|
|||||||
laconicd init $MONIKER --chain-id $CHAINID
|
laconicd init $MONIKER --chain-id $CHAINID
|
||||||
|
|
||||||
# Change parameter token denominations to aphoton
|
# Change parameter token denominations to aphoton
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["staking"]["params"]["bond_denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["crisis"]["constant_fee"]["denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["mint"]["params"]["mint_denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
# Custom modules
|
# Custom modules
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["record_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["record_rent"]["denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_rent"]["denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_commit_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_auction_commit_fee"]["denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_reveal_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_auction_reveal_fee"]["denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_minimum_bid"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_auction_minimum_bid"]["denom"]="aphoton"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
|
|
||||||
if [[ "$TEST_REGISTRY_EXPIRY" == "true" ]]; then
|
if [[ "$TEST_REGISTRY_EXPIRY" == "true" ]]; then
|
||||||
echo "Setting timers for expiry tests."
|
echo "Setting timers for expiry tests."
|
||||||
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["record_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["record_rent_duration"]="60s"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_grace_period"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_grace_period"]="60s"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$TEST_AUCTION_ENABLED" == "true" ]]; then
|
if [[ "$TEST_AUCTION_ENABLED" == "true" ]]; then
|
||||||
echo "Enabling auction and setting timers."
|
echo "Enabling auction and setting timers."
|
||||||
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_enabled"]=true' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_auction_enabled"]=true' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_grace_period"]="300s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_grace_period"]="300s"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_commits_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_auction_commits_duration"]="60s"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_reveals_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.app_state["registry"]["params"]["authority_auction_reveals_duration"]="60s"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# increase block time (?)
|
# increase block time (?)
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.consensus_params["block"]["time_iota_ms"]="1000"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.consensus_params["block"]["time_iota_ms"]="1000"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
|
|
||||||
# Set gas limit in genesis
|
# Set gas limit in genesis
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.consensus_params["block"]["max_gas"]="10000000"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
< "$HOME"/.laconicd/config/genesis.json jq '.consensus_params["block"]["max_gas"]="10000000"' > "$HOME"/.laconicd/config/tmp_genesis.json && mv "$HOME"/.laconicd/config/tmp_genesis.json "$HOME"/.laconicd/config/genesis.json
|
||||||
|
|
||||||
# disable produce empty block
|
# disable produce empty block
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
sed -i '' 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/create_empty_blocks = true/create_empty_blocks = false/g' "$HOME"/.laconicd/config/config.toml
|
||||||
else
|
else
|
||||||
sed -i 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/create_empty_blocks = true/create_empty_blocks = false/g' "$HOME"/.laconicd/config/config.toml
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $1 == "pending" ]]; then
|
if [[ $1 == "pending" ]]; then
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
sed -i '' 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_propose = "3s"/timeout_propose = "30s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_commit = "5s"/timeout_commit = "150s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i '' 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
sed -i '' 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
else
|
else
|
||||||
sed -i 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_propose = "3s"/timeout_propose = "30s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_commit = "5s"/timeout_commit = "150s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
sed -i 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
sed -i 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' "$HOME"/.laconicd/config/config.toml
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -106,8 +106,42 @@ laconicd collect-gentxs
|
|||||||
# Run this to ensure everything worked and that the genesis file is setup correctly
|
# Run this to ensure everything worked and that the genesis file is setup correctly
|
||||||
laconicd validate-genesis
|
laconicd validate-genesis
|
||||||
|
|
||||||
|
# disable produce empty block and enable prometheus metrics
|
||||||
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
|
sed -i '' 's/create_empty_blocks = true/create_empty_blocks = false/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/prometheus = false/prometheus = true/' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/prometheus-retention-time = 0/prometheus-retention-time = 1000000000000/g' "$HOME"/.ethermintd/config/app.toml
|
||||||
|
sed -i '' 's/enabled = false/enabled = true/g' "$HOME"/.ethermintd/config/app.toml
|
||||||
|
else
|
||||||
|
sed -i 's/create_empty_blocks = true/create_empty_blocks = false/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/prometheus = false/prometheus = true/' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/prometheus-retention-time = "0"/prometheus-retention-time = "1000000000000"/g' "$HOME"/.ethermintd/config/app.toml
|
||||||
|
sed -i 's/enabled = false/enabled = true/g' "$HOME"/.ethermintd/config/app.toml
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $1 == "pending" ]]; then
|
if [[ $1 == "pending" ]]; then
|
||||||
echo "pending mode is on, please wait for the first block committed."
|
echo "pending mode is on, please wait for the first block committed."
|
||||||
|
if [[ $OSTYPE == "darwin"* ]]; then
|
||||||
|
sed -i '' 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_propose = "3s"/timeout_propose = "30s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_commit = "5s"/timeout_commit = "150s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i '' 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
else
|
||||||
|
sed -i 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_propose = "3s"/timeout_propose = "30s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_commit = "5s"/timeout_commit = "150s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
sed -i 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' "$HOME"/.ethermintd/config/config.toml
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start the node (remove the --pruning=nothing flag if historical queries are not needed)
|
# Start the node (remove the --pruning=nothing flag if historical queries are not needed)
|
||||||
|
@ -61,4 +61,4 @@ in buildGoModule rec {
|
|||||||
license = with licenses; [ lgpl3Plus gpl3Plus ];
|
license = with licenses; [ lgpl3Plus gpl3Plus ];
|
||||||
maintainers = with maintainers; [ adisbladis RaghavSood ];
|
maintainers = with maintainers; [ adisbladis RaghavSood ];
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ version: v1
|
|||||||
plugins:
|
plugins:
|
||||||
- name: gocosmos
|
- name: gocosmos
|
||||||
out: .
|
out: .
|
||||||
opt: plugins=grpc,google/protobuf/duration.proto=google/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types,Mcosmos/orm/v1alpha1/orm.proto=github.com/cosmos/cosmos-sdk/api/cosmos/orm/v1alpha1
|
opt: plugins=grpc,Mgoogle/protobuf/duration.proto=Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types,Mcosmos/orm/v1alpha1/orm.proto=github.com/cosmos/cosmos-sdk/api/cosmos/orm/v1alpha1
|
||||||
- name: grpc-gateway
|
- name: grpc-gateway
|
||||||
out: .
|
out: .
|
||||||
opt: logtostderr=true,allow_colon_final_segments=true
|
opt: logtostderr=true,allow_colon_final_segments=true
|
||||||
|
@ -2,7 +2,7 @@ version: v1
|
|||||||
plugins:
|
plugins:
|
||||||
- name: gocosmos
|
- name: gocosmos
|
||||||
out: .
|
out: .
|
||||||
opt: plugins=grpc,google/protobuf/duration.proto=google/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types,Mcosmos/orm/v1alpha1/orm.proto=github.com/cosmos/cosmos-sdk/api/cosmos/orm/v1alpha1
|
opt: plugins=grpc,Mgoogle/protobuf/duration.proto=Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types,Mcosmos/orm/v1alpha1/orm.proto=github.com/cosmos/cosmos-sdk/api/cosmos/orm/v1alpha1
|
||||||
- name: grpc-gateway
|
- name: grpc-gateway
|
||||||
out: .
|
out: .
|
||||||
opt: logtostderr=true
|
opt: logtostderr=true
|
||||||
@ -12,4 +12,4 @@ plugins:
|
|||||||
- logtostderr=true
|
- logtostderr=true
|
||||||
- fqn_for_swagger_name=true
|
- fqn_for_swagger_name=true
|
||||||
- simple_operation_ids=true
|
- simple_operation_ids=true
|
||||||
strategy: all
|
strategy: all
|
||||||
|
44
proto/ethermint/evm/v1/events.proto
Normal file
44
proto/ethermint/evm/v1/events.proto
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package ethermint.evm.v1;
|
||||||
|
|
||||||
|
option go_package = "github.com/cerc-io/laconicd/x/evm/types";
|
||||||
|
|
||||||
|
// EventEthereumTx defines the event for an Ethereum transaction
|
||||||
|
message EventEthereumTx {
|
||||||
|
// amount
|
||||||
|
string amount = 1;
|
||||||
|
// eth_hash is the Ethereum hash of the transaction
|
||||||
|
string eth_hash = 2;
|
||||||
|
// index of the transaction in the block
|
||||||
|
string index = 3;
|
||||||
|
// gas_used is the amount of gas used by the transaction
|
||||||
|
string gas_used = 4;
|
||||||
|
// hash is the Tendermint hash of the transaction
|
||||||
|
string hash = 5;
|
||||||
|
// recipient of the transaction
|
||||||
|
string recipient = 6;
|
||||||
|
// eth_tx_failed contains a VM error should it occur
|
||||||
|
string eth_tx_failed = 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EventTxLog defines the event for an Ethereum transaction log
|
||||||
|
message EventTxLog {
|
||||||
|
// tx_logs is an array of transaction logs
|
||||||
|
repeated string tx_logs = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EventMessage
|
||||||
|
message EventMessage {
|
||||||
|
// module which emits the event
|
||||||
|
string module = 1;
|
||||||
|
// sender of the message
|
||||||
|
string sender = 2;
|
||||||
|
// tx_type is the type of the message
|
||||||
|
string tx_type = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EventBlockBloom defines an Ethereum block bloom filter event
|
||||||
|
message EventBlockBloom {
|
||||||
|
// bloom is the bloom filter of the block
|
||||||
|
string bloom = 1;
|
||||||
|
}
|
@ -29,23 +29,23 @@ message ChainConfig {
|
|||||||
// homestead_block switch (nil no fork, 0 = already homestead)
|
// homestead_block switch (nil no fork, 0 = already homestead)
|
||||||
string homestead_block = 1 [
|
string homestead_block = 1 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"homestead_block\""
|
(gogoproto.moretags) = "yaml:\"homestead_block\""
|
||||||
];
|
];
|
||||||
// dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork)
|
// dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork)
|
||||||
string dao_fork_block = 2 [
|
string dao_fork_block = 2 [
|
||||||
(gogoproto.customname) = "DAOForkBlock",
|
(gogoproto.customname) = "DAOForkBlock",
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"dao_fork_block\""
|
(gogoproto.moretags) = "yaml:\"dao_fork_block\""
|
||||||
];
|
];
|
||||||
// dao_fork_support defines whether the nodes supports or opposes the DAO hard-fork
|
// dao_fork_support defines whether the nodes supports or opposes the DAO hard-fork
|
||||||
bool dao_fork_support = 3
|
bool dao_fork_support = 3
|
||||||
[(gogoproto.customname) = "DAOForkSupport", (gogoproto.moretags) = "yaml:\"dao_fork_support\""];
|
[(gogoproto.customname) = "DAOForkSupport", (gogoproto.moretags) = "yaml:\"dao_fork_support\""];
|
||||||
// eip150_block: EIP150 implements the Gas price changes
|
// eip150_block: EIP150 implements the Gas price changes
|
||||||
// (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)
|
// (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)
|
||||||
string eip150_block = 4 [
|
string eip150_block = 4 [
|
||||||
(gogoproto.customname) = "EIP150Block",
|
(gogoproto.customname) = "EIP150Block",
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"eip150_block\""
|
(gogoproto.moretags) = "yaml:\"eip150_block\""
|
||||||
];
|
];
|
||||||
// eip150_hash: EIP150 HF hash (needed for header only clients as only gas pricing changed)
|
// eip150_hash: EIP150 HF hash (needed for header only clients as only gas pricing changed)
|
||||||
string eip150_hash = 5 [(gogoproto.customname) = "EIP150Hash", (gogoproto.moretags) = "yaml:\"byzantium_block\""];
|
string eip150_hash = 5 [(gogoproto.customname) = "EIP150Hash", (gogoproto.moretags) = "yaml:\"byzantium_block\""];
|
||||||
@ -53,43 +53,43 @@ message ChainConfig {
|
|||||||
string eip155_block = 6 [
|
string eip155_block = 6 [
|
||||||
(gogoproto.customname) = "EIP155Block",
|
(gogoproto.customname) = "EIP155Block",
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"eip155_block\""
|
(gogoproto.moretags) = "yaml:\"eip155_block\""
|
||||||
];
|
];
|
||||||
// eip158_block: EIP158 HF block
|
// eip158_block: EIP158 HF block
|
||||||
string eip158_block = 7 [
|
string eip158_block = 7 [
|
||||||
(gogoproto.customname) = "EIP158Block",
|
(gogoproto.customname) = "EIP158Block",
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"eip158_block\""
|
(gogoproto.moretags) = "yaml:\"eip158_block\""
|
||||||
];
|
];
|
||||||
// byzantium_block: Byzantium switch block (nil no fork, 0 = already on byzantium)
|
// byzantium_block: Byzantium switch block (nil no fork, 0 = already on byzantium)
|
||||||
string byzantium_block = 8 [
|
string byzantium_block = 8 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"byzantium_block\""
|
(gogoproto.moretags) = "yaml:\"byzantium_block\""
|
||||||
];
|
];
|
||||||
// constantinople_block: Constantinople switch block (nil no fork, 0 = already activated)
|
// constantinople_block: Constantinople switch block (nil no fork, 0 = already activated)
|
||||||
string constantinople_block = 9 [
|
string constantinople_block = 9 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"constantinople_block\""
|
(gogoproto.moretags) = "yaml:\"constantinople_block\""
|
||||||
];
|
];
|
||||||
// petersburg_block: Petersburg switch block (nil same as Constantinople)
|
// petersburg_block: Petersburg switch block (nil same as Constantinople)
|
||||||
string petersburg_block = 10 [
|
string petersburg_block = 10 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"petersburg_block\""
|
(gogoproto.moretags) = "yaml:\"petersburg_block\""
|
||||||
];
|
];
|
||||||
// istanbul_block: Istanbul switch block (nil no fork, 0 = already on istanbul)
|
// istanbul_block: Istanbul switch block (nil no fork, 0 = already on istanbul)
|
||||||
string istanbul_block = 11 [
|
string istanbul_block = 11 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"istanbul_block\""
|
(gogoproto.moretags) = "yaml:\"istanbul_block\""
|
||||||
];
|
];
|
||||||
// muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated)
|
// muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated)
|
||||||
string muir_glacier_block = 12 [
|
string muir_glacier_block = 12 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"muir_glacier_block\""
|
(gogoproto.moretags) = "yaml:\"muir_glacier_block\""
|
||||||
];
|
];
|
||||||
// berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin)
|
// berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin)
|
||||||
string berlin_block = 13 [
|
string berlin_block = 13 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"berlin_block\""
|
(gogoproto.moretags) = "yaml:\"berlin_block\""
|
||||||
];
|
];
|
||||||
// DEPRECATED: EWASM, YOLOV3 and Catalyst block have been deprecated
|
// DEPRECATED: EWASM, YOLOV3 and Catalyst block have been deprecated
|
||||||
reserved 14, 15, 16;
|
reserved 14, 15, 16;
|
||||||
@ -97,12 +97,12 @@ message ChainConfig {
|
|||||||
// london_block: London switch block (nil = no fork, 0 = already on london)
|
// london_block: London switch block (nil = no fork, 0 = already on london)
|
||||||
string london_block = 17 [
|
string london_block = 17 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"london_block\""
|
(gogoproto.moretags) = "yaml:\"london_block\""
|
||||||
];
|
];
|
||||||
// arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated)
|
// arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated)
|
||||||
string arrow_glacier_block = 18 [
|
string arrow_glacier_block = 18 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"arrow_glacier_block\""
|
(gogoproto.moretags) = "yaml:\"arrow_glacier_block\""
|
||||||
];
|
];
|
||||||
// DEPRECATED: merge fork block was deprecated: https://github.com/ethereum/go-ethereum/pull/24904
|
// DEPRECATED: merge fork block was deprecated: https://github.com/ethereum/go-ethereum/pull/24904
|
||||||
reserved 19;
|
reserved 19;
|
||||||
@ -127,7 +127,6 @@ message ChainConfig {
|
|||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.moretags) = "yaml:\"cancun_block\""
|
(gogoproto.moretags) = "yaml:\"cancun_block\""
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// State represents a single Storage key value pair item.
|
// State represents a single Storage key value pair item.
|
||||||
|
@ -78,7 +78,7 @@ service Query {
|
|||||||
|
|
||||||
// QueryAccountRequest is the request type for the Query/Account RPC method.
|
// QueryAccountRequest is the request type for the Query/Account RPC method.
|
||||||
message QueryAccountRequest {
|
message QueryAccountRequest {
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
// address is the ethereum hex address to query the account for.
|
// address is the ethereum hex address to query the account for.
|
||||||
@ -98,7 +98,7 @@ message QueryAccountResponse {
|
|||||||
// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC
|
// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC
|
||||||
// method.
|
// method.
|
||||||
message QueryCosmosAccountRequest {
|
message QueryCosmosAccountRequest {
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
// address is the ethereum hex address to query the account for.
|
// address is the ethereum hex address to query the account for.
|
||||||
@ -119,7 +119,7 @@ message QueryCosmosAccountResponse {
|
|||||||
// QueryValidatorAccountRequest is the request type for the
|
// QueryValidatorAccountRequest is the request type for the
|
||||||
// Query/ValidatorAccount RPC method.
|
// Query/ValidatorAccount RPC method.
|
||||||
message QueryValidatorAccountRequest {
|
message QueryValidatorAccountRequest {
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
// cons_address is the validator cons address to query the account for.
|
// cons_address is the validator cons address to query the account for.
|
||||||
@ -139,7 +139,7 @@ message QueryValidatorAccountResponse {
|
|||||||
|
|
||||||
// QueryBalanceRequest is the request type for the Query/Balance RPC method.
|
// QueryBalanceRequest is the request type for the Query/Balance RPC method.
|
||||||
message QueryBalanceRequest {
|
message QueryBalanceRequest {
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
// address is the ethereum hex address to query the balance for.
|
// address is the ethereum hex address to query the balance for.
|
||||||
@ -154,7 +154,7 @@ message QueryBalanceResponse {
|
|||||||
|
|
||||||
// QueryStorageRequest is the request type for the Query/Storage RPC method.
|
// QueryStorageRequest is the request type for the Query/Storage RPC method.
|
||||||
message QueryStorageRequest {
|
message QueryStorageRequest {
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
// address is the ethereum hex address to query the storage state for.
|
// address is the ethereum hex address to query the storage state for.
|
||||||
@ -173,7 +173,7 @@ message QueryStorageResponse {
|
|||||||
|
|
||||||
// QueryCodeRequest is the request type for the Query/Code RPC method.
|
// QueryCodeRequest is the request type for the Query/Code RPC method.
|
||||||
message QueryCodeRequest {
|
message QueryCodeRequest {
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
// address is the ethereum hex address to query the code for.
|
// address is the ethereum hex address to query the code for.
|
||||||
@ -189,7 +189,7 @@ message QueryCodeResponse {
|
|||||||
|
|
||||||
// QueryTxLogsRequest is the request type for the Query/TxLogs RPC method.
|
// QueryTxLogsRequest is the request type for the Query/TxLogs RPC method.
|
||||||
message QueryTxLogsRequest {
|
message QueryTxLogsRequest {
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
|
|
||||||
// hash is the ethereum transaction hex hash to query the logs for.
|
// hash is the ethereum transaction hex hash to query the logs for.
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package ethermint.evm.v1;
|
package ethermint.evm.v1;
|
||||||
|
|
||||||
|
import "cosmos/msg/v1/msg.proto";
|
||||||
import "cosmos_proto/cosmos.proto";
|
import "cosmos_proto/cosmos.proto";
|
||||||
import "ethermint/evm/v1/evm.proto";
|
import "ethermint/evm/v1/evm.proto";
|
||||||
import "gogoproto/gogo.proto";
|
import "gogoproto/gogo.proto";
|
||||||
@ -15,6 +16,9 @@ service Msg {
|
|||||||
rpc EthereumTx(MsgEthereumTx) returns (MsgEthereumTxResponse) {
|
rpc EthereumTx(MsgEthereumTx) returns (MsgEthereumTxResponse) {
|
||||||
option (google.api.http).post = "/ethermint/evm/v1/ethereum_tx";
|
option (google.api.http).post = "/ethermint/evm/v1/ethereum_tx";
|
||||||
};
|
};
|
||||||
|
// UpdateParams defined a governance operation for updating the x/evm module parameters.
|
||||||
|
// The authority is hard-coded to the Cosmos SDK x/gov module account
|
||||||
|
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.
|
// MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.
|
||||||
@ -38,7 +42,7 @@ message MsgEthereumTx {
|
|||||||
// NOTE: All non-protected transactions (i.e non EIP155 signed) will fail if the
|
// NOTE: All non-protected transactions (i.e non EIP155 signed) will fail if the
|
||||||
// AllowUnprotectedTxs parameter is disabled.
|
// AllowUnprotectedTxs parameter is disabled.
|
||||||
message LegacyTx {
|
message LegacyTx {
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
option (cosmos_proto.implements_interface) = "TxData";
|
option (cosmos_proto.implements_interface) = "TxData";
|
||||||
|
|
||||||
// nonce corresponds to the account nonce (transaction sequence).
|
// nonce corresponds to the account nonce (transaction sequence).
|
||||||
@ -64,14 +68,14 @@ message LegacyTx {
|
|||||||
|
|
||||||
// AccessListTx is the data of EIP-2930 access list transactions.
|
// AccessListTx is the data of EIP-2930 access list transactions.
|
||||||
message AccessListTx {
|
message AccessListTx {
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
option (cosmos_proto.implements_interface) = "TxData";
|
option (cosmos_proto.implements_interface) = "TxData";
|
||||||
|
|
||||||
// chain_id of the destination EVM chain
|
// chain_id of the destination EVM chain
|
||||||
string chain_id = 1 [
|
string chain_id = 1 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.customname) = "ChainID",
|
(gogoproto.customname) = "ChainID",
|
||||||
(gogoproto.jsontag) = "chainID"
|
(gogoproto.jsontag) = "chainID"
|
||||||
];
|
];
|
||||||
// nonce corresponds to the account nonce (transaction sequence).
|
// nonce corresponds to the account nonce (transaction sequence).
|
||||||
uint64 nonce = 2;
|
uint64 nonce = 2;
|
||||||
@ -99,14 +103,14 @@ message AccessListTx {
|
|||||||
|
|
||||||
// DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
|
// DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
|
||||||
message DynamicFeeTx {
|
message DynamicFeeTx {
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
option (cosmos_proto.implements_interface) = "TxData";
|
option (cosmos_proto.implements_interface) = "TxData";
|
||||||
|
|
||||||
// chain_id of the destination EVM chain
|
// chain_id of the destination EVM chain
|
||||||
string chain_id = 1 [
|
string chain_id = 1 [
|
||||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||||
(gogoproto.customname) = "ChainID",
|
(gogoproto.customname) = "ChainID",
|
||||||
(gogoproto.jsontag) = "chainID"
|
(gogoproto.jsontag) = "chainID"
|
||||||
];
|
];
|
||||||
// nonce corresponds to the account nonce (transaction sequence).
|
// nonce corresponds to the account nonce (transaction sequence).
|
||||||
uint64 nonce = 2;
|
uint64 nonce = 2;
|
||||||
@ -158,3 +162,19 @@ message MsgEthereumTxResponse {
|
|||||||
// gas_used specifies how much gas was consumed by the transaction
|
// gas_used specifies how much gas was consumed by the transaction
|
||||||
uint64 gas_used = 5;
|
uint64 gas_used = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MsgUpdateParams defines a Msg for updating the x/evm module parameters.
|
||||||
|
message MsgUpdateParams {
|
||||||
|
option (cosmos.msg.v1.signer) = "authority";
|
||||||
|
|
||||||
|
// authority is the address of the governance account.
|
||||||
|
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
||||||
|
|
||||||
|
// params defines the x/evm parameters to update.
|
||||||
|
// NOTE: All parameters must be supplied.
|
||||||
|
Params params = 2 [(gogoproto.nullable) = false];
|
||||||
|
}
|
||||||
|
|
||||||
|
// MsgUpdateParamsResponse defines the response structure for executing a
|
||||||
|
// MsgUpdateParams message.
|
||||||
|
message MsgUpdateParamsResponse {}
|
||||||
|
18
proto/ethermint/feemarket/v1/events.proto
Normal file
18
proto/ethermint/feemarket/v1/events.proto
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package ethermint.feemarket.v1;
|
||||||
|
|
||||||
|
option go_package = "github.com/cerc-io/laconicd/x/feemarket/types";
|
||||||
|
|
||||||
|
// EventFeeMarket is the event type for the fee market module
|
||||||
|
message EventFeeMarket {
|
||||||
|
// base_fee for EIP-1559 blocks
|
||||||
|
string base_fee = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EventBlockGas defines an Ethereum block gas event
|
||||||
|
message EventBlockGas {
|
||||||
|
// height of the block
|
||||||
|
string height = 1;
|
||||||
|
// amount of gas wanted by the block
|
||||||
|
string amount = 2;
|
||||||
|
}
|
@ -8,7 +8,7 @@ option go_package = "github.com/cerc-io/laconicd/x/feemarket/types";
|
|||||||
|
|
||||||
// GenesisState defines the feemarket module's genesis state.
|
// GenesisState defines the feemarket module's genesis state.
|
||||||
message GenesisState {
|
message GenesisState {
|
||||||
// params defines all the paramaters of the module.
|
// params defines all the parameters of the feemarket module.
|
||||||
Params params = 1 [(gogoproto.nullable) = false];
|
Params params = 1 [(gogoproto.nullable) = false];
|
||||||
// DEPRECATED: base fee is the exported value from previous software version.
|
// DEPRECATED: base fee is the exported value from previous software version.
|
||||||
// Zero by default.
|
// Zero by default.
|
||||||
|
30
proto/ethermint/feemarket/v1/tx.proto
Normal file
30
proto/ethermint/feemarket/v1/tx.proto
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package ethermint.feemarket.v1;
|
||||||
|
|
||||||
|
import "cosmos/msg/v1/msg.proto";
|
||||||
|
import "cosmos_proto/cosmos.proto";
|
||||||
|
import "ethermint/feemarket/v1/feemarket.proto";
|
||||||
|
import "gogoproto/gogo.proto";
|
||||||
|
|
||||||
|
option go_package = "github.com/cerc-io/laconicd/x/feemarket/types";
|
||||||
|
|
||||||
|
// Msg defines the erc20 Msg service.
|
||||||
|
service Msg {
|
||||||
|
// UpdateParams defined a governance operation for updating the x/feemarket module parameters.
|
||||||
|
// The authority is hard-coded to the Cosmos SDK x/gov module account
|
||||||
|
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
// MsgUpdateParams defines a Msg for updating the x/feemarket module parameters.
|
||||||
|
message MsgUpdateParams {
|
||||||
|
option (cosmos.msg.v1.signer) = "authority";
|
||||||
|
// authority is the address of the governance account.
|
||||||
|
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
||||||
|
// params defines the x/feemarket parameters to update.
|
||||||
|
// NOTE: All parameters must be supplied.
|
||||||
|
Params params = 2 [(gogoproto.nullable) = false];
|
||||||
|
}
|
||||||
|
|
||||||
|
// MsgUpdateParamsResponse defines the response structure for executing a
|
||||||
|
// MsgUpdateParams message.
|
||||||
|
message MsgUpdateParamsResponse {}
|
@ -10,9 +10,9 @@ option go_package = "github.com/cerc-io/laconicd/types";
|
|||||||
// EthAccount implements the authtypes.AccountI interface and embeds an
|
// EthAccount implements the authtypes.AccountI interface and embeds an
|
||||||
// authtypes.BaseAccount type. It is compatible with the auth AccountKeeper.
|
// authtypes.BaseAccount type. It is compatible with the auth AccountKeeper.
|
||||||
message EthAccount {
|
message EthAccount {
|
||||||
option (gogoproto.goproto_getters) = false;
|
option (gogoproto.goproto_getters) = false;
|
||||||
option (gogoproto.goproto_stringer) = false;
|
option (gogoproto.goproto_stringer) = false;
|
||||||
option (gogoproto.equal) = false;
|
option (gogoproto.equal) = false;
|
||||||
|
|
||||||
option (cosmos_proto.implements_interface) = "github.com/cosmos/cosmos-sdk/x/auth/types.AccountI";
|
option (cosmos_proto.implements_interface) = "github.com/cosmos/cosmos-sdk/x/auth/types.AccountI";
|
||||||
|
|
||||||
|
@ -5,9 +5,9 @@ import "gogoproto/gogo.proto";
|
|||||||
|
|
||||||
option go_package = "github.com/cerc-io/laconicd/types";
|
option go_package = "github.com/cerc-io/laconicd/types";
|
||||||
|
|
||||||
// ExtensionOptionDynamicFeeTx is an extension option that specify the maxPrioPrice for cosmos tx
|
// ExtensionOptionDynamicFeeTx is an extension option that specifies the maxPrioPrice for cosmos tx
|
||||||
message ExtensionOptionDynamicFeeTx {
|
message ExtensionOptionDynamicFeeTx {
|
||||||
// the same as `max_priority_fee_per_gas` in eip-1559 spec
|
// max_priority_price is the same as `max_priority_fee_per_gas` in eip-1559 spec
|
||||||
string max_priority_price = 1
|
string max_priority_price = 1
|
||||||
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
||||||
}
|
}
|
||||||
|
17
rpc/apis.go
17
rpc/apis.go
@ -1,5 +1,18 @@
|
|||||||
// Package rpc contains RPC handler methods and utilities to start
|
// Copyright 2021 Evmos Foundation
|
||||||
// Ethermint's Web3-compatibly JSON-RPC server.
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package rpc
|
package rpc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -89,7 +89,6 @@ func (suite *BackendTestSuite) SetupTest() {
|
|||||||
// Add codec
|
// Add codec
|
||||||
encCfg := encoding.MakeConfig(app.ModuleBasics)
|
encCfg := encoding.MakeConfig(app.ModuleBasics)
|
||||||
suite.backend.clientCtx.Codec = encCfg.Codec
|
suite.backend.clientCtx.Codec = encCfg.Codec
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// buildEthereumTx returns an example legacy Ethereum transaction
|
// buildEthereumTx returns an example legacy Ethereum transaction
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -16,6 +31,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/core/vm"
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
|
@ -489,5 +489,4 @@ func (suite *BackendTestSuite) TestGasPrice() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -146,41 +161,42 @@ func (b *Backend) FeeHistory(
|
|||||||
) (*rpctypes.FeeHistoryResult, error) {
|
) (*rpctypes.FeeHistoryResult, error) {
|
||||||
blockEnd := int64(lastBlock)
|
blockEnd := int64(lastBlock)
|
||||||
|
|
||||||
if blockEnd <= 0 {
|
if blockEnd < 0 {
|
||||||
blockNumber, err := b.BlockNumber()
|
blockNumber, err := b.BlockNumber()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
blockEnd = int64(blockNumber)
|
blockEnd = int64(blockNumber)
|
||||||
}
|
}
|
||||||
userBlockCountInt := int64(userBlockCount)
|
|
||||||
|
blocks := int64(userBlockCount)
|
||||||
maxBlockCount := int64(b.cfg.JSONRPC.FeeHistoryCap)
|
maxBlockCount := int64(b.cfg.JSONRPC.FeeHistoryCap)
|
||||||
if userBlockCountInt > maxBlockCount {
|
if blocks > maxBlockCount {
|
||||||
return nil, fmt.Errorf("FeeHistory user block count %d higher than %d", userBlockCountInt, maxBlockCount)
|
return nil, fmt.Errorf("FeeHistory user block count %d higher than %d", blocks, maxBlockCount)
|
||||||
}
|
|
||||||
blockStart := blockEnd - userBlockCountInt
|
|
||||||
if blockStart < 0 {
|
|
||||||
blockStart = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
blockCount := blockEnd - blockStart
|
if blockEnd+1 < blocks {
|
||||||
|
blocks = blockEnd + 1
|
||||||
|
}
|
||||||
|
// Ensure not trying to retrieve before genesis.
|
||||||
|
blockStart := blockEnd + 1 - blocks
|
||||||
oldestBlock := (*hexutil.Big)(big.NewInt(blockStart))
|
oldestBlock := (*hexutil.Big)(big.NewInt(blockStart))
|
||||||
|
|
||||||
// prepare space
|
// prepare space
|
||||||
reward := make([][]*hexutil.Big, blockCount)
|
reward := make([][]*hexutil.Big, blocks)
|
||||||
rewardCount := len(rewardPercentiles)
|
rewardCount := len(rewardPercentiles)
|
||||||
for i := 0; i < int(blockCount); i++ {
|
for i := 0; i < int(blocks); i++ {
|
||||||
reward[i] = make([]*hexutil.Big, rewardCount)
|
reward[i] = make([]*hexutil.Big, rewardCount)
|
||||||
}
|
}
|
||||||
thisBaseFee := make([]*hexutil.Big, blockCount)
|
|
||||||
thisGasUsedRatio := make([]float64, blockCount)
|
thisBaseFee := make([]*hexutil.Big, blocks+1)
|
||||||
|
thisGasUsedRatio := make([]float64, blocks)
|
||||||
|
|
||||||
// rewards should only be calculated if reward percentiles were included
|
// rewards should only be calculated if reward percentiles were included
|
||||||
calculateRewards := rewardCount != 0
|
calculateRewards := rewardCount != 0
|
||||||
|
|
||||||
// fetch block
|
// fetch block
|
||||||
for blockID := blockStart; blockID < blockEnd; blockID++ {
|
for blockID := blockStart; blockID <= blockEnd; blockID++ {
|
||||||
index := int32(blockID - blockStart)
|
index := int32(blockID - blockStart)
|
||||||
// tendermint block
|
// tendermint block
|
||||||
tendermintblock, err := b.TendermintBlockByNumber(rpctypes.BlockNumber(blockID))
|
tendermintblock, err := b.TendermintBlockByNumber(rpctypes.BlockNumber(blockID))
|
||||||
@ -209,6 +225,7 @@ func (b *Backend) FeeHistory(
|
|||||||
|
|
||||||
// copy
|
// copy
|
||||||
thisBaseFee[index] = (*hexutil.Big)(oneFeeHistory.BaseFee)
|
thisBaseFee[index] = (*hexutil.Big)(oneFeeHistory.BaseFee)
|
||||||
|
thisBaseFee[index+1] = (*hexutil.Big)(oneFeeHistory.NextBaseFee)
|
||||||
thisGasUsedRatio[index] = oneFeeHistory.GasUsedRatio
|
thisGasUsedRatio[index] = oneFeeHistory.GasUsedRatio
|
||||||
if calculateRewards {
|
if calculateRewards {
|
||||||
for j := 0; j < rewardCount; j++ {
|
for j := 0; j < rewardCount; j++ {
|
||||||
|
@ -165,7 +165,6 @@ func (suite *BackendTestSuite) TestChainId() {
|
|||||||
var header metadata.MD
|
var header metadata.MD
|
||||||
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
||||||
RegisterParamsInvalidHeight(queryClient, &header, int64(1))
|
RegisterParamsInvalidHeight(queryClient, &header, int64(1))
|
||||||
|
|
||||||
},
|
},
|
||||||
expChainId,
|
expChainId,
|
||||||
true,
|
true,
|
||||||
@ -338,7 +337,7 @@ func (suite *BackendTestSuite) TestFeeHistory() {
|
|||||||
RegisterParamsError(queryClient, &header, ethrpc.BlockNumber(1).Int64())
|
RegisterParamsError(queryClient, &header, ethrpc.BlockNumber(1).Int64())
|
||||||
},
|
},
|
||||||
1,
|
1,
|
||||||
0,
|
-1,
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
false,
|
false,
|
||||||
@ -352,7 +351,7 @@ func (suite *BackendTestSuite) TestFeeHistory() {
|
|||||||
RegisterParams(queryClient, &header, ethrpc.BlockNumber(1).Int64())
|
RegisterParams(queryClient, &header, ethrpc.BlockNumber(1).Int64())
|
||||||
},
|
},
|
||||||
1,
|
1,
|
||||||
0,
|
-1,
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
false,
|
false,
|
||||||
@ -387,7 +386,7 @@ func (suite *BackendTestSuite) TestFeeHistory() {
|
|||||||
{
|
{
|
||||||
"fail - Invalid base fee",
|
"fail - Invalid base fee",
|
||||||
func(validator sdk.AccAddress) {
|
func(validator sdk.AccAddress) {
|
||||||
//baseFee := sdk.NewInt(1)
|
// baseFee := sdk.NewInt(1)
|
||||||
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
||||||
client := suite.backend.clientCtx.Client.(*mocks.Client)
|
client := suite.backend.clientCtx.Client.(*mocks.Client)
|
||||||
suite.backend.cfg.JSONRPC.FeeHistoryCap = 2
|
suite.backend.cfg.JSONRPC.FeeHistoryCap = 2
|
||||||
@ -406,6 +405,7 @@ func (suite *BackendTestSuite) TestFeeHistory() {
|
|||||||
{
|
{
|
||||||
"pass - Valid FeeHistoryResults object",
|
"pass - Valid FeeHistoryResults object",
|
||||||
func(validator sdk.AccAddress) {
|
func(validator sdk.AccAddress) {
|
||||||
|
var header metadata.MD
|
||||||
baseFee := sdk.NewInt(1)
|
baseFee := sdk.NewInt(1)
|
||||||
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
||||||
client := suite.backend.clientCtx.Client.(*mocks.Client)
|
client := suite.backend.clientCtx.Client.(*mocks.Client)
|
||||||
@ -415,12 +415,14 @@ func (suite *BackendTestSuite) TestFeeHistory() {
|
|||||||
RegisterBaseFee(queryClient, baseFee)
|
RegisterBaseFee(queryClient, baseFee)
|
||||||
RegisterValidatorAccount(queryClient, validator)
|
RegisterValidatorAccount(queryClient, validator)
|
||||||
RegisterConsensusParams(client, 1)
|
RegisterConsensusParams(client, 1)
|
||||||
|
RegisterParams(queryClient, &header, 1)
|
||||||
|
RegisterParamsWithoutHeader(queryClient, 1)
|
||||||
},
|
},
|
||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
&rpc.FeeHistoryResult{
|
&rpc.FeeHistoryResult{
|
||||||
OldestBlock: (*hexutil.Big)(big.NewInt(0)),
|
OldestBlock: (*hexutil.Big)(big.NewInt(1)),
|
||||||
BaseFee: []*hexutil.Big{(*hexutil.Big)(big.NewInt(1))},
|
BaseFee: []*hexutil.Big{(*hexutil.Big)(big.NewInt(1)), (*hexutil.Big)(big.NewInt(1))},
|
||||||
GasUsedRatio: []float64{0},
|
GasUsedRatio: []float64{0},
|
||||||
Reward: [][]*hexutil.Big{{(*hexutil.Big)(big.NewInt(0)), (*hexutil.Big)(big.NewInt(0)), (*hexutil.Big)(big.NewInt(0)), (*hexutil.Big)(big.NewInt(0))}},
|
Reward: [][]*hexutil.Big{{(*hexutil.Big)(big.NewInt(0)), (*hexutil.Big)(big.NewInt(0)), (*hexutil.Big)(big.NewInt(0)), (*hexutil.Big)(big.NewInt(0))}},
|
||||||
},
|
},
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -12,7 +12,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (suite *BackendTestSuite) TestGetLogs() {
|
func (suite *BackendTestSuite) TestGetLogs() {
|
||||||
|
|
||||||
_, bz := suite.buildEthereumTx()
|
_, bz := suite.buildEthereumTx()
|
||||||
block := tmtypes.MakeBlock(1, []tmtypes.Tx{bz}, nil, nil)
|
block := tmtypes.MakeBlock(1, []tmtypes.Tx{bz}, nil, nil)
|
||||||
logs := make([]*evmtypes.Log, 0, 1)
|
logs := make([]*evmtypes.Log, 0, 1)
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -191,7 +191,6 @@ func (suite *BackendTestSuite) TestSyncing() {
|
|||||||
RegisterStatus(client)
|
RegisterStatus(client)
|
||||||
status, _ := client.Status(suite.backend.ctx)
|
status, _ := client.Status(suite.backend.ctx)
|
||||||
status.SyncInfo.CatchingUp = true
|
status.SyncInfo.CatchingUp = true
|
||||||
|
|
||||||
},
|
},
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"startingBlock": hexutil.Uint64(0),
|
"startingBlock": hexutil.Uint64(0),
|
||||||
@ -255,7 +254,7 @@ func (suite *BackendTestSuite) TestSetEtherbase() {
|
|||||||
c := sdk.NewDecCoin("aphoton", sdk.NewIntFromBigInt(big.NewInt(1)))
|
c := sdk.NewDecCoin("aphoton", sdk.NewIntFromBigInt(big.NewInt(1)))
|
||||||
suite.backend.cfg.SetMinGasPrices(sdk.DecCoins{c})
|
suite.backend.cfg.SetMinGasPrices(sdk.DecCoins{c})
|
||||||
delAddr, _ := suite.backend.GetCoinbase()
|
delAddr, _ := suite.backend.GetCoinbase()
|
||||||
//account, _ := suite.backend.clientCtx.AccountRetriever.GetAccount(suite.backend.clientCtx, delAddr)
|
// account, _ := suite.backend.clientCtx.AccountRetriever.GetAccount(suite.backend.clientCtx, delAddr)
|
||||||
delCommonAddr := common.BytesToAddress(delAddr.Bytes())
|
delCommonAddr := common.BytesToAddress(delAddr.Bytes())
|
||||||
request := &authtypes.QueryAccountRequest{Address: sdk.AccAddress(delCommonAddr.Bytes()).String()}
|
request := &authtypes.QueryAccountRequest{Address: sdk.AccAddress(delCommonAddr.Bytes()).String()}
|
||||||
requestMarshal, _ := request.Marshal()
|
requestMarshal, _ := request.Marshal()
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -80,7 +80,7 @@ func (suite *BackendTestSuite) TestTraceTransaction() {
|
|||||||
{
|
{
|
||||||
"fail - block not found",
|
"fail - block not found",
|
||||||
func() {
|
func() {
|
||||||
//var header metadata.MD
|
// var header metadata.MD
|
||||||
client := suite.backend.clientCtx.Client.(*mocks.Client)
|
client := suite.backend.clientCtx.Client.(*mocks.Client)
|
||||||
RegisterBlockError(client, 1)
|
RegisterBlockError(client, 1)
|
||||||
},
|
},
|
||||||
@ -224,7 +224,6 @@ func (suite *BackendTestSuite) TestTraceBlock() {
|
|||||||
func() {
|
func() {
|
||||||
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient)
|
||||||
RegisterTraceBlock(queryClient, []*evmtypes.MsgEthereumTx{msgEthTx})
|
RegisterTraceBlock(queryClient, []*evmtypes.MsgEthereumTx{msgEthTx})
|
||||||
|
|
||||||
},
|
},
|
||||||
[]*evmtypes.TxTraceResult{},
|
[]*evmtypes.TxTraceResult{},
|
||||||
&resBlockFilled,
|
&resBlockFilled,
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -11,6 +26,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
tmrpctypes "github.com/tendermint/tendermint/rpc/core/types"
|
tmrpctypes "github.com/tendermint/tendermint/rpc/core/types"
|
||||||
|
@ -555,7 +555,6 @@ func (suite *BackendTestSuite) TestGetTransactionReceipt() {
|
|||||||
RegisterParamsWithoutHeader(queryClient, 1)
|
RegisterParamsWithoutHeader(queryClient, 1)
|
||||||
RegisterBlock(client, 1, txBz)
|
RegisterBlock(client, 1, txBz)
|
||||||
RegisterBlockResults(client, 1)
|
RegisterBlockResults(client, 1)
|
||||||
|
|
||||||
},
|
},
|
||||||
msgEthereumTx,
|
msgEthereumTx,
|
||||||
&types.Block{Header: types.Header{Height: 1}, Data: types.Data{Txs: []types.Tx{txBz}}},
|
&types.Block{Header: types.Header{Height: 1}, Data: types.Data{Txs: []types.Tx{txBz}}},
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -15,6 +30,7 @@ import (
|
|||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
|
"github.com/ethereum/go-ethereum/consensus/misc"
|
||||||
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||||
|
|
||||||
abci "github.com/tendermint/tendermint/abci/types"
|
abci "github.com/tendermint/tendermint/abci/types"
|
||||||
@ -117,7 +133,12 @@ func (b *Backend) processBlock(
|
|||||||
|
|
||||||
// set basefee
|
// set basefee
|
||||||
targetOneFeeHistory.BaseFee = blockBaseFee
|
targetOneFeeHistory.BaseFee = blockBaseFee
|
||||||
|
cfg := b.ChainConfig()
|
||||||
|
if cfg.IsLondon(big.NewInt(blockHeight + 1)) {
|
||||||
|
targetOneFeeHistory.NextBaseFee = misc.CalcBaseFee(cfg, b.CurrentHeader())
|
||||||
|
} else {
|
||||||
|
targetOneFeeHistory.NextBaseFee = new(big.Int)
|
||||||
|
}
|
||||||
// set gas used ratio
|
// set gas used ratio
|
||||||
gasLimitUint64, ok := (*ethBlock)["gasLimit"].(hexutil.Uint64)
|
gasLimitUint64, ok := (*ethBlock)["gasLimit"].(hexutil.Uint64)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
10
rpc/doc.go
10
rpc/doc.go
@ -1,10 +0,0 @@
|
|||||||
// Package rpc contains RPC handler methods, namespaces and utilities to start
|
|
||||||
// Ethermint's Web3-compatible JSON-RPC server.
|
|
||||||
//
|
|
||||||
// The list of available namespaces are:
|
|
||||||
//
|
|
||||||
// * `rpc/namespaces/eth`: `eth` namespace. Exposes the `PublicEthereumAPI` and the `PublicFilterAPI`.
|
|
||||||
// * `rpc/namespaces/personal`: `personal` namespace. Exposes the `PrivateAccountAPI`.
|
|
||||||
// * `rpc/namespaces/net`: `net` namespace. Exposes the `PublicNetAPI`.
|
|
||||||
// * `rpc/namespaces/web3`: `web3` namespace. Exposes the `PublicWeb3API`
|
|
||||||
package rpc
|
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package pubsub
|
package pubsub
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package debug
|
package debug
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package debug
|
package debug
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package eth
|
package eth
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package filters
|
package filters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -1,3 +1,18 @@
|
|||||||
|
// Copyright 2021 Evmos Foundation
|
||||||
|
// This file is part of Evmos' Ethermint library.
|
||||||
|
//
|
||||||
|
// The Ethermint library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The Ethermint library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE
|
||||||
package filters
|
package filters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user