diff --git a/CHANGELOG.md b/CHANGELOG.md
index 657fdd7..a1b75ad 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,20 +1,39 @@
-
-## [v2.2.4](https://github.com/AstraProtocol/astra/compare/v2.1.3...v2.2.4) (2023-01-31)
+
+
+## [v2.2.5](https://github.com/AstraProtocol/astra/compare/v2.2.4...v2.2.5) (2023-03-18)
+
+### Feat
+
+* Vesting account cannot delegate, create validator ([#181](https://github.com/AstraProtocol/astra/issues/181))
+
+
+
+## [v2.2.5-rc](https://github.com/AstraProtocol/astra/compare/v2.2.4...v2.2.5-rc) (2023-03-17)
### Chore
+* update typo
+* update CHANGELOG.md and refactor go.mod
+* update Genesis Distribution
+* update changelog
* update init.sh
+* upadte init.sh
* update script gen
* update swagger
* remove code unused
* remove proto unused
+### Deps
+
+* bump ginkgo to v2.7.1, gomega to v1.26.0
+
### Docs
* add module feeburn
### Feat
+* account vesting cannot delegate
* add get total_fee_burn in module fee
* add feeburn rest api
* add module feeburn
@@ -22,11 +41,15 @@
### Fix
+* fix validate vesting account
* integer overflow ([#161](https://github.com/AstraProtocol/astra/issues/161))
* totalBurnAmount incorrect
* miss feeburn in ante handler
### Refactor
+
+* update error code
+* update logic check burn amount
* remove default MinGasPrice
* remove upgrade handler
* add default DefaultMinGasPrice, DefaultMinGasMultiplier
@@ -37,6 +60,92 @@
### Test
+* check fee burn when test fail
+* update unittest for mint module
+* update integration tests
+* update test_fee_payer ([#159](https://github.com/AstraProtocol/astra/issues/159))
+* update test_fee_payer
+* update integration tests for mint
+* update integration test cases
+* upadte integration tests for mint
+* update integration test
+* add integration test evm tx
+* update integration test feeburn
+* add feeburn integration test
+* fix unittest invalid denom
+
+
+
+## [v2.2.4](https://github.com/AstraProtocol/astra/compare/v2.2.4-rc...v2.2.4) (2023-02-01)
+
+### Feat
+
+* add module mint, feeburn ([#157](https://github.com/AstraProtocol/astra/issues/157))
+
+
+
+## [v2.2.4-rc](https://github.com/AstraProtocol/astra/compare/v2.2.3-rc...v2.2.4-rc) (2023-01-12)
+
+
+
+## [v2.2.3-rc](https://github.com/AstraProtocol/astra/compare/v2.2.2-rc...v2.2.3-rc) (2023-01-12)
+
+
+
+## [v2.2.2-rc](https://github.com/AstraProtocol/astra/compare/v2.2.1-rc...v2.2.2-rc) (2023-01-11)
+
+### Refactor
+
+* remove default MinGasPrice
+* remove upgrade handler
+
+
+
+## [v2.2.1-rc](https://github.com/AstraProtocol/astra/compare/v2.2.0-rc...v2.2.1-rc) (2023-01-05)
+
+### Refactor
+
+* add default DefaultMinGasPrice, DefaultMinGasMultiplier
+
+
+
+## [v2.2.0-rc](https://github.com/AstraProtocol/astra/compare/v2.1.3...v2.2.0-rc) (2023-01-05)
+
+### Chore
+
+* update init.sh
+* upadte init.sh
+* update script gen
+* update swagger
+* remove code unused
+* remove proto unused
+
+### Docs
+
+* add module feeburn
+
+### Feat
+
+* add get total_fee_burn in module fee
+* add feeburn rest api
+* add module feeburn
+* add NewMinGasPriceDecorator
+
+### Fix
+
+* integer overflow ([#161](https://github.com/AstraProtocol/astra/issues/161))
+* totalBurnAmount incorrect
+* miss feeburn in ante handler
+
+### Refactor
+
+* add handler errror ([#160](https://github.com/AstraProtocol/astra/issues/160))
+* update proto
+* reorder module
+* update astra app
+
+### Test
+
* update unittest for mint module
* update integration tests
* update test_fee_payer ([#159](https://github.com/AstraProtocol/astra/issues/159))
diff --git a/app/ante/ante.go b/app/ante/ante.go
index afe7e5e..aab90a3 100644
--- a/app/ante/ante.go
+++ b/app/ante/ante.go
@@ -4,8 +4,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
authante "github.com/cosmos/cosmos-sdk/x/auth/ante"
-
- ethante "github.com/evmos/ethermint/app/ante"
)
// NewAnteHandler returns an ante handler responsible for attempting to route an
@@ -18,8 +16,6 @@ func NewAnteHandler(options HandlerOptions) sdk.AnteHandler {
) (newCtx sdk.Context, err error) {
var anteHandler sdk.AnteHandler
- defer ethante.Recover(ctx.Logger(), &err)
-
txWithExtensions, ok := tx.(authante.HasExtensionOptionsTx)
if ok {
opts := txWithExtensions.GetExtensionOptions()
diff --git a/app/ante/comission.go b/app/ante/comission.go
deleted file mode 100644
index 04dfdf1..0000000
--- a/app/ante/comission.go
+++ /dev/null
@@ -1,84 +0,0 @@
-package ante
-
-import (
- "github.com/cosmos/cosmos-sdk/codec"
- sdk "github.com/cosmos/cosmos-sdk/types"
-
- sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
- "github.com/cosmos/cosmos-sdk/x/authz"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-)
-
-var minCommission = sdk.NewDecWithPrec(5, 2) // 5%
-
-// TODO: remove once Cosmos SDK is upgraded to v0.46
-
-// ValidatorCommissionDecorator validates that the validator commission is always
-// greater or equal than the min commission rate
-type ValidatorCommissionDecorator struct {
- cdc codec.BinaryCodec
-}
-
-// NewValidatorCommissionDecorator creates a new NewValidatorCommissionDecorator
-func NewValidatorCommissionDecorator(cdc codec.BinaryCodec) ValidatorCommissionDecorator {
- return ValidatorCommissionDecorator{
- cdc: cdc,
- }
-}
-
-// AnteHandle checks if the tx contains a staking create validator or edit validator.
-// It errors if the the commission rate is below the min threshold.
-func (vcd ValidatorCommissionDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
- for _, msg := range tx.GetMsgs() {
- switch msg := msg.(type) {
- case *authz.MsgExec:
- // Check for bypassing authorization
- if err := vcd.validateAuthz(ctx, msg); err != nil {
- return ctx, err
- }
-
- default:
- if err := vcd.validateMsg(ctx, msg); err != nil {
- return ctx, err
- }
- }
- }
-
- return next(ctx, tx, simulate)
-}
-
-// validateAuthz validates the authorization internal message
-func (vcd ValidatorCommissionDecorator) validateAuthz(ctx sdk.Context, execMsg *authz.MsgExec) error {
- for _, v := range execMsg.Msgs {
- var innerMsg sdk.Msg
- err := vcd.cdc.UnpackAny(v, &innerMsg)
- if err != nil {
- return sdkerrors.Wrap(err, "cannot unmarshal authz exec msgs")
- }
-
- if err := vcd.validateMsg(ctx, innerMsg); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-// validateMsg checks that the commission rate is over 5% for create and edit validator msgs
-func (vcd ValidatorCommissionDecorator) validateMsg(_ sdk.Context, msg sdk.Msg) error {
- switch msg := msg.(type) {
- case *stakingtypes.MsgCreateValidator:
- if msg.Commission.Rate.LT(minCommission) {
- return sdkerrors.Wrapf(
- sdkerrors.ErrInvalidRequest,
- "validator commission %s be lower than minimum of %s", msg.Commission.Rate, minCommission)
- }
- case *stakingtypes.MsgEditValidator:
- if msg.CommissionRate != nil && msg.CommissionRate.LT(minCommission) {
- return sdkerrors.Wrapf(
- sdkerrors.ErrInvalidRequest,
- "validator commission %s be lower than minimum of %s", msg.CommissionRate, minCommission)
- }
- }
- return nil
-}
diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go
index d231d1c..24340b4 100644
--- a/app/ante/handler_options.go
+++ b/app/ante/handler_options.go
@@ -1,7 +1,6 @@
package ante
import (
- feeBurnKeeper "github.com/AstraProtocol/astra/v2/x/feeburn/keeper"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
@@ -9,33 +8,37 @@ import (
"github.com/cosmos/cosmos-sdk/x/auth/ante"
authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- ibcante "github.com/cosmos/ibc-go/v3/modules/core/ante"
- ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper"
+ sdkvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
+ ibcante "github.com/cosmos/ibc-go/v6/modules/core/ante"
+ ibckeeper "github.com/cosmos/ibc-go/v6/modules/core/keeper"
+ cosmosante "github.com/evmos/evmos/v12/app/ante/cosmos"
- ethante "github.com/evmos/ethermint/app/ante"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ evmante "github.com/evmos/evmos/v12/app/ante/evm"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
- feeburnante "github.com/AstraProtocol/astra/v2/x/feeburn/ante"
- feeburntypes "github.com/AstraProtocol/astra/v2/x/feeburn/types"
- vestingtypes "github.com/evmos/evmos/v6/x/vesting/types"
+ feeburnante "github.com/AstraProtocol/astra/v3/x/feeburn/ante"
+ feeburntypes "github.com/AstraProtocol/astra/v3/x/feeburn/types"
+ anteutils "github.com/evmos/evmos/v12/app/ante/utils"
+ vestingtypes "github.com/evmos/evmos/v12/x/vesting/types"
)
// HandlerOptions defines the list of module keepers required to run the Evmos
// AnteHandler decorators.
type HandlerOptions struct {
- AccountKeeper evmtypes.AccountKeeper
- BankKeeper evmtypes.BankKeeper
- BankKeeperFork feeburntypes.BankKeeper
- IBCKeeper *ibckeeper.Keeper
- FeeMarketKeeper evmtypes.FeeMarketKeeper
- StakingKeeper vestingtypes.StakingKeeper
- EvmKeeper ethante.EVMKeeper
- FeegrantKeeper ante.FeegrantKeeper
- FeeBurnKeeper feeBurnKeeper.Keeper
- SignModeHandler authsigning.SignModeHandler
- SigGasConsumer func(meter sdk.GasMeter, sig signing.SignatureV2, params authtypes.Params) error
- Cdc codec.BinaryCodec
- MaxTxGasWanted uint64
+ AccountKeeper evmtypes.AccountKeeper
+ BankKeeper evmtypes.BankKeeper
+ BankKeeperFork feeburntypes.BankKeeper
+ IBCKeeper *ibckeeper.Keeper
+ FeeMarketKeeper evmante.FeeMarketKeeper
+ StakingKeeper vestingtypes.StakingKeeper
+ EvmKeeper evmante.EVMKeeper
+ DistributionKeeper anteutils.DistributionKeeper
+ FeegrantKeeper ante.FeegrantKeeper
+ FeeBurnKeeper feeburntypes.FeeBurnKeeper
+ SignModeHandler authsigning.SignModeHandler
+ SigGasConsumer func(meter sdk.GasMeter, sig signing.SignatureV2, params authtypes.Params) error
+ Cdc codec.BinaryCodec
+ MaxTxGasWanted uint64
}
// Validate checks if the keepers are defined
@@ -46,6 +49,12 @@ func (options HandlerOptions) Validate() error {
if options.BankKeeper == nil {
return sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler")
}
+ if options.DistributionKeeper == nil {
+ return sdkerrors.Wrap(sdkerrors.ErrLogic, "distribution keeper is required for AnteHandler")
+ }
+ if options.FeeBurnKeeper == nil {
+ return sdkerrors.Wrap(sdkerrors.ErrLogic, "feeburn keeper is required for AnteHandler")
+ }
if options.StakingKeeper == nil {
return sdkerrors.Wrap(sdkerrors.ErrLogic, "staking keeper is required for AnteHandler")
}
@@ -64,71 +73,85 @@ func (options HandlerOptions) Validate() error {
// newCosmosAnteHandler creates the default ante handler for Ethereum transactions
func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler {
return sdk.ChainAnteDecorators(
- ethante.NewEthSetUpContextDecorator(options.EvmKeeper), // outermost AnteDecorator. SetUpContext must be called first
- ethante.NewEthMempoolFeeDecorator(options.EvmKeeper), // Check eth effective gas price against minimal-gas-prices
- ethante.NewEthMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper), // Check eth effective gas price against the global MinGasPrice
- ethante.NewEthValidateBasicDecorator(options.EvmKeeper),
- ethante.NewEthSigVerificationDecorator(options.EvmKeeper),
- ethante.NewEthAccountVerificationDecorator(options.AccountKeeper, options.EvmKeeper),
- ethante.NewCanTransferDecorator(options.EvmKeeper),
- NewEthVestingTransactionDecorator(options.AccountKeeper),
- ethante.NewEthGasConsumeDecorator(options.EvmKeeper, options.MaxTxGasWanted),
- ethante.NewEthIncrementSenderSequenceDecorator(options.AccountKeeper),
- ethante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper),
- ethante.NewEthEmitEventDecorator(options.EvmKeeper), // emit eth tx hash and index at the very last ante handler.
+ // outermost AnteDecorator. SetUpContext must be called first
+ evmante.NewEthSetUpContextDecorator(options.EvmKeeper),
+ // Check eth effective gas price against minimal-gas-prices
+ evmante.NewEthMempoolFeeDecorator(options.EvmKeeper),
+ // Check eth effective gas price against the global MinGasPrice
+ evmante.NewEthMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper),
+ evmante.NewEthValidateBasicDecorator(options.EvmKeeper),
+ evmante.NewEthSigVerificationDecorator(options.EvmKeeper),
+ evmante.NewEthAccountVerificationDecorator(options.AccountKeeper, options.EvmKeeper),
+ evmante.NewCanTransferDecorator(options.EvmKeeper),
+ NewEthVestingTransactionDecorator(options.AccountKeeper), // TODO(thanhnv): sync with evmos
+ evmante.NewEthGasConsumeDecorator(options.BankKeeper, options.DistributionKeeper, options.EvmKeeper, options.StakingKeeper, options.MaxTxGasWanted),
+ evmante.NewEthIncrementSenderSequenceDecorator(options.AccountKeeper),
+ evmante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper),
+ // emit eth tx hash and index at the very last ante handler.
+ evmante.NewEthEmitEventDecorator(options.EvmKeeper),
)
}
// newCosmosAnteHandler creates the default ante handler for Cosmos transactions
func newCosmosAnteHandler(options HandlerOptions) sdk.AnteHandler {
return sdk.ChainAnteDecorators(
- ethante.RejectMessagesDecorator{}, // reject MsgEthereumTxs
+ // reject MsgEthereumTxs
+ cosmosante.RejectMessagesDecorator{},
+ // disable the Msg types that cannot be included on an authz.MsgExec msgs field
+ cosmosante.NewAuthzLimiterDecorator(
+ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}),
+ sdk.MsgTypeURL(&sdkvesting.MsgCreateVestingAccount{}),
+ ),
ante.NewSetUpContextDecorator(),
- ante.NewRejectExtensionOptionsDecorator(),
- ante.NewMempoolFeeDecorator(),
- ethante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper),
+ ante.NewExtensionOptionsDecorator(nil), // see https://github.com/cosmos/cosmos-sdk/blob/release/v0.46.x/CHANGELOG.md#api-breaking-changes-5
+ cosmosante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper),
ante.NewValidateBasicDecorator(),
ante.NewTxTimeoutHeightDecorator(),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
- ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper),
+ ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper,
+ options.FeegrantKeeper, nil), // see https://github.com/cosmos/cosmos-sdk/blob/release/v0.46.x/CHANGELOG.md#api-breaking-changes-5
feeburnante.NewFeeBurnDecorator(options.BankKeeperFork, options.FeeBurnKeeper),
- NewVestingDelegationDecorator(options.AccountKeeper, options.StakingKeeper, options.Cdc),
- NewValidatorCommissionDecorator(options.Cdc),
+ NewVestingDelegationDecorator(options.AccountKeeper, options.StakingKeeper, options.Cdc), // TODO(thanhnv): sync with evmos
// SetPubKeyDecorator must be called before all signature verification decorators
ante.NewSetPubKeyDecorator(options.AccountKeeper),
ante.NewValidateSigCountDecorator(options.AccountKeeper),
ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
ante.NewIncrementSequenceDecorator(options.AccountKeeper),
- ibcante.NewAnteDecorator(options.IBCKeeper),
- ethante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper),
+ ibcante.NewRedundantRelayDecorator(options.IBCKeeper),
+ evmante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper),
)
}
// newCosmosAnteHandlerEip712 creates the ante handler for transactions signed with EIP712
func newCosmosAnteHandlerEip712(options HandlerOptions) sdk.AnteHandler {
return sdk.ChainAnteDecorators(
- ethante.RejectMessagesDecorator{}, // reject MsgEthereumTxs
+ // reject MsgEthereumTxs
+ cosmosante.RejectMessagesDecorator{},
+ // disable the Msg types that cannot be included on an authz.MsgExec msgs field
+ cosmosante.NewAuthzLimiterDecorator(
+ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}),
+ sdk.MsgTypeURL(&sdkvesting.MsgCreateVestingAccount{}),
+ ),
ante.NewSetUpContextDecorator(),
- ante.NewMempoolFeeDecorator(),
ante.NewValidateBasicDecorator(),
- ethante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper),
+ cosmosante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper),
ante.NewTxTimeoutHeightDecorator(),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
- ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper),
+ ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper,
+ options.FeegrantKeeper, nil),
feeburnante.NewFeeBurnDecorator(options.BankKeeperFork, options.FeeBurnKeeper),
- NewVestingDelegationDecorator(options.AccountKeeper, options.StakingKeeper, options.Cdc),
- NewValidatorCommissionDecorator(options.Cdc),
+ NewVestingDelegationDecorator(options.AccountKeeper, options.StakingKeeper, options.Cdc), //TODO(vesting delegation)
// SetPubKeyDecorator must be called before all signature verification decorators
ante.NewSetPubKeyDecorator(options.AccountKeeper),
ante.NewValidateSigCountDecorator(options.AccountKeeper),
ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
// Note: signature verification uses EIP instead of the cosmos signature validator
- ethante.NewEip712SigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
+ cosmosante.NewLegacyEip712SigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
ante.NewIncrementSequenceDecorator(options.AccountKeeper),
- ibcante.NewAnteDecorator(options.IBCKeeper),
- ethante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper),
+ ibcante.NewRedundantRelayDecorator(options.IBCKeeper),
+ evmante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper),
)
}
diff --git a/app/ante/vesting.go b/app/ante/vesting.go
index 5c2d482..cea3c07 100644
--- a/app/ante/vesting.go
+++ b/app/ante/vesting.go
@@ -7,8 +7,8 @@ import (
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/authz"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
- vestingtypes "github.com/evmos/evmos/v6/x/vesting/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
+ vestingtypes "github.com/evmos/evmos/v12/x/vesting/types"
)
// EthVestingTransactionDecorator validates if clawback vesting accounts are
diff --git a/app/app.go b/app/app.go
index 8f57ffb..d14d1a7 100644
--- a/app/app.go
+++ b/app/app.go
@@ -3,18 +3,29 @@ package app
import (
"context"
"encoding/json"
- v1 "github.com/AstraProtocol/astra/v2/app/upgrades/v1"
+ v1 "github.com/AstraProtocol/astra/v3/app/upgrades/v1"
+ v3 "github.com/AstraProtocol/astra/v3/app/upgrades/v3"
+ "github.com/cosmos/cosmos-sdk/client/grpc/node"
+ storetypes "github.com/cosmos/cosmos-sdk/store/types"
+ authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation"
+ govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
+ govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
+ ibctestingtypes "github.com/cosmos/ibc-go/v6/testing/types"
+ "github.com/evmos/evmos/v12/x/erc20"
+ erc20client "github.com/evmos/evmos/v12/x/erc20/client"
+ erc20keeper "github.com/evmos/evmos/v12/x/erc20/keeper"
+ erc20types "github.com/evmos/evmos/v12/x/erc20/types"
"io"
"net/http"
"os"
"path/filepath"
- "github.com/AstraProtocol/astra/v2/x/feeburn"
- feeBurnKeeper "github.com/AstraProtocol/astra/v2/x/feeburn/keeper"
- feeBurnTypes "github.com/AstraProtocol/astra/v2/x/feeburn/types"
- "github.com/AstraProtocol/astra/v2/x/mint"
- mintkeeper "github.com/AstraProtocol/astra/v2/x/mint/keeper"
- minttypes "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn"
+ feeBurnKeeper "github.com/AstraProtocol/astra/v3/x/feeburn/keeper"
+ feeBurnTypes "github.com/AstraProtocol/astra/v3/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/mint"
+ mintkeeper "github.com/AstraProtocol/astra/v3/x/mint/keeper"
+ minttypes "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/gorilla/mux"
"github.com/rakyll/statik/fs"
@@ -28,7 +39,6 @@ import (
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/grpc/tmservice"
- "github.com/cosmos/cosmos-sdk/client/rpc"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/server/api"
@@ -70,6 +80,7 @@ import (
"github.com/cosmos/cosmos-sdk/x/gov"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
+ govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
"github.com/cosmos/cosmos-sdk/x/params"
paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
@@ -85,42 +96,35 @@ import (
upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client"
upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
- ethermintapp "github.com/evmos/ethermint/app"
-
- "github.com/cosmos/ibc-go/v3/modules/apps/transfer"
- ibctransferkeeper "github.com/cosmos/ibc-go/v3/modules/apps/transfer/keeper"
- ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"
- ibc "github.com/cosmos/ibc-go/v3/modules/core"
- ibcclient "github.com/cosmos/ibc-go/v3/modules/core/02-client"
- ibcclientclient "github.com/cosmos/ibc-go/v3/modules/core/02-client/client"
- porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types"
- ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host"
- ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper"
- ibctesting "github.com/cosmos/ibc-go/v3/testing"
+ "github.com/cosmos/ibc-go/v6/modules/apps/transfer"
+ ibctransferkeeper "github.com/cosmos/ibc-go/v6/modules/apps/transfer/keeper"
+ ibctransfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types"
+ ibc "github.com/cosmos/ibc-go/v6/modules/core"
+ ibcclient "github.com/cosmos/ibc-go/v6/modules/core/02-client"
+ ibcclientclient "github.com/cosmos/ibc-go/v6/modules/core/02-client/client"
+ porttypes "github.com/cosmos/ibc-go/v6/modules/core/05-port/types"
+ ibchost "github.com/cosmos/ibc-go/v6/modules/core/24-host"
+ ibckeeper "github.com/cosmos/ibc-go/v6/modules/core/keeper"
+ ibctesting "github.com/cosmos/ibc-go/v6/testing"
// unnamed import of statik for swagger UI support
- _ "github.com/AstraProtocol/astra/v2/client/docs/statik"
- "github.com/evmos/ethermint/encoding"
-
- srvflags "github.com/evmos/ethermint/server/flags"
- ethermint "github.com/evmos/ethermint/types"
- "github.com/evmos/ethermint/x/evm"
- evmrest "github.com/evmos/ethermint/x/evm/client/rest"
- evmkeeper "github.com/evmos/ethermint/x/evm/keeper"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
-
- "github.com/evmos/ethermint/x/feemarket"
- feemarketkeeper "github.com/evmos/ethermint/x/feemarket/keeper"
- feemarkettypes "github.com/evmos/ethermint/x/feemarket/types"
-
- "github.com/AstraProtocol/astra/v2/app/ante"
- "github.com/evmos/evmos/v6/x/erc20"
- erc20client "github.com/evmos/evmos/v6/x/erc20/client"
- erc20keeper "github.com/evmos/evmos/v6/x/erc20/keeper"
- erc20types "github.com/evmos/evmos/v6/x/erc20/types"
- "github.com/evmos/evmos/v6/x/vesting"
- vestingkeeper "github.com/evmos/evmos/v6/x/vesting/keeper"
- vestingtypes "github.com/evmos/evmos/v6/x/vesting/types"
+ _ "github.com/AstraProtocol/astra/v3/client/docs/statik"
+ "github.com/evmos/evmos/v12/encoding"
+
+ srvflags "github.com/evmos/evmos/v12/server/flags"
+ evmostypes "github.com/evmos/evmos/v12/types"
+ "github.com/evmos/evmos/v12/x/evm"
+ evmkeeper "github.com/evmos/evmos/v12/x/evm/keeper"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
+
+ "github.com/evmos/evmos/v12/x/feemarket"
+ feemarketkeeper "github.com/evmos/evmos/v12/x/feemarket/keeper"
+ feemarkettypes "github.com/evmos/evmos/v12/x/feemarket/types"
+
+ "github.com/AstraProtocol/astra/v3/app/ante"
+ "github.com/evmos/evmos/v12/x/vesting"
+ vestingkeeper "github.com/evmos/evmos/v12/x/vesting/keeper"
+ vestingtypes "github.com/evmos/evmos/v12/x/vesting/types"
)
func init() {
@@ -131,7 +135,7 @@ func init() {
DefaultNodeHome = filepath.Join(userHomeDir, ".astrad")
// manually update the power reduction by replacing micro (u) -> atto (a) astra
- sdk.DefaultPowerReduction = ethermint.PowerReduction
+ sdk.DefaultPowerReduction = evmostypes.PowerReduction
}
const (
@@ -159,11 +163,15 @@ var (
mint.AppModuleBasic{},
distr.AppModuleBasic{},
gov.NewAppModuleBasic(
- paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, upgradeclient.CancelProposalHandler,
- ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler,
- // Astra proposal types
- erc20client.RegisterCoinProposalHandler, erc20client.RegisterERC20ProposalHandler,
- erc20client.ToggleTokenConversionProposalHandler,
+ []govclient.ProposalHandler{
+ paramsclient.ProposalHandler, distrclient.ProposalHandler,
+ upgradeclient.LegacyProposalHandler,
+ upgradeclient.LegacyCancelProposalHandler,
+ ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler,
+ // Astra proposal types
+ erc20client.RegisterCoinProposalHandler, erc20client.RegisterERC20ProposalHandler,
+ erc20client.ToggleTokenConversionProposalHandler,
+ },
),
params.AppModuleBasic{},
crisis.AppModuleBasic{},
@@ -191,8 +199,8 @@ var (
govtypes.ModuleName: {authtypes.Burner},
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
evmtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, // used for secure addition and subtraction of balance using module account
- erc20types.ModuleName: {authtypes.Minter, authtypes.Burner},
feeBurnTypes.ModuleName: {authtypes.Burner},
+ erc20types.ModuleName: {authtypes.Minter, authtypes.Burner},
}
// module accounts that are allowed to receive tokens
@@ -221,9 +229,9 @@ type Astra struct {
invCheckPeriod uint
// keys to access the substores
- keys map[string]*sdk.KVStoreKey
- tkeys map[string]*sdk.TransientStoreKey
- memKeys map[string]*sdk.MemoryStoreKey
+ keys map[string]*storetypes.KVStoreKey
+ tkeys map[string]*storetypes.TransientStoreKey
+ memKeys map[string]*storetypes.MemoryStoreKey
// keepers
AccountKeeper authkeeper.AccountKeeper
@@ -247,7 +255,6 @@ type Astra struct {
ScopedTransferKeeper capabilitykeeper.ScopedKeeper
// Ethermint keepers
- Erc20Keeper erc20keeper.Keeper
EvmKeeper *evmkeeper.Keeper
FeeMarketKeeper feemarketkeeper.Keeper
@@ -255,6 +262,7 @@ type Astra struct {
MintKeeper mintkeeper.Keeper
VestingKeeper vestingkeeper.Keeper
FeeBurnKeeper feeBurnKeeper.Keeper
+ Erc20Keeper erc20keeper.Keeper
// the module manager
mm *module.Manager
@@ -281,7 +289,7 @@ func NewAstraApp(
appOpts servertypes.AppOptions,
baseAppOptions ...func(*baseapp.BaseApp),
) *Astra {
- appCodec := encodingConfig.Marshaler
+ appCodec := encodingConfig.Codec
cdc := encodingConfig.Amino
interfaceRegistry := encodingConfig.InterfaceRegistry
@@ -306,7 +314,7 @@ func NewAstraApp(
feegrant.StoreKey, authzkeeper.StoreKey,
// ibc keys
ibchost.StoreKey, ibctransfertypes.StoreKey,
- // ethermint keys
+ // evmostypes keys
evmtypes.StoreKey, feemarkettypes.StoreKey,
// astra keys
minttypes.StoreKey,
@@ -333,7 +341,8 @@ func NewAstraApp(
// init params keeper and subspaces
app.ParamsKeeper = initParamsKeeper(appCodec, cdc, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey])
// set the BaseApp's parameter store
- bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramskeeper.ConsensusParamsKeyTable()))
+ bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(
+ paramstypes.ConsensusParamsKeyTable()))
// add capability keeper and ScopeToModule for ibc module
app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey])
@@ -347,7 +356,8 @@ func NewAstraApp(
// use custom Ethermint account for contracts
app.AccountKeeper = authkeeper.NewAccountKeeper(
- appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName), ethermint.ProtoAccount, maccPerms,
+ appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName),
+ evmostypes.ProtoAccount, maccPerms, sdk.GetConfig().GetBech32AccountAddrPrefix(),
)
app.BankKeeper = bankkeeper.NewBaseKeeper(
appCodec, keys[banktypes.StoreKey], app.AccountKeeper, app.GetSubspace(banktypes.ModuleName), app.BlockedAddrs(),
@@ -357,7 +367,7 @@ func NewAstraApp(
)
app.DistrKeeper = distrkeeper.NewKeeper(
appCodec, keys[distrtypes.StoreKey], app.GetSubspace(distrtypes.ModuleName), app.AccountKeeper, app.BankKeeper,
- &stakingKeeper, authtypes.FeeCollectorName, app.ModuleAccountAddrs(),
+ &stakingKeeper, authtypes.FeeCollectorName,
)
app.MintKeeper = mintkeeper.NewKeeper(
appCodec, keys[minttypes.StoreKey], app.GetSubspace(minttypes.ModuleName), &stakingKeeper,
@@ -378,22 +388,43 @@ func NewAstraApp(
app.GetSubspace(crisistypes.ModuleName), invCheckPeriod, app.BankKeeper, authtypes.FeeCollectorName,
)
app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper)
- app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp)
+ app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec,
+ homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String())
- app.AuthzKeeper = authzkeeper.NewKeeper(keys[authzkeeper.StoreKey], appCodec, app.BaseApp.MsgServiceRouter())
+ app.AuthzKeeper = authzkeeper.NewKeeper(keys[authzkeeper.StoreKey],
+ appCodec, app.BaseApp.MsgServiceRouter(), app.AccountKeeper)
tracer := cast.ToString(appOpts.Get(srvflags.EVMTracer))
// Create Ethermint keepers
+ feeMarketSubspace := app.GetSubspace(feemarkettypes.ModuleName)
+ if !feeMarketSubspace.HasKeyTable() {
+ feeMarketSubspace.WithKeyTable(feemarkettypes.ParamKeyTable())
+ }
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],
+ feeMarketSubspace,
)
// Create Ethermint keepers
+ evmSubspace := app.GetSubspace(evmtypes.ModuleName)
+ if !evmSubspace.HasKeyTable() {
+ evmSubspace.WithKeyTable(evmtypes.ParamKeyTable())
+ }
app.EvmKeeper = evmkeeper.NewKeeper(
- appCodec, keys[evmtypes.StoreKey], tkeys[evmtypes.TransientKey], app.GetSubspace(evmtypes.ModuleName),
- app.AccountKeeper, app.BankKeeper, &stakingKeeper, app.FeeMarketKeeper,
+ appCodec,
+ keys[evmtypes.StoreKey],
+ tkeys[evmtypes.TransientKey],
+ authtypes.NewModuleAddress(govtypes.ModuleName),
+ app.AccountKeeper,
+ app.BankKeeper,
+ &stakingKeeper,
+ app.FeeMarketKeeper,
tracer,
+ evmSubspace,
)
// Create IBC Keeper
@@ -402,17 +433,25 @@ func NewAstraApp(
)
// register the proposal types
- govRouter := govtypes.NewRouter()
- govRouter.AddRoute(govtypes.RouterKey, govtypes.ProposalHandler).
+ govRouter := govv1beta1.NewRouter()
+ govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).
AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)).
AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)).
AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)).
AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)).
AddRoute(erc20types.RouterKey, erc20.NewErc20ProposalHandler(&app.Erc20Keeper))
+ govConfig := govtypes.DefaultConfig()
govKeeper := govkeeper.NewKeeper(
- appCodec, keys[govtypes.StoreKey], app.GetSubspace(govtypes.ModuleName),
- app.AccountKeeper, app.BankKeeper, &stakingKeeper, govRouter,
+ appCodec,
+ keys[govtypes.StoreKey],
+ app.GetSubspace(govtypes.ModuleName),
+ app.AccountKeeper,
+ app.BankKeeper,
+ &stakingKeeper,
+ govRouter,
+ app.MsgServiceRouter(),
+ govConfig,
)
// register the staking hooks
@@ -430,9 +469,16 @@ func NewAstraApp(
app.AccountKeeper, app.BankKeeper, app.StakingKeeper,
)
+ ////Temporarily turn of Erc20Keeper due to unusability
app.Erc20Keeper = erc20keeper.NewKeeper(
- keys[erc20types.StoreKey], appCodec, app.GetSubspace(erc20types.ModuleName),
- app.AccountKeeper, app.BankKeeper, app.EvmKeeper,
+ keys[erc20types.StoreKey],
+ appCodec,
+ authtypes.NewModuleAddress(govtypes.ModuleName),
+ app.AccountKeeper,
+ app.BankKeeper,
+ app.EvmKeeper,
+ app.StakingKeeper,
+ nil,
)
app.GovKeeper = *govKeeper.SetHooks(
@@ -441,7 +487,7 @@ func NewAstraApp(
app.EvmKeeper = app.EvmKeeper.SetHooks(
evmkeeper.NewMultiEvmHooks(
- app.Erc20Keeper.Hooks(),
+ //app.Erc20Keeper.Hooks(),
app.FeeBurnKeeper.Hooks(),
),
)
@@ -498,7 +544,7 @@ func NewAstraApp(
app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx,
encodingConfig.TxConfig,
),
- auth.NewAppModule(appCodec, app.AccountKeeper, ethermintapp.RandomGenesisAccounts),
+ auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts),
bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper),
capability.NewAppModule(appCodec, *app.CapabilityKeeper),
crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants),
@@ -516,11 +562,11 @@ func NewAstraApp(
ibc.NewAppModule(app.IBCKeeper),
transferModule,
// Ethermint app modules
- evm.NewAppModule(app.EvmKeeper, app.AccountKeeper),
- feemarket.NewAppModule(app.FeeMarketKeeper),
+ evm.NewAppModule(app.EvmKeeper, app.AccountKeeper, app.GetSubspace(evmtypes.ModuleName)),
+ feemarket.NewAppModule(app.FeeMarketKeeper, app.GetSubspace(feemarkettypes.ModuleName)),
// Astra app modules
mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper),
- erc20.NewAppModule(app.Erc20Keeper, app.AccountKeeper),
+ erc20.NewAppModule(app.Erc20Keeper, app.AccountKeeper, app.GetSubspace(erc20types.ModuleName)),
vesting.NewAppModule(app.VestingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
feeburn.NewAppModule(appCodec, app.FeeBurnKeeper, app.AccountKeeper, app.BankKeeper),
)
@@ -632,7 +678,7 @@ func NewAstraApp(
// NOTE: this is not required apps that don't use the simulator for fuzz testing
// transactions
app.sm = module.NewSimulationManager(
- auth.NewAppModule(appCodec, app.AccountKeeper, ethermintapp.RandomGenesisAccounts),
+ auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts),
bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper),
capability.NewAppModule(appCodec, *app.CapabilityKeeper),
gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper),
@@ -646,8 +692,8 @@ func NewAstraApp(
authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
ibc.NewAppModule(app.IBCKeeper),
transferModule,
- evm.NewAppModule(app.EvmKeeper, app.AccountKeeper),
- feemarket.NewAppModule(app.FeeMarketKeeper),
+ evm.NewAppModule(app.EvmKeeper, app.AccountKeeper, app.GetSubspace(evmtypes.ModuleName)),
+ feemarket.NewAppModule(app.FeeMarketKeeper, app.GetSubspace(feemarkettypes.ModuleName)),
)
app.sm.RegisterStoreDecoders()
@@ -662,19 +708,20 @@ func NewAstraApp(
app.SetBeginBlocker(app.BeginBlocker)
maxGasWanted := cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted))
options := ante.HandlerOptions{
- AccountKeeper: app.AccountKeeper,
- BankKeeper: app.BankKeeper,
- BankKeeperFork: app.BankKeeper,
- EvmKeeper: app.EvmKeeper,
- StakingKeeper: app.StakingKeeper,
- FeegrantKeeper: app.FeeGrantKeeper,
- FeeBurnKeeper: app.FeeBurnKeeper,
- IBCKeeper: app.IBCKeeper,
- FeeMarketKeeper: app.FeeMarketKeeper,
- SignModeHandler: encodingConfig.TxConfig.SignModeHandler(),
- SigGasConsumer: SigVerificationGasConsumer,
- Cdc: appCodec,
- MaxTxGasWanted: maxGasWanted,
+ AccountKeeper: app.AccountKeeper,
+ BankKeeper: app.BankKeeper,
+ BankKeeperFork: app.BankKeeper,
+ EvmKeeper: app.EvmKeeper,
+ DistributionKeeper: app.DistrKeeper,
+ StakingKeeper: app.StakingKeeper,
+ FeegrantKeeper: app.FeeGrantKeeper,
+ FeeBurnKeeper: app.FeeBurnKeeper,
+ IBCKeeper: app.IBCKeeper,
+ FeeMarketKeeper: app.FeeMarketKeeper,
+ SignModeHandler: encodingConfig.TxConfig.SignModeHandler(),
+ SigGasConsumer: SigVerificationGasConsumer,
+ Cdc: appCodec,
+ MaxTxGasWanted: maxGasWanted,
}
if err := options.Validate(); err != nil {
@@ -794,21 +841,21 @@ func (app *Astra) InterfaceRegistry() types.InterfaceRegistry {
// GetKey returns the KVStoreKey for the provided store key.
//
// NOTE: This is solely to be used for testing purposes.
-func (app *Astra) GetKey(storeKey string) *sdk.KVStoreKey {
+func (app *Astra) GetKey(storeKey string) *storetypes.KVStoreKey {
return app.keys[storeKey]
}
// GetTKey returns the TransientStoreKey for the provided store key.
//
// NOTE: This is solely to be used for testing purposes.
-func (app *Astra) GetTKey(storeKey string) *sdk.TransientStoreKey {
+func (app *Astra) GetTKey(storeKey string) *storetypes.TransientStoreKey {
return app.tkeys[storeKey]
}
// GetMemKey returns the MemStoreKey for the provided mem key.
//
// NOTE: This is solely used for testing purposes.
-func (app *Astra) GetMemKey(storeKey string) *sdk.MemoryStoreKey {
+func (app *Astra) GetMemKey(storeKey string) *storetypes.MemoryStoreKey {
return app.memKeys[storeKey]
}
@@ -829,9 +876,6 @@ func (app *Astra) SimulationManager() *module.SimulationManager {
// API server.
func (app *Astra) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) {
clientCtx := apiSvr.ClientCtx
- rpc.RegisterRoutes(clientCtx, apiSvr.Router)
-
- evmrest.RegisterTxRoutes(clientCtx, apiSvr.Router)
// Register new tx routes from grpc-gateway.
authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
@@ -839,7 +883,6 @@ func (app *Astra) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConf
tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// Register legacy and grpc-gateway routes for all modules.
- ModuleBasics.RegisterRESTRoutes(clientCtx, apiSvr.Router)
ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
// register swagger API from root so that other applications can override easily
@@ -853,7 +896,17 @@ func (app *Astra) RegisterTxService(clientCtx client.Context) {
}
func (app *Astra) RegisterTendermintService(clientCtx client.Context) {
- tmservice.RegisterTendermintService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.interfaceRegistry)
+ tmservice.RegisterTendermintService(clientCtx,
+ app.BaseApp.GRPCQueryRouter(),
+ app.interfaceRegistry,
+ app.Query,
+ )
+}
+
+// RegisterNodeService registers the node gRPC service on the provided
+// application gRPC query router.
+func (app *Astra) RegisterNodeService(clientCtx client.Context) {
+ node.RegisterNodeService(clientCtx, app.GRPCQueryRouter())
}
// IBC Go TestingApp functions
@@ -864,7 +917,7 @@ func (app *Astra) GetBaseApp() *baseapp.BaseApp {
}
// GetStakingKeeper implements the TestingApp interface.
-func (app *Astra) GetStakingKeeper() stakingkeeper.Keeper {
+func (app *Astra) GetStakingKeeper() ibctestingtypes.StakingKeeper {
return app.StakingKeeper
}
@@ -907,7 +960,7 @@ func GetMaccPerms() map[string][]string {
// initParamsKeeper init params keeper and its subspaces
func initParamsKeeper(
- appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey,
+ appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey,
) paramskeeper.Keeper {
paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey)
@@ -917,11 +970,11 @@ func initParamsKeeper(
paramsKeeper.Subspace(stakingtypes.ModuleName)
paramsKeeper.Subspace(distrtypes.ModuleName)
paramsKeeper.Subspace(slashingtypes.ModuleName)
- paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable())
+ paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable())
paramsKeeper.Subspace(crisistypes.ModuleName)
paramsKeeper.Subspace(ibctransfertypes.ModuleName)
paramsKeeper.Subspace(ibchost.ModuleName)
- // ethermint subspaces
+ // evmostypes subspaces
paramsKeeper.Subspace(evmtypes.ModuleName)
paramsKeeper.Subspace(feemarkettypes.ModuleName)
// astra subspaces
@@ -942,4 +995,12 @@ func (app *Astra) setupUpgradeHandlers() {
app.ParamsKeeper,
),
)
+
+ app.UpgradeKeeper.SetUpgradeHandler(
+ v3.UpgradeName,
+ v3.CreateUpgradeHandler(
+ app.mm, app.configurator,
+ app.StakingKeeper,
+ ),
+ )
}
diff --git a/app/app_test.go b/app/app_test.go
index 56171e3..516220d 100644
--- a/app/app_test.go
+++ b/app/app_test.go
@@ -2,6 +2,13 @@ package app
import (
"encoding/json"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
+ "github.com/cosmos/ibc-go/v6/testing/mock"
+ tmtypes "github.com/tendermint/tendermint/types"
"os"
"testing"
@@ -13,14 +20,32 @@ import (
"github.com/tendermint/tendermint/libs/log"
dbm "github.com/tendermint/tm-db"
- "github.com/evmos/ethermint/encoding"
+ "github.com/evmos/evmos/v12/encoding"
)
func TestAstraExport(t *testing.T) {
+ // create public key
+ privVal := mock.NewPV()
+ pubKey, err := privVal.GetPubKey()
+ require.NoError(t, err, "public key should be created without error")
+
+ // create validator set with single validator
+ validator := tmtypes.NewValidator(pubKey, 1)
+ valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator})
+
+ // generate genesis account
+ senderPrivKey := secp256k1.GenPrivKey()
+ acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0)
+ balance := banktypes.Balance{
+ Address: acc.GetAddress().String(),
+ Coins: sdk.NewCoins(sdk.NewCoin(config.BaseDenom, sdk.NewInt(100000000000000))),
+ }
+
db := dbm.NewMemDB()
app := NewAstraApp(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, encoding.MakeConfig(ModuleBasics), simapp.EmptyAppOptions{})
genesisState := NewDefaultGenesisState()
+ genesisState = GenesisStateWithValSet(app, genesisState, valSet, []authtypes.GenesisAccount{acc}, balance)
stateBytes, err := json.MarshalIndent(genesisState, "", " ")
require.NoError(t, err)
diff --git a/app/export.go b/app/export.go
index fee09b8..827015b 100644
--- a/app/export.go
+++ b/app/export.go
@@ -13,13 +13,13 @@ import (
"github.com/cosmos/cosmos-sdk/x/staking"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- "github.com/evmos/ethermint/encoding"
+ "github.com/evmos/evmos/v12/encoding"
)
// NewDefaultGenesisState generates the default state for the application.
func NewDefaultGenesisState() simapp.GenesisState {
encCfg := encoding.MakeConfig(ModuleBasics)
- return ModuleBasics.DefaultGenesis(encCfg.Marshaler)
+ return ModuleBasics.DefaultGenesis(encCfg.Codec)
}
// ExportAppStateAndValidators exports the state of the application for a genesis
diff --git a/app/forks.go b/app/forks.go
index a55ab31..fb7863f 100644
--- a/app/forks.go
+++ b/app/forks.go
@@ -1,34 +1,34 @@
package app
import (
- v1 "github.com/AstraProtocol/astra/v2/app/upgrades/v1"
- "strings"
-
+ v1 "github.com/AstraProtocol/astra/v3/app/upgrades/v1"
+ "github.com/AstraProtocol/astra/v3/types"
sdk "github.com/cosmos/cosmos-sdk/types"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
)
// BeginBlockForks executes any necessary fork logic based upon the current block height.
func BeginBlockForks(ctx sdk.Context, app *Astra) {
+ upgradePlan := upgradetypes.Plan{
+ Height: ctx.BlockHeight(),
+ }
+
switch ctx.BlockHeight() {
case v1.UpgradeHeight:
// NOTE: only run for testnet
- if strings.HasPrefix(ctx.ChainID(), MainnetChainID) {
+ if types.IsMainnet(ctx.ChainID()) {
return
}
- upgradePlan := upgradetypes.Plan{
- Name: v1.UpgradeName,
- Info: v1.UpgradeInfo,
- Height: v1.UpgradeHeight,
- }
-
- err := app.UpgradeKeeper.ScheduleUpgrade(ctx, upgradePlan)
- if err != nil {
- panic(err)
- }
+ upgradePlan.Name = v1.UpgradeName
+ upgradePlan.Info = v1.UpgradeInfo
default:
// do nothing
return
}
+
+ err := app.UpgradeKeeper.ScheduleUpgrade(ctx, upgradePlan)
+ if err != nil {
+ panic(err)
+ }
}
diff --git a/app/sigverify.go b/app/sigverify.go
index 09710a7..3ec2944 100644
--- a/app/sigverify.go
+++ b/app/sigverify.go
@@ -11,7 +11,7 @@ import (
authante "github.com/cosmos/cosmos-sdk/x/auth/ante"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
)
var _ authante.SignatureVerificationGasConsumer = SigVerificationGasConsumer
diff --git a/app/sigverify_test.go b/app/sigverify_test.go
index e56375d..8023244 100644
--- a/app/sigverify_test.go
+++ b/app/sigverify_test.go
@@ -15,11 +15,11 @@ import (
"github.com/cosmos/cosmos-sdk/crypto/types/multisig"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
- "github.com/cosmos/cosmos-sdk/x/auth/legacy/legacytx"
+ "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
- "github.com/evmos/ethermint/encoding"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/encoding"
)
func generatePubKeysAndSignatures(n int, msg []byte, _ bool) (pubkeys []cryptotypes.PubKey, signatures [][]byte) {
diff --git a/app/test_helpers.go b/app/test_helpers.go
index 6bcbabd..b766deb 100644
--- a/app/test_helpers.go
+++ b/app/test_helpers.go
@@ -2,23 +2,29 @@ package app
import (
"encoding/json"
- minttypes "github.com/AstraProtocol/astra/v2/x/mint/types"
+ minttypes "github.com/AstraProtocol/astra/v3/x/mint/types"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
+ "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ "github.com/cosmos/ibc-go/v6/testing/mock"
"time"
+ "github.com/cosmos/cosmos-sdk/simapp"
sdk "github.com/cosmos/cosmos-sdk/types"
- ibctesting "github.com/cosmos/ibc-go/v3/testing"
- "github.com/cosmos/ibc-go/v3/testing/simapp"
+ ibctesting "github.com/cosmos/ibc-go/v6/testing"
abci "github.com/tendermint/tendermint/abci/types"
"github.com/tendermint/tendermint/libs/log"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
tmtypes "github.com/tendermint/tendermint/types"
dbm "github.com/tendermint/tm-db"
- "github.com/evmos/ethermint/encoding"
- feemarkettypes "github.com/evmos/ethermint/x/feemarket/types"
+ "github.com/evmos/evmos/v12/encoding"
+ feemarkettypes "github.com/evmos/evmos/v12/x/feemarket/types"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
)
func init() {
@@ -49,28 +55,33 @@ var DefaultConsensusParams = &abci.ConsensusParams{
},
}
-func init() {
- cfg := sdk.GetConfig()
- config.SetBech32Prefixes(cfg)
- config.SetBip44CoinType(cfg)
-}
-
// Setup initializes a new Astra. A Nop logger is set in Astra.
func Setup(
isCheckTx bool,
feemarketGenesis *feemarkettypes.GenesisState,
) *Astra {
+ privVal := mock.NewPV()
+ pubKey, _ := privVal.GetPubKey()
+
+ // create validator set with single validator
+ validator := tmtypes.NewValidator(pubKey, 1)
+ valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator})
+
+ // generate genesis account
+ senderPrivKey := secp256k1.GenPrivKey()
+ acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0)
+ balance := banktypes.Balance{
+ Address: acc.GetAddress().String(),
+ Coins: sdk.NewCoins(sdk.NewCoin(minttypes.DefaultInflationDenom, sdk.NewInt(100000000000000))),
+ }
+
db := dbm.NewMemDB()
app := NewAstraApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, encoding.MakeConfig(ModuleBasics), simapp.EmptyAppOptions{})
if !isCheckTx {
// init chain must be called to stop deliverState from being nil
genesisState := NewDefaultGenesisState()
- stakingGenesisState := stakingtypes.DefaultGenesisState()
- stakingGenesisState.Params.BondDenom = minttypes.DefaultInflationDenom
- encCfg := encoding.MakeConfig(ModuleBasics)
- stakingGenesis := encCfg.Marshaler.MustMarshalJSON(stakingGenesisState)
- genesisState[stakingtypes.ModuleName] = stakingGenesis
+ genesisState = GenesisStateWithValSet(app, genesisState, valSet, []authtypes.GenesisAccount{acc}, balance)
// Verify feeMarket genesis
if feemarketGenesis != nil {
@@ -99,6 +110,69 @@ func Setup(
return app
}
+func GenesisStateWithValSet(app *Astra, genesisState simapp.GenesisState,
+ valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount,
+ balances ...banktypes.Balance,
+) simapp.GenesisState {
+ // set genesis accounts
+ authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs)
+ genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis)
+
+ validators := make([]stakingtypes.Validator, 0, len(valSet.Validators))
+ delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators))
+
+ bondAmt := sdk.DefaultPowerReduction
+
+ for _, val := range valSet.Validators {
+ pk, _ := cryptocodec.FromTmPubKeyInterface(val.PubKey)
+ pkAny, _ := codectypes.NewAnyWithValue(pk)
+ validator := stakingtypes.Validator{
+ OperatorAddress: sdk.ValAddress(val.Address).String(),
+ ConsensusPubkey: pkAny,
+ Jailed: false,
+ Status: stakingtypes.Bonded,
+ Tokens: bondAmt,
+ DelegatorShares: sdk.OneDec(),
+ Description: stakingtypes.Description{},
+ UnbondingHeight: int64(0),
+ UnbondingTime: time.Unix(0, 0).UTC(),
+ Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
+ MinSelfDelegation: sdk.ZeroInt(),
+ }
+ validators = append(validators, validator)
+ delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec()))
+
+ }
+ // set validators and delegations
+ stakingParams := stakingtypes.DefaultParams()
+ stakingParams.BondDenom = minttypes.DefaultInflationDenom
+ stakingGenesis := stakingtypes.NewGenesisState(stakingParams, validators, delegations)
+ genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis)
+
+ totalSupply := sdk.NewCoins()
+ for _, b := range balances {
+ // add genesis acc tokens to total supply
+ totalSupply = totalSupply.Add(b.Coins...)
+ }
+
+ for range delegations {
+ // add delegated tokens to total supply
+ totalSupply = totalSupply.Add(sdk.NewCoin(minttypes.DefaultInflationDenom, bondAmt))
+ }
+
+ // add bonded amount to bonded pool module account
+ balances = append(balances, banktypes.Balance{
+ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
+ Coins: sdk.Coins{sdk.NewCoin(minttypes.DefaultInflationDenom, bondAmt)},
+ })
+
+ // update total supply
+ bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{})
+ genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis)
+
+ return genesisState
+}
+
// SetupTestingApp initializes the IBC-go testing application
func SetupTestingApp() (ibctesting.TestingApp, map[string]json.RawMessage) {
db := dbm.NewMemDB()
diff --git a/app/upgrades/v1/upgrades.go b/app/upgrades/v1/upgrades.go
index 6f5e2db..7ba6055 100644
--- a/app/upgrades/v1/upgrades.go
+++ b/app/upgrades/v1/upgrades.go
@@ -3,7 +3,7 @@ package v1
import (
"time"
- "github.com/AstraProtocol/astra/v2/types"
+ "github.com/AstraProtocol/astra/v3/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
@@ -32,7 +32,8 @@ func CreateUpgradeHandler(
}
func UpdateGovParams(ctx sdk.Context, gk govkeeper.Keeper, pk paramskeeper.Keeper) {
+ tmp := time.Hour
votingParams := gk.GetVotingParams(ctx)
- votingParams.VotingPeriod = time.Hour
+ votingParams.VotingPeriod = &tmp
gk.SetVotingParams(ctx, votingParams)
}
diff --git a/app/upgrades/v3/constants.go b/app/upgrades/v3/constants.go
new file mode 100644
index 0000000..49b7ab7
--- /dev/null
+++ b/app/upgrades/v3/constants.go
@@ -0,0 +1,12 @@
+package v3
+
+const (
+ // UpgradeName is the shared upgrade plan name for mainnet and testnet
+ UpgradeName = "v3.0.0"
+
+ TestnetUpgradeHeight = 75
+
+ MainnetUpgradeHeight = 1000000
+
+ UpgradeInfo = ``
+)
diff --git a/app/upgrades/v3/upgrades.go b/app/upgrades/v3/upgrades.go
new file mode 100644
index 0000000..0525d06
--- /dev/null
+++ b/app/upgrades/v3/upgrades.go
@@ -0,0 +1,41 @@
+package v3
+
+import (
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ "github.com/cosmos/cosmos-sdk/types/module"
+ stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
+)
+
+// CreateUpgradeHandler creates an SDK upgrade handler for v10
+func CreateUpgradeHandler(
+ mm *module.Manager,
+ configurator module.Configurator,
+ stakingKeeper stakingkeeper.Keeper,
+) upgradetypes.UpgradeHandler {
+ return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
+ logger := ctx.Logger().With("upgrade", UpgradeName)
+
+ setMinCommissionRate(ctx, stakingKeeper)
+
+ // Leave modules are as-is to avoid running InitGenesis.
+ logger.Debug("running module migrations ...")
+ return mm.RunMigrations(ctx, configurator, vm)
+ }
+}
+
+// setMinCommissionRate sets the minimum commission rate for validators
+// to 5%.
+func setMinCommissionRate(ctx sdk.Context, sk stakingkeeper.Keeper) {
+ stakingParams := stakingtypes.Params{
+ UnbondingTime: sk.UnbondingTime(ctx),
+ MaxValidators: sk.MaxValidators(ctx),
+ MaxEntries: sk.MaxEntries(ctx),
+ HistoricalEntries: sk.HistoricalEntries(ctx),
+ BondDenom: sk.BondDenom(ctx),
+ MinCommissionRate: sdk.NewDecWithPrec(5, 2), // 5%
+ }
+
+ sk.SetParams(ctx, stakingParams)
+}
diff --git a/client/docs/statik/init.go b/client/docs/statik/init.go
index e2d70ec..4e99d71 100644
--- a/client/docs/statik/init.go
+++ b/client/docs/statik/init.go
@@ -3,6 +3,6 @@ package statik
// unnamed import of statik for swagger UI support
// override ethermint statik by importing it
// nolint
-import _ "github.com/evmos/ethermint/client/docs/statik"
+import _ "github.com/evmos/evmos/v12/client/docs/statik"
// This just for fixing the error in importing empty github.com/tharsis/ethermint/client/docs/statik
diff --git a/cmd/astrad/cmd_test.go b/cmd/astrad/cmd_test.go
index f1f4118..b873b81 100644
--- a/cmd/astrad/cmd_test.go
+++ b/cmd/astrad/cmd_test.go
@@ -9,8 +9,8 @@ import (
"github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
"github.com/stretchr/testify/require"
- "github.com/AstraProtocol/astra/v2/app"
- astrad "github.com/AstraProtocol/astra/v2/cmd/astrad"
+ "github.com/AstraProtocol/astra/v3/app"
+ astrad "github.com/AstraProtocol/astra/v3/cmd/astrad"
)
func TestInitCmd(t *testing.T) {
@@ -22,7 +22,7 @@ func TestInitCmd(t *testing.T) {
fmt.Sprintf("--%s=%s", flags.FlagChainID, "astra_11110-1"),
})
- err := svrcmd.Execute(rootCmd, app.DefaultNodeHome)
+ err := svrcmd.Execute(rootCmd, "astrad", app.DefaultNodeHome)
require.NoError(t, err)
}
@@ -35,6 +35,6 @@ func TestAddKeyLedgerCmd(t *testing.T) {
fmt.Sprintf("--%s", flags.FlagUseLedger),
})
- err := svrcmd.Execute(rootCmd, app.DefaultNodeHome)
+ err := svrcmd.Execute(rootCmd, "astrad", app.DefaultNodeHome)
require.Error(t, err)
}
diff --git a/cmd/astrad/genaccounts.go b/cmd/astrad/genaccounts.go
index f158be9..13453f7 100644
--- a/cmd/astrad/genaccounts.go
+++ b/cmd/astrad/genaccounts.go
@@ -20,13 +20,13 @@ import (
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
- ethermint "github.com/evmos/ethermint/types"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ ethermint "github.com/evmos/evmos/v12/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
- astrakr "github.com/AstraProtocol/astra/v2/crypto/keyring"
+ astrakr "github.com/AstraProtocol/astra/v3/crypto/keyring"
- vestingcli "github.com/evmos/evmos/v6/x/vesting/client/cli"
- vestingtypes "github.com/evmos/evmos/v6/x/vesting/types"
+ vestingcli "github.com/evmos/evmos/v12/x/vesting/client/cli"
+ vestingtypes "github.com/evmos/evmos/v12/x/vesting/types"
)
const (
@@ -67,6 +67,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa
keyringBackend,
clientCtx.HomeDir,
inBuf,
+ clientCtx.Codec,
astrakr.Option(),
)
if err != nil {
@@ -78,10 +79,13 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa
info, err := kr.Key(args[0])
if err != nil {
- return fmt.Errorf("failed to get address from Keyring: %w", err)
+ return fmt.Errorf("failed to get info from Keyring: %w", err)
}
- addr = info.GetAddress()
+ addr, err = info.GetAddress()
+ if err != nil {
+ return fmt.Errorf("failed to get address from keyring: %w", err)
+ }
}
coins, err := sdk.ParseCoinsNormalized(args[1])
diff --git a/cmd/astrad/main.go b/cmd/astrad/main.go
index 705eb18..82d8769 100644
--- a/cmd/astrad/main.go
+++ b/cmd/astrad/main.go
@@ -7,8 +7,8 @@ import (
svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/AstraProtocol/astra/v2/app"
- cmdcfg "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/app"
+ cmdcfg "github.com/AstraProtocol/astra/v3/cmd/config"
)
func main() {
@@ -17,7 +17,7 @@ func main() {
rootCmd, _ := NewRootCmd()
- if err := svrcmd.Execute(rootCmd, app.DefaultNodeHome); err != nil {
+ if err := svrcmd.Execute(rootCmd, "astrad", app.DefaultNodeHome); err != nil {
switch e := err.(type) {
case server.ErrorCode:
os.Exit(e.Code)
diff --git a/cmd/astrad/root.go b/cmd/astrad/root.go
index 8fb1c02..a318b40 100644
--- a/cmd/astrad/root.go
+++ b/cmd/astrad/root.go
@@ -4,6 +4,8 @@ import (
"errors"
"fmt"
"github.com/cosmos/cosmos-sdk/client/pruning"
+ snapshotstypes "github.com/cosmos/cosmos-sdk/snapshots/types"
+ tmconfig "github.com/tendermint/tendermint/config"
"io"
"os"
"path/filepath"
@@ -32,16 +34,16 @@ import (
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/cosmos-sdk/x/crisis"
genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
- ethermintclient "github.com/evmos/ethermint/client"
- "github.com/evmos/ethermint/client/debug"
- "github.com/evmos/ethermint/encoding"
- ethermintserver "github.com/evmos/ethermint/server"
- servercfg "github.com/evmos/ethermint/server/config"
- srvflags "github.com/evmos/ethermint/server/flags"
-
- "github.com/AstraProtocol/astra/v2/app"
- cmdcfg "github.com/AstraProtocol/astra/v2/cmd/config"
- astrakr "github.com/AstraProtocol/astra/v2/crypto/keyring"
+ evmosclient "github.com/evmos/evmos/v12/client"
+ "github.com/evmos/evmos/v12/client/debug"
+ "github.com/evmos/evmos/v12/encoding"
+ evmosserver "github.com/evmos/evmos/v12/server"
+ servercfg "github.com/evmos/evmos/v12/server/config"
+ srvflags "github.com/evmos/evmos/v12/server/flags"
+
+ "github.com/AstraProtocol/astra/v3/app"
+ cmdcfg "github.com/AstraProtocol/astra/v3/cmd/config"
+ astrakr "github.com/AstraProtocol/astra/v3/crypto/keyring"
)
const (
@@ -53,7 +55,7 @@ const (
func NewRootCmd() (*cobra.Command, params.EncodingConfig) {
encodingConfig := encoding.MakeConfig(app.ModuleBasics)
initClientCtx := client.Context{}.
- WithCodec(encodingConfig.Marshaler).
+ WithCodec(encodingConfig.Codec).
WithInterfaceRegistry(encodingConfig.InterfaceRegistry).
WithTxConfig(encodingConfig.TxConfig).
WithLegacyAmino(encodingConfig.Amino).
@@ -95,7 +97,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) {
// TODO: define our own token
customAppTemplate, customAppConfig := initAppConfig()
- return sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig)
+ return sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, tmconfig.DefaultConfig())
},
}
@@ -110,7 +112,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) {
}
rootCmd.AddCommand(
- ethermintclient.ValidateChainID(
+ evmosclient.ValidateChainID(
InitCmd(app.ModuleBasics, app.DefaultNodeHome),
),
genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome),
@@ -125,14 +127,15 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) {
pruning.PruningCmd(ac.newApp),
)
- ethermintserver.AddCommands(rootCmd, app.DefaultNodeHome, ac.newApp, ac.appExport, addModuleInitFlags)
+ evmosserver.AddCommands(rootCmd,
+ evmosserver.NewDefaultStartOptions(ac.newApp, app.DefaultNodeHome), ac.appExport, addModuleInitFlags)
// add keybase, auxiliary RPC, query, and tx child commands
rootCmd.AddCommand(
rpc.StatusCommand(),
queryCommand(),
txCommand(),
- ethermintclient.KeyCommands(app.DefaultNodeHome),
+ evmosclient.KeyCommands(app.DefaultNodeHome),
)
rootCmd, err := srvflags.AddTxFlags(rootCmd)
if err != nil {
@@ -140,7 +143,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) {
}
// add rosetta
- rootCmd.AddCommand(sdkserver.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Marshaler))
+ rootCmd.AddCommand(sdkserver.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Codec))
return rootCmd, encodingConfig
}
@@ -247,6 +250,10 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a
if err != nil {
panic(err)
}
+ snapshotOptions := snapshotstypes.NewSnapshotOptions(
+ cast.ToUint64(appOpts.Get(sdkserver.FlagStateSyncSnapshotInterval)),
+ cast.ToUint32(appOpts.Get(sdkserver.FlagStateSyncSnapshotKeepRecent)),
+ )
astraApp := app.NewAstraApp(
logger, db, traceStore, true, skipUpgradeHeights,
@@ -262,9 +269,7 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a
baseapp.SetInterBlockCache(cache),
baseapp.SetTrace(cast.ToBool(appOpts.Get(sdkserver.FlagTrace))),
baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(sdkserver.FlagIndexEvents))),
- baseapp.SetSnapshotStore(snapshotStore),
- baseapp.SetSnapshotInterval(cast.ToUint64(appOpts.Get(sdkserver.FlagStateSyncSnapshotInterval))),
- baseapp.SetSnapshotKeepRecent(cast.ToUint32(appOpts.Get(sdkserver.FlagStateSyncSnapshotKeepRecent))),
+ baseapp.SetSnapshot(snapshotStore, snapshotOptions),
baseapp.SetIAVLCacheSize(cast.ToInt(appOpts.Get(sdkserver.FlagIAVLCacheSize))),
baseapp.SetIAVLDisableFastNode(cast.ToBool(appOpts.Get(sdkserver.FlagDisableIAVLFastNode))),
)
diff --git a/cmd/astrad/testnet.go b/cmd/astrad/testnet.go
index 90b1a7a..14f465c 100644
--- a/cmd/astrad/testnet.go
+++ b/cmd/astrad/testnet.go
@@ -6,6 +6,7 @@ import (
"bufio"
"encoding/json"
"fmt"
+ govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
"net"
"os"
"path/filepath"
@@ -36,16 +37,16 @@ import (
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- "github.com/evmos/ethermint/crypto/hd"
- "github.com/evmos/ethermint/server/config"
- srvflags "github.com/evmos/ethermint/server/flags"
+ "github.com/evmos/evmos/v12/crypto/hd"
+ "github.com/evmos/evmos/v12/server/config"
+ srvflags "github.com/evmos/evmos/v12/server/flags"
- ethermint "github.com/evmos/ethermint/types"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ ethermint "github.com/evmos/evmos/v12/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
- cmdcfg "github.com/AstraProtocol/astra/v2/cmd/config"
- astrakr "github.com/AstraProtocol/astra/v2/crypto/keyring"
- "github.com/AstraProtocol/astra/v2/testutil/network"
+ cmdcfg "github.com/AstraProtocol/astra/v3/cmd/config"
+ astrakr "github.com/AstraProtocol/astra/v3/crypto/keyring"
+ "github.com/AstraProtocol/astra/v3/testutil/network"
)
var (
@@ -267,7 +268,7 @@ func initTestnetFiles(
memo := fmt.Sprintf("%s@%s:%d", nodeIDs[i], ip, listenP2pPort)
genFiles = append(genFiles, nodeConfig.GenesisFile())
- kb, err := keyring.New(sdk.KeyringServiceName(), args.keyringBackend, nodeDir, inBuf, astrakr.Option())
+ kb, err := keyring.New(sdk.KeyringServiceName(), args.keyringBackend, nodeDir, inBuf, clientCtx.Codec, astrakr.Option())
if err != nil {
return err
}
@@ -349,7 +350,7 @@ func initTestnetFiles(
customAppTemplate, customAppConfig := config.AppConfig(cmdcfg.BaseDenom)
srvconfig.SetConfigTemplate(customAppTemplate)
- if err := sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig); err != nil {
+ if err := sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, tmconfig.DefaultConfig()); err != nil {
return err
}
@@ -408,7 +409,7 @@ func initGenFiles(
stakingGenState.Params.BondDenom = coinDenom
appGenState[stakingtypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(&stakingGenState)
- var govGenState govtypes.GenesisState
+ var govGenState govv1.GenesisState
clientCtx.Codec.MustUnmarshalJSON(appGenState[govtypes.ModuleName], &govGenState)
govGenState.DepositParams.MinDeposit[0].Denom = coinDenom
diff --git a/cmd/config/config.go b/cmd/config/config.go
index 3df51e8..3102577 100644
--- a/cmd/config/config.go
+++ b/cmd/config/config.go
@@ -3,7 +3,7 @@ package config
import (
sdk "github.com/cosmos/cosmos-sdk/types"
- ethermint "github.com/evmos/ethermint/types"
+ ethermint "github.com/evmos/evmos/v12/types"
)
const (
diff --git a/contracts/erc20.go b/contracts/erc20.go
index a7902d5..0be650a 100644
--- a/contracts/erc20.go
+++ b/contracts/erc20.go
@@ -5,9 +5,9 @@ import (
"encoding/json"
"github.com/ethereum/go-ethereum/common"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
- "github.com/evmos/evmos/v6/x/erc20/types"
+ "github.com/evmos/evmos/v12/x/erc20/types"
)
var (
diff --git a/contracts/erc20DirectBalanceManipulation.go b/contracts/erc20DirectBalanceManipulation.go
index a217ed0..40c1a4a 100644
--- a/contracts/erc20DirectBalanceManipulation.go
+++ b/contracts/erc20DirectBalanceManipulation.go
@@ -5,9 +5,9 @@ import (
"encoding/json"
"github.com/ethereum/go-ethereum/common"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
- "github.com/evmos/evmos/v6/x/erc20/types"
+ "github.com/evmos/evmos/v12/x/erc20/types"
)
// This is an evil token. Whenever an A -> B transfer is called,
diff --git a/contracts/erc20burnable.go b/contracts/erc20burnable.go
index d5e7944..8ba7a51 100644
--- a/contracts/erc20burnable.go
+++ b/contracts/erc20burnable.go
@@ -4,7 +4,7 @@ import (
_ "embed" // embed compiled smart contract
"encoding/json"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
)
var (
diff --git a/contracts/erc20maliciousdelayed.go b/contracts/erc20maliciousdelayed.go
index 98cebd0..dfd2dc7 100644
--- a/contracts/erc20maliciousdelayed.go
+++ b/contracts/erc20maliciousdelayed.go
@@ -5,9 +5,9 @@ import (
"encoding/json"
"github.com/ethereum/go-ethereum/common"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
- "github.com/evmos/evmos/v6/x/erc20/types"
+ "github.com/evmos/evmos/v12/x/erc20/types"
)
// This is an evil token. Whenever an A -> B transfer is called,
diff --git a/crypto/keyring/options.go b/crypto/keyring/options.go
index eb5879d..4ee43eb 100644
--- a/crypto/keyring/options.go
+++ b/crypto/keyring/options.go
@@ -3,7 +3,7 @@ package keyring
import (
"github.com/cosmos/cosmos-sdk/crypto/keyring"
- "github.com/evmos/ethermint/crypto/hd"
+ "github.com/evmos/evmos/v12/crypto/hd"
)
var (
diff --git a/go.mod b/go.mod
index 823ac43..96c7730 100644
--- a/go.mod
+++ b/go.mod
@@ -1,75 +1,85 @@
-module github.com/AstraProtocol/astra/v2
+module github.com/AstraProtocol/astra/v3
go 1.18
require (
- github.com/cosmos/cosmos-sdk v0.45.11
+ github.com/cosmos/cosmos-sdk v0.46.13
github.com/cosmos/go-bip39 v1.0.0
- github.com/cosmos/ibc-go/v3 v3.4.0
- github.com/ethereum/go-ethereum v1.10.19
- github.com/evmos/ethermint v0.19.3
- github.com/evmos/evmos/v6 v6.0.1
+ github.com/cosmos/ibc-go/v6 v6.2.0
+ github.com/ethereum/go-ethereum v1.10.26
+ github.com/evmos/evmos/v12 v12.1.6
github.com/gogo/protobuf v1.3.3
- github.com/golang/protobuf v1.5.2
+ github.com/golang/protobuf v1.5.3
github.com/gorilla/mux v1.8.0
github.com/grpc-ecosystem/grpc-gateway v1.16.0
- github.com/onsi/ginkgo/v2 v2.7.1
- github.com/onsi/gomega v1.26.0
+ github.com/onsi/ginkgo/v2 v2.9.2
+ github.com/onsi/gomega v1.27.6
github.com/pkg/errors v0.9.1
github.com/rakyll/statik v0.1.7
github.com/spf13/cast v1.5.0
- github.com/spf13/cobra v1.6.1
- github.com/stretchr/testify v1.8.1
- github.com/tendermint/tendermint v0.34.23
+ github.com/spf13/cobra v1.7.0
+ github.com/stretchr/testify v1.8.2
+ github.com/tendermint/tendermint v0.34.28
github.com/tendermint/tm-db v0.6.7
- go.opencensus.io v0.23.0
- google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef
- google.golang.org/grpc v1.51.0
+ go.opencensus.io v0.24.0
+ google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4
+ google.golang.org/grpc v1.54.0
gopkg.in/yaml.v2 v2.4.0
)
require (
- cosmossdk.io/math v1.0.0-beta.4 // indirect
- filippo.io/edwards25519 v1.0.0-beta.2 // indirect
- github.com/99designs/keyring v1.1.6 // indirect
- github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect
- github.com/DataDog/zstd v1.4.8 // indirect
+ cloud.google.com/go v0.110.0 // indirect
+ cloud.google.com/go/compute v1.18.0 // indirect
+ cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ cloud.google.com/go/iam v0.12.0 // indirect
+ cloud.google.com/go/storage v1.28.1 // indirect
+ cosmossdk.io/errors v1.0.0-beta.7 // indirect
+ cosmossdk.io/math v1.0.0-rc.0 // indirect
+ filippo.io/edwards25519 v1.0.0-rc.1 // indirect
+ github.com/99designs/keyring v1.2.1 // indirect
+ github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
github.com/VictoriaMetrics/fastcache v1.6.0 // indirect
github.com/Workiva/go-datastructures v1.0.53 // indirect
- github.com/armon/go-metrics v0.4.0 // indirect
+ github.com/armon/go-metrics v0.4.1 // indirect
+ github.com/aws/aws-sdk-go v1.44.122 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/bgentry/speakeasy v0.1.0 // indirect
- github.com/btcsuite/btcd v0.22.1 // indirect
- github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
+ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
+ github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect
+ github.com/btcsuite/btcd v0.22.2 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/cespare/xxhash v1.1.0 // indirect
- github.com/cespare/xxhash/v2 v2.1.2 // indirect
- github.com/coinbase/rosetta-sdk-go v0.7.0 // indirect
- github.com/confio/ics23/go v0.7.0 // indirect
- github.com/cosmos/btcutil v1.0.4 // indirect
+ github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
+ github.com/cockroachdb/apd/v2 v2.0.2 // indirect
+ github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect
+ github.com/cometbft/cometbft-db v0.7.0 // indirect
+ github.com/confio/ics23/go v0.9.0 // indirect
+ github.com/cosmos/btcutil v1.0.5 // indirect
+ github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect
+ github.com/cosmos/gogoproto v1.4.8 // indirect
github.com/cosmos/gorocksdb v1.2.0 // indirect
- github.com/cosmos/iavl v0.19.4 // indirect
- github.com/cosmos/ledger-cosmos-go v0.11.1 // indirect
- github.com/cosmos/ledger-go v0.9.2 // indirect
+ github.com/cosmos/iavl v0.19.6 // indirect
+ github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect
github.com/creachadair/taskgroup v0.3.2 // indirect
- github.com/danieljoos/wincred v1.0.2 // indirect
+ github.com/danieljoos/wincred v1.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deckarep/golang-set v1.8.0 // indirect
- github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
+ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect
- github.com/dgraph-io/badger/v2 v2.2007.3 // indirect
+ github.com/dgraph-io/badger/v2 v2.2007.4 // indirect
github.com/dgraph-io/ristretto v0.1.0 // indirect
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect
github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 // indirect
github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
- github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect
+ github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
github.com/edsrzf/mmap-go v1.0.0 // indirect
github.com/felixge/httpsnoop v1.0.1 // indirect
- github.com/fsnotify/fsnotify v1.5.4 // indirect
+ github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect
github.com/go-kit/kit v0.12.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
@@ -78,97 +88,120 @@ require (
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect
github.com/go-stack/stack v1.8.0 // indirect
+ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/gateway v1.1.0 // indirect
github.com/golang/glog v1.0.0 // indirect
+ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/snappy v0.0.4 // indirect
- github.com/google/btree v1.0.1 // indirect
+ github.com/google/btree v1.1.2 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/orderedcode v0.0.1 // indirect
+ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
github.com/google/uuid v1.3.0 // indirect
+ github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
+ github.com/googleapis/gax-go/v2 v2.7.0 // indirect
github.com/gorilla/handlers v1.5.1 // indirect
github.com/gorilla/websocket v1.5.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/gtank/merlin v0.1.1 // indirect
github.com/gtank/ristretto255 v0.1.2 // indirect
+ github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
+ github.com/hashicorp/go-getter v1.7.0 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
+ github.com/hashicorp/go-safetemp v1.0.0 // indirect
+ github.com/hashicorp/go-version v1.6.0 // indirect
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 // indirect
+ github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect
github.com/holiman/bloomfilter/v2 v2.0.3 // indirect
- github.com/holiman/uint256 v1.2.0 // indirect
+ github.com/holiman/uint256 v1.2.1 // indirect
github.com/huin/goupnp v1.0.3 // indirect
github.com/improbable-eng/grpc-web v0.15.0 // indirect
- github.com/inconshreveable/mousetrap v1.0.1 // indirect
+ github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
+ github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect
- github.com/klauspost/compress v1.15.11 // indirect
- github.com/lib/pq v1.10.6 // indirect
+ github.com/klauspost/compress v1.16.0 // indirect
+ github.com/lib/pq v1.10.7 // indirect
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
- github.com/magiconair/properties v1.8.6 // indirect
+ github.com/magiconair/properties v1.8.7 // indirect
+ github.com/manifoldco/promptui v0.9.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.16 // indirect
+ github.com/mattn/go-isatty v0.0.18 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
+ github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect
github.com/minio/highwayhash v1.0.2 // indirect
+ github.com/mitchellh/go-homedir v1.1.0 // indirect
+ github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mtibben/percent v0.2.1 // indirect
- github.com/nxadm/tail v1.4.8 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
- github.com/pelletier/go-toml v1.9.5 // indirect
- github.com/pelletier/go-toml/v2 v2.0.5 // indirect
- github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
+ github.com/pelletier/go-toml/v2 v2.0.7 // indirect
+ github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_golang v1.12.2 // indirect
- github.com/prometheus/client_model v0.2.0 // indirect
- github.com/prometheus/common v0.34.0 // indirect
- github.com/prometheus/procfs v0.8.0 // indirect
+ github.com/prometheus/client_golang v1.14.0 // indirect
+ github.com/prometheus/client_model v0.3.0 // indirect
+ github.com/prometheus/common v0.42.0 // indirect
+ github.com/prometheus/procfs v0.9.0 // indirect
github.com/prometheus/tsdb v0.10.0 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/regen-network/cosmos-proto v0.3.1 // indirect
github.com/rjeczalik/notify v0.9.2 // indirect
- github.com/rs/cors v1.8.2 // indirect
- github.com/rs/zerolog v1.27.0 // indirect
+ github.com/rs/cors v1.8.3 // indirect
+ github.com/rs/zerolog v1.29.1 // indirect
github.com/sasha-s/go-deadlock v0.3.1 // indirect
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
- github.com/spf13/afero v1.9.2 // indirect
+ github.com/spf13/afero v1.9.3 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
- github.com/spf13/viper v1.13.0 // indirect
+ github.com/spf13/viper v1.15.0 // indirect
github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969 // indirect
github.com/stretchr/objx v0.5.0 // indirect
- github.com/subosito/gotenv v1.4.1 // indirect
- github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
- github.com/tendermint/btcd v0.1.1 // indirect
- github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 // indirect
+ github.com/subosito/gotenv v1.4.2 // indirect
+ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
+ github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect
github.com/tendermint/go-amino v0.16.0 // indirect
+ github.com/tidwall/btree v1.5.0 // indirect
+ github.com/tidwall/gjson v1.14.4 // indirect
+ github.com/tidwall/match v1.1.1 // indirect
+ github.com/tidwall/pretty v1.2.0 // indirect
+ github.com/tidwall/sjson v1.2.5 // indirect
github.com/tklauser/go-sysconf v0.3.10 // indirect
github.com/tklauser/numcpus v0.4.0 // indirect
github.com/tyler-smith/go-bip39 v1.1.0 // indirect
- github.com/zondax/hid v0.9.0 // indirect
+ github.com/ulikunitz/xz v0.5.10 // indirect
+ github.com/zondax/hid v0.9.1 // indirect
+ github.com/zondax/ledger-go v0.14.1 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
- golang.org/x/crypto v0.4.0 // indirect
- golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
- golang.org/x/mod v0.7.0 // indirect
- golang.org/x/net v0.5.0 // indirect
+ golang.org/x/crypto v0.7.0 // indirect
+ golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0 // indirect
+ golang.org/x/net v0.9.0 // indirect
+ golang.org/x/oauth2 v0.5.0 // indirect
golang.org/x/sync v0.1.0 // indirect
- golang.org/x/sys v0.4.0 // indirect
- golang.org/x/term v0.4.0 // indirect
- golang.org/x/text v0.6.0 // indirect
- google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 // indirect
+ golang.org/x/sys v0.7.0 // indirect
+ golang.org/x/term v0.7.0 // indirect
+ golang.org/x/text v0.9.0 // indirect
+ golang.org/x/tools v0.7.0 // indirect
+ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
+ google.golang.org/api v0.110.0 // indirect
+ google.golang.org/appengine v1.6.7 // indirect
+ google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
nhooyr.io/websocket v1.8.7 // indirect
+ sigs.k8s.io/yaml v1.3.0 // indirect
)
replace (
github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76
github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0
- github.com/evmos/evmos/v6 => github.com/AstraProtocol/evmos/v6 v6.1.3-astra
+ github.com/evmos/evmos/v12 => github.com/AstraProtocol/evmos/v12 v12.1.6-astra-v4
github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
- google.golang.org/grpc => google.golang.org/grpc v1.33.2
+ github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
+ github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.29
)
diff --git a/go.sum b/go.sum
index 5b9076e..afa5e2d 100644
--- a/go.sum
+++ b/go.sum
@@ -1,11 +1,14 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
+cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw=
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
@@ -16,54 +19,201 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb
cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
+cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
+cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
+cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
+cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=
+cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=
+cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=
+cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=
+cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=
+cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=
+cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
+cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
+cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
+cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
+cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
+cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
+cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys=
+cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY=
+cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
+cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
+cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
+cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4=
+cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4=
+cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0=
+cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ=
+cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk=
+cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o=
+cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s=
+cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0=
+cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
+cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
+cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
+cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
+cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA=
+cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o=
+cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY=
+cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s=
+cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM=
+cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI=
+cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY=
+cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI=
+cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
+cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=
+cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=
+cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=
+cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
+cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
+cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
+cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY=
+cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=
+cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
+cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
+cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
+cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
+cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs=
+cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc=
+cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM=
+cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ=
+cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo=
+cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE=
+cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I=
+cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ=
+cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo=
+cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo=
+cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ=
+cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4=
+cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0=
+cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8=
+cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU=
+cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU=
+cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y=
+cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg=
+cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk=
+cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w=
+cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk=
+cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg=
+cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM=
+cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA=
+cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o=
+cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A=
+cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0=
+cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0=
+cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
+cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
+cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
+cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE=
+cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY=
+cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
+cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
+cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
+cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
+cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM=
+cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
+cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
+cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
+cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM=
+cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY=
+cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s=
+cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA=
+cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o=
+cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ=
+cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU=
+cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY=
+cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34=
+cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs=
+cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg=
+cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E=
+cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU=
+cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0=
+cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA=
+cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0=
+cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4=
+cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o=
+cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk=
+cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo=
+cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg=
+cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4=
+cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg=
+cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c=
+cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y=
+cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A=
+cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4=
+cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY=
+cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s=
+cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI=
+cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA=
+cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4=
+cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0=
+cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU=
+cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU=
+cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc=
+cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs=
+cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg=
+cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM=
+cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
-cosmossdk.io/math v1.0.0-beta.4 h1:JtKedVLGzA0vv84xjYmZ75RKG35Kf2WwcFu8IjRkIIw=
-cosmossdk.io/math v1.0.0-beta.4/go.mod h1:An0MllWJY6PxibUpnwGk8jOm+a/qIxlKmL5Zyp9NnaM=
+cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
+cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
+cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
+cloud.google.com/go/storage v1.28.1 h1:F5QDG5ChchaAVQhINh24U99OWHURqrW8OmQcGKXcbgI=
+cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y=
+cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
+cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
+cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
+cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4=
+cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0=
+cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo=
+cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo=
+cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE=
+cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
+cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
+cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
+collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE=
+cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w=
+cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE=
+cosmossdk.io/math v1.0.0-rc.0 h1:ml46ukocrAAoBpYKMidF0R2tQJ1Uxfns0yH8wqgMAFc=
+cosmossdk.io/math v1.0.0-rc.0/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI=
-filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o=
-github.com/AstraProtocol/evmos/v6 v6.1.3-astra h1:JnLVi4lIm6zSDzcSiwYg723PLdaF+Hz08YegF2B8VIA=
-github.com/AstraProtocol/evmos/v6 v6.1.3-astra/go.mod h1:vyJfX4T4DNLn3gmbd2inJ61xc97xKeN8b4MungOgY8Q=
-github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4=
-github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc=
-github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4=
+filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU=
+filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
+git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw=
+git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA=
+github.com/AstraProtocol/evmos/v12 v12.1.6-astra-v4 h1:VQbEh7zTN61t7YmDzGTWDf39CTdk8opmay9DW5m8Vvg=
+github.com/AstraProtocol/evmos/v12 v12.1.6-astra-v4/go.mod h1:62wMcZtnS2zW+rfteMhOabIY9DoD4x7dcbOGpH272uU=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM=
+github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
-github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
-github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
-github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
-github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
-github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
-github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
-github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
-github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg=
-github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4=
+github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM=
+github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4=
+github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
-github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
-github.com/DataDog/zstd v1.4.8 h1:Rpmta4xZ/MgZnriKNd24iZMhGpP5dvUcs/uqfBapKZY=
-github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
+github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
@@ -74,7 +224,6 @@ github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMx
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
-github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8=
github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o=
github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw=
github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=
@@ -85,47 +234,65 @@ github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:
github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I=
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
+github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
+github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
-github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc=
+github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q=
-github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
+github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA=
+github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
+github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo=
+github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
+github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo=
+github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y=
+github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8=
+github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4=
+github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0=
+github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM=
+github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
+github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
+github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
-github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ=
-github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0=
+github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s=
+github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
+github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
+github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8=
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
-github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94=
-github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c=
+github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs=
github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y=
-github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k=
-github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU=
+github.com/btcsuite/btcd v0.22.2 h1:vBZ+lGGd1XubpOWO67ITJpAEsICWhA0YzqkcpkgNBfo=
+github.com/btcsuite/btcd v0.22.2/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y=
+github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE=
+github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U=
+github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
+github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
-github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts=
@@ -138,6 +305,9 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku
github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
+github.com/bufbuild/protocompile v0.1.0 h1:HjgJBI85hY/qmW5tw/66sNDZ7z0UDdVSi/5r40WHw4s=
+github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
+github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34=
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
@@ -150,137 +320,183 @@ github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
-github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
+github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
-github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
+github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
+github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/coinbase/rosetta-sdk-go v0.7.0 h1:lmTO/JEpCvZgpbkOITL95rA80CPKb5CtMzLaqF2mCNg=
-github.com/coinbase/rosetta-sdk-go v0.7.0/go.mod h1:7nD3oBPIiHqhRprqvMgPoGxe/nyq3yftRmpsy29coWE=
+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/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M=
+github.com/cometbft/cometbft v0.34.29 h1:Q4FqMevP9du2pOgryZJHpDV2eA6jg/kMYxBj9ZTY6VQ=
+github.com/cometbft/cometbft v0.34.29/go.mod h1:L9shMfbkZ8B+7JlwANEr+NZbBcn+hBpwdbeYvA5rLCw=
+github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo=
+github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0=
+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/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q=
+github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0=
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44=
-github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU=
-github.com/cosmos/cosmos-sdk v0.45.11 h1:Pc44fFEkai0KXFND5Ys/2ZJkfVdstMIBzKBN8MY7Ll0=
-github.com/cosmos/cosmos-sdk v0.45.11/go.mod h1:45z8Q1Ah4iypFycu2Kl4kBPIsQKUiND8G2CUX+HTtPM=
+github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=
+github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=
+github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o=
+github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I=
+github.com/cosmos/cosmos-sdk v0.46.13 h1:LhL6WDBadczqBuCW0t5BHUzGQR3vbujdOYOfU0ORt+o=
+github.com/cosmos/cosmos-sdk v0.46.13/go.mod h1:EfY521ATNEla8eJ6oJuZBdgP5+p360s7InnRqX+TWdM=
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 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=
github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=
+github.com/cosmos/gogoproto v1.4.8 h1:BrHKc6WFZt8+jRV71vKSQE+JrfF+JAnzrKo2VP7wIZ4=
+github.com/cosmos/gogoproto v1.4.8/go.mod h1:hnb0DIEWTv+wdNzNcqus5xCQXq5+CXauq1FJuurRfVY=
github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y=
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/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw=
-github.com/cosmos/ibc-go/v3 v3.4.0 h1:ha3cqEG36pqMWqA1D+kxDWBTZXpeFMd/aZIQF7I0xro=
-github.com/cosmos/ibc-go/v3 v3.4.0/go.mod h1:VwB/vWu4ysT5DN2aF78d17LYmx3omSAdq6gpKvM7XRA=
+github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU=
+github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw=
+github.com/cosmos/ibc-go/v6 v6.2.0 h1:HKS5WNxQrlmjowHb73J9LqlNJfvTnvkbhXZ9QzNTU7Q=
+github.com/cosmos/ibc-go/v6 v6.2.0/go.mod h1:+S3sxcNwOhgraYDJAhIFDg5ipXHaUnJrg7tOQqGyWlc=
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/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4=
-github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY=
-github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI=
-github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI=
+github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA=
+github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI=
+github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM=
github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U=
+github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0=
+github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0=
+github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4=
github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo=
github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
-github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc=
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
+github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M=
+github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw=
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I=
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
-github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE=
-github.com/dgraph-io/badger/v2 v2.2007.3 h1:Sl9tQWz92WCbVSe8pj04Tkqlm2boW+KAxd+XSs58SQI=
-github.com/dgraph-io/badger/v2 v2.2007.3/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE=
+github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o=
+github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk=
github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI=
github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
+github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 h1:Izz0+t1Z5nI16/II7vuEo/nHjodOg0p7+OiDpjX5t1E=
github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
+github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko=
+github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
-github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA=
+github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk=
github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf h1:Yt+4K30SdjOkRoRRm3vYNQgR+/ZIy0RmeUDZo7Y8zeQ=
github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk=
github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ=
github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM=
-github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
+github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM=
+github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
+github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts=
github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw=
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
+github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
+github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
+github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM=
-github.com/ethereum/go-ethereum v1.10.19 h1:EOR5JbL4MD5yeOqv8W2iC1s4NximrTjqFccUz8lyBRA=
-github.com/ethereum/go-ethereum v1.10.19/go.mod h1:IJBNMtzKcNHPtllYihy6BL2IgK1u+32JriaTbdt4v+w=
-github.com/evmos/ethermint v0.19.3 h1:Tc2tIiEK9b+rp1a0aWfzzggRDgecLa8gOHyXT3tH/1A=
-github.com/evmos/ethermint v0.19.3/go.mod h1:2A25AF6mes32UL6j+r0wT0FnbzN7tzGYp2URxy+ZNmY=
+github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0=
+github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s=
+github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg=
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0=
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A=
github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk=
-github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
-github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
+github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c=
+github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
+github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
-github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
+github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI=
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww=
+github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4=
+github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
+github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU=
+github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
+github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
+github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -289,8 +505,6 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2
github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4=
github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs=
-github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
-github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
@@ -304,19 +518,23 @@ github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dT
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY=
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
-github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU=
github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
+github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0=
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8=
@@ -326,9 +544,14 @@ github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/E
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0=
github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic=
+github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog=
+github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
+github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
+github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
@@ -337,13 +560,17 @@ github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4er
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
+github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -360,18 +587,21 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
+github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=
-github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
+github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
+github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
+github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
@@ -383,15 +613,21 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64=
github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
+github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us=
github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -404,14 +640,36 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf
github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
+github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
+github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
+github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
+github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k=
+github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
+github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
+github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
+github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=
+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.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
+github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
+github.com/googleapis/gax-go/v2 v2.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/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
@@ -422,11 +680,11 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc=
+github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
@@ -447,8 +705,13 @@ github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoP
github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
+github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
+github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
+github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
+github.com/hashicorp/go-getter v1.7.0 h1:bzrYP+qu/gMrL1au7/aDvkoOVGUJpeKBgbqRHACAFDY=
+github.com/hashicorp/go-getter v1.7.0/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc=
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
@@ -456,16 +719,19 @@ github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iP
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
+github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
+github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
+github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs=
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
@@ -474,16 +740,16 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 h1:uUjLpLt6bVvZ72SQc/B4dXcPBw4Vgd7soowdRl52qEM=
-github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87/go.mod h1:XGsKKeXxeRr95aEOgipvluMPlgjr7dGlk9ZTWOjcUcg=
+github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU=
+github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE=
github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
-github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw=
-github.com/holiman/uint256 v1.2.0 h1:gpSYcPLWGv4sG43I2mVLiDZCNDh/EpGjSk8tmtxitHM=
github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw=
+github.com/holiman/uint256 v1.2.1 h1:XRtyuda/zw2l+Bq/38n5XUoEF72aSOu/77Thd9pPp2o=
+github.com/holiman/uint256 v1.2.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
-github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=
+github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y=
github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ=
github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y=
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
@@ -492,18 +758,31 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:
github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=
github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
-github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY=
+github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI=
+github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8=
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
-github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
+github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk=
+github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE=
+github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
+github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
+github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8=
+github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE=
+github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0=
+github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU=
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98=
+github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
@@ -514,73 +793,92 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
-github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU=
+github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
+github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0=
+github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU=
github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM=
github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
+github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c=
+github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
+github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
+github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
+github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
+github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg=
+github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
+github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
-github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs=
-github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
+github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4=
+github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
-github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
+github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
+github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
+github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
+github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
-github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
+github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
-github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
+github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
-github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
+github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
+github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
+github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
-github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
+github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
+github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miguelmota/go-ethereum-hdwallet v0.1.1 h1:zdXGlHao7idpCBjEGTXThVAtMKs+IxAgivZ75xqkWK0=
github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM=
@@ -590,23 +888,29 @@ github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA
github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
+github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
+github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
+github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
+github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=
+github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
@@ -622,60 +926,59 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE
github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
-github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE=
+github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
-github.com/onsi/ginkgo/v2 v2.7.1 h1:YgLPk+gpqDtAPeRCWEmfO8oxE6ru3xcVSXAM7wn8w9I=
-github.com/onsi/ginkgo/v2 v2.7.1/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU=
+github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU=
+github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts=
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.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q=
-github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
+github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=
+github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
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/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
-github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w=
+github.com/opencontainers/runc v1.1.4 h1:nRCz/8sKg6K6jgYAFLDlXzPeITBZJyX28DBVhWD+5dg=
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
+github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
-github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ=
github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34=
+github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
-github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg=
-github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas=
+github.com/pelletier/go-toml/v2 v2.0.7 h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us=
+github.com/pelletier/go-toml/v2 v2.0.7/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
+github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=
-github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ=
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o=
+github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU=
+github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
+github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
@@ -685,6 +988,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
+github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
@@ -694,39 +998,35 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn
github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
-github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
-github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=
-github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
+github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw=
+github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
+github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
+github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
-github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
-github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
-github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE=
-github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE=
+github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM=
+github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo=
-github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
-github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
+github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
+github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
+github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/prometheus/tsdb v0.10.0 h1:If5rVCMTp6W2SiRAQFlbpJNgVlgMEd+U2GZckwK38ic=
github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4=
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
@@ -738,23 +1038,24 @@ github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzy
github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM=
github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4=
github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI=
+github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc=
github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho=
github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8=
github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
-github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
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.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
-github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ=
-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/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
+github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo=
+github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
+github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc=
+github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU=
+github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
@@ -762,7 +1063,9 @@ github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71e
github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY=
-github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
+github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
+github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
@@ -779,15 +1082,15 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw=
-github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
+github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk=
+github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
-github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
+github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
+github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
@@ -796,13 +1099,11 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
-github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU=
-github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw=
+github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU=
+github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA=
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q=
github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969 h1:Oo2KZNP70KE0+IUJSidPj/BFS/RXNHmKIJOdckzml2E=
github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q=
-github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw=
-github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU=
github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
@@ -812,6 +1113,7 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -820,30 +1122,39 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs=
-github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
-github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM=
+github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8=
+github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
-github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s=
-github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U=
-github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI=
-github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk=
+github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok=
+github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8=
github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E=
github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME=
-github.com/tendermint/tendermint v0.34.23 h1:JZYsdc59aOiT5efou+BHILJv8x6FlRyvlor84Xq9Tb0=
-github.com/tendermint/tendermint v0.34.23/go.mod h1:rXVrl4OYzmIa1I91av3iLv2HS0fGSiucyW9J4aMTpKI=
github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8=
github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I=
-github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI=
-github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
-github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
-github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg=
+github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ=
+github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE=
+github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM=
+github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
+github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
+github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM=
+github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
+github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
+github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg=
+github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI=
github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw=
github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
+github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM=
github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o=
github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
@@ -858,20 +1169,34 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8=
+github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
+github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
-github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI=
-github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
-github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees=
+github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
+github.com/urfave/cli/v2 v2.10.2 h1:x3p8awjp/2arX+Nl/G2040AZpOCHS/eMJJ1/a+mye4Y=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
+github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8=
-github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+github.com/zondax/hid v0.9.1 h1:gQe66rtmyZ8VeGFcOpbuH3r7erYtNEAezCAYu8LdkJo=
+github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
+github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c=
+github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320=
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=
go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=
@@ -884,14 +1209,17 @@ 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.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
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.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.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -911,14 +1239,20 @@ golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+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-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
-golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
+golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A=
+golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
+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-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
-golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
@@ -927,10 +1261,12 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
-golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
+golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0 h1:LGJsf5LRplCck6jUCH3dBL2dmycNruWNF5xugkSlfXw=
+golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
+golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -941,24 +1277,24 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
-golang.org/x/mobile v0.0.0-20200801112145-973feb4309de/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA=
-golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -993,19 +1329,35 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
-golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
+golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
+golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
+golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1015,8 +1367,24 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
+golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
+golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
+golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
+golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
+golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
+golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
+golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
+golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
+golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s=
+golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1028,9 +1396,13 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1041,6 +1413,7 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1051,6 +1424,7 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1062,6 +1436,7 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1081,9 +1456,8 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1091,42 +1465,83 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
-golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
+golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg=
-golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
+golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
+golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
-golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA=
+golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@@ -1151,7 +1566,7 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1180,11 +1595,29 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4=
+golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
+golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
+golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
+golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
+golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
+gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
+gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
+gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
+gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
+gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
+gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
@@ -1205,12 +1638,45 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513
google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
+google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
+google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
+google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=
+google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=
+google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=
+google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=
+google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=
+google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
+google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
+google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=
+google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
+google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
+google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=
+google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=
+google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8=
+google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs=
+google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
+google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
+google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw=
+google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg=
+google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=
+google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g=
+google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
+google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
+google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI=
+google.golang.org/api v0.96.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.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
+google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU=
+google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
@@ -1219,6 +1685,7 @@ google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRn
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
+google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
@@ -1226,6 +1693,7 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
@@ -1253,11 +1721,120 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef h1:uQ2vjV/sHTsWSqdKeLqmwitzgvjMl7o4IdtHwUDXSJY=
-google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
+google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
+google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
+google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
+google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
+google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
+google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
+google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
+google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
+google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
+google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
+google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
+google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
+google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
+google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
+google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
+google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
+google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
+google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
+google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
+google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
+google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
+google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
+google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E=
+google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
+google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
+google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
+google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
+google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE=
+google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc=
+google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw=
+google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
+google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
+google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U=
+google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
+google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
+google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
+google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA=
+google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
+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.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
+google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
+google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
+google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
+google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
+google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
+google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
+google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
+google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
+google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
+google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag=
+google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
+google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -1270,15 +1847,20 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk=
-google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
+gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
@@ -1290,7 +1872,6 @@ gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJ
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0=
gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
@@ -1308,6 +1889,7 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
+honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -1315,12 +1897,17 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g=
nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
+pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
+rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
+sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/ibc/module.go b/ibc/module.go
index 073a2f5..1cd1dc0 100644
--- a/ibc/module.go
+++ b/ibc/module.go
@@ -3,9 +3,9 @@ package ibc
import (
sdk "github.com/cosmos/cosmos-sdk/types"
capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
- channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"
- porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types"
- "github.com/cosmos/ibc-go/v3/modules/core/exported"
+ channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
+ porttypes "github.com/cosmos/ibc-go/v6/modules/core/05-port/types"
+ "github.com/cosmos/ibc-go/v6/modules/core/exported"
)
var _ porttypes.IBCModule = &Module{}
@@ -33,7 +33,7 @@ func (im Module) OnChanOpenInit(
chanCap *capabilitytypes.Capability,
counterparty channeltypes.Counterparty,
version string,
-) error {
+) (string, error) {
return im.app.OnChanOpenInit(ctx, order, connectionHops, portID, channelID, chanCap, counterparty, version)
}
diff --git a/ibc/module_test.go b/ibc/module_test.go
index 5c6e3dc..02bcfc6 100644
--- a/ibc/module_test.go
+++ b/ibc/module_test.go
@@ -9,10 +9,10 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
- transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"
- channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"
- porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types"
- "github.com/cosmos/ibc-go/v3/modules/core/exported"
+ transfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types"
+ channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
+ porttypes "github.com/cosmos/ibc-go/v6/modules/core/05-port/types"
+ "github.com/cosmos/ibc-go/v6/modules/core/exported"
)
var _ porttypes.IBCModule = &MockIBCModule{}
@@ -34,9 +34,9 @@ func (m MockIBCModule) OnChanOpenInit(
chanCap *capabilitytypes.Capability,
counterparty channeltypes.Counterparty,
version string,
-) error {
+) (string, error) {
args := m.Called()
- return args.Error(0)
+ return version, args.Error(0)
}
// OnChanOpenTry implements the Module interface.
@@ -150,7 +150,7 @@ func TestModule(t *testing.T) {
module := NewModule(mockModule)
// mock calls for abstraction
- err := module.OnChanOpenInit(sdk.Context{}, channeltypes.ORDERED, nil, transfertypes.PortID, "channel-0", &capabilitytypes.Capability{}, channeltypes.Counterparty{}, "")
+ _, err := module.OnChanOpenInit(sdk.Context{}, channeltypes.ORDERED, nil, transfertypes.PortID, "channel-0", &capabilitytypes.Capability{}, channeltypes.Counterparty{}, "")
require.NoError(t, err)
_, err = module.OnChanOpenTry(sdk.Context{}, channeltypes.ORDERED, nil, transfertypes.PortID, "channel-0", &capabilitytypes.Capability{}, channeltypes.Counterparty{}, "")
require.NoError(t, err)
diff --git a/ibc/testing/README.md b/ibc/testing/README.md
index d17d2ce..e39b961 100644
--- a/ibc/testing/README.md
+++ b/ibc/testing/README.md
@@ -260,8 +260,8 @@ import (
"github.com/tendermint/tendermint/libs/log"
dbm "github.com/tendermint/tm-db"
- "github.com/cosmos/ibc-go/v3/modules/apps/transfer/simapp"
- ibctesting "github.com/cosmos/ibc-go/v3/testing"
+ "github.com/cosmos/ibc-go/v6/modules/apps/transfer/simapp"
+ ibctesting "github.com/cosmos/ibc-go/v6/testing"
)
func SetupTransferTestingApp() (ibctesting.TestingApp, map[string]json.RawMessage) {
diff --git a/ibc/testing/app.go b/ibc/testing/app.go
index 900b918..784069f 100644
--- a/ibc/testing/app.go
+++ b/ibc/testing/app.go
@@ -17,11 +17,11 @@ import (
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/stretchr/testify/require"
- ibcgotesting "github.com/cosmos/ibc-go/v3/testing"
- "github.com/cosmos/ibc-go/v3/testing/simapp"
+ ibcgotesting "github.com/cosmos/ibc-go/v6/testing"
+ "github.com/cosmos/ibc-go/v6/testing/simapp"
- astraapp "github.com/AstraProtocol/astra/v2/app"
- ethermint "github.com/evmos/ethermint/types"
+ astraapp "github.com/AstraProtocol/astra/v3/app"
+ ethermint "github.com/evmos/evmos/v12/types"
)
var DefaultTestingAppInit func() (ibcgotesting.TestingApp, map[string]json.RawMessage) = astraapp.SetupTestingApp
diff --git a/ibc/testing/chain.go b/ibc/testing/chain.go
index 02ee9e4..0c33981 100644
--- a/ibc/testing/chain.go
+++ b/ibc/testing/chain.go
@@ -14,13 +14,13 @@ import (
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
tmtypes "github.com/tendermint/tendermint/types"
- channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"
- ibcgotesting "github.com/cosmos/ibc-go/v3/testing"
- "github.com/cosmos/ibc-go/v3/testing/mock"
+ channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
+ ibcgotesting "github.com/cosmos/ibc-go/v6/testing"
+ "github.com/cosmos/ibc-go/v6/testing/mock"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
- ethermint "github.com/evmos/ethermint/types"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
+ ethermint "github.com/evmos/evmos/v12/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
)
// ChainIDPrefix defines the default chain ID prefix for Astra test chains
@@ -47,7 +47,8 @@ func NewTestChain(t *testing.T, coord *ibcgotesting.Coordinator, chainID string)
// create validator set with single validator
validator := tmtypes.NewValidator(pubKey, 1)
valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator})
- signers := []tmtypes.PrivValidator{privVal}
+ signers := make(map[string]tmtypes.PrivValidator)
+ signers[pubKey.Address().String()] = privVal
// generate genesis account
senderPrivKey, err := ethsecp256k1.GenerateKey()
@@ -94,6 +95,7 @@ func NewTestChain(t *testing.T, coord *ibcgotesting.Coordinator, chainID string)
Signers: signers,
SenderPrivKey: senderPrivKey,
SenderAccount: acc,
+ NextVals: valSet,
}
coord.CommitBlock(chain)
diff --git a/ibc/testing/coordinator.go b/ibc/testing/coordinator.go
index f84609e..451ea26 100644
--- a/ibc/testing/coordinator.go
+++ b/ibc/testing/coordinator.go
@@ -4,7 +4,7 @@ import (
"testing"
"time"
- ibctesting "github.com/cosmos/ibc-go/v3/testing"
+ ibctesting "github.com/cosmos/ibc-go/v6/testing"
)
var globalStartTime = time.Date(2020, 1, 2, 0, 0, 0, 0, time.UTC)
diff --git a/ibc/utils.go b/ibc/utils.go
index 4205304..8cb20ee 100644
--- a/ibc/utils.go
+++ b/ibc/utils.go
@@ -4,10 +4,10 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
- transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"
- channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"
+ transfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types"
+ channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
- astra "github.com/AstraProtocol/astra/v2/types"
+ astra "github.com/AstraProtocol/astra/v3/types"
)
// GetTransferSenderRecipient returns the sender and recipient sdk.AccAddresses
diff --git a/ibc/utils_test.go b/ibc/utils_test.go
index 81bf695..344655e 100644
--- a/ibc/utils_test.go
+++ b/ibc/utils_test.go
@@ -7,9 +7,9 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
- transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"
- channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"
- ibctesting "github.com/cosmos/ibc-go/v3/testing"
+ transfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types"
+ channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
+ ibctesting "github.com/cosmos/ibc-go/v6/testing"
)
func init() {
diff --git a/proto/astra/feeburn/v1/genesis.proto b/proto/astra/feeburn/v1/genesis.proto
index b4dfce3..3decaa4 100644
--- a/proto/astra/feeburn/v1/genesis.proto
+++ b/proto/astra/feeburn/v1/genesis.proto
@@ -5,7 +5,7 @@ import "gogoproto/gogo.proto";
import "astra/feeburn/v1/params.proto";
// this line is used by starport scaffolding # genesis/proto/import
-option go_package = "github.com/AstraProtocol/astra/v2/x/feeburn/types";
+option go_package = "github.com/AstraProtocol/astra/v3/x/feeburn/types";
// GenesisState defines the feeburn module's genesis state.
message GenesisState {
diff --git a/proto/astra/feeburn/v1/params.proto b/proto/astra/feeburn/v1/params.proto
index e6f947f..7ec38c9 100644
--- a/proto/astra/feeburn/v1/params.proto
+++ b/proto/astra/feeburn/v1/params.proto
@@ -3,7 +3,7 @@ package astra.feeburn.v1;
import "gogoproto/gogo.proto";
-option go_package = "github.com/AstraProtocol/astra/v2/x/feeburn/types";
+option go_package = "github.com/AstraProtocol/astra/v3/x/feeburn/types";
// Params defines the parameters for the module.
message Params {
diff --git a/proto/astra/feeburn/v1/query.proto b/proto/astra/feeburn/v1/query.proto
index 950b4a0..442b773 100644
--- a/proto/astra/feeburn/v1/query.proto
+++ b/proto/astra/feeburn/v1/query.proto
@@ -6,7 +6,7 @@ import "google/api/annotations.proto";
import "astra/feeburn/v1/params.proto";
import "cosmos/base/v1beta1/coin.proto";
-option go_package = "github.com/AstraProtocol/astra/v2/x/feeburn/types";
+option go_package = "github.com/AstraProtocol/astra/v3/x/feeburn/types";
// Query defines the gRPC querier service.
service Query {
diff --git a/proto/astra/mint/v1/genesis.proto b/proto/astra/mint/v1/genesis.proto
index 7c84a4d..8061f43 100644
--- a/proto/astra/mint/v1/genesis.proto
+++ b/proto/astra/mint/v1/genesis.proto
@@ -4,7 +4,7 @@ package astra.mint.v1;
import "gogoproto/gogo.proto";
import "astra/mint/v1/mint.proto";
-option go_package = "github.com/AstraProtocol/astra/v2/x/mint/types";
+option go_package = "github.com/AstraProtocol/astra/v3/x/mint/types";
// GenesisState defines the mint module's genesis state.
message GenesisState {
diff --git a/proto/astra/mint/v1/mint.proto b/proto/astra/mint/v1/mint.proto
index c581af3..80a07db 100644
--- a/proto/astra/mint/v1/mint.proto
+++ b/proto/astra/mint/v1/mint.proto
@@ -1,7 +1,7 @@
syntax = "proto3";
package astra.mint.v1;
-option go_package = "github.com/AstraProtocol/astra/v2/x/mint/types";
+option go_package = "github.com/AstraProtocol/astra/v3/x/mint/types";
import "gogoproto/gogo.proto";
diff --git a/proto/astra/mint/v1/query.proto b/proto/astra/mint/v1/query.proto
index e7e51da..9b05896 100644
--- a/proto/astra/mint/v1/query.proto
+++ b/proto/astra/mint/v1/query.proto
@@ -6,7 +6,7 @@ import "google/api/annotations.proto";
import "astra/mint/v1/mint.proto";
import "cosmos/base/v1beta1/coin.proto";
-option go_package = "github.com/AstraProtocol/astra/v2/x/mint/types";
+option go_package = "github.com/AstraProtocol/astra/v3/x/mint/types";
// Query provides defines the gRPC querier service.
service Query {
diff --git a/tests/erc20_proposals_test.go b/tests/erc20_proposals_test.go
deleted file mode 100644
index 0e85036..0000000
--- a/tests/erc20_proposals_test.go
+++ /dev/null
@@ -1,374 +0,0 @@
-package tests
-
-import (
- "fmt"
- sdk "github.com/cosmos/cosmos-sdk/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- "github.com/ethereum/go-ethereum/common"
- "github.com/evmos/ethermint/tests"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
- "github.com/evmos/evmos/v6/x/erc20/keeper"
- "github.com/evmos/evmos/v6/x/erc20/types"
- "github.com/stretchr/testify/mock"
- "github.com/stretchr/testify/suite"
- "testing"
-)
-
-func TestErc20ProposalsTestingSuite(t *testing.T) {
- suite.Run(t, new(KeeperTestSuite))
-}
-
-func (suite KeeperTestSuite) TestRegisterERC20() {
- var (
- contractAddr common.Address
- pair types.TokenPair
- )
- testCases := []struct {
- name string
- malleate func()
- expPass bool
- }{
- {
- "conversion is disabled globally",
- func() {
- params := types.DefaultParams()
- params.EnableErc20 = false
- suite.app.Erc20Keeper.SetParams(suite.ctx, params)
- },
- false,
- },
- {
- "token ERC20 already registered",
- func() {
- suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID())
- },
- false,
- },
- {
- "denom already registered",
- func() {
- suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID())
- },
- false,
- },
- {
- "meta data already stored",
- func() {
- suite.app.Erc20Keeper.CreateCoinMetadata(suite.ctx, contractAddr)
- },
- false,
- },
- {
- "ok",
- func() {},
- true,
- },
- {
- "force fail evm",
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- },
- false,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.SetupTest() // reset
-
- var err error
- contractAddr, err = suite.DeployContract(erc20Name, erc20Symbol, cosmosDecimals)
- suite.Require().NoError(err)
- suite.Commit()
- coinName := types.CreateDenom(contractAddr.String())
- pair = types.NewTokenPair(contractAddr, coinName, true, types.OWNER_EXTERNAL)
-
- tc.malleate()
-
- _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr)
- metadata, found := suite.app.BankKeeper.GetDenomMetaData(suite.ctx, coinName)
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
- // Metadata variables
- suite.Require().True(found)
- suite.Require().Equal(coinName, metadata.Base)
- suite.Require().Equal(coinName, metadata.Name)
- suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.Display)
- suite.Require().Equal(erc20Symbol, metadata.Symbol)
- // Denom units
- suite.Require().Equal(len(metadata.DenomUnits), 2)
- suite.Require().Equal(coinName, metadata.DenomUnits[0].Denom)
- suite.Require().Equal(uint32(zeroExponent), metadata.DenomUnits[0].Exponent)
- suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.DenomUnits[1].Denom)
- // Custom exponent at contract creation matches coin with token
- suite.Require().Equal(metadata.DenomUnits[1].Exponent, uint32(cosmosDecimals))
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
-}
-
-func (suite KeeperTestSuite) TestToggleConversion() {
- var (
- contractAddr common.Address
- id []byte
- pair types.TokenPair
- )
-
- testCases := []struct {
- name string
- malleate func()
- expPass bool
- conversionEnabled bool
- }{
- {
- "token not registered",
- func() {
- contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals)
- suite.Require().NoError(err)
- suite.Commit()
- pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE)
- },
- false,
- false,
- },
- {
- "token not registered - pair not found",
- func() {
- contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals)
- suite.Require().NoError(err)
- suite.Commit()
- pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE)
- suite.app.Erc20Keeper.SetERC20Map(suite.ctx, common.HexToAddress(pair.Erc20Address), pair.GetID())
- },
- false,
- false,
- },
- {
- "disable conversion",
- func() {
- contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner)
- id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String())
- pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id)
- },
- true,
- false,
- },
- {
- "disable and enable conversion",
- func() {
- contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner)
- id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String())
- pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id)
- pair, _ = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String())
- },
- true,
- true,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.SetupTest() // reset
-
- tc.malleate()
-
- var err error
- pair, err = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String())
- // Request the pair using the GetPairToken func to make sure that is updated on the db
- pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id)
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
- if tc.conversionEnabled {
- suite.Require().True(pair.Enabled)
- } else {
- suite.Require().False(pair.Enabled)
- }
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
-}
-
-func (suite KeeperTestSuite) TestRegisterCoin() {
- metadata := banktypes.Metadata{
- Description: "description",
- Base: cosmosTokenBase,
- // NOTE: Denom units MUST be increasing
- DenomUnits: []*banktypes.DenomUnit{
- {
- Denom: cosmosTokenBase,
- Exponent: 0,
- },
- {
- Denom: cosmosTokenDisplay,
- Exponent: defaultExponent,
- },
- },
- Name: cosmosTokenBase,
- Symbol: erc20Symbol,
- Display: cosmosTokenDisplay,
- }
-
- testCases := []struct {
- name string
- malleate func()
- expPass bool
- }{
- {
- "conversion is disabled globally",
- func() {
- params := types.DefaultParams()
- params.EnableErc20 = false
- suite.app.Erc20Keeper.SetParams(suite.ctx, params)
- },
- false,
- },
- {
- "denom already registered",
- func() {
- regPair := types.NewTokenPair(tests.GenerateAddress(), metadata.Base, true, types.OWNER_MODULE)
- suite.app.Erc20Keeper.SetDenomMap(suite.ctx, regPair.Denom, regPair.GetID())
- suite.Commit()
- },
- false,
- },
- {
- "token doesn't have supply",
- func() {
- },
- false,
- },
- {
- "metadata different that stored",
- func() {
- metadata.Base = cosmosTokenBase
- validMetadata := banktypes.Metadata{
- Description: "description",
- Base: cosmosTokenBase,
- // NOTE: Denom units MUST be increasing
- DenomUnits: []*banktypes.DenomUnit{
- {
- Denom: cosmosTokenBase,
- Exponent: 0,
- },
- {
- Denom: cosmosTokenDisplay,
- Exponent: uint32(18),
- },
- },
- Name: erc20Name,
- Symbol: erc20Symbol,
- Display: cosmosTokenDisplay,
- }
-
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)})
- suite.Require().NoError(err)
- suite.app.BankKeeper.SetDenomMetaData(suite.ctx, validMetadata)
- },
- false,
- },
- {
- "evm denom registration - evm",
- func() {
- metadata.Base = "evm"
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)})
- suite.Require().NoError(err)
- },
- false,
- },
- {
- "evm denom registration - aevm",
- func() {
- metadata.Base = "aevm"
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)})
- suite.Require().NoError(err)
- },
- false,
- },
- {
- "evm denom registration - evmxx",
- func() {
- metadata.Base = "evmxx"
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)})
- suite.Require().NoError(err)
- },
- false,
- },
- {
- "evm denom registration - wevm",
- func() {
- metadata.Base = "wevm"
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)})
- suite.Require().NoError(err)
- },
- false,
- },
- {
- "ok",
- func() {
- metadata.Base = cosmosTokenBase
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)})
- suite.Require().NoError(err)
- },
- true,
- },
- {
- "force fail evm",
- func() {
- metadata.Base = cosmosTokenBase
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)})
- suite.Require().NoError(err)
-
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- },
- false,
- },
- {
- "force delete module account evm",
- func() {
- metadata.Base = cosmosTokenBase
- err := suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)})
- suite.Require().NoError(err)
-
- acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes())
- suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc)
- },
- false,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.SetupTest() // reset
-
- tc.malleate()
-
- pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, metadata)
- suite.Commit()
-
- expPair := &types.TokenPair{
- Erc20Address: "0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd",
- Denom: "acoin",
- Enabled: true,
- ContractOwner: 1,
- }
-
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
- suite.Require().Equal(pair, expPair)
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
-}
diff --git a/tests/erc20_test.go b/tests/erc20_test.go
deleted file mode 100644
index fe9a8e6..0000000
--- a/tests/erc20_test.go
+++ /dev/null
@@ -1,1310 +0,0 @@
-package tests
-
-import (
- "fmt"
- "github.com/AstraProtocol/astra/v2/cmd/config"
- sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/ethereum/go-ethereum/common"
- "github.com/evmos/ethermint/x/evm/statedb"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
- "github.com/evmos/evmos/v6/x/erc20/keeper"
- "github.com/evmos/evmos/v6/x/erc20/types"
- "github.com/stretchr/testify/mock"
- "github.com/stretchr/testify/suite"
- "math/big"
- "testing"
-)
-
-func TestErc20TestingSuite(t *testing.T) {
- suite.Run(t, new(KeeperTestSuite))
-}
-
-func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() {
- testCases := []struct {
- name string
- mint int64
- burn int64
- malleate func(common.Address)
- extra func()
- expPass bool
- selfdestructed bool
- }{
- {
- "ok - sufficient funds",
- 100,
- 10,
- func(common.Address) {},
- func() {},
- true,
- false,
- },
- {
- "ok - equal funds",
- 10,
- 10,
- func(common.Address) {},
- func() {},
- true,
- false,
- },
- {
- "ok - suicided contract",
- 10,
- 10,
- func(erc20 common.Address) {
- stateDb := suite.StateDB()
- ok := stateDb.Suicide(erc20)
- suite.Require().True(ok)
- suite.Require().NoError(stateDb.Commit())
- },
- func() {},
- true,
- true,
- },
- {
- "fail - insufficient funds",
- 0,
- 10,
- func(common.Address) {},
- func() {},
- false,
- false,
- },
- {
- "fail - minting disabled",
- 100,
- 10,
- func(common.Address) {
- params := types.DefaultParams()
- params.EnableErc20 = false
- suite.app.Erc20Keeper.SetParams(suite.ctx, params)
- },
- func() {},
- false,
- false,
- },
- {
- "fail - deleted module account - force fail", 100, 10, func(common.Address) {},
- func() {
- acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes())
- suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc)
- }, false, false,
- },
- {
- "fail - force evm fail", 100, 10, func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- }, false, false,
- },
- {
- "fail - force evm balance error", 100, 10, func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- // first balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- // convert coin
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once()
- // second balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once()
- //Extra call on test
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- }, false, false,
- },
- {
- "fail - force balance error", 100, 10, func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- }, false, false,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.mintFeeCollector = true
- suite.SetupTest()
- metadata, pair := suite.setupRegisterCoin()
- suite.Require().NotNil(metadata)
- erc20 := pair.GetERC20Contract()
- tc.malleate(erc20)
- suite.Commit()
-
- ctx := sdk.WrapSDKContext(suite.ctx)
- coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.mint)))
- sender := sdk.AccAddress(suite.address.Bytes())
- msg := types.NewMsgConvertCoin(
- sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.burn)),
- suite.address,
- sender,
- )
-
- suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins)
- suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins)
-
- tc.extra()
- res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg)
- expRes := &types.MsgConvertCoinResponse{}
- suite.Commit()
- balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address)
- cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base)
-
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
-
- acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20)
- if tc.selfdestructed {
- suite.Require().Nil(acc, "expected contract to be destroyed")
- } else {
- suite.Require().NotNil(acc)
- }
-
- if tc.selfdestructed || !acc.IsContract() {
- id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String())
- _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id)
- suite.Require().False(found)
- } else {
- suite.Require().Equal(expRes, res)
- suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64())
- suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64())
- }
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
- suite.mintFeeCollector = false
-}
-
-func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() {
- testCases := []struct {
- name string
- mint int64
- burn int64
- reconvert int64
- malleate func()
- expPass bool
- }{
- {"ok - sufficient funds", 100, 10, 5, func() {}, true},
- {"ok - equal funds", 10, 10, 10, func() {}, true},
- {"fail - insufficient funds", 10, 1, 5, func() {}, false},
- {"fail ", 10, 1, -5, func() {}, false},
- {"fail - deleted module account - force fail", 100, 10, 5,
- func() {
- acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes())
- suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc)
- },
- false,
- },
- {"fail - force evm fail", 100, 10, 5,
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- false,
- },
- {"fail - force fail second balance", 100, 10, 5,
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- // first balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- // convert coin
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once()
- // second balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once()
- //Extra call on test
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- false,
- },
- {"fail - force fail second balance", 100, 10, 5,
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- // first balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- // convert coin
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once()
- // second balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- //Extra call on test
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- false,
- },
- {"fail - force fail unescrow", 100, 10, 5,
- func() {
- mockBankKeeper := &MockBankKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper)
-
- mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow"))
- mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false)
- mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdk.OneInt()})
- },
- false,
- },
- {"fail - force fail balance after transfer", 100, 10, 5,
- func() {
- mockBankKeeper := &MockBankKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper)
-
- mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
- mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false)
- mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "acoin", Amount: sdk.OneInt()})
- },
- false,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.mintFeeCollector = true
- suite.SetupTest()
- metadata, pair := suite.setupRegisterCoin()
- suite.Require().NotNil(metadata)
- suite.Require().NotNil(pair)
-
- // Precondition: Convert Coin to ERC20
- coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.mint)))
- sender := sdk.AccAddress(suite.address.Bytes())
- suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins)
- suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins)
- msg := types.NewMsgConvertCoin(
- sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.burn)),
- suite.address,
- sender,
- )
-
- ctx := sdk.WrapSDKContext(suite.ctx)
- _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg)
- suite.Require().NoError(err, tc.name)
- suite.Commit()
- balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address)
- cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base)
- suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64())
- suite.Require().Equal(balance, big.NewInt(tc.burn))
-
- // Convert ERC20s back to Coins
- ctx = sdk.WrapSDKContext(suite.ctx)
- contractAddr := common.HexToAddress(pair.Erc20Address)
- msgConvertERC20 := types.NewMsgConvertERC20(
- sdk.NewInt(tc.reconvert),
- sender,
- contractAddr,
- suite.address,
- )
-
- tc.malleate()
- res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20)
- expRes := &types.MsgConvertERC20Response{}
- suite.Commit()
- balance = suite.BalanceOf(contractAddr, suite.address)
- cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom)
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
- suite.Require().Equal(expRes, res)
- suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn+tc.reconvert).Int64())
- suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64())
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
- suite.mintFeeCollector = false
-}
-
-func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() {
- var contractAddr common.Address
- var coinName string
-
- testCases := []struct {
- name string
- mint int64
- transfer int64
- malleate func(common.Address)
- extra func()
- contractType int
- expPass bool
- selfdestructed bool
- }{
- {
- "ok - sufficient funds",
- 100,
- 10,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- true,
- false,
- },
- {
- "ok - equal funds",
- 10,
- 10,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- true,
- false,
- },
- {
- "ok - equal funds",
- 10,
- 10,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- true,
- false,
- },
- {
- "ok - suicided contract",
- 10,
- 10,
- func(erc20 common.Address) {
- stateDb := suite.StateDB()
- ok := stateDb.Suicide(erc20)
- suite.Require().True(ok)
- suite.Require().NoError(stateDb.Commit())
- },
- func() {},
- contractMinterBurner,
- true,
- true,
- },
- {
- "fail - insufficient funds - callEVM",
- 0,
- 10,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - minting disabled",
- 100,
- 10,
- func(common.Address) {
- params := types.DefaultParams()
- params.EnableErc20 = false
- suite.app.Erc20Keeper.SetParams(suite.ctx, params)
- },
- func() {},
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - direct balance manipulation contract",
- 100,
- 10,
- func(common.Address) {},
- func() {},
- contractDirectBalanceManipulation,
- false,
- false,
- },
- {
- "fail - delayed malicious contract",
- 10,
- 10,
- func(common.Address) {},
- func() {},
- contractMaliciousDelayed,
- false,
- false,
- },
- {
- "fail - negative transfer contract",
- 10,
- -10,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - no module address",
- 100,
- 10,
- func(common.Address) {
-
- },
- func() {
- acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes())
- suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc)
- },
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - force evm fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - force get balance fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- balance[31] = uint8(1)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced balance error"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - force transfer unpack fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- false,
- },
-
- {
- "fail - force invalid transfer fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - force mint fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockBankKeeper := &MockBankKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper)
-
- mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to mint"))
- mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow"))
- mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false)
- mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: config.BaseDenom, Amount: sdk.OneInt()})
-
- },
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - force send minted fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockBankKeeper := &MockBankKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper)
-
- mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil)
- mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow"))
- mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false)
- mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: config.BaseDenom, Amount: sdk.OneInt()})
-
- },
- contractMinterBurner,
- false,
- false,
- },
- {
- "fail - force bank balance fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockBankKeeper := &MockBankKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper)
-
- mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil)
- mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
- mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false)
- mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: coinName, Amount: sdk.NewInt(int64(10))})
-
- },
- contractMinterBurner,
- false,
- false,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.mintFeeCollector = true
- suite.SetupTest()
-
- contractAddr = suite.setupRegisterERC20Pair(tc.contractType)
-
- tc.malleate(contractAddr)
- suite.Require().NotNil(contractAddr)
- suite.Commit()
-
- coinName = types.CreateDenom(contractAddr.String())
- sender := sdk.AccAddress(suite.address.Bytes())
- msg := types.NewMsgConvertERC20(
- sdk.NewInt(tc.transfer),
- sender,
- contractAddr,
- suite.address,
- )
-
- suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(tc.mint))
- suite.Commit()
- ctx := sdk.WrapSDKContext(suite.ctx)
-
- tc.extra()
- res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msg)
-
- expRes := &types.MsgConvertERC20Response{}
- suite.Commit()
- balance := suite.BalanceOf(contractAddr, suite.address)
- cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName)
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
-
- acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, contractAddr)
- if tc.selfdestructed {
- suite.Require().Nil(acc, "expected contract to be destroyed")
- } else {
- suite.Require().NotNil(acc)
- }
-
- if tc.selfdestructed || !acc.IsContract() {
- id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String())
- _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id)
- suite.Require().False(found)
- } else {
- suite.Require().Equal(expRes, res)
- suite.Require().Equal(cosmosBalance.Amount, sdk.NewInt(tc.transfer))
- suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.mint-tc.transfer).Int64())
- }
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
- suite.mintFeeCollector = false
-}
-
-func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() {
- var contractAddr common.Address
-
- testCases := []struct {
- name string
- mint int64
- convert int64
- malleate func(common.Address)
- extra func()
- contractType int
- expPass bool
- }{
- {
- "ok - sufficient funds",
- 100,
- 10,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- true,
- },
- {
- "ok - equal funds",
- 100,
- 100,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- true,
- },
- {
- "fail - insufficient funds",
- 100,
- 200,
- func(common.Address) {},
- func() {},
- contractMinterBurner,
- false,
- },
- {
- "fail - direct balance manipulation contract",
- 100,
- 10,
- func(common.Address) {},
- func() {},
- contractDirectBalanceManipulation,
- false,
- },
- {
- "fail - malicious delayed contract",
- 100,
- 10,
- func(common.Address) {},
- func() {},
- contractMaliciousDelayed,
- false,
- },
- {
- "fail - deleted module address - force fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes())
- suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc)
- },
- contractMinterBurner,
- false,
- },
- {
- "fail - force evm fail",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- },
- {
- "fail - force invalid transfer",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- },
- {
- "fail - force fail second balance",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- balance[31] = uint8(1)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("fail second balance"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- },
- {
- "fail - force fail transfer",
- 100,
- 10,
- func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- contractMinterBurner,
- false,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.mintFeeCollector = true
- suite.SetupTest()
- contractAddr = suite.setupRegisterERC20Pair(tc.contractType)
- suite.Require().NotNil(contractAddr)
-
- id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String())
- pair, _ := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id)
- coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdk.NewInt(tc.mint)))
- coinName := types.CreateDenom(contractAddr.String())
- sender := sdk.AccAddress(suite.address.Bytes())
-
- // Precondition: Mint Coins to convert on sender account
- suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins)
- suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins)
- cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName)
- suite.Require().Equal(sdk.NewInt(tc.mint), cosmosBalance.Amount)
-
- // Precondition: Mint escrow tokens on module account
- suite.GrantERC20Token(contractAddr, suite.address, types.ModuleAddress, "MINTER_ROLE")
- suite.MintERC20Token(contractAddr, types.ModuleAddress, types.ModuleAddress, big.NewInt(tc.mint))
- tokenBalance := suite.BalanceOf(contractAddr, types.ModuleAddress)
- suite.Require().Equal(big.NewInt(tc.mint), tokenBalance)
-
- tc.malleate(contractAddr)
- suite.Commit()
-
- // Convert Coins back to ERC20s
- receiver := suite.address
- ctx := sdk.WrapSDKContext(suite.ctx)
- msg := types.NewMsgConvertCoin(
- sdk.NewCoin(coinName, sdk.NewInt(tc.convert)),
- receiver,
- sender,
- )
-
- tc.extra()
- res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg)
-
- expRes := &types.MsgConvertCoinResponse{}
- suite.Commit()
- tokenBalance = suite.BalanceOf(contractAddr, suite.address)
- cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName)
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
- suite.Require().Equal(expRes, res)
- suite.Require().Equal(sdk.NewInt(tc.mint-tc.convert), cosmosBalance.Amount)
- suite.Require().Equal(big.NewInt(tc.convert), tokenBalance.(*big.Int))
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
- suite.mintFeeCollector = false
-}
-
-func (suite *KeeperTestSuite) TestWrongPairOwnerERC20NativeCoin() {
- testCases := []struct {
- name string
- mint int64
- burn int64
- reconvert int64
- expPass bool
- }{
- {"ok - sufficient funds", 100, 10, 5, true},
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.mintFeeCollector = true
- suite.SetupTest()
- metadata, pair := suite.setupRegisterCoin()
- suite.Require().NotNil(metadata)
- suite.Require().NotNil(pair)
-
- // Precondition: Convert Coin to ERC20
- coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.mint)))
- sender := sdk.AccAddress(suite.address.Bytes())
- suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins)
- suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins)
- msg := types.NewMsgConvertCoin(
- sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.burn)),
- suite.address,
- sender,
- )
-
- pair.ContractOwner = types.OWNER_UNSPECIFIED
- suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair)
-
- ctx := sdk.WrapSDKContext(suite.ctx)
- _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg)
- suite.Require().Error(err, tc.name)
-
- // Convert ERC20s back to Coins
- ctx = sdk.WrapSDKContext(suite.ctx)
- contractAddr := common.HexToAddress(pair.Erc20Address)
- msgConvertERC20 := types.NewMsgConvertERC20(
- sdk.NewInt(tc.reconvert),
- sender,
- contractAddr,
- suite.address,
- )
-
- _, err = suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20)
- suite.Require().Error(err, tc.name)
- })
- }
-}
-
-func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() {
- testCases := []struct {
- name string
- mint int64
- burn int64
- malleate func(common.Address)
- extra func()
- expPass bool
- selfdestructed bool
- }{
- {
- "ok - sufficient funds",
- 100,
- 10,
- func(common.Address) {},
- func() {},
- true,
- false,
- },
- {
- "ok - equal funds",
- 10,
- 10,
- func(common.Address) {},
- func() {},
- true,
- false,
- },
- {
- "ok - suicided contract",
- 10,
- 10,
- func(erc20 common.Address) {
- stateDb := suite.StateDB()
- ok := stateDb.Suicide(erc20)
- suite.Require().True(ok)
- suite.Require().NoError(stateDb.Commit())
- },
- func() {},
- true,
- true,
- },
- {
- "fail - insufficient funds",
- 0,
- 10,
- func(common.Address) {},
- func() {},
- false,
- false,
- },
- {
- "fail - minting disabled",
- 100,
- 10,
- func(common.Address) {
- params := types.DefaultParams()
- params.EnableErc20 = false
- suite.app.Erc20Keeper.SetParams(suite.ctx, params)
- },
- func() {},
- false,
- false,
- },
- {"fail - deleted module account - force fail", 100, 10, func(common.Address) {},
- func() {
- acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes())
- suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc)
- }, false, false,
- },
- {"fail - force evm fail", 100, 10, func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- }, false, false,
- },
- {"fail - force evm balance error", 100, 10, func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- // first balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- // convert coin
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once()
- // second balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once()
- //Extra call on test
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- }, false, false,
- },
- {"fail - force balance error", 100, 10, func(common.Address) {},
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- }, false, false,
- },
- }
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.mintFeeCollector = true
- suite.SetupTest()
- metadata, pair := suite.setupRegisterIBCVoucher()
- suite.Require().NotNil(metadata)
- erc20 := pair.GetERC20Contract()
- tc.malleate(erc20)
- suite.Commit()
-
- ctx := sdk.WrapSDKContext(suite.ctx)
- coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdk.NewInt(tc.mint)))
- sender := sdk.AccAddress(suite.address.Bytes())
- msg := types.NewMsgConvertCoin(
- sdk.NewCoin(ibcBase, sdk.NewInt(tc.burn)),
- suite.address,
- sender,
- )
-
- suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins)
- suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins)
-
- tc.extra()
- res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg)
- expRes := &types.MsgConvertCoinResponse{}
- suite.Commit()
- balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address)
- cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base)
-
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
-
- acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20)
- if tc.selfdestructed {
- suite.Require().Nil(acc, "expected contract to be destroyed")
- } else {
- suite.Require().NotNil(acc)
- }
-
- if tc.selfdestructed || !acc.IsContract() {
- id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String())
- _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id)
- suite.Require().False(found)
- } else {
- suite.Require().Equal(expRes, res)
- suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64())
- suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64())
- }
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
- suite.mintFeeCollector = false
-}
-
-func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() {
- testCases := []struct {
- name string
- mint int64
- burn int64
- reconvert int64
- malleate func()
- expPass bool
- }{
- {"ok - sufficient funds", 100, 10, 5, func() {}, true},
- {"ok - equal funds", 10, 10, 10, func() {}, true},
- {"fail - insufficient funds", 10, 1, 5, func() {}, false},
- {"fail ", 10, 1, -5, func() {}, false},
- {"fail - deleted module account - force fail", 100, 10, 5,
- func() {
- acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes())
- suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc)
- },
- false,
- },
- {"fail - force evm fail", 100, 10, 5,
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error"))
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- false,
- },
- {"fail - force fail second balance", 100, 10, 5,
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- // first balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- // convert coin
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once()
- // second balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once()
- //Extra call on test
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- false,
- },
- {"fail - force fail second balance", 100, 10, 5,
- func() {
- mockEVMKeeper := &MockEVMKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper)
-
- existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1}
- balance := make([]uint8, 32)
- mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil)
- // first balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- // convert coin
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once()
- // second balance of
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once()
- //Extra call on test
- mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil)
- mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil)
- },
- false,
- },
- {"fail - force fail unescrow", 100, 10, 5,
- func() {
- mockBankKeeper := &MockBankKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper)
-
- mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow"))
- mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false)
- mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdk.OneInt()})
- },
- false,
- },
- {"fail - force fail balance after transfer", 100, 10, 5,
- func() {
- mockBankKeeper := &MockBankKeeper{}
- sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName)
- suite.Require().True(found)
- suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper)
-
- mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
- mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false)
- mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: ibcBase, Amount: sdk.OneInt()})
- },
- false,
- },
- }
-
- for _, tc := range testCases {
- suite.Run(fmt.Sprintf("Case %s", tc.name), func() {
- suite.mintFeeCollector = true
- suite.SetupTest()
- metadata, pair := suite.setupRegisterIBCVoucher()
- suite.Require().NotNil(metadata)
- suite.Require().NotNil(pair)
-
- // Precondition: Convert Coin to ERC20
- coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdk.NewInt(tc.mint)))
- sender := sdk.AccAddress(suite.address.Bytes())
- suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins)
- suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins)
- msg := types.NewMsgConvertCoin(
- sdk.NewCoin(ibcBase, sdk.NewInt(tc.burn)),
- suite.address,
- sender,
- )
-
- ctx := sdk.WrapSDKContext(suite.ctx)
- _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg)
- suite.Require().NoError(err, tc.name)
- suite.Commit()
- balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address)
- cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base)
- suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64())
- suite.Require().Equal(balance, big.NewInt(tc.burn))
-
- // Convert ERC20s back to Coins
- ctx = sdk.WrapSDKContext(suite.ctx)
- contractAddr := common.HexToAddress(pair.Erc20Address)
- msgConvertERC20 := types.NewMsgConvertERC20(
- sdk.NewInt(tc.reconvert),
- sender,
- contractAddr,
- suite.address,
- )
-
- tc.malleate()
- res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20)
- expRes := &types.MsgConvertERC20Response{}
- suite.Commit()
- balance = suite.BalanceOf(contractAddr, suite.address)
- cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom)
- if tc.expPass {
- suite.Require().NoError(err, tc.name)
- suite.Require().Equal(expRes, res)
- suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn+tc.reconvert).Int64())
- suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64())
- } else {
- suite.Require().Error(err, tc.name)
- }
- })
- }
- suite.mintFeeCollector = false
-}
diff --git a/tests/helper.go b/tests/helper.go
index 94ccf73..acac667 100644
--- a/tests/helper.go
+++ b/tests/helper.go
@@ -4,12 +4,13 @@ import (
"context"
"encoding/json"
"fmt"
- "github.com/AstraProtocol/astra/v2/cmd/config"
- feeburntype "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ feeburntype "github.com/AstraProtocol/astra/v3/x/feeburn/types"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/vm"
+ utiltx "github.com/evmos/evmos/v12/testutil/tx"
"github.com/stretchr/testify/mock"
"math"
"math/big"
@@ -38,18 +39,17 @@ import (
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
ethtypes "github.com/ethereum/go-ethereum/core/types"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
- "github.com/evmos/ethermint/encoding"
- evmConfig "github.com/evmos/ethermint/server/config"
- "github.com/evmos/ethermint/tests"
- ethermint "github.com/evmos/ethermint/types"
- "github.com/evmos/ethermint/x/evm/statedb"
- evm "github.com/evmos/ethermint/x/evm/types"
- feemarkettypes "github.com/evmos/ethermint/x/feemarket/types"
-
- "github.com/AstraProtocol/astra/v2/app"
- "github.com/AstraProtocol/astra/v2/contracts"
- "github.com/evmos/evmos/v6/x/erc20/types"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/encoding"
+ evmConfig "github.com/evmos/evmos/v12/server/config"
+ ethermint "github.com/evmos/evmos/v12/types"
+ "github.com/evmos/evmos/v12/x/evm/statedb"
+ evm "github.com/evmos/evmos/v12/x/evm/types"
+ feemarkettypes "github.com/evmos/evmos/v12/x/feemarket/types"
+
+ "github.com/AstraProtocol/astra/v3/app"
+ "github.com/AstraProtocol/astra/v3/contracts"
+ "github.com/evmos/evmos/v12/x/erc20/types"
)
type KeeperTestSuite struct {
@@ -120,7 +120,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) {
priv, err := ethsecp256k1.GenerateKey()
require.NoError(t, err)
suite.address = common.BytesToAddress(priv.PubKey().Address().Bytes())
- suite.signer = tests.NewSigner(priv)
+ suite.signer = utiltx.NewSigner(priv)
// consensus key
priv, err = ethsecp256k1.GenerateKey()
@@ -263,17 +263,17 @@ func (suite *KeeperTestSuite) DeployContract(name, symbol string, decimals uint8
nonce := suite.app.EvmKeeper.GetNonce(suite.ctx, suite.address)
- erc20DeployTx := evm.NewTxContract(
- chainID,
- nonce,
- nil, // amount
- res.Gas, // gasLimit
- nil, // gasPrice
- suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
- big.NewInt(1),
- data, // input
- ðtypes.AccessList{}, // accesses
- )
+ erc20DeployTx := evm.NewTx(&evm.EvmTxArgs{
+ Nonce: nonce,
+ GasLimit: res.Gas,
+ Input: data,
+ GasFeeCap: suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
+ GasPrice: nil,
+ ChainID: chainID,
+ Amount: nil,
+ GasTipCap: big.NewInt(1),
+ Accesses: ðtypes.AccessList{},
+ })
erc20DeployTx.From = suite.address.Hex()
err = erc20DeployTx.Sign(ethtypes.LatestSignerForChainID(chainID), suite.signer)
@@ -312,17 +312,17 @@ func (suite *KeeperTestSuite) DeployContractMaliciousDelayed(name string, symbol
nonce := suite.app.EvmKeeper.GetNonce(suite.ctx, suite.address)
- erc20DeployTx := evm.NewTxContract(
- chainID,
- nonce,
- nil, // amount
- res.Gas, // gasLimit
- nil, // gasPrice
- suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
- big.NewInt(1),
- data, // input
- ðtypes.AccessList{}, // accesses
- )
+ erc20DeployTx := evm.NewTx(&evm.EvmTxArgs{
+ Nonce: nonce,
+ GasLimit: res.Gas,
+ Input: data,
+ GasFeeCap: suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
+ GasPrice: nil,
+ ChainID: chainID,
+ Amount: nil,
+ GasTipCap: big.NewInt(1),
+ Accesses: ðtypes.AccessList{},
+ })
erc20DeployTx.From = suite.address.Hex()
err = erc20DeployTx.Sign(ethtypes.LatestSignerForChainID(chainID), suite.signer)
@@ -355,17 +355,17 @@ func (suite *KeeperTestSuite) DeployContractDirectBalanceManipulation(name strin
nonce := suite.app.EvmKeeper.GetNonce(suite.ctx, suite.address)
- erc20DeployTx := evm.NewTxContract(
- chainID,
- nonce,
- nil, // amount
- res.Gas, // gasLimit
- nil, // gasPrice
- suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
- big.NewInt(1),
- data, // input
- ðtypes.AccessList{}, // accesses
- )
+ erc20DeployTx := evm.NewTx(&evm.EvmTxArgs{
+ Nonce: nonce,
+ GasLimit: res.Gas,
+ Input: data,
+ GasFeeCap: suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
+ GasPrice: nil,
+ ChainID: chainID,
+ Amount: nil,
+ GasTipCap: big.NewInt(1),
+ Accesses: ðtypes.AccessList{},
+ })
erc20DeployTx.From = suite.address.Hex()
err = erc20DeployTx.Sign(ethtypes.LatestSignerForChainID(chainID), suite.signer)
@@ -434,16 +434,18 @@ func (suite *KeeperTestSuite) sendTx(contractAddr, from common.Address, transfer
suite.MintFeeCollector(sdk.NewCoins(sdk.NewCoin(config.BaseDenom, sdk.NewInt(suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx).Int64()*int64(res.Gas)))))
ercTransferTx := evm.NewTx(
- chainID,
- nonce,
- &contractAddr,
- nil,
- res.Gas,
- nil,
- suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
- big.NewInt(1),
- transferData,
- ðtypes.AccessList{}, // accesses
+ &evm.EvmTxArgs{
+ Nonce: nonce,
+ GasLimit: res.Gas,
+ Input: transferData,
+ GasFeeCap: suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
+ GasPrice: nil,
+ ChainID: chainID,
+ Amount: nil,
+ GasTipCap: big.NewInt(1),
+ To: nil,
+ Accesses: ðtypes.AccessList{},
+ },
)
ercTransferTx.From = suite.address.Hex()
diff --git a/tests/ibc_test.go b/tests/ibc_test.go
index ec13777..90e9a67 100644
--- a/tests/ibc_test.go
+++ b/tests/ibc_test.go
@@ -5,15 +5,15 @@ import (
"github.com/stretchr/testify/suite"
- "github.com/AstraProtocol/astra/v2/app"
- ibctesting "github.com/AstraProtocol/astra/v2/ibc/testing"
+ "github.com/AstraProtocol/astra/v3/app"
+ ibctesting "github.com/AstraProtocol/astra/v3/ibc/testing"
sdk "github.com/cosmos/cosmos-sdk/types"
- transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"
- clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types"
- channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"
- ibcgotesting "github.com/cosmos/ibc-go/v3/testing"
+ transfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types"
+ clienttypes "github.com/cosmos/ibc-go/v6/modules/core/02-client/types"
+ channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
+ ibcgotesting "github.com/cosmos/ibc-go/v6/testing"
- erc20types "github.com/evmos/evmos/v6/x/erc20/types"
+ erc20types "github.com/evmos/evmos/v12/x/erc20/types"
)
type IBCTestingSuite struct {
@@ -107,13 +107,13 @@ func (suite *IBCTestingSuite) Test2() {
path := suite.pathEVM
- transfer := transfertypes.NewFungibleTokenPacketData("aastra", "100", sender, receiver)
+ transfer := transfertypes.NewFungibleTokenPacketData("aastra", "100", sender, receiver, "")
bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer)
packet := channeltypes.NewPacket(bz, 1, path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID,
path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, timeoutHeight, 0)
// send on endpointA
- err = path.EndpointA.SendPacket(packet)
+ _, err = path.EndpointA.SendPacket(packet.TimeoutHeight, packet.TimeoutTimestamp, packet.Data)
suite.Require().NoError(err)
// receive on endpointB
diff --git a/tests/vesting_test.go b/tests/vesting_test.go
index 7f70cf7..c2cfac8 100644
--- a/tests/vesting_test.go
+++ b/tests/vesting_test.go
@@ -2,26 +2,25 @@ package tests
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/app"
- "github.com/AstraProtocol/astra/v2/app/ante"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/app"
+ "github.com/AstraProtocol/astra/v3/app/ante"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/ethereum/go-ethereum/common"
ethtypes "github.com/ethereum/go-ethereum/core/types"
- "github.com/evmos/ethermint/encoding"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ "github.com/evmos/evmos/v12/encoding"
+ utiltx "github.com/evmos/evmos/v12/testutil/tx"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
"github.com/stretchr/testify/suite"
"math/big"
"testing"
"time"
- "github.com/AstraProtocol/astra/v2/testutil"
- "github.com/evmos/ethermint/tests"
-
+ "github.com/AstraProtocol/astra/v3/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- "github.com/evmos/evmos/v6/x/vesting/types"
+ "github.com/evmos/evmos/v12/x/vesting/types"
)
func TestVestingTestingSuite(t *testing.T) {
@@ -71,9 +70,9 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccountsTokens() {
vested sdk.Coins
unlocked sdk.Coins
)
- grantee := sdk.AccAddress(tests.GenerateAddress().Bytes())
- funder := sdk.AccAddress(tests.GenerateAddress().Bytes())
- dest := sdk.AccAddress(tests.GenerateAddress().Bytes())
+ grantee := sdk.AccAddress(utiltx.GenerateAddress().Bytes())
+ funder := sdk.AccAddress(utiltx.GenerateAddress().Bytes())
+ dest := sdk.AccAddress(utiltx.GenerateAddress().Bytes())
testCases := []struct {
name string
@@ -162,7 +161,7 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccountsTokens() {
vesting = clawbackAccount.GetVestingCoins(suite.ctx.BlockTime())
expVestedAmount := amt.Mul(sdk.NewInt(lockup))
expVested := sdk.NewCoins(sdk.NewCoin(stakeDenom, expVestedAmount))
- unvested := vestingAmtTotal.Sub(vested)
+ unvested := vestingAmtTotal.Sub(vested...)
suite.Require().Equal(free, vested)
suite.Require().Equal(expVested, vested)
suite.Require().True(expVestedAmount.GT(sdk.NewInt(0)))
@@ -201,7 +200,7 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccountsTokens() {
free := clawbackAccount.GetVestedCoins(suite.ctx.BlockTime())
vesting = clawbackAccount.GetVestingCoins(suite.ctx.BlockTime())
expVested := sdk.NewCoins(sdk.NewCoin(stakeDenom, amt.Mul(sdk.NewInt(periodsTotal))))
- unvested := vestingAmtTotal.Sub(vested)
+ unvested := vestingAmtTotal.Sub(vested...)
suite.Require().Equal(free, vested)
suite.Require().Equal(expVested, vested)
suite.Require().Equal(expVested, vestingAmtTotal)
@@ -247,7 +246,7 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccountsTokens() {
suite.Require().Equal(balanceGrantee, sdk.NewInt64Coin(stakeDenom, 0))
suite.Require().Equal(balanceDest, sdk.NewInt64Coin(stakeDenom, 0))
- msg := types.NewMsgCreateClawbackVestingAccount(funder, grantee, vestingStart, lockupPeriods, vestingPeriods)
+ msg := types.NewMsgCreateClawbackVestingAccount(funder, grantee, vestingStart, lockupPeriods, vestingPeriods, false)
_, err := suite.app.VestingKeeper.CreateClawbackVestingAccount(ctx, msg)
suite.Require().NoError(err)
@@ -331,7 +330,7 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccounts() {
err = suite.app.BankKeeper.SendCoins(
suite.ctx,
addr,
- tests.GenerateAddress().Bytes(),
+ utiltx.GenerateAddress().Bytes(),
unvested,
)
suite.Require().Error(err, "cannot transfer tokens")
@@ -359,7 +358,7 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccounts() {
err = suite.app.BankKeeper.SendCoins(
suite.ctx,
addr,
- tests.GenerateAddress().Bytes(),
+ utiltx.GenerateAddress().Bytes(),
vested,
)
@@ -393,7 +392,7 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccounts() {
err = suite.app.BankKeeper.SendCoins(
suite.ctx,
addr,
- tests.GenerateAddress().Bytes(),
+ utiltx.GenerateAddress().Bytes(),
vested,
)
suite.Require().NoError(err, "can transfer vested tokens")
@@ -401,7 +400,7 @@ func (suite *KeeperTestSuite) TestCrawbackVestingAccounts() {
err = suite.app.BankKeeper.SendCoins(
suite.ctx,
addr,
- tests.GenerateAddress().Bytes(),
+ utiltx.GenerateAddress().Bytes(),
unvested,
)
suite.Require().Error(err, "cannot transfer unvested tokens")
@@ -473,8 +472,18 @@ func (suite *KeeperTestSuite) performEthTx(clawbackAccount *types.ClawbackVestin
from := common.BytesToAddress(addr.Bytes())
nonce := suite.app.EvmKeeper.GetNonce(suite.ctx, from)
- msgEthereumTx := evmtypes.NewTx(chainID, nonce, &from, nil, 100000, nil,
- suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx), big.NewInt(1), nil, ðtypes.AccessList{})
+ msgEthereumTx := evmtypes.NewTx(&evmtypes.EvmTxArgs{
+ Nonce: nonce,
+ GasLimit: 100000,
+ Input: nil,
+ GasFeeCap: suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx),
+ GasPrice: nil,
+ ChainID: chainID,
+ Amount: nil,
+ GasTipCap: big.NewInt(1),
+ To: &from,
+ Accesses: ðtypes.AccessList{},
+ })
msgEthereumTx.From = from.String()
encodingConfig := encoding.MakeConfig(app.ModuleBasics)
diff --git a/testutil/network/network.go b/testutil/network/network.go
index 7ec068d..66b32a3 100644
--- a/testutil/network/network.go
+++ b/testutil/network/network.go
@@ -6,7 +6,9 @@ import (
"encoding/json"
"errors"
"fmt"
- "github.com/AstraProtocol/astra/v2/app"
+ "github.com/AstraProtocol/astra/v3/app"
+ cmdcfg "github.com/AstraProtocol/astra/v3/cmd/config"
+ pruningtypes "github.com/cosmos/cosmos-sdk/pruning/types"
"net/http"
"net/url"
"os"
@@ -41,19 +43,18 @@ import (
servertypes "github.com/cosmos/cosmos-sdk/server/types"
"github.com/cosmos/cosmos-sdk/simapp"
"github.com/cosmos/cosmos-sdk/simapp/params"
- storetypes "github.com/cosmos/cosmos-sdk/store/types"
"github.com/cosmos/cosmos-sdk/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/cosmos/cosmos-sdk/x/genutil"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- "github.com/evmos/ethermint/crypto/hd"
+ "github.com/evmos/evmos/v12/crypto/hd"
- "github.com/evmos/ethermint/encoding"
- "github.com/evmos/ethermint/server/config"
- ethermint "github.com/evmos/ethermint/types"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ "github.com/evmos/evmos/v12/encoding"
+ "github.com/evmos/evmos/v12/server/config"
+ ethermint "github.com/evmos/evmos/v12/types"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
)
// package-wide network lock to only allow one test network at a time
@@ -99,22 +100,22 @@ func DefaultConfig() Config {
encCfg := encoding.MakeConfig(app.ModuleBasics)
return Config{
- Codec: encCfg.Marshaler,
+ Codec: encCfg.Codec,
TxConfig: encCfg.TxConfig,
LegacyAmino: encCfg.Amino,
InterfaceRegistry: encCfg.InterfaceRegistry,
AccountRetriever: authtypes.AccountRetriever{},
AppConstructor: NewAppConstructor(encCfg),
- GenesisState: app.ModuleBasics.DefaultGenesis(encCfg.Marshaler),
+ GenesisState: app.ModuleBasics.DefaultGenesis(encCfg.Codec),
TimeoutCommit: 2 * time.Second,
ChainID: fmt.Sprintf("astra_%d-1", tmrand.Int63n(9999999999999)+1),
NumValidators: 4,
- BondDenom: ethermint.AttoPhoton,
- MinGasPrices: fmt.Sprintf("0.000006%s", ethermint.AttoPhoton),
+ BondDenom: cmdcfg.BaseDenom,
+ MinGasPrices: fmt.Sprintf("0.000006%s", cmdcfg.BaseDenom),
AccountTokens: sdk.TokensFromConsensusPower(1000, ethermint.PowerReduction),
StakingTokens: sdk.TokensFromConsensusPower(500, ethermint.PowerReduction),
BondedTokens: sdk.TokensFromConsensusPower(100, ethermint.PowerReduction),
- PruningStrategy: storetypes.PruningOptionNothing,
+ PruningStrategy: pruningtypes.PruningOptionNothing,
CleanupDir: true,
SigningAlgo: string(hd.EthSecp256k1Type),
KeyringOptions: []keyring.Option{hd.EthSecp256k1Option()},
@@ -129,7 +130,7 @@ func NewAppConstructor(encodingCfg params.EncodingConfig) AppConstructor {
val.Ctx.Logger, dbm.NewMemDB(), nil, true, make(map[int64]bool), val.Ctx.Config.RootDir, 0,
encodingCfg,
simapp.EmptyAppOptions{},
- baseapp.SetPruning(storetypes.NewPruningOptionsFromString(val.AppConfig.Pruning)),
+ baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.AppConfig.Pruning)),
baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices),
)
}
@@ -369,7 +370,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) {
nodeIDs[i] = nodeID
valPubKeys[i] = pubKey
- kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, clientDir, buf, cfg.KeyringOptions...)
+ kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, clientDir, buf, cfg.Codec, cfg.KeyringOptions...)
if err != nil {
return nil, err
}
@@ -468,7 +469,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) {
return nil, err
}
- customAppTemplate, _ := config.AppConfig(ethermint.AttoPhoton)
+ customAppTemplate, _ := config.AppConfig(cmdcfg.BaseDenom)
srvconfig.SetConfigTemplate(customAppTemplate)
srvconfig.WriteConfigFile(filepath.Join(nodeDir, "config/app.toml"), appCfg)
diff --git a/testutil/network/network_test.go b/testutil/network/network_test.go
index 0d177a1..44aa70e 100644
--- a/testutil/network/network_test.go
+++ b/testutil/network/network_test.go
@@ -11,10 +11,10 @@ import (
"github.com/stretchr/testify/suite"
"github.com/ethereum/go-ethereum/ethclient"
- "github.com/evmos/ethermint/server/config"
- "github.com/evmos/ethermint/testutil/network"
+ "github.com/evmos/evmos/v12/server/config"
+ "github.com/evmos/evmos/v12/testutil/network"
- astranetwork "github.com/AstraProtocol/astra/v2/testutil/network"
+ astranetwork "github.com/AstraProtocol/astra/v3/testutil/network"
)
type IntegrationTestSuite struct {
diff --git a/testutil/network/util.go b/testutil/network/util.go
index 7d4c460..c340c4a 100644
--- a/testutil/network/util.go
+++ b/testutil/network/util.go
@@ -3,6 +3,8 @@ package network
import (
"encoding/json"
"fmt"
+ "github.com/cosmos/cosmos-sdk/server/config"
+ govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
"path/filepath"
"time"
@@ -27,8 +29,8 @@ import (
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- "github.com/evmos/ethermint/server"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ "github.com/evmos/evmos/v12/server"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
)
func startInProcess(cfg Config, val *Validator) error {
@@ -106,7 +108,12 @@ func startInProcess(cfg Config, val *Validator) error {
}
if val.AppConfig.GRPC.Enable {
- grpcSrv, err := servergrpc.StartGRPCServer(val.ClientCtx, app, val.AppConfig.GRPC.Address)
+ grpcSrv, err := servergrpc.StartGRPCServer(val.ClientCtx, app, config.GRPCConfig{
+ Enable: true,
+ Address: val.AppConfig.GRPC.Address,
+ MaxRecvMsgSize: config.DefaultGRPCMaxRecvMsgSize,
+ MaxSendMsgSize: config.DefaultGRPCMaxSendMsgSize,
+ })
if err != nil {
return err
}
@@ -204,7 +211,7 @@ func initGenFiles(cfg Config, genAccounts []authtypes.GenesisAccount, genBalance
stakingGenState.Params.BondDenom = cfg.BondDenom
cfg.GenesisState[stakingtypes.ModuleName] = cfg.Codec.MustMarshalJSON(&stakingGenState)
- var govGenState govtypes.GenesisState
+ var govGenState govv1.GenesisState
cfg.Codec.MustUnmarshalJSON(cfg.GenesisState[govtypes.ModuleName], &govGenState)
govGenState.DepositParams.MinDeposit[0].Denom = cfg.BondDenom
diff --git a/testutil/signer.go b/testutil/signer.go
index 71a532f..df92773 100644
--- a/testutil/signer.go
+++ b/testutil/signer.go
@@ -3,7 +3,7 @@ package testutil
import (
sdk "github.com/cosmos/cosmos-sdk/types"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
- "github.com/evmos/evmos/v6/x/erc20/types"
+ "github.com/evmos/evmos/v12/x/erc20/types"
)
// FundAccount is a utility function that funds an account by minting and
diff --git a/types/utils.go b/types/utils.go
index 535a42c..ec91c0d 100644
--- a/types/utils.go
+++ b/types/utils.go
@@ -3,7 +3,7 @@ package types
import (
"strings"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
diff --git a/types/utils_test.go b/types/utils_test.go
index e31fa65..33a86bf 100644
--- a/types/utils_test.go
+++ b/types/utils_test.go
@@ -11,7 +11,7 @@ import (
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
)
func init() {
diff --git a/x/feeburn/ante/ante.go b/x/feeburn/ante/ante.go
index f6a95ea..a49b7ce 100644
--- a/x/feeburn/ante/ante.go
+++ b/x/feeburn/ante/ante.go
@@ -1,7 +1,7 @@
package ante
import (
- feeburntype "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ feeburntype "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
diff --git a/x/feeburn/ante/ante_test.go b/x/feeburn/ante/ante_test.go
index 48d3a92..18442d0 100644
--- a/x/feeburn/ante/ante_test.go
+++ b/x/feeburn/ante/ante_test.go
@@ -1,11 +1,11 @@
package ante_test
import (
- "github.com/AstraProtocol/astra/v2/cmd/config"
- "github.com/AstraProtocol/astra/v2/x/feeburn/ante"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/ante"
sdk "github.com/cosmos/cosmos-sdk/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
"math"
)
diff --git a/x/feeburn/ante/utils_test.go b/x/feeburn/ante/utils_test.go
index 3f1636c..7904a3a 100644
--- a/x/feeburn/ante/utils_test.go
+++ b/x/feeburn/ante/utils_test.go
@@ -1,15 +1,15 @@
package ante_test
import (
- "github.com/AstraProtocol/astra/v2/app"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/app"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
"github.com/cosmos/cosmos-sdk/client/tx"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
- "github.com/evmos/ethermint/encoding"
- feemarkettypes "github.com/evmos/ethermint/x/feemarket/types"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/encoding"
+ feemarkettypes "github.com/evmos/evmos/v12/x/feemarket/types"
"math"
"testing"
diff --git a/x/feeburn/client/cli/query.go b/x/feeburn/client/cli/query.go
index 8fa4986..d94ba76 100644
--- a/x/feeburn/client/cli/query.go
+++ b/x/feeburn/client/cli/query.go
@@ -12,7 +12,7 @@ import (
// "github.com/cosmos/cosmos-sdk/client/flags"
// sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
)
// GetQueryCmd returns the cli query commands for this module
diff --git a/x/feeburn/client/cli/query_params.go b/x/feeburn/client/cli/query_params.go
index 94fb048..6e598f0 100644
--- a/x/feeburn/client/cli/query_params.go
+++ b/x/feeburn/client/cli/query_params.go
@@ -3,7 +3,7 @@ package cli
import (
"context"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/spf13/cobra"
diff --git a/x/feeburn/client/rest/query.go b/x/feeburn/client/rest/query.go
deleted file mode 100644
index de5842f..0000000
--- a/x/feeburn/client/rest/query.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package rest
-
-import (
- "fmt"
- "net/http"
-
- "github.com/gorilla/mux"
-
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
- "github.com/cosmos/cosmos-sdk/client"
- "github.com/cosmos/cosmos-sdk/types/rest"
-)
-
-func registerQueryRoutes(clientCtx client.Context, r *mux.Router) {
- r.HandleFunc(
- "/feeburn/parameters",
- queryParamsHandlerFn(clientCtx),
- ).Methods("GET")
-
- r.HandleFunc(
- "/feeburn/total-fee-burn",
- queryTotalFeeBurnHandlerFn(clientCtx),
- ).Methods("GET")
-
-}
-
-func queryParamsHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryParameters)
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
-
-func queryTotalFeeBurnHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryTotalFeeBurn)
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
diff --git a/x/feeburn/client/rest/rest.go b/x/feeburn/client/rest/rest.go
deleted file mode 100644
index 7fa1670..0000000
--- a/x/feeburn/client/rest/rest.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package rest
-
-import (
- "github.com/gorilla/mux"
-
- "github.com/cosmos/cosmos-sdk/client"
- "github.com/cosmos/cosmos-sdk/client/rest"
-)
-
-// RegisterRoutes registers feeburn module REST handlers on the provided router.
-func RegisterRoutes(clientCtx client.Context, rtr *mux.Router) {
- r := rest.WithHTTPDeprecationHeaders(rtr)
- registerQueryRoutes(clientCtx, r)
-}
diff --git a/x/feeburn/genesis.go b/x/feeburn/genesis.go
index f36b099..af1970c 100644
--- a/x/feeburn/genesis.go
+++ b/x/feeburn/genesis.go
@@ -1,8 +1,8 @@
package feeburn
import (
- "github.com/AstraProtocol/astra/v2/x/feeburn/keeper"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/keeper"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/feeburn/genesis_test.go b/x/feeburn/genesis_test.go
index 5df9755..4ffb721 100644
--- a/x/feeburn/genesis_test.go
+++ b/x/feeburn/genesis_test.go
@@ -2,9 +2,11 @@ package feeburn_test
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/app"
- "github.com/AstraProtocol/astra/v2/x/feeburn"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/app"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/AstraProtocol/astra/v3/x/feeburn"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
+ utiltx "github.com/evmos/evmos/v12/testutil/tx"
"testing"
"time"
@@ -16,8 +18,7 @@ import (
tmversion "github.com/tendermint/tendermint/proto/tendermint/version"
"github.com/tendermint/tendermint/version"
- "github.com/evmos/ethermint/tests"
- feemarkettypes "github.com/evmos/ethermint/x/feemarket/types"
+ feemarkettypes "github.com/evmos/evmos/v12/x/feemarket/types"
)
type GenesisTestSuite struct {
@@ -30,8 +31,10 @@ type GenesisTestSuite struct {
}
func (suite *GenesisTestSuite) SetupTest() {
+ config.SetBech32Prefixes(sdk.GetConfig())
+ config.SetBip44CoinType(sdk.GetConfig())
// consensus key
- consAddress := sdk.ConsAddress(tests.GenerateAddress().Bytes())
+ consAddress := sdk.ConsAddress(utiltx.GenerateAddress().Bytes())
suite.app = app.Setup(false, feemarkettypes.DefaultGenesisState())
suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{
diff --git a/x/feeburn/keeper/evm_hooks.go b/x/feeburn/keeper/evm_hooks.go
index 113498e..e847bee 100644
--- a/x/feeburn/keeper/evm_hooks.go
+++ b/x/feeburn/keeper/evm_hooks.go
@@ -1,12 +1,12 @@
package keeper
import (
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/ethereum/go-ethereum/core"
ethtypes "github.com/ethereum/go-ethereum/core/types"
- evmtypes "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ evmtypes "github.com/AstraProtocol/astra/v3/x/feeburn/types"
)
var _ evmtypes.EvmHooks = Hooks{}
diff --git a/x/feeburn/keeper/fee_burn.go b/x/feeburn/keeper/fee_burn.go
index ad99c3e..f407ee6 100644
--- a/x/feeburn/keeper/fee_burn.go
+++ b/x/feeburn/keeper/fee_burn.go
@@ -1,8 +1,8 @@
package keeper
import (
- "github.com/AstraProtocol/astra/v2/cmd/config"
- feeburntype "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ feeburntype "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
@@ -26,7 +26,7 @@ func (k Keeper) BurnFee(ctx sdk.Context, bankKeeper feeburntype.BankKeeper,
burnAmount := params.FeeBurn.MulInt(c.Amount).RoundInt()
if burnAmount.IsPositive() && strings.Compare(c.Denom, config.BaseDenom) == 0 {
feeBurn = feeBurn.Add(sdk.NewCoin(c.Denom, burnAmount))
- totalBurnAmount = totalBurnAmount.Add(burnAmount.ToDec())
+ totalBurnAmount = totalBurnAmount.Add(sdk.NewDecFromInt(burnAmount))
}
}
err := bankKeeper.SendCoinsFromModuleToModule(ctx, authtypes.FeeCollectorName, feeburntype.ModuleName, feeBurn)
diff --git a/x/feeburn/keeper/fee_burn_test.go b/x/feeburn/keeper/fee_burn_test.go
index 6302e74..b09292b 100644
--- a/x/feeburn/keeper/fee_burn_test.go
+++ b/x/feeburn/keeper/fee_burn_test.go
@@ -1,8 +1,8 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/cmd/config"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
@@ -55,7 +55,7 @@ func (suite *KeeperTestSuite) TestBurnSuccess() {
supplyAfter := suite.app.BankKeeper.GetSupply(suite.ctx, config.BaseDenom)
totalFeeBurn := params.FeeBurn.MulInt(sdk.NewInt(int64(i))).RoundInt()
suite.Require().Equal(supplyBefore.Amount.Sub(totalFeeBurn), supplyAfter.Amount)
- suite.Require().Equal(true, totalFeeBurn.ToDec().Equal(totalFeeBurnAfter.Sub(totalFeeBurnBefore)))
+ suite.Require().Equal(true, sdk.NewDecFromInt(totalFeeBurn).Equal(totalFeeBurnAfter.Sub(totalFeeBurnBefore)))
}
}
}
@@ -84,7 +84,7 @@ func (suite *KeeperTestSuite) TestBurnWhenFeeNegative() {
// when fee is negative then fee burn is zero
totalFeeBurn := params.FeeBurn.MulInt(sdk.NewInt(int64(0))).RoundInt()
suite.Require().Equal(supplyBefore.Amount.Sub(totalFeeBurn), supplyAfter.Amount)
- suite.Require().Equal(true, totalFeeBurn.ToDec().Equal(totalFeeBurnAfter.Sub(totalFeeBurnBefore)))
+ suite.Require().Equal(true, sdk.NewDecFromInt(totalFeeBurn).Equal(totalFeeBurnAfter.Sub(totalFeeBurnBefore)))
}
}
}
@@ -117,7 +117,7 @@ func (suite *KeeperTestSuite) TestBurnWhenManyFeeDenom() {
totalFeeBurn = params.FeeBurn.MulInt(sdk.NewInt(int64(0))).RoundInt()
}
suite.Require().Equal(supplyBefore.Amount.Sub(totalFeeBurn), supplyAfter.Amount)
- suite.Require().Equal(true, totalFeeBurn.ToDec().Equal(totalFeeBurnAfter.Sub(totalFeeBurnBefore)))
+ suite.Require().Equal(true, sdk.NewDecFromInt(totalFeeBurn).Equal(totalFeeBurnAfter.Sub(totalFeeBurnBefore)))
}
}
}
diff --git a/x/feeburn/keeper/grpc_query.go b/x/feeburn/keeper/grpc_query.go
index 6327132..453dcba 100644
--- a/x/feeburn/keeper/grpc_query.go
+++ b/x/feeburn/keeper/grpc_query.go
@@ -2,8 +2,8 @@ package keeper
import (
"context"
- "github.com/AstraProtocol/astra/v2/cmd/config"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/feeburn/keeper/grpc_query_params.go b/x/feeburn/keeper/grpc_query_params.go
index 9714f0c..c548aa3 100644
--- a/x/feeburn/keeper/grpc_query_params.go
+++ b/x/feeburn/keeper/grpc_query_params.go
@@ -3,7 +3,7 @@ package keeper
import (
"context"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
diff --git a/x/feeburn/keeper/grpc_query_params_test.go b/x/feeburn/keeper/grpc_query_params_test.go
index 35d0c47..286008b 100644
--- a/x/feeburn/keeper/grpc_query_params_test.go
+++ b/x/feeburn/keeper/grpc_query_params_test.go
@@ -1,7 +1,7 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/feeburn/keeper/grpc_query_test.go b/x/feeburn/keeper/grpc_query_test.go
index 30f7553..2d32982 100644
--- a/x/feeburn/keeper/grpc_query_test.go
+++ b/x/feeburn/keeper/grpc_query_test.go
@@ -1,7 +1,7 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/feeburn/keeper/integration_test.go b/x/feeburn/keeper/integration_test.go
index 38689c2..e298213 100644
--- a/x/feeburn/keeper/integration_test.go
+++ b/x/feeburn/keeper/integration_test.go
@@ -2,11 +2,12 @@ package keeper_test
import (
"fmt"
+ utiltx "github.com/evmos/evmos/v12/testutil/tx"
"math"
"math/big"
- "github.com/AstraProtocol/astra/v2/app"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/app"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
"github.com/cosmos/cosmos-sdk/client/tx"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
@@ -15,10 +16,9 @@ import (
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/ethereum/go-ethereum/common"
ethtypes "github.com/ethereum/go-ethereum/core/types"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
- "github.com/evmos/ethermint/encoding"
- "github.com/evmos/ethermint/tests"
- evmtypes "github.com/evmos/ethermint/x/evm/types"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
+ "github.com/evmos/evmos/v12/encoding"
+ evmtypes "github.com/evmos/evmos/v12/x/evm/types"
abci "github.com/tendermint/tendermint/abci/types"
)
@@ -272,18 +272,25 @@ func sendEth(priv *ethsecp256k1.PrivKey) abci.ResponseDeliverTx {
privNew, _ := ethsecp256k1.GenerateKey()
addrRecv := common.BytesToAddress(privNew.PubKey().Address().Bytes())
- msgEthereumTx := evmtypes.NewTx(s.app.EvmKeeper.ChainID(), nonce, &addrRecv,
- big.NewInt(100),
- 100000,
- big.NewInt(10000),
- s.app.FeeMarketKeeper.GetBaseFee(s.ctx), big.NewInt(1), nil, ðtypes.AccessList{})
+ msgEthereumTx := evmtypes.NewTx(&evmtypes.EvmTxArgs{
+ Nonce: nonce,
+ GasLimit: 100000,
+ Input: nil,
+ GasFeeCap: s.app.FeeMarketKeeper.GetBaseFee(s.ctx),
+ GasPrice: big.NewInt(10000),
+ ChainID: s.app.EvmKeeper.ChainID(),
+ Amount: big.NewInt(100),
+ GasTipCap: big.NewInt(1),
+ To: &addrRecv,
+ Accesses: ðtypes.AccessList{},
+ })
msgEthereumTx.From = from.String()
return performEthTx(priv, msgEthereumTx)
}
func performEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) abci.ResponseDeliverTx {
// Sign transaction
- err := msgEthereumTx.Sign(s.ethSigner, tests.NewSigner(priv))
+ err := msgEthereumTx.Sign(s.ethSigner, utiltx.NewSigner(priv))
s.Require().NoError(err)
// Assemble transaction from fields
diff --git a/x/feeburn/keeper/keeper.go b/x/feeburn/keeper/keeper.go
index e5aef66..7315302 100644
--- a/x/feeburn/keeper/keeper.go
+++ b/x/feeburn/keeper/keeper.go
@@ -6,7 +6,7 @@ import (
"github.com/tendermint/tendermint/libs/log"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
@@ -15,7 +15,7 @@ import (
type (
Keeper struct {
cdc codec.BinaryCodec
- storeKey sdk.StoreKey
+ storeKey storetypes.StoreKey
paramstore paramtypes.Subspace
bankKeeper types.BankKeeper
feeCollectorName string
diff --git a/x/feeburn/keeper/keeper_test.go b/x/feeburn/keeper/keeper_test.go
index 4f358b4..8af9d2c 100644
--- a/x/feeburn/keeper/keeper_test.go
+++ b/x/feeburn/keeper/keeper_test.go
@@ -1,11 +1,12 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/app"
- "github.com/AstraProtocol/astra/v2/cmd/config"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/app"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
+ utiltx "github.com/evmos/evmos/v12/testutil/tx"
"testing"
"time"
@@ -13,16 +14,15 @@ import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
- "github.com/evmos/ethermint/crypto/ethsecp256k1"
- "github.com/evmos/ethermint/tests"
- feemarkettypes "github.com/evmos/ethermint/x/feemarket/types"
+ "github.com/evmos/evmos/v12/crypto/ethsecp256k1"
+ feemarkettypes "github.com/evmos/evmos/v12/x/feemarket/types"
"github.com/cosmos/cosmos-sdk/baseapp"
sdk "github.com/cosmos/cosmos-sdk/types"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
ethtypes "github.com/ethereum/go-ethereum/core/types"
- evm "github.com/evmos/ethermint/x/evm/types"
+ evm "github.com/evmos/evmos/v12/x/evm/types"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
abci "github.com/tendermint/tendermint/abci/types"
@@ -70,7 +70,7 @@ func (suite *KeeperTestSuite) SetupApp() {
priv, err := ethsecp256k1.GenerateKey()
require.NoError(t, err)
suite.address = common.BytesToAddress(priv.PubKey().Address().Bytes())
- suite.signer = tests.NewSigner(priv)
+ suite.signer = utiltx.NewSigner(priv)
suite.denom = config.BaseDenom
// consensus key
diff --git a/x/feeburn/keeper/params.go b/x/feeburn/keeper/params.go
index 962e481..f78c911 100644
--- a/x/feeburn/keeper/params.go
+++ b/x/feeburn/keeper/params.go
@@ -1,7 +1,7 @@
package keeper
import (
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/feeburn/keeper/params_test.go b/x/feeburn/keeper/params_test.go
index 898efdc..173311b 100644
--- a/x/feeburn/keeper/params_test.go
+++ b/x/feeburn/keeper/params_test.go
@@ -1,7 +1,7 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
)
func (suite *KeeperTestSuite) TestParams() {
diff --git a/x/feeburn/keeper/querier.go b/x/feeburn/keeper/querier.go
index 6a9ea0b..801bdda 100644
--- a/x/feeburn/keeper/querier.go
+++ b/x/feeburn/keeper/querier.go
@@ -3,7 +3,7 @@ package keeper
import (
abci "github.com/tendermint/tendermint/abci/types"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
diff --git a/x/feeburn/keeper/querier_test.go b/x/feeburn/keeper/querier_test.go
index 28b3083..d372778 100644
--- a/x/feeburn/keeper/querier_test.go
+++ b/x/feeburn/keeper/querier_test.go
@@ -1,8 +1,8 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/feeburn/keeper"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/keeper"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
abci "github.com/tendermint/tendermint/abci/types"
diff --git a/x/feeburn/keeper/total_fee_burn.go b/x/feeburn/keeper/total_fee_burn.go
index ed2c82d..883cc95 100644
--- a/x/feeburn/keeper/total_fee_burn.go
+++ b/x/feeburn/keeper/total_fee_burn.go
@@ -2,7 +2,7 @@ package keeper
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/feeburn/module.go b/x/feeburn/module.go
index 03f0486..a95c620 100644
--- a/x/feeburn/module.go
+++ b/x/feeburn/module.go
@@ -5,20 +5,18 @@ import (
"encoding/json"
"fmt"
- "github.com/AstraProtocol/astra/v2/x/feeburn/client/rest"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
// this line is used by starport scaffolding # 1
- "github.com/gorilla/mux"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
abci "github.com/tendermint/tendermint/abci/types"
- "github.com/AstraProtocol/astra/v2/x/feeburn/client/cli"
- "github.com/AstraProtocol/astra/v2/x/feeburn/keeper"
- "github.com/AstraProtocol/astra/v2/x/feeburn/types"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/client/cli"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/keeper"
+ "github.com/AstraProtocol/astra/v3/x/feeburn/types"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -68,11 +66,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod
return genState.Validate()
}
-// RegisterRESTRoutes registers the capability module's REST service handlers.
-func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) {
- rest.RegisterRoutes(clientCtx, rtr)
-}
-
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module.
func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil {
diff --git a/x/mint/abci.go b/x/mint/abci.go
index 3eb0ddc..595d5bd 100644
--- a/x/mint/abci.go
+++ b/x/mint/abci.go
@@ -3,8 +3,8 @@ package mint
import (
"time"
- "github.com/AstraProtocol/astra/v2/x/mint/keeper"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/keeper"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/telemetry"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go
index 4d685b9..3534d16 100644
--- a/x/mint/client/cli/query.go
+++ b/x/mint/client/cli/query.go
@@ -5,7 +5,7 @@ import (
"github.com/spf13/cobra"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
)
diff --git a/x/mint/client/rest/query.go b/x/mint/client/rest/query.go
deleted file mode 100644
index f28608e..0000000
--- a/x/mint/client/rest/query.go
+++ /dev/null
@@ -1,182 +0,0 @@
-package rest
-
-import (
- "fmt"
- "net/http"
-
- "github.com/gorilla/mux"
-
- "github.com/AstraProtocol/astra/v2/x/mint/types"
- "github.com/cosmos/cosmos-sdk/client"
- "github.com/cosmos/cosmos-sdk/types/rest"
-)
-
-func registerQueryRoutes(clientCtx client.Context, r *mux.Router) {
- r.HandleFunc(
- "/minting/parameters",
- queryParamsHandlerFn(clientCtx),
- ).Methods("GET")
-
- r.HandleFunc(
- "/minting/inflation",
- queryInflationHandlerFn(clientCtx),
- ).Methods("GET")
-
- r.HandleFunc(
- "/minting/annual-provisions",
- queryAnnualProvisionsHandlerFn(clientCtx),
- ).Methods("GET")
-
- r.HandleFunc(
- "/minting/total-minted-provision",
- queryTotalMintedProvisionHandlerFn(clientCtx),
- ).Methods("GET")
-
- r.HandleFunc(
- "/minting/block-provision",
- queryBlockProvisionHandlerFn(clientCtx),
- ).Methods("GET")
-
- r.HandleFunc(
- "/minting/circulating-supply",
- queryCirculatingSupplyHandlerFn(clientCtx),
- ).Methods("GET")
-
- r.HandleFunc(
- "/minting/bonded-ratio",
- queryBondedRatioHandlerFn(clientCtx),
- ).Methods("GET")
-}
-
-func queryParamsHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryParameters)
-
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
-
-func queryInflationHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryInflation)
-
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
-
-func queryAnnualProvisionsHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryAnnualProvisions)
-
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
-
-func queryTotalMintedProvisionHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryTotalMintedProvision)
-
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
-
-func queryBlockProvisionHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryBlockProvision)
-
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
-
-func queryCirculatingSupplyHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryCirculatingSupply)
-
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
-
-func queryBondedRatioHandlerFn(clientCtx client.Context) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryBondedRatio)
-
- clientCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, clientCtx, r)
- if !ok {
- return
- }
-
- res, height, err := clientCtx.QueryWithData(route, nil)
- if rest.CheckInternalServerError(w, err) {
- return
- }
-
- clientCtx = clientCtx.WithHeight(height)
- rest.PostProcessResponse(w, clientCtx, res)
- }
-}
diff --git a/x/mint/client/rest/rest.go b/x/mint/client/rest/rest.go
deleted file mode 100644
index 2ed28d4..0000000
--- a/x/mint/client/rest/rest.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package rest
-
-import (
- "github.com/gorilla/mux"
-
- "github.com/cosmos/cosmos-sdk/client"
- "github.com/cosmos/cosmos-sdk/client/rest"
-)
-
-// RegisterRoutes registers minting module REST handlers on the provided router.
-func RegisterRoutes(clientCtx client.Context, rtr *mux.Router) {
- r := rest.WithHTTPDeprecationHeaders(rtr)
- registerQueryRoutes(clientCtx, r)
-}
diff --git a/x/mint/genesis.go b/x/mint/genesis.go
index c4cba38..733ae46 100644
--- a/x/mint/genesis.go
+++ b/x/mint/genesis.go
@@ -1,9 +1,9 @@
package mint
import (
+ "github.com/AstraProtocol/astra/v3/x/mint/keeper"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- "github.com/AstraProtocol/astra/v2/x/mint/keeper"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
)
// InitGenesis new mint genesis
diff --git a/x/mint/keeper/grpc_query.go b/x/mint/keeper/grpc_query.go
index 1da0bc5..6c5d882 100644
--- a/x/mint/keeper/grpc_query.go
+++ b/x/mint/keeper/grpc_query.go
@@ -2,9 +2,9 @@ package keeper
import (
"context"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
@@ -67,7 +67,7 @@ func (k Keeper) CirculatingSupply(
ctx := sdk.UnwrapSDKContext(c)
circulatingSupply := k.StakingTokenSupply(ctx)
- coin := sdk.NewDecCoinFromDec(config.BaseDenom, circulatingSupply.ToDec())
+ coin := sdk.NewDecCoinFromDec(config.BaseDenom, sdk.NewDecFromInt(circulatingSupply))
return &types.QueryCirculatingSupplyResponse{CirculatingSupply: coin}, nil
}
diff --git a/x/mint/keeper/grpc_query_test.go b/x/mint/keeper/grpc_query_test.go
index 1c98d08..892ac37 100644
--- a/x/mint/keeper/grpc_query_test.go
+++ b/x/mint/keeper/grpc_query_test.go
@@ -2,7 +2,7 @@ package keeper_test
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
@@ -141,6 +141,6 @@ func (suite *KeeperTestSuite) TestGRPCBondedRatio() {
ctx := sdk.WrapSDKContext(suite.ctx)
res, err := suite.queryClient.GetBondedRatio(ctx, &types.QueryBondedRatioRequest{})
suite.Require().NoError(err)
- suite.Require().Equal(res.BondedRatio, bondedRate)
+ suite.Require().True(res.BondedRatio.Sub(bondedRate).Abs().LTE(sdk.NewDecWithPrec(1, 10)))
}
}
diff --git a/x/mint/keeper/inflation.go b/x/mint/keeper/inflation.go
index 8f02765..df2c0da 100644
--- a/x/mint/keeper/inflation.go
+++ b/x/mint/keeper/inflation.go
@@ -1,10 +1,10 @@
package keeper
import (
- "github.com/AstraProtocol/astra/v2/cmd/config"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- ethermint "github.com/evmos/ethermint/types"
+ ethermint "github.com/evmos/evmos/v12/types"
)
// GetProportions returns the amount of coins given its distribution and the total amount of coins.
@@ -72,9 +72,9 @@ func (k Keeper) AllocateInflation(ctx sdk.Context, mintedCoin sdk.Coin) error {
// update the total minted provision
totalMintedProvision := k.GetTotalMintProvision(ctx)
- mintedAmt := mintedCoin.Amount.ToDec()
+ mintedAmt := sdk.NewDecFromInt(mintedCoin.Amount)
if mintedCoin.Denom == config.DisplayDenom {
- mintedAmt = mintedAmt.Mul(ethermint.PowerReduction.ToDec())
+ mintedAmt = mintedAmt.Mul(sdk.NewDecFromInt(ethermint.PowerReduction))
}
newTotalMintedProvision := totalMintedProvision.Add(mintedAmt)
k.SetTotalMintProvision(ctx, newTotalMintedProvision)
diff --git a/x/mint/keeper/inflation_test.go b/x/mint/keeper/inflation_test.go
index 3fc0b0b..71eef5f 100644
--- a/x/mint/keeper/inflation_test.go
+++ b/x/mint/keeper/inflation_test.go
@@ -2,7 +2,7 @@ package keeper_test
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
diff --git a/x/mint/keeper/integration_test.go b/x/mint/keeper/integration_test.go
index e79e09f..309e707 100644
--- a/x/mint/keeper/integration_test.go
+++ b/x/mint/keeper/integration_test.go
@@ -1,9 +1,8 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
- authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
. "github.com/onsi/ginkgo/v2"
@@ -11,19 +10,30 @@ import (
"github.com/tendermint/tendermint/libs/rand"
)
+var zeroAddr = sdk.MustAccAddressFromBech32("astra1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsfdulp")
+
var _ = Describe("Mint", Ordered, func() {
var params types.Params
var initialSupply sdk.Int
+ var initialBonded sdk.Int
+
BeforeEach(func() {
s.SetupTest()
params = s.app.MintKeeper.GetParams(s.ctx)
- // we set an initial supply to equal 1200000000astra and send it to the foundation address.
+ currentSupply := s.app.BankKeeper.GetSupply(s.ctx, denomMint).Amount
+
+ // we set an initial supply to equal 1200000000astra.
var ok bool
initialSupply, ok = sdk.NewIntFromString("1200000000000000000000000000")
Expect(ok).To(BeTrue())
+ mintAmount := initialSupply.Sub(currentSupply)
- s.mintAndTransfer(params.MintDenom, initialSupply, sdk.AccAddress{}, initialSupply)
+ s.mintAndTransfer(params.MintDenom, mintAmount,
+ zeroAddr, mintAmount)
+ Expect(s.app.BankKeeper.GetSupply(s.ctx, denomMint).Amount).To(Equal(initialSupply))
+
+ initialBonded = s.app.StakingKeeper.TotalBondedTokens(s.ctx)
})
var foundationAddr sdk.AccAddress
@@ -39,17 +49,12 @@ var _ = Describe("Mint", Ordered, func() {
var oldCommunityBalance sdk.Int
Describe("Committing a block", func() {
- var initSupply sdk.Coin
BeforeEach(func() {
params = s.app.MintKeeper.GetParams(s.ctx)
foundationAddr = sdk.MustAccAddressFromBech32(params.FoundationAddress)
- stakingModuleAddr = s.app.AccountKeeper.GetModuleAddress(authtypes.FeeCollectorName)
communityAddr = s.app.AccountKeeper.GetModuleAddress(distrtypes.ModuleName)
mintModuleAddr = s.app.AccountKeeper.GetModuleAddress(types.ModuleName)
- initSupply = s.app.BankKeeper.GetSupply(s.ctx, denomMint)
- Expect(initSupply.Amount).To(Equal(initialSupply))
-
Expect(s.app.BankKeeper.GetBalance(s.ctx, foundationAddr, params.MintDenom).Amount).To(
Equal(sdk.ZeroInt()),
)
@@ -59,8 +64,6 @@ var _ = Describe("Mint", Ordered, func() {
Expect(s.app.BankKeeper.GetBalance(s.ctx, communityAddr, params.MintDenom).Amount).To(
Equal(sdk.ZeroInt()),
)
-
- Expect(s.app.MintKeeper.BondedRatio(s.ctx)).To(Equal(sdk.ZeroDec()))
})
Context("On the first block after genesis", func() {
@@ -72,10 +75,20 @@ var _ = Describe("Mint", Ordered, func() {
oldStakingModuleBalance = s.app.BankKeeper.GetBalance(s.ctx, stakingModuleAddr, params.MintDenom).Amount
oldFoundationBalance = s.app.BankKeeper.GetBalance(s.ctx, foundationAddr, params.MintDenom).Amount
oldCommunityBalance = s.app.BankKeeper.GetBalance(s.ctx, communityAddr, params.MintDenom).Amount
-
+ _ = oldStakingModuleBalance
s.CommitAndBeginBlock()
})
+ It("bondedRatio must be updated", func() {
+ nextInflationRate := oldMinter.NextInflationRate(params, oldBondedRatio)
+ blockProvision := sdk.NewDecFromInt(oldSupply).Mul(nextInflationRate).QuoInt64(
+ int64(params.InflationParameters.BlocksPerYear)).TruncateInt()
+
+ Expect(s.app.MintKeeper.BondedRatio(s.ctx)).To(
+ Equal(sdk.NewDecFromInt(initialBonded).QuoInt(initialSupply.Add(blockProvision))),
+ )
+ })
+
It("total supply should change", func() {
nextInflationRate := oldMinter.NextInflationRate(params, oldBondedRatio)
expSupplyIncrease := sdk.NewDecFromInt(oldSupply).Mul(nextInflationRate).QuoInt64(
@@ -106,17 +119,12 @@ var _ = Describe("Mint", Ordered, func() {
blockProvision := sdk.NewDecFromInt(oldSupply).Mul(nextInflationRate).QuoInt64(
int64(params.InflationParameters.BlocksPerYear)).TruncateInt()
- expStakingIncreased := params.InflationDistribution.StakingRewards.MulInt(blockProvision).TruncateInt()
- Expect(s.app.BankKeeper.GetBalance(s.ctx, stakingModuleAddr, params.MintDenom).Amount).To(
- Equal(oldStakingModuleBalance.Add(expStakingIncreased)),
- )
-
expFoundationIncreased := params.InflationDistribution.Foundation.MulInt(blockProvision).TruncateInt()
Expect(s.app.BankKeeper.GetBalance(s.ctx, foundationAddr, params.MintDenom).Amount).To(
Equal(oldFoundationBalance.Add(expFoundationIncreased)),
)
- expCommunityIncreased := blockProvision.Sub(expStakingIncreased).Sub(expFoundationIncreased)
+ expCommunityIncreased := blockProvision.Sub(expFoundationIncreased)
Expect(s.app.BankKeeper.GetBalance(s.ctx, communityAddr, params.MintDenom).Amount).To(
Equal(oldCommunityBalance.Add(expCommunityIncreased)),
)
@@ -336,7 +344,7 @@ func (suite *KeeperTestSuite) mintAndTransfer(denom string, mintAmount sdk.Int,
func (suite *KeeperTestSuite) bondWithRate(denom string, rate sdk.Dec) {
currentSupply := suite.app.BankKeeper.GetSupply(suite.ctx, denom)
oldBonded := suite.app.StakingKeeper.TotalBondedTokens(suite.ctx)
- mintAmount := rate.MulInt(currentSupply.Amount).Sub(oldBonded.ToDec()).Quo(sdk.OneDec().Sub(rate)).TruncateInt()
+ mintAmount := rate.MulInt(currentSupply.Amount).Sub(sdk.NewDecFromInt(oldBonded)).Quo(sdk.OneDec().Sub(rate)).TruncateInt()
// should stake more
if mintAmount.IsPositive() {
@@ -359,14 +367,27 @@ func (suite *KeeperTestSuite) mintAndBondWithRate(denom string, mintAmount sdk.I
if rate.GT(sdk.OneDec()) {
rate = sdk.OneDec()
}
+ currentBonded := suite.app.StakingKeeper.TotalBondedTokens(suite.ctx)
+ currentSupply := suite.app.BankKeeper.GetSupply(suite.ctx, denom).Amount
+ totalAmount := currentSupply.Add(mintAmount)
+ bondAmount := sdk.NewDecFromInt(totalAmount).Mul(rate).TruncateInt().Sub(currentBonded)
+ Expect(bondAmount.LTE(mintAmount)).To(BeTrue())
+
err := suite.app.MintKeeper.MintCoins(suite.ctx, sdk.NewCoin(denom, mintAmount))
Expect(err).To(BeNil())
+
err = suite.app.BankKeeper.SendCoinsFromModuleToModule(suite.ctx, types.ModuleName, stakingtypes.BondedPoolName,
- sdk.NewCoins(sdk.NewCoin(denom, mintAmount.ToDec().Mul(rate).TruncateInt())))
+ sdk.NewCoins(sdk.NewCoin(denom, bondAmount)))
+ Expect(err).To(BeNil())
+
+ err = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, zeroAddr,
+ sdk.NewCoins(sdk.NewCoin(denom, mintAmount.Sub(bondAmount))))
Expect(err).To(BeNil())
- Expect(suite.app.BankKeeper.GetSupply(suite.ctx, denom).Amount).To(Equal(mintAmount))
- Expect(suite.app.MintKeeper.BondedRatio(suite.ctx)).To(Equal(rate))
+ Expect(suite.app.BankKeeper.GetSupply(suite.ctx, denom).Amount).To(Equal(totalAmount))
+ Expect(suite.app.MintKeeper.BondedRatio(suite.ctx).Sub(rate).Abs().LTE(
+ sdk.NewDecWithPrec(1, 10),
+ )).To(BeTrue())
}
func randRate(minRate sdk.Dec, maxRate sdk.Dec) sdk.Dec {
diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go
index 862273c..9565324 100644
--- a/x/mint/keeper/keeper.go
+++ b/x/mint/keeper/keeper.go
@@ -1,9 +1,10 @@
package keeper
import (
+ storetypes "github.com/cosmos/cosmos-sdk/store/types"
"github.com/tendermint/tendermint/libs/log"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
@@ -12,7 +13,7 @@ import (
// Keeper of the mint store
type Keeper struct {
cdc codec.BinaryCodec
- storeKey sdk.StoreKey
+ storeKey storetypes.StoreKey
paramSpace paramtypes.Subspace
stakingKeeper types.StakingKeeper
accountKeeper types.AccountKeeper
@@ -23,7 +24,7 @@ type Keeper struct {
// NewKeeper creates a new mint Keeper instance
func NewKeeper(
- cdc codec.BinaryCodec, key sdk.StoreKey, paramSpace paramtypes.Subspace,
+ cdc codec.BinaryCodec, key storetypes.StoreKey, paramSpace paramtypes.Subspace,
sk types.StakingKeeper, ak types.AccountKeeper, bk types.BankKeeper, dk types.DistrKeeper,
feeCollectorName string,
) Keeper {
diff --git a/x/mint/keeper/keeper_test.go b/x/mint/keeper/keeper_test.go
index e9555c1..af1d038 100644
--- a/x/mint/keeper/keeper_test.go
+++ b/x/mint/keeper/keeper_test.go
@@ -1,12 +1,12 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/app"
- "github.com/AstraProtocol/astra/v2/cmd/config"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/app"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/baseapp"
sdk "github.com/cosmos/cosmos-sdk/types"
- evm "github.com/evmos/ethermint/x/evm/types"
+ evm "github.com/evmos/evmos/v12/x/evm/types"
"github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
"github.com/stretchr/testify/require"
@@ -35,7 +35,7 @@ type KeeperTestSuite struct {
var s *KeeperTestSuite
const (
- numTests = 1000
+ numTests = 10
)
func TestKeeperTestSuite(t *testing.T) {
@@ -43,7 +43,7 @@ func TestKeeperTestSuite(t *testing.T) {
gomega.RegisterFailHandler(ginkgo.Fail)
suite.Run(t, s)
- //ginkgo.RunSpecs(t, "Keeper Suite")
+ ginkgo.RunSpecs(t, "Keeper Suite")
}
func (suite *KeeperTestSuite) SetupTest() {
diff --git a/x/mint/keeper/minter.go b/x/mint/keeper/minter.go
index 6d1e7e9..dff380f 100644
--- a/x/mint/keeper/minter.go
+++ b/x/mint/keeper/minter.go
@@ -1,7 +1,7 @@
package keeper
import (
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/mint/keeper/minter_test.go b/x/mint/keeper/minter_test.go
index 994471b..338ab2b 100644
--- a/x/mint/keeper/minter_test.go
+++ b/x/mint/keeper/minter_test.go
@@ -1,7 +1,7 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"math/rand"
)
diff --git a/x/mint/keeper/params.go b/x/mint/keeper/params.go
index 482d7df..84ccb9a 100644
--- a/x/mint/keeper/params.go
+++ b/x/mint/keeper/params.go
@@ -1,7 +1,7 @@
package keeper
import (
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/mint/keeper/params_test.go b/x/mint/keeper/params_test.go
index 58bd258..e132dd6 100644
--- a/x/mint/keeper/params_test.go
+++ b/x/mint/keeper/params_test.go
@@ -1,7 +1,7 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/tendermint/tendermint/libs/rand"
)
diff --git a/x/mint/keeper/querier.go b/x/mint/keeper/querier.go
index 10e97e9..88faf76 100644
--- a/x/mint/keeper/querier.go
+++ b/x/mint/keeper/querier.go
@@ -3,7 +3,7 @@ package keeper
import (
abci "github.com/tendermint/tendermint/abci/types"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
diff --git a/x/mint/keeper/querier_test.go b/x/mint/keeper/querier_test.go
index c3e56f0..7eb4eaf 100644
--- a/x/mint/keeper/querier_test.go
+++ b/x/mint/keeper/querier_test.go
@@ -1,8 +1,8 @@
package keeper_test
import (
- "github.com/AstraProtocol/astra/v2/x/mint/keeper"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/keeper"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
abci "github.com/tendermint/tendermint/abci/types"
diff --git a/x/mint/keeper/total_minted_provision.go b/x/mint/keeper/total_minted_provision.go
index da96d74..85220dc 100644
--- a/x/mint/keeper/total_minted_provision.go
+++ b/x/mint/keeper/total_minted_provision.go
@@ -2,7 +2,7 @@ package keeper
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
diff --git a/x/mint/module.go b/x/mint/module.go
index 176d431..9ecbe4c 100644
--- a/x/mint/module.go
+++ b/x/mint/module.go
@@ -6,16 +6,14 @@ import (
"fmt"
"math/rand"
- "github.com/gorilla/mux"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/spf13/cobra"
abci "github.com/tendermint/tendermint/abci/types"
- "github.com/AstraProtocol/astra/v2/x/mint/client/cli"
- "github.com/AstraProtocol/astra/v2/x/mint/client/rest"
- "github.com/AstraProtocol/astra/v2/x/mint/keeper"
- "github.com/AstraProtocol/astra/v2/x/mint/simulation"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/client/cli"
+ "github.com/AstraProtocol/astra/v3/x/mint/keeper"
+ "github.com/AstraProtocol/astra/v3/x/mint/simulation"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
@@ -64,11 +62,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod
return types.ValidateGenesis(data)
}
-// RegisterRESTRoutes registers the REST routes for the mint module.
-func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) {
- rest.RegisterRoutes(clientCtx, rtr)
-}
-
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the mint module.
func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil {
diff --git a/x/mint/module_test.go b/x/mint/module_test.go
index b6fb947..ecf0a15 100644
--- a/x/mint/module_test.go
+++ b/x/mint/module_test.go
@@ -5,24 +5,33 @@ import (
"github.com/stretchr/testify/require"
abcitypes "github.com/tendermint/tendermint/abci/types"
+ tmjson "github.com/tendermint/tendermint/libs/json"
+ "github.com/tendermint/tendermint/libs/log"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
+ dbm "github.com/tendermint/tm-db"
"github.com/cosmos/cosmos-sdk/simapp"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/cosmos/cosmos-sdk/x/mint/types"
)
func TestItCreatesModuleAccountOnInitBlock(t *testing.T) {
- app := simapp.Setup(false)
- ctx := app.BaseApp.NewContext(false, tmproto.Header{})
+ db := dbm.NewMemDB()
+ encCdc := simapp.MakeTestEncodingConfig()
+ app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, simapp.DefaultNodeHome, 5, encCdc, simapp.EmptyAppOptions{})
+
+ genesisState := simapp.GenesisStateWithSingleValidator(t, app)
+ stateBytes, err := tmjson.Marshal(genesisState)
+ require.NoError(t, err)
app.InitChain(
abcitypes.RequestInitChain{
- AppStateBytes: []byte("{}"),
+ AppStateBytes: stateBytes,
ChainId: "test-chain-id",
},
)
+ ctx := app.BaseApp.NewContext(false, tmproto.Header{})
acc := app.AccountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName))
require.NotNil(t, acc)
}
diff --git a/x/mint/simulation/decoder.go b/x/mint/simulation/decoder.go
index 633e7a9..75fff50 100644
--- a/x/mint/simulation/decoder.go
+++ b/x/mint/simulation/decoder.go
@@ -4,7 +4,7 @@ import (
"bytes"
"fmt"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/types/kv"
)
diff --git a/x/mint/simulation/decoder_test.go b/x/mint/simulation/decoder_test.go
index c04f988..b8b7a71 100644
--- a/x/mint/simulation/decoder_test.go
+++ b/x/mint/simulation/decoder_test.go
@@ -6,15 +6,15 @@ import (
"github.com/stretchr/testify/require"
+ "github.com/AstraProtocol/astra/v3/x/mint/simulation"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/simapp"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/kv"
- "github.com/AstraProtocol/astra/v2/x/mint/simulation"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
)
func TestDecodeStore(t *testing.T) {
- cdc := simapp.MakeTestEncodingConfig().Marshaler
+ cdc := simapp.MakeTestEncodingConfig().Codec
dec := simulation.NewDecodeStore(cdc)
minter := types.NewMinter(sdk.OneDec(), sdk.NewDec(15))
diff --git a/x/mint/simulation/genesis.go b/x/mint/simulation/genesis.go
index 717989e..54bd768 100644
--- a/x/mint/simulation/genesis.go
+++ b/x/mint/simulation/genesis.go
@@ -5,10 +5,10 @@ package simulation
import (
"encoding/json"
"fmt"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
"math/rand"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
)
diff --git a/x/mint/simulation/genesis_test.go b/x/mint/simulation/genesis_test.go
index 1900871..7a72dcf 100644
--- a/x/mint/simulation/genesis_test.go
+++ b/x/mint/simulation/genesis_test.go
@@ -1,14 +1,15 @@
package simulation_test
import (
+ "cosmossdk.io/math"
"encoding/json"
"math/rand"
"testing"
"github.com/stretchr/testify/require"
- "github.com/AstraProtocol/astra/v2/x/mint/simulation"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/simulation"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -31,7 +32,7 @@ func TestRandomizedGenState(t *testing.T) {
Rand: r,
NumBonded: 3,
Accounts: simtypes.RandomAccounts(r, 3),
- InitialStake: 1000,
+ InitialStake: math.NewInt(1000),
GenState: make(map[string]json.RawMessage),
}
diff --git a/x/mint/simulation/params.go b/x/mint/simulation/params.go
index 46f066c..58e0ad3 100644
--- a/x/mint/simulation/params.go
+++ b/x/mint/simulation/params.go
@@ -8,7 +8,7 @@ import (
"github.com/cosmos/cosmos-sdk/x/simulation"
- "github.com/AstraProtocol/astra/v2/x/mint/types"
+ "github.com/AstraProtocol/astra/v3/x/mint/types"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
)
diff --git a/x/mint/simulation/params_test.go b/x/mint/simulation/params_test.go
index 2ad6003..b0762ec 100644
--- a/x/mint/simulation/params_test.go
+++ b/x/mint/simulation/params_test.go
@@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/require"
- "github.com/AstraProtocol/astra/v2/x/mint/simulation"
+ "github.com/AstraProtocol/astra/v3/x/mint/simulation"
)
func TestParamChangest(t *testing.T) {
diff --git a/x/mint/types/params.go b/x/mint/types/params.go
index 566a07c..fb6cbdd 100644
--- a/x/mint/types/params.go
+++ b/x/mint/types/params.go
@@ -2,7 +2,7 @@ package types
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"gopkg.in/yaml.v2"
diff --git a/x/mint/types/params_test.go b/x/mint/types/params_test.go
index 8146bdc..f4dc913 100644
--- a/x/mint/types/params_test.go
+++ b/x/mint/types/params_test.go
@@ -2,7 +2,7 @@ package types
import (
"fmt"
- "github.com/AstraProtocol/astra/v2/cmd/config"
+ "github.com/AstraProtocol/astra/v3/cmd/config"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"github.com/stretchr/testify/suite"