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) }