From 8e7fe60b52d03614c2c206518caec70921814fc6 Mon Sep 17 00:00:00 2001
From: artpav <19916123+artemijspavlovs@users.noreply.github.com>
Date: Mon, 5 Aug 2024 13:50:55 +0300
Subject: [PATCH] feat: sequencer registration (#821)
---
.github/workflows/e2e.yml | 2 +-
.github/workflows/lint.yml | 2 +-
.github/workflows/markdownlint.yaml | 2 +-
.github/workflows/release.yaml | 2 +-
.github/workflows/test.yml | 2 +-
.pre-commit-config.yaml | 3 +
cmd/config/export/bech32.go | 10 +-
cmd/config/export/export.go | 10 +-
cmd/config/init/denom_metadata.go | 21 --
cmd/config/init/genesis.go | 38 +--
cmd/config/init/keys.go | 1 -
cmd/config/init/unique_rollapp_id.go | 53 ++-
cmd/config/set/da.go | 19 +-
cmd/config/set/set.go | 5 +-
cmd/consts/consts.go | 4 +-
cmd/da-light-client/start/start.go | 4 +-
cmd/eibc/utils.go | 2 +-
cmd/keys/export/export.go | 16 +-
cmd/keys/list/list.go | 72 ++--
cmd/migrate/migrate.go | 11 +-
cmd/relayer/relayer.go | 3 +-
cmd/relayer/run/run.go | 52 ++-
cmd/relayer/start/start.go | 52 +--
cmd/relayer/status/status.go | 2 +-
cmd/rollapp/init/hubgenesis.go | 56 +++
cmd/rollapp/init/main.go | 111 +++---
cmd/rollapp/init/mockbackends.go | 10 +-
cmd/rollapp/init/utils.go | 8 +-
cmd/rollapp/rollapp.go | 6 +-
cmd/rollapp/run/run.go | 358 +++++++++++++++++++
cmd/rollapp/start/start.go | 187 ++++------
cmd/rollapp/status/status.go | 2 +-
cmd/run/run.go | 8 +-
cmd/run/ui.go | 5 +-
cmd/tx/claim/claim.go | 47 ++-
cmd/tx/fund_faucet/fund_faucet.go | 20 +-
cmd/tx/register/bash_commands.go | 64 ----
cmd/tx/register/register.go | 113 ------
cmd/tx/tx.go | 6 +-
cmd/utils/bash_commands.go | 67 ++++
cmd/utils/fetch_accounts_data.go | 24 +-
cmd/utils/key_info.go | 23 +-
cmd/utils/output.go | 4 +-
config/config.go | 1 -
config/toml.go | 15 +-
data_layer/celestia/celestia.go | 69 ++--
data_layer/da_layer.go | 2 +
data_layer/damock/damock.go | 8 +
go.mod | 152 ++++++++-
go.sum | 490 +++++++++++++++++++++++----
relayer/channels.go | 34 +-
relayer/connections.go | 114 +++++--
relayer/create_ibc_channel.go | 3 +-
sequencer/config.go | 2 +
sequencer/sequencer_manager.go | 22 +-
utils/dymint/dymint.go | 110 ++++++
utils/rollapp/rollapp.go | 110 ++++++
utils/sequencer/sequencer.go | 112 ++++++
utils/sequencer/types.go | 32 ++
utils/yaml.go | 2 +-
60 files changed, 2060 insertions(+), 725 deletions(-)
create mode 100644 cmd/rollapp/init/hubgenesis.go
create mode 100644 cmd/rollapp/run/run.go
delete mode 100644 cmd/tx/register/bash_commands.go
delete mode 100644 cmd/tx/register/register.go
create mode 100644 utils/dymint/dymint.go
create mode 100644 utils/rollapp/rollapp.go
create mode 100644 utils/sequencer/sequencer.go
create mode 100644 utils/sequencer/types.go
diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index 92fb64f5..3b59374c 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -3,7 +3,7 @@ on:
workflow_dispatch:
jobs:
end_to_end_test:
- runs-on: ["arm-linux"]
+ runs-on: ["self-hosted"]
env:
GOPRIVATE: "github.com/dymensionxyz/*"
GH_ACCESS_TOKEN: "${{ secrets.GH_ACCESS_TOKEN }}"
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 243939ef..db90de21 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -17,7 +17,7 @@ on:
jobs:
golangci-lint:
name: lint
- runs-on: ubuntu-latest
+ runs-on: ["self-hosted"]
env:
GOPRIVATE: "github.com/dymensionxyz/*"
GH_ACCESS_TOKEN: "${{ secrets.GH_ACCESS_TOKEN }}"
diff --git a/.github/workflows/markdownlint.yaml b/.github/workflows/markdownlint.yaml
index babd5f2d..09c1a490 100644
--- a/.github/workflows/markdownlint.yaml
+++ b/.github/workflows/markdownlint.yaml
@@ -8,7 +8,7 @@ on:
- '**/*.md'
jobs:
markdownlint:
- runs-on: ubuntu-latest
+ runs-on: ["self-hosted"]
steps:
- uses: actions/checkout@v3
- name: markdownlint-cli
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 840151e7..41ff8ed1 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -8,7 +8,7 @@ on:
jobs:
release:
name: release
- runs-on: ubuntu-latest
+ runs-on: ["self-hosted"]
permissions:
pull-requests: write
actions: read
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index d49f317e..0c03a310 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -16,7 +16,7 @@ on:
- go.sum
jobs:
build:
- runs-on: ["arm-linux"]
+ runs-on: ["self-hosted"]
env:
GOPRIVATE: "github.com/dymensionxyz/*"
GH_ACCESS_TOKEN: "${{ secrets.GH_ACCESS_TOKEN }}"
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b198a1b3..b943a96f 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -12,6 +12,9 @@ repos:
rev: v1.59.1
hooks:
- id: golangci-lint
+ name: lint Go files
+ args: [--new-from-rev=HEAD, -v, --fix, --exclude-use-default, --sort-results]
+ files: \.go$
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.2.0
hooks:
diff --git a/cmd/config/export/bech32.go b/cmd/config/export/bech32.go
index 84fa50c8..19e14413 100644
--- a/cmd/config/export/bech32.go
+++ b/cmd/config/export/bech32.go
@@ -10,10 +10,12 @@ import (
)
func getBech32Prefix(rlpCfg config.RollappConfig) (string, error) {
- rollappSeqAddrInfo, err := utils.GetAddressBinary(utils.KeyConfig{
- Dir: filepath.Join(rlpCfg.Home, consts.ConfigDirName.Rollapp),
- ID: consts.KeysIds.RollappSequencer,
- }, rlpCfg.RollappBinary)
+ rollappSeqAddrInfo, err := utils.GetAddressInfoBinary(
+ utils.KeyConfig{
+ Dir: filepath.Join(rlpCfg.Home, consts.ConfigDirName.Rollapp),
+ ID: consts.KeysIds.RollappSequencer,
+ }, rlpCfg.RollappBinary,
+ )
if err != nil {
return "", err
}
diff --git a/cmd/config/export/export.go b/cmd/config/export/export.go
index 0498e546..d1631f7a 100644
--- a/cmd/config/export/export.go
+++ b/cmd/config/export/export.go
@@ -20,7 +20,7 @@ func Cmd() *cobra.Command {
Short: "Export the rollapp configurations jsons needed to list your rollapp.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rlpCfg, err := config.LoadConfigFromTOML(home)
+ rlpCfg, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
bech32, err := getBech32Prefix(rlpCfg)
utils.PrettifyErrorIfExists(err)
@@ -38,8 +38,12 @@ func Cmd() *cobra.Command {
rly := relayer.NewRelayer(rlpCfg.Home, rlpCfg.RollappID, rlpCfg.HubData.ID)
_, _, err = rly.LoadActiveChannel()
if err != nil || rly.SrcChannel == "" || rly.DstChannel == "" {
- utils.PrettifyErrorIfExists(errors.New("failed to export rollapp json." +
- " Please verify that the rollapp is running on your local machine and a relayer channel has been established"))
+ utils.PrettifyErrorIfExists(
+ errors.New(
+ "failed to export rollapp json." +
+ " Please verify that the rollapp is running on your local machine and a relayer channel has been established",
+ ),
+ )
}
logoDefaultPath := fmt.Sprintf("/logos/%s.png", rlpCfg.RollappID)
networkJson := NetworkJson{
diff --git a/cmd/config/init/denom_metadata.go b/cmd/config/init/denom_metadata.go
index 43c95434..8a9aa2b0 100644
--- a/cmd/config/init/denom_metadata.go
+++ b/cmd/config/init/denom_metadata.go
@@ -1,9 +1,7 @@
package initconfig
import (
- "encoding/json"
"fmt"
- "os"
"strings"
)
@@ -48,22 +46,3 @@ func getBankDenomMetadata(denom string, decimals uint) []BankDenomMetadata {
}
return metadata
}
-
-func createTokenMetadaJSON(metadataPath string, denom string, decimals uint) error {
- metadata := getBankDenomMetadata(denom, decimals)
- json, err := json.Marshal(metadata)
- if err != nil {
- return err
- }
-
- file, err := os.Create(metadataPath)
- if err != nil {
- return err
- }
- _, err = file.WriteString(string(json))
- if err != nil {
- return err
- }
-
- return nil
-}
diff --git a/cmd/config/init/genesis.go b/cmd/config/init/genesis.go
index aed83a1a..cfc8ed60 100644
--- a/cmd/config/init/genesis.go
+++ b/cmd/config/init/genesis.go
@@ -14,9 +14,9 @@ import (
"github.com/dymensionxyz/roller/config"
)
-const (
- totalSupplyToStakingRatio = 2
-)
+// const (
+// totalSupplyToStakingRatio = 2
+// )
type PathValue struct {
Path string
@@ -67,7 +67,7 @@ func UpdateJSONParams(jsonFilePath string, params []PathValue) error {
}
// nolint:gofumpt
- err = os.WriteFile(jsonFilePath, []byte(jsonFileContentString), 0644)
+ err = os.WriteFile(jsonFilePath, []byte(jsonFileContentString), 0o644)
if err != nil {
return err
}
@@ -79,12 +79,12 @@ func UpdateGenesisParams(home string, raCfg *config.RollappConfig) error {
if err != nil {
return err
}
- cfg, err := config.LoadConfigFromTOML(home)
+ cfg, err := config.LoadRollerConfigFromTOML(home)
if err != nil {
return err
}
- sa, err := getSequencerAddress(home)
+ sa, err := GetRollappSequencerAddress(home)
if err != nil {
return err
}
@@ -153,28 +153,20 @@ func getGenesisOperatorAddress(home string) (string, error) {
return a, nil
}
-func getSequencerAddress(home string) (string, error) {
+func GetRollappSequencerAddress(home string) (string, error) {
rollappConfigDirPath := filepath.Join(home, consts.ConfigDirName.Rollapp)
- getOperatorAddrCommand := exec.Command(
- consts.Executables.RollappEVM,
- "keys",
- "show",
- consts.KeysIds.RollappSequencer,
- "-a",
- "--keyring-backend",
- "test",
- "--home",
- rollappConfigDirPath,
- )
-
- addr, err := utils.ExecBashCommandWithStdout(getOperatorAddrCommand)
+ seqKeyConfig := utils.KeyConfig{
+ Dir: rollappConfigDirPath,
+ ID: consts.KeysIds.RollappSequencer,
+ ChainBinary: consts.Executables.RollappEVM,
+ Type: config.EVM_ROLLAPP,
+ }
+ addr, err := utils.GetAddressBinary(seqKeyConfig, seqKeyConfig.Dir)
if err != nil {
- fmt.Println("seq addr failed")
return "", err
}
- a := strings.TrimSpace(addr.String())
- return a, nil
+ return addr, nil
}
// func generateGenesisTx(initConfig config.RollappConfig) error {
diff --git a/cmd/config/init/keys.go b/cmd/config/init/keys.go
index eff6babc..a46c8586 100644
--- a/cmd/config/init/keys.go
+++ b/cmd/config/init/keys.go
@@ -96,7 +96,6 @@ func CreateAddressBinary(
"--output", "json",
}
createKeyCommand := exec.Command(keyConfig.ChainBinary, args...)
- fmt.Println(createKeyCommand.String())
out, err := utils.ExecBashCommandWithStdout(createKeyCommand)
if err != nil {
return nil, err
diff --git a/cmd/config/init/unique_rollapp_id.go b/cmd/config/init/unique_rollapp_id.go
index 2a996479..1c27f701 100644
--- a/cmd/config/init/unique_rollapp_id.go
+++ b/cmd/config/init/unique_rollapp_id.go
@@ -1,14 +1,5 @@
package initconfig
-import (
- "encoding/json"
- "os/exec"
-
- "github.com/dymensionxyz/roller/cmd/consts"
- "github.com/dymensionxyz/roller/cmd/utils"
- "github.com/dymensionxyz/roller/config"
-)
-
type Rollapp struct {
ID string `json:"rollappId"`
}
@@ -17,25 +8,25 @@ type RollappsListResponse struct {
Rollapps []Rollapp `json:"rollapp"`
}
-func isEthIdentifierUnique(ethID string, rlpCfg config.RollappConfig) (bool, error) {
- commonDymdFlags := utils.GetCommonDymdFlags(rlpCfg)
- // TODO: Move the filtering by ethereum rollapp ID logic to the hub
- args := []string{"q", "rollapp", "list", "--limit", "1000000"}
- args = append(args, commonDymdFlags...)
- listRollappCmd := exec.Command(consts.Executables.Dymension, args...)
- out, err := utils.ExecBashCommandWithStdout(listRollappCmd)
- if err != nil {
- return false, err
- }
- rollappsListResponse := RollappsListResponse{}
- err = json.Unmarshal(out.Bytes(), &rollappsListResponse)
- if err != nil {
- return false, err
- }
- for _, rollapp := range rollappsListResponse.Rollapps {
- if config.GetEthID(rollapp.ID) == ethID {
- return false, nil
- }
- }
- return true, nil
-}
+// func isEthIdentifierUnique(ethID string, rlpCfg config.RollappConfig) (bool, error) {
+// commonDymdFlags := utils.GetCommonDymdFlags(rlpCfg)
+// // TODO: Move the filtering by ethereum rollapp ID logic to the hub
+// args := []string{"q", "rollapp", "list", "--limit", "1000000"}
+// args = append(args, commonDymdFlags...)
+// listRollappCmd := exec.Command(consts.Executables.Dymension, args...)
+// out, err := utils.ExecBashCommandWithStdout(listRollappCmd)
+// if err != nil {
+// return false, err
+// }
+// rollappsListResponse := RollappsListResponse{}
+// err = json.Unmarshal(out.Bytes(), &rollappsListResponse)
+// if err != nil {
+// return false, err
+// }
+// for _, rollapp := range rollappsListResponse.Rollapps {
+// if config.GetEthID(rollapp.ID) == ethID {
+// return false, nil
+// }
+// }
+// return true, nil
+// }
diff --git a/cmd/config/set/da.go b/cmd/config/set/da.go
index 76dd0810..bae5dc64 100644
--- a/cmd/config/set/da.go
+++ b/cmd/config/set/da.go
@@ -10,7 +10,7 @@ import (
"github.com/dymensionxyz/roller/config"
datalayer "github.com/dymensionxyz/roller/data_layer"
"github.com/dymensionxyz/roller/sequencer"
- global_utils "github.com/dymensionxyz/roller/utils"
+ globalutils "github.com/dymensionxyz/roller/utils"
)
func setDA(rlpCfg config.RollappConfig, value string) error {
@@ -27,10 +27,11 @@ func setDA(rlpCfg config.RollappConfig, value string) error {
func updateDaConfig(rlpCfg config.RollappConfig, newDa config.DAType) error {
daCfgDirPath := filepath.Join(rlpCfg.Home, consts.ConfigDirName.DALightNode)
- dirExist, err := global_utils.DirNotEmpty(daCfgDirPath)
+ dirExist, err := globalutils.DirNotEmpty(daCfgDirPath)
if err != nil {
return err
}
+
if dirExist {
if yes, err := utils.PromptBool("Changing DA will remove the old DA keys permanently. Are you sure you want to proceed"); err != nil {
return err
@@ -41,18 +42,22 @@ func updateDaConfig(rlpCfg config.RollappConfig, newDa config.DAType) error {
if err := os.RemoveAll(daCfgDirPath); err != nil {
return err
}
+
daManager := datalayer.NewDAManager(newDa, rlpCfg.Home)
_, err = daManager.InitializeLightNodeConfig()
if err != nil {
return err
}
+
rlpCfg.DA = newDa
if err := sequencer.UpdateDymintDAConfig(rlpCfg); err != nil {
return err
}
+
if err := config.WriteConfigToTOML(rlpCfg); err != nil {
return err
}
+
fmt.Printf("š RollApp DA has been successfully set to '%s'\n\n", newDa)
if newDa != config.Local {
addresses := make([]utils.KeyInfo, 0)
@@ -61,10 +66,12 @@ func updateDaConfig(rlpCfg config.RollappConfig, newDa config.DAType) error {
if err != nil {
return err
}
- addresses = append(addresses, utils.KeyInfo{
- Name: damanager.GetKeyName(),
- Address: daAddress.Address,
- })
+ addresses = append(
+ addresses, utils.KeyInfo{
+ Name: damanager.GetKeyName(),
+ Address: daAddress.Address,
+ },
+ )
utils.PrintAddressesWithTitle(addresses)
fmt.Printf("\nš Please fund this address to run the DA light client.\n")
diff --git a/cmd/config/set/set.go b/cmd/config/set/set.go
index b077f9ac..400eece7 100644
--- a/cmd/config/set/set.go
+++ b/cmd/config/set/set.go
@@ -4,9 +4,10 @@ import (
"fmt"
"strings"
+ "github.com/spf13/cobra"
+
"github.com/dymensionxyz/roller/cmd/utils"
"github.com/dymensionxyz/roller/config"
- "github.com/spf13/cobra"
)
var keyUpdateFuncs = map[string]func(cfg config.RollappConfig, value string) error{
@@ -31,7 +32,7 @@ func Cmd() *cobra.Command {
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rlpCfg, err := config.LoadConfigFromTOML(home)
+ rlpCfg, err := config.LoadRollerConfigFromTOML(home)
if err != nil {
return err
}
diff --git a/cmd/consts/consts.go b/cmd/consts/consts.go
index 4859419b..35435087 100644
--- a/cmd/consts/consts.go
+++ b/cmd/consts/consts.go
@@ -39,12 +39,14 @@ var KeysIds = struct {
RollappSequencer string
RollappRelayer string
HubRelayer string
+ Celestia string
}{
HubSequencer: "hub_sequencer",
HubGenesis: "hub_genesis",
RollappSequencer: "rollapp_genesis_account",
RollappRelayer: "relayer-rollapp-key",
HubRelayer: "relayer-hub-key",
+ Celestia: "my_celes_key",
}
var AddressPrefixes = struct {
@@ -115,7 +117,6 @@ var LocalHubData = config.HubData{
RPC_URL: "http://localhost:36657",
ARCHIVE_RPC_URL: "http://localhost:36657",
GAS_PRICE: "100000000",
- SEQ_MIN_BOND: "100dym",
}
var MockHubData = config.HubData{
@@ -124,7 +125,6 @@ var MockHubData = config.HubData{
RPC_URL: "",
ARCHIVE_RPC_URL: "",
GAS_PRICE: "",
- SEQ_MIN_BOND: "",
}
// TODO(#112): The available hub networks should be read from YAML file
diff --git a/cmd/da-light-client/start/start.go b/cmd/da-light-client/start/start.go
index cc076906..8143ffd9 100644
--- a/cmd/da-light-client/start/start.go
+++ b/cmd/da-light-client/start/start.go
@@ -26,7 +26,7 @@ func Cmd() *cobra.Command {
Short: "Runs the DA light client.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rollappConfig, err := config.LoadConfigFromTOML(home)
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
utils.RequireMigrateIfNeeded(rollappConfig)
metricsEndpoint := cmd.Flag(metricsEndpointFlag).Value.String()
@@ -39,7 +39,7 @@ func Cmd() *cobra.Command {
insufficientBalances, err := damanager.CheckDABalance()
utils.PrettifyErrorIfExists(err)
- utils.PrintInsufficientBalancesIfAny(insufficientBalances, rollappConfig)
+ utils.PrintInsufficientBalancesIfAny(insufficientBalances)
rpcEndpoint := cmd.Flag(rpcEndpointFlag).Value.String()
if rpcEndpoint != "" {
diff --git a/cmd/eibc/utils.go b/cmd/eibc/utils.go
index e8bb121d..5a4378d5 100644
--- a/cmd/eibc/utils.go
+++ b/cmd/eibc/utils.go
@@ -24,7 +24,7 @@ func ensureWhaleAccount() error {
Type: "",
}
- _, err := utils.GetAddressBinary(kc, consts.Executables.Dymension)
+ _, err := utils.GetAddressInfoBinary(kc, consts.Executables.Dymension)
if err != nil {
fmt.Println("whale account not found in the keyring, creating it now")
addressInfo, err := initconfig.CreateAddressBinary(kc, home)
diff --git a/cmd/keys/export/export.go b/cmd/keys/export/export.go
index 5c189057..1a25b603 100644
--- a/cmd/keys/export/export.go
+++ b/cmd/keys/export/export.go
@@ -19,7 +19,7 @@ func Cmd() *cobra.Command {
Short: "Exports the private key of the given key id.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rlpCfg, err := config.LoadConfigFromTOML(home)
+ rlpCfg, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
supportedKeys := []string{
consts.KeysIds.HubSequencer,
@@ -40,8 +40,10 @@ func Cmd() *cobra.Command {
utils.PrettifyErrorIfExists(err)
printHexKeyOutput(out.String())
} else if keyID == consts.KeysIds.RollappSequencer {
- exportKeyCmd := utils.GetExportKeyCmdBinary(keyID, filepath.Join(home, consts.ConfigDirName.Rollapp),
- rlpCfg.RollappBinary)
+ exportKeyCmd := utils.GetExportKeyCmdBinary(
+ keyID, filepath.Join(home, consts.ConfigDirName.Rollapp),
+ rlpCfg.RollappBinary,
+ )
out, err := utils.ExecBashCommandWithStdout(exportKeyCmd)
utils.PrettifyErrorIfExists(err)
printHexKeyOutput(out.String())
@@ -54,8 +56,12 @@ func Cmd() *cobra.Command {
printMnemonicKeyOutput(privateKey)
}
} else {
- utils.PrettifyErrorIfExists(fmt.Errorf("invalid key id: %s. The supported keys are %s", keyID,
- strings.Join(supportedKeys, ", ")))
+ utils.PrettifyErrorIfExists(
+ fmt.Errorf(
+ "invalid key id: %s. The supported keys are %s", keyID,
+ strings.Join(supportedKeys, ", "),
+ ),
+ )
}
},
Args: cobra.ExactArgs(1),
diff --git a/cmd/keys/list/list.go b/cmd/keys/list/list.go
index 013ca072..10f2192e 100644
--- a/cmd/keys/list/list.go
+++ b/cmd/keys/list/list.go
@@ -25,7 +25,7 @@ func Cmd() *cobra.Command {
Short: "List all the addresses of roller on the local machine.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rollappConfig, err := config.LoadConfigFromTOML(home)
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
addresses := make([]utils.KeyInfo, 0)
damanager := datalayer.NewDAManager(rollappConfig.DA, rollappConfig.Home)
@@ -33,38 +33,50 @@ func Cmd() *cobra.Command {
daAddr, err := damanager.DataLayer.GetDAAccountAddress()
utils.PrettifyErrorIfExists(err)
if daAddr != nil {
- addresses = append(addresses, utils.KeyInfo{
- Address: daAddr.Address,
- Name: damanager.GetKeyName(),
- })
+ addresses = append(
+ addresses, utils.KeyInfo{
+ Address: daAddr.Address,
+ Name: damanager.GetKeyName(),
+ },
+ )
}
- hubSeqInfo, err := utils.GetAddressBinary(utils.KeyConfig{
- Dir: filepath.Join(rollappConfig.Home, consts.ConfigDirName.HubKeys),
- ID: consts.KeysIds.HubSequencer,
- }, consts.Executables.Dymension)
+ hubSeqInfo, err := utils.GetAddressInfoBinary(
+ utils.KeyConfig{
+ Dir: filepath.Join(rollappConfig.Home, consts.ConfigDirName.HubKeys),
+ ID: consts.KeysIds.HubSequencer,
+ }, consts.Executables.Dymension,
+ )
utils.PrettifyErrorIfExists(err)
- addresses = append(addresses, utils.KeyInfo{
- Address: hubSeqInfo.Address,
- Name: consts.KeysIds.HubSequencer,
- })
+ addresses = append(
+ addresses, utils.KeyInfo{
+ Address: hubSeqInfo.Address,
+ Name: consts.KeysIds.HubSequencer,
+ },
+ )
- raSeqInfo, err := utils.GetAddressBinary(utils.KeyConfig{
- Dir: filepath.Join(rollappConfig.Home, consts.ConfigDirName.Rollapp),
- ID: consts.KeysIds.RollappSequencer,
- }, rollappConfig.RollappBinary)
+ raSeqInfo, err := utils.GetAddressInfoBinary(
+ utils.KeyConfig{
+ Dir: filepath.Join(rollappConfig.Home, consts.ConfigDirName.Rollapp),
+ ID: consts.KeysIds.RollappSequencer,
+ }, rollappConfig.RollappBinary,
+ )
utils.PrettifyErrorIfExists(err)
- addresses = append(addresses, utils.KeyInfo{
- Address: raSeqInfo.Address,
- Name: consts.KeysIds.RollappSequencer,
- })
+ addresses = append(
+ addresses, utils.KeyInfo{
+ Address: raSeqInfo.Address,
+ Name: consts.KeysIds.RollappSequencer,
+ },
+ )
hubRlyAddr, err := utils.GetRelayerAddress(rollappConfig.Home, rollappConfig.HubData.ID)
utils.PrettifyErrorIfExists(err)
- addresses = append(addresses, utils.KeyInfo{
- Address: hubRlyAddr,
- Name: consts.KeysIds.HubRelayer,
- })
+ addresses = append(
+ addresses, utils.KeyInfo{
+ Address: hubRlyAddr,
+ Name: consts.KeysIds.HubRelayer,
+ },
+ )
rollappRlyAddr, err := utils.GetRelayerAddress(
rollappConfig.Home,
@@ -72,10 +84,12 @@ func Cmd() *cobra.Command {
)
utils.PrettifyErrorIfExists(err)
- addresses = append(addresses, utils.KeyInfo{
- Address: rollappRlyAddr,
- Name: consts.KeysIds.RollappRelayer,
- })
+ addresses = append(
+ addresses, utils.KeyInfo{
+ Address: rollappRlyAddr,
+ Name: consts.KeysIds.RollappRelayer,
+ },
+ )
outputType := cmd.Flag(flagNames.outputType).Value.String()
if outputType == "json" {
utils.PrettifyErrorIfExists(printAsJSON(addresses))
diff --git a/cmd/migrate/migrate.go b/cmd/migrate/migrate.go
index 2c2eb92f..a2bd1d01 100644
--- a/cmd/migrate/migrate.go
+++ b/cmd/migrate/migrate.go
@@ -3,10 +3,11 @@ package migrate
import (
"fmt"
+ "github.com/spf13/cobra"
+
"github.com/dymensionxyz/roller/cmd/utils"
"github.com/dymensionxyz/roller/config"
"github.com/dymensionxyz/roller/version"
- "github.com/spf13/cobra"
)
var migrationsRegistry = []VersionMigrator{
@@ -28,7 +29,7 @@ func Cmd() *cobra.Command {
Short: "Migrates the roller configuration to the newly installed version.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rlpCfg, err := config.LoadConfigFromTOML(home)
+ rlpCfg, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
prevVersionData, err := GetPrevVersionData(rlpCfg)
utils.PrettifyErrorIfExists(err)
@@ -64,8 +65,10 @@ func GetPrevVersionData(rlpCfg config.RollappConfig) (*VersionData, error) {
return nil, err
}
if n != 3 {
- return nil, fmt.Errorf("failed to extract all version components from version %s",
- rollerPrevVersion)
+ return nil, fmt.Errorf(
+ "failed to extract all version components from version %s",
+ rollerPrevVersion,
+ )
}
return &VersionData{
Major: major,
diff --git a/cmd/relayer/relayer.go b/cmd/relayer/relayer.go
index 0aae4ce2..4629f73d 100644
--- a/cmd/relayer/relayer.go
+++ b/cmd/relayer/relayer.go
@@ -5,7 +5,6 @@ import (
"github.com/dymensionxyz/roller/cmd/relayer/run"
"github.com/dymensionxyz/roller/cmd/relayer/status"
- "github.com/dymensionxyz/roller/cmd/rollapp/start"
)
func Cmd() *cobra.Command {
@@ -14,7 +13,7 @@ func Cmd() *cobra.Command {
Short: "Commands for running and managing the RollApp relayer.",
}
cmd.AddCommand(run.Cmd())
- cmd.AddCommand(start.Cmd())
+ // cmd.AddCommand(start.Cmd())
cmd.AddCommand(status.Cmd())
return cmd
}
diff --git a/cmd/relayer/run/run.go b/cmd/relayer/run/run.go
index 7bb1c53a..156e95a9 100644
--- a/cmd/relayer/run/run.go
+++ b/cmd/relayer/run/run.go
@@ -6,6 +6,7 @@ import (
"math/big"
"os"
"path/filepath"
+ "strconv"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
@@ -16,7 +17,9 @@ import (
"github.com/dymensionxyz/roller/config"
"github.com/dymensionxyz/roller/relayer"
"github.com/dymensionxyz/roller/sequencer"
- global_utils "github.com/dymensionxyz/roller/utils"
+ globalutils "github.com/dymensionxyz/roller/utils"
+ dymintutils "github.com/dymensionxyz/roller/utils/dymint"
+ rollapputils "github.com/dymensionxyz/roller/utils/rollapp"
)
// TODO: Test relaying on 35-C and update the prices
@@ -29,14 +32,15 @@ const (
flagOverride = "override"
)
+// nolint gocyclo
func Cmd() *cobra.Command {
relayerStartCmd := &cobra.Command{
Use: "run",
Short: "Runs a relayer between the Dymension hub and the rollapp.",
Run: func(cmd *cobra.Command, args []string) {
- home, _ := global_utils.ExpandHomePath(cmd.Flag(utils.FlagNames.Home).Value.String())
+ home, _ := globalutils.ExpandHomePath(cmd.Flag(utils.FlagNames.Home).Value.String())
relayerHome := filepath.Join(home, consts.ConfigDirName.Relayer)
- rollappConfig, err := config.LoadConfigFromTOML(home)
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
if err != nil {
pterm.Error.Printf("failed to load rollapp config: %v\n", err)
return
@@ -47,14 +51,14 @@ func Cmd() *cobra.Command {
/* ---------------------------- Initialize relayer --------------------------- */
outputHandler := initconfig.NewOutputHandler(false)
- isDirEmpty, err := global_utils.DirNotEmpty(relayerHome)
+ isRelayerInitialized, err := globalutils.DirNotEmpty(relayerHome)
if err != nil {
pterm.Error.Printf("failed to check %s: %v\n", relayerHome, err)
return
}
var shouldOverwrite bool
- if isDirEmpty {
+ if isRelayerInitialized {
outputHandler.StopSpinner()
shouldOverwrite, err = outputHandler.PromptOverwriteConfig(relayerHome)
if err != nil {
@@ -64,7 +68,7 @@ func Cmd() *cobra.Command {
}
if shouldOverwrite {
- pterm.Info.Println("overriding the existing relayer channel")
+ pterm.Info.Println("overriding the existing relayer configuration")
err = os.RemoveAll(relayerHome)
if err != nil {
pterm.Error.Printf("failed to recuresively remove %s: %v\n", relayerHome, err)
@@ -76,8 +80,30 @@ func Cmd() *cobra.Command {
pterm.Error.Printf("failed to create %s: %v\n", relayerHome, err)
return
}
+ }
- rollappPrefix, err := global_utils.GetKeyFromTomlFile(
+ if !isRelayerInitialized || shouldOverwrite {
+ // preflight checks
+ blockInformation, err := rollapputils.GetCurrentHeight()
+ if err != nil {
+ fmt.Println("failed to retrieve current height")
+ }
+ currentHeight, err := strconv.Atoi(
+ strconv.FormatInt(blockInformation.Block.Header.Height, 10),
+ )
+ if err != nil {
+ fmt.Println("failed to retrieve current height")
+ }
+ if currentHeight <= 2 {
+ pterm.Warning.Println("current height is too low, updating dymint config")
+ err := dymintutils.UpdateDymintConfigForIBC(home)
+ if err != nil {
+ pterm.Error.Println("failed to update dymint config")
+ return
+ }
+ }
+
+ rollappPrefix, err := globalutils.GetKeyFromTomlFile(
rollerConfigFilePath,
"bech32_prefix",
)
@@ -109,6 +135,15 @@ func Cmd() *cobra.Command {
return
}
+ err = dymintutils.UpdateDymintConfigForIBC(home)
+ if err != nil {
+ pterm.Error.Println(
+ "failed to update dymint config for ibc creation",
+ err,
+ )
+ return
+ }
+
if err := relayer.CreatePath(rollappConfig); err != nil {
pterm.Error.Printf("failed to create relayer IBC path: %v\n", err)
return
@@ -163,6 +198,7 @@ func Cmd() *cobra.Command {
}
}
+ // TODO: look up relayer keys
if createIbcChannels || shouldOverwrite {
if shouldOverwrite {
keys, err := initconfig.GenerateRelayerKeys(rollappConfig)
@@ -231,7 +267,7 @@ func VerifyRelayerBalances(rolCfg config.RollappConfig) error {
if err != nil {
return err
}
- utils.PrintInsufficientBalancesIfAny(insufficientBalances, rolCfg)
+ utils.PrintInsufficientBalancesIfAny(insufficientBalances)
return nil
}
diff --git a/cmd/relayer/start/start.go b/cmd/relayer/start/start.go
index cc471988..64d44e47 100644
--- a/cmd/relayer/start/start.go
+++ b/cmd/relayer/start/start.go
@@ -30,7 +30,7 @@ func Start() *cobra.Command {
Short: "Starts a relayer between the Dymension hub and the rollapp.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rollappConfig, err := config.LoadConfigFromTOML(home)
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
utils.RequireMigrateIfNeeded(rollappConfig)
@@ -90,7 +90,7 @@ func Start() *cobra.Command {
func VerifyRelayerBalances(rolCfg config.RollappConfig) {
insufficientBalances, err := GetRelayerInsufficientBalances(rolCfg)
utils.PrettifyErrorIfExists(err)
- utils.PrintInsufficientBalancesIfAny(insufficientBalances, rolCfg)
+ utils.PrintInsufficientBalancesIfAny(insufficientBalances)
}
func GetRlyHubInsufficientBalances(
@@ -100,24 +100,28 @@ func GetRlyHubInsufficientBalances(
if err != nil {
return nil, err
}
- HubRlyBalance, err := utils.QueryBalance(utils.ChainQueryConfig{
- RPC: config.HubData.RPC_URL,
- Denom: consts.Denoms.Hub,
- Binary: consts.Executables.Dymension,
- }, HubRlyAddr)
+ HubRlyBalance, err := utils.QueryBalance(
+ utils.ChainQueryConfig{
+ RPC: config.HubData.RPC_URL,
+ Denom: consts.Denoms.Hub,
+ Binary: consts.Executables.Dymension,
+ }, HubRlyAddr,
+ )
if err != nil {
return nil, err
}
insufficientBalances := make([]utils.NotFundedAddressData, 0)
if HubRlyBalance.Amount.Cmp(oneDayRelayPriceHub) < 0 {
- insufficientBalances = append(insufficientBalances, utils.NotFundedAddressData{
- KeyName: consts.KeysIds.HubRelayer,
- Address: HubRlyAddr,
- CurrentBalance: HubRlyBalance.Amount,
- RequiredBalance: oneDayRelayPriceHub,
- Denom: consts.Denoms.Hub,
- Network: config.HubData.ID,
- })
+ insufficientBalances = append(
+ insufficientBalances, utils.NotFundedAddressData{
+ KeyName: consts.KeysIds.HubRelayer,
+ Address: HubRlyAddr,
+ CurrentBalance: HubRlyBalance.Amount,
+ RequiredBalance: oneDayRelayPriceHub,
+ Denom: consts.Denoms.Hub,
+ Network: config.HubData.ID,
+ },
+ )
}
return insufficientBalances, nil
}
@@ -134,14 +138,16 @@ func GetRelayerInsufficientBalances(
return insufficientBalances, err
}
if rolRlyData.Balance.Amount.Cmp(oneDayRelayPriceRollapp) < 0 {
- insufficientBalances = append(insufficientBalances, utils.NotFundedAddressData{
- KeyName: consts.KeysIds.RollappRelayer,
- Address: rolRlyData.Address,
- CurrentBalance: rolRlyData.Balance.Amount,
- RequiredBalance: oneDayRelayPriceRollapp,
- Denom: config.Denom,
- Network: config.RollappID,
- })
+ insufficientBalances = append(
+ insufficientBalances, utils.NotFundedAddressData{
+ KeyName: consts.KeysIds.RollappRelayer,
+ Address: rolRlyData.Address,
+ CurrentBalance: rolRlyData.Balance.Amount,
+ RequiredBalance: oneDayRelayPriceRollapp,
+ Denom: config.Denom,
+ Network: config.RollappID,
+ },
+ )
}
return insufficientBalances, nil
}
diff --git a/cmd/relayer/status/status.go b/cmd/relayer/status/status.go
index 8ed35581..57923d36 100644
--- a/cmd/relayer/status/status.go
+++ b/cmd/relayer/status/status.go
@@ -18,7 +18,7 @@ func Cmd() *cobra.Command {
Short: "Show the status of the relayer on the local machine.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rollappConfig, err := config.LoadConfigFromTOML(home)
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
rly := relayer.NewRelayer(
rollappConfig.Home,
diff --git a/cmd/rollapp/init/hubgenesis.go b/cmd/rollapp/init/hubgenesis.go
new file mode 100644
index 00000000..0fda4e3b
--- /dev/null
+++ b/cmd/rollapp/init/hubgenesis.go
@@ -0,0 +1,56 @@
+package initrollapp
+
+import (
+ "errors"
+ "os/exec"
+ "regexp"
+
+ "github.com/dymensionxyz/roller/cmd/consts"
+ "github.com/dymensionxyz/roller/cmd/utils"
+)
+
+const (
+ // this is a constsant value of the hub genesis module
+ hubgenesisAddr = "F54EBEEF798CA51615C02D13888768F9960863F2"
+)
+
+func getDebugAddrCmd(a string) *exec.Cmd {
+ cmd := exec.Command(
+ consts.Executables.RollappEVM,
+ "debug",
+ "addr",
+ a,
+ )
+
+ return cmd
+}
+
+// GetHubGenesisAddress function
+func GetHubGenesisAddress() (string, error) {
+ cmd := getDebugAddrCmd(hubgenesisAddr)
+
+ o, err := utils.ExecBashCommandWithStdout(cmd)
+ if err != nil {
+ return "", err
+ }
+
+ addr := extractBech32Acc(o.String())
+ if addr == "" {
+ err := errors.New("failed to extract bech 32 address")
+ return "", err
+
+ }
+
+ return addr, nil
+}
+
+// extractBech32Acc function retrieves the bech 32 address from the output
+// of 'rollappd debug addr
' command
+func extractBech32Acc(output string) string {
+ re := regexp.MustCompile(`Bech32 Acc: ([^\s]+)`)
+ matches := re.FindStringSubmatch(output)
+ if len(matches) > 1 {
+ return matches[1]
+ }
+ return ""
+}
diff --git a/cmd/rollapp/init/main.go b/cmd/rollapp/init/main.go
index 6d9a3830..dedc9d27 100644
--- a/cmd/rollapp/init/main.go
+++ b/cmd/rollapp/init/main.go
@@ -10,75 +10,78 @@ import (
initconfig "github.com/dymensionxyz/roller/cmd/config/init"
)
-var Cmd = &cobra.Command{
- Use: "init [path-to-config-archive]",
- Short: "Inititlize RollApp locally",
- Long: ``,
- Args: cobra.MaximumNArgs(1),
- Run: func(cmd *cobra.Command, args []string) {
- err := initconfig.AddFlags(cmd)
- if err != nil {
- pterm.Error.Println("failed to add flags")
- return
- }
-
- if len(args) != 0 {
- archivePath, err := checkConfigArchive(args[0])
+func Cmd() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "init [path-to-config-archive]",
+ Short: "Inititlize a RollApp",
+ Long: ``,
+ Args: cobra.MaximumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ err := initconfig.AddFlags(cmd)
if err != nil {
- fmt.Printf("failed to get archive: %v\n", err)
+ pterm.Error.Println("failed to add flags")
return
}
- err = runInit(cmd, WithConfig(strings.TrimSpace(archivePath)))
- if err != nil {
- fmt.Printf("failed to initialize the RollApp: %v\n", err)
+ if len(args) != 0 {
+ archivePath, err := checkConfigArchive(args[0])
+ if err != nil {
+ fmt.Printf("failed to get archive: %v\n", err)
+ return
+ }
+
+ err = runInit(cmd, WithConfig(strings.TrimSpace(archivePath)))
+ if err != nil {
+ fmt.Printf("failed to initialize the RollApp: %v\n", err)
+ return
+ }
+
return
}
- return
- }
-
- options := []string{"mock", "dymension"}
- backend, _ := pterm.DefaultInteractiveSelect.
- WithDefaultText("select the settlement layer type").
- WithOptions(options).
- Show()
+ options := []string{"mock", "dymension"}
+ backend, _ := pterm.DefaultInteractiveSelect.
+ WithDefaultText("select the settlement layer backend").
+ WithOptions(options).
+ Show()
- if backend == "mock" {
- err := runInit(cmd, WithMockSettlement())
- if err != nil {
- fmt.Println("failed to run init: ", err)
+ if backend == "mock" {
+ err := runInit(cmd, WithMockSettlement())
+ if err != nil {
+ fmt.Println("failed to run init: ", err)
+ return
+ }
return
}
- return
- }
- hasConfig, _ := pterm.DefaultInteractiveConfirm.WithDefaultText(
- "do you have an existing configuration archive?",
- ).Show()
+ hasConfig, _ := pterm.DefaultInteractiveConfirm.WithDefaultText(
+ "do you have an existing configuration archive?",
+ ).Show()
- if !hasConfig {
- fmt.Println(
- `To generate a RollApp configuration file go to
+ if !hasConfig {
+ fmt.Println(
+ `To generate a RollApp configuration file go to
or run 'rollapp config' to expose the UI on localhost:11133.
after configuration files are generated, rerun the 'init' command`,
- )
- return
- }
+ )
+ return
+ }
- fp, _ := pterm.DefaultInteractiveTextInput.WithDefaultText("provide the configuration archive path").
- Show()
+ fp, _ := pterm.DefaultInteractiveTextInput.WithDefaultText("provide the configuration archive path").
+ Show()
- archivePath, err := checkConfigArchive(fp)
- if err != nil {
- fmt.Printf("failed to get archive: %v\n", err)
- return
- }
+ archivePath, err := checkConfigArchive(fp)
+ if err != nil {
+ fmt.Printf("failed to get archive: %v\n", err)
+ return
+ }
- err = runInit(cmd, WithConfig(archivePath))
- if err != nil {
- fmt.Printf("failed to initialize the RollApp: %v\n", err)
- return
- }
- },
+ err = runInit(cmd, WithConfig(archivePath))
+ if err != nil {
+ fmt.Printf("failed to initialize the RollApp: %v\n", err)
+ return
+ }
+ },
+ }
+ return cmd
}
diff --git a/cmd/rollapp/init/mockbackends.go b/cmd/rollapp/init/mockbackends.go
index 59352222..bb1ee0dd 100644
--- a/cmd/rollapp/init/mockbackends.go
+++ b/cmd/rollapp/init/mockbackends.go
@@ -6,6 +6,10 @@ import (
"path/filepath"
"github.com/BurntSushi/toml"
+ "github.com/spf13/cobra"
+
+ "github.com/dymensionxyz/roller/cmd/utils"
+ globalutils "github.com/dymensionxyz/roller/utils"
)
type RollerConfig struct {
@@ -25,7 +29,9 @@ type RollerConfig struct {
RollerVersion string `toml:"roller_version"`
}
-func NewMockRollerConfig() *RollerConfig {
+func NewMockRollerConfig(cmd *cobra.Command) *RollerConfig {
+ home, _ := globalutils.ExpandHomePath(cmd.Flag(utils.FlagNames.Home).Value.String())
+
return &RollerConfig{
BaseDenom: "amock",
Bech32Prefix: "ethm",
@@ -36,7 +42,7 @@ func NewMockRollerConfig() *RollerConfig {
Environment: "local",
Execution: "evm",
ExecutionVersion: "v2.2.0-hotfix.1",
- Home: "",
+ Home: home,
LogoDataURI: "",
MinimumGasPrices: "1000000000amock",
RollappID: "mockrollapp_100000-1",
diff --git a/cmd/rollapp/init/utils.go b/cmd/rollapp/init/utils.go
index 937e940d..950cfe21 100644
--- a/cmd/rollapp/init/utils.go
+++ b/cmd/rollapp/init/utils.go
@@ -106,7 +106,7 @@ func runInit(cmd *cobra.Command, opts ...Option) error {
return err
}
} else {
- mockRollerConfig := NewMockRollerConfig()
+ mockRollerConfig := NewMockRollerConfig(cmd)
err := WriteMockRollerconfigToFile(mockRollerConfig)
if err != nil {
return err
@@ -239,12 +239,6 @@ func runInit(cmd *cobra.Command, opts ...Option) error {
}
/* ------------------------------ Create Init Files ---------------------------- */
- err = WriteDenomMetadata(initConfig)
- if err != nil {
- fmt.Println("failed to create denom metadata: ", err)
- return err
- }
-
// 20240607 genesis is generated using the genesis-creator
// err = initializeRollappGenesis(initConfig)
// if err != nil {
diff --git a/cmd/rollapp/rollapp.go b/cmd/rollapp/rollapp.go
index 9eb69f8d..d5b321de 100644
--- a/cmd/rollapp/rollapp.go
+++ b/cmd/rollapp/rollapp.go
@@ -5,7 +5,7 @@ import (
"github.com/dymensionxyz/roller/cmd/config"
initrollapp "github.com/dymensionxyz/roller/cmd/rollapp/init"
- "github.com/dymensionxyz/roller/cmd/rollapp/start"
+ "github.com/dymensionxyz/roller/cmd/rollapp/run"
"github.com/dymensionxyz/roller/cmd/rollapp/status"
)
@@ -15,10 +15,10 @@ func Cmd() *cobra.Command {
Short: "Commands to initialize and run a RollApp",
}
- cmd.AddCommand(initrollapp.Cmd)
+ cmd.AddCommand(initrollapp.Cmd())
cmd.AddCommand(status.Cmd())
cmd.AddCommand(config.Cmd())
- cmd.AddCommand(start.Cmd())
+ cmd.AddCommand(run.Cmd())
return cmd
}
diff --git a/cmd/rollapp/run/run.go b/cmd/rollapp/run/run.go
new file mode 100644
index 00000000..6566cff3
--- /dev/null
+++ b/cmd/rollapp/run/run.go
@@ -0,0 +1,358 @@
+package run
+
+import (
+ "context"
+ "fmt"
+ "math/big"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+
+ cosmossdkmath "cosmossdk.io/math"
+ cosmossdktypes "github.com/cosmos/cosmos-sdk/types"
+ "github.com/pterm/pterm"
+ "github.com/spf13/cobra"
+
+ initconfig "github.com/dymensionxyz/roller/cmd/config/init"
+ "github.com/dymensionxyz/roller/cmd/consts"
+ "github.com/dymensionxyz/roller/cmd/utils"
+ "github.com/dymensionxyz/roller/config"
+ datalayer "github.com/dymensionxyz/roller/data_layer"
+ "github.com/dymensionxyz/roller/sequencer"
+ globalutils "github.com/dymensionxyz/roller/utils"
+ rollapputils "github.com/dymensionxyz/roller/utils/rollapp"
+ sequencerutils "github.com/dymensionxyz/roller/utils/sequencer"
+)
+
+// TODO: Test sequencing on 35-C and update the price
+var OneDaySequencePrice = big.NewInt(1)
+
+var (
+ RollappDirPath string
+ LogPath string
+)
+
+// nolint:gocyclo
+func Cmd() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "run",
+ Short: "Initialize RollApp locally",
+ Long: ``,
+ Args: cobra.MaximumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ err := initconfig.AddFlags(cmd)
+ if err != nil {
+ pterm.Error.Println("failed to add flags")
+ return
+ }
+
+ home, err := globalutils.ExpandHomePath(cmd.Flag(utils.FlagNames.Home).Value.String())
+ if err != nil {
+ pterm.Error.Println("failed to expand home directory")
+ return
+ }
+
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
+ utils.PrettifyErrorIfExists(err)
+
+ seq := sequencer.GetInstance(rollappConfig)
+ startRollappCmd := seq.GetStartCmd()
+
+ LogPath = filepath.Join(
+ rollappConfig.Home,
+ consts.ConfigDirName.Rollapp,
+ "rollapputils.log",
+ )
+ RollappDirPath = filepath.Join(rollappConfig.Home, consts.ConfigDirName.Rollapp)
+
+ if rollappConfig.HubData.ID == "mock" {
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ go utils.RunBashCmdAsync(
+ ctx, startRollappCmd, func() {
+ printOutput(rollappConfig, startRollappCmd)
+ err := createPidFile(RollappDirPath, startRollappCmd)
+ if err != nil {
+ pterm.Warning.Println("failed to create pid file")
+ }
+ }, parseError,
+ utils.WithLogging(utils.GetSequencerLogPath(rollappConfig)),
+ )
+ select {}
+ }
+
+ options := []string{"sequencer", "fullnode"}
+ nodeType, _ := pterm.DefaultInteractiveSelect.
+ WithDefaultText("select the settlement layer backend").
+ WithOptions(options).
+ Show()
+
+ switch nodeType {
+ case "sequencer":
+ pterm.Info.Println("getting the existing sequencer address ")
+
+ hubSeqKC := utils.KeyConfig{
+ Dir: filepath.Join(rollappConfig.Home, consts.ConfigDirName.HubKeys),
+ ID: consts.KeysIds.HubSequencer,
+ ChainBinary: consts.Executables.Dymension,
+ Type: config.SDK_ROLLAPP,
+ }
+ seqAddrInfo, err := utils.GetAddressInfoBinary(hubSeqKC, hubSeqKC.ChainBinary)
+ if err != nil {
+ return
+ }
+
+ seqAddrInfo.Address = strings.TrimSpace(seqAddrInfo.Address)
+ balance, err := utils.QueryBalance(
+ utils.ChainQueryConfig{
+ Denom: consts.Denoms.Hub,
+ RPC: rollappConfig.HubData.RPC_URL,
+ Binary: consts.Executables.Dymension,
+ }, seqAddrInfo.Address,
+ )
+ if err != nil {
+ return
+ }
+
+ minBond, _ := sequencerutils.GetMinSequencerBond()
+ var bondAmount cosmossdktypes.Coin
+ bondAmount.Denom = consts.Denoms.Hub
+
+ var desiredBond cosmossdktypes.Coin
+ desiredBondAmount, _ := pterm.DefaultInteractiveTextInput.WithDefaultText(
+ fmt.Sprintf(
+ "what is your desired bond amount? ( min: %s ) press enter to proceed with %s",
+ minBond.String(),
+ minBond.String(),
+ ),
+ ).WithDefaultValue(minBond.Amount.String()).Show()
+
+ if strings.TrimSpace(desiredBondAmount) == "" {
+ desiredBond = *minBond
+ } else {
+ desiredBondAmountInt, ok := cosmossdkmath.NewIntFromString(desiredBondAmount)
+ if !ok {
+ pterm.Error.Printf("failed to convert %s to int\n", desiredBondAmount)
+ return
+ }
+
+ desiredBond.Denom = consts.Denoms.Hub
+ desiredBond.Amount = desiredBondAmountInt
+ }
+
+ isAddrFunded := balance.Amount.Cmp(minBond.Amount.BigInt()) == 1
+
+ isInitialSequencer, err := rollapputils.IsInitialSequencer(
+ seqAddrInfo.Address,
+ rollappConfig.RollappID,
+ )
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ if !isAddrFunded {
+ pterm.DefaultSection.WithIndentCharacter("š").
+ Println("Please fund the addresses below to register and run the sequencer.")
+ seqAddrInfo.Print(utils.WithName())
+ proceed, _ := pterm.DefaultInteractiveConfirm.WithDefaultValue(true).
+ WithDefaultText(
+ "press enter when funded",
+ ).Show()
+
+ if !proceed {
+ return
+ }
+ }
+
+ if isInitialSequencer {
+ pterm.Info.Printf(
+ "the %s ( %s ) address matches the initial sequencer address of the %s\n",
+ seqAddrInfo.Name,
+ seqAddrInfo.Address,
+ rollappConfig.RollappID,
+ )
+ pterm.Info.Println(
+ "checking whether sequencer is already registered",
+ rollappConfig.RollappID,
+ )
+
+ seq, err := rollapputils.GetRegisteredSequencers(rollappConfig.RollappID)
+ if err != nil {
+ pterm.Error.Println("failed to retrieve registered sequencers: ", err)
+ }
+
+ isInitialSequencerRegistered := sequencerutils.IsRegisteredAsSequencer(
+ seq.Sequencers,
+ seqAddrInfo.Address,
+ )
+ if !isInitialSequencerRegistered {
+ pterm.Info.Println(
+ "initial sequencer address is not registered for ",
+ rollappConfig.RollappID,
+ )
+
+ err = sequencerutils.Register(rollappConfig)
+ if err != nil {
+ pterm.Error.Println("failed to register sequencer: ", err)
+ return
+ }
+ }
+ pterm.Info.Printf(
+ "%s ( %s ) is registered as a sequencer for %s\n",
+ seqAddrInfo.Name,
+ seqAddrInfo.Address,
+ rollappConfig.RollappID,
+ )
+ }
+ case "fullnode":
+ pterm.Info.Println("getting the fullnode address ")
+ }
+
+ // DA
+ oh := initconfig.NewOutputHandler(false)
+ damanager := datalayer.NewDAManager(rollappConfig.DA, rollappConfig.Home)
+ daHome := filepath.Join(
+ damanager.GetRootDirectory(),
+ consts.ConfigDirName.DALightNode,
+ )
+
+ isDaInitialized, err := globalutils.DirNotEmpty(daHome)
+ if err != nil {
+ return
+ }
+
+ var shouldOverwrite bool
+ if isDaInitialized {
+ oh.StopSpinner()
+ shouldOverwrite, err = oh.PromptOverwriteConfig(daHome)
+ if err != nil {
+ return
+ }
+ }
+
+ if shouldOverwrite {
+ pterm.Info.Println("overriding the existing da configuration")
+ err := os.RemoveAll(daHome)
+ if err != nil {
+ pterm.Error.Printf("failed to recuresively remove %s: %v\n", daHome, err)
+ return
+ }
+
+ err = os.MkdirAll(daHome, 0o755)
+ if err != nil {
+ pterm.Error.Printf("failed to create %s: %v\n", daHome, err)
+ return
+ }
+ }
+
+ if !isDaInitialized || shouldOverwrite {
+ if rollappConfig.DA == "celestia" {
+ mnemonic, err := damanager.InitializeLightNodeConfig()
+ if err != nil {
+ pterm.Error.Println("failed to initialize da light client: ", err)
+ return
+ }
+
+ daWalletInfo, err := damanager.GetDAAccountAddress()
+ if err != nil {
+ pterm.Error.Println("failed to retrieve da wallet address: ", err)
+ return
+ }
+ daWalletInfo.Mnemonic = mnemonic
+
+ if nodeType == "sequencer" {
+ pterm.DefaultSection.WithIndentCharacter("š").
+ Println("Please fund the addresses below to register and run the sequencer.")
+ daWalletInfo.Print(utils.WithMnemonic(), utils.WithName())
+
+ proceed, _ := pterm.DefaultInteractiveConfirm.WithDefaultValue(true).
+ WithDefaultText(
+ "press enter when funded",
+ ).Show()
+
+ pterm.Info.Println("updating dymint configuration")
+ daconfig := damanager.DataLayer.GetSequencerDAConfig()
+ dans := damanager.DataLayer.GetNamespaceID()
+
+ dymintConfigPath := sequencer.GetDymintFilePath(home)
+ _ = globalutils.UpdateFieldInToml(
+ dymintConfigPath,
+ "da_layer",
+ string(rollappConfig.DA),
+ )
+ _ = globalutils.UpdateFieldInToml(
+ dymintConfigPath,
+ "namespace_id",
+ dans,
+ )
+ _ = globalutils.UpdateFieldInToml(
+ dymintConfigPath,
+ "da_config",
+ daconfig,
+ )
+
+ if !proceed {
+ return
+ }
+ }
+ }
+ }
+
+ // node sync
+ // retrieve snapshot with the highest height
+
+ pterm.Info.Println("done")
+ },
+ }
+
+ return cmd
+}
+
+func printOutput(rlpCfg config.RollappConfig, cmd *exec.Cmd) {
+ seq := sequencer.GetInstance(rlpCfg)
+ pterm.DefaultSection.WithIndentCharacter("š ").
+ Println("The Rollapp sequencer is running on your local machine!")
+ fmt.Println("š Endpoints:")
+
+ fmt.Printf("EVM RPC: http://127.0.0.1:%v\n", seq.JsonRPCPort)
+ fmt.Printf("Node RPC: http://127.0.0.1:%v\n", seq.RPCPort)
+ fmt.Printf("Rest API: http://127.0.0.1:%v\n", seq.APIPort)
+
+ fmt.Println("š Log file path: ", LogPath)
+ fmt.Println("š Rollapp root dir: ", RollappDirPath)
+ fmt.Printf(
+ "š PID: %d (saved in %s)\n",
+ cmd.Process.Pid,
+ filepath.Join(rlpCfg.Home, "rollapputils.pid"),
+ )
+}
+
+func createPidFile(path string, cmd *exec.Cmd) error {
+ pidPath := filepath.Join(path, "rollapputils.pid")
+ file, err := os.Create(pidPath)
+ if err != nil {
+ fmt.Println("Error creating file:", err)
+ return err
+ }
+ // nolint errcheck
+ defer file.Close()
+
+ pid := cmd.Process.Pid
+ _, err = file.WriteString(fmt.Sprintf("%d", pid))
+ if err != nil {
+ fmt.Println("Error writing to file:", err)
+ return err
+ }
+
+ return nil
+}
+
+func parseError(errMsg string) string {
+ lines := strings.Split(errMsg, "\n")
+ if len(lines) > 0 &&
+ lines[0] == "Error: failed to initialize database: resource temporarily unavailable" {
+ return "The Rollapp sequencer is already running on your local machine. Only one sequencer can run at any given time."
+ }
+ return errMsg
+}
diff --git a/cmd/rollapp/start/start.go b/cmd/rollapp/start/start.go
index 18bddea4..5dd6b922 100644
--- a/cmd/rollapp/start/start.go
+++ b/cmd/rollapp/start/start.go
@@ -1,115 +1,76 @@
package start
-import (
- "context"
- "fmt"
- "math/big"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
-
- "github.com/pterm/pterm"
- "github.com/spf13/cobra"
-
- initconfig "github.com/dymensionxyz/roller/cmd/config/init"
- "github.com/dymensionxyz/roller/cmd/consts"
- "github.com/dymensionxyz/roller/cmd/utils"
- "github.com/dymensionxyz/roller/config"
- "github.com/dymensionxyz/roller/sequencer"
- globalutils "github.com/dymensionxyz/roller/utils"
-)
-
-// TODO: Test sequencing on 35-C and update the price
-var OneDaySequencePrice = big.NewInt(1)
-
-var (
- RollappDirPath string
- LogPath string
-)
-
-func Cmd() *cobra.Command {
- cmd := &cobra.Command{
- Use: "start",
- Short: "Show the status of the sequencer on the local machine.",
- Run: func(cmd *cobra.Command, args []string) {
- err := initconfig.AddFlags(cmd)
- if err != nil {
- pterm.Error.Println("failed to add flags")
- return
- }
- home, err := globalutils.ExpandHomePath(cmd.Flag(utils.FlagNames.Home).Value.String())
- if err != nil {
- pterm.Error.Println("failed to expand home directory")
- return
- }
-
- rollappConfig, err := config.LoadConfigFromTOML(home)
- utils.PrettifyErrorIfExists(err)
-
- seq := sequencer.GetInstance(rollappConfig)
- startRollappCmd := seq.GetStartCmd()
-
- LogPath = filepath.Join(rollappConfig.Home, consts.ConfigDirName.Rollapp, "rollapp.log")
- RollappDirPath = filepath.Join(rollappConfig.Home, consts.ConfigDirName.Rollapp)
-
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
- go utils.RunBashCmdAsync(
- ctx, startRollappCmd, func() {
- printOutput(rollappConfig, startRollappCmd)
- err := createPidFile(RollappDirPath, startRollappCmd)
- if err != nil {
- pterm.Warning.Println("failed to create pid file")
- }
- }, parseError,
- utils.WithLogging(utils.GetSequencerLogPath(rollappConfig)),
- )
- select {}
- },
- }
- return cmd
-}
-
-func printOutput(rlpCfg config.RollappConfig, cmd *exec.Cmd) {
- seq := sequencer.GetInstance(rlpCfg)
- fmt.Println("š The Rollapp sequencer is running on your local machine!")
- fmt.Println("š Endpoints:")
-
- fmt.Printf("š EVM RPC: http://0.0.0.0:%v\n", seq.JsonRPCPort)
- fmt.Printf("š Node RPC: http://0.0.0.0:%v\n", seq.RPCPort)
- fmt.Printf("š Rest API: http://0.0.0.0:%v\n", seq.APIPort)
-
- fmt.Println("š Log file path: ", LogPath)
- fmt.Println("š Rollapp root dir: ", RollappDirPath)
- fmt.Println("š PID: ", cmd.Process.Pid)
-}
-
-func createPidFile(path string, cmd *exec.Cmd) error {
- pidPath := filepath.Join(path, "rollapp.pid")
- file, err := os.Create(pidPath)
- if err != nil {
- fmt.Println("Error creating file:", err)
- return err
- }
- // nolint errcheck
- defer file.Close()
-
- pid := cmd.Process.Pid
- _, err = file.WriteString(fmt.Sprintf("%d", pid))
- if err != nil {
- fmt.Println("Error writing to file:", err)
- return err
- }
-
- return nil
-}
-
-func parseError(errMsg string) string {
- lines := strings.Split(errMsg, "\n")
- if len(lines) > 0 &&
- lines[0] == "Error: failed to initialize database: resource temporarily unavailable" {
- return "The Rollapp sequencer is already running on your local machine. Only one sequencer can run at any given time."
- }
- return errMsg
-}
+// import (
+// "fmt"
+// "math/big"
+// "os"
+// "os/exec"
+// "path/filepath"
+// "strings"
+//
+// "github.com/spf13/cobra"
+//
+// "github.com/dymensionxyz/roller/config"
+// "github.com/dymensionxyz/roller/sequencer"
+// )
+//
+// // TODO: Test sequencing on 35-C and update the price
+// var OneDaySequencePrice = big.NewInt(1)
+//
+// var (
+// RollappDirPath string
+// LogPath string
+// )
+//
+// func Cmd() *cobra.Command {
+// cmd := &cobra.Command{
+// Use: "start",
+// Short: "Show the status of the sequencer on the local machine.",
+// Run: func(cmd *cobra.Command, args []string) {
+// },
+// }
+// return cmd
+// }
+//
+// func printOutput(rlpCfg config.RollappConfig, cmd *exec.Cmd) {
+// seq := sequencer.GetInstance(rlpCfg)
+// fmt.Println("š The Rollapp sequencer is running on your local machine!")
+// fmt.Println("š Endpoints:")
+//
+// fmt.Printf("š EVM RPC: http://0.0.0.0:%v\n", seq.JsonRPCPort)
+// fmt.Printf("š Node RPC: http://0.0.0.0:%v\n", seq.RPCPort)
+// fmt.Printf("š Rest API: http://0.0.0.0:%v\n", seq.APIPort)
+//
+// fmt.Println("š Log file path: ", LogPath)
+// fmt.Println("š Rollapp root dir: ", RollappDirPath)
+// fmt.Println("š PID: ", cmd.Process.Pid)
+// }
+//
+// func createPidFile(path string, cmd *exec.Cmd) error {
+// pidPath := filepath.Join(path, "rollapp.pid")
+// file, err := os.Create(pidPath)
+// if err != nil {
+// fmt.Println("Error creating file:", err)
+// return err
+// }
+// // nolint errcheck
+// defer file.Close()
+//
+// pid := cmd.Process.Pid
+// _, err = file.WriteString(fmt.Sprintf("%d", pid))
+// if err != nil {
+// fmt.Println("Error writing to file:", err)
+// return err
+// }
+//
+// return nil
+// }
+//
+// func parseError(errMsg string) string {
+// lines := strings.Split(errMsg, "\n")
+// if len(lines) > 0 &&
+// lines[0] == "Error: failed to initialize database: resource temporarily unavailable" {
+// return "The Rollapp sequencer is already running on your local machine. Only one sequencer can run at any given time."
+// }
+// return errMsg
+// }
diff --git a/cmd/rollapp/status/status.go b/cmd/rollapp/status/status.go
index e8395036..834449ce 100644
--- a/cmd/rollapp/status/status.go
+++ b/cmd/rollapp/status/status.go
@@ -16,7 +16,7 @@ func Cmd() *cobra.Command {
Short: "Show the status of the sequencer on the local machine.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rollappConfig, err := config.LoadConfigFromTOML(home)
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
if err != nil {
fmt.Println("failed to load config:", err)
return
diff --git a/cmd/run/run.go b/cmd/run/run.go
index d3b3c35f..503cb8c8 100644
--- a/cmd/run/run.go
+++ b/cmd/run/run.go
@@ -9,7 +9,7 @@ import (
"github.com/spf13/cobra"
relayer_run "github.com/dymensionxyz/roller/cmd/relayer/run"
- rollapp_start "github.com/dymensionxyz/roller/cmd/rollapp/start"
+ rollapp_run "github.com/dymensionxyz/roller/cmd/rollapp/run"
"github.com/dymensionxyz/roller/cmd/utils"
"github.com/dymensionxyz/roller/config"
datalayer "github.com/dymensionxyz/roller/data_layer"
@@ -31,7 +31,7 @@ func Cmd() *cobra.Command {
Short: "Runs the rollapp on the local machine.",
Run: func(cmd *cobra.Command, args []string) {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rollappConfig, err := config.LoadConfigFromTOML(home)
+ rollappConfig, err := config.LoadRollerConfigFromTOML(home)
utils.PrettifyErrorIfExists(err)
utils.RequireMigrateIfNeeded(rollappConfig)
logger := utils.GetRollerLogger(rollappConfig.Home)
@@ -139,7 +139,7 @@ func verifyBalances(rollappConfig config.RollappConfig) {
utils.PrettifyErrorIfExists(err)
sequencerInsufficientBalances, err := utils.GetSequencerInsufficientAddrs(
- rollappConfig, rollapp_start.OneDaySequencePrice,
+ rollappConfig, rollapp_run.OneDaySequencePrice,
)
utils.PrettifyErrorIfExists(err)
insufficientBalances = append(insufficientBalances, sequencerInsufficientBalances...)
@@ -147,5 +147,5 @@ func verifyBalances(rollappConfig config.RollappConfig) {
rlyAddrs, err := relayer_run.GetRlyHubInsufficientBalances(rollappConfig)
utils.PrettifyErrorIfExists(err)
insufficientBalances = append(insufficientBalances, rlyAddrs...)
- utils.PrintInsufficientBalancesIfAny(insufficientBalances, rollappConfig)
+ utils.PrintInsufficientBalancesIfAny(insufficientBalances)
}
diff --git a/cmd/run/ui.go b/cmd/run/ui.go
index eefb8816..40dea9fa 100644
--- a/cmd/run/ui.go
+++ b/cmd/run/ui.go
@@ -6,10 +6,11 @@ import (
"sort"
"strings"
+ termui "github.com/gizak/termui/v3"
+ "github.com/gizak/termui/v3/widgets"
+
"github.com/dymensionxyz/roller/config"
servicemanager "github.com/dymensionxyz/roller/utils/service_manager"
- "github.com/gizak/termui/v3"
- "github.com/gizak/termui/v3/widgets"
)
func initializeUI() {
diff --git a/cmd/tx/claim/claim.go b/cmd/tx/claim/claim.go
index 208693bc..55b67dac 100644
--- a/cmd/tx/claim/claim.go
+++ b/cmd/tx/claim/claim.go
@@ -18,14 +18,17 @@ func Cmd() *cobra.Command {
Short: "Send the DYM rewards associated with the given private key to the destination address",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
- shouldProceed, err := utils.PromptBool(fmt.Sprintf(
- "This command will transfer all Rollapp rewards on the mainnet to %s. Please note that once"+
- " initiated, this action cannot be undone. Do you wish to proceed",
- args[1],
- ))
+ shouldProceed, err := utils.PromptBool(
+ fmt.Sprintf(
+ "This command will transfer all Rollapp rewards on the mainnet to %s. Please note that once"+
+ " initiated, this action cannot be undone. Do you wish to proceed",
+ args[1],
+ ),
+ )
if err != nil {
return err
}
+
if !shouldProceed {
return nil
}
@@ -33,28 +36,38 @@ func Cmd() *cobra.Command {
if err != nil {
return err
}
- importKeyCmd := exec.Command(consts.Executables.Simd, "keys", "import-hex",
- consts.KeysIds.HubSequencer, args[0], "--home", tempDir)
+
+ importKeyCmd := exec.Command(
+ consts.Executables.Simd, "keys", "import-hex",
+ consts.KeysIds.HubSequencer, args[0], "--home", tempDir,
+ )
_, err = utils.ExecBashCommandWithStdout(importKeyCmd)
if err != nil {
return err
}
- sequencerAddr, err := utils.GetAddressBinary(utils.KeyConfig{
- ID: consts.KeysIds.HubSequencer,
- Dir: tempDir,
- }, consts.Executables.Dymension)
+
+ sequencerAddr, err := utils.GetAddressBinary(
+ utils.KeyConfig{
+ ID: consts.KeysIds.HubSequencer,
+ Dir: tempDir,
+ }, consts.Executables.Dymension,
+ )
if err != nil {
return err
}
+
mainnetHub := consts.Hubs[consts.MainnetHubName]
- sequencerBalance, err := utils.QueryBalance(utils.ChainQueryConfig{
- Binary: consts.Executables.Dymension,
- Denom: consts.Denoms.Hub,
- RPC: mainnetHub.RPC_URL,
- }, sequencerAddr.Address)
+ sequencerBalance, err := utils.QueryBalance(
+ utils.ChainQueryConfig{
+ Binary: consts.Executables.Dymension,
+ Denom: consts.Denoms.Hub,
+ RPC: mainnetHub.RPC_URL,
+ }, sequencerAddr,
+ )
if err != nil {
return err
}
+
// Calculated by sending a tx on Froopyland and see how much fees were paid
txGasPrice := big.NewInt(50000)
totalBalanceMinusFees := new(big.Int).Sub(sequencerBalance.Amount, txGasPrice)
@@ -66,6 +79,7 @@ func Cmd() *cobra.Command {
)
}
rewardsAmountStr := totalBalanceMinusFees.String() + consts.Denoms.Hub
+
sendAllFundsCmd := exec.Command(
consts.Executables.Dymension,
"tx",
@@ -90,6 +104,7 @@ func Cmd() *cobra.Command {
if err != nil {
return err
}
+
fmt.Printf("š Successfully claimed %s to %s!\n", rewardsAmountStr, args[1])
return nil
},
diff --git a/cmd/tx/fund_faucet/fund_faucet.go b/cmd/tx/fund_faucet/fund_faucet.go
index 247eed31..92fa5185 100644
--- a/cmd/tx/fund_faucet/fund_faucet.go
+++ b/cmd/tx/fund_faucet/fund_faucet.go
@@ -45,7 +45,7 @@ func Cmd() *cobra.Command {
func fundFaucet(cmd *cobra.Command, args []string) error {
home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rlpCfg, err := config.LoadConfigFromTOML(home)
+ rlpCfg, err := config.LoadRollerConfigFromTOML(home)
if err != nil {
return err
}
@@ -60,8 +60,10 @@ func fundFaucet(cmd *cobra.Command, args []string) error {
rly := relayer.NewRelayer(rlpCfg.Home, rlpCfg.RollappID, rlpCfg.HubData.ID)
_, _, err = rly.LoadActiveChannel()
if err != nil || rly.SrcChannel == "" {
- return errors.New("failed to load relayer channel. Please make sure that the rollapp is " +
- "running on your local machine and a relayer channel has been established")
+ return errors.New(
+ "failed to load relayer channel. Please make sure that the rollapp is " +
+ "running on your local machine and a relayer channel has been established",
+ )
}
faucetTokenAmountStr := cmd.Flag(flagNames.tokenAmount).Value.String()
faucetTokensAmount, success := new(big.Int).SetString(faucetTokenAmountStr, 10)
@@ -70,8 +72,10 @@ func fundFaucet(cmd *cobra.Command, args []string) error {
}
actualFaucetAmount := faucetTokensAmount.Mul(
faucetTokensAmount,
- new(big.Int).Exp(big.NewInt(10),
- new(big.Int).SetUint64(uint64(rlpCfg.Decimals)), nil),
+ new(big.Int).Exp(
+ big.NewInt(10),
+ new(big.Int).SetUint64(uint64(rlpCfg.Decimals)), nil,
+ ),
)
fundFaucetCmd := exec.Command(
rlpCfg.RollappBinary,
@@ -87,8 +91,10 @@ func fundFaucet(cmd *cobra.Command, args []string) error {
"--keyring-backend",
"test",
"--home",
- filepath.Join(rlpCfg.Home,
- consts.ConfigDirName.Rollapp),
+ filepath.Join(
+ rlpCfg.Home,
+ consts.ConfigDirName.Rollapp,
+ ),
"--broadcast-mode",
"block",
"-y",
diff --git a/cmd/tx/register/bash_commands.go b/cmd/tx/register/bash_commands.go
deleted file mode 100644
index f467d7b6..00000000
--- a/cmd/tx/register/bash_commands.go
+++ /dev/null
@@ -1,64 +0,0 @@
-package register
-
-import (
- "fmt"
- "os/exec"
- "path/filepath"
-
- "github.com/dymensionxyz/roller/cmd/utils"
- "github.com/dymensionxyz/roller/config"
-
- "github.com/dymensionxyz/roller/cmd/consts"
-)
-
-func getRegisterRollappCmd(rollappConfig config.RollappConfig) *exec.Cmd {
- tokenMetadataPath := filepath.Join(
- rollappConfig.Home,
- consts.ConfigDirName.Rollapp,
- "config",
- "tokenmetadata.json",
- )
- cmdArgs := []string{
- "tx", "rollapp", "create-rollapp", rollappConfig.RollappID, "3", `{"Addresses":[]}`, tokenMetadataPath,
- }
- cmdArgs = append(cmdArgs, getCommonDymdTxFlags(rollappConfig)...)
- return exec.Command(
- consts.Executables.Dymension, cmdArgs...,
- )
-}
-
-func getRegisterSequencerCmd(rollappConfig config.RollappConfig) (*exec.Cmd, error) {
- seqPubKey, err := utils.GetSequencerPubKey(rollappConfig)
- if err != nil {
- return nil, err
- }
-
- bondAmount := rollappConfig.HubData.SEQ_MIN_BOND
-
- description := fmt.Sprintf(
- `{"Moniker":"%s","Identity":"","Website":"","SecurityContact":"","Details":""}`,
- consts.KeysIds.HubSequencer,
- )
- cmdArgs := []string{
- "tx", "sequencer", "create-sequencer",
- seqPubKey,
- rollappConfig.RollappID,
- description,
- bondAmount,
- }
-
- cmdArgs = append(cmdArgs, getCommonDymdTxFlags(rollappConfig)...)
- return exec.Command(consts.Executables.Dymension, cmdArgs...), nil
-}
-
-func getCommonDymdTxFlags(rollappConfig config.RollappConfig) []string {
- commonFlags := utils.GetCommonDymdFlags(rollappConfig)
- txArgs := []string{
- "--from", consts.KeysIds.HubSequencer,
- "--keyring-backend", "test",
- "--keyring-dir", filepath.Join(rollappConfig.Home, consts.ConfigDirName.HubKeys),
- "--yes", "--broadcast-mode", "block", "--chain-id", rollappConfig.HubData.ID,
- "--gas-prices", rollappConfig.HubData.GAS_PRICE + consts.Denoms.Hub,
- }
- return append(commonFlags, txArgs...)
-}
diff --git a/cmd/tx/register/register.go b/cmd/tx/register/register.go
deleted file mode 100644
index d6815e9c..00000000
--- a/cmd/tx/register/register.go
+++ /dev/null
@@ -1,113 +0,0 @@
-package register
-
-import (
- "bytes"
- "errors"
- "fmt"
- "math/big"
- "os/exec"
-
- "github.com/spf13/cobra"
-
- "github.com/dymensionxyz/roller/cmd/consts"
- "github.com/dymensionxyz/roller/cmd/tx/tx_utils"
- "github.com/dymensionxyz/roller/cmd/utils"
- "github.com/dymensionxyz/roller/config"
-)
-
-// TODO: Test registration on 35-C and update the price
-var registerAdymPrice = big.NewInt(1)
-
-var flagNames = struct {
- NoOutput string
- forceSeqRegistration string
-}{
- NoOutput: "no-output",
- forceSeqRegistration: "force",
-}
-
-func Cmd() *cobra.Command {
- registerCmd := &cobra.Command{
- Use: "register",
- Short: "Registers the rollapp and the sequencer to the Dymension hub.",
- Run: func(cmd *cobra.Command, args []string) {
- utils.PrettifyErrorIfExists(register(cmd, args))
- },
- }
-
- registerCmd.Flags().
- BoolP(flagNames.forceSeqRegistration, "f", false, "force sequencer registration even if the rollapp is already registered")
- registerCmd.Flags().BoolP(flagNames.NoOutput, "", false, "Register the rollapp without output.")
- return registerCmd
-}
-
-func register(cmd *cobra.Command, args []string) error {
- noOutput, err := cmd.Flags().GetBool(flagNames.NoOutput)
- outputHandler := utils.NewOutputHandler(noOutput)
- if err != nil {
- return err
- }
- defer outputHandler.StopSpinner()
- utils.RunOnInterrupt(outputHandler.StopSpinner)
- outputHandler.StartSpinner(consts.SpinnerMsgs.BalancesVerification)
- home := cmd.Flag(utils.FlagNames.Home).Value.String()
- rollappConfig, err := config.LoadConfigFromTOML(home)
- if err != nil {
- return err
- }
-
- // TODO: should check for sequencer bond requirements as well
- notFundedAddrs, err := utils.GetSequencerInsufficientAddrs(rollappConfig, registerAdymPrice)
- if err != nil {
- return err
- }
- if len(notFundedAddrs) > 0 {
- outputHandler.StopSpinner()
- utils.PrintInsufficientBalancesIfAny(notFundedAddrs, rollappConfig)
- }
- outputHandler.StartSpinner(" Registering RollApp to hub...\n")
- registerRollappCmd := getRegisterRollappCmd(rollappConfig)
- if err := runcCommandWithErrorChecking(registerRollappCmd); err != nil {
- if cmd.Flag(flagNames.forceSeqRegistration).Changed {
- fmt.Println("RollApp is already registered. Attempting to register sequencer anyway...")
- } else {
- return err
- }
- }
- registerSequencerCmd, err := getRegisterSequencerCmd(rollappConfig)
- if err != nil {
- return err
- }
- outputHandler.StartSpinner(" Registering RollApp sequencer...\n")
- err = runcCommandWithErrorChecking(registerSequencerCmd)
- if err != nil {
- return err
- }
- outputHandler.StopSpinner()
- outputHandler.DisplayMessage(
- fmt.Sprintf(
- "š Rollapp '%s' has been successfully registered on the hub.",
- rollappConfig.RollappID,
- ),
- )
- return nil
-}
-
-// TODO: probably should be moved to utils
-func runcCommandWithErrorChecking(cmd *exec.Cmd) error {
- var stdout bytes.Buffer
- var stderr bytes.Buffer
- cmd.Stdout = &stdout
- cmd.Stderr = &stderr
- cmdExecErr := cmd.Run()
- if len(stderr.String()) > 0 {
- return errors.New(stderr.String())
- }
- if cmdExecErr != nil {
- return cmdExecErr
- }
- if err := tx_utils.CheckTxStdOut(stdout); err != nil {
- return err
- }
- return nil
-}
diff --git a/cmd/tx/tx.go b/cmd/tx/tx.go
index 55ae9cd1..f1ba882e 100644
--- a/cmd/tx/tx.go
+++ b/cmd/tx/tx.go
@@ -1,10 +1,10 @@
package tx
import (
+ "github.com/spf13/cobra"
+
"github.com/dymensionxyz/roller/cmd/tx/claim"
"github.com/dymensionxyz/roller/cmd/tx/fund_faucet"
- "github.com/dymensionxyz/roller/cmd/tx/register"
- "github.com/spf13/cobra"
)
func Cmd() *cobra.Command {
@@ -12,7 +12,7 @@ func Cmd() *cobra.Command {
Use: "tx",
Short: "Commands for sending transactions with Roller",
}
- cmd.AddCommand(register.Cmd())
+ // cmd.AddCommand(register.Cmd())
cmd.AddCommand(fund_faucet.Cmd())
cmd.AddCommand(claim.Cmd())
return cmd
diff --git a/cmd/utils/bash_commands.go b/cmd/utils/bash_commands.go
index 6b83058d..977a1c12 100644
--- a/cmd/utils/bash_commands.go
+++ b/cmd/utils/bash_commands.go
@@ -7,7 +7,9 @@ import (
"errors"
"fmt"
"io"
+ "os"
"os/exec"
+ "strings"
"sync"
"time"
@@ -203,3 +205,68 @@ func ExecBashCmdFollow(cmd *exec.Cmd) error {
return nil
}
+
+// TODO: generalize
+func ExecBashCommandWithInput(cmd *exec.Cmd) error {
+ // Create pipes for stdin, stdout, and stderr
+ stdin, err := cmd.StdinPipe()
+ if err != nil {
+ fmt.Println("Error creating stdin pipe:", err)
+ return err
+ }
+ stdout, err := cmd.StdoutPipe()
+ if err != nil {
+ fmt.Println("Error creating stdout pipe:", err)
+ return err
+ }
+ stderr, err := cmd.StderrPipe()
+ if err != nil {
+ fmt.Println("Error creating stderr pipe:", err)
+ return err
+ }
+
+ // Start the command
+ if err := cmd.Start(); err != nil {
+ fmt.Println("Error starting command:", err)
+ return err
+ }
+
+ // Create a scanner to read command output
+ scanner := bufio.NewScanner(io.MultiReader(stdout, stderr))
+
+ // Read output and handle user input
+ for scanner.Scan() {
+ line := scanner.Text()
+ fmt.Println(line)
+
+ // Check if the line is asking for confirmation
+ if strings.Contains(line, "signatures") {
+ fmt.Print("Do you want to continue? (y/n): ")
+ reader := bufio.NewReader(os.Stdin)
+ input, _ := reader.ReadString('\n')
+ input = strings.TrimSpace(input)
+ fmt.Println("input:", input)
+
+ if input == "y" || input == "Y" {
+ _, err := stdin.Write([]byte("y\n"))
+ if err != nil {
+ return err
+ }
+ } else {
+ _, err := stdin.Write([]byte("n\n"))
+ if err != nil {
+ return err
+ }
+ break
+ }
+ }
+ }
+
+ // Wait for the command to finish
+ if err := cmd.Wait(); err != nil {
+ fmt.Println("Command finished with error:", err)
+ return err
+ }
+
+ return nil
+}
diff --git a/cmd/utils/fetch_accounts_data.go b/cmd/utils/fetch_accounts_data.go
index 636a9961..bc71097a 100644
--- a/cmd/utils/fetch_accounts_data.go
+++ b/cmd/utils/fetch_accounts_data.go
@@ -8,25 +8,29 @@ import (
)
func GetSequencerData(cfg config.RollappConfig) ([]AccountData, error) {
- seqAddrInfo, err := GetAddressBinary(KeyConfig{
- ID: consts.KeysIds.HubSequencer,
- Dir: filepath.Join(cfg.Home, consts.ConfigDirName.HubKeys),
- }, consts.Executables.Dymension)
+ seqAddr, err := GetAddressBinary(
+ KeyConfig{
+ ID: consts.KeysIds.HubSequencer,
+ Dir: filepath.Join(cfg.Home, consts.ConfigDirName.HubKeys),
+ }, consts.Executables.Dymension,
+ )
if err != nil {
return nil, err
}
- sequencerBalance, err := QueryBalance(ChainQueryConfig{
- Binary: consts.Executables.Dymension,
- Denom: consts.Denoms.Hub,
- RPC: cfg.HubData.RPC_URL,
- }, seqAddrInfo.Address)
+ sequencerBalance, err := QueryBalance(
+ ChainQueryConfig{
+ Binary: consts.Executables.Dymension,
+ Denom: consts.Denoms.Hub,
+ RPC: cfg.HubData.RPC_URL,
+ }, seqAddr,
+ )
if err != nil {
return nil, err
}
return []AccountData{
{
- Address: seqAddrInfo.Address,
+ Address: seqAddr,
Balance: sequencerBalance,
},
}, nil
diff --git a/cmd/utils/key_info.go b/cmd/utils/key_info.go
index a3ab2782..62508526 100644
--- a/cmd/utils/key_info.go
+++ b/cmd/utils/key_info.go
@@ -61,7 +61,7 @@ func ParseAddressFromOutput(output bytes.Buffer) (*KeyInfo, error) {
return key, nil
}
-func GetAddressBinary(keyConfig KeyConfig, binaryPath string) (*KeyInfo, error) {
+func GetAddressInfoBinary(keyConfig KeyConfig, binaryPath string) (*KeyInfo, error) {
showKeyCommand := exec.Command(
binaryPath,
"keys",
@@ -81,6 +81,27 @@ func GetAddressBinary(keyConfig KeyConfig, binaryPath string) (*KeyInfo, error)
return ParseAddressFromOutput(output)
}
+func GetAddressBinary(keyConfig KeyConfig, binaryPath string) (string, error) {
+ showKeyCommand := exec.Command(
+ binaryPath,
+ "keys",
+ "show",
+ keyConfig.ID,
+ "--address",
+ "--keyring-backend",
+ "test",
+ "--keyring-dir",
+ keyConfig.Dir,
+ )
+
+ output, err := ExecBashCommandWithStdout(showKeyCommand)
+ if err != nil {
+ return "", err
+ }
+
+ return output.String(), nil
+}
+
// TODO: refactor into options, with title
func PrintAddressesWithTitle(addresses []KeyInfo) {
pterm.DefaultSection.WithIndentCharacter("š").Println("Addresses")
diff --git a/cmd/utils/output.go b/cmd/utils/output.go
index 21e992d5..0f02d65e 100644
--- a/cmd/utils/output.go
+++ b/cmd/utils/output.go
@@ -10,13 +10,10 @@ import (
"github.com/briandowns/spinner"
"github.com/manifoldco/promptui"
"github.com/olekukonko/tablewriter"
-
- "github.com/dymensionxyz/roller/config"
)
func PrintInsufficientBalancesIfAny(
addressesData []NotFundedAddressData,
- config config.RollappConfig,
) {
if len(addressesData) == 0 {
return
@@ -75,6 +72,7 @@ func PromptBool(msg string) (bool, error) {
Label: msg,
IsConfirm: true,
}
+
_, err := prompt.Run()
if err != nil {
if err == promptui.ErrAbort {
diff --git a/config/config.go b/config/config.go
index 3be3b60b..a2b7cde7 100644
--- a/config/config.go
+++ b/config/config.go
@@ -52,7 +52,6 @@ type HubData = struct {
RPC_URL string `toml:"rpc_url"`
ARCHIVE_RPC_URL string `toml:"archive_rpc_url"`
GAS_PRICE string `toml:"gas_price"`
- SEQ_MIN_BOND string `toml:"seq_min_bond"`
}
func (c RollappConfig) Validate() error {
diff --git a/config/toml.go b/config/toml.go
index cd6ec1e6..6299afdb 100644
--- a/config/toml.go
+++ b/config/toml.go
@@ -4,7 +4,7 @@ import (
"os"
"path/filepath"
- "github.com/pelletier/go-toml"
+ toml "github.com/pelletier/go-toml"
)
func WriteConfigToTOML(rlpCfg RollappConfig) error {
@@ -13,11 +13,11 @@ func WriteConfigToTOML(rlpCfg RollappConfig) error {
return err
}
// nolint:gofumpt
- return os.WriteFile(filepath.Join(rlpCfg.Home, RollerConfigFileName), tomlBytes, 0644)
+ return os.WriteFile(filepath.Join(rlpCfg.Home, RollerConfigFileName), tomlBytes, 0o644)
}
// TODO: should be called from root command
-func LoadConfigFromTOML(root string) (RollappConfig, error) {
+func LoadRollerConfigFromTOML(root string) (RollappConfig, error) {
var config RollappConfig
tomlBytes, err := os.ReadFile(filepath.Join(root, RollerConfigFileName))
if err != nil {
@@ -30,3 +30,12 @@ func LoadConfigFromTOML(root string) (RollappConfig, error) {
return config, nil
}
+
+func LoadConfigFromTOML(path string) ([]byte, error) {
+ tomlBytes, err := os.ReadFile(path)
+ if err != nil {
+ return tomlBytes, err
+ }
+
+ return tomlBytes, nil
+}
diff --git a/data_layer/celestia/celestia.go b/data_layer/celestia/celestia.go
index 8053b2ca..22257222 100644
--- a/data_layer/celestia/celestia.go
+++ b/data_layer/celestia/celestia.go
@@ -9,6 +9,9 @@ import (
"path/filepath"
"strings"
+ cosmossdkmath "cosmossdk.io/math"
+ cosmossdktypes "github.com/cosmos/cosmos-sdk/types"
+
"github.com/dymensionxyz/roller/cmd/consts"
"github.com/dymensionxyz/roller/cmd/utils"
"github.com/dymensionxyz/roller/config"
@@ -17,9 +20,9 @@ import (
// TODO: test how much is enough to run the LC for one day and set the minimum balance accordingly.
const (
- CelestiaRestApiEndpoint = "https://api.celestia-arabica-11.com"
- DefaultCelestiaRPC = "validator-1.celestia-arabica-11.com"
- DefaultCelestiaNetwork = "arabica"
+ DefaultCelestiaRestApiEndpoint = "https://api.celestia-mocha.com"
+ DefaultCelestiaRPC = "rpc.celestia-mocha.com"
+ DefaultCelestiaNetwork = "mocha"
)
var lcMinBalance = big.NewInt(1)
@@ -38,8 +41,8 @@ func NewCelestia(home string) *Celestia {
}
}
-func (c2 *Celestia) GetPrivateKey() (string, error) {
- exportKeyCmd := c2.GetExportKeyCmd()
+func (c *Celestia) GetPrivateKey() (string, error) {
+ exportKeyCmd := c.GetExportKeyCmd()
out, err := utils.ExecBashCommandWithStdErr(exportKeyCmd)
if err != nil {
return "", err
@@ -47,15 +50,12 @@ func (c2 *Celestia) GetPrivateKey() (string, error) {
return out.String(), nil
}
-func (c2 *Celestia) SetMetricsEndpoint(endpoint string) {
- c2.metricsEndpoint = endpoint
+func (c *Celestia) SetMetricsEndpoint(endpoint string) {
+ c.metricsEndpoint = endpoint
}
type BalanceResponse struct {
- Result struct {
- Denom string `json:"denom"`
- Amount string `json:"amount"`
- } `json:"result"`
+ Result cosmossdktypes.Coin `json:"result"`
}
func (c *Celestia) GetStatus(rlpCfg config.RollappConfig) string {
@@ -76,13 +76,20 @@ func (c *Celestia) GetStatus(rlpCfg config.RollappConfig) string {
return "Stopped, Restarting..."
}
- if strings.TrimSpace(resp.Result.Amount) != "0" {
+ if resp.Result.Amount != cosmossdkmath.NewInt(0) {
return "active"
}
+ // if strings.TrimSpace(resp.Result.Amount) != 0 {
+ // return "active"
+ // }
return "Stopped, Restarting..."
}
+func (c *Celestia) GetRootDirectory() string {
+ return c.Root
+}
+
func (c *Celestia) getRPCPort() string {
if c.RPCPort != "" {
return c.RPCPort
@@ -119,10 +126,13 @@ func (c *Celestia) GetDAAccountAddress() (*utils.KeyInfo, error) {
}
func (c *Celestia) InitializeLightNodeConfig() (string, error) {
- initLightNodeCmd := exec.Command(consts.Executables.Celestia, "light", "init",
+ // c.Root should be the directory of the da, not the roller.
+ initLightNodeCmd := exec.Command(
+ consts.Executables.Celestia, "light", "init",
"--p2p.network",
DefaultCelestiaNetwork,
- "--node.store", filepath.Join(c.Root, consts.ConfigDirName.DALightNode))
+ "--node.store", filepath.Join(c.Root, consts.ConfigDirName.DALightNode),
+ )
// err := initLightNodeCmd.Run()
out, err := utils.ExecBashCommandWithStdout(initLightNodeCmd)
if err != nil {
@@ -165,7 +175,7 @@ func (c *Celestia) getDAAccData(config.RollappConfig) (*utils.AccountData, error
}
restQueryUrl := fmt.Sprintf(
"%s/cosmos/bank/v1beta1/balances/%s",
- CelestiaRestApiEndpoint, celAddress.Address,
+ DefaultCelestiaRestApiEndpoint, celAddress.Address,
)
balancesJson, err := utils.RestQueryJson(restQueryUrl)
if err != nil {
@@ -193,7 +203,7 @@ func (c *Celestia) GetDAAccData(cfg config.RollappConfig) ([]utils.AccountData,
}
func (c *Celestia) GetKeyName() string {
- return "my_celes_key"
+ return consts.KeysIds.Celestia
}
func (c *Celestia) GetExportKeyCmd() *exec.Cmd {
@@ -212,14 +222,16 @@ func (c *Celestia) CheckDABalance() ([]utils.NotFundedAddressData, error) {
var insufficientBalances []utils.NotFundedAddressData
if accData.Balance.Amount.Cmp(lcMinBalance) < 0 {
- insufficientBalances = append(insufficientBalances, utils.NotFundedAddressData{
- Address: accData.Address,
- CurrentBalance: accData.Balance.Amount,
- RequiredBalance: lcMinBalance,
- KeyName: c.GetKeyName(),
- Denom: consts.Denoms.Celestia,
- Network: DefaultCelestiaNetwork,
- })
+ insufficientBalances = append(
+ insufficientBalances, utils.NotFundedAddressData{
+ Address: accData.Address,
+ CurrentBalance: accData.Balance.Amount,
+ RequiredBalance: lcMinBalance,
+ KeyName: c.GetKeyName(),
+ Denom: consts.Denoms.Celestia,
+ Network: DefaultCelestiaNetwork,
+ },
+ )
}
return insufficientBalances, nil
}
@@ -230,7 +242,7 @@ func (c *Celestia) GetStartDACmd() *exec.Cmd {
"--core.ip", c.rpcEndpoint,
"--node.store", filepath.Join(c.Root, consts.ConfigDirName.DALightNode),
"--gateway",
- //"--gateway.deprecated-endpoints",
+ // "--gateway.deprecated-endpoints",
"--p2p.network", DefaultCelestiaNetwork,
}
if c.metricsEndpoint != "" {
@@ -251,6 +263,10 @@ func (c *Celestia) GetNetworkName() string {
return DefaultCelestiaNetwork
}
+func (c *Celestia) GetNamespaceID() string {
+ return c.NamespaceID
+}
+
func (c *Celestia) getAuthToken() (string, error) {
getAuthTokenCmd := exec.Command(
consts.Executables.Celestia,
@@ -280,7 +296,8 @@ func (c *Celestia) GetSequencerDAConfig() string {
}
return fmt.Sprintf(
- `{"base_url": "%s", "timeout": 60000000000, "gas_prices":1.0, "gas_adjustment": 1.3, "namespace_id":"%s", "auth_token":"%s"}`,
+ `{"base_url": "%s", "timeout": 60000000000, "gas_prices":1.0, "gas_adjustment": 1.3, "namespace_id":"%s",
+"auth_token":"%s"},"backoff":{"initial_delay":6000000000,"max_delay":6000000000,"growth_factor":2},"retry_attempts":4,"retry_delay":3000000000}`,
lcEndpoint,
c.NamespaceID,
authToken,
diff --git a/data_layer/da_layer.go b/data_layer/da_layer.go
index 417518b6..38db4002 100644
--- a/data_layer/da_layer.go
+++ b/data_layer/da_layer.go
@@ -23,6 +23,8 @@ type DataLayer interface {
GetStatus(c config.RollappConfig) string
GetKeyName() string
GetPrivateKey() (string, error)
+ GetRootDirectory() string
+ GetNamespaceID() string
}
type DAManager struct {
diff --git a/data_layer/damock/damock.go b/data_layer/damock/damock.go
index f31d1376..6da472c3 100644
--- a/data_layer/damock/damock.go
+++ b/data_layer/damock/damock.go
@@ -20,6 +20,14 @@ func (d *DAMock) GetStatus(c config.RollappConfig) string {
return "Running local DA"
}
+func (c *DAMock) GetRootDirectory() string {
+ return ""
+}
+
+func (c *DAMock) GetNamespaceID() string {
+ return ""
+}
+
func NewDAMock() *DAMock {
return &DAMock{}
}
diff --git a/go.mod b/go.mod
index a2c793bb..88cbc97f 100644
--- a/go.mod
+++ b/go.mod
@@ -1,10 +1,10 @@
module github.com/dymensionxyz/roller
-go 1.22.4
+go 1.22.5
require (
github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/spf13/cobra v1.7.0
+ github.com/spf13/cobra v1.8.0
github.com/spf13/pflag v1.0.5 // indirect
)
@@ -12,13 +12,18 @@ require (
github.com/BurntSushi/toml v1.4.0
github.com/briandowns/spinner v1.23.0
github.com/centrifuge/go-substrate-rpc-client/v4 v4.0.0-00010101000000-000000000000
+ github.com/cosmos/cosmos-sdk v0.47.13
github.com/cosmos/go-bip39 v1.0.0
github.com/docker/docker v27.0.3+incompatible
- github.com/fatih/color v1.15.0
+ github.com/docker/go-connections v0.5.0
+ github.com/dymensionxyz/dymension/v3 v3.1.0-rc03.0.20240802123505-afd8254a010c
github.com/gizak/termui/v3 v3.1.0
+ github.com/gogo/protobuf v1.3.3
github.com/manifoldco/promptui v0.9.0
github.com/olekukonko/tablewriter v0.0.5
github.com/pelletier/go-toml v1.9.5
+ github.com/pterm/pterm v0.12.79
+ github.com/tendermint/tendermint v0.35.9
github.com/tidwall/sjson v1.2.5
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gopkg.in/yaml.v2 v2.4.0
@@ -29,65 +34,186 @@ require (
atomicgo.dev/cursor v0.2.0 // indirect
atomicgo.dev/keyboard v0.2.9 // indirect
atomicgo.dev/schedule v0.1.0 // indirect
+ cosmossdk.io/api v0.3.1 // indirect
+ cosmossdk.io/core v0.5.1 // indirect
+ cosmossdk.io/depinject v1.0.0-alpha.4 // indirect
+ cosmossdk.io/errors v1.0.1 // indirect
+ cosmossdk.io/math v1.3.0 // indirect
+ filippo.io/edwards25519 v1.0.0 // indirect
+ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
+ github.com/99designs/keyring v1.2.1 // indirect
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect
- github.com/Microsoft/go-winio v0.4.14 // indirect
- github.com/chzyer/readline v1.5.0 // indirect
+ github.com/DataDog/zstd v1.5.0 // indirect
+ github.com/Microsoft/go-winio v0.6.1 // indirect
+ github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 // indirect
+ github.com/armon/go-metrics v0.4.1 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
+ github.com/cespare/xxhash v1.1.0 // indirect
+ github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/chzyer/readline v1.5.1 // indirect
+ github.com/cockroachdb/errors v1.11.1 // indirect
+ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
+ github.com/cockroachdb/pebble v1.1.0 // indirect
+ github.com/cockroachdb/redact v1.1.5 // indirect
+ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
+ github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect
+ github.com/cometbft/cometbft v0.37.5 // indirect
+ github.com/cometbft/cometbft-db v0.11.0 // indirect
+ github.com/confio/ics23/go v0.9.0 // indirect
github.com/containerd/console v1.0.3 // indirect
github.com/containerd/log v0.1.0 // indirect
+ github.com/cosmos/btcutil v1.0.5 // indirect
+ github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect
+ github.com/cosmos/gogoproto v1.4.10 // indirect
+ github.com/cosmos/iavl v0.20.1 // indirect
+ github.com/cosmos/ibc-go/v7 v7.5.1 // indirect
+ github.com/cosmos/ics23/go v0.10.0 // indirect
+ github.com/cosmos/ledger-cosmos-go v0.12.4 // indirect
+ github.com/danieljoos/wincred v1.1.2 // indirect
+ github.com/danwt/gerr v1.0.0 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/deckarep/golang-set v1.8.0 // indirect
github.com/decred/base58 v1.0.3 // indirect
github.com/decred/dcrd/crypto/blake256 v1.0.0 // indirect
+ github.com/decred/dcrd/dcrec/edwards v1.0.0 // indirect
+ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
+ github.com/dgraph-io/badger/v2 v2.2007.4 // indirect
+ github.com/dgraph-io/ristretto v0.1.1 // indirect
+ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect
github.com/distribution/reference v0.6.0 // indirect
- github.com/docker/go-connections v0.5.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
- github.com/ethereum/go-ethereum v1.10.17 // indirect
+ github.com/dustin/go-humanize v1.0.1 // indirect
+ github.com/dvsekhvalnov/jose2go v1.6.0 // indirect
+ github.com/dymensionxyz/gerr-cosmos v1.0.0 // indirect
+ github.com/ethereum/go-ethereum v1.10.26 // indirect
+ github.com/fatih/color v1.15.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/getsentry/sentry-go v0.23.0 // indirect
+ github.com/go-kit/kit v0.12.0 // indirect
+ github.com/go-kit/log v0.2.1 // indirect
+ github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-stack/stack v1.8.1 // indirect
- github.com/gogo/protobuf v1.3.1 // indirect
+ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
+ github.com/golang/glog v1.2.0 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
+ github.com/golang/snappy v0.0.4 // indirect
+ github.com/google/btree v1.1.2 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
github.com/gookit/color v1.5.4 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
+ github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
+ github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/gtank/merlin v0.1.1 // indirect
github.com/gtank/ristretto255 v0.1.2 // indirect
+ github.com/hashicorp/go-immutable-radix v1.3.1 // 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.1.0 // indirect
+ github.com/huandu/skiplist v1.2.0 // indirect
+ github.com/jmhodges/levigo v1.0.0 // indirect
+ github.com/klauspost/compress v1.17.0 // indirect
+ github.com/kr/pretty v0.3.1 // indirect
+ github.com/kr/text v0.2.0 // indirect
+ github.com/libp2p/go-buffer-pool v0.1.0 // indirect
+ github.com/linxGnu/grocksdb v1.8.12 // indirect
github.com/lithammer/fuzzysearch v1.1.8 // indirect
+ github.com/magiconair/properties v1.8.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.19 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
+ github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/term v0.5.0 // indirect
- github.com/morikuni/aec v1.0.0 // indirect
+ github.com/mtibben/percent v0.2.1 // indirect
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
+ github.com/pelletier/go-toml/v2 v2.1.0 // indirect
+ github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect
github.com/pierrec/xxHash v0.1.5 // indirect
github.com/pkg/errors v0.9.1 // indirect
- github.com/pterm/pterm v0.12.79 // indirect
+ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
+ github.com/prometheus/client_golang v1.14.0 // indirect
+ github.com/prometheus/client_model v0.5.0 // indirect
+ github.com/prometheus/common v0.42.0 // indirect
+ github.com/prometheus/procfs v0.9.0 // indirect
+ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
- github.com/rs/cors v1.8.2 // indirect
- github.com/tidwall/gjson v1.14.2 // indirect
+ github.com/rogpeppe/go-internal v1.12.0 // indirect
+ github.com/rs/cors v1.9.0 // indirect
+ github.com/sagikazarmark/locafero v0.4.0 // indirect
+ github.com/sagikazarmark/slog-shim v0.1.0 // indirect
+ github.com/sasha-s/go-deadlock v0.3.1 // indirect
+ github.com/sourcegraph/conc v0.3.0 // indirect
+ github.com/spf13/afero v1.11.0 // indirect
+ github.com/spf13/cast v1.6.0 // indirect
+ github.com/spf13/viper v1.18.2 // indirect
+ github.com/stretchr/testify v1.9.0 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
+ github.com/tendermint/go-amino v0.16.0 // indirect
+ github.com/tidwall/btree v1.6.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/vedhavyas/go-subkey v1.0.3 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
+ github.com/zondax/hid v0.9.2 // indirect
+ github.com/zondax/ledger-go v0.14.3 // indirect
+ go.etcd.io/bbolt v1.3.8 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
go.opentelemetry.io/otel v1.28.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 // indirect
go.opentelemetry.io/otel/metric v1.28.0 // indirect
go.opentelemetry.io/otel/sdk v1.28.0 // indirect
go.opentelemetry.io/otel/trace v1.28.0 // indirect
+ go.uber.org/multierr v1.10.0 // indirect
golang.org/x/crypto v0.24.0 // indirect
+ golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
+ golang.org/x/mod v0.17.0 // indirect
+ golang.org/x/net v0.26.0 // indirect
+ golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.21.0 // indirect
golang.org/x/term v0.21.0 // indirect
golang.org/x/text v0.16.0 // indirect
+ golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
+ google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect
+ google.golang.org/grpc v1.64.0 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
+ gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
+ pgregory.net/rapid v1.1.0 // indirect
+ sigs.k8s.io/yaml v1.4.0 // indirect
)
replace (
github.com/centrifuge/go-substrate-rpc-client/v4 => github.com/availproject/go-substrate-rpc-client/v4 v4.0.12-avail-1.4.0-rc1-5e286e3
+
+ // use dymension forks
+ github.com/evmos/ethermint => github.com/dymensionxyz/ethermint v0.22.0-dymension-v0.4.1.0.20240625101522-b1506ae83050
github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
+ github.com/osmosis-labs/osmosis/osmomath => github.com/dymensionxyz/osmosis/osmomath v0.0.6-dym-v0.0.1
+ github.com/osmosis-labs/osmosis/v15 => github.com/dymensionxyz/osmosis/v15 v15.2.1-0.20240627111157-f2243f47cdb3
+
+ // broken goleveldb
+ github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
+
+ // use cometbft
+ github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.29
+
+ golang.org/x/exp => golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb
google.golang.org/genproto => google.golang.org/genproto v0.0.0-20240515191416-fc5f0ca64291
+
)
diff --git a/go.sum b/go.sum
index 2e1eaf07..e0e0518c 100644
--- a/go.sum
+++ b/go.sum
@@ -1,3 +1,5 @@
+atomicgo.dev/assert v0.0.2 h1:FiKeMiZSgRrZsPo9qn/7vmr7mCsh5SZyXY4YGYiYwrg=
+atomicgo.dev/assert v0.0.2/go.mod h1:ut4NcI3QDdJtlmAxQULOmA13Gz6e2DWbSAS8RUOmNYQ=
atomicgo.dev/cursor v0.2.0 h1:H6XN5alUJ52FZZUkI7AlJbUc1aW38GWZalpYRPpoPOw=
atomicgo.dev/cursor v0.2.0/go.mod h1:Lr4ZJB3U7DfPPOkbH7/6TOtJ4vFGHlgj1nc+n900IpU=
atomicgo.dev/keyboard v0.2.9 h1:tOsIid3nlPLZ3lwgG8KZMp/SFmr7P0ssEN5JUsm78K8=
@@ -48,6 +50,7 @@ cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4=
cloud.google.com/go v0.112.2/go.mod h1:iEqjp//KquGIJV/m+Pk3xecgKNhV+ry+vVTsy4TbDms=
+cloud.google.com/go v0.113.0 h1:g3C70mn3lWfckKBiCVsAshabrDg01pQ0pnX1MNtnMkA=
cloud.google.com/go v0.113.0/go.mod h1:glEqlogERKYeePz6ZdkcLJ28Q2I6aERgDDErBg9GzO8=
cloud.google.com/go/accessapproval v1.7.7/go.mod h1:10ZDPYiTm8tgxuMPid8s2DL93BfCt6xBh/Vg0Xd8pU0=
cloud.google.com/go/accesscontextmanager v1.8.6/go.mod h1:rMC0Z8pCe/JR6yQSksprDc6swNKjMEvkfCbaesh+OS0=
@@ -64,8 +67,10 @@ cloud.google.com/go/asset v1.19.1/go.mod h1:kGOS8DiCXv6wU/JWmHWCgaErtSZ6uN5noCy0
cloud.google.com/go/assuredworkloads v1.11.7/go.mod h1:CqXcRH9N0KCDtHhFisv7kk+cl//lyV+pYXGi1h8rCEU=
cloud.google.com/go/auth v0.2.1/go.mod h1:khQRBNrvNoHiHhV1iu2x8fSnlNbCaVHilznW5MAI5GY=
cloud.google.com/go/auth v0.2.2/go.mod h1:2bDNJWtWziDT3Pu1URxHHbkHE/BbOCuyUiKIGcNvafo=
+cloud.google.com/go/auth v0.3.0 h1:PRyzEpGfx/Z9e8+lHsbkoUVXD0gnu4MNmm7Gp8TQNIs=
cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w=
cloud.google.com/go/auth/oauth2adapt v0.2.1/go.mod h1:tOdK/k+D2e4GEwfBRA48dKNQiDsqIXxLh7VU319eV0g=
+cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
cloud.google.com/go/automl v1.13.7/go.mod h1:E+s0VOsYXUdXpq0y4gNZpi0A/s6y9+lAarmV5Eqlg40=
cloud.google.com/go/baremetalsolution v1.2.6/go.mod h1:KkS2BtYXC7YGbr42067nzFr+ABFMs6cxEcA1F+cedIw=
@@ -108,11 +113,13 @@ cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3X
cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI=
cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40=
+cloud.google.com/go/compute v1.26.0 h1:uHf0NN2nvxl1Gh4QO83yRCOdMK4zivtMS5gv0dEX0hg=
cloud.google.com/go/compute v1.26.0/go.mod h1:T9RIRap4pVHCGUkVFRJ9hygT3KCXjip41X1GgWtBBII=
cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU=
cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
cloud.google.com/go/contactcenterinsights v1.13.2/go.mod h1:AfkSB8t7mt2sIY6WpfO61nD9J9fcidIchtxm9FqJVXk=
cloud.google.com/go/container v1.35.1/go.mod h1:udm8fgLm3TtpnjFN4QLLjZezAIIp/VnMo316yIRVRQU=
@@ -158,6 +165,7 @@ cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQy
cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI=
cloud.google.com/go/iam v1.1.7/go.mod h1:J4PMPg8TtyurAUvSmPj8FF3EDgY1SPRZxcUGrn7WXGA=
+cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0=
cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE=
cloud.google.com/go/iap v1.9.6/go.mod h1:YiK+tbhDszhaVifvzt2zTEF2ch9duHtp6xzxj9a0sQk=
cloud.google.com/go/ids v1.4.7/go.mod h1:yUkDC71u73lJoTaoONy0dsA0T7foekvg6ZRg9IJL0AA=
@@ -235,6 +243,7 @@ cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7Biccwk
cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY=
cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o=
+cloud.google.com/go/storage v1.40.0 h1:VEpDQV5CJxFmJ6ueWNsKxcr1QAYOXEgxDa+sBbJahPw=
cloud.google.com/go/storage v1.40.0/go.mod h1:Rrj7/hKlG87BLqDJYtwR0fbPld8uJPbQ2ucUMY7Ir0g=
cloud.google.com/go/storagetransfer v1.10.6/go.mod h1:3sAgY1bx1TpIzfSzdvNGHrGYldeCTyGI/Rzk6Lc6A7w=
cloud.google.com/go/talent v1.6.8/go.mod h1:kqPAJvhxmhoUTuqxjjk2KqA8zUEeTDmH+qKztVubGlQ=
@@ -252,9 +261,31 @@ cloud.google.com/go/webrisk v1.9.7/go.mod h1:7FkQtqcKLeNwXCdhthdXHIQNcFWPF/Oubrl
cloud.google.com/go/websecurityscanner v1.6.7/go.mod h1:EpiW84G5KXxsjtFKK7fSMQNt8JcuLA8tQp7j0cyV458=
cloud.google.com/go/workflows v1.12.6/go.mod h1:oDbEHKa4otYg4abwdw2Z094jB0TLLiFGAPA78EDAKag=
collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE=
+cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw=
+cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI=
+cosmossdk.io/core v0.5.1/go.mod h1:KZtwHCLjcFuo0nmDc24Xy6CRNEL9Vl/MeimQ2aC7NLE=
+cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc=
+cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU=
+cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
+cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
+cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI=
+cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM=
+cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE=
+cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k=
+cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw=
+cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw=
+filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
+filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek=
+filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=
+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/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
+github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
+github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o=
+github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA=
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=
@@ -263,10 +294,12 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg6
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
-github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/ChainSafe/go-schnorrkel 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.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo=
+github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0=
github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk=
github.com/MarvinJWendt/testza v0.1.0/go.mod h1:7AxNvlfeHP7Z/hDQ5JtE3OKYT3XFUeLCDE2DQninSqs=
@@ -276,12 +309,21 @@ github.com/MarvinJWendt/testza v0.2.10/go.mod h1:pd+VWsoGUiFtq+hRKSU1Bktnn+DMCSr
github.com/MarvinJWendt/testza v0.2.12/go.mod h1:JOIegYyV7rX+7VZ9r77L/eH6CfJHHzXjB69adAhzZkI=
github.com/MarvinJWendt/testza v0.3.0/go.mod h1:eFcL4I0idjtIx8P9C6KkAuLgATNKpX4/2oUqKc6bF2c=
github.com/MarvinJWendt/testza v0.4.2/go.mod h1:mSdhXiKH8sg/gQehJ63bINcCKp7RtYewEjXsvsVUPbE=
-github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU=
-github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
+github.com/MarvinJWendt/testza v0.5.2 h1:53KDo64C1z/h/d/stCYCPY69bt/OSwjq5KpFNwi+zB4=
+github.com/MarvinJWendt/testza v0.5.2/go.mod h1:xu53QFE5sCdjtMCKk8YMQ2MnymimEctc4n3EjyIYvEY=
+github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
+github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
+github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw=
+github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=
+github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
+github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM=
+github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
+github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI=
+github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY=
github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
@@ -292,7 +334,9 @@ github.com/alecthomas/participle/v2 v2.0.0/go.mod h1:rAKZdJldHu8084ojcWevWAL8KmE
github.com/alecthomas/participle/v2 v2.1.0/go.mod h1:Y1+hAs8DHPmc3YUFzqllV+eSQ9ljPTk0ZkPMtEdAx2c=
github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
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/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
@@ -300,9 +344,14 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd
github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA=
github.com/apache/thrift v0.17.0/go.mod h1:OLxhMRJxomX+1I/KUw03qoV3mMz16BwaKI+d4fPBx7Q=
+github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
+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/atomicgo/cursor v0.0.1/go.mod h1:cBON2QmmrysudxNBFthvMtN32r3jxVRIvzkUiF/RuIk=
github.com/availproject/go-substrate-rpc-client/v4 v4.0.12-avail-1.4.0-rc1-5e286e3 h1:9bPK0/Vd+uOQul3vEBSemRXO+rwqi+UXDAvFzNUlG8A=
github.com/availproject/go-substrate-rpc-client/v4 v4.0.12-avail-1.4.0-rc1-5e286e3/go.mod h1:5g1oM4Zu3BOaLpsKQ+O8PAv2kNuq+kPcA1VzFbsSqxE=
+github.com/aws/aws-sdk-go v1.44.203 h1:pcsP805b9acL3wUqa4JR2vg1k2wnItkDYNvfmcy6F+U=
+github.com/aws/aws-sdk-go v1.44.203/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
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=
@@ -314,37 +363,73 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxq
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/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.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/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A=
github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE=
-github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo=
-github.com/btcsuite/btcd/btcec/v2 v2.1.2 h1:YoYoC9J0jwfukodSBMzZYUVQ8PTiYg4BnOWiJVzTmLs=
+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.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 v0.23.4 h1:IzV6qqkfwbItOS/sg/aDfPDsjPP8twrCOE2R93hxMlQ=
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.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ=
+github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0=
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-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=
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ=
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o=
+github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
+github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
+github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=
+github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
+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/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/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
+github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw=
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
+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.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/logex v1.2.0 h1:+eqR0HfOetur4tgnC8ftU5imRnhi4te+BadWS95c5AM=
github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
+github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM=
+github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/readline v1.5.0 h1:lSwwFrbNviGePhkewF1az4oLmcwqCZijQ2/Wi3BGHAI=
github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic=
+github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI=
+github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/chzyer/test v0.0.0-20210722231415-061457976a23 h1:dZ0/VyGgQdVGAss6Ju0dt5P0QltE0SFY5Woh6hbIfiQ=
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
+github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
+github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
+github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/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=
@@ -364,35 +449,109 @@ github.com/cncf/xds/go v0.0.0-20230428030218-4003588d1b74/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
+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 v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=
+github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
+github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8=
+github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
+github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4=
+github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E=
+github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
+github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
+github.com/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 v0.37.5 h1:/U/TlgMh4NdnXNo+YU9T2NMCWyhXNDF34Mx582jlvq0=
+github.com/cometbft/cometbft v0.37.5/go.mod h1:QC+mU0lBhKn8r9qvmnq53Dmf3DWBt4VtkcKw2C81wxY=
+github.com/cometbft/cometbft-db v0.11.0 h1:M3Lscmpogx5NTbb1EGyGDaFRdsoLWrUWimFEyf7jej8=
+github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc=
+github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4=
+github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak=
github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ=
+github.com/consensys/bavard v0.1.8-0.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/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=
github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
+github.com/coreos/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/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.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
+github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
+github.com/cosmos/cosmos-sdk v0.47.13 h1:9d57rl2ilSgc8a6u1JAulqNX/E5w8lbqbRe3NON3Jb4=
+github.com/cosmos/cosmos-sdk v0.47.13/go.mod h1:pYMzhTfKFn9AJB5X64Epwe9NgYk0y3v7XN8Ks5xqWoo=
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/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE=
+github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI=
+github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoKuI=
+github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek=
+github.com/cosmos/iavl v0.20.1 h1:rM1kqeG3/HBT85vsZdoSNsehciqUQPWrR4BYmqE2+zg=
+github.com/cosmos/iavl v0.20.1/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A=
+github.com/cosmos/ibc-go/v7 v7.5.1 h1:KqS/g7W7EMX1OtOvufS8lWMJibOKpdgtNNZIU6fAgVU=
+github.com/cosmos/ibc-go/v7 v7.5.1/go.mod h1:ktFg5GvKOyrGCqTWtW7Grj5uweU4ZapxrNeVS1CLLbo=
+github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM=
+github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0=
+github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw=
+github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M=
+github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM=
+github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4=
+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/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8=
+github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+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/danwt/gerr v1.0.0 h1:v3Do0h1r+uctQQVYJfOTCo8uigp8oIaY4OL/wUU8LzI=
+github.com/danwt/gerr v1.0.0/go.mod h1:tIj6P8ZPBLAbr64HdWqKHGUXbWJT6HenD08Fn98oAnE=
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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4=
github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo=
github.com/decred/base58 v1.0.3 h1:KGZuh8d1WEMIrK0leQRM47W85KqCAdl2N+uagbctdDI=
github.com/decred/base58 v1.0.3/go.mod h1:pXP9cXCfM2sFLb2viz2FNIdeMWmZDBKG3ZBYbiSM78E=
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/edwards v1.0.0 h1:UDcPNzclKiJlWqV3x1Fl8xMCJrolo4PB4X9t8LwKDWU=
+github.com/decred/dcrd/dcrec/edwards v1.0.0/go.mod h1:HblVh1OfMt7xSxUL1ufjToaEvpbjpWvvTAUx4yem8BI=
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.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.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
+github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-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/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
@@ -410,7 +569,16 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3
github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk=
github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY=
+github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
+github.com/dymensionxyz/dymension/v3 v3.1.0-rc03.0.20240802123505-afd8254a010c h1:HL66BmrUHrEwhXpqbV8sf8/zeucz5mxUbFA538ZaHfQ=
+github.com/dymensionxyz/dymension/v3 v3.1.0-rc03.0.20240802123505-afd8254a010c/go.mod h1:qXov17cZXRQ1MUS14efi1vLBTfdtbDyasYFp5skZTcg=
+github.com/dymensionxyz/gerr-cosmos v1.0.0 h1:oi91rgOkpJWr41oX9JOyjvvBnhGY54tj513x8VlDAEc=
+github.com/dymensionxyz/gerr-cosmos v1.0.0/go.mod h1:n+0olxPogzWqFKba45mCpvrHLGmeS8W9UZjggHnWk6c=
+github.com/dymensionxyz/sdk-utils v0.2.2 h1:RoANEXbR4nkEMaRGWCLT1P9A7KBCmzJ2U9wAZnNbszo=
+github.com/dymensionxyz/sdk-utils v0.2.2/go.mod h1:ywr7+EEhHyuXCPUyLsktF3R4Mr31uCiviIjqwWNbQ84=
github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts=
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -435,8 +603,9 @@ github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6Ni
github.com/envoyproxy/protoc-gen-validate v1.0.1/go.mod h1:0vj8bNkYbSTNS2PIyH87KZaeN4x9zpL9Qt8fQC7d+vs=
github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
-github.com/ethereum/go-ethereum v1.10.17 h1:XEcumY+qSr1cZQaWsQs5Kck3FHB0V2RiMHPdTBJ+oT8=
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/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
@@ -448,30 +617,44 @@ github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
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/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
+github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
+github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/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/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE=
+github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc=
github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY=
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-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
+github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks=
github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=
-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=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.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.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
+github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U=
github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
+github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
+github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
@@ -479,8 +662,9 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E=
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
+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-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
@@ -497,7 +681,11 @@ github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-yaml v1.9.8/go.mod h1:JubOolP3gh0HpiBc4BLRD4YmjEjHAmIIB2aaXKkTfoE=
github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng=
+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/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
+github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/golang-jwt/jwt/v4 v4.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=
@@ -505,10 +693,12 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ=
+github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+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=
@@ -518,8 +708,10 @@ github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt
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=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
@@ -537,13 +729,17 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
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/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4 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.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/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -564,15 +760,19 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY=
+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/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
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/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
+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=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
@@ -593,7 +793,9 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4
github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM=
github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
+github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/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/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -608,6 +810,7 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/
github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
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=
@@ -627,6 +830,7 @@ github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qK
github.com/googleapis/gax-go/v2 v2.12.1/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc=
github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc=
github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
+github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg=
github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI=
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=
@@ -635,11 +839,18 @@ github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl
github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0=
github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
+github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
+github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
+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 v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc=
+github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
+github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
@@ -647,6 +858,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k=
+github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
+github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s=
github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is=
github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s=
@@ -654,13 +867,37 @@ github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uM
github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o=
github.com/hamba/avro/v2 v2.17.2/go.mod h1:Q9YK+qxAhtVrNqOhwlZTATLgLA8qxG2vtvkhK8fJ7Jo=
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.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.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4=
+github.com/hashicorp/go-getter v1.7.5/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=
+github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
+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-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM=
+github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+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/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.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=
+github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU=
+github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
+github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
+github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
+github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y=
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
@@ -668,6 +905,8 @@ github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
+github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=
+github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
@@ -684,9 +923,16 @@ github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mq
github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po=
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/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/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/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
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=
@@ -700,14 +946,20 @@ github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
+github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM=
+github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5 h1:2U0HzY8BJ8hVwDKIzp7y4voR9CX/nvcfymLmg2UiOio=
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
+github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
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=
@@ -728,12 +980,22 @@ github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/lib/pq v1.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/linxGnu/grocksdb v1.8.12 h1:1/pCztQUOa3BX/1gR3jSZDoaKFpeHFvQ1XrqZpSvZVo=
+github.com/linxGnu/grocksdb v1.8.12/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY=
github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4=
github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4=
+github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4=
github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o=
github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk=
+github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
+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=
@@ -753,11 +1015,11 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.3/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-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
@@ -766,14 +1028,25 @@ github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsO
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
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.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
+github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM=
github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94=
github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM=
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
+github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g=
+github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
+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.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
+github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM=
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
+github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
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/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
@@ -782,26 +1055,40 @@ github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
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/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
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=
github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
+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/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840=
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
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/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
+github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
+github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
+github.com/onsi/gomega v1.4.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.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q=
+github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
@@ -809,11 +1096,19 @@ github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2sz
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/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
+github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE=
+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.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
+github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
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/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/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=
github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
@@ -822,6 +1117,8 @@ github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi
github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo=
github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNKXmuL+I=
+github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
+github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -830,22 +1127,33 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
+github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
+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-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.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
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.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
+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.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
+github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
+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/pterm/pterm v0.12.27/go.mod h1:PhQ89w4i95rhgE+xedAoqous6K9X+r6aSOI2eFF7DZI=
github.com/pterm/pterm v0.12.29/go.mod h1:WI3qxgvoQFFGKGjGnJR849gU0TsEOvKn5Q8LlY1U7lg=
@@ -856,6 +1164,10 @@ github.com/pterm/pterm v0.12.36/go.mod h1:NjiL09hFhT/vWjQHSj1athJpx6H8cjpHXNAK5b
github.com/pterm/pterm v0.12.40/go.mod h1:ffwPLwlbXxP+rxT0GsgDTzS3y3rmpAO1NMjUkGTYf8s=
github.com/pterm/pterm v0.12.79 h1:lH3yrYMhdpeqX9y5Ep1u7DejyHy7NSQg9qrBjF9dFT4=
github.com/pterm/pterm v0.12.79/go.mod h1:1v/gzOF1N0FsjbgTHZ1wVycRkKiatFvJSJC4IGaQAAo=
+github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
+github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc=
+github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
+github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4=
github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
@@ -871,43 +1183,69 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
-github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U=
-github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
+github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE=
+github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
+github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
+github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
+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/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk=
+github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
+github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
+github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
+github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
+github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0=
+github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM=
+github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY=
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/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
+github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
+github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
+github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
+github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
+github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
+github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
+github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-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/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
+github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
+github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
+github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
+github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
+github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q=
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
@@ -923,33 +1261,55 @@ github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/substrait-io/substrait-go v0.4.2/go.mod h1:qhpnLmrcvAnlZsUyPXZRqldiHapPTXC3t7xFgDi3aQg=
+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/tidwall/gjson v1.14.2 h1:6BBkirS0rAHjumnjHF6qgy5d2YAJ1TLIaFE2lzfOLqo=
+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/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg=
+github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
+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/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4=
github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI=
-github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA=
+github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM=
+github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI=
github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM=
+github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms=
+github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4=
+github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
+github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
+github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
+github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
+github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
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/vedhavyas/go-subkey v1.0.3 h1:iKR33BB/akKmcR2PMlXPBeeODjWLM90EL98OrOGs8CA=
github.com/vedhavyas/go-subkey v1.0.3/go.mod h1:CloUaFQSSTdWnINfBRFjVMkWXZANW+nd8+TI5jYcl6Y=
+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/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
+github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+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=
@@ -959,7 +1319,13 @@ github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
+github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
+github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
+github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=
+github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI=
go.einride.tech/aip v0.67.1/go.mod h1:ZGX4/zKw8dcgzdLsrvpOOGxfxI2QSk12SlP7d6c0/XI=
+go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA=
+go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -967,10 +1333,12 @@ 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/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
+go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.48.0/go.mod h1:tIKj3DbO8N9Y2xo52og3irLsPI4GW02DSMtrVgNMgxg=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw=
@@ -1012,22 +1380,32 @@ go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v8
go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
go.uber.org/atomic v1.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/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
+go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
+go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-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.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
@@ -1049,25 +1427,9 @@ golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOM
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
-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-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
-golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE=
-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=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
-golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
+golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us=
+golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
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/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@@ -1089,12 +1451,8 @@ golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPI
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/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.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=
@@ -1112,7 +1470,9 @@ golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+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=
@@ -1234,6 +1594,7 @@ golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2
golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA=
golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8=
+golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1255,6 +1616,7 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1262,18 +1624,19 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/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=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/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-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1324,6 +1687,7 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc
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-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-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1349,6 +1713,7 @@ golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1433,7 +1798,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
@@ -1442,10 +1806,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1458,7 +1820,6 @@ golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapK
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=
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1497,6 +1858,8 @@ golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
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=
@@ -1591,6 +1954,7 @@ google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gv
google.golang.org/api v0.175.0/go.mod h1:Rra+ltKu14pps/4xTycZfobMgLpbosoaaL7c+SEMrO8=
google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg=
google.golang.org/api v0.177.0/go.mod h1:srbhue4MLjkjbkux5p3dw/ocYOSZTaIEvf7bCOnFQDw=
+google.golang.org/api v0.178.0 h1:yoW/QMI4bRVCHF+NWOTa4cL8MoWL3Jnuc7FlcFF91Ok=
google.golang.org/api v0.178.0/go.mod h1:84/k2v8DFpDRebpGcooklv/lais3MEfqpaBLA12gl2U=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1763,21 +2127,26 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks
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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU=
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=
gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns=
+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/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
@@ -1829,7 +2198,14 @@ modernc.org/tcl v1.15.1/go.mod h1:aEjeGJX2gz1oWKOLDVZ2tnEWLUrIn8H+GFu+akoDhqs=
modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/z v1.7.0/go.mod h1:hVdgNMh8ggTuRG1rGU8x+xGRFfiQUIAw0ZqlPy8+HyQ=
+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 v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
+pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/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.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
+sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
diff --git a/relayer/channels.go b/relayer/channels.go
index eb77af4e..e11a711c 100644
--- a/relayer/channels.go
+++ b/relayer/channels.go
@@ -13,21 +13,11 @@ import (
// TODO: Change to use the connection for fetching relevant channel using connection-channels rly command
func (r *Relayer) LoadActiveChannel() (string, string, error) {
- output, err := cmdutils.ExecBashCommandWithStdout(r.queryChannelsRollappCmd())
- if err != nil {
- return "", "", err
- }
-
- if output.Len() == 0 {
- return "", "", nil
- }
-
- // While there are JSON objects in the stream...
var outputStruct RollappQueryResult
var foundOpenChannel RollappQueryResult
- var activeConnectionID string
- activeConnectionID, err = r.GetActiveConnection()
+ var activeConnectionID string
+ activeConnectionID, err := r.GetActiveConnection()
if err != nil {
if keyErr, ok := err.(*utils.KeyNotFoundError); ok {
r.logger.Printf("No active connection found. Key not found: %v", keyErr)
@@ -40,12 +30,22 @@ func (r *Relayer) LoadActiveChannel() (string, string, error) {
return "", "", nil
}
+ output, err := cmdutils.ExecBashCommandWithStdout(r.queryChannelsRollappCmd(activeConnectionID))
+ if err != nil {
+ return "", "", err
+ }
+
+ if output.Len() == 0 {
+ return "", "", nil
+ }
+
dec := json.NewDecoder(&output)
for dec.More() {
err = dec.Decode(&outputStruct)
if err != nil {
return "", "", fmt.Errorf("error while decoding JSON: %v", err)
}
+
if outputStruct.ConnectionHops[0] != activeConnectionID {
r.logger.Printf(
"skipping channel %s as it's not on the active connection %s",
@@ -62,11 +62,12 @@ func (r *Relayer) LoadActiveChannel() (string, string, error) {
// Check if the channel is open on the hub
var res HubQueryResult
outputHub, err := cmdutils.ExecBashCommandWithStdout(
- r.queryChannelsHubCmd(outputStruct.Counterparty.ChannelID),
+ r.queryChannelsHubCmd(outputStruct.ChannelID),
)
if err != nil {
return "", "", err
}
+
err = json.Unmarshal(outputHub.Bytes(), &res)
if err != nil {
return "", "", err
@@ -84,16 +85,17 @@ func (r *Relayer) LoadActiveChannel() (string, string, error) {
// Found open channel on both ends
foundOpenChannel = outputStruct
+ fmt.Println("found", foundOpenChannel)
break
}
r.SrcChannel = foundOpenChannel.ChannelID
r.DstChannel = foundOpenChannel.Counterparty.ChannelID
- return r.SrcChannel, r.DstChannel, nil
+ return "", "", nil
}
-func (r *Relayer) queryChannelsRollappCmd() *exec.Cmd {
- args := []string{"q", "connection-channels", r.RollappID, "connection-0"}
+func (r *Relayer) queryChannelsRollappCmd(connectionID string) *exec.Cmd {
+ args := []string{"q", "connection-channels", r.RollappID, connectionID}
args = append(args, "--home", filepath.Join(r.Home, consts.ConfigDirName.Relayer))
return exec.Command(consts.Executables.Relayer, args...)
}
diff --git a/relayer/connections.go b/relayer/connections.go
index edaa2d18..4b0a61ba 100644
--- a/relayer/connections.go
+++ b/relayer/connections.go
@@ -2,7 +2,6 @@ package relayer
import (
"encoding/json"
- "fmt"
"os/exec"
"path/filepath"
@@ -55,6 +54,7 @@ type PrefixInfo struct {
}
func (r *Relayer) GetActiveConnection() (string, error) {
+ // try to read connection information from the configuration file
rlyCfg, err := ReadRlyConfig(r.Home)
if err != nil {
return "", err
@@ -64,53 +64,82 @@ func (r *Relayer) GetActiveConnection() (string, error) {
[]string{"paths", consts.DefaultRelayerPath, "dst", "connection-id"},
)
if err != nil {
- return "", err
+ r.logger.Println("no active rollapp connection id found in the configuration file")
+ // return "", err
}
- connectionIDHub_raw, err := roller_utils.GetNestedValue(
+ connectionIDHubRaw, err := roller_utils.GetNestedValue(
rlyCfg,
[]string{"paths", consts.DefaultRelayerPath, "src", "connection-id"},
)
if err != nil {
- return "", err
+ r.logger.Println("no active hub connection id found in the configuration file")
+ // return "", err
+ }
+
+ var connectionIDRollapp string
+ if connectionIDRollappRaw != nil {
+ //nolint:errcheck
+ connectionIDRollapp = connectionIDRollappRaw.(string)
}
- //nolint:errcheck
- connectionIDRollapp := connectionIDRollappRaw.(string)
- //nolint:errcheck
- connectionIDHub := connectionIDHub_raw.(string)
+ var connectionIDHub string
+ if connectionIDHubRaw != nil {
+ //nolint:errcheck
+ connectionIDHub = connectionIDHubRaw.(string)
+ }
if connectionIDRollapp == "" || connectionIDHub == "" {
- r.logger.Printf("can't find active connection in the config")
- return "", nil
+ r.logger.Printf("can't find active connection in the configuration file")
+ }
+ // END: try to read connection information from the configuration file
+
+ var hubConnectionInfo ConnectionsQueryResult
+ hubConnectionOutput, err := utils.ExecBashCommandWithStdout(r.queryConnectionsHubCmd())
+ if err != nil {
+ r.logger.Printf("couldn't find any open connections for %s", r.HubID)
+ return "", err
+ }
+ err = json.Unmarshal(hubConnectionOutput.Bytes(), &hubConnectionInfo)
+ if err != nil {
+ r.logger.Printf("couldn't unmarshal hub connection info: %v", err)
}
- output, err := utils.ExecBashCommandWithStdout(r.queryConnectionRollappCmd(connectionIDRollapp))
+ // fetch connection from the chain
+ rollappConnectionOutput, err := utils.ExecBashCommandWithStdout(
+ r.queryConnectionRollappCmd(
+ hubConnectionInfo.
+ Counterparty.ConnectionID,
+ ),
+ )
if err != nil {
+ r.logger.Printf(
+ "failed to find connection on the rollapp side for %s: %v",
+ r.RollappID,
+ err,
+ )
return "", err
}
// While there are JSON objects in the stream...
var outputStruct ConnectionQueryResult
-
- dec := json.NewDecoder(&output)
- for dec.More() {
- err = dec.Decode(&outputStruct)
- if err != nil {
- return "", fmt.Errorf("error while decoding JSON: %v", err)
- }
+ err = json.Unmarshal(rollappConnectionOutput.Bytes(), &outputStruct)
+ if err != nil {
+ r.logger.Printf("error while decoding JSON: %v", err)
}
+ // TODO: review, why return nil error?
if outputStruct.Connection.State != "STATE_OPEN" {
return "", nil
}
// Check if the connection is open on the hub
var res ConnectionQueryResult
- outputHub, err := utils.ExecBashCommandWithStdout(r.queryConnectionsHubCmd(connectionIDHub))
+ outputHub, err := utils.ExecBashCommandWithStdout(r.queryConnectionHubCmd(hubConnectionInfo.ID))
if err != nil {
return "", err
}
+
err = json.Unmarshal(outputHub.Bytes(), &res)
if err != nil {
return "", err
@@ -126,7 +155,44 @@ func (r *Relayer) GetActiveConnection() (string, error) {
return "", nil
}
- return connectionIDRollapp, nil
+ // todo: refactor
+ err = roller_utils.SetNestedValue(
+ rlyCfg,
+ []string{"paths", consts.DefaultRelayerPath, "src", "connection-id"},
+ hubConnectionInfo.ID,
+ )
+ if err != nil {
+ return "", err
+ }
+
+ err = roller_utils.SetNestedValue(
+ rlyCfg,
+ []string{"paths", consts.DefaultRelayerPath, "src", "connection-id"},
+ hubConnectionInfo.ID,
+ )
+ if err != nil {
+ return "", err
+ }
+
+ err = roller_utils.SetNestedValue(
+ rlyCfg,
+ []string{"paths", consts.DefaultRelayerPath, "src", "client-id"},
+ hubConnectionInfo.ID,
+ )
+ if err != nil {
+ return "", err
+ }
+
+ err = roller_utils.SetNestedValue(
+ rlyCfg,
+ []string{"paths", consts.DefaultRelayerPath, "src", "client-id"},
+ hubConnectionInfo.ID,
+ )
+ if err != nil {
+ return "", err
+ }
+
+ return hubConnectionInfo.Counterparty.ConnectionID, nil
}
func (r *Relayer) queryConnectionRollappCmd(connectionID string) *exec.Cmd {
@@ -135,8 +201,14 @@ func (r *Relayer) queryConnectionRollappCmd(connectionID string) *exec.Cmd {
return exec.Command(consts.Executables.Relayer, args...)
}
-func (r *Relayer) queryConnectionsHubCmd(connectionID string) *exec.Cmd {
+func (r *Relayer) queryConnectionHubCmd(connectionID string) *exec.Cmd {
args := []string{"q", "connection", r.HubID, connectionID}
args = append(args, "--home", filepath.Join(r.Home, consts.ConfigDirName.Relayer))
return exec.Command(consts.Executables.Relayer, args...)
}
+
+func (r *Relayer) queryConnectionsHubCmd() *exec.Cmd {
+ args := []string{"q", "connections", r.HubID}
+ args = append(args, "--home", filepath.Join(r.Home, consts.ConfigDirName.Relayer))
+ return exec.Command(consts.Executables.Relayer, args...)
+}
diff --git a/relayer/create_ibc_channel.go b/relayer/create_ibc_channel.go
index 76785d25..b91529cc 100644
--- a/relayer/create_ibc_channel.go
+++ b/relayer/create_ibc_channel.go
@@ -38,7 +38,8 @@ func (r *Relayer) CreateIBCChannel(
if err != nil {
return ConnectionChannels{}, err
}
- sendFundsCmd := seq.GetSendCmd(sequencerAddress.Address)
+
+ sendFundsCmd := seq.GetSendCmd(sequencerAddress)
utils.RunCommandEvery(
ctx,
sendFundsCmd.Path,
diff --git a/sequencer/config.go b/sequencer/config.go
index 0e928707..fb22f04f 100644
--- a/sequencer/config.go
+++ b/sequencer/config.go
@@ -128,11 +128,13 @@ func (seq *Sequencer) ReadPorts() error {
if err != nil {
return err
}
+
seq.RPCPort = getPortFromAddress(rpcAddr)
appCfg, err := toml.LoadFile(filepath.Join(getSequencerConfigDir(seq.RlpCfg.Home), "app.toml"))
if err != nil {
return err
}
+
jsonRpcAddr := appCfg.Get("json-rpc.address")
seq.JsonRPCPort = getPortFromAddress(fmt.Sprint(jsonRpcAddr))
apiAddr := appCfg.Get("api.address")
diff --git a/sequencer/sequencer_manager.go b/sequencer/sequencer_manager.go
index b1adc236..c37c91d3 100644
--- a/sequencer/sequencer_manager.go
+++ b/sequencer/sequencer_manager.go
@@ -28,16 +28,18 @@ var (
func GetInstance(rlpCfg config.RollappConfig) *Sequencer {
pterm.Info.Println("retrieving sequencer instance")
- once.Do(func() {
- seq := &Sequencer{
- logger: log.New(io.Discard, "", 0),
- RlpCfg: rlpCfg,
- }
- if err := seq.ReadPorts(); err != nil {
- panic(err)
- }
- instance = seq
- })
+ once.Do(
+ func() {
+ seq := &Sequencer{
+ logger: log.New(io.Discard, "", 0),
+ RlpCfg: rlpCfg,
+ }
+ if err := seq.ReadPorts(); err != nil {
+ panic(err)
+ }
+ instance = seq
+ },
+ )
return instance
}
diff --git a/utils/dymint/dymint.go b/utils/dymint/dymint.go
new file mode 100644
index 00000000..a9549e03
--- /dev/null
+++ b/utils/dymint/dymint.go
@@ -0,0 +1,110 @@
+package dymint
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/BurntSushi/toml"
+ "github.com/dymensionxyz/roller/config"
+ "github.com/dymensionxyz/roller/sequencer"
+ "github.com/dymensionxyz/roller/utils"
+ "github.com/pterm/pterm"
+)
+
+// TODO: use dymint instead
+type dymintConfig struct {
+ BatchAcceptanceAttempts string `toml:"batch_acceptance_attempts"`
+ BatchAcceptanceTimeout string `toml:"batch_acceptance_timeout"`
+ BatchSubmitMaxTime string `toml:"batch_submit_max_time"`
+ BlockBatchMaxSizeBytes int `toml:"block_batch_max_size_bytes"`
+ BlockBatchSize string `toml:"block_batch_size"`
+ BlockTime string `toml:"block_time"`
+ DaConfig string `toml:"da_config"`
+ DaLayer string `toml:"da_layer"`
+ DymAccountName string `toml:"dym_account_name"`
+ EmptyBlocksMaxTime string `toml:"empty_blocks_max_time"`
+ GasPrices string `toml:"gas_prices"`
+ KeyringBackend string `toml:"keyring_backend"`
+ KeyringHomeDir string `toml:"keyring_home_dir"`
+ MaxIdleTime string `toml:"max_idle_time"`
+ MaxProofTime string `toml:"max_proof_time"`
+ MaxSupportedBatchSkew int `toml:"max_supported_batch_skew"`
+ NamespaceID string `toml:"namespace_id"`
+ NodeAddress string `toml:"node_address"`
+ P2PAdvertisingEnabled string `toml:"p2p_advertising_enabled"`
+ P2PBootstrapNodes string `toml:"p2p_bootstrap_nodes"`
+ P2PBootstrapRetryTime string `toml:"p2p_bootstrap_retry_time"`
+ P2PGossipedBlocksCacheSize int `toml:"p2p_gossiped_blocks_cache_size"`
+ P2PListenAddress string `toml:"p2p_listen_address"`
+ RetryAttempts string `toml:"retry_attempts"`
+ RetryMaxDelay string `toml:"retry_max_delay"`
+ RetryMinDelay string `toml:"retry_min_delay"`
+ RollappID string `toml:"rollapp_id"`
+ SettlementGasFees string `toml:"settlement_gas_fees"`
+ SettlementGasLimit int `toml:"settlement_gas_limit"`
+ SettlementGasPrices string `toml:"settlement_gas_prices"`
+ SettlementLayer string `toml:"settlement_layer"`
+ SettlementNodeAddress string `toml:"settlement_node_address"`
+ Db dymintDBConfig `toml:"db"`
+ Instrumentation dymintInstrumentationConfig `toml:"instrumentation"`
+}
+
+type dymintDBConfig struct {
+ InMemory bool `toml:"in_memory"`
+ SyncWrites bool `toml:"sync_writes"`
+}
+
+type dymintInstrumentationConfig struct {
+ Prometheus bool `toml:"prometheus"`
+ PrometheusListenAddr string `toml:"prometheus_listen_addr"`
+}
+
+func UpdateDymintConfigForIBC(home string) error {
+ pterm.Info.Println("checking dymint block time settings")
+ dymintPath := sequencer.GetDymintFilePath(home)
+ fmt.Println(dymintPath)
+ dymintCfg, err := config.LoadConfigFromTOML(dymintPath)
+ if err != nil {
+ return err
+ }
+
+ var cfg dymintConfig
+
+ _, err = toml.Decode(string(dymintCfg), &cfg)
+ if err != nil {
+ return err
+ }
+
+ want := time.Second * 5
+ have, err := time.ParseDuration(cfg.MaxIdleTime)
+ if err != nil {
+ return err
+ }
+
+ if want < have {
+ pterm.Info.Println(
+ "block time is higher then recommended when creating ibc channels: ",
+ have,
+ )
+ pterm.Info.Println("updating dymint config")
+
+ err = utils.UpdateFieldInToml(dymintPath, "max_idle_time", want.String())
+ if err != nil {
+ return err
+ }
+ err = utils.UpdateFieldInToml(dymintPath, "batch_submit_max_time", want.String())
+ if err != nil {
+ return err
+ }
+ err = utils.UpdateFieldInToml(dymintPath, "max_proof_time", want.String())
+ if err != nil {
+ return err
+ }
+ }
+
+ pterm.DefaultInteractiveConfirm.WithDefaultText(
+ "would you like roller to restart your rollapp process?",
+ )
+
+ return nil
+}
diff --git a/utils/rollapp/rollapp.go b/utils/rollapp/rollapp.go
new file mode 100644
index 00000000..22d24e4f
--- /dev/null
+++ b/utils/rollapp/rollapp.go
@@ -0,0 +1,110 @@
+package rollapp
+
+import (
+ "encoding/json"
+ "fmt"
+ "os/exec"
+ "strings"
+
+ dymensiontypes "github.com/dymensionxyz/dymension/v3/x/rollapp/types"
+ tmtypes "github.com/tendermint/tendermint/types"
+
+ "github.com/dymensionxyz/roller/cmd/consts"
+ globalutils "github.com/dymensionxyz/roller/cmd/utils"
+ sequencerutils "github.com/dymensionxyz/roller/utils/sequencer"
+)
+
+func GetCurrentHeight() (*BlockInformation, error) {
+ cmd := getCurrentBlockCmd()
+ out, err := globalutils.ExecBashCommandWithStdout(cmd)
+ if err != nil {
+ return nil, nil
+ }
+
+ var blockInfo BlockInformation
+ err = json.Unmarshal(out.Bytes(), &blockInfo)
+ if err != nil {
+ return nil, err
+ }
+
+ return &blockInfo, nil
+}
+
+func getCurrentBlockCmd() *exec.Cmd {
+ cmd := exec.Command(
+ consts.Executables.RollappEVM,
+ "q",
+ "block",
+ )
+ return cmd
+}
+
+func GetInitialSequencerAddress(raID string) (string, error) {
+ cmd := exec.Command(
+ consts.Executables.Dymension,
+ "q",
+ "rollapp",
+ "show",
+ raID,
+ "-o",
+ "json",
+ )
+
+ out, err := globalutils.ExecBashCommandWithStdout(cmd)
+ if err != nil {
+ fmt.Println(err)
+ }
+
+ var ra dymensiontypes.QueryGetRollappResponse
+ _ = json.Unmarshal(out.Bytes(), &ra)
+
+ return ra.Rollapp.InitialSequencerAddress, nil
+}
+
+func IsInitialSequencer(addr, raID string) (bool, error) {
+ initSeqAddr, err := GetInitialSequencerAddress(raID)
+ if err != nil {
+ return false, err
+ }
+
+ if strings.TrimSpace(addr) == strings.TrimSpace(initSeqAddr) {
+ return true, nil
+ }
+
+ return false, nil
+}
+
+func GetRegisteredSequencers(
+ raID string,
+) (*Sequencers, error) {
+ var seq Sequencers
+ cmd := exec.Command(
+ consts.Executables.Dymension,
+ "q",
+ "sequencer",
+ "show-sequencers-by-rollapp",
+ raID,
+ "--output", "json",
+ )
+
+ out, err := globalutils.ExecBashCommandWithStdout(cmd)
+ if err != nil {
+ return nil, err
+ }
+
+ err = json.Unmarshal(out.Bytes(), &seq)
+ if err != nil {
+ return nil, err
+ }
+
+ return &seq, nil
+}
+
+type BlockInformation struct {
+ BlockId tmtypes.BlockID `json:"block_id"`
+ Block tmtypes.Block `json:"block"`
+}
+
+type Sequencers struct {
+ Sequencers []sequencerutils.Info `json:"sequencers,omitempty"`
+}
diff --git a/utils/sequencer/sequencer.go b/utils/sequencer/sequencer.go
new file mode 100644
index 00000000..81317e98
--- /dev/null
+++ b/utils/sequencer/sequencer.go
@@ -0,0 +1,112 @@
+package sequencer
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "slices"
+ "strings"
+
+ cosmossdktypes "github.com/cosmos/cosmos-sdk/types"
+ dymensionseqtypes "github.com/dymensionxyz/dymension/v3/x/sequencer/types"
+
+ "github.com/dymensionxyz/roller/cmd/consts"
+ "github.com/dymensionxyz/roller/cmd/utils"
+ "github.com/dymensionxyz/roller/config"
+)
+
+func Register(raCfg config.RollappConfig) error {
+ seqPubKey, err := utils.GetSequencerPubKey(raCfg)
+ if err != nil {
+ return err
+ }
+
+ seqMetadataPath := filepath.Join(
+ raCfg.Home,
+ consts.ConfigDirName.Rollapp,
+ "init",
+ "sequencer-metadata.json",
+ )
+ _, err = isValidSequencerMetadata(seqMetadataPath)
+ if err != nil {
+ return err
+ }
+
+ seqMinBond, err := GetMinSequencerBond()
+ if err != nil {
+ return err
+ }
+
+ cmd := exec.Command(
+ consts.Executables.Dymension,
+ "tx",
+ "sequencer",
+ "create-sequencer",
+ seqPubKey,
+ raCfg.RollappID,
+ seqMetadataPath,
+ fmt.Sprintf("%s%s", seqMinBond.Amount.String(), seqMinBond.Denom),
+ "--from", consts.KeysIds.HubSequencer,
+ "--keyring-backend", "test",
+ "--fees", "1000000000000000000adym",
+ "--keyring-dir", filepath.Join(utils.GetRollerRootDir(), consts.ConfigDirName.HubKeys),
+ )
+
+ err = utils.ExecBashCommandWithInput(cmd)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func isValidSequencerMetadata(path string) (bool, error) {
+ f, err := os.Open(path)
+ if err != nil {
+ return false, err
+ }
+
+ // nolint:errcheck
+ defer f.Close()
+
+ b, err := io.ReadAll(f)
+ if err != nil {
+ return false, err
+ }
+
+ var sm dymensionseqtypes.SequencerMetadata
+ err = json.Unmarshal(b, &sm)
+ if err != nil {
+ return false, err
+ }
+
+ return true, err
+}
+
+func GetMinSequencerBond() (*cosmossdktypes.Coin, error) {
+ var qpr dymensionseqtypes.QueryParamsResponse
+ cmd := exec.Command(
+ consts.Executables.Dymension,
+ "q", "sequencer", "params", "-o", "json",
+ )
+
+ out, err := utils.ExecBashCommandWithStdout(cmd)
+ if err != nil {
+ return nil, err
+ }
+
+ _ = json.Unmarshal(out.Bytes(), &qpr)
+
+ return &qpr.Params.MinBond, nil
+}
+
+// TODO: dymd q sequencer show-sequencer could be used instead
+func IsRegisteredAsSequencer(seq []Info, addr string) bool {
+ return slices.ContainsFunc(
+ seq,
+ func(s Info) bool { return strings.Compare(s.Address, addr) == 0 },
+ )
+}
diff --git a/utils/sequencer/types.go b/utils/sequencer/types.go
new file mode 100644
index 00000000..c1a6cfe7
--- /dev/null
+++ b/utils/sequencer/types.go
@@ -0,0 +1,32 @@
+package sequencer
+
+import (
+ "time"
+
+ cosmossdktypes "github.com/cosmos/cosmos-sdk/types"
+ dymensionseqtypes "github.com/dymensionxyz/dymension/v3/x/sequencer/types"
+ "github.com/gogo/protobuf/types"
+)
+
+type Info struct {
+ // address is the bech32-encoded address of the sequencer account which is the account that the message was sent from.
+ Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
+ // pubkey is the public key of the sequencers' dymint client, as a Protobuf Any.
+ DymintPubKey *types.Any `protobuf:"bytes,2,opt,name=dymintPubKey,proto3" json:"dymintPubKey,omitempty"`
+ // rollappId defines the rollapp to which the sequencer belongs.
+ RollappId string `protobuf:"bytes,3,opt,name=rollappId,proto3" json:"rollappId,omitempty"`
+ // metadata defines the extra information for the sequencer.
+ Metadata dymensionseqtypes.SequencerMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata"`
+ // jailed defined whether the sequencer has been jailed from bonded status or not.
+ Jailed bool `protobuf:"varint,5,opt,name=jailed,proto3" json:"jailed,omitempty"`
+ // proposer defines whether the sequencer is a proposer or not.
+ Proposer bool `protobuf:"varint,6,opt,name=proposer,proto3" json:"proposer,omitempty"`
+ // status is the sequencer status (bonded/unbonding/unbonded).
+ Status string `protobuf:"varint,7,opt,name=status,proto3,enum=dymensionxyz.dymension.sequencer.OperatingStatus" json:"status,omitempty"`
+ // tokens define the delegated tokens (incl. self-delegation).
+ Tokens cosmossdktypes.Coins `protobuf:"bytes,8,rep,name=tokens,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"tokens"`
+ // unbonding_height defines, if unbonding, the height at which this sequencer has begun unbonding.
+ UnbondingHeight string `protobuf:"varint,9,opt,name=unbonding_height,json=unbondingHeight,proto3" json:"unbonding_height,omitempty"`
+ // unbond_time defines, if unbonding, the min time for the sequencer to complete unbonding.
+ UnbondTime time.Time `protobuf:"bytes,10,opt,name=unbond_time,json=unbondTime,proto3,stdtime" json:"unbond_time"`
+}
diff --git a/utils/yaml.go b/utils/yaml.go
index 1e5b151b..79c28c55 100644
--- a/utils/yaml.go
+++ b/utils/yaml.go
@@ -16,7 +16,7 @@ func SetNestedValue(data map[interface{}]interface{}, keyPath []string, value in
}
nextMap, ok := data[keyPath[0]].(map[interface{}]interface{})
if !ok {
- return fmt.Errorf("failed to get nested map for key: %s", keyPath[0])
+ return fmt.Errorf("failed to set nested map for key: %s", keyPath[0])
}
return SetNestedValue(nextMap, keyPath[1:], value)
}