From 2fd55eeca068a8c68241630fbca6276910df5e14 Mon Sep 17 00:00:00 2001 From: beer-1 <147697694+beer-1@users.noreply.github.com> Date: Tue, 7 Nov 2023 16:35:16 +0900 Subject: [PATCH] move bots to inner directory & initial commit of OPinit --- .clang-format | 116 + .codecov.yml | 35 + .gitattributes | 3 + .gitignore | 60 +- .golangci.yml | 26 + LICENSE | 130 +- LICENSE.header | 19 + Makefile | 28 + README.md | 120 +- .dockerignore => bots/.dockerignore | 0 .env => bots/.env | 0 .envrc_sample => bots/.envrc_sample | 0 .eslintignore => bots/.eslintignore | 0 .eslintrc.js => bots/.eslintrc.js | 0 bots/.gitignore | 18 + .gitmodules => bots/.gitmodules | 0 {.husky => bots/.husky}/pre-commit | 0 Dockerfile => bots/Dockerfile | 0 bots/LICENSE | 21 + bots/README.md | 124 + .../apidoc-template}/index.html | 0 batch.json => bots/batch.json | 0 challenger.json => bots/challenger.json | 0 .../docker-compose-reset | 0 docker-compose.yml => bots/docker-compose.yml | 0 entrypoint.sh => bots/entrypoint.sh | 0 executor.json => bots/executor.json | 0 jest.config.ts => bots/jest.config.ts | 0 output.json => bots/output.json | 0 package-lock.json => bots/package-lock.json | 0 package.json => bots/package.json | 0 {src => bots/src}/config.ts | 0 .../src}/controller/batch/BatchController.ts | 0 .../controller/executor/CoinController.ts | 0 .../controller/executor/OutputController.ts | 0 .../src}/controller/executor/TxController.ts | 0 {src => bots/src}/controller/index.ts | 0 {src => bots/src}/lib/apiRequest.ts | 0 {src => bots/src}/lib/compressor.ts | 0 {src => bots/src}/lib/error.ts | 0 {src => bots/src}/lib/lcd.ts | 0 {src => bots/src}/lib/logger.ts | 0 {src => bots/src}/lib/monitoring.ts | 0 {src => bots/src}/lib/response.ts | 0 {src => bots/src}/lib/rpc.ts | 0 {src => bots/src}/lib/storage.ts | 0 {src => bots/src}/lib/tx.ts | 0 {src => bots/src}/lib/types.ts | 0 {src => bots/src}/lib/util.ts | 0 {src => bots/src}/lib/wallet.ts | 0 {src => bots/src}/loader/apidoc.ts | 0 {src => bots/src}/loader/app.ts | 0 {src => bots/src}/loader/generateApiDoc.ts | 0 {src => bots/src}/loader/index.ts | 0 {src => bots/src}/loader/server.ts | 0 .../src}/orm/CamelToSnakeNamingStrategy.js | 0 {src => bots/src}/orm/RecordEntity.ts | 0 {src => bots/src}/orm/StateEntity.ts | 0 .../src}/orm/challenger/CoinEntity.ts | 0 .../orm/challenger/DeletedOutputEntity.ts | 0 .../src}/orm/challenger/DepositTxEntity.ts | 0 .../src}/orm/challenger/OutputEntity.ts | 0 .../src}/orm/challenger/WithdrawalTxEntity.ts | 0 {src => bots/src}/orm/executor/CoinEntity.ts | 0 .../src}/orm/executor/DepositTxEntity.ts | 0 .../src}/orm/executor/FailedTxEntity.ts | 0 .../src}/orm/executor/OutputEntity.ts | 0 .../src}/orm/executor/WithdrawalTxEntity.ts | 0 {src => bots/src}/orm/index.ts | 0 {src => bots/src}/scripts/contract/Move.toml | 0 .../src}/scripts/contract/sources/l2id.move | 0 {src => bots/src}/scripts/setupL2.ts | 0 .../src}/service/batch/BatchService.ts | 0 .../src}/service/executor/CoinService.ts | 0 .../src}/service/executor/OutputService.ts | 0 .../src}/service/executor/TxService.ts | 0 {src => bots/src}/service/index.ts | 0 {src => bots/src}/test/compressor.spec.ts | 0 {src => bots/src}/test/contract/Move.toml | 0 .../src}/test/contract/sources/l2id.move | 0 {src => bots/src}/test/integration.ts | 0 {src => bots/src}/test/utils/Bridge.ts | 0 {src => bots/src}/test/utils/DockerHelper.ts | 0 {src => bots/src}/test/utils/TxBot.ts | 0 {src => bots/src}/test/utils/helper.ts | 0 .../worker/batchSubmitter/batchSubmitter.ts | 0 {src => bots/src}/worker/batchSubmitter/db.ts | 0 .../src}/worker/batchSubmitter/index.ts | 0 .../src}/worker/bridgeExecutor/L1Monitor.ts | 0 .../src}/worker/bridgeExecutor/L2Monitor.ts | 0 .../src}/worker/bridgeExecutor/Monitor.ts | 0 .../worker/bridgeExecutor/MonitorHelper.ts | 0 {src => bots/src}/worker/bridgeExecutor/db.ts | 0 .../src}/worker/bridgeExecutor/index.ts | 0 .../worker/challenger/ChallegnerHelper.ts | 0 .../src}/worker/challenger/L1Monitor.ts | 0 .../src}/worker/challenger/L2Monitor.ts | 0 .../src}/worker/challenger/challenger.ts | 0 {src => bots/src}/worker/challenger/db.ts | 0 {src => bots/src}/worker/challenger/index.ts | 0 .../src}/worker/outputSubmitter/index.ts | 0 .../worker/outputSubmitter/outputSubmitter.ts | 0 tsconfig.json => bots/tsconfig.json | 0 typedoc.json => bots/typedoc.json | 0 webpack.config.js => bots/webpack.config.js | 0 go.mod | 189 + go.sum | 1637 +++++++ local-initia | 1 - proto/buf.gen.gogo.yaml | 8 + proto/buf.lock | 23 + proto/buf.md | 3 + proto/buf.yaml | 23 + proto/op_init/op_child/module/v1/module.proto | 16 + proto/op_init/op_child/v1/genesis.proto | 39 + proto/op_init/op_child/v1/query.proto | 72 + proto/op_init/op_child/v1/tx.proto | 231 + proto/op_init/op_child/v1/types.proto | 82 + proto/op_init/op_host/module/v1/module.proto | 16 + proto/op_init/op_host/v1/genesis.proto | 36 + proto/op_init/op_host/v1/query.proto | 166 + proto/op_init/op_host/v1/tx.proto | 225 + proto/op_init/op_host/v1/types.proto | 59 + scripts/protocgen.sh | 26 + x/op_child/abci.go | 32 + x/op_child/ante/ante_test.go | 115 + x/op_child/ante/context_keys.go | 6 + x/op_child/ante/fee.go | 57 + x/op_child/ante/fee_test.go | 117 + x/op_child/ante/fee_utils.go | 36 + x/op_child/client/cli/flags.go | 10 + x/op_child/client/cli/legacy_contents.go | 228 + x/op_child/client/cli/query.go | 202 + x/op_child/client/cli/query_test.go | 82 + x/op_child/client/cli/tx.go | 215 + x/op_child/client/cli/tx_test.go | 380 ++ x/op_child/client/cli/util.go | 42 + x/op_child/genesis.go | 37 + x/op_child/keeper/alias_functions.go | 80 + x/op_child/keeper/common_test.go | 378 ++ x/op_child/keeper/compatibility_grpc_query.go | 80 + x/op_child/keeper/genesis.go | 97 + x/op_child/keeper/historical_info.go | 79 + x/op_child/keeper/keeper.go | 85 + x/op_child/keeper/msg_server.go | 355 ++ x/op_child/keeper/msg_server_test.go | 339 ++ x/op_child/keeper/params.go | 43 + x/op_child/keeper/querier.go | 84 + x/op_child/keeper/sequences.go | 33 + x/op_child/keeper/staking.go | 25 + x/op_child/keeper/val_state_change.go | 122 + x/op_child/keeper/val_state_change_test.go | 50 + x/op_child/keeper/validator.go | 234 + x/op_child/keeper/validator_test.go | 154 + x/op_child/module.go | 144 + x/op_child/types/codec.go | 64 + x/op_child/types/errors.go | 18 + x/op_child/types/events.go | 26 + x/op_child/types/expected_keepers.go | 53 + x/op_child/types/exported.go | 29 + x/op_child/types/genesis.go | 89 + x/op_child/types/genesis.pb.go | 752 ++++ x/op_child/types/historical_info.go | 64 + x/op_child/types/hook.go | 7 + x/op_child/types/keys.go | 81 + x/op_child/types/params.go | 73 + x/op_child/types/query.pb.go | 1409 ++++++ x/op_child/types/query.pb.gw.go | 337 ++ x/op_child/types/staking.go | 27 + x/op_child/types/tx.go | 611 +++ x/op_child/types/tx.pb.go | 3677 +++++++++++++++ x/op_child/types/types.pb.go | 1207 +++++ x/op_child/types/validator.go | 257 ++ x/op_host/types/genesis.pb.go | 865 ++++ x/op_host/types/params.go | 11 + x/op_host/types/query.pb.go | 3641 +++++++++++++++ x/op_host/types/query.pb.gw.go | 936 ++++ x/op_host/types/tx.pb.go | 3925 +++++++++++++++++ x/op_host/types/types.pb.go | 1257 ++++++ 178 files changed, 26759 insertions(+), 150 deletions(-) create mode 100644 .clang-format create mode 100644 .codecov.yml create mode 100644 .gitattributes create mode 100644 .golangci.yml create mode 100644 LICENSE.header create mode 100644 Makefile rename .dockerignore => bots/.dockerignore (100%) rename .env => bots/.env (100%) rename .envrc_sample => bots/.envrc_sample (100%) rename .eslintignore => bots/.eslintignore (100%) rename .eslintrc.js => bots/.eslintrc.js (100%) create mode 100644 bots/.gitignore rename .gitmodules => bots/.gitmodules (100%) rename {.husky => bots/.husky}/pre-commit (100%) rename Dockerfile => bots/Dockerfile (100%) create mode 100644 bots/LICENSE create mode 100644 bots/README.md rename {apidoc-template => bots/apidoc-template}/index.html (100%) rename batch.json => bots/batch.json (100%) rename challenger.json => bots/challenger.json (100%) rename docker-compose-reset => bots/docker-compose-reset (100%) rename docker-compose.yml => bots/docker-compose.yml (100%) rename entrypoint.sh => bots/entrypoint.sh (100%) rename executor.json => bots/executor.json (100%) rename jest.config.ts => bots/jest.config.ts (100%) rename output.json => bots/output.json (100%) rename package-lock.json => bots/package-lock.json (100%) rename package.json => bots/package.json (100%) rename {src => bots/src}/config.ts (100%) rename {src => bots/src}/controller/batch/BatchController.ts (100%) rename {src => bots/src}/controller/executor/CoinController.ts (100%) rename {src => bots/src}/controller/executor/OutputController.ts (100%) rename {src => bots/src}/controller/executor/TxController.ts (100%) rename {src => bots/src}/controller/index.ts (100%) rename {src => bots/src}/lib/apiRequest.ts (100%) rename {src => bots/src}/lib/compressor.ts (100%) rename {src => bots/src}/lib/error.ts (100%) rename {src => bots/src}/lib/lcd.ts (100%) rename {src => bots/src}/lib/logger.ts (100%) rename {src => bots/src}/lib/monitoring.ts (100%) rename {src => bots/src}/lib/response.ts (100%) rename {src => bots/src}/lib/rpc.ts (100%) rename {src => bots/src}/lib/storage.ts (100%) rename {src => bots/src}/lib/tx.ts (100%) rename {src => bots/src}/lib/types.ts (100%) rename {src => bots/src}/lib/util.ts (100%) rename {src => bots/src}/lib/wallet.ts (100%) rename {src => bots/src}/loader/apidoc.ts (100%) rename {src => bots/src}/loader/app.ts (100%) rename {src => bots/src}/loader/generateApiDoc.ts (100%) rename {src => bots/src}/loader/index.ts (100%) rename {src => bots/src}/loader/server.ts (100%) rename {src => bots/src}/orm/CamelToSnakeNamingStrategy.js (100%) rename {src => bots/src}/orm/RecordEntity.ts (100%) rename {src => bots/src}/orm/StateEntity.ts (100%) rename {src => bots/src}/orm/challenger/CoinEntity.ts (100%) rename {src => bots/src}/orm/challenger/DeletedOutputEntity.ts (100%) rename {src => bots/src}/orm/challenger/DepositTxEntity.ts (100%) rename {src => bots/src}/orm/challenger/OutputEntity.ts (100%) rename {src => bots/src}/orm/challenger/WithdrawalTxEntity.ts (100%) rename {src => bots/src}/orm/executor/CoinEntity.ts (100%) rename {src => bots/src}/orm/executor/DepositTxEntity.ts (100%) rename {src => bots/src}/orm/executor/FailedTxEntity.ts (100%) rename {src => bots/src}/orm/executor/OutputEntity.ts (100%) rename {src => bots/src}/orm/executor/WithdrawalTxEntity.ts (100%) rename {src => bots/src}/orm/index.ts (100%) rename {src => bots/src}/scripts/contract/Move.toml (100%) rename {src => bots/src}/scripts/contract/sources/l2id.move (100%) rename {src => bots/src}/scripts/setupL2.ts (100%) rename {src => bots/src}/service/batch/BatchService.ts (100%) rename {src => bots/src}/service/executor/CoinService.ts (100%) rename {src => bots/src}/service/executor/OutputService.ts (100%) rename {src => bots/src}/service/executor/TxService.ts (100%) rename {src => bots/src}/service/index.ts (100%) rename {src => bots/src}/test/compressor.spec.ts (100%) rename {src => bots/src}/test/contract/Move.toml (100%) rename {src => bots/src}/test/contract/sources/l2id.move (100%) rename {src => bots/src}/test/integration.ts (100%) rename {src => bots/src}/test/utils/Bridge.ts (100%) rename {src => bots/src}/test/utils/DockerHelper.ts (100%) rename {src => bots/src}/test/utils/TxBot.ts (100%) rename {src => bots/src}/test/utils/helper.ts (100%) rename {src => bots/src}/worker/batchSubmitter/batchSubmitter.ts (100%) rename {src => bots/src}/worker/batchSubmitter/db.ts (100%) rename {src => bots/src}/worker/batchSubmitter/index.ts (100%) rename {src => bots/src}/worker/bridgeExecutor/L1Monitor.ts (100%) rename {src => bots/src}/worker/bridgeExecutor/L2Monitor.ts (100%) rename {src => bots/src}/worker/bridgeExecutor/Monitor.ts (100%) rename {src => bots/src}/worker/bridgeExecutor/MonitorHelper.ts (100%) rename {src => bots/src}/worker/bridgeExecutor/db.ts (100%) rename {src => bots/src}/worker/bridgeExecutor/index.ts (100%) rename {src => bots/src}/worker/challenger/ChallegnerHelper.ts (100%) rename {src => bots/src}/worker/challenger/L1Monitor.ts (100%) rename {src => bots/src}/worker/challenger/L2Monitor.ts (100%) rename {src => bots/src}/worker/challenger/challenger.ts (100%) rename {src => bots/src}/worker/challenger/db.ts (100%) rename {src => bots/src}/worker/challenger/index.ts (100%) rename {src => bots/src}/worker/outputSubmitter/index.ts (100%) rename {src => bots/src}/worker/outputSubmitter/outputSubmitter.ts (100%) rename tsconfig.json => bots/tsconfig.json (100%) rename typedoc.json => bots/typedoc.json (100%) rename webpack.config.js => bots/webpack.config.js (100%) create mode 100644 go.mod create mode 100644 go.sum delete mode 160000 local-initia create mode 100644 proto/buf.gen.gogo.yaml create mode 100644 proto/buf.lock create mode 100644 proto/buf.md create mode 100644 proto/buf.yaml create mode 100644 proto/op_init/op_child/module/v1/module.proto create mode 100644 proto/op_init/op_child/v1/genesis.proto create mode 100644 proto/op_init/op_child/v1/query.proto create mode 100644 proto/op_init/op_child/v1/tx.proto create mode 100644 proto/op_init/op_child/v1/types.proto create mode 100644 proto/op_init/op_host/module/v1/module.proto create mode 100644 proto/op_init/op_host/v1/genesis.proto create mode 100644 proto/op_init/op_host/v1/query.proto create mode 100644 proto/op_init/op_host/v1/tx.proto create mode 100644 proto/op_init/op_host/v1/types.proto create mode 100755 scripts/protocgen.sh create mode 100644 x/op_child/abci.go create mode 100644 x/op_child/ante/ante_test.go create mode 100644 x/op_child/ante/context_keys.go create mode 100644 x/op_child/ante/fee.go create mode 100644 x/op_child/ante/fee_test.go create mode 100644 x/op_child/ante/fee_utils.go create mode 100644 x/op_child/client/cli/flags.go create mode 100644 x/op_child/client/cli/legacy_contents.go create mode 100644 x/op_child/client/cli/query.go create mode 100644 x/op_child/client/cli/query_test.go create mode 100644 x/op_child/client/cli/tx.go create mode 100644 x/op_child/client/cli/tx_test.go create mode 100644 x/op_child/client/cli/util.go create mode 100644 x/op_child/genesis.go create mode 100644 x/op_child/keeper/alias_functions.go create mode 100644 x/op_child/keeper/common_test.go create mode 100644 x/op_child/keeper/compatibility_grpc_query.go create mode 100644 x/op_child/keeper/genesis.go create mode 100644 x/op_child/keeper/historical_info.go create mode 100644 x/op_child/keeper/keeper.go create mode 100644 x/op_child/keeper/msg_server.go create mode 100644 x/op_child/keeper/msg_server_test.go create mode 100644 x/op_child/keeper/params.go create mode 100644 x/op_child/keeper/querier.go create mode 100644 x/op_child/keeper/sequences.go create mode 100644 x/op_child/keeper/staking.go create mode 100644 x/op_child/keeper/val_state_change.go create mode 100644 x/op_child/keeper/val_state_change_test.go create mode 100644 x/op_child/keeper/validator.go create mode 100644 x/op_child/keeper/validator_test.go create mode 100644 x/op_child/module.go create mode 100644 x/op_child/types/codec.go create mode 100644 x/op_child/types/errors.go create mode 100644 x/op_child/types/events.go create mode 100644 x/op_child/types/expected_keepers.go create mode 100644 x/op_child/types/exported.go create mode 100644 x/op_child/types/genesis.go create mode 100644 x/op_child/types/genesis.pb.go create mode 100644 x/op_child/types/historical_info.go create mode 100644 x/op_child/types/hook.go create mode 100644 x/op_child/types/keys.go create mode 100644 x/op_child/types/params.go create mode 100644 x/op_child/types/query.pb.go create mode 100644 x/op_child/types/query.pb.gw.go create mode 100644 x/op_child/types/staking.go create mode 100644 x/op_child/types/tx.go create mode 100644 x/op_child/types/tx.pb.go create mode 100644 x/op_child/types/types.pb.go create mode 100644 x/op_child/types/validator.go create mode 100644 x/op_host/types/genesis.pb.go create mode 100644 x/op_host/types/params.go create mode 100644 x/op_host/types/query.pb.go create mode 100644 x/op_host/types/query.pb.gw.go create mode 100644 x/op_host/types/tx.pb.go create mode 100644 x/op_host/types/types.pb.go diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..7f662a4f --- /dev/null +++ b/.clang-format @@ -0,0 +1,116 @@ +--- +Language: Proto +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignEscapedNewlines: Right +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: true +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Empty +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: false +IndentPPDirectives: None +IndentWidth: 2 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +RawStringFormats: + - Delimiters: + - pb + Language: TextProto + BasedOnStyle: google +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 8 +UseTab: Never +... + diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000..bd21a4f4 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,35 @@ +coverage: + precision: 2 + round: down + range: 70...100 + + status: + project: + default: + threshold: 1% # allow this much decrease on project + changes: false + +comment: + layout: "reach, diff, files" + behavior: default # update if exists else create new + +ignore: + - "*.md" + - "*.rst" + - "cmd/" + - "contrib/" + - "docs/" + - "networks/" + - "proto/" + - "scripts/" + - "thrid_party/" + - "docker/" + - "client/" + - "custom/" + - "**/cli" + - "**/rest" + - "**/*.pb.go" + - "**/*.pb.gw.go" + - "**/test_utils.go" + - "**/module.go" + - "x/ibc/testing" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..2c7275ab --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +client/docs/* linguist-vendored=true +client/docs/swagger-ui/* linguist-vendored=true +docs/* linguist-documentation=true diff --git a/.gitignore b/.gitignore index 6c4b4922..fc91c27c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,52 @@ -*.log +# OS .DS_Store +*.swp +*.swo +*.swl +*.swm +*.swn +.vscode +.idea +*.code-workspace -.idea/ -.vscode/ -coverage/ +# Build +bin +build +vendor +.vendor-new +build +dist +tools/bin/* +examples/build/* +docs/_build +tools-stamp -node_modules/ -dist/ -apidoc/ -static/ +# Data - ideally these don't exist +examples/basecoin/app/data +baseapp/data/* +client/lcd/keys/* +remote/ansible/testnets +mytestnet -.envrc -build -logs/ -testing/ +# Testing +coverage.txt +profile.out +sim_log_file + +# Vagrant +.vagrant/ +*.box +*.log +vagrant + +# IDE +.idea/ +*.iml + +# Graphviz +dependency-graph.png -temp* \ No newline at end of file +# Latex +*.aux +*.out +*.synctex.gz diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 00000000..b261ffbf --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,26 @@ +linters: + disable-all: true + enable: + - errcheck + - golint + - ineffassign + - unconvert + - misspell + - govet + # - unused + # - deadcode + - goconst + - gosec + # - staticcheck +linters-settings: + gocyclo: + min-complexity: 11 + errcheck: + ignore: fmt:.*,io/ioutil:^Read.*,github.com/spf13/cobra:MarkFlagRequired,github.com/spf13/viper:BindPFlag + golint: + min-confidence: 1.1 +issues: + exclude: + - composite +run: + tests: false diff --git a/LICENSE b/LICENSE index d675d3b4..ef389f74 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,109 @@ -MIT License - -Copyright (c) 2020 Terraform Labs, PTE. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +Business Source License 1.1 + +License text copyright © 2023 MariaDB plc, All Rights Reserved. +“Business Source License” is a trademark of MariaDB plc. + +----------------------------------------------------------------------------- + +Parameters + +Licensor: Initia Labs Foundation + +Licensed Work: LayerZero CosmosSDK + The Licensed Work is (c) 2023 Initia Labs Foundation + +Additional Use Grant: None + +Change Date: 2028-01-01 + +Change License: GNU Lesser General Public License v3.0 or later + +For information about alternative licensing arrangements for the Software, +please visit: + +----------------------------------------------------------------------------- + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +----------------------------------------------------------------------------- + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. + +----------------------------------------------------------------------------- + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +For more information on the use of the Business Source License for MariaDB +products, please visit the MariaDB Business Source License FAQ at +. + +For more information on the use of the Business Source License generally, +please visit the Adopting and Developing Business Source License FAQ at +. diff --git a/LICENSE.header b/LICENSE.header new file mode 100644 index 00000000..4f4eb326 --- /dev/null +++ b/LICENSE.header @@ -0,0 +1,19 @@ +SPDX-License-Identifier: BUSL-1.1 + +Copyright (C) 2023, Initia Labs Foundation. All rights reserved. +Use of this software is govered by the Business Source License included +in the LICENSE file of this repository and at www.mariadb.com/bsl11. + +ANY USE OF THE LICENSED WORK IN VIOLATION OF THIS LICENSE WILL AUTOMATICALLY +TERMINATE YOUR RIGHTS UNDER THIS LICENSE FOR THE CURRENT AND ALL OTHER +VERSIONS OF THE LICENSED WORK. + +THIS LICENSE DOES NOT GRANT YOU ANY RIGHT IN ANY TRADEMARK OR LOGO OF +LICENSOR OR ITS AFFILIATES (PROVIDED THAT YOU MAY USE A TRADEMARK OR LOGO OF +LICENSOR AS EXPRESSLY REQUIRED BY THIS LICENSE). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..5441061e --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +#!/usr/bin/make -f + +DOCKER := $(shell which docker) + +############################################################################### +### Protobuf ### +############################################################################### + +protoVer=0.13.0 +protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer) +protoImage=$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) + +proto-all: proto-format proto-lint proto-gen + +proto-gen: + @echo "Generating Protobuf files" + @$(protoImage) sh ./scripts/protocgen.sh + +proto-format: + @$(protoImage) find ./ -name "*.proto" -exec clang-format -i {} \; + +proto-lint: + @$(protoImage) buf lint --error-format=json + +proto-check-breaking: + @$(protoImage) buf breaking --against $(HTTPS_GIT)#branch=main + +.PHONY: proto-all proto-gen proto-format proto-lint proto-check-breaking diff --git a/README.md b/README.md index f2dec8bd..5f5b5d7b 100644 --- a/README.md +++ b/README.md @@ -1,119 +1,9 @@ -# Initia Rollup +# OPinit CosmosSDK Modules -Initia Optimistic Rollup Bots. You can check [Minitia](https://github.com/initia-labs/minitia) spec for more information. -- Batch Submitter: Submit batch to L1 node -- Output Submitter: Submit output to L1 node -- Challenger: Challenge invalid output -- Bridge Executor: Execute bridge transaction +This repository provides CosmosSDK modules for OPinit. Any app chain can use these modules to integrate OPinit. -# How to use +## How to Integrate -## Setup L2 +### Host(L1) Chain -Initializes the L2 id and op-bridge/output contracts. -You should set `submissionInterval`, `finalizedTime` and `l2StartBlockHeight` before initializing. - -```bash -export SUB_INTV=10 -export FIN_TIME=10 -export L2_HEIGHT=1 -npm run l2setup -``` - -## Bridge Executor - -Bridge executor is a bot that monitor L1, L2 node and execute bridge transaction. It will execute following steps. - -1. Publish L2 ID to L1 - - L2 ID should be published under executor account -2. Initialize bridge contract on L1 with L2 ID - - Execute `initialize` entry function in `bridge.move` -3. Run executor bot - - Execute L1, L2 monitor in bridge executor - ```bash - npm run executor - ``` - - If you use pm2, you can run executor with following command. - ```bash - pm2 start executor.json - ``` -4. Register coin to bridge store and prepare deposit store - - Execute `register_token` -5. Now you can deposit after registering coin is done - -## Batch Submitter - -Batch submitter is a background process that submits transaction batches to the BatchInbox module of L1. -You can run with following command. - -```bash -npm run batch -``` - -If you use pm2, - -```bash -pm2 start batch.json -``` - -## Output Submitter - -Output submitter is the component to store the L2 output root for block finalization. -Output submitter will get the L2 output results from executor and submit it to L1 using `propose_l2_output` in `output.move`. - -```bash -npm run output -``` - -If you use pm2, -```bash -pm2 start output.json -``` - -## Challenger - -Challenger is an entity capable of deleting invalid output proposals from the output oracle. - - -```bash -npm run challenger -``` - -If you use pm2, -```bash -pm2 start challenger.json -``` - -# Configuration - -| Name | Description | Default | -| ------------------------- | ------------------------------------------------------ | -------------------------------- | -| L1_LCD_URI | L1 node LCD URI | https://stone-rest.initia.tech' | -| L1_RPC_URI | L1 node RPC URI | https://stone-rpc.initia.tech' | -| L2_LCD_URI | L2 node LCD URI | http://localhost:1317 | -| L2_RPC_URI | L2 node RPC URI | http://localhost:26657 | -| L2ID | L2ID | '' | -| BATCH_PORT | Batch submitter port | 3000 | -| EXECUTOR_PORT | Executor port | 3001 | -| EXECUTOR_URI | Executor URI (for output submitter) | http://localhost:3000 | -| EXECUTOR_MNEMONIC | Mnemonic seed for executor | '' | -| BATCH_SUBMITTER_MNEMONIC | Mnemonic seed for submitter | '' | -| OUTPUT_SUBMITTER_MNEMONIC | Mnemonic seed for output submitter | '' | -| CHALLENGER_MNEMONIC | Mnemonic seed for challenger | '' | - - -> In Batch Submitter, we use [direnv](https://direnv.net) for managing environment variable for development. See [sample of .envrc](.envrc_sample) - -# Test - -Docker and docker-compose are required to run integration test. - -```bash -npm run test:integration -``` - -If you want to reset docker container, run following command. - -```bash -./docker-compose-reset -``` \ No newline at end of file +### Child(L2) Chain diff --git a/.dockerignore b/bots/.dockerignore similarity index 100% rename from .dockerignore rename to bots/.dockerignore diff --git a/.env b/bots/.env similarity index 100% rename from .env rename to bots/.env diff --git a/.envrc_sample b/bots/.envrc_sample similarity index 100% rename from .envrc_sample rename to bots/.envrc_sample diff --git a/.eslintignore b/bots/.eslintignore similarity index 100% rename from .eslintignore rename to bots/.eslintignore diff --git a/.eslintrc.js b/bots/.eslintrc.js similarity index 100% rename from .eslintrc.js rename to bots/.eslintrc.js diff --git a/bots/.gitignore b/bots/.gitignore new file mode 100644 index 00000000..6c4b4922 --- /dev/null +++ b/bots/.gitignore @@ -0,0 +1,18 @@ +*.log +.DS_Store + +.idea/ +.vscode/ +coverage/ + +node_modules/ +dist/ +apidoc/ +static/ + +.envrc +build +logs/ +testing/ + +temp* \ No newline at end of file diff --git a/.gitmodules b/bots/.gitmodules similarity index 100% rename from .gitmodules rename to bots/.gitmodules diff --git a/.husky/pre-commit b/bots/.husky/pre-commit similarity index 100% rename from .husky/pre-commit rename to bots/.husky/pre-commit diff --git a/Dockerfile b/bots/Dockerfile similarity index 100% rename from Dockerfile rename to bots/Dockerfile diff --git a/bots/LICENSE b/bots/LICENSE new file mode 100644 index 00000000..d675d3b4 --- /dev/null +++ b/bots/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Terraform Labs, PTE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/bots/README.md b/bots/README.md new file mode 100644 index 00000000..cf251db6 --- /dev/null +++ b/bots/README.md @@ -0,0 +1,124 @@ +# Initia Rollup JS + +Initia Optimistic Rollup Bots. + +- Batch Submitter: Submit batch to L1 node +- Output Submitter: Submit output to L1 node +- Challenger: Challenge invalid output +- Bridge Executor: Execute bridge transaction + +## How to use + +## Setup L2 + +Initializes the L2 id and op-bridge/output contracts. +You should set `submissionInterval`, `finalizedTime` and `l2StartBlockHeight` before initializing. + +```bash +export SUB_INTV=10 +export FIN_TIME=10 +export L2_HEIGHT=1 +npm run l2setup +``` + +## Bridge Executor + +Bridge executor is a bot that monitor L1, L2 node and execute bridge transaction. It will execute following steps. + +1. Publish L2 ID to L1 + - L2 ID should be published under executor account +2. Initialize bridge contract on L1 with L2 ID + - Execute `initialize` entry function in `bridge.move` +3. Run executor bot + - Execute L1, L2 monitor in bridge executor + + ```bash + npm run executor + ``` + + - If you use pm2, you can run executor with following command. + + ```bash + pm2 start executor.json + ``` + +4. Register coin to bridge store and prepare deposit store + - Execute `register_token` +5. Now you can deposit after registering coin is done + +## Batch Submitter + +Batch submitter is a background process that submits transaction batches to the BatchInbox module of L1. +You can run with following command. + +```bash +npm run batch +``` + +If you use pm2, + +```bash +pm2 start batch.json +``` + +## Output Submitter + +Output submitter is the component to store the L2 output root for block finalization. +Output submitter will get the L2 output results from executor and submit it to L1 using `propose_l2_output` in `output.move`. + +```bash +npm run output +``` + +If you use pm2, + +```bash +pm2 start output.json +``` + +## Challenger + +Challenger is an entity capable of deleting invalid output proposals from the output oracle. + +```bash +npm run challenger +``` + +If you use pm2, + +```bash +pm2 start challenger.json +``` + +## Configuration + +| Name | Description | Default | +| ------------------------- | ------------------------------------------------------ | -------------------------------- | +| L1_LCD_URI | L1 node LCD URI | ' | +| L1_RPC_URI | L1 node RPC URI | ' | +| L2_LCD_URI | L2 node LCD URI | | +| L2_RPC_URI | L2 node RPC URI | | +| L2ID | L2ID | '' | +| BATCH_PORT | Batch submitter port | 3000 | +| EXECUTOR_PORT | Executor port | 3001 | +| EXECUTOR_URI | Executor URI (for output submitter) | | +| EXECUTOR_MNEMONIC | Mnemonic seed for executor | '' | +| BATCH_SUBMITTER_MNEMONIC | Mnemonic seed for submitter | '' | +| OUTPUT_SUBMITTER_MNEMONIC | Mnemonic seed for output submitter | '' | +| CHALLENGER_MNEMONIC | Mnemonic seed for challenger | '' | + +> In Batch Submitter, we use [direnv](https://direnv.net) for managing environment variable for development. See [sample of .envrc](.envrc_sample) + +## Test + +Docker and docker-compose are required to run integration test. + +```bash +npm run test:integration +``` + +If you want to reset docker container, run following command. + +```bash +./docker-compose-reset +``` diff --git a/apidoc-template/index.html b/bots/apidoc-template/index.html similarity index 100% rename from apidoc-template/index.html rename to bots/apidoc-template/index.html diff --git a/batch.json b/bots/batch.json similarity index 100% rename from batch.json rename to bots/batch.json diff --git a/challenger.json b/bots/challenger.json similarity index 100% rename from challenger.json rename to bots/challenger.json diff --git a/docker-compose-reset b/bots/docker-compose-reset similarity index 100% rename from docker-compose-reset rename to bots/docker-compose-reset diff --git a/docker-compose.yml b/bots/docker-compose.yml similarity index 100% rename from docker-compose.yml rename to bots/docker-compose.yml diff --git a/entrypoint.sh b/bots/entrypoint.sh similarity index 100% rename from entrypoint.sh rename to bots/entrypoint.sh diff --git a/executor.json b/bots/executor.json similarity index 100% rename from executor.json rename to bots/executor.json diff --git a/jest.config.ts b/bots/jest.config.ts similarity index 100% rename from jest.config.ts rename to bots/jest.config.ts diff --git a/output.json b/bots/output.json similarity index 100% rename from output.json rename to bots/output.json diff --git a/package-lock.json b/bots/package-lock.json similarity index 100% rename from package-lock.json rename to bots/package-lock.json diff --git a/package.json b/bots/package.json similarity index 100% rename from package.json rename to bots/package.json diff --git a/src/config.ts b/bots/src/config.ts similarity index 100% rename from src/config.ts rename to bots/src/config.ts diff --git a/src/controller/batch/BatchController.ts b/bots/src/controller/batch/BatchController.ts similarity index 100% rename from src/controller/batch/BatchController.ts rename to bots/src/controller/batch/BatchController.ts diff --git a/src/controller/executor/CoinController.ts b/bots/src/controller/executor/CoinController.ts similarity index 100% rename from src/controller/executor/CoinController.ts rename to bots/src/controller/executor/CoinController.ts diff --git a/src/controller/executor/OutputController.ts b/bots/src/controller/executor/OutputController.ts similarity index 100% rename from src/controller/executor/OutputController.ts rename to bots/src/controller/executor/OutputController.ts diff --git a/src/controller/executor/TxController.ts b/bots/src/controller/executor/TxController.ts similarity index 100% rename from src/controller/executor/TxController.ts rename to bots/src/controller/executor/TxController.ts diff --git a/src/controller/index.ts b/bots/src/controller/index.ts similarity index 100% rename from src/controller/index.ts rename to bots/src/controller/index.ts diff --git a/src/lib/apiRequest.ts b/bots/src/lib/apiRequest.ts similarity index 100% rename from src/lib/apiRequest.ts rename to bots/src/lib/apiRequest.ts diff --git a/src/lib/compressor.ts b/bots/src/lib/compressor.ts similarity index 100% rename from src/lib/compressor.ts rename to bots/src/lib/compressor.ts diff --git a/src/lib/error.ts b/bots/src/lib/error.ts similarity index 100% rename from src/lib/error.ts rename to bots/src/lib/error.ts diff --git a/src/lib/lcd.ts b/bots/src/lib/lcd.ts similarity index 100% rename from src/lib/lcd.ts rename to bots/src/lib/lcd.ts diff --git a/src/lib/logger.ts b/bots/src/lib/logger.ts similarity index 100% rename from src/lib/logger.ts rename to bots/src/lib/logger.ts diff --git a/src/lib/monitoring.ts b/bots/src/lib/monitoring.ts similarity index 100% rename from src/lib/monitoring.ts rename to bots/src/lib/monitoring.ts diff --git a/src/lib/response.ts b/bots/src/lib/response.ts similarity index 100% rename from src/lib/response.ts rename to bots/src/lib/response.ts diff --git a/src/lib/rpc.ts b/bots/src/lib/rpc.ts similarity index 100% rename from src/lib/rpc.ts rename to bots/src/lib/rpc.ts diff --git a/src/lib/storage.ts b/bots/src/lib/storage.ts similarity index 100% rename from src/lib/storage.ts rename to bots/src/lib/storage.ts diff --git a/src/lib/tx.ts b/bots/src/lib/tx.ts similarity index 100% rename from src/lib/tx.ts rename to bots/src/lib/tx.ts diff --git a/src/lib/types.ts b/bots/src/lib/types.ts similarity index 100% rename from src/lib/types.ts rename to bots/src/lib/types.ts diff --git a/src/lib/util.ts b/bots/src/lib/util.ts similarity index 100% rename from src/lib/util.ts rename to bots/src/lib/util.ts diff --git a/src/lib/wallet.ts b/bots/src/lib/wallet.ts similarity index 100% rename from src/lib/wallet.ts rename to bots/src/lib/wallet.ts diff --git a/src/loader/apidoc.ts b/bots/src/loader/apidoc.ts similarity index 100% rename from src/loader/apidoc.ts rename to bots/src/loader/apidoc.ts diff --git a/src/loader/app.ts b/bots/src/loader/app.ts similarity index 100% rename from src/loader/app.ts rename to bots/src/loader/app.ts diff --git a/src/loader/generateApiDoc.ts b/bots/src/loader/generateApiDoc.ts similarity index 100% rename from src/loader/generateApiDoc.ts rename to bots/src/loader/generateApiDoc.ts diff --git a/src/loader/index.ts b/bots/src/loader/index.ts similarity index 100% rename from src/loader/index.ts rename to bots/src/loader/index.ts diff --git a/src/loader/server.ts b/bots/src/loader/server.ts similarity index 100% rename from src/loader/server.ts rename to bots/src/loader/server.ts diff --git a/src/orm/CamelToSnakeNamingStrategy.js b/bots/src/orm/CamelToSnakeNamingStrategy.js similarity index 100% rename from src/orm/CamelToSnakeNamingStrategy.js rename to bots/src/orm/CamelToSnakeNamingStrategy.js diff --git a/src/orm/RecordEntity.ts b/bots/src/orm/RecordEntity.ts similarity index 100% rename from src/orm/RecordEntity.ts rename to bots/src/orm/RecordEntity.ts diff --git a/src/orm/StateEntity.ts b/bots/src/orm/StateEntity.ts similarity index 100% rename from src/orm/StateEntity.ts rename to bots/src/orm/StateEntity.ts diff --git a/src/orm/challenger/CoinEntity.ts b/bots/src/orm/challenger/CoinEntity.ts similarity index 100% rename from src/orm/challenger/CoinEntity.ts rename to bots/src/orm/challenger/CoinEntity.ts diff --git a/src/orm/challenger/DeletedOutputEntity.ts b/bots/src/orm/challenger/DeletedOutputEntity.ts similarity index 100% rename from src/orm/challenger/DeletedOutputEntity.ts rename to bots/src/orm/challenger/DeletedOutputEntity.ts diff --git a/src/orm/challenger/DepositTxEntity.ts b/bots/src/orm/challenger/DepositTxEntity.ts similarity index 100% rename from src/orm/challenger/DepositTxEntity.ts rename to bots/src/orm/challenger/DepositTxEntity.ts diff --git a/src/orm/challenger/OutputEntity.ts b/bots/src/orm/challenger/OutputEntity.ts similarity index 100% rename from src/orm/challenger/OutputEntity.ts rename to bots/src/orm/challenger/OutputEntity.ts diff --git a/src/orm/challenger/WithdrawalTxEntity.ts b/bots/src/orm/challenger/WithdrawalTxEntity.ts similarity index 100% rename from src/orm/challenger/WithdrawalTxEntity.ts rename to bots/src/orm/challenger/WithdrawalTxEntity.ts diff --git a/src/orm/executor/CoinEntity.ts b/bots/src/orm/executor/CoinEntity.ts similarity index 100% rename from src/orm/executor/CoinEntity.ts rename to bots/src/orm/executor/CoinEntity.ts diff --git a/src/orm/executor/DepositTxEntity.ts b/bots/src/orm/executor/DepositTxEntity.ts similarity index 100% rename from src/orm/executor/DepositTxEntity.ts rename to bots/src/orm/executor/DepositTxEntity.ts diff --git a/src/orm/executor/FailedTxEntity.ts b/bots/src/orm/executor/FailedTxEntity.ts similarity index 100% rename from src/orm/executor/FailedTxEntity.ts rename to bots/src/orm/executor/FailedTxEntity.ts diff --git a/src/orm/executor/OutputEntity.ts b/bots/src/orm/executor/OutputEntity.ts similarity index 100% rename from src/orm/executor/OutputEntity.ts rename to bots/src/orm/executor/OutputEntity.ts diff --git a/src/orm/executor/WithdrawalTxEntity.ts b/bots/src/orm/executor/WithdrawalTxEntity.ts similarity index 100% rename from src/orm/executor/WithdrawalTxEntity.ts rename to bots/src/orm/executor/WithdrawalTxEntity.ts diff --git a/src/orm/index.ts b/bots/src/orm/index.ts similarity index 100% rename from src/orm/index.ts rename to bots/src/orm/index.ts diff --git a/src/scripts/contract/Move.toml b/bots/src/scripts/contract/Move.toml similarity index 100% rename from src/scripts/contract/Move.toml rename to bots/src/scripts/contract/Move.toml diff --git a/src/scripts/contract/sources/l2id.move b/bots/src/scripts/contract/sources/l2id.move similarity index 100% rename from src/scripts/contract/sources/l2id.move rename to bots/src/scripts/contract/sources/l2id.move diff --git a/src/scripts/setupL2.ts b/bots/src/scripts/setupL2.ts similarity index 100% rename from src/scripts/setupL2.ts rename to bots/src/scripts/setupL2.ts diff --git a/src/service/batch/BatchService.ts b/bots/src/service/batch/BatchService.ts similarity index 100% rename from src/service/batch/BatchService.ts rename to bots/src/service/batch/BatchService.ts diff --git a/src/service/executor/CoinService.ts b/bots/src/service/executor/CoinService.ts similarity index 100% rename from src/service/executor/CoinService.ts rename to bots/src/service/executor/CoinService.ts diff --git a/src/service/executor/OutputService.ts b/bots/src/service/executor/OutputService.ts similarity index 100% rename from src/service/executor/OutputService.ts rename to bots/src/service/executor/OutputService.ts diff --git a/src/service/executor/TxService.ts b/bots/src/service/executor/TxService.ts similarity index 100% rename from src/service/executor/TxService.ts rename to bots/src/service/executor/TxService.ts diff --git a/src/service/index.ts b/bots/src/service/index.ts similarity index 100% rename from src/service/index.ts rename to bots/src/service/index.ts diff --git a/src/test/compressor.spec.ts b/bots/src/test/compressor.spec.ts similarity index 100% rename from src/test/compressor.spec.ts rename to bots/src/test/compressor.spec.ts diff --git a/src/test/contract/Move.toml b/bots/src/test/contract/Move.toml similarity index 100% rename from src/test/contract/Move.toml rename to bots/src/test/contract/Move.toml diff --git a/src/test/contract/sources/l2id.move b/bots/src/test/contract/sources/l2id.move similarity index 100% rename from src/test/contract/sources/l2id.move rename to bots/src/test/contract/sources/l2id.move diff --git a/src/test/integration.ts b/bots/src/test/integration.ts similarity index 100% rename from src/test/integration.ts rename to bots/src/test/integration.ts diff --git a/src/test/utils/Bridge.ts b/bots/src/test/utils/Bridge.ts similarity index 100% rename from src/test/utils/Bridge.ts rename to bots/src/test/utils/Bridge.ts diff --git a/src/test/utils/DockerHelper.ts b/bots/src/test/utils/DockerHelper.ts similarity index 100% rename from src/test/utils/DockerHelper.ts rename to bots/src/test/utils/DockerHelper.ts diff --git a/src/test/utils/TxBot.ts b/bots/src/test/utils/TxBot.ts similarity index 100% rename from src/test/utils/TxBot.ts rename to bots/src/test/utils/TxBot.ts diff --git a/src/test/utils/helper.ts b/bots/src/test/utils/helper.ts similarity index 100% rename from src/test/utils/helper.ts rename to bots/src/test/utils/helper.ts diff --git a/src/worker/batchSubmitter/batchSubmitter.ts b/bots/src/worker/batchSubmitter/batchSubmitter.ts similarity index 100% rename from src/worker/batchSubmitter/batchSubmitter.ts rename to bots/src/worker/batchSubmitter/batchSubmitter.ts diff --git a/src/worker/batchSubmitter/db.ts b/bots/src/worker/batchSubmitter/db.ts similarity index 100% rename from src/worker/batchSubmitter/db.ts rename to bots/src/worker/batchSubmitter/db.ts diff --git a/src/worker/batchSubmitter/index.ts b/bots/src/worker/batchSubmitter/index.ts similarity index 100% rename from src/worker/batchSubmitter/index.ts rename to bots/src/worker/batchSubmitter/index.ts diff --git a/src/worker/bridgeExecutor/L1Monitor.ts b/bots/src/worker/bridgeExecutor/L1Monitor.ts similarity index 100% rename from src/worker/bridgeExecutor/L1Monitor.ts rename to bots/src/worker/bridgeExecutor/L1Monitor.ts diff --git a/src/worker/bridgeExecutor/L2Monitor.ts b/bots/src/worker/bridgeExecutor/L2Monitor.ts similarity index 100% rename from src/worker/bridgeExecutor/L2Monitor.ts rename to bots/src/worker/bridgeExecutor/L2Monitor.ts diff --git a/src/worker/bridgeExecutor/Monitor.ts b/bots/src/worker/bridgeExecutor/Monitor.ts similarity index 100% rename from src/worker/bridgeExecutor/Monitor.ts rename to bots/src/worker/bridgeExecutor/Monitor.ts diff --git a/src/worker/bridgeExecutor/MonitorHelper.ts b/bots/src/worker/bridgeExecutor/MonitorHelper.ts similarity index 100% rename from src/worker/bridgeExecutor/MonitorHelper.ts rename to bots/src/worker/bridgeExecutor/MonitorHelper.ts diff --git a/src/worker/bridgeExecutor/db.ts b/bots/src/worker/bridgeExecutor/db.ts similarity index 100% rename from src/worker/bridgeExecutor/db.ts rename to bots/src/worker/bridgeExecutor/db.ts diff --git a/src/worker/bridgeExecutor/index.ts b/bots/src/worker/bridgeExecutor/index.ts similarity index 100% rename from src/worker/bridgeExecutor/index.ts rename to bots/src/worker/bridgeExecutor/index.ts diff --git a/src/worker/challenger/ChallegnerHelper.ts b/bots/src/worker/challenger/ChallegnerHelper.ts similarity index 100% rename from src/worker/challenger/ChallegnerHelper.ts rename to bots/src/worker/challenger/ChallegnerHelper.ts diff --git a/src/worker/challenger/L1Monitor.ts b/bots/src/worker/challenger/L1Monitor.ts similarity index 100% rename from src/worker/challenger/L1Monitor.ts rename to bots/src/worker/challenger/L1Monitor.ts diff --git a/src/worker/challenger/L2Monitor.ts b/bots/src/worker/challenger/L2Monitor.ts similarity index 100% rename from src/worker/challenger/L2Monitor.ts rename to bots/src/worker/challenger/L2Monitor.ts diff --git a/src/worker/challenger/challenger.ts b/bots/src/worker/challenger/challenger.ts similarity index 100% rename from src/worker/challenger/challenger.ts rename to bots/src/worker/challenger/challenger.ts diff --git a/src/worker/challenger/db.ts b/bots/src/worker/challenger/db.ts similarity index 100% rename from src/worker/challenger/db.ts rename to bots/src/worker/challenger/db.ts diff --git a/src/worker/challenger/index.ts b/bots/src/worker/challenger/index.ts similarity index 100% rename from src/worker/challenger/index.ts rename to bots/src/worker/challenger/index.ts diff --git a/src/worker/outputSubmitter/index.ts b/bots/src/worker/outputSubmitter/index.ts similarity index 100% rename from src/worker/outputSubmitter/index.ts rename to bots/src/worker/outputSubmitter/index.ts diff --git a/src/worker/outputSubmitter/outputSubmitter.ts b/bots/src/worker/outputSubmitter/outputSubmitter.ts similarity index 100% rename from src/worker/outputSubmitter/outputSubmitter.ts rename to bots/src/worker/outputSubmitter/outputSubmitter.ts diff --git a/tsconfig.json b/bots/tsconfig.json similarity index 100% rename from tsconfig.json rename to bots/tsconfig.json diff --git a/typedoc.json b/bots/typedoc.json similarity index 100% rename from typedoc.json rename to bots/typedoc.json diff --git a/webpack.config.js b/bots/webpack.config.js similarity index 100% rename from webpack.config.js rename to bots/webpack.config.js diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..08cc9585 --- /dev/null +++ b/go.mod @@ -0,0 +1,189 @@ +module github.com/initia-labs/OPinit + +go 1.19 + +require ( + cosmossdk.io/errors v1.0.0 + cosmossdk.io/math v1.1.2 + cosmossdk.io/simapp v0.0.0-20230831152633-2e9e5d6eea24 + github.com/cometbft/cometbft v0.37.2 + github.com/cometbft/cometbft-db v0.8.0 + github.com/cosmos/cosmos-proto v1.0.0-beta.2 + github.com/cosmos/cosmos-sdk v0.47.5 + github.com/cosmos/gogoproto v1.4.10 + github.com/cosmos/ibc-go/v7 v7.3.1 + github.com/golang/protobuf v1.5.3 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cobra v1.7.0 + github.com/spf13/pflag v1.0.5 + github.com/stretchr/testify v1.8.4 + golang.org/x/crypto v0.11.0 + google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 + google.golang.org/grpc v1.56.2 + google.golang.org/protobuf v1.31.0 + gopkg.in/yaml.v3 v3.0.1 + sigs.k8s.io/yaml v1.3.0 +) + +require ( + cloud.google.com/go v0.110.4 // indirect + cloud.google.com/go/compute v1.20.1 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.0 // indirect + cloud.google.com/go/storage v1.30.1 // 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/log v1.2.1 // indirect + cosmossdk.io/tools/rosetta v0.2.1 // 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/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/aws/aws-sdk-go v1.44.203 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // 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/apd/v2 v2.0.2 // indirect + github.com/cockroachdb/errors v1.10.0 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect + github.com/confio/ics23/go v0.9.0 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/iavl v0.20.0 // indirect + github.com/cosmos/ics23/go v0.10.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect + github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect + github.com/creachadair/taskgroup v0.4.2 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.5.0 // indirect + github.com/felixge/httpsnoop v1.0.2 // indirect + github.com/fsnotify/fsnotify v1.6.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/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.1.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/google/s2a-go v0.1.4 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.11.0 // indirect + github.com/gorilla/handlers v1.5.1 // indirect + github.com/gorilla/mux v1.8.0 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.1.0 // indirect + github.com/huandu/skiplist v1.2.0 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.16.3 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/lib/pq v1.10.7 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/linxGnu/grocksdb v1.7.16 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/minio/highwayhash v1.0.2 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect + github.com/rakyll/statik v0.1.7 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rs/cors v1.8.3 // indirect + github.com/rs/zerolog v1.30.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/viper v1.16.0 // indirect + github.com/subosito/gotenv v1.4.2 // 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/ulikunitz/xz v0.5.11 // indirect + github.com/zondax/hid v0.9.1 // indirect + github.com/zondax/ledger-go v0.14.1 // indirect + go.etcd.io/bbolt v1.3.7 // indirect + go.opencensus.io v0.24.0 // indirect + golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb // indirect + golang.org/x/net v0.12.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/term v0.10.0 // indirect + golang.org/x/text v0.12.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.126.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + nhooyr.io/websocket v1.8.6 // indirect + pgregory.net/rapid v0.5.5 // indirect +) + +replace ( + // use cosmos fork of keyring + github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 + // dgrijalva/jwt-go is deprecated and doesn't receive security updates. + // TODO: remove it: https://github.com/cosmos/cosmos-sdk/issues/13134 + github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 + // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. + // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 + github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.8.1 + + // Downgraded to avoid bugs in following commits which caused simulations to fail. + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..a2edd73f --- /dev/null +++ b/go.sum @@ -0,0 +1,1637 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk= +cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= +cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +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.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= +cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= +cosmossdk.io/log v1.2.1 h1:Xc1GgTCicniwmMiKwDxUjO4eLhPxoVdI9vtMW8Ti/uk= +cosmossdk.io/log v1.2.1/go.mod h1:GNSCc/6+DhFIj1aLn/j7Id7PaO8DzNylUZoOYBL9+I4= +cosmossdk.io/math v1.1.2 h1:ORZetZCTyWkI5GlZ6CZS28fMHi83ZYf+A2vVnHNzZBM= +cosmossdk.io/math v1.1.2/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= +cosmossdk.io/simapp v0.0.0-20230831152633-2e9e5d6eea24 h1:A+LHM41uss8WNJ+qZCdvCjtiG6UiIN7ZqmPZz6R25wc= +cosmossdk.io/simapp v0.0.0-20230831152633-2e9e5d6eea24/go.mod h1:1kVkzonF2p6SYsSMXXURz/kx50QWArqazCk1Myulu8g= +cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= +cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +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/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= +github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.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 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +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.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +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/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +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.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 v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= +github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= +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/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= +github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= +github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= +github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= +github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= +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/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-beta.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= +github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= +github.com/cosmos/cosmos-sdk v0.47.5 h1:n1+WjP/VM/gAEOx3TqU2/Ny734rj/MX1kpUnn7zVJP8= +github.com/cosmos/cosmos-sdk v0.47.5/go.mod h1:EHwCeN9IXonsjKcjpS12MqeStdZvIdxt3VYXhus3G3c= +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.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +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.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= +github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= +github.com/cosmos/ibc-go/v7 v7.3.1 h1:bil1IjnHdyWDASFYKfwdRiNtFP6WK3osW7QFEAgU4I8= +github.com/cosmos/ibc-go/v7 v7.3.1/go.mod h1:wvx4pPBofe5ZdMNV3OFRxSI4auEP5Qfqf8JXLLNV04g= +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/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= +github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= +github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= +github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= +github.com/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/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= +github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +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/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +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/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.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +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/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= +github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= +github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +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.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +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/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +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.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +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-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +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= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.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/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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +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.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/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/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= +github.com/hashicorp/go-getter v1.7.1/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-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.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/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= +github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= +github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.7.16 h1:Q2co1xrpdkr5Hx3Fp+f+f7fRGhQFQhvi/+226dtLmA8= +github.com/linxGnu/grocksdb v1.7.16/go.mod h1:JkS7pl5qWpGpuVb3bPqTz8nC12X3YtPZT+Xq7+QfQo4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.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.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/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/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +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/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/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/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +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/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/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +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/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/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= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +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-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= +github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w= +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/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +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/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/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.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= +github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tendermint/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/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.1 h1:gQe66rtmyZ8VeGFcOpbuH3r7erYtNEAezCAYu8LdkJo= +github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c= +github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +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/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-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-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-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-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +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-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +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-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/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= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-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-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +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-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-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= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +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= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.126.0 h1:q4GJq+cAdMAC7XP7njvQ4tvohGLiSlytuL4BQxbIZ+o= +google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 h1:s5YSX+ZH5b5vS9rnpGymvIyMpLRJizowqDlOuyjXnTk= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +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/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= +pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/local-initia b/local-initia deleted file mode 160000 index 6cd6d273..00000000 --- a/local-initia +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6cd6d273b7eafa08e8e2455885ccaa56577b114f diff --git a/proto/buf.gen.gogo.yaml b/proto/buf.gen.gogo.yaml new file mode 100644 index 00000000..855ea251 --- /dev/null +++ b/proto/buf.gen.gogo.yaml @@ -0,0 +1,8 @@ +version: v1 +plugins: + - name: gocosmos + out: .. + opt: plugins=grpc,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types + - name: grpc-gateway + out: .. + opt: logtostderr=true,allow_colon_final_segments=true \ No newline at end of file diff --git a/proto/buf.lock b/proto/buf.lock new file mode 100644 index 00000000..89f0d190 --- /dev/null +++ b/proto/buf.lock @@ -0,0 +1,23 @@ +# Generated by buf. DO NOT EDIT. +version: v1 +deps: + - remote: buf.build + owner: cosmos + repository: cosmos-proto + commit: 1935555c206d4afb9e94615dfd0fad31 + digest: shake256:c74d91a3ac7ae07d579e90eee33abf9b29664047ac8816500cf22c081fec0d72d62c89ce0bebafc1f6fec7aa5315be72606717740ca95007248425102c365377 + - remote: buf.build + owner: cosmos + repository: cosmos-sdk + commit: 9d547dbea90f47afbe1898388fcebffb + digest: shake256:63237398fb2043153c81bbe91ce52a832bca02d4307334b62fcc9914ce6f12fea59388eb5102949255054973f7022f581e02f97ed1f69a6585d2d00fb1da5833 + - remote: buf.build + owner: cosmos + repository: gogo-proto + commit: 5e5b9fdd01804356895f8f79a6f1ddc1 + digest: shake256:0b85da49e2e5f9ebc4806eae058e2f56096ff3b1c59d1fb7c190413dd15f45dd456f0b69ced9059341c80795d2b6c943de15b120a9e0308b499e43e4b5fc2952 + - remote: buf.build + owner: googleapis + repository: googleapis + commit: cc916c31859748a68fd229a3c8d7a2e8 + digest: shake256:469b049d0eb04203d5272062636c078decefc96fec69739159c25d85349c50c34c7706918a8b216c5c27f76939df48452148cff8c5c3ae77fa6ba5c25c1b8bf8 diff --git a/proto/buf.md b/proto/buf.md new file mode 100644 index 00000000..76d4cf4a --- /dev/null +++ b/proto/buf.md @@ -0,0 +1,3 @@ +# Protobufs + +This is the public protocol buffers API for the [OPinit](https://github.com/initia-labs/OPinit). diff --git a/proto/buf.yaml b/proto/buf.yaml new file mode 100644 index 00000000..5c1d249e --- /dev/null +++ b/proto/buf.yaml @@ -0,0 +1,23 @@ +# This module represents buf.build/initia-labs/OPinit +version: v1 +name: buf.build/initia-labs/OPinit +deps: + - buf.build/cosmos/cosmos-sdk + - buf.build/cosmos/cosmos-proto + - buf.build/cosmos/gogo-proto + - buf.build/googleapis/googleapis + +breaking: + use: + - FILE +lint: + use: + - DEFAULT + - COMMENTS + - FILE_LOWER_SNAKE_CASE + except: + - UNARY_RPC + - COMMENT_FIELD + - SERVICE_SUFFIX + - PACKAGE_VERSION_SUFFIX + - RPC_REQUEST_STANDARD_NAME diff --git a/proto/op_init/op_child/module/v1/module.proto b/proto/op_init/op_child/module/v1/module.proto new file mode 100644 index 00000000..0f90e4a9 --- /dev/null +++ b/proto/op_init/op_child/module/v1/module.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; + +package op_init.op_child.module.v1; + +import "cosmos/app/v1alpha1/module.proto"; + +// Module is the config object of the builder module. +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import: "github.com/initia-labs/OPinit/x/op_child" + }; + + // Authority defines the custom module authority. + // If not set, defaults to the governance module. + string authority = 2; +} diff --git a/proto/op_init/op_child/v1/genesis.proto b/proto/op_init/op_child/v1/genesis.proto new file mode 100644 index 00000000..5f6dfef9 --- /dev/null +++ b/proto/op_init/op_child/v1/genesis.proto @@ -0,0 +1,39 @@ +syntax = "proto3"; +package op_init.op_child.v1; + +import "amino/amino.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "op_init/op_child/v1/types.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_child/types"; + +// GenesisState defines the rollup module's genesis state. +message GenesisState { + // params defines all the parameters of related to deposit. + Params params = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // last_validator_powers is a special index that provides a historical list + // of the last-block's bonded validators. + repeated LastValidatorPower last_validator_powers = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // delegations defines the validator set at genesis. + repeated Validator validators = 3 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // fee_pool defines the previous proposer at genesis. + string previous_proposer = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + bool exported = 5; +} + +// LastValidatorPower required for validator set update logic. +message LastValidatorPower { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + // address is the address of the validator. + string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // power defines the power of the validator. + int64 power = 2; +} diff --git a/proto/op_init/op_child/v1/query.proto b/proto/op_init/op_child/v1/query.proto new file mode 100644 index 00000000..3b346a3c --- /dev/null +++ b/proto/op_init/op_child/v1/query.proto @@ -0,0 +1,72 @@ +syntax = "proto3"; +package op_init.op_child.v1; + +import "amino/amino.proto"; +import "cosmos/base/query/v1beta1/pagination.proto"; +import "cosmos/query/v1/query.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/api/annotations.proto"; +import "op_init/op_child/v1/types.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_child/types"; + +// Query defines the gRPC querier service. +service Query { + // Validators queries all validators + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + rpc Validators(QueryValidatorsRequest) returns (QueryValidatorsResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_child/v1/validators"; + } + + // Validator queries validator info for given validator address. + rpc Validator(QueryValidatorRequest) returns (QueryValidatorResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_child/v1/validator/{validator_addr}"; + } + + // Parameters queries the rollup parameters. + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_child/v1/params"; + } +} + +// QueryValidatorsRequest is request type for Query/Validators RPC method. +message QueryValidatorsRequest { + // pagination defines an optional pagination for the request. + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +// QueryValidatorsResponse is response type for the Query/Validators RPC method +message QueryValidatorsResponse { + // validators contains all the queried validators. + repeated Validator validators = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // pagination defines the pagination in the response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryValidatorRequest is response type for the Query/Validator RPC method +message QueryValidatorRequest { + // validator_addr defines the validator address to query for. + string validator_addr = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; +} + +// QueryValidatorResponse is response type for the Query/Validator RPC method +message QueryValidatorResponse { + // validator defines the validator info. + Validator validator = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// QueryParamsRequest is request type for the Query/Params RPC method. +message QueryParamsRequest {} + +// QueryParamsResponse is response type for the Query/Params RPC method. +message QueryParamsResponse { + // params holds all the parameters of this module. + Params params = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} diff --git a/proto/op_init/op_child/v1/tx.proto b/proto/op_init/op_child/v1/tx.proto new file mode 100644 index 00000000..7ab0b56b --- /dev/null +++ b/proto/op_init/op_child/v1/tx.proto @@ -0,0 +1,231 @@ +syntax = "proto3"; +package op_init.op_child.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/any.proto"; +import "op_init/op_child/v1/types.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_child/types"; +option (gogoproto.goproto_getters_all) = false; + +// Msg defines the rollup Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + //////////////////////////// + // Validator Messages + + // ExecuteMessages defines a rpc handler method for MsgExecuteMessages. + rpc ExecuteMessages(MsgExecuteMessages) returns (MsgExecuteMessagesResponse); + + // ExecuteLegacyContents defines a rpc handler method for + // MsgExecuteLegacyContents. + rpc ExecuteLegacyContents(MsgExecuteLegacyContents) returns (MsgExecuteLegacyContentsResponse); + + //////////////////////////// + // Bridge Executor Messages + + // Deposit defines a rpc handler method for MsgDeposit. + rpc Deposit(MsgDeposit) returns (MsgDepositResponse); + + //////////////////////////// + // User Messages + + // Withdraw defines a user facing l2 => l1 token transfer interface. + rpc Withdraw(MsgWithdraw) returns (MsgWithdrawResponse); + + //////////////////////////// + // Authority Messages + + // AddValidator defines a rpc handler method for MsgAddValidator. + rpc AddValidator(MsgAddValidator) returns (MsgAddValidatorResponse); + + // RemoveValidator defines a rpc handler method for MsgRemoveValidator. + rpc RemoveValidator(MsgRemoveValidator) returns (MsgRemoveValidatorResponse); + + // UpdateParams defines an operation for updating the + // x/rollup module parameters. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); + + // SpendFeePool defines an operation that spend fee pool to a recipient. + rpc SpendFeePool(MsgSpendFeePool) returns (MsgSpendFeePoolResponse); +} + +/////////////////////////// +// Validator Messages + +// MsgExecuteMessages is a message to execute the given +// authority messages with validator permission. +message MsgExecuteMessages { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "op_child/MsgExecuteMessages"; + + // Sender is the that actor that signed a messages + string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // messages are the arbitrary messages to be executed. + repeated google.protobuf.Any messages = 2; +} + +// MsgExecuteMessagesResponse returns MsgExecuteMessages message result data +message MsgExecuteMessagesResponse {} + +// MsgExecuteLegacyContents is a message to execute legacy +// (gov) contents with validator permission. +message MsgExecuteLegacyContents { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "op_child/MsgExecuteLegacyContents"; + + // Sender is the that actor that signed a messages + string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // contents are the arbitrary legacy (gov) contents to be executed. + repeated google.protobuf.Any contents = 2; +} + +// MsgExecuteLegacyContentsResponse returns MsgExecuteLegacyContents message +// result data +message MsgExecuteLegacyContentsResponse {} + +///////////////////////////// +// Bridge Executor messages + +// MsgDeposit is a message to submit deposit funds from upper layer +message MsgDeposit { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "op_child/MsgDeposit"; + + // the sender address + string sender = 1 [(gogoproto.moretags) = "yaml:\"sender\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + + // from is l1 sender address + string from = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // to is l2 recipient address + string to = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // amount is the coin amount to deposit. + repeated cosmos.base.v1beta1.Coin amount = 4 [ + (gogoproto.moretags) = "yaml:\"amount\"", + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; + + // sequence is the sequence number of l1 bridge + uint64 sequence = 5; + + // height is the height of l1 which is including the deposit message + uint64 height = 6; + + /// data is a extra bytes for hooks. + bytes data = 7 [(gogoproto.nullable) = true, (amino.dont_omitempty) = true]; +} + +// MsgDepositResponse returns deposit result data +message MsgDepositResponse {} + +// MsgWithdraw is a message to withdraw a new token from L2 to L1. +message MsgWithdraw { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "op_child/MsgWithdraw"; + + // the l2 sender address + string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // to is l1 recipient address + string to = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // amount is the coin amount to withdraw. + cosmos.base.v1beta1.Coin amount = 4 + [(gogoproto.moretags) = "yaml:\"amount\"", (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// MsgWithdrawResponse returns create token result data +message MsgWithdrawResponse { + uint64 sequence = 1; +} + +/////////////////////////// +// Authority Messages + +// MsgAddValidator defines a SDK message for adding a new validator. +message MsgAddValidator { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "op_child/MsgAddValidator"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + // authority is the address that controls the module + // (defaults to x/rollup unless overwritten). + string authority = 1 [(gogoproto.moretags) = "yaml:\"authority\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + + string moniker = 2; + string validator_address = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + google.protobuf.Any pubkey = 4 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; +} + +// MsgAddValidatorResponse returns add result data +message MsgAddValidatorResponse {} + +// MsgAddValidator is a message to remove a validator from designated list +message MsgRemoveValidator { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "op_child/MsgRemoveValidator"; + + // authority is the address that controls the module + // (defaults to x/rollup unless overwritten). + string authority = 1 [(gogoproto.moretags) = "yaml:\"authority\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + + // validator is the validator to remove. + string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; +} + +// MsgAddValidatorResponse returns remove result data +message MsgRemoveValidatorResponse {} + +// MsgUpdateParams is a message to update parameters +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "op_child/MsgUpdateParams"; + + // authority is the address that controls the module + // (defaults to x/op_child unless overwritten). + string authority = 1 [(gogoproto.moretags) = "yaml:\"authority\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params are the arbitrary parameters to be updated. + Params params = 2; +} + +// MsgUpdateParamsResponse returns parameter update result data +message MsgUpdateParamsResponse {} + +// MsgSpendFeePool is a message to withdraw collected fees from the module +// account to the recipient address. +message MsgSpendFeePool { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "op_child/MsgSpendFeePool"; + + // authority is the address that controls the module + // (defaults to x/rollup unless overwritten). + string authority = 1 [(gogoproto.moretags) = "yaml:\"authority\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + + // recipient is address to receive the coins. + string recipient = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // the coin amount to spend. + repeated cosmos.base.v1beta1.Coin amount = 3 [ + (gogoproto.moretags) = "yaml:\"amount\"", + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; +} + +// MsgSpendFeePoolResponse returns deposit result data +message MsgSpendFeePoolResponse {} diff --git a/proto/op_init/op_child/v1/types.proto b/proto/op_init/op_child/v1/types.proto new file mode 100644 index 00000000..201fb0c4 --- /dev/null +++ b/proto/op_init/op_child/v1/types.proto @@ -0,0 +1,82 @@ +syntax = "proto3"; +package op_init.op_child.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/any.proto"; +import "tendermint/abci/types.proto"; +import "tendermint/types/types.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_child/types"; +option (gogoproto.equal_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// Params defines the set of move parameters. +message Params { + option (amino.name) = "op_child/Params"; + option (gogoproto.equal) = true; + option (gogoproto.goproto_stringer) = false; + + // max_validators is the maximum number of validators. + uint32 max_validators = 1 [(gogoproto.moretags) = "yaml:\"max_validators\""]; + // historical_entries is the number of historical entries to persist. + uint32 historical_entries = 2 [(gogoproto.moretags) = "yaml:\"historical_entries\""]; + repeated cosmos.base.v1beta1.DecCoin min_gas_prices = 3 [ + (gogoproto.moretags) = "yaml:\"min_gas_price\"", + (gogoproto.nullable) = false, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins" + ]; + // the account address of bridge executor who can execute permissioned bridge + // messages. + string bridge_executor = 4 [ + (cosmos_proto.scalar) = "cosmos.AddressString", + (amino.dont_omitempty) = true, + (gogoproto.moretags) = "yaml:\"bridge_executor\"" + ]; +} + +// HistoricalInfo contains header and validator information for a given block. +// It is stored as part of rollup module's state, which persists the `n` most +// recent HistoricalInfo +// (`n` is set by the rollup module's `historical_entries` parameter). +message HistoricalInfo { + option (gogoproto.equal) = false; + + tendermint.types.Header header = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + repeated Validator valset = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// Validator defines a validator, together with the total amount of the +// Validator's bond shares and their exchange rate to coins. Slashing results in +// a decrease in the exchange rate, allowing correct calculation of future +// undelegations without iterating over delegators. When coins are delegated to +// this validator, the validator is credited with a delegation whose number of +// bond shares is based on the amount of coins delegated divided by the current +// exchange rate. Voting power can be calculated as total bonded shares +// multiplied by exchange rate. +message Validator { + option (gogoproto.equal) = false; + option (gogoproto.goproto_stringer) = false; + option (gogoproto.goproto_getters) = false; + + string moniker = 1 [(gogoproto.moretags) = "yaml:\"moniker\""]; + // operator_address defines the address of the validator's operator; + // bech encoded in JSON. + string operator_address = 2 [(gogoproto.moretags) = "yaml:\"operator_address\""]; + // consensus_pubkey is the consensus public key of the validator, + // as a Protobuf Any. + google.protobuf.Any consensus_pubkey = 3 + [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey", (gogoproto.moretags) = "yaml:\"consensus_pubkey\""]; + int64 cons_power = 4 [(gogoproto.moretags) = "yaml:\"cons_power\""]; +} + +// ValidatorUpdates defines an array of abci.ValidatorUpdate objects. +// TODO: explore moving this to proto/cosmos/base to separate modules +// from tendermint dependence +message ValidatorUpdates { + option (gogoproto.equal) = false; + + repeated tendermint.abci.ValidatorUpdate updates = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} diff --git a/proto/op_init/op_host/module/v1/module.proto b/proto/op_init/op_host/module/v1/module.proto new file mode 100644 index 00000000..276a4ff5 --- /dev/null +++ b/proto/op_init/op_host/module/v1/module.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; + +package op_init.op_host.module.v1; + +import "cosmos/app/v1alpha1/module.proto"; + +// Module is the config object of the builder module. +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import: "github.com/initia-labs/OPinit/x/op_host" + }; + + // Authority defines the custom module authority. + // If not set, defaults to the governance module. + string authority = 2; +} diff --git a/proto/op_init/op_host/v1/genesis.proto b/proto/op_init/op_host/v1/genesis.proto new file mode 100644 index 00000000..8734e231 --- /dev/null +++ b/proto/op_init/op_host/v1/genesis.proto @@ -0,0 +1,36 @@ +syntax = "proto3"; +package op_init.op_host.v1; + +import "amino/amino.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "op_init/op_host/v1/types.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_host/types"; + +// GenesisState defines the rollup module's genesis state. +message GenesisState { + // params defines all the parameters of related to deposit. + Params params = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // bridges defines the registered bridges. + repeated Bridge bridges = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // the id will be asisgned to a new bridge. + uint64 next_bridge_id = 3; +} + +// Bridge defeins a bridge state. +message Bridge { + uint64 bridge_id = 1; + // l1 sequence number. + uint64 sequence = 2; + // a bridge config. + BridgeConfig bridge_config = 3 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + // a list of (l1, l2) token pairs + repeated TokenPair token_pairs = 4 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + // a list of l2 output proposals, which has been proven. + repeated bytes proven_withdrawals = 5; + // a list of l2 output proposals. + repeated OutputProposal proposals = 6 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} diff --git a/proto/op_init/op_host/v1/query.proto b/proto/op_init/op_host/v1/query.proto new file mode 100644 index 00000000..0d169316 --- /dev/null +++ b/proto/op_init/op_host/v1/query.proto @@ -0,0 +1,166 @@ +syntax = "proto3"; +package op_init.op_host.v1; + +import "amino/amino.proto"; +import "cosmos/base/query/v1beta1/pagination.proto"; +import "cosmos/query/v1/query.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/api/annotations.proto"; +import "op_init/op_host/v1/types.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_host/types"; + +// Query defines the gRPC querier service. +service Query { + // Bridge queries bridge info. + rpc Bridge(QueryBridgeRequest) returns (QueryBridgeResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/bridges/{bridge_id}"; + } + + // Bridges queries bridge infos. + rpc Bridges(QueryBridgesRequest) returns (QueryBridgesResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/bridges"; + } + + // TokenPairByL1Denom queries token pair by l1 denom. + rpc TokenPairByL1Denom(QueryTokenPairByL1DenomRequest) returns (QueryTokenPairByL1DenomResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/bridges/{bridge_id}/token_pairs/by_l1_denom"; + } + + // TokenPairByL2Denom queries token pair by l2 denom. + rpc TokenPairByL2Denom(QueryTokenPairByL2DenomRequest) returns (QueryTokenPairByL2DenomResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/bridges/{bridge_id}/token_pairs/by_l2_denom"; + } + + // TokenPairs queries all (l1 denom, l2 denom) pair. + rpc TokenPairs(QueryTokenPairsRequest) returns (QueryTokenPairsResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/bridges/{bridge_id}/token_pairs"; + } + + // OutputProposal queries output proposal by output index. + rpc OutputProposal(QueryOutputProposalRequest) returns (QueryOutputProposalResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/bridges/{bridge_id}/outputs/{output_index}"; + } + + // OutputProposals queries all output proposals. + rpc OutputProposals(QueryOutputProposalsRequest) returns (QueryOutputProposalsResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/bridges/{bridge_id}/outputs"; + } + + // Parameters queries the rollup parameters. + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { + option (cosmos.query.v1.module_query_safe) = true; + option (google.api.http).get = "/op_init/op_host/v1/params"; + } +} + +// QueryBridgeRequest is request type for Query/Bridge RPC method. +message QueryBridgeRequest { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + uint64 bridge_id = 1; +} + +// QueryBridgeResponse is response type for the Query/Bridge RPC method +message QueryBridgeResponse { + uint64 bridge_id = 1; + BridgeConfig bridge_config = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// QueryBridgesRequest is request type for Query/Bridges RPC method. +message QueryBridgesRequest { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + // pagination defines the pagination in the request. + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +// QueryBridgesResponse is response type for the Query/Bridges RPC method +message QueryBridgesResponse { + repeated QueryBridgeResponse bridges = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // pagination defines the pagination in the response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryTokenPairByL1DenomRequest is response type for the Query/TokenPairByL1Denom RPC method +message QueryTokenPairByL1DenomRequest { + uint64 bridge_id = 1; + string l1_denom = 2; +} + +// QueryTokenPairByL1DenomResponse is response type for the Query/TokenPairByL1Denom RPC method +message QueryTokenPairByL1DenomResponse { + TokenPair token_pair = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// QueryTokenPairByL2DenomRequest is response type for the Query/TokenPairByL2Denom RPC method +message QueryTokenPairByL2DenomRequest { + uint64 bridge_id = 1; + string l2_denom = 2; +} + +// QueryTokenPairByL2DenomResponse is response type for the Query/TokenPairByL2Denom RPC method +message QueryTokenPairByL2DenomResponse { + TokenPair token_pair = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// QueryTokenPairsRequest is response type for the Query/TokenPairs RPC method +message QueryTokenPairsRequest { + uint64 bridge_id = 1; + + // pagination defines the pagination in the request. + cosmos.base.query.v1beta1.PageRequest pagination = 2; +} + +// QueryTokenPairsResponse is response type for the Query/TokenPairs RPC method +message QueryTokenPairsResponse { + repeated TokenPair token_pairs = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // pagination defines the pagination in the response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryOutputProposalRequest is response type for the Query/OutputProposal RPC method +message QueryOutputProposalRequest { + uint64 bridge_id = 1; + uint64 output_index = 2; +} + +// QueryOutputProposalResponse is response type for the Query/OutputProposal RPC method +message QueryOutputProposalResponse { + uint64 bridge_id = 1; + uint64 output_index = 2; + OutputProposal output_proposal = 3 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// QueryOutputProposalsRequest is response type for the Query/OutputProposals RPC method +message QueryOutputProposalsRequest { + uint64 bridge_id = 1; + uint64 output_index = 2; +} + +// QueryOutputProposalsResponse is response type for the Query/OutputProposals RPC method +message QueryOutputProposalsResponse { + repeated QueryOutputProposalResponse output_proposals = 1 + [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// QueryParamsRequest is request type for the Query/Params RPC method. +message QueryParamsRequest {} + +// QueryParamsResponse is response type for the Query/Params RPC method. +message QueryParamsResponse { + // params holds all the parameters of this module. + Params params = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} diff --git a/proto/op_init/op_host/v1/tx.proto b/proto/op_init/op_host/v1/tx.proto new file mode 100644 index 00000000..fc5d3e7f --- /dev/null +++ b/proto/op_init/op_host/v1/tx.proto @@ -0,0 +1,225 @@ +syntax = "proto3"; +package op_init.op_host.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/timestamp.proto"; +import "op_init/op_host/v1/types.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_host/types"; +option (gogoproto.goproto_getters_all) = false; + +// Msg defines the rollup Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + //////////////////////////// + // Batch Submitter Messages + + // RecordBatch defines a rpc handler method for MsgRecordBatch. + rpc RecordBatch(MsgRecordBatch) returns (MsgRecordBatchResponse); + + //////////////////////////// + // Bridge Creator Messages + + // CreateBridge defines a rpc handler method for MsgCreateBridge. + rpc CreateBridge(MsgCreateBridge) returns (MsgCreateBridgeResponse); + + //////////////////////////// + // Output Proposer Messages + + // ProposeOutput defines a rpc handler method for MsgProposeOutput. + rpc ProposeOutput(MsgProposeOutput) returns (MsgProposeOutputResponse); + + //////////////////////////// + // Challenger Messages + + // DeleteOutput defines a rpc handler method for MsgDeleteOutput. + rpc DeleteOutput(MsgDeleteOutput) returns (MsgDeleteOutputResponse); + + //////////////////////////// + // User Messages + + // Deposit defines a user facing l1 => l2 token transfer interface. + rpc Deposit(MsgDeposit) returns (MsgDepositResponse); + + // Claim defines a user facing l2 => l1 token transfer interface. + rpc Claim(MsgClaim) returns (MsgClaimResponse); + + //////////////////////////// + // Authority Messages + + // Challenge defines a rpc handler method for MsgChallenge. + rpc Challenge(MsgChallenge) returns (MsgChallengeResponse); + + // UpdateParams defines an operation for updating the + // x/rollup module parameters. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); +} + +//////////////////////////// +// Batch Submitter Messages + +// MsgRecordBatch is no_op message, which is only for tx indexing. +message MsgRecordBatch { + option (cosmos.msg.v1.signer) = "submitter"; + option (amino.name) = "op_host/MsgRecordBatch"; + + string submitter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 bridge_id = 2; + bytes batch_bytes = 3; +} + +// MsgRecordBatchResponse returns MsgRecordBatch message result data +message MsgRecordBatchResponse {} + +//////////////////////////// +// Bridge Creator Messages + +// MsgCreateBridge is a message to register a new bridge with +// new bridge id. +message MsgCreateBridge { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "op_host/MsgCreateBridge"; + + string creator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + BridgeConfig config = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// MsgCreateBridgeResponse returns MsgCreateBridge message +// result data +message MsgCreateBridgeResponse { + uint64 bridge_id = 1; +} + +//////////////////////////// +// Output Proposer Messages + +// MsgProposeOutput is a message to submit l2 block proposal. +message MsgProposeOutput { + option (cosmos.msg.v1.signer) = "proposer"; + option (amino.name) = "op_host/MsgProposeOutput"; + + string proposer = 1 [(gogoproto.moretags) = "yaml:\"proposer\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 bridge_id = 2; + bytes output_root = 3; + google.protobuf.Timestamp l2_block_time = 4 + [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// MsgProposeOutputResponse returns deposit result data +message MsgProposeOutputResponse {} + +//////////////////////////// +// Challenger Messages + +// MsgDeleteOutput is a message to delete unfinalized l2 output proposal. +message MsgDeleteOutput { + option (cosmos.msg.v1.signer) = "challenger"; + option (amino.name) = "op_host/MsgDeleteOutput"; + + string challenger = 1 [(gogoproto.moretags) = "yaml:\"challenger\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 bridge_id = 2; + uint64 output_index = 3; +} + +// MsgDeleteOutputResponse returns a message handle result. +message MsgDeleteOutputResponse {} + +/////////////////////////// +// Authority Messages + +// MsgDeposit defines a SDK message for adding a new validator. +message MsgDeposit { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "op_host/MsgDeposit"; + + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string sender = 1 [(gogoproto.moretags) = "yaml:\"sender\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 bridge_id = 2; + string to = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + repeated cosmos.base.v1beta1.Coin amount = 4 [ + (gogoproto.moretags) = "yaml:\"amount\"", + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; + bytes data = 5 [(gogoproto.nullable) = true, (amino.dont_omitempty) = false]; +} + +// MsgDepositResponse returns a message handle result. +message MsgDepositResponse { + uint64 sequence = 1; +} + +// MsgClaim is a message to remove a validator from designated list +message MsgClaim { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "op_host/MsgClaim"; + + // address of the sender of the transaction + + uint64 bridge_id = 2; + uint64 output_index = 3; + repeated bytes withdrawal_proofs = 4 [(gogoproto.nullable) = true, (amino.dont_omitempty) = false]; + + // withdraw tx data + + string sender = 1 [(gogoproto.moretags) = "yaml:\"sender\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 sequence = 5; + string receiver = 6 [(gogoproto.moretags) = "yaml:\"receiver\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + repeated cosmos.base.v1beta1.Coin amount = 7 + [(gogoproto.moretags) = "yaml:\"amount\"", (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // output root proofs + + bytes version = 8; + bytes state_root = 9; + bytes storage_root = 10; + bytes latest_block_hash = 11; +} + +// MsgClaimResponse returns a message handle result. +message MsgClaimResponse {} + +/////////////////////////// +// Authority Messages + +// MsgChallenge is a message to challenage +message MsgChallenge { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "op_host/MsgChallenge"; + + // authority is the address that controls the module + // (defaults to x/gov unless overwritten). + string authority = 1 [(gogoproto.moretags) = "yaml:\"authority\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 bridge_id = 2; + + // the hash of balance tree for escaping. + bytes balance_tree_root = 3; +} + +// MsgChallengeResponse returns a message handle result. +message MsgChallengeResponse {} + +// MsgUpdateParams is a message to update parameters +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "op_host/MsgUpdateParams"; + + // authority is the address that controls the module + // (defaults to x/gov unless overwritten). + string authority = 1 [(gogoproto.moretags) = "yaml:\"authority\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params are the arbitrary parameters to be updated. + Params params = 2; +} + +// MsgUpdateParamsResponse returns a message handle result. +message MsgUpdateParamsResponse {} diff --git a/proto/op_init/op_host/v1/types.proto b/proto/op_init/op_host/v1/types.proto new file mode 100644 index 00000000..f2553d4b --- /dev/null +++ b/proto/op_init/op_host/v1/types.proto @@ -0,0 +1,59 @@ +syntax = "proto3"; +package op_init.op_host.v1; + +import "amino/amino.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/initia-labs/OPinit/x/op_host/types"; +option (gogoproto.equal_all) = true; +option (gogoproto.goproto_getters_all) = false; + +// Params defines the set of op_host parameters. +message Params { + option (amino.name) = "op_host/Params"; + option (gogoproto.equal) = true; + option (gogoproto.goproto_stringer) = false; + + // The amount to be paid by l2 creator. + repeated cosmos.base.v1beta1.Coin registration_fee = 1 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; +} + +// BridgeConfig defines the set of bridge config. +message BridgeConfig { + // The address of the challenger. + string challenger = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // The address of the proposer. + string proposer = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // The interval in seconds at which checkpoints must be submitted. + uint64 submission_interval = 3; + // The minium time (in seconds) that must elapse before a withdrawal can be finalized. + uint64 finalization_period = 4; + // The time of the first l2 block recorded. + google.protobuf.Timestamp start_time = 5 + [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + +// TokenPair defines l1 and l2 token pair +message TokenPair { + string l1_denom = 1; + string l2_denom = 2; +} + +// OutputProposal is a l2 block submitted by proposer. +message OutputProposal { + // Hash of the l2 output. + bytes output_root = 1; + // Timestamp of the l1 block that the output root was submitted in. + google.protobuf.Timestamp l1_block_time = 2 + [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + // Timestamp of the l2 block that the output root was submitted in. + google.protobuf.Timestamp l2_block_time = 3 + [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh new file mode 100755 index 00000000..03a867d0 --- /dev/null +++ b/scripts/protocgen.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# How to run manually: +# docker build --pull --rm -f "contrib/devtools/Dockerfile" -t cosmossdk-proto:latest "contrib/devtools" +# docker run --rm -v $(pwd):/workspace --workdir /workspace cosmossdk-proto sh ./scripts/protocgen.sh + +set -e +echo "Generating gogo proto code" + +cd proto +proto_dirs=$(find ./op_init -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) +for dir in $proto_dirs; do + for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do + # this regex checks if a proto file has its go_package set to cosmossdk.io/api/... + # gogo proto files SHOULD ONLY be generated if this is false + # we don't want gogo proto to run for proto files which are natively built for google.golang.org/protobuf + if grep -q "option go_package" "$file" && grep -H -o -c 'option go_package.*cosmossdk.io/api' "$file" | grep -q ':0$'; then + buf generate --template buf.gen.gogo.yaml $file + fi + done +done +cd .. + +# move proto files to the right places +cp -r github.com/initia-labs/OPinit/* ./ +rm -rf github.com diff --git a/x/op_child/abci.go b/x/op_child/abci.go new file mode 100644 index 00000000..cd84883a --- /dev/null +++ b/x/op_child/abci.go @@ -0,0 +1,32 @@ +package op_child + +import ( + "time" + + abci "github.com/cometbft/cometbft/abci/types" + + "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/initia-labs/OPinit/x/op_child/keeper" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// BeginBlocker will persist the current header and validator set as a historical entry +// and prune the oldest entry based on the HistoricalEntries parameter +func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper) { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + + k.TrackHistoricalInfo(ctx) + + // record the proposer for when we payout on the next block + consAddr := sdk.ConsAddress(req.Header.ProposerAddress) + k.SetPreviousProposerConsAddr(ctx, consAddr) +} + +// Called every block, update validator set +func EndBlocker(ctx sdk.Context, k keeper.Keeper) []abci.ValidatorUpdate { + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker) + + return k.BlockValidatorUpdates(ctx) +} diff --git a/x/op_child/ante/ante_test.go b/x/op_child/ante/ante_test.go new file mode 100644 index 00000000..7fbc77e8 --- /dev/null +++ b/x/op_child/ante/ante_test.go @@ -0,0 +1,115 @@ +package ante_test + +import ( + "testing" + + "github.com/stretchr/testify/suite" + + dbm "github.com/cometbft/cometbft-db" + "github.com/cometbft/cometbft/libs/log" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + + "cosmossdk.io/simapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/server" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/cosmos/cosmos-sdk/testutil/testdata" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + xauthsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli" +) + +// AnteTestSuite is a test suite to be used with ante handler tests. +type AnteTestSuite struct { + suite.Suite + + app *simapp.SimApp + ctx sdk.Context + clientCtx client.Context + txBuilder client.TxBuilder +} + +// returns context and app with params set on account keeper +func createTestApp(isCheckTx bool, tempDir string) (*simapp.SimApp, sdk.Context) { + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = tempDir + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + + app := simapp.NewSimApp( + log.NewNopLogger(), dbm.NewMemDB(), nil, true, appOptions, + ) + ctx := app.BaseApp.NewContext(isCheckTx, tmproto.Header{}) + app.AccountKeeper.SetParams(ctx, authtypes.DefaultParams()) + + return app, ctx +} + +// SetupTest setups a new test, with new app, context, and anteHandler. +func (suite *AnteTestSuite) SetupTest(isCheckTx bool) { + tempDir := suite.T().TempDir() + suite.app, suite.ctx = createTestApp(isCheckTx, tempDir) + suite.ctx = suite.ctx.WithBlockHeight(1) + + // We're using TestMsg encoding in some tests, so register it here. + suite.app.LegacyAmino().RegisterConcrete(&testdata.TestMsg{}, "testdata.TestMsg", nil) + testdata.RegisterInterfaces(suite.app.InterfaceRegistry()) + + suite.clientCtx = client.Context{}. + WithTxConfig(suite.app.TxConfig()) +} + +// CreateTestTx is a helper function to create a tx given multiple inputs. +func (suite *AnteTestSuite) CreateTestTx(privs []cryptotypes.PrivKey, accNums []uint64, accSeqs []uint64, chainID string) (xauthsigning.Tx, error) { + // First round: we gather all the signer infos. We use the "set empty + // signature" hack to do that. + var sigsV2 []signing.SignatureV2 + for i, priv := range privs { + sigV2 := signing.SignatureV2{ + PubKey: priv.PubKey(), + Data: &signing.SingleSignatureData{ + SignMode: suite.clientCtx.TxConfig.SignModeHandler().DefaultMode(), + Signature: nil, + }, + Sequence: accSeqs[i], + } + + sigsV2 = append(sigsV2, sigV2) + } + err := suite.txBuilder.SetSignatures(sigsV2...) + if err != nil { + return nil, err + } + + // Second round: all signer infos are set, so each signer can sign. + sigsV2 = []signing.SignatureV2{} + for i, priv := range privs { + signerData := xauthsigning.SignerData{ + ChainID: chainID, + AccountNumber: accNums[i], + Sequence: accSeqs[i], + } + sigV2, err := tx.SignWithPrivKey( + suite.clientCtx.TxConfig.SignModeHandler().DefaultMode(), signerData, + suite.txBuilder, priv, suite.clientCtx.TxConfig, accSeqs[i]) + if err != nil { + return nil, err + } + + sigsV2 = append(sigsV2, sigV2) + } + err = suite.txBuilder.SetSignatures(sigsV2...) + if err != nil { + return nil, err + } + + return suite.txBuilder.GetTx(), nil +} + +func TestAnteTestSuite(t *testing.T) { + suite.Run(t, new(AnteTestSuite)) +} diff --git a/x/op_child/ante/context_keys.go b/x/op_child/ante/context_keys.go new file mode 100644 index 00000000..a368f7fc --- /dev/null +++ b/x/op_child/ante/context_keys.go @@ -0,0 +1,6 @@ +package ante + +const ( + SimulationFlagContextKey = iota + GasPricesContextKey +) diff --git a/x/op_child/ante/fee.go b/x/op_child/ante/fee.go new file mode 100644 index 00000000..d3d1265d --- /dev/null +++ b/x/op_child/ante/fee.go @@ -0,0 +1,57 @@ +package ante + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + rolluptypes "github.com/initia-labs/OPinit/x/op_child/types" +) + +// MempoolFeeChecker will check if the transaction's fee is at least as large +// as the local validator's minimum gasFee (defined in validator config). +// If fee is too low, decorator returns error and tx is rejected from mempool. +// Note this only applies when ctx.CheckTx = true +// If fee is high enough or not CheckTx, then call next AnteHandler +// CONTRACT: Tx must implement FeeTx to use MempoolFeeChecker +type MempoolFeeChecker struct { + keeper rolluptypes.AnteKeeper +} + +// NewGasPricesDecorator create MempoolFeeDecorator instance +func NewMempoolFeeChecker( + keeper rolluptypes.AnteKeeper, +) MempoolFeeChecker { + return MempoolFeeChecker{ + keeper, + } +} + +func (mfd MempoolFeeChecker) CheckTxFeeWithMinGasPrices(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, int64, error) { + feeTx, ok := tx.(sdk.FeeTx) + if !ok { + return nil, 0, sdkerrors.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") + } + + feeCoins := feeTx.GetFee() + gas := feeTx.GetGas() + + if ctx.IsCheckTx() { + + minGasPrices := ctx.MinGasPrices() + if mfd.keeper != nil { + minGasPrices = CombinedMinGasPrices(minGasPrices, mfd.keeper.MinGasPrices(ctx)) + } + + if !minGasPrices.IsZero() { + requiredFees := computeRequiredFees(gas, minGasPrices) + + if !feeCoins.IsAnyGTE(requiredFees) { + return nil, 0, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "insufficient fees; got: %s required: %s", feeCoins, requiredFees) + } + } + } + + // TODO - if we want to use ethereum like priority system, + // then we need to compute all dex prices of all fee coins + return feeCoins, 1 /* FIFO */, nil +} diff --git a/x/op_child/ante/fee_test.go b/x/op_child/ante/fee_test.go new file mode 100644 index 00000000..61877ff0 --- /dev/null +++ b/x/op_child/ante/fee_test.go @@ -0,0 +1,117 @@ +package ante_test + +import ( + "github.com/initia-labs/OPinit/x/op_child/ante" + + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/testutil/testdata" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +var baseDenom = sdk.DefaultBondDenom + +type TestAnteKeeper struct { + minGasPrices sdk.DecCoins +} + +func (k TestAnteKeeper) MinGasPrices(ctx sdk.Context) sdk.DecCoins { + return k.minGasPrices +} + +func (suite *AnteTestSuite) TestEnsureMempoolFees() { + suite.SetupTest(true) // setup + suite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder() + + // set price 0.5 base == 1 quote + fc := ante.NewMempoolFeeChecker(TestAnteKeeper{ + minGasPrices: sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.ZeroDec())), + }) + + // keys and addresses + priv1, _, addr1 := testdata.KeyTestPubAddr() + + // msg and signatures + // gas price 0.0005 + msg := testdata.NewTestMsg(addr1) + feeAmount := sdk.NewCoins(sdk.NewCoin(baseDenom, sdk.NewInt(100))) + gasLimit := uint64(200_000) + + suite.Require().NoError(suite.txBuilder.SetMsgs(msg)) + suite.txBuilder.SetFeeAmount(feeAmount) + suite.txBuilder.SetGasLimit(gasLimit) + + privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} + tx, err := suite.CreateTestTx(privs, accNums, accSeqs, suite.ctx.ChainID()) + suite.Require().NoError(err) + + // Set high gas price so standard test fee fails + basePrice := sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(200).Quo(sdk.NewDec(100000))) + highGasPrice := []sdk.DecCoin{basePrice} + suite.ctx = suite.ctx.WithMinGasPrices(highGasPrice) + + // Set IsCheckTx to true + suite.ctx = suite.ctx.WithIsCheckTx(true) + + // antehandler errors with insufficient fees + _, _, err = fc.CheckTxFeeWithMinGasPrices(suite.ctx, tx) + suite.Require().NotNil(err, "Decorator should have errored on too low fee for local gasPrice") + + // Set IsCheckTx to false + suite.ctx = suite.ctx.WithIsCheckTx(false) + + // antehandler should not error since we do not check minGasPrice in DeliverTx + _, _, err = fc.CheckTxFeeWithMinGasPrices(suite.ctx, tx) + suite.Require().Nil(err, "MempoolFeeDecorator returned error in DeliverTx") + + // Set IsCheckTx back to true for testing sufficient mempool fee + suite.ctx = suite.ctx.WithIsCheckTx(true) + + // gas price = 0.0005 + basePrice = sdk.NewDecCoinFromDec(baseDenom, sdk.NewDecWithPrec(5, 4)) + lowGasPrice := []sdk.DecCoin{basePrice} + suite.ctx = suite.ctx.WithMinGasPrices(lowGasPrice) + + _, _, err = fc.CheckTxFeeWithMinGasPrices(suite.ctx, tx) + suite.Require().Nil(err, "Decorator should not have errored on fee higher than local gasPrice") + + // set high base_min_gas_price to test should be failed + fc = ante.NewMempoolFeeChecker(TestAnteKeeper{ + minGasPrices: sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(200).Quo(sdk.NewDec(100000)))), + }) + + suite.txBuilder.SetFeeAmount(feeAmount) + _, _, err = fc.CheckTxFeeWithMinGasPrices(suite.ctx, tx) + suite.Require().NotNil(err, "Decorator should have errored on too low fee for local gasPrice") +} + +func (suite *AnteTestSuite) TestCombinedMinGasPrices() { + minGasPrices := sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(100))) + configMinGasPrices := sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(100))) + + combined := ante.CombinedMinGasPrices(minGasPrices, configMinGasPrices) + suite.Require().Len(combined, 1) + suite.Require().True(combined.AmountOf(baseDenom).Equal(sdk.NewDec(100))) + + configMinGasPrices = sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(150))) + combined = ante.CombinedMinGasPrices(minGasPrices, configMinGasPrices) + suite.Require().Len(combined, 1) + suite.Require().True(combined.AmountOf(baseDenom).Equal(sdk.NewDec(150))) + + minGasPrices = sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(200))) + combined = ante.CombinedMinGasPrices(minGasPrices, configMinGasPrices) + suite.Require().Len(combined, 1) + suite.Require().True(combined.AmountOf(baseDenom).Equal(sdk.NewDec(200))) + + configMinGasPrices = sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(100)), sdk.NewDecCoinFromDec("test", sdk.NewDec(100))) + combined = ante.CombinedMinGasPrices(minGasPrices, configMinGasPrices) + suite.Require().Len(combined, 2) + suite.Require().True(combined.AmountOf(baseDenom).Equal(sdk.NewDec(200))) + suite.Require().True(combined.AmountOf("test").Equal(sdk.NewDec(100))) + + minGasPrices = sdk.NewDecCoins(sdk.NewDecCoinFromDec(baseDenom, sdk.NewDec(100)), sdk.NewDecCoinFromDec("test2", sdk.NewDec(300))) + combined = ante.CombinedMinGasPrices(minGasPrices, configMinGasPrices) + suite.Require().Len(combined, 3) + suite.Require().True(combined.AmountOf(baseDenom).Equal(sdk.NewDec(100))) + suite.Require().True(combined.AmountOf("test").Equal(sdk.NewDec(100))) + suite.Require().True(combined.AmountOf("test2").Equal(sdk.NewDec(300))) +} diff --git a/x/op_child/ante/fee_utils.go b/x/op_child/ante/fee_utils.go new file mode 100644 index 00000000..f0ee9e8b --- /dev/null +++ b/x/op_child/ante/fee_utils.go @@ -0,0 +1,36 @@ +package ante + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// CombinedMinGasPrices will combine the on-chain fee and min_gas_prices. +func CombinedMinGasPrices(minGasPrices sdk.DecCoins, configMinGasPrices sdk.DecCoins) sdk.DecCoins { + for _, cmgp := range configMinGasPrices { + if minGasPrices.AmountOf(cmgp.Denom).IsZero() { + minGasPrices = minGasPrices.Add(cmgp) + } else if minGasPrices.AmountOf(cmgp.Denom).LT(cmgp.Amount) { + minGasPrices = minGasPrices.Add(cmgp.Sub(sdk.NewDecCoinFromDec(cmgp.Denom, minGasPrices.AmountOf(cmgp.Denom)))) + } // else, GTE, use the original minGasPrice { + } + return minGasPrices.Sort() +} + +// computeRequiredFees returns required fees +func computeRequiredFees(gas sdk.Gas, minGasPrices sdk.DecCoins) sdk.Coins { + // special case: if minGasPrices=[], requiredFees=[] + requiredFees := make(sdk.Coins, len(minGasPrices)) + + // if not all coins are zero, check fee with min_gas_price + if !minGasPrices.IsZero() { + // Determine the required fees by multiplying each required minimum gas + // price by the gas limit, where fee = ceil(minGasPrice * gasLimit). + glDec := sdk.NewDec(int64(gas)) + for i, gp := range minGasPrices { + fee := gp.Amount.Mul(glDec) + requiredFees[i] = sdk.NewCoin(gp.Denom, fee.Ceil().RoundInt()) + } + } + + return requiredFees.Sort() +} diff --git a/x/op_child/client/cli/flags.go b/x/op_child/client/cli/flags.go new file mode 100644 index 00000000..730588c9 --- /dev/null +++ b/x/op_child/client/cli/flags.go @@ -0,0 +1,10 @@ +package cli + +const ( + FlagPubKey = "pubkey" + FlagMoniker = "moniker" + FlagNodeID = "node-id" + FlagIP = "ip" + FlagP2PPort = "p2p-port" + FlagHookMsg = "hook-msg" +) diff --git a/x/op_child/client/cli/legacy_contents.go b/x/op_child/client/cli/legacy_contents.go new file mode 100644 index 00000000..0bbf6709 --- /dev/null +++ b/x/op_child/client/cli/legacy_contents.go @@ -0,0 +1,228 @@ +package cli + +import ( + "fmt" + "os" + "strconv" + "strings" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/version" + govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + paramscutils "github.com/cosmos/cosmos-sdk/x/params/client/utils" + paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + + ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + "github.com/cosmos/ibc-go/v7/modules/core/exported" + + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// NewLegacyContentParamChangeTxCmd returns a CLI command handler for creating +// a parameter change legacy content validator transaction. +func NewLegacyContentParamChangeTxCmd() *cobra.Command { + return &cobra.Command{ + Use: "param-change [proposal-file]", + Args: cobra.ExactArgs(1), + Short: "Submit a parameter change proposal", + Long: strings.TrimSpace( + fmt.Sprintf(`Submit a parameter proposal along with an initial deposit. +The proposal details must be supplied via a JSON file. For values that contains +objects, only non-empty fields will be updated. + +IMPORTANT: Currently parameter changes are evaluated but not validated, so it is +very important that any "value" change is valid (ie. correct type and within bounds) +for its respective parameter, eg. "MaxValidators" should be an integer and not a decimal. + +Proper vetting of a parameter change proposal should prevent this from happening +(no deposits should occur during the governance process), but it should be noted +regardless. + +Example: +$ %s tx gov submit-proposal param-change --from= + +Where proposal.json contains: + +{ + "title": "Staking Param Change", + "description": "Update max validators", + "changes": [ + { + "subspace": "staking", + "key": "MaxValidators", + "value": 105 + } + ] +} +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + proposal, err := paramscutils.ParseParamChangeProposalJSON(clientCtx.LegacyAmino, args[0]) + if err != nil { + return err + } + + from := clientCtx.GetFromAddress() + content := paramproposal.NewParameterChangeProposal( + proposal.Title, proposal.Description, proposal.Changes.ToParamChanges(), + ) + + msg, err := types.NewMsgExecuteLegacyContents(from, []govv1beta1.Content{content}) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } +} + +// NewLegacyContentSubmitUpdateClientCmd implements a command handler for submitting an update IBC client transaction. +func NewLegacyContentSubmitUpdateClientCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "update-client [subject-client-id] [substitute-client-id]", + Args: cobra.ExactArgs(2), + Short: "Submit an update IBC client proposal", + Long: "Submit an update IBC client proposal along with an initial deposit.\n" + + "Please specify a subject client identifier you want to update..\n" + + "Please specify the substitute client the subject client will be updated to.", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + title, err := cmd.Flags().GetString(govcli.FlagTitle) //nolint:staticcheck // need this till full govv1 conversion. + if err != nil { + return err + } + + description, err := cmd.Flags().GetString(govcli.FlagDescription) //nolint:staticcheck // need this till full govv1 conversion. + if err != nil { + return err + } + + subjectClientID := args[0] + substituteClientID := args[1] + + content := ibcclienttypes.NewClientUpdateProposal(title, description, subjectClientID, substituteClientID) + + from := clientCtx.GetFromAddress() + msg, err := types.NewMsgExecuteLegacyContents(from, []govv1beta1.Content{content}) + if err != nil { + return err + } + + if err = msg.ValidateBasic(); err != nil { + return err + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + cmd.Flags().String(govcli.FlagTitle, "", "title of proposal") //nolint:staticcheck // need this till full govv1 conversion. + cmd.Flags().String(govcli.FlagDescription, "", "description of proposal") //nolint:staticcheck // need this till full govv1 conversion. + + return cmd +} + +// NewLegacyContentSubmitUpgradeCmd implements a command handler for submitting an upgrade IBC client transaction. +func NewLegacyContentSubmitUpgradeCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "ibc-upgrade [name] [height] [path/to/upgraded_client_state.json] [flags]", + Args: cobra.ExactArgs(3), + Short: "Submit an IBC upgrade proposal", + Long: "Submit an IBC client breaking upgrade proposal along with an initial deposit.\n" + + "The client state specified is the upgraded client state representing the upgraded chain\n" + + `Example Upgraded Client State JSON: +{ + "@type":"/ibc.lightclients.tendermint.v1.ClientState", + "chain_id":"testchain1", + "unbonding_period":"1814400s", + "latest_height":{"revision_number":"0","revision_height":"2"}, + "proof_specs":[{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":33,"min_prefix_length":4,"max_prefix_length":12,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0},{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":32,"min_prefix_length":1,"max_prefix_length":1,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0}], + "upgrade_path":["upgrade","upgradedIBCState"], +} + `, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + cdc := codec.NewProtoCodec(clientCtx.InterfaceRegistry) + + title, err := cmd.Flags().GetString(govcli.FlagTitle) //nolint:staticcheck // need this till full govv1 conversion. + if err != nil { + return err + } + + description, err := cmd.Flags().GetString(govcli.FlagDescription) //nolint:staticcheck // need this till full govv1 conversion. + if err != nil { + return err + } + + name := args[0] + + height, err := strconv.ParseInt(args[1], 10, 64) + if err != nil { + return err + } + + plan := upgradetypes.Plan{ + Name: name, + Height: height, + } + + // attempt to unmarshal client state argument + var clientState exported.ClientState + clientContentOrFileName := args[2] + if err := cdc.UnmarshalInterfaceJSON([]byte(clientContentOrFileName), &clientState); err != nil { + + // check for file path if JSON input is not provided + contents, err := os.ReadFile(clientContentOrFileName) + if err != nil { + return fmt.Errorf("neither JSON input nor path to .json file for client state were provided: %w", err) + } + + if err := cdc.UnmarshalInterfaceJSON(contents, &clientState); err != nil { + return fmt.Errorf("error unmarshalling client state file: %w", err) + } + } + + content, err := ibcclienttypes.NewUpgradeProposal(title, description, plan, clientState) + if err != nil { + return err + } + + from := clientCtx.GetFromAddress() + msg, err := types.NewMsgExecuteLegacyContents(from, []govv1beta1.Content{content}) + if err != nil { + return err + } + + if err = msg.ValidateBasic(); err != nil { + return err + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + cmd.Flags().String(govcli.FlagTitle, "", "title of proposal") //nolint:staticcheck // need this till full govv1 conversion. + cmd.Flags().String(govcli.FlagDescription, "", "description of proposal") //nolint:staticcheck // need this till full govv1 conversion. + + return cmd +} diff --git a/x/op_child/client/cli/query.go b/x/op_child/client/cli/query.go new file mode 100644 index 00000000..ac831058 --- /dev/null +++ b/x/op_child/client/cli/query.go @@ -0,0 +1,202 @@ +package cli + +import ( + "fmt" + "strings" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/version" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// GetQueryCmd returns the cli query commands for this module +func GetQueryCmd() *cobra.Command { + rollupQueryCmd := &cobra.Command{ + Use: types.ModuleName, + Short: "Querying commands for the rollup module", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + rollupQueryCmd.AddCommand( + GetCmdQueryValidator(), + GetCmdQueryValidators(), + //GetCmdQueryHistoricalInfo(), TODO: remove it if not needed + GetCmdQueryParams(), + ) + + return rollupQueryCmd +} + +// GetCmdQueryValidator implements the validator query command. +func GetCmdQueryValidator() *cobra.Command { + bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix() + + cmd := &cobra.Command{ + Use: "validator [validator-addr]", + Short: "Query a validator", + Long: strings.TrimSpace( + fmt.Sprintf(`Query details about an individual validator. + +Example: +$ %s query rollup validator %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj +`, + version.AppName, bech32PrefixValAddr, + ), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + addr, err := sdk.ValAddressFromBech32(args[0]) + if err != nil { + return err + } + + params := &types.QueryValidatorRequest{ValidatorAddr: addr.String()} + res, err := queryClient.Validator(cmd.Context(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(&res.Validator) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetCmdQueryValidators implements the query all validators command. +func GetCmdQueryValidators() *cobra.Command { + cmd := &cobra.Command{ + Use: "validators", + Short: "Query for all validators", + Args: cobra.NoArgs, + Long: strings.TrimSpace( + fmt.Sprintf(`Query details about all validators on a network. + +Example: +$ %s query rollup validators +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + result, err := queryClient.Validators(cmd.Context(), &types.QueryValidatorsRequest{ + // Leaving status empty on purpose to query all validators. + Pagination: pageReq, + }) + if err != nil { + return err + } + + return clientCtx.PrintProto(result) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "validators") + + return cmd +} + +/* TODO: remove it if not needed +// GetCmdQueryHistoricalInfo implements the historical info query command +func GetCmdQueryHistoricalInfo() *cobra.Command { + cmd := &cobra.Command{ + Use: "historical-info [height]", + Args: cobra.ExactArgs(1), + Short: "Query historical info at given height", + Long: strings.TrimSpace( + fmt.Sprintf(`Query historical info at given height. + +Example: +$ %s query rollup historical-info 5 +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + height, err := strconv.ParseInt(args[0], 10, 64) + if err != nil || height < 0 { + return fmt.Errorf("height argument provided must be a non-negative-integer: %v", err) + } + + params := &types.QueryHistoricalInfoRequest{Height: height} + res, err := queryClient.HistoricalInfo(cmd.Context(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res.Hist) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} +*/ + +// GetCmdQueryParams implements the params query command. +func GetCmdQueryParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Args: cobra.NoArgs, + Short: "Query the current rollup parameters information", + Long: strings.TrimSpace( + fmt.Sprintf(`Query values set as rollup parameters. + +Example: +$ %s query rollup params +`, + version.AppName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + res, err := queryClient.Params(cmd.Context(), &types.QueryParamsRequest{}) + if err != nil { + return err + } + + return clientCtx.PrintProto(&res.Params) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/op_child/client/cli/query_test.go b/x/op_child/client/cli/query_test.go new file mode 100644 index 00000000..2165b0e2 --- /dev/null +++ b/x/op_child/client/cli/query_test.go @@ -0,0 +1,82 @@ +package cli_test + +import ( + "fmt" + + "github.com/cosmos/cosmos-sdk/client/flags" + clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/op_child/client/cli" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +func (s *CLITestSuite) TestGetCmdQueryValidator() { + testCases := []struct { + name string + args []string + expectErr bool + }{ + { + "with invalid address ", + []string{"somethinginvalidaddress", fmt.Sprintf("--%s=json", flags.FlagOutput)}, + true, + }, + { + "happy case", + []string{sdk.ValAddress(s.addrs[0]).String(), fmt.Sprintf("--%s=json", flags.FlagOutput)}, + false, + }, + } + for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { + cmd := cli.GetCmdQueryValidator() + clientCtx := s.clientCtx + out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) + if tc.expectErr { + s.Require().Error(err) + s.Require().NotEqual("internal", err.Error()) + } else { + var result types.Validator + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &result)) + } + }) + } +} + +func (s *CLITestSuite) TestGetCmdQueryValidators() { + testCases := []struct { + name string + args []string + minValidatorCount int + }{ + { + "one validator case", + []string{ + fmt.Sprintf("--%s=json", flags.FlagOutput), + fmt.Sprintf("--%s=1", flags.FlagLimit), + }, + 1, + }, + { + "multi validator case", + []string{fmt.Sprintf("--%s=json", flags.FlagOutput)}, + 0, + }, + } + + for _, tc := range testCases { + tc := tc + + s.Run(tc.name, func() { + cmd := cli.GetCmdQueryValidators() + clientCtx := s.clientCtx + + out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) + s.Require().NoError(err) + + var result types.QueryValidatorsResponse + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &result)) + }) + } +} diff --git a/x/op_child/client/cli/tx.go b/x/op_child/client/cli/tx.go new file mode 100644 index 00000000..523cd6ec --- /dev/null +++ b/x/op_child/client/cli/tx.go @@ -0,0 +1,215 @@ +package cli + +import ( + "fmt" + "strconv" + "strings" + + "github.com/spf13/cobra" + flag "github.com/spf13/pflag" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/version" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// GetTxCmd returns a root CLI command handler for all x/rollup transaction commands. +func GetTxCmd() *cobra.Command { + rollupTxCmd := &cobra.Command{ + Use: types.ModuleName, + Short: "Rollup transaction subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + rollupTxCmd.AddCommand( + NewExecuteMessagesCmd(), + NewDepositCmd(), + NewWithdrawCmd(), + NewLegacyContentParamChangeTxCmd(), + NewLegacyContentSubmitUpdateClientCmd(), + NewLegacyContentSubmitUpgradeCmd(), + ) + + return rollupTxCmd +} + +// NewDepositCmd returns a CLI command handler for the transaction sending a deposit to an user account. +func NewDepositCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "deposit [sequence] [from_l1] [to_l2] [amount]", + Args: cobra.ExactArgs(4), + Short: "send a deposit to an user account", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags()) + if err != nil { + return err + } + + sequence, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + from, err := sdk.AccAddressFromBech32(args[1]) + if err != nil { + return err + } + to, err := sdk.AccAddressFromBech32(args[2]) + if err != nil { + return err + } + + amount, err := sdk.ParseCoinsNormalized(args[3]) + if err != nil { + return err + } + + hookMsg, err := cmd.Flags().GetString(FlagHookMsg) + if err != nil { + return err + } + + txf, msg, err := newBuildDepositMsg(clientCtx, txf, cmd.Flags(), sequence, from, to, amount, []byte(hookMsg)) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, + } + + cmd.Flags().String(FlagHookMsg, "", "Hook message passed from the upper layer") + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// NewWithdrawCmd returns a CLI command handler for the transaction sending a deposit to an user account. +func NewWithdrawCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "withdraw [to_l1] [amount]", + Short: "withdraw a token from L2 to L1", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags()) + if err != nil { + return err + } + + to, err := sdk.AccAddressFromBech32(args[0]) + if err != nil { + return err + } + amount, err := sdk.ParseCoinNormalized(args[1]) + if err != nil { + return err + } + + txf, msg, err := newBuildWithdrawMsg(clientCtx, txf, cmd.Flags(), to, amount) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// NewExecuteMessagesCmd returns a CLI command handler for transaction to administrating the system. +func NewExecuteMessagesCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "execute-messages [path/to/messages.json]", + Short: "send a system administrating tx", + Long: strings.TrimSpace( + fmt.Sprintf( + `send a system administating tx with some messages. +They should be defined in a JSON file. + +Example: +$ %s tx rollup execute-messages path/to/proposal.json + +Where proposal.json contains: + +{ + // array of proto-JSON-encoded sdk.Msgs + "messages": [ + { + "@type": "/cosmos.bank.v1beta1.MsgSend", + "from_address": "init1...", + "to_address": "init11...", + "amount":[{"denom": "uminit","amount": "10"}] + } + ], +} +`, + version.AppName, + ), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msgs, err := parseExecuteMessages(clientCtx.Codec, args[0]) + if err != nil { + return err + } + + msg, err := types.NewMsgExecuteMessages(clientCtx.GetFromAddress(), msgs) + if err != nil { + return fmt.Errorf("invalid message: %w", err) + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func newBuildWithdrawMsg(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet, to sdk.AccAddress, amount sdk.Coin) (tx.Factory, *types.MsgWithdraw, error) { + sender := clientCtx.GetFromAddress() + + msg := types.NewMsgWithdraw(sender, to, amount) + if err := msg.ValidateBasic(); err != nil { + return txf, nil, err + } + + return txf, msg, nil +} + +func newBuildDepositMsg(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet, + sequence uint64, from, to sdk.AccAddress, amount sdk.Coins, hookMsg []byte, +) (tx.Factory, *types.MsgDeposit, error) { + sender := clientCtx.GetFromAddress() + + msg := types.NewMsgDeposit(sender, from, to, amount, sequence, hookMsg) + if err := msg.ValidateBasic(); err != nil { + return txf, nil, err + } + + return txf, msg, nil +} diff --git a/x/op_child/client/cli/tx_test.go b/x/op_child/client/cli/tx_test.go new file mode 100644 index 00000000..44dfae80 --- /dev/null +++ b/x/op_child/client/cli/tx_test.go @@ -0,0 +1,380 @@ +package cli_test + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "testing" + + abci "github.com/cometbft/cometbft/abci/types" + rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock" + "github.com/cosmos/gogoproto/proto" + "github.com/stretchr/testify/suite" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + "github.com/cosmos/cosmos-sdk/testutil" + clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/cosmos/cosmos-sdk/x/bank" + + sdk "github.com/cosmos/cosmos-sdk/types" + testutilmod "github.com/cosmos/cosmos-sdk/types/module/testutil" + + "github.com/initia-labs/OPinit/x/op_child" + "github.com/initia-labs/OPinit/x/op_child/client/cli" +) + +var PKs = simtestutil.CreateTestPubKeys(500) + +type CLITestSuite struct { + suite.Suite + + kr keyring.Keyring + encCfg testutilmod.TestEncodingConfig + baseCtx client.Context + clientCtx client.Context + addrs []sdk.AccAddress +} + +func (s *CLITestSuite) SetupSuite() { + s.encCfg = testutilmod.MakeTestEncodingConfig(op_child.AppModuleBasic{}, bank.AppModuleBasic{}) + s.kr = keyring.NewInMemory(s.encCfg.Codec) + s.baseCtx = client.Context{}. + WithKeyring(s.kr). + WithTxConfig(s.encCfg.TxConfig). + WithCodec(s.encCfg.Codec). + WithClient(clitestutil.MockTendermintRPC{Client: rpcclientmock.Client{}}). + WithAccountRetriever(client.MockAccountRetriever{}). + WithOutput(io.Discard). + WithChainID("test-chain") + + var outBuf bytes.Buffer + ctxGen := func() client.Context { + bz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{}) + c := clitestutil.NewMockTendermintRPC(abci.ResponseQuery{ + Value: bz, + }) + return s.baseCtx.WithClient(c) + } + s.clientCtx = ctxGen().WithOutput(&outBuf) + + s.addrs = make([]sdk.AccAddress, 0) + for i := 0; i < 3; i++ { + k, _, err := s.clientCtx.Keyring.NewMnemonic("NewValidator", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) + s.Require().NoError(err) + + pub, err := k.GetPubKey() + s.Require().NoError(err) + + newAddr := sdk.AccAddress(pub.Address()) + s.addrs = append(s.addrs, newAddr) + } +} + +func (s *CLITestSuite) TestNewWithdrawCmd() { + require := s.Require() + cmd := cli.NewWithdrawCmd() + + consPrivKey := ed25519.GenPrivKey() + consPubKeyBz, err := s.encCfg.Codec.MarshalInterfaceJSON(consPrivKey.PubKey()) + require.NoError(err) + require.NotNil(consPubKeyBz) + + testCases := []struct { + name string + args []string + expectErr bool + expectedCode uint32 + respType proto.Message + }{ + { + "invalid transaction (invalid to_l1)", + []string{ + "_invalid_acc_", + "100umin", + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + { + "invalid transaction (invalid amount)", + []string{ + s.addrs[0].String(), + "0umin", + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + } + + for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { + out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args) + if tc.expectErr { + require.Error(err) + } else { + require.NoError(err, "test: %s\noutput: %s", tc.name, out.String()) + err = s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType) + require.NoError(err, out.String(), "test: %s, output\n:", tc.name, out.String()) + + txResp := tc.respType.(*sdk.TxResponse) + require.Equal(tc.expectedCode, txResp.Code, + "test: %s, output\n:", tc.name, out.String()) + } + }) + } +} + +func (s *CLITestSuite) TestNewDepositCmd() { + require := s.Require() + cmd := cli.NewDepositCmd() + + consPrivKey := ed25519.GenPrivKey() + consPubKeyBz, err := s.encCfg.Codec.MarshalInterfaceJSON(consPrivKey.PubKey()) + require.NoError(err) + require.NotNil(consPubKeyBz) + + hookMsg := "hello world" + hookMsgBytes, err := json.Marshal(hookMsg) + require.NoError(err) + hookMsgString := string(hookMsgBytes) + + testCases := []struct { + name string + args []string + expectErr bool + expectedCode uint32 + respType proto.Message + }{ + { + "invalid transaction (invalid from_l1)", + []string{ + "1", + "_invalid_acc_", + s.addrs[0].String(), + "100umin", + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + { + "invalid transaction (invalid to_l2)", + []string{ + s.addrs[0].String(), + "_invalid_acc_", + "1", + "100umin", + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + { + "invalid transaction (invalid sequence)", + []string{ + "-1", + s.addrs[0].String(), + s.addrs[1].String(), + "100umin", + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + { + "invalid transaction (invalid amount)", + []string{ + "1", + s.addrs[0].String(), + s.addrs[1].String(), + "0umin", + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + { + "valid transaction without hook msg", + []string{ + "1", + s.addrs[0].String(), + s.addrs[1].String(), + "100umin", + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + false, 0, &sdk.TxResponse{}, + }, + { + "valid transaction with valid hook msg", + []string{ + "1", + s.addrs[0].String(), + s.addrs[1].String(), + "100umin", + fmt.Sprintf("--%s=%s", cli.FlagHookMsg, hookMsgString), + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + false, 0, &sdk.TxResponse{}, + }, + { + "valid transaction with invalid hook msg", + []string{ + "1", + s.addrs[0].String(), + s.addrs[1].String(), + "100umin", + fmt.Sprintf("--%s=%s", cli.FlagHookMsg, "__invalid_hook_msg__"), + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + false, 0, &sdk.TxResponse{}, + }, + } + + for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { + out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args) + if tc.expectErr { + require.Error(err) + } else { + require.NoError(err, "test: %s\noutput: %s", tc.name, out.String()) + err = s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType) + require.NoError(err, out.String(), "test: %s, output\n:", tc.name, out.String()) + + txResp := tc.respType.(*sdk.TxResponse) + require.Equal(tc.expectedCode, txResp.Code, + "test: %s, output\n:", tc.name, out.String()) + } + }) + } +} + +func (s *CLITestSuite) TestNewExecuteMessagesCmd() { + require := s.Require() + cmd := cli.NewExecuteMessagesCmd() + + consPrivKey := ed25519.GenPrivKey() + consPubKeyBz, err := s.encCfg.Codec.MarshalInterfaceJSON(consPrivKey.PubKey()) + require.NoError(err) + require.NotNil(consPubKeyBz) + + emptyMessages := `{"messages": []}` + emptyMessagesFile := testutil.WriteToNewTempFile(s.T(), emptyMessages) + defer emptyMessagesFile.Close() + + invalidMessages := `{"messages": [ + { + "@type": "/cosmos.bank.v1beta1.InvalidMsgSend", + "from_address": "inval1...", + "to_address": "inval1...", + "amount":[{"denom": "uinval","amount": "inval"}] + } + ]}` + invalidMessagesFile := testutil.WriteToNewTempFile(s.T(), invalidMessages) + defer invalidMessagesFile.Close() + + validMessages := `{"messages": [ + { + "@type": "/cosmos.bank.v1beta1.MsgSend", + "from_address": "cosmos12jea62yu8tmhzy7zage0fngyjvsskfygm99h6h", + "to_address": "cosmos15hqqzhye49577x45ekz24jhesvc442zzndx9my", + "amount":[{"denom": "umin","amount": "10"}] + } + ]}` + validMessagesFile := testutil.WriteToNewTempFile(s.T(), validMessages) + defer validMessagesFile.Close() + + testCases := []struct { + name string + args []string + expectErr bool + expectedCode uint32 + respType proto.Message + }{ + { + "invalid transaction (empty messages)", + []string{ + emptyMessagesFile.Name(), + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + { + "invalid transaction (invalid in-messages)", + []string{ + invalidMessagesFile.Name(), + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + true, 0, &sdk.TxResponse{}, + }, + { + "valid transaction", + []string{ + validMessagesFile.Name(), + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10))).String()), + }, + false, 0, &sdk.TxResponse{}, + }, + } + + for _, tc := range testCases { + tc := tc + s.Run(tc.name, func() { + out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args) + if tc.expectErr { + require.Error(err) + } else { + require.NoError(err, "test: %s\noutput: %s", tc.name, out.String()) + err = s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType) + require.NoError(err, out.String(), "test: %s, output\n:", tc.name, out.String()) + + txResp := tc.respType.(*sdk.TxResponse) + require.Equal(tc.expectedCode, txResp.Code, + "test: %s, output\n:", tc.name, out.String()) + } + }) + } +} + +func TestCLITestSuite(t *testing.T) { + suite.Run(t, new(CLITestSuite)) +} diff --git a/x/op_child/client/cli/util.go b/x/op_child/client/cli/util.go new file mode 100644 index 00000000..ec689765 --- /dev/null +++ b/x/op_child/client/cli/util.go @@ -0,0 +1,42 @@ +package cli + +import ( + "encoding/json" + "os" + + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type executeMessages struct { + // Msgs defines an array of sdk.Msgs proto-JSON-encoded as Anys. + Messages []json.RawMessage `json:"messages"` +} + +// parseExecuteMessages reads and parses the proposal. +func parseExecuteMessages(cdc codec.Codec, path string) ([]sdk.Msg, error) { + var em executeMessages + + contents, err := os.ReadFile(path) + if err != nil { + return nil, err + } + + err = json.Unmarshal(contents, &em) + if err != nil { + return nil, err + } + + msgs := make([]sdk.Msg, len(em.Messages)) + for i, anyJSON := range em.Messages { + var msg sdk.Msg + err := cdc.UnmarshalInterfaceJSON(anyJSON, &msg) + if err != nil { + return nil, err + } + + msgs[i] = msg + } + + return msgs, nil +} diff --git a/x/op_child/genesis.go b/x/op_child/genesis.go new file mode 100644 index 00000000..e8a13f0c --- /dev/null +++ b/x/op_child/genesis.go @@ -0,0 +1,37 @@ +package op_child + +import ( + tmtypes "github.com/cometbft/cometbft/types" + + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/op_child/keeper" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// WriteValidators returns a slice of bonded genesis validators. +func WriteValidators(ctx sdk.Context, keeper *keeper.Keeper) (vals []tmtypes.GenesisValidator, returnErr error) { + keeper.IterateLastValidators(ctx, func(_ int64, validator types.ValidatorI) (stop bool) { + pk, err := validator.ConsPubKey() + if err != nil { + returnErr = err + return true + } + tmPk, err := cryptocodec.ToTmPubKeyInterface(pk) + if err != nil { + returnErr = err + return true + } + + vals = append(vals, tmtypes.GenesisValidator{ + Address: sdk.ConsAddress(tmPk.Address()).Bytes(), + PubKey: tmPk, + Power: validator.GetConsensusPower(), + Name: validator.GetMoniker(), + }) + + return false + }) + + return +} diff --git a/x/op_child/keeper/alias_functions.go b/x/op_child/keeper/alias_functions.go new file mode 100644 index 00000000..cb066082 --- /dev/null +++ b/x/op_child/keeper/alias_functions.go @@ -0,0 +1,80 @@ +package keeper + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// Validator Set + +// iterate through the validator set and perform the provided function +func (k Keeper) IterateValidators(ctx sdk.Context, fn func(index int64, validator types.ValidatorI) (stop bool)) { + store := ctx.KVStore(k.storeKey) + + iterator := sdk.KVStorePrefixIterator(store, types.ValidatorsKey) + defer iterator.Close() + + i := int64(0) + + for ; iterator.Valid(); iterator.Next() { + validator := types.MustUnmarshalValidator(k.cdc, iterator.Value()) + stop := fn(i, validator) // XXX is this safe will the validator unexposed fields be able to get written to? + + if stop { + break + } + i++ + } +} + +// iterate through the active validator set and perform the provided function +func (k Keeper) IterateLastValidators(ctx sdk.Context, fn func(index int64, validator types.ValidatorI) (stop bool)) { + iterator := k.LastValidatorsIterator(ctx) + defer iterator.Close() + + i := int64(0) + + for ; iterator.Valid(); iterator.Next() { + address := types.AddressFromLastValidatorPowerKey(iterator.Key()) + + validator, found := k.GetValidator(ctx, address) + if !found { + panic(fmt.Sprintf("validator record not found for address: %v\n", address)) + } + + stop := fn(i, validator) // XXX is this safe will the validator unexposed fields be able to get written to? + if stop { + break + } + i++ + } +} + +// Validator gets the Validator interface for a particular address +func (k Keeper) Validator(ctx sdk.Context, address sdk.ValAddress) types.ValidatorI { + val, found := k.GetValidator(ctx, address) + if !found { + return nil + } + + return val +} + +// ValidatorByConsAddr gets the validator interface for a particular pubkey +func (k Keeper) ValidatorByConsAddr(ctx sdk.Context, addr sdk.ConsAddress) types.ValidatorI { + val, found := k.GetValidatorByConsAddr(ctx, addr) + if !found { + return nil + } + + return val +} + +// Delegation Set + +// Returns self as it is both a validatorset and delegationset +func (k Keeper) GetValidatorSet() types.ValidatorSet { + return k +} diff --git a/x/op_child/keeper/common_test.go b/x/op_child/keeper/common_test.go new file mode 100644 index 00000000..37fad7e3 --- /dev/null +++ b/x/op_child/keeper/common_test.go @@ -0,0 +1,378 @@ +package keeper_test + +import ( + "encoding/binary" + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/require" + + dbm "github.com/cometbft/cometbft-db" + "github.com/cometbft/cometbft/crypto" + "github.com/cometbft/cometbft/crypto/ed25519" + "github.com/cometbft/cometbft/crypto/secp256k1" + "github.com/cometbft/cometbft/libs/log" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + + errors "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/std" + "github.com/cosmos/cosmos-sdk/store" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + testutilsims "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/x/auth" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/bank" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + opchild "github.com/initia-labs/OPinit/x/op_child" + opchildkeeper "github.com/initia-labs/OPinit/x/op_child/keeper" + opchildtypes "github.com/initia-labs/OPinit/x/op_child/types" +) + +const baseDenom = "umin" + +var ModuleBasics = module.NewBasicManager( + auth.AppModuleBasic{}, + bank.AppModuleBasic{}, + opchild.AppModuleBasic{}, +) + +var ( + valPubKeys = testutilsims.CreateTestPubKeys(5) + + pubKeys = []crypto.PubKey{ + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + } + + addrs = []sdk.AccAddress{ + sdk.AccAddress(pubKeys[0].Address()), + sdk.AccAddress(pubKeys[1].Address()), + sdk.AccAddress(pubKeys[2].Address()), + sdk.AccAddress(pubKeys[3].Address()), + sdk.AccAddress(pubKeys[4].Address()), + } + + valAddrs = []sdk.ValAddress{ + sdk.ValAddress(pubKeys[0].Address()), + sdk.ValAddress(pubKeys[1].Address()), + sdk.ValAddress(pubKeys[2].Address()), + sdk.ValAddress(pubKeys[3].Address()), + sdk.ValAddress(pubKeys[4].Address()), + } + + testDenoms = []string{ + "test1", + "test2", + "test3", + "test4", + "test5", + } + + initiaSupply = sdk.NewInt(100_000_000_000) +) + +type EncodingConfig struct { + InterfaceRegistry codectypes.InterfaceRegistry + Marshaler codec.Codec + TxConfig client.TxConfig + Amino *codec.LegacyAmino +} + +func MakeTestCodec(t testing.TB) codec.Codec { + return MakeEncodingConfig(t).Marshaler +} + +func MakeEncodingConfig(_ testing.TB) EncodingConfig { + amino := codec.NewLegacyAmino() + interfaceRegistry := codectypes.NewInterfaceRegistry() + marshaler := codec.NewProtoCodec(interfaceRegistry) + txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes) + + std.RegisterInterfaces(interfaceRegistry) + std.RegisterLegacyAminoCodec(amino) + + ModuleBasics.RegisterLegacyAminoCodec(amino) + ModuleBasics.RegisterInterfaces(interfaceRegistry) + + interfaceRegistry.RegisterImplementations( + (*govv1beta1.Content)(nil), + &testLegacyContent{}, + ) + + return EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Marshaler: marshaler, + TxConfig: txCfg, + Amino: amino, + } +} + +func initialTotalSupply() sdk.Coins { + faucetBalance := sdk.NewCoins(sdk.NewCoin(baseDenom, initiaSupply)) + for _, testDenom := range testDenoms { + faucetBalance = faucetBalance.Add(sdk.NewCoin(testDenom, initiaSupply)) + } + + return faucetBalance +} + +type TestFaucet struct { + t testing.TB + bankKeeper bankkeeper.Keeper + sender sdk.AccAddress + balance sdk.Coins + minterModuleName string +} + +func NewTestFaucet(t testing.TB, ctx sdk.Context, bankKeeper bankkeeper.Keeper, minterModuleName string, initiaSupply ...sdk.Coin) *TestFaucet { + require.NotEmpty(t, initiaSupply) + r := &TestFaucet{t: t, bankKeeper: bankKeeper, minterModuleName: minterModuleName} + _, _, addr := keyPubAddr() + r.sender = addr + r.Mint(ctx, addr, initiaSupply...) + r.balance = initiaSupply + return r +} + +func (f *TestFaucet) Mint(parentCtx sdk.Context, addr sdk.AccAddress, amounts ...sdk.Coin) { + amounts = sdk.Coins(amounts).Sort() + require.NotEmpty(f.t, amounts) + ctx := parentCtx.WithEventManager(sdk.NewEventManager()) // discard all faucet related events + err := f.bankKeeper.MintCoins(ctx, f.minterModuleName, amounts) + require.NoError(f.t, err) + err = f.bankKeeper.SendCoinsFromModuleToAccount(ctx, f.minterModuleName, addr, amounts) + require.NoError(f.t, err) + f.balance = f.balance.Add(amounts...) +} + +func (f *TestFaucet) Fund(parentCtx sdk.Context, receiver sdk.AccAddress, amounts ...sdk.Coin) { + require.NotEmpty(f.t, amounts) + // ensure faucet is always filled + if !f.balance.IsAllGTE(amounts) { + f.Mint(parentCtx, f.sender, amounts...) + } + ctx := parentCtx.WithEventManager(sdk.NewEventManager()) // discard all faucet related events + err := f.bankKeeper.SendCoins(ctx, f.sender, receiver, amounts) + require.NoError(f.t, err) + f.balance = f.balance.Sub(amounts...) +} + +func (f *TestFaucet) NewFundedAccount(ctx sdk.Context, amounts ...sdk.Coin) sdk.AccAddress { + _, _, addr := keyPubAddr() + f.Fund(ctx, addr, amounts...) + return addr +} + +type TestKeepers struct { + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + OPChildKeeper opchildkeeper.Keeper + BridgeHook *bridgeHook + EncodingConfig EncodingConfig + Faucet *TestFaucet + MultiStore sdk.CommitMultiStore +} + +// createDefaultTestInput common settings for createTestInput +func createDefaultTestInput(t testing.TB) (sdk.Context, TestKeepers) { + return createTestInput(t, false) +} + +// createTestInput encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) +func createTestInput(t testing.TB, isCheckTx bool) (sdk.Context, TestKeepers) { + return _createTestInput(t, isCheckTx, dbm.NewMemDB()) +} + +var keyCounter uint64 + +// we need to make this deterministic (same every test run), as encoded address size and thus gas cost, +// depends on the actual bytes (due to ugly CanonicalAddress encoding) +func keyPubAddr() (crypto.PrivKey, crypto.PubKey, sdk.AccAddress) { + keyCounter++ + seed := make([]byte, 8) + binary.BigEndian.PutUint64(seed, keyCounter) + + key := ed25519.GenPrivKeyFromSecret(seed) + pub := key.PubKey() + addr := sdk.AccAddress(pub.Address()) + return key, pub, addr +} + +// encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) +func _createTestInput( + t testing.TB, + isCheckTx bool, + db dbm.DB, +) (sdk.Context, TestKeepers) { + keys := sdk.NewKVStoreKeys( + authtypes.StoreKey, banktypes.StoreKey, opchildtypes.StoreKey, + ) + ms := store.NewCommitMultiStore(db) + for _, v := range keys { + ms.MountStoreWithDB(v, storetypes.StoreTypeIAVL, db) + } + memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) + for _, v := range memKeys { + ms.MountStoreWithDB(v, storetypes.StoreTypeMemory, db) + } + + require.NoError(t, ms.LoadLatestVersion()) + + ctx := sdk.NewContext(ms, tmproto.Header{ + Height: 1234567, + Time: time.Date(2020, time.April, 22, 12, 0, 0, 0, time.UTC), + }, isCheckTx, log.NewNopLogger()) + + encodingConfig := MakeEncodingConfig(t) + appCodec := encodingConfig.Marshaler + + maccPerms := map[string][]string{ // module account permissions + authtypes.FeeCollectorName: nil, + distributiontypes.ModuleName: nil, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + opchildtypes.ModuleName: {authtypes.Burner, authtypes.Minter}, + + // for testing + authtypes.Minter: {authtypes.Minter, authtypes.Burner}, + } + accountKeeper := authkeeper.NewAccountKeeper( + appCodec, + keys[authtypes.StoreKey], // target store + authtypes.ProtoBaseAccount, // prototype + maccPerms, + sdk.GetConfig().GetBech32AccountAddrPrefix(), + authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), + ) + blockedAddrs := make(map[string]bool) + for acc := range maccPerms { + blockedAddrs[authtypes.NewModuleAddress(acc).String()] = true + } + + bankKeeper := bankkeeper.NewBaseKeeper( + appCodec, + keys[banktypes.StoreKey], + accountKeeper, + blockedAddrs, + authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), + ) + bankKeeper.SetParams(ctx, banktypes.DefaultParams()) + + msgRouter := baseapp.NewMsgServiceRouter() + msgRouter.SetInterfaceRegistry(encodingConfig.InterfaceRegistry) + + bridgeHook := &bridgeHook{} + opchildKeeper := opchildkeeper.NewKeeper( + appCodec, + keys[opchildtypes.StoreKey], + accountKeeper, + bankKeeper, + bridgeHook.Hook, + msgRouter, + authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), + ) + + // set test legacy content handler + govRouter := govv1beta1.NewRouter() + govRouter.AddRoute("test", NewTestLegacyContentHandler()) + opchildKeeper.SetLegacyRouter(govRouter) + + opchildParams := opchildtypes.DefaultParams() + opchildParams.BridgeExecutor = addrs[0].String() + opchildKeeper.SetParams(ctx, opchildParams) + + // register handlers to msg router + opchildtypes.RegisterMsgServer(msgRouter, opchildkeeper.NewMsgServerImpl(opchildKeeper)) + + faucet := NewTestFaucet(t, ctx, bankKeeper, authtypes.Minter, initialTotalSupply()...) + + keepers := TestKeepers{ + AccountKeeper: accountKeeper, + BankKeeper: bankKeeper, + OPChildKeeper: opchildKeeper, + BridgeHook: bridgeHook, + EncodingConfig: encodingConfig, + Faucet: faucet, + MultiStore: ms, + } + return ctx, keepers +} + +type testLegacyContent struct { + Title string + Description string + Message string +} + +func (*testLegacyContent) ProtoMessage() {} +func (m *testLegacyContent) Reset() { *m = testLegacyContent{} } +func (c *testLegacyContent) GetTitle() string { + return c.Title +} +func (c *testLegacyContent) GetDescription() string { + return c.Description +} + +func (c *testLegacyContent) ProposalRoute() string { + return "test" +} +func (c *testLegacyContent) ProposalType() string { + return "test" +} +func (c *testLegacyContent) ValidateBasic() error { + return nil +} +func (c testLegacyContent) String() string { + return fmt.Sprintf(`Parameter Change Proposal: +Title: %s +Description: %s +Message: %s +`, c.Title, c.Description, c.Message) +} + +func NewTestLegacyContentHandler() govv1beta1.Handler { + return func(ctx sdk.Context, content govv1beta1.Content) error { + switch c := content.(type) { + case *testLegacyContent: + if c.Message != "test" { + return fmt.Errorf("message must be `test`") + } + return nil + + default: + return errors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized legacy content type: %T", c) + } + } +} + +type bridgeHook struct { + msgBytes []byte + err error +} + +func (h *bridgeHook) Hook(ctx sdk.Context, sender sdk.AccAddress, msgBytes []byte) error { + if h.err == nil { + h.msgBytes = msgBytes + } + + return h.err +} diff --git a/x/op_child/keeper/compatibility_grpc_query.go b/x/op_child/keeper/compatibility_grpc_query.go new file mode 100644 index 00000000..7b14d242 --- /dev/null +++ b/x/op_child/keeper/compatibility_grpc_query.go @@ -0,0 +1,80 @@ +package keeper + +// DONTCOVER + +import ( + "context" + "time" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + cosmostypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +const ( + unbondingTime = 60 * 60 * 24 * 7 * time.Second + maxEntries = 0 + bondDenom = "" +) + +// Querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over keeper +type CompatibilityQuerier struct { + Keeper +} + +var _ cosmostypes.QueryServer = CompatibilityQuerier{} + +// CosmosParams queries the staking parameters for IBC compatibility +// returns a first bond denom. +func (q CompatibilityQuerier) Params(c context.Context, _ *cosmostypes.QueryParamsRequest) (*cosmostypes.QueryParamsResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + params := q.GetParams(ctx) + + return &cosmostypes.QueryParamsResponse{Params: cosmostypes.Params{ + UnbondingTime: unbondingTime, + MaxValidators: params.MaxValidators, + MaxEntries: maxEntries, + HistoricalEntries: params.HistoricalEntries, + BondDenom: bondDenom, + }}, nil +} + +func (q CompatibilityQuerier) Validators(context.Context, *cosmostypes.QueryValidatorsRequest) (*cosmostypes.QueryValidatorsResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) Validator(context.Context, *cosmostypes.QueryValidatorRequest) (*cosmostypes.QueryValidatorResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) ValidatorDelegations(context.Context, *cosmostypes.QueryValidatorDelegationsRequest) (*cosmostypes.QueryValidatorDelegationsResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) ValidatorUnbondingDelegations(context.Context, *cosmostypes.QueryValidatorUnbondingDelegationsRequest) (*cosmostypes.QueryValidatorUnbondingDelegationsResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) Delegation(context.Context, *cosmostypes.QueryDelegationRequest) (*cosmostypes.QueryDelegationResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) UnbondingDelegation(context.Context, *cosmostypes.QueryUnbondingDelegationRequest) (*cosmostypes.QueryUnbondingDelegationResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) DelegatorDelegations(context.Context, *cosmostypes.QueryDelegatorDelegationsRequest) (*cosmostypes.QueryDelegatorDelegationsResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) DelegatorUnbondingDelegations(context.Context, *cosmostypes.QueryDelegatorUnbondingDelegationsRequest) (*cosmostypes.QueryDelegatorUnbondingDelegationsResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) Redelegations(context.Context, *cosmostypes.QueryRedelegationsRequest) (*cosmostypes.QueryRedelegationsResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) DelegatorValidators(context.Context, *cosmostypes.QueryDelegatorValidatorsRequest) (*cosmostypes.QueryDelegatorValidatorsResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) DelegatorValidator(context.Context, *cosmostypes.QueryDelegatorValidatorRequest) (*cosmostypes.QueryDelegatorValidatorResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) HistoricalInfo(context.Context, *cosmostypes.QueryHistoricalInfoRequest) (*cosmostypes.QueryHistoricalInfoResponse, error) { + return nil, sdkerrors.ErrNotSupported +} +func (q CompatibilityQuerier) Pool(context.Context, *cosmostypes.QueryPoolRequest) (*cosmostypes.QueryPoolResponse, error) { + return nil, sdkerrors.ErrNotSupported +} diff --git a/x/op_child/keeper/genesis.go b/x/op_child/keeper/genesis.go new file mode 100644 index 00000000..320bcf13 --- /dev/null +++ b/x/op_child/keeper/genesis.go @@ -0,0 +1,97 @@ +package keeper + +import ( + "fmt" + + abci "github.com/cometbft/cometbft/abci/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// InitGenesis sets the pool and parameters for the provided keeper. For each +// validator in data, it sets that validator in the keeper along with manually +// setting the indexes. In addition, it also sets any delegations found in +// data. Finally, it updates the bonded validators. +// Returns final validator set after applying all declaration and delegations +func (k Keeper) InitGenesis(ctx sdk.Context, data *types.GenesisState) (res []abci.ValidatorUpdate) { + // We need to pretend to be "n blocks before genesis", where "n" is the + // validator update delay, so that e.g. slashing periods are correctly + // initialized for the validator set e.g. with a one-block offset - the + // first TM block is at height 1, so state updates applied from + // genesis.json are in block 0. + ctx = ctx.WithBlockHeight(1 - sdk.ValidatorUpdateDelay) + + if err := k.SetParams(ctx, data.Params); err != nil { + panic(err) + } + + for _, validator := range data.Validators { + k.SetValidator(ctx, validator) + + // Manually set indices for the first time + k.SetValidatorByConsAddr(ctx, validator) + } + + // don't need to run Tendermint updates if we exported + if data.Exported { + for _, lv := range data.LastValidatorPowers { + valAddr, err := sdk.ValAddressFromBech32(lv.Address) + if err != nil { + panic(err) + } + + k.SetLastValidatorPower(ctx, valAddr, lv.Power) + validator, found := k.GetValidator(ctx, valAddr) + + if !found { + panic(fmt.Sprintf("validator %s not found", lv.Address)) + } + + update := validator.ABCIValidatorUpdate() + update.Power = lv.Power // keep the next-val-set offset, use the last power for the first block + res = append(res, update) + } + + var previousProposer sdk.ConsAddress + if data.PreviousProposer != "" { + var err error + previousProposer, err = sdk.ConsAddressFromBech32(data.PreviousProposer) + if err != nil { + panic(err) + } + } + + k.SetPreviousProposerConsAddr(ctx, previousProposer) + } else { + var err error + + res, err = k.ApplyAndReturnValidatorSetUpdates(ctx) + if err != nil { + panic(err) + } + } + + return res +} + +// ExportGenesis returns a GenesisState for a given context and keeper. The +// GenesisState will contain the pool, params, validators, and bonds found in +// the keeper. +func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { + + var lastValidatorPowers []types.LastValidatorPower + + k.IterateLastValidatorPowers(ctx, func(addr sdk.ValAddress, power int64) (stop bool) { + lastValidatorPowers = append(lastValidatorPowers, types.LastValidatorPower{Address: addr.String(), Power: power}) + return false + }) + + return &types.GenesisState{ + Params: k.GetParams(ctx), + LastValidatorPowers: lastValidatorPowers, + Validators: k.GetAllValidators(ctx), + PreviousProposer: k.GetPreviousProposerConsAddr(ctx).String(), + Exported: true, + } +} diff --git a/x/op_child/keeper/historical_info.go b/x/op_child/keeper/historical_info.go new file mode 100644 index 00000000..aadffe94 --- /dev/null +++ b/x/op_child/keeper/historical_info.go @@ -0,0 +1,79 @@ +package keeper + +import ( + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + cosmostypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +// GetHistoricalInfo gets the historical info at a given height +func (k Keeper) GetHistoricalInfo(ctx sdk.Context, height int64) (cosmostypes.HistoricalInfo, bool) { + store := ctx.KVStore(k.storeKey) + key := cosmostypes.GetHistoricalInfoKey(height) + + value := store.Get(key) + if value == nil { + return cosmostypes.HistoricalInfo{}, false + } + + return cosmostypes.MustUnmarshalHistoricalInfo(k.cdc, value), true +} + +// SetHistoricalInfo sets the historical info at a given height +func (k Keeper) SetHistoricalInfo(ctx sdk.Context, height int64, hi *cosmostypes.HistoricalInfo) { + store := ctx.KVStore(k.storeKey) + key := cosmostypes.GetHistoricalInfoKey(height) + value := k.cdc.MustMarshal(hi) + store.Set(key, value) +} + +// DeleteHistoricalInfo deletes the historical info at a given height +func (k Keeper) DeleteHistoricalInfo(ctx sdk.Context, height int64) { + store := ctx.KVStore(k.storeKey) + key := cosmostypes.GetHistoricalInfoKey(height) + + store.Delete(key) +} + +// TrackHistoricalInfo saves the latest historical-info and deletes the oldest +// heights that are below pruning height +func (k Keeper) TrackHistoricalInfo(ctx sdk.Context) { + entryNum := k.HistoricalEntries(ctx) + + // Prune store to ensure we only have parameter-defined historical entries. + // In most cases, this will involve removing a single historical entry. + // In the rare scenario when the historical entries gets reduced to a lower value k' + // from the original value k. k - k' entries must be deleted from the store. + // Since the entries to be deleted are always in a continuous range, we can iterate + // over the historical entries starting from the most recent version to be pruned + // and then return at the first empty entry. + for i := ctx.BlockHeight() - int64(entryNum); i >= 0; i-- { + _, found := k.GetHistoricalInfo(ctx, i) + if found { + k.DeleteHistoricalInfo(ctx, i) + } else { + break + } + } + + // if there is no need to persist historicalInfo, return + if entryNum == 0 { + return + } + + // Create HistoricalInfo struct + lastVals := k.GetLastValidators(ctx) + var lastCosmosVals cosmostypes.Validators + for _, v := range lastVals { + lastCosmosVals = append(lastCosmosVals, cosmostypes.Validator{ + ConsensusPubkey: v.ConsensusPubkey, + Tokens: math.NewInt(v.ConsensusPower() * sdk.DefaultPowerReduction.Int64()), + Status: cosmostypes.Bonded, + }) + } + + historicalEntry := cosmostypes.NewHistoricalInfo(ctx.BlockHeader(), lastCosmosVals, sdk.DefaultPowerReduction) + + // Set latest HistoricalInfo at current height + k.SetHistoricalInfo(ctx, ctx.BlockHeight(), &historicalEntry) +} diff --git a/x/op_child/keeper/keeper.go b/x/op_child/keeper/keeper.go new file mode 100644 index 00000000..69320ad1 --- /dev/null +++ b/x/op_child/keeper/keeper.go @@ -0,0 +1,85 @@ +package keeper + +import ( + "github.com/cometbft/cometbft/libs/log" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + + "github.com/initia-labs/OPinit/x/op_child/types" +) + +type Keeper struct { + cdc codec.BinaryCodec + storeKey storetypes.StoreKey + authKeeper types.AccountKeeper + bankKeeper types.BankKeeper + bridgeHook types.BridgeHook + + // Msg server router + router *baseapp.MsgServiceRouter + + // Legacy Proposal router + legacyRouter govv1beta1.Router + + // the address capable of executing a MsgUpdateParams message. Typically, this + // should be the x/rollup module account. + authority string +} + +func NewKeeper( + cdc codec.BinaryCodec, + key storetypes.StoreKey, + ak types.AccountKeeper, + bk types.BankKeeper, + bh types.BridgeHook, + router *baseapp.MsgServiceRouter, + authority string, +) Keeper { + // ensure that authority is a valid AccAddress + if _, err := sdk.AccAddressFromBech32(authority); err != nil { + panic("authority is not a valid acc address") + } + + return Keeper{ + cdc: cdc, + storeKey: key, + authKeeper: ak, + bankKeeper: bk, + bridgeHook: bh, + router: router, + authority: authority, + } +} + +// GetAuthority returns the x/move module's authority. +func (ak Keeper) GetAuthority() string { + return ak.authority +} + +// Logger returns a module-specific logger. +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", "x/"+types.ModuleName) +} + +// Router returns the gov keeper's router +func (keeper Keeper) Router() *baseapp.MsgServiceRouter { + return keeper.router +} + +// SetLegacyRouter sets the legacy router for governance(validator operation) +func (keeper *Keeper) SetLegacyRouter(router govv1beta1.Router) { + // It is vital to seal the governance proposal router here as to not allow + // further handlers to be registered after the keeper is created since this + // could create invalid or non-deterministic behavior. + router.Seal() + keeper.legacyRouter = router +} + +// LegacyRouter returns the rollup keeper's legacy router +func (keeper Keeper) LegacyRouter() govv1beta1.Router { + return keeper.legacyRouter +} diff --git a/x/op_child/keeper/msg_server.go b/x/op_child/keeper/msg_server.go new file mode 100644 index 00000000..5636f49f --- /dev/null +++ b/x/op_child/keeper/msg_server.go @@ -0,0 +1,355 @@ +package keeper + +import ( + "context" + "strconv" + + "cosmossdk.io/errors" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + + "github.com/initia-labs/OPinit/x/op_child/types" +) + +const ( + bridgeModuleName = "op_bridge" + bridgeFinalizeFunctionName = "finalize_token_bridge" + bridgeRegisterFunctionName = "register_token" +) + +type MsgServer struct { + Keeper +} + +var _ types.MsgServer = MsgServer{} + +// NewMsgServerImpl return MsgServer instance +func NewMsgServerImpl(k Keeper) MsgServer { + return MsgServer{k} +} + +// checkValidatorPermission checks if the sender is the one of validator +func (ms MsgServer) checkValidatorPermission(ctx sdk.Context, sender string) error { + addr, err := sdk.AccAddressFromBech32(sender) + if err != nil { + return err + } + + valAddr := sdk.ValAddress(addr) + if _, found := ms.GetValidator(ctx, valAddr); !found { + return errors.Wrapf(sdkerrors.ErrUnauthorized, "the message is allowed to be executed by validator") + } + + return nil +} + +// checkBridgeExecutorPermission checks if the sender is the registered bridge executor to send messages +func (ms MsgServer) checkBridgeExecutorPermission(ctx sdk.Context, sender string) error { + senderAddr, err := sdk.AccAddressFromBech32(sender) + if err != nil { + return err + } + + bridgeExecutor := ms.BridgeExecutor(ctx) + if !bridgeExecutor.Equals(senderAddr) { + return errors.Wrapf(sdkerrors.ErrUnauthorized, "expected %s, got %s", bridgeExecutor, sender) + } + return nil +} + +///////////////////////////////////////////////////// +// The messages for Validator + +// ExecuteMessages implements a ExecuteMessages message handling +func (ms MsgServer) ExecuteMessages(context context.Context, req *types.MsgExecuteMessages) (*types.MsgExecuteMessagesResponse, error) { + ctx := sdk.UnwrapSDKContext(context) + authority := sdk.MustAccAddressFromBech32(ms.authority) + + // permission check + if err := ms.checkValidatorPermission(ctx, req.Sender); err != nil { + return nil, err + } + + cachtCtx, writeCache := ctx.CacheContext() + messages, err := req.GetMsgs() + if err != nil { + return nil, err + } + + events := sdk.EmptyEvents() + for _, msg := range messages { + signers := msg.GetSigners() + // assert that the rollup module account is the only signer for ExecuteMessages message + if !signers[0].Equals(authority) { + return nil, errors.Wrapf(types.ErrInvalidSigner, signers[0].String()) + } + + handler := ms.Router().Handler(msg) + + var res *sdk.Result + res, err = handler(cachtCtx, msg) + if err != nil { + break + } + + events = append(events, res.GetEvents()...) + + } + if err != nil { + return nil, err + } + writeCache() + + // TODO - merge events of MsgExecuteMessages itself + ctx.EventManager().EmitEvents(events) + + return &types.MsgExecuteMessagesResponse{}, nil +} + +// ExecuteLegacyContents implements a ExecuteLegacyContents message handling +func (ms MsgServer) ExecuteLegacyContents(context context.Context, req *types.MsgExecuteLegacyContents) (*types.MsgExecuteLegacyContentsResponse, error) { + ctx := sdk.UnwrapSDKContext(context) + for _, content := range req.GetContents() { + // Ensure that the content has a respective handler + if !ms.Keeper.legacyRouter.HasRoute(content.ProposalRoute()) { + return nil, errors.Wrap(govtypes.ErrNoProposalHandlerExists, content.ProposalRoute()) + } + + handler := ms.Keeper.legacyRouter.GetRoute(content.ProposalRoute()) + if err := handler(ctx, content); err != nil { + return nil, errors.Wrapf(govtypes.ErrInvalidProposalContent, "failed to run legacy handler %s, %+v", content.ProposalRoute(), err) + } + } + + return &types.MsgExecuteLegacyContentsResponse{}, nil +} + +////////////////////////////////////////////// +// Authority messages + +// AddValidator implements adding a validator to the designated validator set +func (ms MsgServer) AddValidator(context context.Context, req *types.MsgAddValidator) (*types.MsgAddValidatorResponse, error) { + if ms.authority != req.Authority { + return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.authority, req.Authority) + } + + ctx := sdk.UnwrapSDKContext(context) + valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddress) + if err != nil { + return nil, err + } + + // check to see if the pubkey or sender has been registered before + if _, found := ms.GetValidator(ctx, valAddr); found { + return nil, types.ErrValidatorOwnerExists + } + + pk, ok := req.Pubkey.GetCachedValue().(cryptotypes.PubKey) + if !ok { + return nil, errors.Wrapf(sdkerrors.ErrInvalidType, "Expecting cryptotypes.PubKey, got %T", pk) + } + + if _, found := ms.GetValidatorByConsAddr(ctx, sdk.GetConsAddress(pk)); found { + return nil, types.ErrValidatorPubKeyExists + } + + cp := ctx.ConsensusParams() + if cp != nil && cp.Validator != nil { + pkType := pk.Type() + hasKeyType := false + for _, keyType := range cp.Validator.PubKeyTypes { + if pkType == keyType { + hasKeyType = true + break + } + } + if !hasKeyType { + return nil, errors.Wrapf( + types.ErrValidatorPubKeyTypeNotSupported, + "got: %s, expected: %s", pk.Type(), cp.Validator.PubKeyTypes, + ) + } + } + + validator, err := types.NewValidator(valAddr, pk, req.Moniker) + if err != nil { + return nil, err + } + + ms.SetValidator(ctx, validator) + ms.SetValidatorByConsAddr(ctx, validator) + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeAddValidator, + sdk.NewAttribute(types.AttributeKeyValidator, req.ValidatorAddress), + ), + }) + + return &types.MsgAddValidatorResponse{}, nil +} + +// RemoveValidator implements removing a validator from the designated validator set +func (ms MsgServer) RemoveValidator(context context.Context, req *types.MsgRemoveValidator) (*types.MsgRemoveValidatorResponse, error) { + if ms.authority != req.Authority { + return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.authority, req.Authority) + } + + ctx := sdk.UnwrapSDKContext(context) + valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddress) + if err != nil { + return nil, err + } + + val, found := ms.Keeper.GetValidator(ctx, valAddr) + if !found { + return nil, sdkerrors.Wrap(types.ErrNoValidatorFound, val.OperatorAddress) + } + val.ConsPower = 0 + + // set validator consensus power `0`, + // then `val_state_change` will execute `k.RemoveValidator`. + ms.Keeper.SetValidator(ctx, val) + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeRemoveValidator, + sdk.NewAttribute(types.AttributeKeyValidator, req.ValidatorAddress), + ), + }) + + return &types.MsgRemoveValidatorResponse{}, nil +} + +// UpdateParams implements updating the parameters +func (ms MsgServer) UpdateParams(context context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if ms.authority != req.Authority { + return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.authority, req.Authority) + } + + ctx := sdk.UnwrapSDKContext(context) + if err := ms.SetParams(ctx, *req.Params); err != nil { + return nil, err + } + + return &types.MsgUpdateParamsResponse{}, nil + +} + +// SpendFeePool implements MsgServer interface. +func (ms MsgServer) SpendFeePool(context context.Context, req *types.MsgSpendFeePool) (*types.MsgSpendFeePoolResponse, error) { + if ms.authority != req.Authority { + return nil, errors.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.authority, req.Authority) + } + + ctx := sdk.UnwrapSDKContext(context) + recipientAddr, err := sdk.AccAddressFromBech32(req.Recipient) + if err != nil { + return nil, err + } + + // send collected fees to the recipient address + if err := ms.bankKeeper.SendCoinsFromModuleToAccount(ctx, authtypes.FeeCollectorName, recipientAddr, req.Amount); err != nil { + return nil, err + } + + return &types.MsgSpendFeePoolResponse{}, nil +} + +///////////////////////////////////////////////////// +// The messages for Bridge Executor + +// Deposit implements send a deposit from the upper layer to the recipient +func (ms MsgServer) Deposit(context context.Context, req *types.MsgDeposit) (*types.MsgDepositResponse, error) { + ctx := sdk.UnwrapSDKContext(context) + + // permission check + if err := ms.checkBridgeExecutorPermission(ctx, req.Sender); err != nil { + return nil, err + } + + // check already finalized + if ok := ms.HasFinalizedInboundSequence(ctx, req.Sequence); ok { + return nil, types.ErrDepositAlreadyFinalized + } + + fromAddr, err := sdk.AccAddressFromBech32(req.From) + if err != nil { + return nil, err + } + + toAddr, err := sdk.AccAddressFromBech32(req.To) + if err != nil { + return nil, err + } + + if err := ms.bankKeeper.MintCoins(ctx, types.ModuleName, req.Amount); err != nil { + return nil, err + } + + if err := ms.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, toAddr, req.Amount); err != nil { + return nil, err + } + + ms.RecordFinalizedInboundSequence(ctx, req.Sequence) + + event := sdk.NewEvent( + types.EventTypeFinalizeTokenBridge, + sdk.NewAttribute(types.AttributeKeyInboundSequence, strconv.FormatUint(req.Sequence, 10)), + sdk.NewAttribute(types.AttributeKeySender, req.From), + sdk.NewAttribute(types.AttributeKeyRecipient, req.To), + sdk.NewAttribute(types.AttributeKeyAmount, req.Amount.String()), + sdk.NewAttribute(types.AttributeKeyFinalizeHeight, strconv.FormatUint(req.Height, 10)), + ) + + // handle hook + if len(req.Data) > 0 { + subCtx, commit := ctx.CacheContext() + + err = ms.bridgeHook(subCtx, fromAddr, req.Data) + if err == nil { + commit() + event = event.AppendAttributes(sdk.NewAttribute(types.AttributeKeyHookSuccess, "true")) + } else { + event = event.AppendAttributes(sdk.NewAttribute(types.AttributeKeyHookSuccess, "false")) + } + } + ctx.EventManager().EmitEvent(event) + + return &types.MsgDepositResponse{}, nil +} + +///////////////////////////////////////////////////// +// The messages for User + +// Withdraw implements creating a token from the upper layer +func (ms MsgServer) Withdraw(context context.Context, req *types.MsgWithdraw) (*types.MsgWithdrawResponse, error) { + ctx := sdk.UnwrapSDKContext(context) + + senderAddr, err := sdk.AccAddressFromBech32(req.Sender) + if err != nil { + return nil, err + } + + coins := sdk.NewCoins(req.Amount) + outboundSequence := ms.IncreaseOutboundSequence(ctx) + if err := ms.bankKeeper.SendCoinsFromAccountToModule(ctx, senderAddr, types.ModuleName, coins); err != nil { + return nil, err + } + if err := ms.bankKeeper.BurnCoins(ctx, types.ModuleName, coins); err != nil { + return nil, err + } + + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeInitiateTokenBridge, + sdk.NewAttribute(types.AttributeKeyFrom, req.Sender), + sdk.NewAttribute(types.AttributeKeyTo, req.To), + sdk.NewAttribute(types.AttributeKeyAmount, req.Amount.String()), + sdk.NewAttribute(types.AttributeKeyOutboundSequence, strconv.FormatUint(outboundSequence, 10)), + )) + + return &types.MsgWithdrawResponse{}, nil +} diff --git a/x/op_child/keeper/msg_server_test.go b/x/op_child/keeper/msg_server_test.go new file mode 100644 index 00000000..4a8546d7 --- /dev/null +++ b/x/op_child/keeper/msg_server_test.go @@ -0,0 +1,339 @@ +package keeper_test + +import ( + "encoding/hex" + "encoding/json" + "errors" + "testing" + + "cosmossdk.io/math" + "github.com/stretchr/testify/require" + "golang.org/x/crypto/sha3" + + testutilsims "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + + "github.com/initia-labs/OPinit/x/op_child/keeper" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +///////////////////////////////////////// +// The messages for Validators + +func Test_MsgServer_ExecuteMessages(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + valPubKeys := testutilsims.CreateTestPubKeys(2) + + // register validator + val, err := types.NewValidator(valAddrs[0], valPubKeys[0], "val1") + require.NoError(t, err) + + input.OPChildKeeper.SetValidator(ctx, val) + + // apply validator updates + input.OPChildKeeper.BlockValidatorUpdates(ctx) + + addMsg, err := types.NewMsgAddValidator("val2", authtypes.NewModuleAddress(types.ModuleName), valAddrs[1], valPubKeys[1]) + require.NoError(t, err) + + removeMsg, err := types.NewMsgRemoveValidator(authtypes.NewModuleAddress(types.ModuleName), valAddrs[0]) + require.NoError(t, err) + + msg, err := types.NewMsgExecuteMessages(addrs[0], []sdk.Msg{addMsg, removeMsg}) + require.NoError(t, err) + + _, err = ms.ExecuteMessages(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + + // apply validator updates + input.OPChildKeeper.BlockValidatorUpdates(ctx) + + vals := input.OPChildKeeper.GetAllValidators(ctx) + require.Len(t, vals, 1) + require.Equal(t, vals[0].Moniker, "val2") +} + +func Test_MsgServer_ExecuteLegacyContents(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + valPubKeys := testutilsims.CreateTestPubKeys(2) + + // register validator + val, err := types.NewValidator(valAddrs[0], valPubKeys[0], "val1") + require.NoError(t, err) + + input.OPChildKeeper.SetValidator(ctx, val) + + // apply validator updates + input.OPChildKeeper.BlockValidatorUpdates(ctx) + + // valid legacy content + legacyContent := testLegacyContent{ + Title: "title", + Description: "description", + Message: "test", + } + msg, err := types.NewMsgExecuteLegacyContents(addrs[0], []govv1beta1.Content{&legacyContent}) + require.NoError(t, err) + + _, err = ms.ExecuteLegacyContents(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + + // legacy content with wrong message + legacyContent.Message = "wrong message" + msg, err = types.NewMsgExecuteLegacyContents(addrs[0], []govv1beta1.Content{&legacyContent}) + require.NoError(t, err) + + _, err = ms.ExecuteLegacyContents(sdk.WrapSDKContext(ctx), msg) + require.Error(t, err) +} + +///////////////////////////////////////// +// The messages for Authority + +func Test_MsgServer_AddValidator(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + valPubKeys := testutilsims.CreateTestPubKeys(2) + + msg, err := types.NewMsgAddValidator("val1", authtypes.NewModuleAddress(types.ModuleName), valAddrs[0], valPubKeys[0]) + require.NoError(t, err) + + _, err = ms.AddValidator( + sdk.WrapSDKContext(ctx), + msg, + ) + require.NoError(t, err) + + // invalid signer + msg, err = types.NewMsgAddValidator("val1", addrs[0], valAddrs[0], valPubKeys[0]) + require.NoError(t, err) + + _, err = ms.AddValidator( + sdk.WrapSDKContext(ctx), + msg, + ) + require.Error(t, err) + + // duplicate add validator + msg, err = types.NewMsgAddValidator("val1", authtypes.NewModuleAddress(types.ModuleName), valAddrs[0], valPubKeys[1]) + require.NoError(t, err) + + _, err = ms.AddValidator( + sdk.WrapSDKContext(ctx), + msg, + ) + require.Error(t, err) + + // duplicate cons pubkey + msg, err = types.NewMsgAddValidator("val1", authtypes.NewModuleAddress(types.ModuleName), valAddrs[1], valPubKeys[0]) + require.NoError(t, err) + + _, err = ms.AddValidator( + sdk.WrapSDKContext(ctx), + msg, + ) + require.Error(t, err) +} + +func Test_MsgServer_RemoveValidator(t *testing.T) { + ctx, input := createDefaultTestInput(t) + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + + valPubKeys := testutilsims.CreateTestPubKeys(2) + + // register validator + val, err := types.NewValidator(valAddrs[0], valPubKeys[0], "val1") + require.NoError(t, err) + + input.OPChildKeeper.SetValidator(ctx, val) + + // invalid signer + msg, err := types.NewMsgRemoveValidator(addrs[0], valAddrs[0]) + require.NoError(t, err) + + _, err = ms.RemoveValidator( + sdk.WrapSDKContext(ctx), + msg, + ) + require.Error(t, err) + + // remove not existing validator + msg, err = types.NewMsgRemoveValidator(authtypes.NewModuleAddress(types.ModuleName), valAddrs[1]) + require.NoError(t, err) + + _, err = ms.RemoveValidator( + sdk.WrapSDKContext(ctx), + msg, + ) + require.Error(t, err) + + // valid remove validator + msg, err = types.NewMsgRemoveValidator(authtypes.NewModuleAddress(types.ModuleName), valAddrs[0]) + require.NoError(t, err) + + _, err = ms.RemoveValidator( + sdk.WrapSDKContext(ctx), + msg, + ) + require.NoError(t, err) +} + +func Test_MsgServer_UpdateParams(t *testing.T) { + ctx, input := createDefaultTestInput(t) + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + + params := ms.GetParams(ctx) + params.MaxValidators = 1 + params.HistoricalEntries = 1 + params.BridgeExecutor = addrs[1].String() + + msg := types.NewMsgUpdateParams(authtypes.NewModuleAddress(types.ModuleName), ¶ms) + _, err := ms.UpdateParams(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + require.Equal(t, params, ms.GetParams(ctx)) + + // invalid signer + msg = types.NewMsgUpdateParams(authtypes.NewModuleAddress("gov"), ¶ms) + require.NoError(t, err) + + _, err = ms.UpdateParams( + sdk.WrapSDKContext(ctx), + msg, + ) + require.Error(t, err) +} + +func Test_MsgServer_SpendFeePool(t *testing.T) { + ctx, input := createDefaultTestInput(t) + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + + // fund fee pool + collectedFees := sdk.NewCoins(sdk.NewCoin(baseDenom, sdk.NewInt(100))) + input.Faucet.Fund(ctx, authtypes.NewModuleAddress(authtypes.FeeCollectorName), collectedFees...) + + beforeAmount := input.BankKeeper.GetBalance(ctx, addrs[1], baseDenom).Amount + + msg := types.NewMsgSpendFeePool( + authtypes.NewModuleAddress(types.ModuleName), + addrs[1], + collectedFees, + ) + _, err := ms.SpendFeePool(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + + afterAmount := input.BankKeeper.GetBalance(ctx, addrs[1], baseDenom).Amount + require.Equal(t, beforeAmount.Add(sdk.NewInt(100)), afterAmount) +} + +///////////////////////////////////////// +// The messages for User + +func Test_MsgServer_Withdraw(t *testing.T) { + ctx, input := createDefaultTestInput(t) + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + + bz := sha3.Sum256([]byte("test_token")) + denom := "l2/" + hex.EncodeToString(bz[:]) + + // fund asset + account := input.Faucet.NewFundedAccount(ctx, sdk.NewCoin(denom, math.NewInt(1_000_000_000))) + + // valid + msg := types.NewMsgWithdraw(account, addrs[1], sdk.NewCoin(denom, math.NewInt(100))) + _, err := ms.Withdraw(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + +} + +///////////////////////////////////////// +// The messages for Bridge Executor + +func Test_MsgServer_Deposit_NoHook(t *testing.T) { + ctx, input := createDefaultTestInput(t) + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + + bz := sha3.Sum256([]byte("test_token")) + denom := "l2/" + hex.EncodeToString(bz[:]) + + // unauthorized deposit + msg := types.NewMsgDeposit(addrs[1], addrs[1], addrs[1], sdk.NewCoins(sdk.NewCoin(denom, sdk.NewInt(100))), 1, nil) + _, err := ms.Deposit(sdk.WrapSDKContext(ctx), msg) + require.Error(t, err) + + beforeBalance := input.BankKeeper.GetBalance(ctx, addrs[1], denom) + require.Equal(t, sdk.ZeroInt(), beforeBalance.Amount) + + // valid deposit + msg = types.NewMsgDeposit(addrs[0], addrs[1], addrs[1], sdk.NewCoins(sdk.NewCoin(denom, sdk.NewInt(100))), 1, nil) + _, err = ms.Deposit(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + + afterBalance := input.BankKeeper.GetBalance(ctx, addrs[1], denom) + require.Equal(t, sdk.NewInt(100), afterBalance.Amount) +} + +func Test_MsgServer_Deposit_HookSuccess(t *testing.T) { + ctx, input := createDefaultTestInput(t) + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + + bz := sha3.Sum256([]byte("test_token")) + denom := "l2/" + hex.EncodeToString(bz[:]) + + require.Equal(t, sdk.ZeroInt(), input.BankKeeper.GetBalance(ctx, addrs[1], denom).Amount) + + hookMsgBytes, err := json.Marshal("message bytes") + require.NoError(t, err) + + input.BridgeHook.msgBytes = hookMsgBytes + input.BridgeHook.err = nil + + // valid deposit + msg := types.NewMsgDeposit(addrs[0], addrs[1], addrs[1], sdk.NewCoins(sdk.NewCoin(denom, sdk.NewInt(100))), 1, hookMsgBytes) + _, err = ms.Deposit(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + require.Equal(t, hookMsgBytes, input.BridgeHook.msgBytes) + + for _, event := range ctx.EventManager().Events() { + if event.Type == types.EventTypeFinalizeTokenBridge { + for _, attr := range event.Attributes { + if attr.Key == types.AttributeKeyHookSuccess { + require.Equal(t, "true", attr.Value) + } + } + } + } +} + +func Test_MsgServer_Deposit_HookFail(t *testing.T) { + ctx, input := createDefaultTestInput(t) + ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + + bz := sha3.Sum256([]byte("test_token")) + denom := "l2/" + hex.EncodeToString(bz[:]) + + input.BridgeHook.err = errors.New("should be failed") + + // valid deposit + msg := types.NewMsgDeposit(addrs[0], addrs[1], addrs[1], sdk.NewCoins(sdk.NewCoin(denom, sdk.NewInt(100))), 1, []byte("invalid_message")) + _, err := ms.Deposit(sdk.WrapSDKContext(ctx), msg) + require.NoError(t, err) + require.Empty(t, input.BridgeHook.msgBytes) + + for _, event := range ctx.EventManager().Events() { + if event.Type == types.EventTypeFinalizeTokenBridge { + for _, attr := range event.Attributes { + if attr.Key == types.AttributeKeyHookSuccess { + require.Equal(t, "false", attr.Value) + } + } + } + } + +} diff --git a/x/op_child/keeper/params.go b/x/op_child/keeper/params.go new file mode 100644 index 00000000..d750323c --- /dev/null +++ b/x/op_child/keeper/params.go @@ -0,0 +1,43 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// BridgeExecutor returns params.BridgeExecutor +func (k Keeper) BridgeExecutor(ctx sdk.Context) sdk.AccAddress { + return sdk.MustAccAddressFromBech32(k.GetParams(ctx).BridgeExecutor) +} + +// SetParams sets the x/rollup module parameters. +func (k Keeper) SetParams(ctx sdk.Context, params types.Params) error { + if err := params.Validate(); err != nil { + return err + } + + store := ctx.KVStore(k.storeKey) + bz, err := k.cdc.Marshal(¶ms) + if err != nil { + return err + } + store.Set(types.ParamsKey, bz) + + return nil +} + +// GetParams sets the x/rollup module parameters. +func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) { + store := ctx.KVStore(k.storeKey) + bz := store.Get(types.ParamsKey) + if bz == nil { + return params + } + + k.cdc.MustUnmarshal(bz, ¶ms) + return params +} + +func (k Keeper) MinGasPrices(ctx sdk.Context) sdk.DecCoins { + return k.GetParams(ctx).MinGasPrices +} diff --git a/x/op_child/keeper/querier.go b/x/op_child/keeper/querier.go new file mode 100644 index 00000000..33625108 --- /dev/null +++ b/x/op_child/keeper/querier.go @@ -0,0 +1,84 @@ +package keeper + +import ( + "context" + + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/initia-labs/OPinit/x/op_child/types" +) + +type Querier struct { + Keeper +} + +var _ types.QueryServer = &Querier{} + +// NewQuerier return new Querier instance +func NewQuerier(k Keeper) Querier { + return Querier{k} +} + +func (q Querier) Validator(context context.Context, req *types.QueryValidatorRequest) (*types.QueryValidatorResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + if req.ValidatorAddr == "" { + return nil, status.Error(codes.InvalidArgument, "validator address cannot be empty") + } + + valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr) + if err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(context) + validator, found := q.GetValidator(ctx, valAddr) + if !found { + return nil, status.Errorf(codes.NotFound, "validator %s not found", req.ValidatorAddr) + } + + return &types.QueryValidatorResponse{Validator: validator}, nil +} + +func (q Querier) Validators(context context.Context, req *types.QueryValidatorsRequest) (*types.QueryValidatorsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + var validators types.Validators + ctx := sdk.UnwrapSDKContext(context) + + store := ctx.KVStore(q.storeKey) + valStore := prefix.NewStore(store, types.ValidatorsKey) + + pageRes, err := query.FilteredPaginate(valStore, req.Pagination, func(key []byte, value []byte, accumulate bool) (bool, error) { + val, err := types.UnmarshalValidator(q.cdc, value) + if err != nil { + return false, err + } + + if accumulate { + validators = append(validators, val) + } + + return true, nil + }) + + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryValidatorsResponse{Validators: validators, Pagination: pageRes}, nil +} + +func (q Querier) Params(context context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { + ctx := sdk.UnwrapSDKContext(context) + + return &types.QueryParamsResponse{Params: q.GetParams(ctx)}, nil +} diff --git a/x/op_child/keeper/sequences.go b/x/op_child/keeper/sequences.go new file mode 100644 index 00000000..27c243ee --- /dev/null +++ b/x/op_child/keeper/sequences.go @@ -0,0 +1,33 @@ +package keeper + +import ( + "encoding/binary" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/initia-labs/OPinit/x/op_child/types" +) + +func (k Keeper) RecordFinalizedInboundSequence(ctx sdk.Context, inboundSequence uint64) { + kvStore := ctx.KVStore(k.storeKey) + kvStore.Set(types.GetFinalizedInboundSequenceKey(inboundSequence), []byte{1}) +} + +func (k Keeper) HasFinalizedInboundSequence(ctx sdk.Context, inboundSequence uint64) bool { + kvStore := ctx.KVStore(k.storeKey) + bz := kvStore.Get(types.GetFinalizedInboundSequenceKey(inboundSequence)) + return len(bz) != 0 +} + +func (k Keeper) IncreaseOutboundSequence(ctx sdk.Context) uint64 { + kvStore := ctx.KVStore(k.storeKey) + bz := kvStore.Get(types.OutboundSequenceKey) + if len(bz) == 0 { + bz := [8]byte{} + binary.BigEndian.PutUint64(bz[:], 1) + kvStore.Set(types.OutboundSequenceKey, bz[:]) + return 1 + } + + return binary.BigEndian.Uint64(bz) +} diff --git a/x/op_child/keeper/staking.go b/x/op_child/keeper/staking.go new file mode 100644 index 00000000..15091905 --- /dev/null +++ b/x/op_child/keeper/staking.go @@ -0,0 +1,25 @@ +package keeper + +import ( + "time" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// fake staking functions + +// MaxValidators - Maximum number of validators +func (k Keeper) MaxValidators(ctx sdk.Context) uint32 { + return k.GetParams(ctx).MaxValidators +} + +// HistoricalEntries = number of historical info entries +// to persist in store +func (k Keeper) HistoricalEntries(ctx sdk.Context) uint32 { + return k.GetParams(ctx).HistoricalEntries +} + +// UnbondingTime - The time duration for unbonding +func (k Keeper) UnbondingTime(ctx sdk.Context) time.Duration { + return unbondingTime +} diff --git a/x/op_child/keeper/val_state_change.go b/x/op_child/keeper/val_state_change.go new file mode 100644 index 00000000..50d473be --- /dev/null +++ b/x/op_child/keeper/val_state_change.go @@ -0,0 +1,122 @@ +package keeper + +import ( + "bytes" + "sort" + + abci "github.com/cometbft/cometbft/abci/types" + gogotypes "github.com/cosmos/gogoproto/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// BlockValidatorUpdates calculates the ValidatorUpdates for the current block +// Called in each EndBlock +func (k Keeper) BlockValidatorUpdates(ctx sdk.Context) []abci.ValidatorUpdate { + updates, err := k.ApplyAndReturnValidatorSetUpdates(ctx) + if err != nil { + panic(err) + } + + return updates +} + +func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx sdk.Context) ([]abci.ValidatorUpdate, error) { + last, err := k.getLastValidatorsByAddr(ctx) + if err != nil { + return nil, err + } + + updates := []abci.ValidatorUpdate{} + validators := k.GetValidators(ctx, k.MaxValidators(ctx)) + for _, validator := range validators { + valAddr := validator.GetOperator() + valAddrStr, err := sdk.Bech32ifyAddressBytes(sdk.GetConfig().GetBech32ValidatorAddrPrefix(), valAddr) + if err != nil { + return nil, err + } + + oldPowerBytes, found := last[valAddrStr] + newPower := validator.ConsensusPower() + + // zero power validator removed from validator set + if newPower == 0 { + continue + } + + newPowerBytes := k.cdc.MustMarshal(&gogotypes.Int64Value{Value: newPower}) + if !found || !bytes.Equal(oldPowerBytes, newPowerBytes) { + updates = append(updates, validator.ABCIValidatorUpdate()) + + k.SetLastValidatorPower(ctx, valAddr, newPower) + } + + delete(last, valAddrStr) + } + + noLongerBonded, err := sortNoLongerBonded(last) + if err != nil { + return nil, err + } + + for _, valAddrBytes := range noLongerBonded { + validator := k.mustGetValidator(ctx, sdk.ValAddress(valAddrBytes)) + k.RemoveValidator(ctx, validator.GetOperator()) + k.DeleteLastValidatorPower(ctx, validator.GetOperator()) + updates = append(updates, validator.ABCIValidatorUpdateZero()) + } + + return updates, nil +} + +// map of operator bech32-addresses to serialized power +// We use bech32 strings here, because we can't have slices as keys: map[[]byte][]byte +type validatorsByAddr map[string][]byte + +// get the last validator set +func (k Keeper) getLastValidatorsByAddr(ctx sdk.Context) (validatorsByAddr, error) { + last := make(validatorsByAddr) + + iterator := k.LastValidatorsIterator(ctx) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + // extract the validator address from the key (prefix is 1-byte, addrLen is 1-byte) + valAddr := types.AddressFromLastValidatorPowerKey(iterator.Key()) + valAddrStr, err := sdk.Bech32ifyAddressBytes(sdk.GetConfig().GetBech32ValidatorAddrPrefix(), valAddr) + if err != nil { + return nil, err + } + + powerBytes := iterator.Value() + last[valAddrStr] = make([]byte, len(powerBytes)) + copy(last[valAddrStr], powerBytes) + } + + return last, nil +} + +// given a map of remaining validators to previous bonded power +// returns the list of validators to be unbonded, sorted by operator address +func sortNoLongerBonded(last validatorsByAddr) ([][]byte, error) { + // sort the map keys for determinism + noLongerBonded := make([][]byte, len(last)) + index := 0 + + for valAddrStr := range last { + valAddrBytes, err := sdk.ValAddressFromBech32(valAddrStr) + if err != nil { + return nil, err + } + noLongerBonded[index] = valAddrBytes + index++ + } + // sorted by address - order doesn't matter + sort.SliceStable(noLongerBonded, func(i, j int) bool { + // -1 means strictly less than + return bytes.Compare(noLongerBonded[i], noLongerBonded[j]) == -1 + }) + + return noLongerBonded, nil +} diff --git a/x/op_child/keeper/val_state_change_test.go b/x/op_child/keeper/val_state_change_test.go new file mode 100644 index 00000000..9ba08391 --- /dev/null +++ b/x/op_child/keeper/val_state_change_test.go @@ -0,0 +1,50 @@ +package keeper_test + +import ( + "testing" + + abci "github.com/cometbft/cometbft/abci/types" + + testutilsims "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/initia-labs/OPinit/x/op_child/types" + "github.com/stretchr/testify/require" +) + +func Test_BlockValidatorUpdates(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + valPubKeys := testutilsims.CreateTestPubKeys(2) + val1, err := types.NewValidator(valAddrs[1], valPubKeys[0], "validator1") + require.NoError(t, err) + + val2, err := types.NewValidator(valAddrs[2], valPubKeys[1], "validator2") + require.NoError(t, err) + + // set validators + input.OPChildKeeper.SetValidator(ctx, val1) + input.OPChildKeeper.SetValidator(ctx, val2) + + // apply val updates + updates := input.OPChildKeeper.BlockValidatorUpdates(ctx) + valTmConsPubKey1, err := val1.TmConsPublicKey() + valTmConsPubKey2, err := val2.TmConsPublicKey() + require.Len(t, updates, 2) + require.Contains(t, updates, abci.ValidatorUpdate{ + PubKey: valTmConsPubKey1, + Power: val1.ConsensusPower(), + }) + require.Contains(t, updates, abci.ValidatorUpdate{ + PubKey: valTmConsPubKey2, + Power: val2.ConsensusPower(), + }) + + // no changes + updates = input.OPChildKeeper.BlockValidatorUpdates(ctx) + require.Equal(t, []abci.ValidatorUpdate{}, updates) + + // val2 removed + val2.ConsPower = 0 + input.OPChildKeeper.SetValidator(ctx, val2) + updates = input.OPChildKeeper.BlockValidatorUpdates(ctx) + require.Equal(t, []abci.ValidatorUpdate{val2.ABCIValidatorUpdateZero()}, updates) +} diff --git a/x/op_child/keeper/validator.go b/x/op_child/keeper/validator.go new file mode 100644 index 00000000..9633bb71 --- /dev/null +++ b/x/op_child/keeper/validator.go @@ -0,0 +1,234 @@ +package keeper + +import ( + "fmt" + + gogotypes "github.com/cosmos/gogoproto/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +// get a single validator +func (k Keeper) GetValidator(ctx sdk.Context, addr sdk.ValAddress) (validator types.Validator, found bool) { + store := ctx.KVStore(k.storeKey) + + value := store.Get(types.GetValidatorKey(addr)) + if value == nil { + return validator, false + } + + validator = types.MustUnmarshalValidator(k.cdc, value) + return validator, true +} + +func (k Keeper) mustGetValidator(ctx sdk.Context, addr sdk.ValAddress) types.Validator { + validator, found := k.GetValidator(ctx, addr) + if !found { + panic(fmt.Sprintf("validator record not found for address: %X\n", addr)) + } + + return validator +} + +// get a single validator by consensus address +func (k Keeper) GetValidatorByConsAddr(ctx sdk.Context, consAddr sdk.ConsAddress) (validator types.Validator, found bool) { + store := ctx.KVStore(k.storeKey) + + opAddr := store.Get(types.GetValidatorByConsAddrKey(consAddr)) + if opAddr == nil { + return validator, false + } + + return k.GetValidator(ctx, opAddr) +} + +func (k Keeper) mustGetValidatorByConsAddr(ctx sdk.Context, consAddr sdk.ConsAddress) types.Validator { + validator, found := k.GetValidatorByConsAddr(ctx, consAddr) + if !found { + panic(fmt.Errorf("validator with consensus-Address %s not found", consAddr)) + } + + return validator +} + +// set the main record holding validator details +func (k Keeper) SetValidator(ctx sdk.Context, validator types.Validator) { + store := ctx.KVStore(k.storeKey) + bz := types.MustMarshalValidator(k.cdc, &validator) + store.Set(types.GetValidatorKey(validator.GetOperator()), bz) +} + +// validator index +func (k Keeper) SetValidatorByConsAddr(ctx sdk.Context, validator types.Validator) error { + consPk, err := validator.GetConsAddr() + if err != nil { + return err + } + store := ctx.KVStore(k.storeKey) + store.Set(types.GetValidatorByConsAddrKey(consPk), validator.GetOperator()) + return nil +} + +// remove the validator record and associated indexes +// except for the bonded validator index which is only handled in ApplyAndReturnTendermintUpdates +// TODO, this function panics, and it's not good. +func (k Keeper) RemoveValidator(ctx sdk.Context, address sdk.ValAddress) { + // first retrieve the old validator record + validator, found := k.GetValidator(ctx, address) + if !found { + return + } + + valConsAddr, err := validator.GetConsAddr() + if err != nil { + panic(err) + } + + // delete the old validator record + store := ctx.KVStore(k.storeKey) + store.Delete(types.GetValidatorKey(address)) + store.Delete(types.GetValidatorByConsAddrKey(valConsAddr)) +} + +// get groups of validators + +// get the set of all validators with no limits, used during genesis dump +func (k Keeper) GetAllValidators(ctx sdk.Context) (validators []types.Validator) { + store := ctx.KVStore(k.storeKey) + + iterator := sdk.KVStorePrefixIterator(store, types.ValidatorsKey) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + validator := types.MustUnmarshalValidator(k.cdc, iterator.Value()) + validators = append(validators, validator) + } + + return validators +} + +// return a given amount of all the validators +func (k Keeper) GetValidators(ctx sdk.Context, maxRetrieve uint32) (validators []types.Validator) { + store := ctx.KVStore(k.storeKey) + validators = make([]types.Validator, maxRetrieve) + + iterator := sdk.KVStorePrefixIterator(store, types.ValidatorsKey) + defer iterator.Close() + + i := 0 + for ; iterator.Valid() && i < int(maxRetrieve); iterator.Next() { + validator := types.MustUnmarshalValidator(k.cdc, iterator.Value()) + validators[i] = validator + i++ + } + + return validators[:i] // trim if the array length < maxRetrieve +} + +// Last Validator Index + +// Load the last validator power. +// Returns zero if the operator was not a validator last block. +func (k Keeper) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) (power int64) { + store := ctx.KVStore(k.storeKey) + + bz := store.Get(types.GetLastValidatorPowerKey(operator)) + if bz == nil { + return 0 + } + + intV := gogotypes.Int64Value{} + k.cdc.MustUnmarshal(bz, &intV) + + return intV.GetValue() +} + +// Set the last validator power. +func (k Keeper) SetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress, power int64) { + store := ctx.KVStore(k.storeKey) + bz := k.cdc.MustMarshal(&gogotypes.Int64Value{Value: power}) + store.Set(types.GetLastValidatorPowerKey(operator), bz) +} + +// Delete the last validator power. +func (k Keeper) DeleteLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) { + store := ctx.KVStore(k.storeKey) + store.Delete(types.GetLastValidatorPowerKey(operator)) +} + +// returns an iterator for the consensus validators in the last block +func (k Keeper) LastValidatorsIterator(ctx sdk.Context) (iterator sdk.Iterator) { + store := ctx.KVStore(k.storeKey) + iterator = sdk.KVStorePrefixIterator(store, types.LastValidatorPowerKey) + + return iterator +} + +// Iterate over last validator powers. +func (k Keeper) IterateLastValidatorPowers(ctx sdk.Context, handler func(operator sdk.ValAddress, power int64) (stop bool)) { + store := ctx.KVStore(k.storeKey) + + iter := sdk.KVStorePrefixIterator(store, types.LastValidatorPowerKey) + defer iter.Close() + + for ; iter.Valid(); iter.Next() { + addr := sdk.ValAddress(types.AddressFromLastValidatorPowerKey(iter.Key())) + intV := &gogotypes.Int64Value{} + + k.cdc.MustUnmarshal(iter.Value(), intV) + + if handler(addr, intV.GetValue()) { + break + } + } +} + +// get the group of the bonded validators +func (k Keeper) GetLastValidators(ctx sdk.Context) (validators []types.Validator) { + store := ctx.KVStore(k.storeKey) + + // add the actual validator power sorted store + maxValidators := k.MaxValidators(ctx) + validators = make([]types.Validator, maxValidators) + + iterator := sdk.KVStorePrefixIterator(store, types.LastValidatorPowerKey) + defer iterator.Close() + + i := 0 + for ; iterator.Valid(); iterator.Next() { + // sanity check + if i >= int(maxValidators) { + panic("more validators than maxValidators found") + } + + address := types.AddressFromLastValidatorPowerKey(iterator.Key()) + validator := k.mustGetValidator(ctx, address) + + validators[i] = validator + i++ + } + + return validators[:i] // trim +} + +// GetPreviousProposerConsAddr returns the proposer consensus address for the +// current block. +func (k Keeper) GetPreviousProposerConsAddr(ctx sdk.Context) sdk.ConsAddress { + store := ctx.KVStore(k.storeKey) + bz := store.Get(types.ProposerKey) + if bz == nil { + panic("previous proposer not set") + } + + addrValue := gogotypes.BytesValue{} + k.cdc.MustUnmarshal(bz, &addrValue) + return addrValue.GetValue() +} + +// set the proposer public key for this block +func (k Keeper) SetPreviousProposerConsAddr(ctx sdk.Context, consAddr sdk.ConsAddress) { + store := ctx.KVStore(k.storeKey) + bz := k.cdc.MustMarshal(&gogotypes.BytesValue{Value: consAddr}) + store.Set(types.ProposerKey, bz) +} diff --git a/x/op_child/keeper/validator_test.go b/x/op_child/keeper/validator_test.go new file mode 100644 index 00000000..af0925a8 --- /dev/null +++ b/x/op_child/keeper/validator_test.go @@ -0,0 +1,154 @@ +package keeper_test + +import ( + "testing" + + testutilsims "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/initia-labs/OPinit/x/op_child/types" + "github.com/stretchr/testify/require" +) + +func Test_GetValidator(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + valPubKey := testutilsims.CreateTestPubKeys(1)[0] + val, err := types.NewValidator(valAddrs[1], valPubKey, "validator1") + require.NoError(t, err) + + // should be empty + _, found := input.OPChildKeeper.GetValidator(ctx, val.GetOperator()) + require.False(t, found) + + // set validator + input.OPChildKeeper.SetValidator(ctx, val) + + valAfter, found := input.OPChildKeeper.GetValidator(ctx, val.GetOperator()) + require.True(t, found) + require.Equal(t, val, valAfter) + + // remove validator + input.OPChildKeeper.RemoveValidator(ctx, val.GetOperator()) + + // should be empty + _, found = input.OPChildKeeper.GetValidator(ctx, val.GetOperator()) + require.False(t, found) +} + +func Test_GetValidatorByConsAddr(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + valPubKey := testutilsims.CreateTestPubKeys(1)[0] + val, err := types.NewValidator(valAddrs[1], valPubKey, "validator1") + require.NoError(t, err) + + consAddr, err := val.GetConsAddr() + require.NoError(t, err) + + // should be empty + _, found := input.OPChildKeeper.GetValidatorByConsAddr(ctx, consAddr) + require.False(t, found) + + // set validator + input.OPChildKeeper.SetValidator(ctx, val) + input.OPChildKeeper.SetValidatorByConsAddr(ctx, val) + + valAfter, found := input.OPChildKeeper.GetValidatorByConsAddr(ctx, consAddr) + require.True(t, found) + require.Equal(t, val, valAfter) + + // remove validator + input.OPChildKeeper.RemoveValidator(ctx, val.GetOperator()) + + // should be empty + _, found = input.OPChildKeeper.GetValidatorByConsAddr(ctx, consAddr) + require.False(t, found) +} + +func Test_GetAllValidators(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + valPubKeys := testutilsims.CreateTestPubKeys(2) + val1, err := types.NewValidator(valAddrs[1], valPubKeys[0], "validator1") + require.NoError(t, err) + + val2, err := types.NewValidator(valAddrs[2], valPubKeys[1], "validator2") + require.NoError(t, err) + + input.OPChildKeeper.SetValidator(ctx, val1) + input.OPChildKeeper.SetValidator(ctx, val2) + + vals := input.OPChildKeeper.GetAllValidators(ctx) + require.Len(t, vals, 2) + require.Contains(t, vals, val1) + require.Contains(t, vals, val2) +} + +func Test_GetValidators(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + valPubKeys := testutilsims.CreateTestPubKeys(2) + val1, err := types.NewValidator(valAddrs[1], valPubKeys[0], "validator1") + require.NoError(t, err) + + val2, err := types.NewValidator(valAddrs[2], valPubKeys[1], "validator2") + require.NoError(t, err) + + input.OPChildKeeper.SetValidator(ctx, val1) + input.OPChildKeeper.SetValidator(ctx, val2) + + vals := input.OPChildKeeper.GetValidators(ctx, 1) + require.Len(t, vals, 1) +} + +func Test_LastValidatorPower(t *testing.T) { + ctx, input := createDefaultTestInput(t) + + valPubKeys := testutilsims.CreateTestPubKeys(2) + val1, err := types.NewValidator(valAddrs[1], valPubKeys[0], "validator1") + require.NoError(t, err) + + val2, err := types.NewValidator(valAddrs[2], valPubKeys[1], "validator2") + require.NoError(t, err) + + beforePower := input.OPChildKeeper.GetLastValidatorPower(ctx, val1.GetOperator()) + require.Equal(t, int64(0), beforePower) + + // set validator with power index + input.OPChildKeeper.SetValidator(ctx, val1) + input.OPChildKeeper.SetValidator(ctx, val2) + input.OPChildKeeper.SetLastValidatorPower(ctx, val1.GetOperator(), 100) + input.OPChildKeeper.SetLastValidatorPower(ctx, val2.GetOperator(), 200) + + afterPower := input.OPChildKeeper.GetLastValidatorPower(ctx, val1.GetOperator()) + require.Equal(t, int64(100), afterPower) + + // iterate all powers + input.OPChildKeeper.IterateLastValidatorPowers(ctx, func(valAddr sdk.ValAddress, power int64) bool { + if valAddr.Equals(val1.GetOperator()) { + require.Equal(t, int64(100), power) + } else { + require.Equal(t, val2.GetOperator(), val2.GetOperator()) + require.Equal(t, int64(200), power) + } + + return false + }) + + // get last validators from the power index + vals := input.OPChildKeeper.GetLastValidators(ctx) + require.Len(t, vals, 2) + require.Contains(t, vals, val1) + require.Contains(t, vals, val2) + + // decrease max validator to 1 + params := input.OPChildKeeper.GetParams(ctx) + params.MaxValidators = 1 + input.OPChildKeeper.SetParams(ctx, params) + + // should panic if there is more than 1 validators + require.Panics(t, func() { + _ = input.OPChildKeeper.GetLastValidators(ctx) + }) +} diff --git a/x/op_child/module.go b/x/op_child/module.go new file mode 100644 index 00000000..9f2fe3d1 --- /dev/null +++ b/x/op_child/module.go @@ -0,0 +1,144 @@ +package op_child + +import ( + "context" + "encoding/json" + + abci "github.com/cometbft/cometbft/abci/types" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + + "github.com/initia-labs/OPinit/x/op_child/client/cli" + "github.com/initia-labs/OPinit/x/op_child/keeper" + "github.com/initia-labs/OPinit/x/op_child/types" +) + +const ConsensusVersion = 1 + +var ( + _ module.AppModule = AppModule{} + _ module.AppModuleBasic = AppModuleBasic{} +) + +// AppModuleBasic defines the basic application module used by the move module. +type AppModuleBasic struct{} + +func (b AppModuleBasic) RegisterLegacyAminoCodec(amino *codec.LegacyAmino) { //nolint:staticcheck + types.RegisterLegacyAminoCodec(amino) +} + +func (b AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, serveMux *runtime.ServeMux) { + err := types.RegisterQueryHandlerClient(context.Background(), serveMux, types.NewQueryClient(clientCtx)) + if err != nil { + panic(err) + } +} + +// Name returns the move module's name. +func (AppModuleBasic) Name() string { + return types.ModuleName +} + +// DefaultGenesis returns default genesis state as raw bytes for the move +// module. +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(types.DefaultGenesisState()) +} + +// ValidateGenesis performs genesis state validation for the move module. +func (b AppModuleBasic) ValidateGenesis(marshaler codec.JSONCodec, config client.TxEncodingConfig, message json.RawMessage) error { + var genState types.GenesisState + err := marshaler.UnmarshalJSON(message, &genState) + if err != nil { + return err + } + + return types.ValidateGenesis(&genState) +} + +// GetTxCmd returns the root tx command for the move module. +func (b AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.GetTxCmd() +} + +// GetQueryCmd returns no root query command for the move module. +func (b AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + +// RegisterInterfaces implements InterfaceModule +func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + types.RegisterInterfaces(registry) +} + +// ____________________________________________________________________________ + +// AppModule implements an application module for the move module. +type AppModule struct { + AppModuleBasic + keeper keeper.Keeper +} + +// ConsensusVersion is a sequence number for state-breaking change of the +// module. It should be incremented on each consensus-breaking change +// introduced by the module. To avoid wrong/empty versions, the initial version +// should be set to 1. +func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion } + +// NewAppModule creates a new AppModule object +func NewAppModule( + k keeper.Keeper, +) AppModule { + return AppModule{ + AppModuleBasic: AppModuleBasic{}, + keeper: k, + } +} + +func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) + types.RegisterQueryServer(cfg.QueryServer(), keeper.NewQuerier(am.keeper)) + compatibilityQuerier := keeper.CompatibilityQuerier{Keeper: am.keeper} + stakingtypes.RegisterQueryServer(cfg.QueryServer(), compatibilityQuerier) +} + +// RegisterInvariants registers the move module invariants. +func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} + +// InitGenesis performs genesis initialization for the move module. It returns +// no validator updates. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { + var genesisState types.GenesisState + cdc.MustUnmarshalJSON(data, &genesisState) + + validators := am.keeper.InitGenesis(ctx, &genesisState) + + return validators +} + +// ExportGenesis returns the exported genesis state as raw bytes for the move +// module. +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + gs := am.keeper.ExportGenesis(ctx) + return cdc.MustMarshalJSON(gs) +} + +// BeginBlock returns the begin blocker for the move module. +func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) { + BeginBlocker(ctx, req, am.keeper) +} + +// EndBlock returns the end blocker for the move module. It returns no validator +// updates. +func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { + EndBlocker(ctx, am.keeper) + return []abci.ValidatorUpdate{} +} diff --git a/x/op_child/types/codec.go b/x/op_child/types/codec.go new file mode 100644 index 00000000..31b84b37 --- /dev/null +++ b/x/op_child/types/codec.go @@ -0,0 +1,64 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/legacy" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" + authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" + govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + groupcodec "github.com/cosmos/cosmos-sdk/x/group/codec" +) + +// RegisterLegacyAminoCodec registers the move types and interface +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + + legacy.RegisterAminoMsg(cdc, &MsgExecuteMessages{}, "op_child/MsgExecuteMessages") + legacy.RegisterAminoMsg(cdc, &MsgExecuteLegacyContents{}, "op_child/MsgExecuteLegacyContents") + legacy.RegisterAminoMsg(cdc, &MsgAddValidator{}, "op_child/MsgAddValidator") + legacy.RegisterAminoMsg(cdc, &MsgRemoveValidator{}, "op_child/MsgRemoveAddValidator") + legacy.RegisterAminoMsg(cdc, &MsgUpdateParams{}, "op_child/MsgUpdateParams") + legacy.RegisterAminoMsg(cdc, &MsgDeposit{}, "op_child/MsgDeposit") + legacy.RegisterAminoMsg(cdc, &MsgWithdraw{}, "op_child/MsgWithdraw") + + //cdc.RegisterConcrete(&PublishAuthorization{}, "move/PublishAuthorization", nil) + cdc.RegisterConcrete(Params{}, "op_child/Params", nil) +} + +// RegisterInterfaces registers the x/market interfaces types with the interface registry +func RegisterInterfaces(registry codectypes.InterfaceRegistry) { + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgExecuteMessages{}, + &MsgAddValidator{}, + &MsgRemoveValidator{}, + &MsgUpdateParams{}, + &MsgDeposit{}, + &MsgWithdraw{}, + ) + registry.RegisterInterface( + "cosmos.gov.v1beta1.Content", + (*govv1beta1.Content)(nil), + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} + +var ( + amino = codec.NewLegacyAmino() + ModuleCdc = codec.NewAminoCodec(amino) +) + +func init() { + RegisterLegacyAminoCodec(amino) + cryptocodec.RegisterCrypto(amino) + sdk.RegisterLegacyAminoCodec(amino) + + // Register all Amino interfaces and concrete types on the authz and gov Amino codec so that this can later be + // used to properly serialize MsgGrant, MsgExec and MsgSubmitProposal instances + RegisterLegacyAminoCodec(authzcodec.Amino) + RegisterLegacyAminoCodec(govcodec.Amino) + RegisterLegacyAminoCodec(groupcodec.Amino) +} diff --git a/x/op_child/types/errors.go b/x/op_child/types/errors.go new file mode 100644 index 00000000..720f8abf --- /dev/null +++ b/x/op_child/types/errors.go @@ -0,0 +1,18 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" +) + +// x/rollup module sentinel errors +var ( + ErrNoValidatorFound = errorsmod.Register(ModuleName, 2, "validator does not exist") + ErrValidatorOwnerExists = errorsmod.Register(ModuleName, 3, "validator already exist for this operator address; must use new validator operator address") + ErrValidatorPubKeyExists = errorsmod.Register(ModuleName, 4, "validator already exist for this pubkey; must use new validator pubkey") + ErrValidatorPubKeyTypeNotSupported = errorsmod.Register(ModuleName, 5, "validator pubkey type is not supported") + ErrInvalidHistoricalInfo = errorsmod.Register(ModuleName, 6, "invalid historical info") + ErrEmptyValidatorPubKey = errorsmod.Register(ModuleName, 7, "empty validator public key") + ErrInvalidSigner = errorsmod.Register(ModuleName, 8, "expected rollup account as only signer for system message") + ErrDepositAlreadyFinalized = errorsmod.Register(ModuleName, 9, "deposit already finalized") + ErrZeroAmount = errorsmod.Register(ModuleName, 10, "zero amount") +) diff --git a/x/op_child/types/events.go b/x/op_child/types/events.go new file mode 100644 index 00000000..e493eee9 --- /dev/null +++ b/x/op_child/types/events.go @@ -0,0 +1,26 @@ +package types + +// Rollup module event types +const ( + EventTypeAddValidator = "add_validator" + EventTypeRemoveValidator = "remove_validator" + EventTypeFinalizeTokenBridge = "finalize_token_bridge" + EventTypeInitiateTokenBridge = "initiate_token_bridge" + EventTypeExecuteMessages = "execute_messages" + EventTypeWhitelist = "whitelist" + EventTypeParams = "params" + + AttributeKeySender = "sender" + AttributeKeyRecipient = "recipient" + AttributeKeyAmount = "amount" + AttributeKeyDenom = "denom" + AttributeKeyStructTag = "struct_tag" + AttributeKeyValidator = "validator" + AttributeKeyMetadata = "metadata" + AttributeKeyInboundSequence = "inbound_sequence" + AttributeKeyFinalizeHeight = "finalize_height" + AttributeKeyHookSuccess = "hook_success" + AttributeKeyFrom = "from" + AttributeKeyTo = "to" + AttributeKeyOutboundSequence = "outbound_sequence" +) diff --git a/x/op_child/types/expected_keepers.go b/x/op_child/types/expected_keepers.go new file mode 100644 index 00000000..beb75b13 --- /dev/null +++ b/x/op_child/types/expected_keepers.go @@ -0,0 +1,53 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +) + +// AccountKeeper defines the expected account keeper (noalias) +type AccountKeeper interface { + NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) authtypes.AccountI + + IterateAccounts(ctx sdk.Context, process func(authtypes.AccountI) (stop bool)) + GetAccount(ctx sdk.Context, addr sdk.AccAddress) authtypes.AccountI // only used for simulation + HasAccount(ctx sdk.Context, addr sdk.AccAddress) bool + SetAccount(ctx sdk.Context, acc authtypes.AccountI) + + GetModuleAddress(name string) sdk.AccAddress + GetModuleAccount(ctx sdk.Context, moduleName string) authtypes.ModuleAccountI + + // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 + SetModuleAccount(sdk.Context, authtypes.ModuleAccountI) +} + +// BankKeeper defines the expected interface needed to retrieve account balances. +type BankKeeper interface { + GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin + LockedCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + + GetSupply(ctx sdk.Context, denom string) sdk.Coin + + SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx sdk.Context, senderPool, recipientPool string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + + MintCoins(ctx sdk.Context, moduleName string, amounts sdk.Coins) error + BurnCoins(ctx sdk.Context, moduleName string, amounts sdk.Coins) error +} + +// ValidatorSet expected properties for the set of all validators (noalias) +type ValidatorSet interface { + // iterate through validators by operator address, execute func for each validator + IterateValidators(sdk.Context, + func(index int64, validator ValidatorI) (stop bool)) + + Validator(sdk.Context, sdk.ValAddress) ValidatorI // get a particular validator by operator address + ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) ValidatorI // get a particular validator by consensus address + + // MaxValidators returns the maximum amount of bonded validators + MaxValidators(sdk.Context) uint32 +} diff --git a/x/op_child/types/exported.go b/x/op_child/types/exported.go new file mode 100644 index 00000000..b2cff271 --- /dev/null +++ b/x/op_child/types/exported.go @@ -0,0 +1,29 @@ +package types + +import ( + tmprotocrypto "github.com/cometbft/cometbft/proto/tendermint/crypto" + + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// DelegationI delegation bond for a delegated proof of stake system +type DelegationI interface { + GetDelegatorAddr() sdk.AccAddress // delegator sdk.AccAddress for the bond + GetValidatorAddr() sdk.ValAddress // validator operator address + GetShares() sdk.Dec // amount of validator's shares held in this delegation +} + +// ValidatorI expected validator functions +type ValidatorI interface { + GetOperator() sdk.ValAddress // operator address to receive/return validators coins + ConsPubKey() (cryptotypes.PubKey, error) // validation consensus pubkey (cryptotypes.PubKey) + TmConsPublicKey() (tmprotocrypto.PublicKey, error) // validation consensus pubkey (Tendermint) + GetConsAddr() (sdk.ConsAddress, error) // validation consensus address + GetConsensusPower() int64 // validation power in tendermint + GetMoniker() string // return validator moniker +} + +type AnteKeeper interface { + MinGasPrices(ctx sdk.Context) sdk.DecCoins +} diff --git a/x/op_child/types/genesis.go b/x/op_child/types/genesis.go new file mode 100644 index 00000000..c4217444 --- /dev/null +++ b/x/op_child/types/genesis.go @@ -0,0 +1,89 @@ +package types + +import ( + "encoding/json" + "fmt" + + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" +) + +// NewGenesisState creates a new GenesisState instance +func NewGenesisState(params Params, validators []Validator) *GenesisState { + return &GenesisState{ + Params: params, + LastValidatorPowers: []LastValidatorPower{}, + Validators: validators, + PreviousProposer: "", + Exported: false, + } +} + +// DefaultGenesisState gets the raw genesis raw message for testing +func DefaultGenesisState() *GenesisState { + return &GenesisState{ + Params: DefaultParams(), + LastValidatorPowers: []LastValidatorPower{}, + Validators: []Validator{}, + PreviousProposer: "", + Exported: false, + } +} + +// ValidateGenesis performs basic validation of rollup genesis data returning an +// error for any failed validation criteria. +func ValidateGenesis(data *GenesisState) error { + if err := validateGenesisStateValidators(data.Validators); err != nil { + return err + } + + return data.Params.Validate() +} + +func validateGenesisStateValidators(validators []Validator) error { + addrMap := make(map[string]bool, len(validators)) + + for i := 0; i < len(validators); i++ { + val := validators[i] + consPk, err := val.ConsPubKey() + if err != nil { + return err + } + + strKey := string(consPk.Bytes()) + + if _, ok := addrMap[strKey]; ok { + consAddr, err := val.GetConsAddr() + if err != nil { + return err + } + return fmt.Errorf("duplicate validator in genesis state: moniker %v, address %v", val.Moniker, consAddr) + } + + addrMap[strKey] = true + } + + return nil +} + +// GetGenesisStateFromAppState returns x/rollup GenesisState given raw application +// genesis state. +func GetGenesisStateFromAppState(cdc codec.JSONCodec, appState map[string]json.RawMessage) *GenesisState { + var genesisState GenesisState + + if appState[ModuleName] != nil { + cdc.MustUnmarshalJSON(appState[ModuleName], &genesisState) + } + + return &genesisState +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (g GenesisState) UnpackInterfaces(c codectypes.AnyUnpacker) error { + for i := range g.Validators { + if err := g.Validators[i].UnpackInterfaces(c); err != nil { + return err + } + } + return nil +} diff --git a/x/op_child/types/genesis.pb.go b/x/op_child/types/genesis.pb.go new file mode 100644 index 00000000..bb4999be --- /dev/null +++ b/x/op_child/types/genesis.pb.go @@ -0,0 +1,752 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_child/v1/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// GenesisState defines the rollup module's genesis state. +type GenesisState struct { + // params defines all the parameters of related to deposit. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + // last_validator_powers is a special index that provides a historical list + // of the last-block's bonded validators. + LastValidatorPowers []LastValidatorPower `protobuf:"bytes,2,rep,name=last_validator_powers,json=lastValidatorPowers,proto3" json:"last_validator_powers"` + // delegations defines the validator set at genesis. + Validators []Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators"` + // fee_pool defines the previous proposer at genesis. + PreviousProposer string `protobuf:"bytes,4,opt,name=previous_proposer,json=previousProposer,proto3" json:"previous_proposer,omitempty"` + Exported bool `protobuf:"varint,5,opt,name=exported,proto3" json:"exported,omitempty"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_6f99f91fe3495431, []int{0} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func (m *GenesisState) GetLastValidatorPowers() []LastValidatorPower { + if m != nil { + return m.LastValidatorPowers + } + return nil +} + +func (m *GenesisState) GetValidators() []Validator { + if m != nil { + return m.Validators + } + return nil +} + +func (m *GenesisState) GetPreviousProposer() string { + if m != nil { + return m.PreviousProposer + } + return "" +} + +func (m *GenesisState) GetExported() bool { + if m != nil { + return m.Exported + } + return false +} + +// LastValidatorPower required for validator set update logic. +type LastValidatorPower struct { + // address is the address of the validator. + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // power defines the power of the validator. + Power int64 `protobuf:"varint,2,opt,name=power,proto3" json:"power,omitempty"` +} + +func (m *LastValidatorPower) Reset() { *m = LastValidatorPower{} } +func (m *LastValidatorPower) String() string { return proto.CompactTextString(m) } +func (*LastValidatorPower) ProtoMessage() {} +func (*LastValidatorPower) Descriptor() ([]byte, []int) { + return fileDescriptor_6f99f91fe3495431, []int{1} +} +func (m *LastValidatorPower) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LastValidatorPower) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LastValidatorPower.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LastValidatorPower) XXX_Merge(src proto.Message) { + xxx_messageInfo_LastValidatorPower.Merge(m, src) +} +func (m *LastValidatorPower) XXX_Size() int { + return m.Size() +} +func (m *LastValidatorPower) XXX_DiscardUnknown() { + xxx_messageInfo_LastValidatorPower.DiscardUnknown(m) +} + +var xxx_messageInfo_LastValidatorPower proto.InternalMessageInfo + +func init() { + proto.RegisterType((*GenesisState)(nil), "op_init.op_child.v1.GenesisState") + proto.RegisterType((*LastValidatorPower)(nil), "op_init.op_child.v1.LastValidatorPower") +} + +func init() { proto.RegisterFile("op_init/op_child/v1/genesis.proto", fileDescriptor_6f99f91fe3495431) } + +var fileDescriptor_6f99f91fe3495431 = []byte{ + // 424 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x41, 0x8b, 0xd3, 0x40, + 0x18, 0xcd, 0xb4, 0xee, 0xda, 0x9d, 0xf5, 0xe0, 0xce, 0x56, 0x88, 0x15, 0x92, 0xd8, 0x8b, 0x41, + 0x68, 0x42, 0xeb, 0xcd, 0x83, 0x60, 0x41, 0x54, 0x10, 0x0c, 0x29, 0x78, 0xf0, 0x12, 0xa6, 0xcd, + 0x98, 0x0e, 0x24, 0x99, 0x61, 0x66, 0x1a, 0xeb, 0x3f, 0xf0, 0xe8, 0x4f, 0xe8, 0xd1, 0xa3, 0x07, + 0x7f, 0x44, 0x8f, 0xc5, 0x93, 0x27, 0x91, 0x56, 0xd0, 0x9f, 0x21, 0x9d, 0x24, 0xb5, 0xd0, 0xe0, + 0x25, 0xe4, 0xcd, 0xbc, 0xf7, 0xbe, 0x6f, 0x1e, 0x0f, 0xde, 0x67, 0x3c, 0xa2, 0x39, 0x55, 0x3e, + 0xe3, 0xd1, 0x6c, 0x4e, 0xd3, 0xd8, 0x2f, 0x86, 0x7e, 0x42, 0x72, 0x22, 0xa9, 0xf4, 0xb8, 0x60, + 0x8a, 0xa1, 0xeb, 0x8a, 0xe2, 0xd5, 0x14, 0xaf, 0x18, 0xf6, 0xae, 0x70, 0x46, 0x73, 0xe6, 0xeb, + 0x6f, 0xc9, 0xeb, 0xdd, 0x9d, 0x31, 0x99, 0x31, 0x19, 0x69, 0xe4, 0x97, 0xa0, 0xba, 0xea, 0x26, + 0x2c, 0x61, 0xe5, 0xf9, 0xfe, 0xaf, 0x3a, 0xb5, 0x9b, 0x66, 0xab, 0x0f, 0x9c, 0x54, 0xb2, 0xfe, + 0xaf, 0x16, 0xbc, 0xf5, 0xbc, 0xdc, 0x65, 0xa2, 0xb0, 0x22, 0xe8, 0x09, 0x3c, 0xe7, 0x58, 0xe0, + 0x4c, 0x9a, 0xc0, 0x01, 0xee, 0xe5, 0xe8, 0x9e, 0xd7, 0xb0, 0x9b, 0x17, 0x68, 0xca, 0xf8, 0x62, + 0xfd, 0xc3, 0x36, 0x3e, 0xff, 0xfe, 0xf2, 0x10, 0x84, 0x95, 0x0a, 0xbd, 0x83, 0x77, 0x52, 0x2c, + 0x55, 0x54, 0xe0, 0x94, 0xc6, 0x58, 0x31, 0x11, 0x71, 0xf6, 0x9e, 0x08, 0x69, 0xb6, 0x9c, 0xb6, + 0x7b, 0x39, 0x7a, 0xd0, 0x68, 0xf7, 0x0a, 0x4b, 0xf5, 0xa6, 0x16, 0x04, 0x7b, 0xfe, 0xb1, 0xf5, + 0x75, 0x7a, 0x72, 0x2d, 0xd1, 0x4b, 0x08, 0x0f, 0x23, 0xa4, 0xd9, 0xd6, 0xe6, 0x56, 0xa3, 0xf9, + 0x41, 0x79, 0xec, 0x79, 0x24, 0x46, 0xcf, 0xe0, 0x15, 0x17, 0xa4, 0xa0, 0x6c, 0xa1, 0x93, 0xe5, + 0x4c, 0x12, 0x61, 0xde, 0x70, 0x80, 0x7b, 0x31, 0x36, 0xbf, 0x7d, 0x1d, 0x74, 0xab, 0x9c, 0x9f, + 0xc6, 0xb1, 0x20, 0x52, 0x4e, 0x94, 0xa0, 0x79, 0x12, 0xde, 0xae, 0x25, 0x41, 0xa5, 0x40, 0x3d, + 0xd8, 0x21, 0x4b, 0xce, 0x84, 0x22, 0xb1, 0x79, 0xe6, 0x00, 0xb7, 0x13, 0x1e, 0x70, 0x7f, 0x0e, + 0xd1, 0xe9, 0x1b, 0xd1, 0x08, 0xde, 0xc4, 0xa5, 0xa9, 0x0e, 0xfb, 0x7f, 0xe3, 0x6a, 0x22, 0xea, + 0xc2, 0x33, 0x1d, 0xa8, 0xd9, 0x72, 0x80, 0xdb, 0x0e, 0x4b, 0xf0, 0xb8, 0xf3, 0x71, 0x65, 0x1b, + 0x7f, 0x56, 0xb6, 0x31, 0x7e, 0xb1, 0xde, 0x5a, 0x60, 0xb3, 0xb5, 0xc0, 0xcf, 0xad, 0x05, 0x3e, + 0xed, 0x2c, 0x63, 0xb3, 0xb3, 0x8c, 0xef, 0x3b, 0xcb, 0x78, 0xeb, 0x25, 0x54, 0xcd, 0x17, 0x53, + 0x6f, 0xc6, 0x32, 0x7f, 0x1f, 0x12, 0xc5, 0x83, 0x14, 0x4f, 0xa5, 0xff, 0x3a, 0xd0, 0x0d, 0x59, + 0xfe, 0xeb, 0x88, 0x2e, 0xc8, 0xf4, 0x5c, 0x37, 0xe4, 0xd1, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xa6, 0x3d, 0xbe, 0xe4, 0xc0, 0x02, 0x00, 0x00, +} + +func (m *GenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Exported { + i-- + if m.Exported { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.PreviousProposer) > 0 { + i -= len(m.PreviousProposer) + copy(dAtA[i:], m.PreviousProposer) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.PreviousProposer))) + i-- + dAtA[i] = 0x22 + } + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.LastValidatorPowers) > 0 { + for iNdEx := len(m.LastValidatorPowers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LastValidatorPowers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *LastValidatorPower) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LastValidatorPower) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LastValidatorPower) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Power != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Power)) + i-- + dAtA[i] = 0x10 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.LastValidatorPowers) > 0 { + for _, e := range m.LastValidatorPowers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + l = len(m.PreviousProposer) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + if m.Exported { + n += 2 + } + return n +} + +func (m *LastValidatorPower) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + if m.Power != 0 { + n += 1 + sovGenesis(uint64(m.Power)) + } + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastValidatorPowers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LastValidatorPowers = append(m.LastValidatorPowers, LastValidatorPower{}) + if err := m.LastValidatorPowers[len(m.LastValidatorPowers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, Validator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreviousProposer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreviousProposer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Exported", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Exported = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LastValidatorPower) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LastValidatorPower: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LastValidatorPower: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Power", wireType) + } + m.Power = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Power |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/op_child/types/historical_info.go b/x/op_child/types/historical_info.go new file mode 100644 index 00000000..62bf5b53 --- /dev/null +++ b/x/op_child/types/historical_info.go @@ -0,0 +1,64 @@ +package types + +import ( + "sort" + + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + + "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" +) + +// NewHistoricalInfo will create a historical information struct from header and valset +// it will first sort valset before inclusion into historical info +func NewHistoricalInfo(header tmproto.Header, valSet Validators) HistoricalInfo { + // Must sort in the same way that tendermint does + sort.SliceStable(valSet, func(i, j int) bool { + return ValidatorsByVotingPower(valSet).Less(i, j) + }) + + return HistoricalInfo{ + Header: header, + Valset: valSet, + } +} + +// MustUnmarshalHistoricalInfo wll unmarshal historical info and panic on error +func MustUnmarshalHistoricalInfo(cdc codec.BinaryCodec, value []byte) HistoricalInfo { + hi, err := UnmarshalHistoricalInfo(cdc, value) + if err != nil { + panic(err) + } + + return hi +} + +// UnmarshalHistoricalInfo will unmarshal historical info and return any error +func UnmarshalHistoricalInfo(cdc codec.BinaryCodec, value []byte) (hi HistoricalInfo, err error) { + err = cdc.Unmarshal(value, &hi) + return hi, err +} + +// ValidateBasic will ensure HistoricalInfo is not nil and sorted +func ValidateBasic(hi HistoricalInfo) error { + if len(hi.Valset) == 0 { + return errors.Wrap(ErrInvalidHistoricalInfo, "validator set is empty") + } + + if !sort.IsSorted(Validators(hi.Valset)) { + return errors.Wrap(ErrInvalidHistoricalInfo, "validator set is not sorted by address") + } + + return nil +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (hi HistoricalInfo) UnpackInterfaces(c codectypes.AnyUnpacker) error { + for i := range hi.Valset { + if err := hi.Valset[i].UnpackInterfaces(c); err != nil { + return err + } + } + return nil +} diff --git a/x/op_child/types/hook.go b/x/op_child/types/hook.go new file mode 100644 index 00000000..86199b7e --- /dev/null +++ b/x/op_child/types/hook.go @@ -0,0 +1,7 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type BridgeHook = func(ctx sdk.Context, sender sdk.AccAddress, msgBytes []byte) error diff --git a/x/op_child/types/keys.go b/x/op_child/types/keys.go new file mode 100644 index 00000000..427916fa --- /dev/null +++ b/x/op_child/types/keys.go @@ -0,0 +1,81 @@ +package types + +import ( + "encoding/binary" + "strconv" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + "github.com/cosmos/cosmos-sdk/types/kv" +) + +const ( + // ModuleName is the name of the rollup module + // module addr: init1ghacknt8xydqjp0ghnl7rad8966wv272efd24k + ModuleName = "rollup" + + // StoreKey is the string store representation + StoreKey = ModuleName + + // RouterKey is the msg router key for the rollup module + RouterKey = ModuleName +) + +var ( + // Keys for store prefixes + // Last* values are constant during a block. + LastValidatorPowerKey = []byte{0x11} // prefix for each key to a validator index, for bonded validators + ProposerKey = []byte{0x12} // key for the proposer operator address + + ValidatorsKey = []byte{0x21} // prefix for each key to a validator + ValidatorsByConsAddrKey = []byte{0x22} // prefix for each key to a validator index, by pubkey + + HistoricalInfoKey = []byte{0x31} // prefix for the historical info + ValidatorUpdatesKey = []byte{0x32} // prefix for the end block validator updates key + + ParamsKey = []byte{0x41} // prefix for parameters for module x/rollup + + OutboundSequenceKey = []byte{0x51} // key for the outbound sequence number + FinalizedInboundSequenceKey = []byte{0x62} // prefix for finalized deposit sequences +) + +// GetValidatorKey creates the key for the validator with address +// VALUE: rollup/Validator +func GetValidatorKey(operatorAddr sdk.ValAddress) []byte { + return append(ValidatorsKey, address.MustLengthPrefix(operatorAddr)...) +} + +// GetValidatorByConsAddrKey creates the key for the validator with pubkey +// VALUE: validator operator address ([]byte) +func GetValidatorByConsAddrKey(addr sdk.ConsAddress) []byte { + return append(ValidatorsByConsAddrKey, address.MustLengthPrefix(addr)...) +} + +// AddressFromValidatorsKey creates the validator operator address from ValidatorsKey +func AddressFromValidatorsKey(key []byte) []byte { + kv.AssertKeyAtLeastLength(key, 3) + return key[2:] // remove prefix bytes and address length +} + +// AddressFromLastValidatorPowerKey creates the validator operator address from LastValidatorPowerKey +func AddressFromLastValidatorPowerKey(key []byte) []byte { + kv.AssertKeyAtLeastLength(key, 3) + return key[2:] // remove prefix bytes and address length +} + +// GetLastValidatorPowerKey creates the bonded validator index key for an operator address +func GetLastValidatorPowerKey(operator sdk.ValAddress) []byte { + return append(LastValidatorPowerKey, address.MustLengthPrefix(operator)...) +} + +// GetHistoricalInfoKey returns a key prefix for indexing HistoricalInfo objects. +func GetHistoricalInfoKey(height int64) []byte { + return append(HistoricalInfoKey, []byte(strconv.FormatInt(height, 10))...) +} + +func GetFinalizedInboundSequenceKey(sequence uint64) []byte { + _sequence := [8]byte{} + binary.BigEndian.PutUint64(_sequence[:], sequence) + + return append(FinalizedInboundSequenceKey, _sequence[:]...) +} diff --git a/x/op_child/types/params.go b/x/op_child/types/params.go new file mode 100644 index 00000000..0134ac5a --- /dev/null +++ b/x/op_child/types/params.go @@ -0,0 +1,73 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + + "gopkg.in/yaml.v3" +) + +var ( + DefaultMinGasPrices = sdk.NewDecCoins(sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.NewDecWithPrec(15, 2))) // 0.15 +) + +// DefaultParams returns default move parameters +func DefaultParams() Params { + return NewParams( + DefaultMaxValidators, + DefaultHistoricalEntries, + "", + DefaultMinGasPrices, + ) +} + +// NewParams creates a new Params instance +func NewParams(maxValidators, historicalEntries uint32, bridgeExecutor string, minGasPrice sdk.DecCoins) Params { + return Params{ + BridgeExecutor: bridgeExecutor, + MaxValidators: maxValidators, + HistoricalEntries: historicalEntries, + MinGasPrices: minGasPrice, + } + +} + +func (p Params) String() string { + out, err := yaml.Marshal(p) + if err != nil { + panic(err) + } + return string(out) +} + +// Validate performs basic validation on move parameters +func (p Params) Validate() error { + if _, err := sdk.AccAddressFromBech32(p.BridgeExecutor); err != nil { + return err + } + if err := p.MinGasPrices.Validate(); err != nil { + return err + } + + return nil +} + +// unmarshal the current rollup params value from store key or panic +func MustUnmarshalParams(cdc *codec.LegacyAmino, value []byte) Params { + params, err := UnmarshalParams(cdc, value) + if err != nil { + panic(err) + } + + return params +} + +// unmarshal the current rollup params value from store key +func UnmarshalParams(cdc *codec.LegacyAmino, value []byte) (params Params, err error) { + err = cdc.Unmarshal(value, ¶ms) + if err != nil { + return + } + + return +} diff --git a/x/op_child/types/query.pb.go b/x/op_child/types/query.pb.go new file mode 100644 index 00000000..659c8447 --- /dev/null +++ b/x/op_child/types/query.pb.go @@ -0,0 +1,1409 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_child/v1/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + query "github.com/cosmos/cosmos-sdk/types/query" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// QueryValidatorsRequest is request type for Query/Validators RPC method. +type QueryValidatorsRequest struct { + // pagination defines an optional pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryValidatorsRequest) Reset() { *m = QueryValidatorsRequest{} } +func (m *QueryValidatorsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryValidatorsRequest) ProtoMessage() {} +func (*QueryValidatorsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_2aebbdbc440c6d0d, []int{0} +} +func (m *QueryValidatorsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryValidatorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryValidatorsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryValidatorsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryValidatorsRequest.Merge(m, src) +} +func (m *QueryValidatorsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryValidatorsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryValidatorsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryValidatorsRequest proto.InternalMessageInfo + +func (m *QueryValidatorsRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryValidatorsResponse is response type for the Query/Validators RPC method +type QueryValidatorsResponse struct { + // validators contains all the queried validators. + Validators []Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators"` + // pagination defines the pagination in the response. + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryValidatorsResponse) Reset() { *m = QueryValidatorsResponse{} } +func (m *QueryValidatorsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryValidatorsResponse) ProtoMessage() {} +func (*QueryValidatorsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2aebbdbc440c6d0d, []int{1} +} +func (m *QueryValidatorsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryValidatorsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryValidatorsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryValidatorsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryValidatorsResponse.Merge(m, src) +} +func (m *QueryValidatorsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryValidatorsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryValidatorsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryValidatorsResponse proto.InternalMessageInfo + +func (m *QueryValidatorsResponse) GetValidators() []Validator { + if m != nil { + return m.Validators + } + return nil +} + +func (m *QueryValidatorsResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryValidatorRequest is response type for the Query/Validator RPC method +type QueryValidatorRequest struct { + // validator_addr defines the validator address to query for. + ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"` +} + +func (m *QueryValidatorRequest) Reset() { *m = QueryValidatorRequest{} } +func (m *QueryValidatorRequest) String() string { return proto.CompactTextString(m) } +func (*QueryValidatorRequest) ProtoMessage() {} +func (*QueryValidatorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_2aebbdbc440c6d0d, []int{2} +} +func (m *QueryValidatorRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryValidatorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryValidatorRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryValidatorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryValidatorRequest.Merge(m, src) +} +func (m *QueryValidatorRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryValidatorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryValidatorRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryValidatorRequest proto.InternalMessageInfo + +func (m *QueryValidatorRequest) GetValidatorAddr() string { + if m != nil { + return m.ValidatorAddr + } + return "" +} + +// QueryValidatorResponse is response type for the Query/Validator RPC method +type QueryValidatorResponse struct { + // validator defines the validator info. + Validator Validator `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator"` +} + +func (m *QueryValidatorResponse) Reset() { *m = QueryValidatorResponse{} } +func (m *QueryValidatorResponse) String() string { return proto.CompactTextString(m) } +func (*QueryValidatorResponse) ProtoMessage() {} +func (*QueryValidatorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2aebbdbc440c6d0d, []int{3} +} +func (m *QueryValidatorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryValidatorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryValidatorResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryValidatorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryValidatorResponse.Merge(m, src) +} +func (m *QueryValidatorResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryValidatorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryValidatorResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryValidatorResponse proto.InternalMessageInfo + +func (m *QueryValidatorResponse) GetValidator() Validator { + if m != nil { + return m.Validator + } + return Validator{} +} + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { +} + +func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } +func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_2aebbdbc440c6d0d, []int{4} +} +func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsRequest.Merge(m, src) +} +func (m *QueryParamsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + // params holds all the parameters of this module. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } +func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2aebbdbc440c6d0d, []int{5} +} +func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsResponse.Merge(m, src) +} +func (m *QueryParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo + +func (m *QueryParamsResponse) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*QueryValidatorsRequest)(nil), "op_init.op_child.v1.QueryValidatorsRequest") + proto.RegisterType((*QueryValidatorsResponse)(nil), "op_init.op_child.v1.QueryValidatorsResponse") + proto.RegisterType((*QueryValidatorRequest)(nil), "op_init.op_child.v1.QueryValidatorRequest") + proto.RegisterType((*QueryValidatorResponse)(nil), "op_init.op_child.v1.QueryValidatorResponse") + proto.RegisterType((*QueryParamsRequest)(nil), "op_init.op_child.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "op_init.op_child.v1.QueryParamsResponse") +} + +func init() { proto.RegisterFile("op_init/op_child/v1/query.proto", fileDescriptor_2aebbdbc440c6d0d) } + +var fileDescriptor_2aebbdbc440c6d0d = []byte{ + // 571 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0x41, 0x8b, 0xd3, 0x40, + 0x14, 0xc7, 0x3b, 0xbb, 0x58, 0xe8, 0x2c, 0x0a, 0xce, 0x56, 0xad, 0xad, 0xa6, 0x6b, 0x0e, 0x6e, + 0xe9, 0xee, 0x66, 0x68, 0xbd, 0x8a, 0x62, 0x0f, 0xae, 0x9e, 0xac, 0x15, 0x45, 0xbc, 0xd4, 0x69, + 0x33, 0x64, 0x07, 0xda, 0x4c, 0x36, 0x33, 0x2d, 0x2e, 0xe2, 0x45, 0x10, 0x3c, 0x0a, 0xe2, 0x17, + 0xf0, 0xe4, 0x45, 0xf0, 0xe0, 0x87, 0xd8, 0x83, 0x87, 0x45, 0x2f, 0x9e, 0x44, 0x5a, 0xc1, 0xaf, + 0x21, 0x99, 0x99, 0x24, 0x8d, 0x46, 0xb7, 0x5e, 0x4a, 0xf3, 0xf2, 0xff, 0xbf, 0xff, 0x6f, 0xde, + 0x3c, 0x02, 0xeb, 0x3c, 0xe8, 0x33, 0x9f, 0x49, 0xcc, 0x83, 0xfe, 0x70, 0x8f, 0x8d, 0x5c, 0x3c, + 0x6d, 0xe1, 0xfd, 0x09, 0x0d, 0x0f, 0x9c, 0x20, 0xe4, 0x92, 0xa3, 0x75, 0x23, 0x70, 0x62, 0x81, + 0x33, 0x6d, 0x55, 0x4f, 0x93, 0x31, 0xf3, 0x39, 0x56, 0xbf, 0x5a, 0x57, 0x6d, 0x0e, 0xb9, 0x18, + 0x73, 0x81, 0x07, 0x44, 0x50, 0xdd, 0x00, 0x4f, 0x5b, 0x03, 0x2a, 0x49, 0x0b, 0x07, 0xc4, 0x63, + 0x3e, 0x91, 0x8c, 0xfb, 0x46, 0x5b, 0x33, 0xda, 0x58, 0xb6, 0x18, 0x58, 0x3d, 0xaf, 0x5f, 0xf6, + 0xd5, 0x13, 0xd6, 0x0f, 0xe6, 0x55, 0xd9, 0xe3, 0x1e, 0xd7, 0xf5, 0xe8, 0x9f, 0xa9, 0x5e, 0xf0, + 0x38, 0xf7, 0x46, 0x14, 0x93, 0x80, 0x61, 0xe2, 0xfb, 0x5c, 0xaa, 0xa8, 0xd8, 0x93, 0x7b, 0x40, + 0x79, 0x10, 0x50, 0x23, 0xb0, 0x1f, 0xc3, 0xb3, 0x77, 0xa3, 0xf8, 0x07, 0x64, 0xc4, 0x5c, 0x22, + 0x79, 0x28, 0x7a, 0x74, 0x7f, 0x42, 0x85, 0x44, 0x37, 0x21, 0x4c, 0xd1, 0x2b, 0x60, 0x03, 0x34, + 0xd6, 0xda, 0x97, 0x1d, 0x43, 0x14, 0x9d, 0xd3, 0xd1, 0xdc, 0xe6, 0x9c, 0x4e, 0x97, 0x78, 0xd4, + 0x78, 0x7b, 0x0b, 0x4e, 0xfb, 0x3d, 0x80, 0xe7, 0xfe, 0x88, 0x10, 0x01, 0xf7, 0x05, 0x45, 0xb7, + 0x21, 0x9c, 0x26, 0xd5, 0x0a, 0xd8, 0x58, 0x6d, 0xac, 0xb5, 0x2d, 0x27, 0x67, 0xe6, 0x4e, 0x62, + 0xee, 0x94, 0x0e, 0xbf, 0xd5, 0x0b, 0xef, 0x7e, 0x7e, 0x68, 0x82, 0xde, 0x82, 0x19, 0xed, 0x66, + 0x70, 0x57, 0x14, 0xee, 0xe6, 0xb1, 0xb8, 0x9a, 0x23, 0xc3, 0xfb, 0x10, 0x9e, 0xc9, 0xe2, 0xc6, + 0x03, 0xb9, 0x0e, 0x4f, 0x25, 0x79, 0x7d, 0xe2, 0xba, 0xa1, 0x1a, 0x4a, 0xa9, 0x53, 0xf9, 0xfc, + 0x71, 0xa7, 0x6c, 0x82, 0x6e, 0xb8, 0x6e, 0x48, 0x85, 0xb8, 0x27, 0x43, 0xe6, 0x7b, 0xbd, 0x93, + 0x89, 0x3e, 0xaa, 0xdb, 0xe4, 0xf7, 0x59, 0x27, 0x73, 0xd8, 0x85, 0xa5, 0x44, 0x6a, 0x46, 0xfd, + 0x1f, 0x63, 0x48, 0xbd, 0x76, 0x19, 0x22, 0x15, 0xd1, 0x25, 0x21, 0x19, 0xc7, 0x57, 0x69, 0xdf, + 0x87, 0xeb, 0x99, 0xaa, 0x49, 0xbd, 0x06, 0x8b, 0x81, 0xaa, 0x98, 0xc8, 0x5a, 0x6e, 0xa4, 0x36, + 0x2d, 0xe6, 0x19, 0x57, 0xfb, 0xd3, 0x2a, 0x3c, 0xa1, 0xfa, 0xa2, 0x37, 0x00, 0xc2, 0xf4, 0x7a, + 0xd1, 0x56, 0x6e, 0xa3, 0xfc, 0x3d, 0xab, 0x6e, 0x2f, 0x27, 0xd6, 0xcc, 0xf6, 0xf6, 0xcb, 0x08, + 0xe1, 0xf9, 0x97, 0x1f, 0xaf, 0x57, 0x2e, 0xa1, 0x3a, 0xce, 0x5b, 0xef, 0x85, 0xa5, 0x78, 0x0b, + 0x60, 0x29, 0x69, 0x82, 0x9a, 0x4b, 0x24, 0xc5, 0x54, 0x5b, 0x4b, 0x69, 0x0d, 0xd4, 0xd5, 0x14, + 0xaa, 0x85, 0xf0, 0xbf, 0xa1, 0xf0, 0xd3, 0xec, 0x12, 0x3d, 0x43, 0x2f, 0x00, 0x2c, 0xea, 0x21, + 0xa3, 0xcd, 0xbf, 0xa7, 0x66, 0x6e, 0xb4, 0xda, 0x38, 0x5e, 0x68, 0xd8, 0x1a, 0x29, 0xdb, 0x45, + 0x54, 0xcb, 0x65, 0xd3, 0xd7, 0xd9, 0xb9, 0x75, 0x38, 0xb3, 0xc0, 0xd1, 0xcc, 0x02, 0xdf, 0x67, + 0x16, 0x78, 0x35, 0xb7, 0x0a, 0x47, 0x73, 0xab, 0xf0, 0x75, 0x6e, 0x15, 0x1e, 0x39, 0x1e, 0x93, + 0x7b, 0x93, 0x81, 0x33, 0xe4, 0x63, 0x1c, 0xb9, 0x19, 0xd9, 0x19, 0x91, 0x81, 0xc0, 0x77, 0xba, + 0xaa, 0xd7, 0x93, 0xb4, 0x9b, 0xfa, 0xb4, 0x0c, 0x8a, 0xea, 0xdb, 0x72, 0xe5, 0x57, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x4d, 0x8e, 0x92, 0xa0, 0x5f, 0x05, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Validators queries all validators + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + Validators(ctx context.Context, in *QueryValidatorsRequest, opts ...grpc.CallOption) (*QueryValidatorsResponse, error) + // Validator queries validator info for given validator address. + Validator(ctx context.Context, in *QueryValidatorRequest, opts ...grpc.CallOption) (*QueryValidatorResponse, error) + // Parameters queries the rollup parameters. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Validators(ctx context.Context, in *QueryValidatorsRequest, opts ...grpc.CallOption) (*QueryValidatorsResponse, error) { + out := new(QueryValidatorsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Query/Validators", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Validator(ctx context.Context, in *QueryValidatorRequest, opts ...grpc.CallOption) (*QueryValidatorResponse, error) { + out := new(QueryValidatorResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Query/Validator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Validators queries all validators + // + // When called from another module, this query might consume a high amount of + // gas if the pagination field is incorrectly set. + Validators(context.Context, *QueryValidatorsRequest) (*QueryValidatorsResponse, error) + // Validator queries validator info for given validator address. + Validator(context.Context, *QueryValidatorRequest) (*QueryValidatorResponse, error) + // Parameters queries the rollup parameters. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Validators(ctx context.Context, req *QueryValidatorsRequest) (*QueryValidatorsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Validators not implemented") +} +func (*UnimplementedQueryServer) Validator(ctx context.Context, req *QueryValidatorRequest) (*QueryValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Validator not implemented") +} +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Validators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryValidatorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Validators(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Query/Validators", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Validators(ctx, req.(*QueryValidatorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Validator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryValidatorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Validator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Query/Validator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Validator(ctx, req.(*QueryValidatorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "op_init.op_child.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Validators", + Handler: _Query_Validators_Handler, + }, + { + MethodName: "Validator", + Handler: _Query_Validator_Handler, + }, + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "op_init/op_child/v1/query.proto", +} + +func (m *QueryValidatorsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryValidatorsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryValidatorsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryValidatorsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryValidatorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryValidatorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ValidatorAddr) > 0 { + i -= len(m.ValidatorAddr) + copy(dAtA[i:], m.ValidatorAddr) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Validator.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryValidatorsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorAddr) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Validator.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, Validator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddr", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddr = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryValidatorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryValidatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Validator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/op_child/types/query.pb.gw.go b/x/op_child/types/query.pb.gw.go new file mode 100644 index 00000000..fcead2ff --- /dev/null +++ b/x/op_child/types/query.pb.gw.go @@ -0,0 +1,337 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: op_init/op_child/v1/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +var ( + filter_Query_Validators_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_Validators_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryValidatorsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Validators_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Validators(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Validators_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryValidatorsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Validators_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.Validators(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_Validator_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryValidatorRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["validator_addr"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator_addr") + } + + protoReq.ValidatorAddr, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator_addr", err) + } + + msg, err := client.Validator(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Validator_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryValidatorRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["validator_addr"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator_addr") + } + + protoReq.ValidatorAddr, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator_addr", err) + } + + msg, err := server.Validator(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Validators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Validators_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Validators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Validator_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Validator_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Validator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Validators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Validators_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Validators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Validator_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Validator_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Validator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Validators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"op_init", "op_child", "v1", "validators"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_Validator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"op_init", "op_child", "v1", "validator", "validator_addr"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"op_init", "op_child", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Validators_0 = runtime.ForwardResponseMessage + + forward_Query_Validator_0 = runtime.ForwardResponseMessage + + forward_Query_Params_0 = runtime.ForwardResponseMessage +) diff --git a/x/op_child/types/staking.go b/x/op_child/types/staking.go new file mode 100644 index 00000000..efc5efd6 --- /dev/null +++ b/x/op_child/types/staking.go @@ -0,0 +1,27 @@ +package types + +import ( + "time" +) + +// Staking params default values: copied from initia/x/mstaking +const ( + // DefaultUnbondingTime reflects three weeks in seconds as the default + // unbonding time. + // TODO: Justify our choice of default here. + DefaultUnbondingTime time.Duration = time.Hour * 24 * 7 * 3 + + // Default maximum number of bonded validators + DefaultMaxValidators uint32 = 100 + + // Default maximum entries in a UBD/RED pair + DefaultMaxEntries uint32 = 7 + + // DefaultHistorical entries is 10000. Apps that don't use IBC can ignore this + // value by not adding the staking module to the application module manager's + // SetOrderBeginBlockers. + DefaultHistoricalEntries uint32 = 10000 + + // DefaultMinVotingPower minimum voting power to get into power update validator set + DefaultMinVotingPower uint64 = 1_000_000 +) diff --git a/x/op_child/types/tx.go b/x/op_child/types/tx.go new file mode 100644 index 00000000..a7c6e272 --- /dev/null +++ b/x/op_child/types/tx.go @@ -0,0 +1,611 @@ +package types + +import ( + "fmt" + + errors "cosmossdk.io/errors" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + sdktx "github.com/cosmos/cosmos-sdk/types/tx" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/cosmos/gogoproto/proto" +) + +// rollup message types +const ( + TypeMsgExecuteMessages = "execute_messages" + TypeMsgExecuteLegacyContents = "execute_legacy_contents" + + TypeMsgAddValidator = "add_validator" + TypeMsgRemoveValidator = "remove_validator" + TypeMsgUpdateParams = "update_params" + TypeMsgWhitelist = "whitelist" + TypeMsgSpendFeePool = "spend_fee_pool" + + TypeMsgWithdraw = "withdraw‰" + TypeMsgDeposit = "deposit" +) + +var ( + _ sdk.Msg = &MsgExecuteMessages{} + _ sdk.Msg = &MsgExecuteLegacyContents{} + _ sdk.Msg = &MsgAddValidator{} + _ sdk.Msg = &MsgRemoveValidator{} + _ sdk.Msg = &MsgUpdateParams{} + _ sdk.Msg = &MsgSpendFeePool{} + _ sdk.Msg = &MsgDeposit{} + _ sdk.Msg = &MsgWithdraw{} + + _ legacytx.LegacyMsg = &MsgExecuteMessages{} + _ legacytx.LegacyMsg = &MsgExecuteLegacyContents{} + _ legacytx.LegacyMsg = &MsgAddValidator{} + _ legacytx.LegacyMsg = &MsgRemoveValidator{} + _ legacytx.LegacyMsg = &MsgUpdateParams{} + _ legacytx.LegacyMsg = &MsgSpendFeePool{} + _ legacytx.LegacyMsg = &MsgDeposit{} + _ legacytx.LegacyMsg = &MsgWithdraw{} +) + +// should refer initiavm/precompile/modules/minlib/sources/coin.move +const MAX_TOKEN_NAME_LENGTH = 128 +const MAX_TOKEN_SYMBOL_LENGTH = 128 + +/* MsgExecuteMessages */ + +// NewMsgExecuteMessages creates a new MsgExecuteMessages instance. +func NewMsgExecuteMessages( + sender sdk.AccAddress, //nolint:interfacer + messages []sdk.Msg, +) (*MsgExecuteMessages, error) { + msg := &MsgExecuteMessages{ + Sender: sender.String(), + } + + anys, err := sdktx.SetMsgs(messages) + if err != nil { + return nil, err + } + msg.Messages = anys + + return msg, nil +} + +// GetMsgs unpacks m.Messages Any's into sdk.Msg's +func (msg *MsgExecuteMessages) GetMsgs() ([]sdk.Msg, error) { + return sdktx.GetMsgs(msg.Messages, "sdk.MsgProposal") +} + +// Route implements the sdk.Msg interface. +func (msg MsgExecuteMessages) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgExecuteMessages) Type() string { + return TypeMsgExecuteMessages +} + +// ValidateBasic performs basic MsgExecuteMessages message validation. +func (msg MsgExecuteMessages) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return err + } + + msgs, err := msg.GetMsgs() + if err != nil { + return err + } + // Check Msgs length is non nil. + if len(msg.Messages) == 0 { + return errors.Wrap(govtypes.ErrNoProposalMsgs, "Msgs length must be non-zero") + } + + for idx, msg := range msgs { + if err := msg.ValidateBasic(); err != nil { + return errors.Wrapf(govtypes.ErrInvalidProposalMsg, "msg: %d, err: %s", idx, err.Error()) + } + + signers := msg.GetSigners() + if len(signers) != 1 { + return govtypes.ErrInvalidSigner + } + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgExecuteMessages) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgExecuteMessages) GetSigners() []sdk.AccAddress { + senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { // should never happen as valid basic rejects invalid addresses + panic(err.Error()) + } + return []sdk.AccAddress{senderAddr} +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (m MsgExecuteMessages) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + return sdktx.UnpackInterfaces(unpacker, m.Messages) +} + +/* MsgExecuteLegacyContents */ + +// NewMsgExecuteLegacyContents creates a new MsgExecuteLegacyContents instance. +func NewMsgExecuteLegacyContents( + sender sdk.AccAddress, //nolint:interfacer + contents []govv1beta1.Content, +) (*MsgExecuteLegacyContents, error) { + msg := &MsgExecuteLegacyContents{ + Sender: sender.String(), + } + + if err := msg.SetContents(contents); err != nil { + return nil, err + } + + return msg, nil +} + +// GetContents returns the contents of MsgExecuteLegacyContents. +func (m *MsgExecuteLegacyContents) GetContents() []govv1beta1.Content { + contents := make([]govv1beta1.Content, len(m.Contents)) + for i, content := range m.Contents { + content, ok := content.GetCachedValue().(govv1beta1.Content) + if !ok { + return nil + } + + contents[i] = content + } + + return contents +} + +// SetContents sets the contents for MsgExecuteLegacyContents. +func (m *MsgExecuteLegacyContents) SetContents(contents []govv1beta1.Content) error { + anys := make([]*codectypes.Any, len(contents)) + for i, content := range contents { + msg, ok := content.(proto.Message) + if !ok { + return fmt.Errorf("can't proto marshal %T", msg) + } + any, err := codectypes.NewAnyWithValue(msg) + if err != nil { + return err + } + + anys[i] = any + } + + m.Contents = anys + return nil +} + +// Route implements the sdk.Msg interface. +func (msg MsgExecuteLegacyContents) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgExecuteLegacyContents) Type() string { + return TypeMsgExecuteLegacyContents +} + +// ValidateBasic performs basic MsgExecuteLegacyContents message validation. +func (msg MsgExecuteLegacyContents) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return err + } + + // Check Msgs length is non nil. + if len(msg.Contents) == 0 { + return errors.Wrap(govtypes.ErrNoProposalMsgs, "Contents length must be non-zero") + } + + contents := msg.GetContents() + for idx, content := range contents { + if err := content.ValidateBasic(); err != nil { + return errors.Wrapf(govtypes.ErrInvalidProposalContent, "content: %d, err: %s", idx, err.Error()) + } + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgExecuteLegacyContents) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgExecuteLegacyContents) GetSigners() []sdk.AccAddress { + senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { // should never happen as valid basic rejects invalid addresses + panic(err.Error()) + } + return []sdk.AccAddress{senderAddr} +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (c MsgExecuteLegacyContents) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + for _, anyContent := range c.Contents { + var content govv1beta1.Content + if err := unpacker.UnpackAny(anyContent, &content); err != nil { + return err + } + } + + return nil +} + +/* MsgAddValidator */ + +// NewMsgAddValidator creates a new MsgAddValidator instance. +// Delegator address and validator address are the same. +func NewMsgAddValidator( + moniker string, authority sdk.AccAddress, + valAddr sdk.ValAddress, pubKey cryptotypes.PubKey, //nolint:interfacer +) (*MsgAddValidator, error) { + var pkAny *codectypes.Any + if pubKey != nil { + var err error + if pkAny, err = codectypes.NewAnyWithValue(pubKey); err != nil { + return nil, err + } + } + return &MsgAddValidator{ + Moniker: moniker, + Authority: authority.String(), + ValidatorAddress: valAddr.String(), + Pubkey: pkAny, + }, nil +} + +// Route implements the sdk.Msg interface. +func (msg MsgAddValidator) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgAddValidator) Type() string { + return TypeMsgAddValidator +} + +// ValidateBasic performs basic MsgAddValidator message validation. +func (msg MsgAddValidator) ValidateBasic() error { + // note that unmarshaling from bech32 ensures both non-empty and valid + _, err := sdk.AccAddressFromBech32(msg.Authority) + if err != nil { + return sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) + } + _, err = sdk.ValAddressFromBech32(msg.ValidatorAddress) + if err != nil { + return sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err) + } + + if msg.Pubkey == nil { + return ErrEmptyValidatorPubKey + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgAddValidator) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgAddValidator) GetSigners() []sdk.AccAddress { + // delegator is first signer so delegator pays fees + delegator, _ := sdk.AccAddressFromBech32(msg.Authority) + addrs := []sdk.AccAddress{delegator} + valAddr, _ := sdk.ValAddressFromBech32(msg.ValidatorAddress) + + valAccAddr := sdk.AccAddress(valAddr) + if !delegator.Equals(valAccAddr) { + addrs = append(addrs, valAccAddr) + } + + return addrs +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (msg MsgAddValidator) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + var pubKey cryptotypes.PubKey + return unpacker.UnpackAny(msg.Pubkey, &pubKey) +} + +/* MsgRemoveValidator */ + +// NewMsgRemoveValidator creates a new MsgRemoveValidator instance. +func NewMsgRemoveValidator( + authority sdk.AccAddress, + valAddr sdk.ValAddress, //nolint:interfacer +) (*MsgRemoveValidator, error) { + return &MsgRemoveValidator{ + Authority: authority.String(), + ValidatorAddress: valAddr.String(), + }, nil +} + +// Route implements the sdk.Msg interface. +func (msg MsgRemoveValidator) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgRemoveValidator) Type() string { + return TypeMsgRemoveValidator +} + +// ValidateBasic performs basic MsgRemoveValidator message validation. +func (msg MsgRemoveValidator) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { + return err + } + + if _, err := sdk.ValAddressFromBech32(msg.ValidatorAddress); err != nil { + return err + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgRemoveValidator) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgRemoveValidator) GetSigners() []sdk.AccAddress { + senderAddr, err := sdk.AccAddressFromBech32(msg.Authority) + if err != nil { // should never happen as valid basic rejects invalid addresses + panic(err.Error()) + } + return []sdk.AccAddress{senderAddr} +} + +/* MsgWithdraw */ + +// NewMsgWithdraw creates a new MsgWithdraw instance. +func NewMsgWithdraw( + sender sdk.AccAddress, + to sdk.AccAddress, + amount sdk.Coin, +) *MsgWithdraw { + return &MsgWithdraw{ + Sender: sender.String(), + To: to.String(), + Amount: amount, + } +} + +// Route implements the sdk.Msg interface. +func (msg MsgWithdraw) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgWithdraw) Type() string { + return TypeMsgWithdraw +} + +// ValidateBasic performs basic MsgWithdraw message validation. +func (msg MsgWithdraw) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.To); err != nil { + return err + } + + if err := msg.Amount.Validate(); err != nil { + return err + } + + if msg.Amount.IsZero() { + return ErrZeroAmount + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgWithdraw) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgWithdraw) GetSigners() []sdk.AccAddress { + senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { // should never happen as valid basic rejects invalid addresses + panic(err.Error()) + } + return []sdk.AccAddress{senderAddr} +} + +/* MsgDeposit */ + +// NewMsgDeposit creates a new MsgDeposit instance. +func NewMsgDeposit( + sender, from, to sdk.AccAddress, + amount sdk.Coins, + sequence uint64, + data []byte, +) *MsgDeposit { + return &MsgDeposit{ + Sender: sender.String(), + From: from.String(), + To: to.String(), + Amount: amount, + Sequence: sequence, + Data: data, + } +} + +// Route implements the sdk.Msg interface. +func (msg MsgDeposit) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgDeposit) Type() string { + return TypeMsgDeposit +} + +// ValidateBasic performs basic MsgDeposit message validation. +func (msg MsgDeposit) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.From); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.To); err != nil { + return err + } + + if !msg.Amount.IsValid() { + return errors.Wrap(sdkerrors.ErrInvalidRequest, "invalid deposit amount") + } + + if msg.Amount.IsZero() { + return ErrZeroAmount + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgDeposit) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgDeposit) GetSigners() []sdk.AccAddress { + senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { // should never happen as valid basic rejects invalid addresses + panic(err.Error()) + } + return []sdk.AccAddress{senderAddr} +} + +/* MsgUpdateParams */ + +// NewMsgUpdateParams returns a new MsgUpdateParams instance +func NewMsgUpdateParams(authority sdk.AccAddress, params *Params) *MsgUpdateParams { + return &MsgUpdateParams{ + Authority: authority.String(), + Params: params, + } +} + +// Route implements the sdk.Msg interface. +func (msg MsgUpdateParams) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgUpdateParams) Type() string { + return TypeMsgUpdateParams +} + +// ValidateBasic performs basic MsgUpdateParams message validation. +func (msg MsgUpdateParams) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { + return err + } + + if err := msg.Params.Validate(); err != nil { + return err + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgUpdateParams) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { + senderAddr, err := sdk.AccAddressFromBech32(msg.Authority) + if err != nil { // should never happen as valid basic rejects invalid addresses + panic(err.Error()) + } + return []sdk.AccAddress{senderAddr} +} + +/* MsgSpendFeePool */ + +// NewMsgSpendFeePool creates a new MsgSpendFeePool +func NewMsgSpendFeePool(authority, recipient sdk.AccAddress, amount sdk.Coins) *MsgSpendFeePool { + return &MsgSpendFeePool{ + Authority: authority.String(), + Recipient: recipient.String(), + Amount: amount, + } +} + +// Route implements the sdk.Msg interface. +func (msg MsgSpendFeePool) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg MsgSpendFeePool) Type() string { + return TypeMsgSpendFeePool +} + +// ValidateBasic performs basic MsgSpendFeePool message validation. +func (msg MsgSpendFeePool) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.Recipient); err != nil { + return err + } + + if !msg.Amount.IsValid() { + return errors.Wrap(sdkerrors.ErrInvalidRequest, "invalid spend amount") + } + + return nil +} + +// GetSignBytes returns the message bytes to sign over. +func (msg MsgSpendFeePool) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the signer addresses that are expected to sign the result +// of GetSignBytes. +func (msg MsgSpendFeePool) GetSigners() []sdk.AccAddress { + senderAddr, err := sdk.AccAddressFromBech32(msg.Authority) + if err != nil { // should never happen as valid basic rejects invalid addresses + panic(err.Error()) + } + return []sdk.AccAddress{senderAddr} +} diff --git a/x/op_child/types/tx.pb.go b/x/op_child/types/tx.pb.go new file mode 100644 index 00000000..d2a9e253 --- /dev/null +++ b/x/op_child/types/tx.pb.go @@ -0,0 +1,3677 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_child/v1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/codec/types" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types1 "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgExecuteMessages is a message to execute the given +// authority messages with validator permission. +type MsgExecuteMessages struct { + // Sender is the that actor that signed a messages + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + // messages are the arbitrary messages to be executed. + Messages []*types.Any `protobuf:"bytes,2,rep,name=messages,proto3" json:"messages,omitempty"` +} + +func (m *MsgExecuteMessages) Reset() { *m = MsgExecuteMessages{} } +func (m *MsgExecuteMessages) String() string { return proto.CompactTextString(m) } +func (*MsgExecuteMessages) ProtoMessage() {} +func (*MsgExecuteMessages) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{0} +} +func (m *MsgExecuteMessages) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgExecuteMessages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgExecuteMessages.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgExecuteMessages) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgExecuteMessages.Merge(m, src) +} +func (m *MsgExecuteMessages) XXX_Size() int { + return m.Size() +} +func (m *MsgExecuteMessages) XXX_DiscardUnknown() { + xxx_messageInfo_MsgExecuteMessages.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgExecuteMessages proto.InternalMessageInfo + +// MsgExecuteMessagesResponse returns MsgExecuteMessages message result data +type MsgExecuteMessagesResponse struct { +} + +func (m *MsgExecuteMessagesResponse) Reset() { *m = MsgExecuteMessagesResponse{} } +func (m *MsgExecuteMessagesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgExecuteMessagesResponse) ProtoMessage() {} +func (*MsgExecuteMessagesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{1} +} +func (m *MsgExecuteMessagesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgExecuteMessagesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgExecuteMessagesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgExecuteMessagesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgExecuteMessagesResponse.Merge(m, src) +} +func (m *MsgExecuteMessagesResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgExecuteMessagesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgExecuteMessagesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgExecuteMessagesResponse proto.InternalMessageInfo + +// MsgExecuteLegacyContents is a message to execute legacy +// (gov) contents with validator permission. +type MsgExecuteLegacyContents struct { + // Sender is the that actor that signed a messages + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + // contents are the arbitrary legacy (gov) contents to be executed. + Contents []*types.Any `protobuf:"bytes,2,rep,name=contents,proto3" json:"contents,omitempty"` +} + +func (m *MsgExecuteLegacyContents) Reset() { *m = MsgExecuteLegacyContents{} } +func (m *MsgExecuteLegacyContents) String() string { return proto.CompactTextString(m) } +func (*MsgExecuteLegacyContents) ProtoMessage() {} +func (*MsgExecuteLegacyContents) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{2} +} +func (m *MsgExecuteLegacyContents) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgExecuteLegacyContents) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgExecuteLegacyContents.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgExecuteLegacyContents) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgExecuteLegacyContents.Merge(m, src) +} +func (m *MsgExecuteLegacyContents) XXX_Size() int { + return m.Size() +} +func (m *MsgExecuteLegacyContents) XXX_DiscardUnknown() { + xxx_messageInfo_MsgExecuteLegacyContents.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgExecuteLegacyContents proto.InternalMessageInfo + +// MsgExecuteLegacyContentsResponse returns MsgExecuteLegacyContents message +// result data +type MsgExecuteLegacyContentsResponse struct { +} + +func (m *MsgExecuteLegacyContentsResponse) Reset() { *m = MsgExecuteLegacyContentsResponse{} } +func (m *MsgExecuteLegacyContentsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgExecuteLegacyContentsResponse) ProtoMessage() {} +func (*MsgExecuteLegacyContentsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{3} +} +func (m *MsgExecuteLegacyContentsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgExecuteLegacyContentsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgExecuteLegacyContentsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgExecuteLegacyContentsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgExecuteLegacyContentsResponse.Merge(m, src) +} +func (m *MsgExecuteLegacyContentsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgExecuteLegacyContentsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgExecuteLegacyContentsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgExecuteLegacyContentsResponse proto.InternalMessageInfo + +// MsgDeposit is a message to submit deposit funds from upper layer +type MsgDeposit struct { + // the sender address + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + // from is l1 sender address + From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` + // to is l2 recipient address + To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` + // amount is the coin amount to deposit. + Amount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,4,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount" yaml:"amount"` + // sequence is the sequence number of l1 bridge + Sequence uint64 `protobuf:"varint,5,opt,name=sequence,proto3" json:"sequence,omitempty"` + // height is the height of l1 which is including the deposit message + Height uint64 `protobuf:"varint,6,opt,name=height,proto3" json:"height,omitempty"` + /// data is a extra bytes for hooks. + Data []byte `protobuf:"bytes,7,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *MsgDeposit) Reset() { *m = MsgDeposit{} } +func (m *MsgDeposit) String() string { return proto.CompactTextString(m) } +func (*MsgDeposit) ProtoMessage() {} +func (*MsgDeposit) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{4} +} +func (m *MsgDeposit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeposit.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDeposit) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeposit.Merge(m, src) +} +func (m *MsgDeposit) XXX_Size() int { + return m.Size() +} +func (m *MsgDeposit) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeposit.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeposit proto.InternalMessageInfo + +// MsgDepositResponse returns deposit result data +type MsgDepositResponse struct { +} + +func (m *MsgDepositResponse) Reset() { *m = MsgDepositResponse{} } +func (m *MsgDepositResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDepositResponse) ProtoMessage() {} +func (*MsgDepositResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{5} +} +func (m *MsgDepositResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDepositResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDepositResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDepositResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDepositResponse.Merge(m, src) +} +func (m *MsgDepositResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDepositResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDepositResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDepositResponse proto.InternalMessageInfo + +// MsgWithdraw is a message to withdraw a new token from L2 to L1. +type MsgWithdraw struct { + // the l2 sender address + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + // to is l1 recipient address + To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` + // amount is the coin amount to withdraw. + Amount types1.Coin `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount" yaml:"amount"` +} + +func (m *MsgWithdraw) Reset() { *m = MsgWithdraw{} } +func (m *MsgWithdraw) String() string { return proto.CompactTextString(m) } +func (*MsgWithdraw) ProtoMessage() {} +func (*MsgWithdraw) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{6} +} +func (m *MsgWithdraw) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgWithdraw) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgWithdraw.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgWithdraw) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWithdraw.Merge(m, src) +} +func (m *MsgWithdraw) XXX_Size() int { + return m.Size() +} +func (m *MsgWithdraw) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWithdraw.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgWithdraw proto.InternalMessageInfo + +// MsgWithdrawResponse returns create token result data +type MsgWithdrawResponse struct { + Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"` +} + +func (m *MsgWithdrawResponse) Reset() { *m = MsgWithdrawResponse{} } +func (m *MsgWithdrawResponse) String() string { return proto.CompactTextString(m) } +func (*MsgWithdrawResponse) ProtoMessage() {} +func (*MsgWithdrawResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{7} +} +func (m *MsgWithdrawResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgWithdrawResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgWithdrawResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgWithdrawResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgWithdrawResponse.Merge(m, src) +} +func (m *MsgWithdrawResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgWithdrawResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgWithdrawResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgWithdrawResponse proto.InternalMessageInfo + +// MsgAddValidator defines a SDK message for adding a new validator. +type MsgAddValidator struct { + // authority is the address that controls the module + // (defaults to x/rollup unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` + Moniker string `protobuf:"bytes,2,opt,name=moniker,proto3" json:"moniker,omitempty"` + ValidatorAddress string `protobuf:"bytes,3,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + Pubkey *types.Any `protobuf:"bytes,4,opt,name=pubkey,proto3" json:"pubkey,omitempty"` +} + +func (m *MsgAddValidator) Reset() { *m = MsgAddValidator{} } +func (m *MsgAddValidator) String() string { return proto.CompactTextString(m) } +func (*MsgAddValidator) ProtoMessage() {} +func (*MsgAddValidator) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{8} +} +func (m *MsgAddValidator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddValidator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddValidator.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAddValidator) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddValidator.Merge(m, src) +} +func (m *MsgAddValidator) XXX_Size() int { + return m.Size() +} +func (m *MsgAddValidator) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddValidator.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddValidator proto.InternalMessageInfo + +// MsgAddValidatorResponse returns add result data +type MsgAddValidatorResponse struct { +} + +func (m *MsgAddValidatorResponse) Reset() { *m = MsgAddValidatorResponse{} } +func (m *MsgAddValidatorResponse) String() string { return proto.CompactTextString(m) } +func (*MsgAddValidatorResponse) ProtoMessage() {} +func (*MsgAddValidatorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{9} +} +func (m *MsgAddValidatorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddValidatorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddValidatorResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAddValidatorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddValidatorResponse.Merge(m, src) +} +func (m *MsgAddValidatorResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgAddValidatorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddValidatorResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddValidatorResponse proto.InternalMessageInfo + +// MsgAddValidator is a message to remove a validator from designated list +type MsgRemoveValidator struct { + // authority is the address that controls the module + // (defaults to x/rollup unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` + // validator is the validator to remove. + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` +} + +func (m *MsgRemoveValidator) Reset() { *m = MsgRemoveValidator{} } +func (m *MsgRemoveValidator) String() string { return proto.CompactTextString(m) } +func (*MsgRemoveValidator) ProtoMessage() {} +func (*MsgRemoveValidator) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{10} +} +func (m *MsgRemoveValidator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRemoveValidator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRemoveValidator.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRemoveValidator) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRemoveValidator.Merge(m, src) +} +func (m *MsgRemoveValidator) XXX_Size() int { + return m.Size() +} +func (m *MsgRemoveValidator) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRemoveValidator.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRemoveValidator proto.InternalMessageInfo + +// MsgAddValidatorResponse returns remove result data +type MsgRemoveValidatorResponse struct { +} + +func (m *MsgRemoveValidatorResponse) Reset() { *m = MsgRemoveValidatorResponse{} } +func (m *MsgRemoveValidatorResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRemoveValidatorResponse) ProtoMessage() {} +func (*MsgRemoveValidatorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{11} +} +func (m *MsgRemoveValidatorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRemoveValidatorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRemoveValidatorResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRemoveValidatorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRemoveValidatorResponse.Merge(m, src) +} +func (m *MsgRemoveValidatorResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRemoveValidatorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRemoveValidatorResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRemoveValidatorResponse proto.InternalMessageInfo + +// MsgUpdateParams is a message to update parameters +type MsgUpdateParams struct { + // authority is the address that controls the module + // (defaults to x/op_child unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` + // params are the arbitrary parameters to be updated. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{12} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +// MsgUpdateParamsResponse returns parameter update result data +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{13} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +// MsgSpendFeePool is a message to withdraw collected fees from the module +// account to the recipient address. +type MsgSpendFeePool struct { + // authority is the address that controls the module + // (defaults to x/rollup unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` + // recipient is address to receive the coins. + Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` + // the coin amount to spend. + Amount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,3,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount" yaml:"amount"` +} + +func (m *MsgSpendFeePool) Reset() { *m = MsgSpendFeePool{} } +func (m *MsgSpendFeePool) String() string { return proto.CompactTextString(m) } +func (*MsgSpendFeePool) ProtoMessage() {} +func (*MsgSpendFeePool) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{14} +} +func (m *MsgSpendFeePool) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSpendFeePool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSpendFeePool.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgSpendFeePool) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSpendFeePool.Merge(m, src) +} +func (m *MsgSpendFeePool) XXX_Size() int { + return m.Size() +} +func (m *MsgSpendFeePool) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSpendFeePool.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSpendFeePool proto.InternalMessageInfo + +// MsgSpendFeePoolResponse returns deposit result data +type MsgSpendFeePoolResponse struct { +} + +func (m *MsgSpendFeePoolResponse) Reset() { *m = MsgSpendFeePoolResponse{} } +func (m *MsgSpendFeePoolResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSpendFeePoolResponse) ProtoMessage() {} +func (*MsgSpendFeePoolResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b933e2b7ce00a615, []int{15} +} +func (m *MsgSpendFeePoolResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSpendFeePoolResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSpendFeePoolResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgSpendFeePoolResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSpendFeePoolResponse.Merge(m, src) +} +func (m *MsgSpendFeePoolResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSpendFeePoolResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSpendFeePoolResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSpendFeePoolResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgExecuteMessages)(nil), "op_init.op_child.v1.MsgExecuteMessages") + proto.RegisterType((*MsgExecuteMessagesResponse)(nil), "op_init.op_child.v1.MsgExecuteMessagesResponse") + proto.RegisterType((*MsgExecuteLegacyContents)(nil), "op_init.op_child.v1.MsgExecuteLegacyContents") + proto.RegisterType((*MsgExecuteLegacyContentsResponse)(nil), "op_init.op_child.v1.MsgExecuteLegacyContentsResponse") + proto.RegisterType((*MsgDeposit)(nil), "op_init.op_child.v1.MsgDeposit") + proto.RegisterType((*MsgDepositResponse)(nil), "op_init.op_child.v1.MsgDepositResponse") + proto.RegisterType((*MsgWithdraw)(nil), "op_init.op_child.v1.MsgWithdraw") + proto.RegisterType((*MsgWithdrawResponse)(nil), "op_init.op_child.v1.MsgWithdrawResponse") + proto.RegisterType((*MsgAddValidator)(nil), "op_init.op_child.v1.MsgAddValidator") + proto.RegisterType((*MsgAddValidatorResponse)(nil), "op_init.op_child.v1.MsgAddValidatorResponse") + proto.RegisterType((*MsgRemoveValidator)(nil), "op_init.op_child.v1.MsgRemoveValidator") + proto.RegisterType((*MsgRemoveValidatorResponse)(nil), "op_init.op_child.v1.MsgRemoveValidatorResponse") + proto.RegisterType((*MsgUpdateParams)(nil), "op_init.op_child.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "op_init.op_child.v1.MsgUpdateParamsResponse") + proto.RegisterType((*MsgSpendFeePool)(nil), "op_init.op_child.v1.MsgSpendFeePool") + proto.RegisterType((*MsgSpendFeePoolResponse)(nil), "op_init.op_child.v1.MsgSpendFeePoolResponse") +} + +func init() { proto.RegisterFile("op_init/op_child/v1/tx.proto", fileDescriptor_b933e2b7ce00a615) } + +var fileDescriptor_b933e2b7ce00a615 = []byte{ + // 1064 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x41, 0x6f, 0xdc, 0x44, + 0x14, 0x5e, 0x6f, 0xd2, 0x4d, 0x32, 0x29, 0x4a, 0xeb, 0x2c, 0xd4, 0x71, 0xcb, 0xee, 0x62, 0x2a, + 0x75, 0x09, 0x89, 0xdd, 0x4d, 0x04, 0x87, 0xbd, 0x65, 0x4b, 0x73, 0x80, 0xae, 0x88, 0x36, 0xa2, + 0x48, 0x5c, 0xa2, 0x59, 0x7b, 0xea, 0xb5, 0x76, 0xed, 0x31, 0x9e, 0xd9, 0x25, 0x3e, 0x20, 0x21, + 0x4e, 0x88, 0x13, 0x67, 0x4e, 0xbd, 0x20, 0x21, 0x4e, 0x41, 0xe2, 0x86, 0x80, 0x6b, 0xc4, 0xa9, + 0xe2, 0x02, 0xa7, 0x05, 0x92, 0x43, 0x38, 0xf7, 0x17, 0x20, 0xdb, 0x63, 0xaf, 0xed, 0xd8, 0x71, + 0x5a, 0x15, 0x2e, 0x6d, 0x66, 0xde, 0xf7, 0xde, 0xbc, 0xef, 0x7b, 0x6f, 0xde, 0x78, 0xc1, 0x2d, + 0x6c, 0x1f, 0x18, 0x96, 0x41, 0x15, 0x6c, 0x1f, 0xa8, 0x03, 0x63, 0xa4, 0x29, 0x93, 0x96, 0x42, + 0x0f, 0x65, 0xdb, 0xc1, 0x14, 0xf3, 0xab, 0xcc, 0x2a, 0x87, 0x56, 0x79, 0xd2, 0x12, 0xaf, 0x43, + 0xd3, 0xb0, 0xb0, 0xe2, 0xff, 0x1b, 0xe0, 0xc4, 0x9a, 0x8a, 0x89, 0x89, 0x89, 0xd2, 0x87, 0x04, + 0x29, 0x93, 0x56, 0x1f, 0x51, 0xd8, 0x52, 0x54, 0x6c, 0x58, 0xcc, 0x7e, 0x83, 0xd9, 0x4d, 0xa2, + 0x7b, 0xf1, 0x4d, 0xa2, 0x33, 0xc3, 0x5a, 0x60, 0x38, 0xf0, 0x57, 0x4a, 0xb0, 0x60, 0xa6, 0xaa, + 0x8e, 0x75, 0x1c, 0xec, 0x7b, 0x7f, 0x85, 0x0e, 0x3a, 0xc6, 0xfa, 0x08, 0x29, 0xfe, 0xaa, 0x3f, + 0x7e, 0xa4, 0x40, 0xcb, 0x65, 0xa6, 0x7a, 0x26, 0x15, 0xd7, 0x46, 0x2c, 0xa2, 0xf4, 0x0d, 0x07, + 0xf8, 0x2e, 0xd1, 0xef, 0x1f, 0x22, 0x75, 0x4c, 0x51, 0x17, 0x11, 0x02, 0x75, 0x44, 0xf8, 0xbb, + 0xa0, 0x42, 0x90, 0xa5, 0x21, 0x47, 0xe0, 0x1a, 0x5c, 0x73, 0xa9, 0x23, 0xfc, 0xf6, 0xc3, 0x66, + 0x95, 0xa5, 0xb2, 0xa3, 0x69, 0x0e, 0x22, 0x64, 0x9f, 0x3a, 0x86, 0xa5, 0xf7, 0x18, 0x8e, 0xbf, + 0x0b, 0x16, 0x4d, 0xe6, 0x2d, 0x94, 0x1b, 0x73, 0xcd, 0xe5, 0xad, 0xaa, 0x1c, 0xe4, 0x25, 0x87, + 0x79, 0xc9, 0x3b, 0x96, 0xdb, 0x8b, 0x50, 0xed, 0x37, 0x3f, 0x3f, 0x3b, 0x5a, 0x67, 0xee, 0x5f, + 0x9e, 0x1d, 0xad, 0xdf, 0x8c, 0x72, 0x3c, 0x9f, 0x90, 0x74, 0x0b, 0x88, 0xe7, 0x77, 0x7b, 0x88, + 0xd8, 0xd8, 0x22, 0x48, 0xfa, 0x9e, 0x03, 0xc2, 0xcc, 0xfc, 0x00, 0xe9, 0x50, 0x75, 0xef, 0x61, + 0x8b, 0x22, 0x8b, 0x3e, 0x27, 0x17, 0x95, 0x79, 0x5f, 0xcc, 0x25, 0x44, 0xb5, 0x5b, 0x29, 0x2e, + 0xaf, 0x65, 0x70, 0x49, 0xa6, 0x25, 0x49, 0xa0, 0x91, 0x67, 0x8b, 0x78, 0x7d, 0x3d, 0x07, 0x40, + 0x97, 0xe8, 0xef, 0x20, 0x1b, 0x13, 0x83, 0xf2, 0x3b, 0x29, 0x26, 0x6f, 0x3c, 0x9d, 0xd6, 0x5f, + 0x72, 0xa1, 0x39, 0x6a, 0x4b, 0xc1, 0xbe, 0x54, 0x48, 0x6d, 0x03, 0xcc, 0x3f, 0x72, 0xb0, 0x29, + 0x94, 0x0b, 0xa4, 0xf0, 0x51, 0x7c, 0x13, 0x94, 0x29, 0x16, 0xe6, 0x0a, 0xb0, 0x65, 0x8a, 0x79, + 0x17, 0x54, 0xa0, 0x89, 0xc7, 0x16, 0x15, 0xe6, 0x7d, 0xc1, 0xd6, 0x64, 0x06, 0xf5, 0xda, 0x5f, + 0x66, 0xed, 0x2f, 0xdf, 0xc3, 0x86, 0xd5, 0xd9, 0x3d, 0x9e, 0xd6, 0x4b, 0xb3, 0xcc, 0x03, 0x37, + 0xe9, 0xbb, 0x3f, 0xeb, 0x4d, 0xdd, 0xa0, 0x83, 0x71, 0x5f, 0x56, 0xb1, 0xc9, 0xda, 0x9e, 0xfd, + 0xb7, 0x49, 0xb4, 0x21, 0xeb, 0x5a, 0x2f, 0x02, 0xf9, 0xf6, 0xec, 0x68, 0x9d, 0xeb, 0xb1, 0x03, + 0x79, 0x11, 0x2c, 0x12, 0xf4, 0xf1, 0x18, 0x59, 0x2a, 0x12, 0xae, 0x34, 0xb8, 0xe6, 0x7c, 0x2f, + 0x5a, 0xf3, 0xaf, 0x80, 0xca, 0x00, 0x19, 0xfa, 0x80, 0x0a, 0x15, 0xdf, 0xc2, 0x56, 0xfc, 0xab, + 0x60, 0x5e, 0x83, 0x14, 0x0a, 0x0b, 0x0d, 0xae, 0x79, 0xb5, 0xb3, 0x74, 0x3c, 0xad, 0x73, 0x41, + 0x50, 0x7f, 0xbb, 0xfd, 0x7a, 0xaa, 0x9c, 0xab, 0xf1, 0x72, 0xb2, 0x6a, 0x48, 0x55, 0xff, 0xe6, + 0xb0, 0x55, 0x54, 0xb2, 0x29, 0x07, 0x96, 0xbb, 0x44, 0xff, 0xd0, 0xa0, 0x03, 0xcd, 0x81, 0x9f, + 0x3c, 0x47, 0xf7, 0x05, 0xa2, 0x97, 0x2f, 0x21, 0x7a, 0x37, 0x26, 0x3a, 0x77, 0xb1, 0xe8, 0x62, + 0xa6, 0xe8, 0x09, 0x21, 0xdb, 0xb7, 0x53, 0xac, 0xab, 0x71, 0xd6, 0x21, 0x21, 0xa9, 0x05, 0x56, + 0x63, 0xcb, 0x90, 0x77, 0xa2, 0x0a, 0x5c, 0xb2, 0x0a, 0xd2, 0x8f, 0x65, 0xb0, 0xd2, 0x25, 0xfa, + 0x8e, 0xa6, 0x3d, 0x84, 0x23, 0x43, 0x83, 0x14, 0x3b, 0xfc, 0xbb, 0x60, 0x09, 0x8e, 0xe9, 0x00, + 0x3b, 0x06, 0x75, 0x99, 0x34, 0x1b, 0x4f, 0xa7, 0xf5, 0x6b, 0x2c, 0xbf, 0xd0, 0x94, 0xdf, 0xd1, + 0x33, 0x77, 0x5e, 0x00, 0x0b, 0x26, 0xb6, 0x8c, 0x21, 0x72, 0x02, 0xd9, 0x7a, 0xe1, 0x92, 0xbf, + 0x0f, 0xae, 0x4f, 0xc2, 0x23, 0x0f, 0x60, 0xe0, 0x5f, 0xd8, 0xcf, 0xd7, 0x22, 0x17, 0xb6, 0xcf, + 0xef, 0x82, 0x8a, 0x3d, 0xee, 0x0f, 0x91, 0xcb, 0x84, 0xce, 0x1c, 0x07, 0x1d, 0xe1, 0xd7, 0x59, + 0x44, 0xd5, 0x71, 0x6d, 0x8a, 0xe5, 0xbd, 0x71, 0xff, 0x3d, 0xe4, 0xf6, 0x98, 0x77, 0x7b, 0xfb, + 0x8b, 0xc7, 0xf5, 0xd2, 0x3f, 0x8f, 0xeb, 0x25, 0x4f, 0xe9, 0x19, 0x01, 0x4f, 0x6c, 0x21, 0x2e, + 0x76, 0x5c, 0x29, 0x69, 0x0d, 0xdc, 0x48, 0x6d, 0x45, 0xcd, 0xf6, 0x7b, 0x30, 0xbd, 0x7b, 0xc8, + 0xc4, 0x13, 0xf4, 0xdf, 0x68, 0x9b, 0xa9, 0x60, 0xf9, 0x59, 0x15, 0x6c, 0xcb, 0xe7, 0x19, 0x27, + 0xe6, 0x7d, 0x8a, 0x02, 0x9b, 0xf7, 0xa9, 0xdd, 0x88, 0xf7, 0x2f, 0x9c, 0xdf, 0x50, 0x1f, 0xd8, + 0x1a, 0xa4, 0x68, 0x0f, 0x3a, 0xd0, 0x24, 0x2f, 0x94, 0xf4, 0x36, 0xa8, 0xd8, 0x7e, 0x54, 0x9f, + 0xe9, 0xf2, 0xd6, 0x4d, 0x39, 0xe3, 0xd1, 0x97, 0x83, 0x83, 0x7b, 0x0c, 0x1a, 0xbc, 0x67, 0x17, + 0x14, 0x35, 0x9e, 0x2d, 0x2b, 0x6a, 0x7c, 0x2b, 0x22, 0xf7, 0x53, 0x70, 0x5b, 0xf6, 0x6d, 0x64, + 0x69, 0xbb, 0x08, 0xed, 0x61, 0x3c, 0x7a, 0xa1, 0xe4, 0xde, 0x06, 0x4b, 0x0e, 0x52, 0x0d, 0xdb, + 0x40, 0x16, 0x2d, 0xac, 0xe4, 0x0c, 0x1a, 0x1b, 0xf1, 0x73, 0xff, 0xf3, 0x88, 0x2f, 0x94, 0x36, + 0xae, 0x15, 0x93, 0x36, 0xbe, 0x15, 0x4a, 0xbb, 0xf5, 0x73, 0x05, 0xcc, 0x75, 0x89, 0xce, 0x0f, + 0xc1, 0x4a, 0xfa, 0x8b, 0xe7, 0x4e, 0x66, 0x89, 0xcf, 0x7f, 0x73, 0x88, 0xca, 0x25, 0x81, 0xd1, + 0x64, 0xfc, 0x14, 0xbc, 0x9c, 0xfd, 0x61, 0xb2, 0x59, 0x10, 0x29, 0x09, 0x17, 0xdf, 0x7a, 0x26, + 0x78, 0x74, 0xfc, 0x3e, 0x58, 0x08, 0xbf, 0x1f, 0xea, 0x79, 0x11, 0x18, 0x40, 0xbc, 0x53, 0x00, + 0x88, 0x82, 0x3e, 0x04, 0x8b, 0xd1, 0x0b, 0xd7, 0xc8, 0x73, 0x0a, 0x11, 0x62, 0xb3, 0x08, 0x11, + 0xc5, 0xed, 0x83, 0xab, 0x89, 0x57, 0xe2, 0x76, 0x9e, 0x67, 0x1c, 0x25, 0x6e, 0x5c, 0x06, 0x15, + 0x9d, 0x31, 0x04, 0x2b, 0xe9, 0x81, 0x99, 0xcb, 0x3b, 0x05, 0xcc, 0x2f, 0x7e, 0xce, 0xa4, 0xf2, + 0x08, 0x25, 0xa6, 0x54, 0x2e, 0xa1, 0x38, 0x2a, 0x9f, 0x50, 0xd6, 0xc0, 0xf0, 0xce, 0x48, 0x0c, + 0x8b, 0xdc, 0x33, 0xe2, 0xa8, 0xfc, 0x33, 0xb2, 0x6e, 0x8e, 0x78, 0xe5, 0x33, 0xef, 0x42, 0x76, + 0x1e, 0x1c, 0xff, 0x5d, 0x2b, 0x1d, 0x9f, 0xd4, 0xb8, 0x27, 0x27, 0x35, 0xee, 0xaf, 0x93, 0x1a, + 0xf7, 0xd5, 0x69, 0xad, 0xf4, 0xe4, 0xb4, 0x56, 0xfa, 0xe3, 0xb4, 0x56, 0xfa, 0x48, 0x8e, 0xdd, + 0x6e, 0x2f, 0xb2, 0x01, 0x37, 0x47, 0xb0, 0x4f, 0x94, 0xf7, 0xf7, 0xfc, 0xdf, 0x20, 0x87, 0xb3, + 0x5f, 0x21, 0xfe, 0x4d, 0xef, 0x57, 0xfc, 0xe7, 0x73, 0xfb, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x0e, 0x82, 0x34, 0x1e, 0x71, 0x0d, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // ExecuteMessages defines a rpc handler method for MsgExecuteMessages. + ExecuteMessages(ctx context.Context, in *MsgExecuteMessages, opts ...grpc.CallOption) (*MsgExecuteMessagesResponse, error) + // ExecuteLegacyContents defines a rpc handler method for + // MsgExecuteLegacyContents. + ExecuteLegacyContents(ctx context.Context, in *MsgExecuteLegacyContents, opts ...grpc.CallOption) (*MsgExecuteLegacyContentsResponse, error) + // Deposit defines a rpc handler method for MsgDeposit. + Deposit(ctx context.Context, in *MsgDeposit, opts ...grpc.CallOption) (*MsgDepositResponse, error) + // Withdraw defines a user facing l2 => l1 token transfer interface. + Withdraw(ctx context.Context, in *MsgWithdraw, opts ...grpc.CallOption) (*MsgWithdrawResponse, error) + // AddValidator defines a rpc handler method for MsgAddValidator. + AddValidator(ctx context.Context, in *MsgAddValidator, opts ...grpc.CallOption) (*MsgAddValidatorResponse, error) + // RemoveValidator defines a rpc handler method for MsgRemoveValidator. + RemoveValidator(ctx context.Context, in *MsgRemoveValidator, opts ...grpc.CallOption) (*MsgRemoveValidatorResponse, error) + // UpdateParams defines an operation for updating the + // x/rollup module parameters. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // SpendFeePool defines an operation that spend fee pool to a recipient. + SpendFeePool(ctx context.Context, in *MsgSpendFeePool, opts ...grpc.CallOption) (*MsgSpendFeePoolResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) ExecuteMessages(ctx context.Context, in *MsgExecuteMessages, opts ...grpc.CallOption) (*MsgExecuteMessagesResponse, error) { + out := new(MsgExecuteMessagesResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/ExecuteMessages", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ExecuteLegacyContents(ctx context.Context, in *MsgExecuteLegacyContents, opts ...grpc.CallOption) (*MsgExecuteLegacyContentsResponse, error) { + out := new(MsgExecuteLegacyContentsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/ExecuteLegacyContents", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) Deposit(ctx context.Context, in *MsgDeposit, opts ...grpc.CallOption) (*MsgDepositResponse, error) { + out := new(MsgDepositResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/Deposit", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) Withdraw(ctx context.Context, in *MsgWithdraw, opts ...grpc.CallOption) (*MsgWithdrawResponse, error) { + out := new(MsgWithdrawResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/Withdraw", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) AddValidator(ctx context.Context, in *MsgAddValidator, opts ...grpc.CallOption) (*MsgAddValidatorResponse, error) { + out := new(MsgAddValidatorResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/AddValidator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) RemoveValidator(ctx context.Context, in *MsgRemoveValidator, opts ...grpc.CallOption) (*MsgRemoveValidatorResponse, error) { + out := new(MsgRemoveValidatorResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/RemoveValidator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SpendFeePool(ctx context.Context, in *MsgSpendFeePool, opts ...grpc.CallOption) (*MsgSpendFeePoolResponse, error) { + out := new(MsgSpendFeePoolResponse) + err := c.cc.Invoke(ctx, "/op_init.op_child.v1.Msg/SpendFeePool", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // ExecuteMessages defines a rpc handler method for MsgExecuteMessages. + ExecuteMessages(context.Context, *MsgExecuteMessages) (*MsgExecuteMessagesResponse, error) + // ExecuteLegacyContents defines a rpc handler method for + // MsgExecuteLegacyContents. + ExecuteLegacyContents(context.Context, *MsgExecuteLegacyContents) (*MsgExecuteLegacyContentsResponse, error) + // Deposit defines a rpc handler method for MsgDeposit. + Deposit(context.Context, *MsgDeposit) (*MsgDepositResponse, error) + // Withdraw defines a user facing l2 => l1 token transfer interface. + Withdraw(context.Context, *MsgWithdraw) (*MsgWithdrawResponse, error) + // AddValidator defines a rpc handler method for MsgAddValidator. + AddValidator(context.Context, *MsgAddValidator) (*MsgAddValidatorResponse, error) + // RemoveValidator defines a rpc handler method for MsgRemoveValidator. + RemoveValidator(context.Context, *MsgRemoveValidator) (*MsgRemoveValidatorResponse, error) + // UpdateParams defines an operation for updating the + // x/rollup module parameters. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // SpendFeePool defines an operation that spend fee pool to a recipient. + SpendFeePool(context.Context, *MsgSpendFeePool) (*MsgSpendFeePoolResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) ExecuteMessages(ctx context.Context, req *MsgExecuteMessages) (*MsgExecuteMessagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ExecuteMessages not implemented") +} +func (*UnimplementedMsgServer) ExecuteLegacyContents(ctx context.Context, req *MsgExecuteLegacyContents) (*MsgExecuteLegacyContentsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ExecuteLegacyContents not implemented") +} +func (*UnimplementedMsgServer) Deposit(ctx context.Context, req *MsgDeposit) (*MsgDepositResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Deposit not implemented") +} +func (*UnimplementedMsgServer) Withdraw(ctx context.Context, req *MsgWithdraw) (*MsgWithdrawResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Withdraw not implemented") +} +func (*UnimplementedMsgServer) AddValidator(ctx context.Context, req *MsgAddValidator) (*MsgAddValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddValidator not implemented") +} +func (*UnimplementedMsgServer) RemoveValidator(ctx context.Context, req *MsgRemoveValidator) (*MsgRemoveValidatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveValidator not implemented") +} +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (*UnimplementedMsgServer) SpendFeePool(ctx context.Context, req *MsgSpendFeePool) (*MsgSpendFeePoolResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SpendFeePool not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_ExecuteMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgExecuteMessages) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ExecuteMessages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/ExecuteMessages", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ExecuteMessages(ctx, req.(*MsgExecuteMessages)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ExecuteLegacyContents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgExecuteLegacyContents) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ExecuteLegacyContents(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/ExecuteLegacyContents", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ExecuteLegacyContents(ctx, req.(*MsgExecuteLegacyContents)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_Deposit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeposit) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).Deposit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/Deposit", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Deposit(ctx, req.(*MsgDeposit)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_Withdraw_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgWithdraw) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).Withdraw(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/Withdraw", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Withdraw(ctx, req.(*MsgWithdraw)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_AddValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAddValidator) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AddValidator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/AddValidator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AddValidator(ctx, req.(*MsgAddValidator)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_RemoveValidator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRemoveValidator) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RemoveValidator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/RemoveValidator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RemoveValidator(ctx, req.(*MsgRemoveValidator)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SpendFeePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSpendFeePool) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SpendFeePool(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_child.v1.Msg/SpendFeePool", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SpendFeePool(ctx, req.(*MsgSpendFeePool)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "op_init.op_child.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ExecuteMessages", + Handler: _Msg_ExecuteMessages_Handler, + }, + { + MethodName: "ExecuteLegacyContents", + Handler: _Msg_ExecuteLegacyContents_Handler, + }, + { + MethodName: "Deposit", + Handler: _Msg_Deposit_Handler, + }, + { + MethodName: "Withdraw", + Handler: _Msg_Withdraw_Handler, + }, + { + MethodName: "AddValidator", + Handler: _Msg_AddValidator_Handler, + }, + { + MethodName: "RemoveValidator", + Handler: _Msg_RemoveValidator_Handler, + }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "SpendFeePool", + Handler: _Msg_SpendFeePool_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "op_init/op_child/v1/tx.proto", +} + +func (m *MsgExecuteMessages) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgExecuteMessages) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgExecuteMessages) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Messages) > 0 { + for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Messages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgExecuteMessagesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgExecuteMessagesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgExecuteMessagesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgExecuteLegacyContents) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgExecuteLegacyContents) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgExecuteLegacyContents) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Contents) > 0 { + for iNdEx := len(m.Contents) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Contents[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgExecuteLegacyContentsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgExecuteLegacyContentsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgExecuteLegacyContentsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDeposit) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDeposit) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeposit) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintTx(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0x3a + } + if m.Height != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x30 + } + if m.Sequence != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Sequence)) + i-- + dAtA[i] = 0x28 + } + if len(m.Amount) > 0 { + for iNdEx := len(m.Amount) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Amount[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.To) > 0 { + i -= len(m.To) + copy(dAtA[i:], m.To) + i = encodeVarintTx(dAtA, i, uint64(len(m.To))) + i-- + dAtA[i] = 0x1a + } + if len(m.From) > 0 { + i -= len(m.From) + copy(dAtA[i:], m.From) + i = encodeVarintTx(dAtA, i, uint64(len(m.From))) + i-- + dAtA[i] = 0x12 + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDepositResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDepositResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDepositResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgWithdraw) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgWithdraw) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgWithdraw) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.To) > 0 { + i -= len(m.To) + copy(dAtA[i:], m.To) + i = encodeVarintTx(dAtA, i, uint64(len(m.To))) + i-- + dAtA[i] = 0x12 + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgWithdrawResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgWithdrawResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgWithdrawResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Sequence != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Sequence)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgAddValidator) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAddValidator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pubkey != nil { + { + size, err := m.Pubkey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x1a + } + if len(m.Moniker) > 0 { + i -= len(m.Moniker) + copy(dAtA[i:], m.Moniker) + i = encodeVarintTx(dAtA, i, uint64(len(m.Moniker))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgAddValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAddValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgRemoveValidator) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRemoveValidator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRemoveValidator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRemoveValidatorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRemoveValidatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRemoveValidatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Params != nil { + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgSpendFeePool) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgSpendFeePool) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSpendFeePool) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Amount) > 0 { + for iNdEx := len(m.Amount) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Amount[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.Recipient) > 0 { + i -= len(m.Recipient) + copy(dAtA[i:], m.Recipient) + i = encodeVarintTx(dAtA, i, uint64(len(m.Recipient))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSpendFeePoolResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgSpendFeePoolResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSpendFeePoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgExecuteMessages) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Messages) > 0 { + for _, e := range m.Messages { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgExecuteMessagesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgExecuteLegacyContents) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Contents) > 0 { + for _, e := range m.Contents { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgExecuteLegacyContentsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgDeposit) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.From) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.To) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Amount) > 0 { + for _, e := range m.Amount { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.Sequence != 0 { + n += 1 + sovTx(uint64(m.Sequence)) + } + if m.Height != 0 { + n += 1 + sovTx(uint64(m.Height)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgDepositResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgWithdraw) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.To) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgWithdrawResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Sequence != 0 { + n += 1 + sovTx(uint64(m.Sequence)) + } + return n +} + +func (m *MsgAddValidator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Moniker) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Pubkey != nil { + l = m.Pubkey.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgAddValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgRemoveValidator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRemoveValidatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Params != nil { + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgSpendFeePool) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Recipient) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Amount) > 0 { + for _, e := range m.Amount { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSpendFeePoolResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgExecuteMessages) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgExecuteMessages: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgExecuteMessages: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Messages", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Messages = append(m.Messages, &types.Any{}) + if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgExecuteMessagesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgExecuteMessagesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgExecuteMessagesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgExecuteLegacyContents) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgExecuteLegacyContents: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgExecuteLegacyContents: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Contents", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Contents = append(m.Contents, &types.Any{}) + if err := m.Contents[len(m.Contents)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgExecuteLegacyContentsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgExecuteLegacyContentsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgExecuteLegacyContentsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDeposit) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDeposit: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeposit: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field To", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.To = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Amount = append(m.Amount, types1.Coin{}) + if err := m.Amount[len(m.Amount)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + m.Sequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Sequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDepositResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDepositResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDepositResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgWithdraw) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgWithdraw: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgWithdraw: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field To", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.To = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgWithdrawResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgWithdrawResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgWithdrawResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + m.Sequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Sequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgAddValidator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAddValidator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddValidator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Moniker", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Moniker = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pubkey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pubkey == nil { + m.Pubkey = &types.Any{} + } + if err := m.Pubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgAddValidatorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAddValidatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRemoveValidator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRemoveValidator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRemoveValidator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRemoveValidatorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRemoveValidatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRemoveValidatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Params == nil { + m.Params = &Params{} + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgSpendFeePool) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgSpendFeePool: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSpendFeePool: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Recipient", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Recipient = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Amount = append(m.Amount, types1.Coin{}) + if err := m.Amount[len(m.Amount)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgSpendFeePoolResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgSpendFeePoolResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSpendFeePoolResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/op_child/types/types.pb.go b/x/op_child/types/types.pb.go new file mode 100644 index 00000000..e21c2f9e --- /dev/null +++ b/x/op_child/types/types.pb.go @@ -0,0 +1,1207 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_child/v1/types.proto + +package types + +import ( + fmt "fmt" + types3 "github.com/cometbft/cometbft/abci/types" + types1 "github.com/cometbft/cometbft/proto/tendermint/types" + _ "github.com/cosmos/cosmos-proto" + types2 "github.com/cosmos/cosmos-sdk/codec/types" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Params defines the set of move parameters. +type Params struct { + // max_validators is the maximum number of validators. + MaxValidators uint32 `protobuf:"varint,1,opt,name=max_validators,json=maxValidators,proto3" json:"max_validators,omitempty" yaml:"max_validators"` + // historical_entries is the number of historical entries to persist. + HistoricalEntries uint32 `protobuf:"varint,2,opt,name=historical_entries,json=historicalEntries,proto3" json:"historical_entries,omitempty" yaml:"historical_entries"` + MinGasPrices github_com_cosmos_cosmos_sdk_types.DecCoins `protobuf:"bytes,3,rep,name=min_gas_prices,json=minGasPrices,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.DecCoins" json:"min_gas_prices" yaml:"min_gas_price"` + // the account address of bridge executor who can execute permissioned bridge + // messages. + BridgeExecutor string `protobuf:"bytes,4,opt,name=bridge_executor,json=bridgeExecutor,proto3" json:"bridge_executor,omitempty" yaml:"bridge_executor"` +} + +func (m *Params) Reset() { *m = Params{} } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_896305d0b0d964e6, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +// HistoricalInfo contains header and validator information for a given block. +// It is stored as part of rollup module's state, which persists the `n` most +// recent HistoricalInfo +// (`n` is set by the rollup module's `historical_entries` parameter). +type HistoricalInfo struct { + Header types1.Header `protobuf:"bytes,1,opt,name=header,proto3" json:"header"` + Valset []Validator `protobuf:"bytes,2,rep,name=valset,proto3" json:"valset"` +} + +func (m *HistoricalInfo) Reset() { *m = HistoricalInfo{} } +func (m *HistoricalInfo) String() string { return proto.CompactTextString(m) } +func (*HistoricalInfo) ProtoMessage() {} +func (*HistoricalInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_896305d0b0d964e6, []int{1} +} +func (m *HistoricalInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HistoricalInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HistoricalInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HistoricalInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_HistoricalInfo.Merge(m, src) +} +func (m *HistoricalInfo) XXX_Size() int { + return m.Size() +} +func (m *HistoricalInfo) XXX_DiscardUnknown() { + xxx_messageInfo_HistoricalInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_HistoricalInfo proto.InternalMessageInfo + +// Validator defines a validator, together with the total amount of the +// Validator's bond shares and their exchange rate to coins. Slashing results in +// a decrease in the exchange rate, allowing correct calculation of future +// undelegations without iterating over delegators. When coins are delegated to +// this validator, the validator is credited with a delegation whose number of +// bond shares is based on the amount of coins delegated divided by the current +// exchange rate. Voting power can be calculated as total bonded shares +// multiplied by exchange rate. +type Validator struct { + Moniker string `protobuf:"bytes,1,opt,name=moniker,proto3" json:"moniker,omitempty" yaml:"moniker"` + // operator_address defines the address of the validator's operator; + // bech encoded in JSON. + OperatorAddress string `protobuf:"bytes,2,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty" yaml:"operator_address"` + // consensus_pubkey is the consensus public key of the validator, + // as a Protobuf Any. + ConsensusPubkey *types2.Any `protobuf:"bytes,3,opt,name=consensus_pubkey,json=consensusPubkey,proto3" json:"consensus_pubkey,omitempty" yaml:"consensus_pubkey"` + ConsPower int64 `protobuf:"varint,4,opt,name=cons_power,json=consPower,proto3" json:"cons_power,omitempty" yaml:"cons_power"` +} + +func (m *Validator) Reset() { *m = Validator{} } +func (*Validator) ProtoMessage() {} +func (*Validator) Descriptor() ([]byte, []int) { + return fileDescriptor_896305d0b0d964e6, []int{2} +} +func (m *Validator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Validator.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Validator) XXX_Merge(src proto.Message) { + xxx_messageInfo_Validator.Merge(m, src) +} +func (m *Validator) XXX_Size() int { + return m.Size() +} +func (m *Validator) XXX_DiscardUnknown() { + xxx_messageInfo_Validator.DiscardUnknown(m) +} + +var xxx_messageInfo_Validator proto.InternalMessageInfo + +// ValidatorUpdates defines an array of abci.ValidatorUpdate objects. +// TODO: explore moving this to proto/cosmos/base to separate modules +// from tendermint dependence +type ValidatorUpdates struct { + Updates []types3.ValidatorUpdate `protobuf:"bytes,1,rep,name=updates,proto3" json:"updates"` +} + +func (m *ValidatorUpdates) Reset() { *m = ValidatorUpdates{} } +func (m *ValidatorUpdates) String() string { return proto.CompactTextString(m) } +func (*ValidatorUpdates) ProtoMessage() {} +func (*ValidatorUpdates) Descriptor() ([]byte, []int) { + return fileDescriptor_896305d0b0d964e6, []int{3} +} +func (m *ValidatorUpdates) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorUpdates) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorUpdates.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorUpdates) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorUpdates.Merge(m, src) +} +func (m *ValidatorUpdates) XXX_Size() int { + return m.Size() +} +func (m *ValidatorUpdates) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorUpdates.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorUpdates proto.InternalMessageInfo + +func init() { + proto.RegisterType((*Params)(nil), "op_init.op_child.v1.Params") + proto.RegisterType((*HistoricalInfo)(nil), "op_init.op_child.v1.HistoricalInfo") + proto.RegisterType((*Validator)(nil), "op_init.op_child.v1.Validator") + proto.RegisterType((*ValidatorUpdates)(nil), "op_init.op_child.v1.ValidatorUpdates") +} + +func init() { proto.RegisterFile("op_init/op_child/v1/types.proto", fileDescriptor_896305d0b0d964e6) } + +var fileDescriptor_896305d0b0d964e6 = []byte{ + // 769 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x54, 0xcf, 0x8f, 0xdb, 0x44, + 0x14, 0xb6, 0x37, 0xd5, 0x56, 0x99, 0xb6, 0xc9, 0xae, 0x49, 0xc1, 0xbb, 0x5d, 0xec, 0xc8, 0xa7, + 0x55, 0x61, 0xc7, 0x4a, 0x8b, 0x84, 0x14, 0x2e, 0xac, 0x61, 0xa1, 0xa8, 0x48, 0x44, 0x46, 0x70, + 0xe0, 0x62, 0xc6, 0xf6, 0xd4, 0x19, 0x6d, 0x3c, 0x63, 0x79, 0x26, 0x21, 0xf9, 0x0f, 0x10, 0x17, + 0x38, 0x21, 0x8e, 0x39, 0x56, 0x3d, 0xf5, 0xc0, 0x8d, 0x7f, 0x60, 0xc5, 0xa9, 0xe2, 0xc4, 0xc9, + 0x40, 0xf6, 0xd0, 0x9e, 0xf3, 0x17, 0x20, 0xcf, 0x4c, 0x7e, 0x34, 0x70, 0x49, 0xe6, 0xbd, 0xef, + 0x7b, 0x6f, 0xc6, 0xdf, 0xf7, 0x66, 0x80, 0xcb, 0x8a, 0x88, 0x50, 0x22, 0x7c, 0x56, 0x44, 0xc9, + 0x90, 0x8c, 0x52, 0x7f, 0xd2, 0xf3, 0xc5, 0xac, 0xc0, 0x1c, 0x16, 0x25, 0x13, 0xcc, 0x7a, 0x43, + 0x13, 0xe0, 0x8a, 0x00, 0x27, 0xbd, 0xe3, 0x43, 0x94, 0x13, 0xca, 0x7c, 0xf9, 0xab, 0x78, 0xc7, + 0x4e, 0xc2, 0x78, 0xce, 0xb8, 0x1f, 0x23, 0x8e, 0xfd, 0x49, 0x2f, 0xc6, 0x02, 0xf5, 0xfc, 0x84, + 0x11, 0xaa, 0xf1, 0x23, 0x85, 0x47, 0x32, 0xf2, 0x55, 0xa0, 0xa1, 0x4e, 0xc6, 0x32, 0xa6, 0xf2, + 0xf5, 0x6a, 0x55, 0x90, 0x31, 0x96, 0x8d, 0xb0, 0x2f, 0xa3, 0x78, 0xfc, 0xc4, 0x47, 0x74, 0xa6, + 0xa1, 0x7b, 0x02, 0xd3, 0x14, 0x97, 0x39, 0xa1, 0xc2, 0x47, 0x71, 0x42, 0xb6, 0x0f, 0x7c, 0x7c, + 0xb2, 0x05, 0xca, 0xfc, 0x36, 0xea, 0x3d, 0x6b, 0x80, 0xfd, 0x01, 0x2a, 0x51, 0xce, 0xad, 0x0f, + 0x41, 0x2b, 0x47, 0xd3, 0x68, 0x82, 0x46, 0x24, 0x45, 0x82, 0x95, 0xdc, 0x36, 0xbb, 0xe6, 0xe9, + 0x9d, 0xe0, 0x68, 0x59, 0xb9, 0x77, 0x67, 0x28, 0x1f, 0xf5, 0xbd, 0xd7, 0x71, 0x2f, 0xbc, 0x93, + 0xa3, 0xe9, 0xd7, 0xeb, 0xd8, 0xfa, 0x1c, 0x58, 0x43, 0xc2, 0x05, 0x2b, 0x49, 0x82, 0x46, 0x11, + 0xa6, 0xa2, 0x24, 0x98, 0xdb, 0x7b, 0xb2, 0xcb, 0xdb, 0xcb, 0xca, 0x3d, 0x52, 0x5d, 0xfe, 0xcb, + 0xf1, 0xc2, 0xc3, 0x4d, 0xf2, 0x42, 0xe5, 0xac, 0x1f, 0x4d, 0xd0, 0xca, 0x09, 0x8d, 0x32, 0x54, + 0xab, 0x44, 0x12, 0xcc, 0xed, 0x46, 0xb7, 0x71, 0x7a, 0xeb, 0xc1, 0x09, 0xd4, 0x72, 0xd5, 0xda, + 0x42, 0xad, 0x2d, 0xfc, 0x18, 0x27, 0x1f, 0x31, 0x42, 0x83, 0xc7, 0x57, 0x95, 0x6b, 0x2c, 0x2b, + 0xb7, 0xa3, 0x8f, 0xbc, 0xdd, 0xc1, 0x7b, 0xf6, 0x97, 0xfb, 0x4e, 0x46, 0xc4, 0x70, 0x1c, 0xc3, + 0x84, 0xe5, 0x5a, 0x76, 0xfd, 0x77, 0xc6, 0xd3, 0x4b, 0xad, 0x8d, 0xee, 0xc5, 0xc3, 0xdb, 0x39, + 0xa1, 0x9f, 0x22, 0x3e, 0x90, 0xdb, 0x5b, 0xdf, 0x82, 0x76, 0x5c, 0x92, 0x34, 0xc3, 0x11, 0x9e, + 0xe2, 0x64, 0x2c, 0x58, 0x69, 0xdf, 0xe8, 0x9a, 0xa7, 0xcd, 0xe0, 0xfd, 0x65, 0xe5, 0xbe, 0xa9, + 0xf6, 0xdb, 0x21, 0x78, 0x7f, 0xfc, 0x7a, 0xd6, 0xd1, 0xc7, 0x3d, 0x4f, 0xd3, 0x12, 0x73, 0xfe, + 0xa5, 0x28, 0x09, 0xcd, 0x9e, 0xbe, 0x7c, 0x7e, 0xdf, 0x0c, 0x5b, 0x8a, 0x7e, 0xa1, 0xd9, 0xfd, + 0x93, 0x5f, 0xe6, 0xae, 0xf1, 0x6a, 0xee, 0x9a, 0x3f, 0xbc, 0x7c, 0x7e, 0xbf, 0xbd, 0x9e, 0x41, + 0xe5, 0x90, 0xf7, 0xb3, 0x09, 0x5a, 0x8f, 0xd6, 0x3a, 0x7d, 0x46, 0x9f, 0x30, 0xeb, 0x03, 0xb0, + 0x3f, 0xc4, 0x28, 0xc5, 0xa5, 0x34, 0xeb, 0xd6, 0x03, 0x1b, 0x6e, 0xec, 0x86, 0xea, 0x63, 0x1e, + 0x49, 0x3c, 0x68, 0xd6, 0xba, 0xa8, 0x5d, 0x75, 0x89, 0x75, 0x0e, 0xf6, 0x27, 0x68, 0xc4, 0xb1, + 0xb0, 0xf7, 0xa4, 0xb0, 0x0e, 0xfc, 0x9f, 0xe1, 0x86, 0x6b, 0x83, 0x5f, 0x6b, 0xa1, 0x0a, 0xfb, + 0x37, 0x5e, 0xcd, 0x5d, 0xc3, 0xfb, 0x6d, 0x0f, 0x34, 0xd7, 0x34, 0xeb, 0x5d, 0x70, 0x33, 0x67, + 0x94, 0x5c, 0xea, 0x43, 0x35, 0x03, 0x6b, 0x59, 0xb9, 0x2d, 0x6d, 0x87, 0x02, 0xbc, 0x70, 0x45, + 0xb1, 0x3e, 0x01, 0x07, 0xac, 0xc0, 0x65, 0x5d, 0x19, 0x21, 0xa5, 0x90, 0x1c, 0x99, 0x66, 0x70, + 0x6f, 0x59, 0xb9, 0x6f, 0xa9, 0xb2, 0x5d, 0x86, 0x17, 0xb6, 0x57, 0x29, 0xad, 0xaa, 0x25, 0xc0, + 0x41, 0xc2, 0x28, 0xc7, 0x94, 0x8f, 0x79, 0x54, 0x8c, 0xe3, 0x4b, 0x3c, 0xb3, 0x1b, 0x52, 0x93, + 0x0e, 0x54, 0x57, 0x07, 0xae, 0xae, 0x0e, 0x3c, 0xa7, 0xb3, 0xe0, 0xe1, 0xa6, 0xfb, 0x6e, 0x9d, + 0xf7, 0xfb, 0xc6, 0xb4, 0xa4, 0x9c, 0x15, 0x82, 0xc1, 0xc1, 0x38, 0x7e, 0x8c, 0x67, 0x61, 0x7b, + 0x4d, 0x1d, 0x48, 0xa6, 0xf5, 0x1e, 0x00, 0x75, 0x2a, 0x2a, 0xd8, 0x77, 0x58, 0x4d, 0x43, 0x23, + 0xb8, 0xbb, 0xac, 0xdc, 0xc3, 0x4d, 0x67, 0x85, 0x79, 0x61, 0xb3, 0x0e, 0x06, 0xf5, 0xba, 0x7f, + 0xfb, 0xfb, 0xb9, 0x6b, 0x68, 0xab, 0x0d, 0x2f, 0x02, 0x07, 0x6b, 0xf1, 0xbe, 0x2a, 0x52, 0x24, + 0x30, 0xb7, 0x2e, 0xc0, 0xcd, 0xb1, 0x5a, 0xda, 0xa6, 0xf4, 0xa6, 0xbb, 0x6d, 0x6c, 0x7d, 0xc9, + 0xe1, 0x4e, 0xcd, 0xb6, 0x3b, 0xab, 0x5a, 0x65, 0x4f, 0x30, 0xb8, 0xfa, 0xc7, 0x31, 0x9e, 0x2e, + 0x1c, 0xf3, 0x6a, 0xe1, 0x98, 0x2f, 0x16, 0x8e, 0xf9, 0xf7, 0xc2, 0x31, 0x7f, 0xba, 0x76, 0x8c, + 0x17, 0xd7, 0x8e, 0xf1, 0xe7, 0xb5, 0x63, 0x7c, 0x03, 0xb7, 0x2e, 0x45, 0x3d, 0x00, 0x04, 0x9d, + 0x8d, 0x50, 0xcc, 0xfd, 0x2f, 0x06, 0xf2, 0x31, 0x9c, 0x6e, 0x9e, 0x43, 0x39, 0x53, 0xf1, 0xbe, + 0x94, 0xf2, 0xe1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x39, 0x16, 0x1d, 0xa8, 0x2f, 0x05, 0x00, + 0x00, +} + +func (this *Params) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Params) + if !ok { + that2, ok := that.(Params) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.MaxValidators != that1.MaxValidators { + return false + } + if this.HistoricalEntries != that1.HistoricalEntries { + return false + } + if len(this.MinGasPrices) != len(that1.MinGasPrices) { + return false + } + for i := range this.MinGasPrices { + if !this.MinGasPrices[i].Equal(&that1.MinGasPrices[i]) { + return false + } + } + if this.BridgeExecutor != that1.BridgeExecutor { + return false + } + return true +} +func (m *Params) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.BridgeExecutor) > 0 { + i -= len(m.BridgeExecutor) + copy(dAtA[i:], m.BridgeExecutor) + i = encodeVarintTypes(dAtA, i, uint64(len(m.BridgeExecutor))) + i-- + dAtA[i] = 0x22 + } + if len(m.MinGasPrices) > 0 { + for iNdEx := len(m.MinGasPrices) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MinGasPrices[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.HistoricalEntries != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.HistoricalEntries)) + i-- + dAtA[i] = 0x10 + } + if m.MaxValidators != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.MaxValidators)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *HistoricalInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HistoricalInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *HistoricalInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Valset) > 0 { + for iNdEx := len(m.Valset) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Valset[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size, err := m.Header.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *Validator) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Validator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ConsPower != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.ConsPower)) + i-- + dAtA[i] = 0x20 + } + if m.ConsensusPubkey != nil { + { + size, err := m.ConsensusPubkey.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.OperatorAddress) > 0 { + i -= len(m.OperatorAddress) + copy(dAtA[i:], m.OperatorAddress) + i = encodeVarintTypes(dAtA, i, uint64(len(m.OperatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.Moniker) > 0 { + i -= len(m.Moniker) + copy(dAtA[i:], m.Moniker) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Moniker))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ValidatorUpdates) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ValidatorUpdates) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ValidatorUpdates) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Updates) > 0 { + for iNdEx := len(m.Updates) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Updates[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintTypes(dAtA []byte, offset int, v uint64) int { + offset -= sovTypes(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.MaxValidators != 0 { + n += 1 + sovTypes(uint64(m.MaxValidators)) + } + if m.HistoricalEntries != 0 { + n += 1 + sovTypes(uint64(m.HistoricalEntries)) + } + if len(m.MinGasPrices) > 0 { + for _, e := range m.MinGasPrices { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + l = len(m.BridgeExecutor) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + +func (m *HistoricalInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Header.Size() + n += 1 + l + sovTypes(uint64(l)) + if len(m.Valset) > 0 { + for _, e := range m.Valset { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + return n +} + +func (m *Validator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Moniker) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.OperatorAddress) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.ConsensusPubkey != nil { + l = m.ConsensusPubkey.Size() + n += 1 + l + sovTypes(uint64(l)) + } + if m.ConsPower != 0 { + n += 1 + sovTypes(uint64(m.ConsPower)) + } + return n +} + +func (m *ValidatorUpdates) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Updates) > 0 { + for _, e := range m.Updates { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + return n +} + +func sovTypes(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTypes(x uint64) (n int) { + return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxValidators", wireType) + } + m.MaxValidators = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxValidators |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HistoricalEntries", wireType) + } + m.HistoricalEntries = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.HistoricalEntries |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinGasPrices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MinGasPrices = append(m.MinGasPrices, types.DecCoin{}) + if err := m.MinGasPrices[len(m.MinGasPrices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeExecutor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BridgeExecutor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HistoricalInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HistoricalInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HistoricalInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Valset", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Valset = append(m.Valset, Validator{}) + if err := m.Valset[len(m.Valset)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Validator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Validator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Validator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Moniker", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Moniker = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OperatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OperatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsensusPubkey", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConsensusPubkey == nil { + m.ConsensusPubkey = &types2.Any{} + } + if err := m.ConsensusPubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsPower", wireType) + } + m.ConsPower = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ConsPower |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ValidatorUpdates) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ValidatorUpdates: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ValidatorUpdates: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Updates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Updates = append(m.Updates, types3.ValidatorUpdate{}) + if err := m.Updates[len(m.Updates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTypes(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTypes + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTypes + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTypes + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTypes = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/op_child/types/validator.go b/x/op_child/types/validator.go new file mode 100644 index 00000000..11495b19 --- /dev/null +++ b/x/op_child/types/validator.go @@ -0,0 +1,257 @@ +package types + +import ( + "bytes" + "sort" + "strings" + + abci "github.com/cometbft/cometbft/abci/types" + tmprotocrypto "github.com/cometbft/cometbft/proto/tendermint/crypto" + "sigs.k8s.io/yaml" + + "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +const ( + // TODO: Why can't we just have one string description which can be JSON by convention + MaxMonikerLength = 70 + MaxIdentityLength = 3000 + MaxWebsiteLength = 140 + MaxSecurityContactLength = 140 + MaxDetailsLength = 280 +) + +var _ ValidatorI = Validator{} + +// NewValidator constructs a new Validator +// +//nolint:interfacer +func NewValidator(operator sdk.ValAddress, pubKey cryptotypes.PubKey, moniker string) (Validator, error) { + pkAny, err := codectypes.NewAnyWithValue(pubKey) + if err != nil { + return Validator{}, err + } + + return Validator{ + Moniker: moniker, + OperatorAddress: operator.String(), + ConsensusPubkey: pkAny, + ConsPower: 1, + }, nil +} + +// String implements the Stringer interface for a Validator object. +func (v Validator) String() string { + bz, err := codec.ProtoMarshalJSON(&v, nil) + if err != nil { + panic(err) + } + + out, err := yaml.JSONToYAML(bz) + if err != nil { + panic(err) + } + + return string(out) +} + +// GetMoniker return validator moniker. +func (v Validator) GetMoniker() string { + return v.Moniker +} + +// Validators is a collection of Validator +type Validators []Validator + +func (v Validators) String() (out string) { + for _, val := range v { + out += val.String() + "\n" + } + + return strings.TrimSpace(out) +} + +// ToSDKValidators - convenience function convert []Validator to []sdk.ValidatorI +func (v Validators) ToSDKValidators() (validators []ValidatorI) { + for _, val := range v { + validators = append(validators, val) + } + + return validators +} + +// Sort Validators sorts validator array in ascending operator address order +func (v Validators) Sort() { + sort.Sort(v) +} + +// Implements sort interface +func (v Validators) Len() int { + return len(v) +} + +// Implements sort interface +func (v Validators) Less(i, j int) bool { + return bytes.Compare(v[i].GetOperator().Bytes(), v[j].GetOperator().Bytes()) == -1 +} + +// Implements sort interface +func (v Validators) Swap(i, j int) { + v[i], v[j] = v[j], v[i] +} + +// ValidatorsByVotingPower implements sort.Interface for []Validator based on +// the VotingPower and Address fields. +// The validators are sorted first by their voting power (descending). Secondary index - Address (ascending). +// Copied from tendermint/types/validator_set.go +type ValidatorsByVotingPower []Validator + +func (valz ValidatorsByVotingPower) Len() int { return len(valz) } + +func (valz ValidatorsByVotingPower) Less(i, j int) bool { + if valz[i].ConsensusPower() == valz[j].ConsensusPower() { + addrI, errI := valz[i].GetConsAddr() + addrJ, errJ := valz[j].GetConsAddr() + // If either returns error, then return false + if errI != nil || errJ != nil { + return false + } + return bytes.Compare(addrI, addrJ) == -1 + } + return valz[i].ConsensusPower() > valz[j].ConsensusPower() +} + +func (valz ValidatorsByVotingPower) Swap(i, j int) { + valz[i], valz[j] = valz[j], valz[i] +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (v Validators) UnpackInterfaces(c codectypes.AnyUnpacker) error { + for i := range v { + if err := v[i].UnpackInterfaces(c); err != nil { + return err + } + } + return nil +} + +// return the delegation +func MustMarshalValidator(cdc codec.BinaryCodec, validator *Validator) []byte { + return cdc.MustMarshal(validator) +} + +// unmarshal a delegation from a store value +func MustUnmarshalValidator(cdc codec.BinaryCodec, value []byte) Validator { + validator, err := UnmarshalValidator(cdc, value) + if err != nil { + panic(err) + } + + return validator +} + +// unmarshal a delegation from a store value +func UnmarshalValidator(cdc codec.BinaryCodec, value []byte) (v Validator, err error) { + err = cdc.Unmarshal(value, &v) + return v, err +} + +func (v Validator) ABCIValidatorUpdate() abci.ValidatorUpdate { + tmProtoPk, err := v.TmConsPublicKey() + if err != nil { + panic(err) + } + + return abci.ValidatorUpdate{ + PubKey: tmProtoPk, + Power: v.ConsensusPower(), + } +} + +// ABCIValidatorUpdateZero returns an abci.ValidatorUpdate from a rollup validator type +// with zero power used for validator updates. +func (v Validator) ABCIValidatorUpdateZero() abci.ValidatorUpdate { + tmProtoPk, err := v.TmConsPublicKey() + if err != nil { + panic(err) + } + + return abci.ValidatorUpdate{ + PubKey: tmProtoPk, + Power: 0, + } +} + +// ConsensusPower gets the consensus-engine power. +// Return constant value 1 for all validators +func (v Validator) ConsensusPower() int64 { + return v.ConsPower +} + +// Equal checks if the receiver equals the parameter +func (v *Validator) Equal(v2 *Validator) bool { + return v.OperatorAddress == v2.OperatorAddress && + v.ConsensusPubkey.Equal(v2.ConsensusPubkey) +} + +func (v Validator) GetOperator() sdk.ValAddress { + if v.OperatorAddress == "" { + return nil + } + addr, err := sdk.ValAddressFromBech32(v.OperatorAddress) + if err != nil { + panic(err) + } + return addr +} + +// ConsPubKey returns the validator PubKey as a cryptotypes.PubKey. +func (v Validator) ConsPubKey() (cryptotypes.PubKey, error) { + pk, ok := v.ConsensusPubkey.GetCachedValue().(cryptotypes.PubKey) + if !ok { + return nil, errors.Wrapf(sdkerrors.ErrInvalidType, "expecting cryptotypes.PubKey, got %T", pk) + } + + return pk, nil +} + +// TmConsPublicKey casts Validator.ConsensusPubkey to tmprotocrypto.PubKey. +func (v Validator) TmConsPublicKey() (tmprotocrypto.PublicKey, error) { + pk, err := v.ConsPubKey() + if err != nil { + return tmprotocrypto.PublicKey{}, err + } + + tmPk, err := cryptocodec.ToTmProtoPublicKey(pk) + if err != nil { + return tmprotocrypto.PublicKey{}, err + } + + return tmPk, nil +} + +// GetConsAddr extracts Consensus key address +func (v Validator) GetConsAddr() (sdk.ConsAddress, error) { + pk, ok := v.ConsensusPubkey.GetCachedValue().(cryptotypes.PubKey) + if !ok { + return nil, errors.Wrapf(sdkerrors.ErrInvalidType, "expecting cryptotypes.PubKey, got %T", pk) + } + + return sdk.ConsAddress(pk.Address()), nil +} + +func (v Validator) GetConsensusPower() int64 { + return v.ConsensusPower() +} + +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (v Validator) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + var pk cryptotypes.PubKey + return unpacker.UnpackAny(v.ConsensusPubkey, &pk) +} diff --git a/x/op_host/types/genesis.pb.go b/x/op_host/types/genesis.pb.go new file mode 100644 index 00000000..c4d0ad9d --- /dev/null +++ b/x/op_host/types/genesis.pb.go @@ -0,0 +1,865 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_host/v1/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// GenesisState defines the rollup module's genesis state. +type GenesisState struct { + // params defines all the parameters of related to deposit. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + // bridges defines the registered bridges. + Bridges []Bridge `protobuf:"bytes,2,rep,name=bridges,proto3" json:"bridges"` + // the id will be asisgned to a new bridge. + NextBridgeId uint64 `protobuf:"varint,3,opt,name=next_bridge_id,json=nextBridgeId,proto3" json:"next_bridge_id,omitempty"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_d5d55ad165d12aa7, []int{0} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func (m *GenesisState) GetBridges() []Bridge { + if m != nil { + return m.Bridges + } + return nil +} + +func (m *GenesisState) GetNextBridgeId() uint64 { + if m != nil { + return m.NextBridgeId + } + return 0 +} + +// Bridge defeins a bridge state. +type Bridge struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + // l1 sequence number. + Sequence uint64 `protobuf:"varint,2,opt,name=sequence,proto3" json:"sequence,omitempty"` + // a bridge config. + BridgeConfig BridgeConfig `protobuf:"bytes,3,opt,name=bridge_config,json=bridgeConfig,proto3" json:"bridge_config"` + // a list of (l1, l2) token pairs + TokenPairs []TokenPair `protobuf:"bytes,4,rep,name=token_pairs,json=tokenPairs,proto3" json:"token_pairs"` + // a list of l2 output proposals, which has been proven. + ProvenWithdrawals [][]byte `protobuf:"bytes,5,rep,name=proven_withdrawals,json=provenWithdrawals,proto3" json:"proven_withdrawals,omitempty"` + // a list of l2 output proposals. + Proposals []OutputProposal `protobuf:"bytes,6,rep,name=proposals,proto3" json:"proposals"` +} + +func (m *Bridge) Reset() { *m = Bridge{} } +func (m *Bridge) String() string { return proto.CompactTextString(m) } +func (*Bridge) ProtoMessage() {} +func (*Bridge) Descriptor() ([]byte, []int) { + return fileDescriptor_d5d55ad165d12aa7, []int{1} +} +func (m *Bridge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Bridge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Bridge.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Bridge) XXX_Merge(src proto.Message) { + xxx_messageInfo_Bridge.Merge(m, src) +} +func (m *Bridge) XXX_Size() int { + return m.Size() +} +func (m *Bridge) XXX_DiscardUnknown() { + xxx_messageInfo_Bridge.DiscardUnknown(m) +} + +var xxx_messageInfo_Bridge proto.InternalMessageInfo + +func (m *Bridge) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *Bridge) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + +func (m *Bridge) GetBridgeConfig() BridgeConfig { + if m != nil { + return m.BridgeConfig + } + return BridgeConfig{} +} + +func (m *Bridge) GetTokenPairs() []TokenPair { + if m != nil { + return m.TokenPairs + } + return nil +} + +func (m *Bridge) GetProvenWithdrawals() [][]byte { + if m != nil { + return m.ProvenWithdrawals + } + return nil +} + +func (m *Bridge) GetProposals() []OutputProposal { + if m != nil { + return m.Proposals + } + return nil +} + +func init() { + proto.RegisterType((*GenesisState)(nil), "op_init.op_host.v1.GenesisState") + proto.RegisterType((*Bridge)(nil), "op_init.op_host.v1.Bridge") +} + +func init() { proto.RegisterFile("op_init/op_host/v1/genesis.proto", fileDescriptor_d5d55ad165d12aa7) } + +var fileDescriptor_d5d55ad165d12aa7 = []byte{ + // 441 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x8b, 0xd3, 0x40, + 0x14, 0xc7, 0x3b, 0xed, 0x5a, 0xb7, 0xd3, 0x2a, 0xec, 0xe0, 0x21, 0x56, 0x8c, 0xa1, 0x78, 0x28, + 0x42, 0x13, 0x76, 0x3d, 0x8b, 0x50, 0x0f, 0xcb, 0xe2, 0x61, 0x43, 0x15, 0x04, 0x2f, 0x61, 0xd2, + 0x8e, 0xe9, 0xe0, 0x66, 0xde, 0x38, 0x33, 0xe9, 0xae, 0xdf, 0xc2, 0x8f, 0xe1, 0xd1, 0x83, 0x1f, + 0x62, 0x8f, 0x7b, 0x14, 0x0f, 0x22, 0xed, 0xc1, 0xaf, 0x21, 0x99, 0x99, 0xda, 0x80, 0xdd, 0x4b, + 0xc8, 0x7b, 0xff, 0xdf, 0xff, 0xfd, 0x1f, 0xc3, 0xc3, 0x11, 0xc8, 0x8c, 0x0b, 0x6e, 0x12, 0x90, + 0xd9, 0x12, 0xb4, 0x49, 0x56, 0xc7, 0x49, 0xc1, 0x04, 0xd3, 0x5c, 0xc7, 0x52, 0x81, 0x01, 0x42, + 0x3c, 0x11, 0x7b, 0x22, 0x5e, 0x1d, 0x0f, 0x8f, 0x68, 0xc9, 0x05, 0x24, 0xf6, 0xeb, 0xb0, 0xe1, + 0xc3, 0x39, 0xe8, 0x12, 0x74, 0x66, 0xab, 0xc4, 0x15, 0x5e, 0x7a, 0x50, 0x40, 0x01, 0xae, 0x5f, + 0xff, 0xf9, 0x6e, 0xb8, 0x27, 0xd9, 0x7c, 0x96, 0xcc, 0xbb, 0x46, 0xdf, 0x11, 0x1e, 0x9c, 0xba, + 0x4d, 0xde, 0x18, 0x6a, 0x18, 0x79, 0x81, 0xbb, 0x92, 0x2a, 0x5a, 0xea, 0x00, 0x45, 0x68, 0xdc, + 0x3f, 0x19, 0xc6, 0xff, 0x6f, 0x16, 0xa7, 0x96, 0x98, 0xf6, 0xae, 0x7f, 0x3d, 0x69, 0x7d, 0xfd, + 0xf3, 0xed, 0x19, 0x9a, 0x79, 0x13, 0x79, 0x89, 0xef, 0xe6, 0x8a, 0x2f, 0x0a, 0xa6, 0x83, 0x76, + 0xd4, 0xb9, 0xcd, 0x3f, 0xb5, 0x48, 0xd3, 0xbf, 0x75, 0x91, 0xa7, 0xf8, 0xbe, 0x60, 0x57, 0x26, + 0x73, 0x75, 0xc6, 0x17, 0x41, 0x27, 0x42, 0xe3, 0x83, 0xd9, 0xa0, 0xee, 0x3a, 0xdf, 0xd9, 0x62, + 0xf4, 0xb3, 0x8d, 0xbb, 0xae, 0x20, 0x8f, 0x70, 0x6f, 0xc7, 0x22, 0xcb, 0x1e, 0xe6, 0x9e, 0x23, + 0x43, 0x7c, 0xa8, 0xd9, 0xa7, 0x8a, 0x89, 0x39, 0x0b, 0xda, 0x4e, 0xdb, 0xd6, 0x24, 0xc5, 0xf7, + 0xbc, 0x71, 0x0e, 0xe2, 0x03, 0x2f, 0x6c, 0x50, 0xff, 0x24, 0xba, 0x7d, 0xe1, 0x57, 0x96, 0x6b, + 0xae, 0x3d, 0xc8, 0x1b, 0x02, 0x39, 0xc3, 0x7d, 0x03, 0x1f, 0x99, 0xc8, 0x24, 0xe5, 0x4a, 0x07, + 0x07, 0xf6, 0x01, 0x1e, 0xef, 0x9b, 0xf7, 0xb6, 0xc6, 0x52, 0xca, 0x55, 0x73, 0x18, 0x36, 0xdb, + 0xae, 0x26, 0x13, 0x4c, 0xa4, 0x82, 0x15, 0x13, 0xd9, 0x25, 0x37, 0xcb, 0x85, 0xa2, 0x97, 0xf4, + 0x42, 0x07, 0x77, 0xa2, 0xce, 0x78, 0x30, 0x3b, 0x72, 0xca, 0xbb, 0x9d, 0x40, 0x5e, 0xe3, 0x9e, + 0x54, 0x20, 0x41, 0xd7, 0x54, 0xd7, 0xe6, 0x8e, 0xf6, 0xe5, 0x9e, 0x57, 0x46, 0x56, 0x26, 0xf5, + 0x68, 0x33, 0x7c, 0xe7, 0x9f, 0x9e, 0x5e, 0xaf, 0x43, 0x74, 0xb3, 0x0e, 0xd1, 0xef, 0x75, 0x88, + 0xbe, 0x6c, 0xc2, 0xd6, 0xcd, 0x26, 0x6c, 0xfd, 0xd8, 0x84, 0xad, 0xf7, 0x93, 0x82, 0x9b, 0x65, + 0x95, 0xc7, 0x73, 0x28, 0x93, 0x7a, 0x34, 0xa7, 0x93, 0x0b, 0x9a, 0xeb, 0xe4, 0x3c, 0xb5, 0x37, + 0x76, 0xf5, 0xef, 0xca, 0xec, 0x89, 0xe5, 0x5d, 0x7b, 0x63, 0xcf, 0xff, 0x06, 0x00, 0x00, 0xff, + 0xff, 0x38, 0xcb, 0x54, 0x50, 0xff, 0x02, 0x00, 0x00, +} + +func (m *GenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.NextBridgeId != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.NextBridgeId)) + i-- + dAtA[i] = 0x18 + } + if len(m.Bridges) > 0 { + for iNdEx := len(m.Bridges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Bridges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *Bridge) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Bridge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Bridge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Proposals) > 0 { + for iNdEx := len(m.Proposals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Proposals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.ProvenWithdrawals) > 0 { + for iNdEx := len(m.ProvenWithdrawals) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ProvenWithdrawals[iNdEx]) + copy(dAtA[i:], m.ProvenWithdrawals[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ProvenWithdrawals[iNdEx]))) + i-- + dAtA[i] = 0x2a + } + } + if len(m.TokenPairs) > 0 { + for iNdEx := len(m.TokenPairs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenPairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + { + size, err := m.BridgeConfig.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if m.Sequence != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Sequence)) + i-- + dAtA[i] = 0x10 + } + if m.BridgeId != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.Bridges) > 0 { + for _, e := range m.Bridges { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if m.NextBridgeId != 0 { + n += 1 + sovGenesis(uint64(m.NextBridgeId)) + } + return n +} + +func (m *Bridge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovGenesis(uint64(m.BridgeId)) + } + if m.Sequence != 0 { + n += 1 + sovGenesis(uint64(m.Sequence)) + } + l = m.BridgeConfig.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.TokenPairs) > 0 { + for _, e := range m.TokenPairs { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ProvenWithdrawals) > 0 { + for _, b := range m.ProvenWithdrawals { + l = len(b) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.Proposals) > 0 { + for _, e := range m.Proposals { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bridges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bridges = append(m.Bridges, Bridge{}) + if err := m.Bridges[len(m.Bridges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NextBridgeId", wireType) + } + m.NextBridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NextBridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Bridge) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Bridge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Bridge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + m.Sequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Sequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BridgeConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenPairs = append(m.TokenPairs, TokenPair{}) + if err := m.TokenPairs[len(m.TokenPairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProvenWithdrawals", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProvenWithdrawals = append(m.ProvenWithdrawals, make([]byte, postIndex-iNdEx)) + copy(m.ProvenWithdrawals[len(m.ProvenWithdrawals)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Proposals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Proposals = append(m.Proposals, OutputProposal{}) + if err := m.Proposals[len(m.Proposals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/op_host/types/params.go b/x/op_host/types/params.go new file mode 100644 index 00000000..187f56d0 --- /dev/null +++ b/x/op_host/types/params.go @@ -0,0 +1,11 @@ +package types + +import "gopkg.in/yaml.v3" + +func (p Params) String() string { + out, err := yaml.Marshal(p) + if err != nil { + panic(err) + } + return string(out) +} diff --git a/x/op_host/types/query.pb.go b/x/op_host/types/query.pb.go new file mode 100644 index 00000000..23b750c7 --- /dev/null +++ b/x/op_host/types/query.pb.go @@ -0,0 +1,3641 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_host/v1/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + query "github.com/cosmos/cosmos-sdk/types/query" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// QueryBridgeRequest is request type for Query/Bridge RPC method. +type QueryBridgeRequest struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` +} + +func (m *QueryBridgeRequest) Reset() { *m = QueryBridgeRequest{} } +func (m *QueryBridgeRequest) String() string { return proto.CompactTextString(m) } +func (*QueryBridgeRequest) ProtoMessage() {} +func (*QueryBridgeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{0} +} +func (m *QueryBridgeRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryBridgeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryBridgeRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryBridgeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryBridgeRequest.Merge(m, src) +} +func (m *QueryBridgeRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryBridgeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryBridgeRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryBridgeRequest proto.InternalMessageInfo + +// QueryBridgeResponse is response type for the Query/Bridge RPC method +type QueryBridgeResponse struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + BridgeConfig BridgeConfig `protobuf:"bytes,2,opt,name=bridge_config,json=bridgeConfig,proto3" json:"bridge_config"` +} + +func (m *QueryBridgeResponse) Reset() { *m = QueryBridgeResponse{} } +func (m *QueryBridgeResponse) String() string { return proto.CompactTextString(m) } +func (*QueryBridgeResponse) ProtoMessage() {} +func (*QueryBridgeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{1} +} +func (m *QueryBridgeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryBridgeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryBridgeResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryBridgeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryBridgeResponse.Merge(m, src) +} +func (m *QueryBridgeResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryBridgeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryBridgeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryBridgeResponse proto.InternalMessageInfo + +func (m *QueryBridgeResponse) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *QueryBridgeResponse) GetBridgeConfig() BridgeConfig { + if m != nil { + return m.BridgeConfig + } + return BridgeConfig{} +} + +// QueryBridgesRequest is request type for Query/Bridges RPC method. +type QueryBridgesRequest struct { + // pagination defines the pagination in the request. + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryBridgesRequest) Reset() { *m = QueryBridgesRequest{} } +func (m *QueryBridgesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryBridgesRequest) ProtoMessage() {} +func (*QueryBridgesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{2} +} +func (m *QueryBridgesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryBridgesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryBridgesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryBridgesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryBridgesRequest.Merge(m, src) +} +func (m *QueryBridgesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryBridgesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryBridgesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryBridgesRequest proto.InternalMessageInfo + +// QueryBridgesResponse is response type for the Query/Bridges RPC method +type QueryBridgesResponse struct { + Bridges []QueryBridgeResponse `protobuf:"bytes,1,rep,name=bridges,proto3" json:"bridges"` + // pagination defines the pagination in the response. + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryBridgesResponse) Reset() { *m = QueryBridgesResponse{} } +func (m *QueryBridgesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryBridgesResponse) ProtoMessage() {} +func (*QueryBridgesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{3} +} +func (m *QueryBridgesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryBridgesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryBridgesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryBridgesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryBridgesResponse.Merge(m, src) +} +func (m *QueryBridgesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryBridgesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryBridgesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryBridgesResponse proto.InternalMessageInfo + +func (m *QueryBridgesResponse) GetBridges() []QueryBridgeResponse { + if m != nil { + return m.Bridges + } + return nil +} + +func (m *QueryBridgesResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryTokenPairByL1DenomRequest is response type for the Query/TokenPairByL1Denom RPC method +type QueryTokenPairByL1DenomRequest struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + L1Denom string `protobuf:"bytes,2,opt,name=l1_denom,json=l1Denom,proto3" json:"l1_denom,omitempty"` +} + +func (m *QueryTokenPairByL1DenomRequest) Reset() { *m = QueryTokenPairByL1DenomRequest{} } +func (m *QueryTokenPairByL1DenomRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTokenPairByL1DenomRequest) ProtoMessage() {} +func (*QueryTokenPairByL1DenomRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{4} +} +func (m *QueryTokenPairByL1DenomRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenPairByL1DenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenPairByL1DenomRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenPairByL1DenomRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenPairByL1DenomRequest.Merge(m, src) +} +func (m *QueryTokenPairByL1DenomRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenPairByL1DenomRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenPairByL1DenomRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenPairByL1DenomRequest proto.InternalMessageInfo + +func (m *QueryTokenPairByL1DenomRequest) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *QueryTokenPairByL1DenomRequest) GetL1Denom() string { + if m != nil { + return m.L1Denom + } + return "" +} + +// QueryTokenPairByL1DenomResponse is response type for the Query/TokenPairByL1Denom RPC method +type QueryTokenPairByL1DenomResponse struct { + TokenPair TokenPair `protobuf:"bytes,1,opt,name=token_pair,json=tokenPair,proto3" json:"token_pair"` +} + +func (m *QueryTokenPairByL1DenomResponse) Reset() { *m = QueryTokenPairByL1DenomResponse{} } +func (m *QueryTokenPairByL1DenomResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenPairByL1DenomResponse) ProtoMessage() {} +func (*QueryTokenPairByL1DenomResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{5} +} +func (m *QueryTokenPairByL1DenomResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenPairByL1DenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenPairByL1DenomResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenPairByL1DenomResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenPairByL1DenomResponse.Merge(m, src) +} +func (m *QueryTokenPairByL1DenomResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenPairByL1DenomResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenPairByL1DenomResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenPairByL1DenomResponse proto.InternalMessageInfo + +func (m *QueryTokenPairByL1DenomResponse) GetTokenPair() TokenPair { + if m != nil { + return m.TokenPair + } + return TokenPair{} +} + +// QueryTokenPairByL2DenomRequest is response type for the Query/TokenPairByL2Denom RPC method +type QueryTokenPairByL2DenomRequest struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + L2Denom string `protobuf:"bytes,2,opt,name=l2_denom,json=l2Denom,proto3" json:"l2_denom,omitempty"` +} + +func (m *QueryTokenPairByL2DenomRequest) Reset() { *m = QueryTokenPairByL2DenomRequest{} } +func (m *QueryTokenPairByL2DenomRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTokenPairByL2DenomRequest) ProtoMessage() {} +func (*QueryTokenPairByL2DenomRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{6} +} +func (m *QueryTokenPairByL2DenomRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenPairByL2DenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenPairByL2DenomRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenPairByL2DenomRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenPairByL2DenomRequest.Merge(m, src) +} +func (m *QueryTokenPairByL2DenomRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenPairByL2DenomRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenPairByL2DenomRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenPairByL2DenomRequest proto.InternalMessageInfo + +func (m *QueryTokenPairByL2DenomRequest) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *QueryTokenPairByL2DenomRequest) GetL2Denom() string { + if m != nil { + return m.L2Denom + } + return "" +} + +// QueryTokenPairByL2DenomResponse is response type for the Query/TokenPairByL2Denom RPC method +type QueryTokenPairByL2DenomResponse struct { + TokenPair TokenPair `protobuf:"bytes,1,opt,name=token_pair,json=tokenPair,proto3" json:"token_pair"` +} + +func (m *QueryTokenPairByL2DenomResponse) Reset() { *m = QueryTokenPairByL2DenomResponse{} } +func (m *QueryTokenPairByL2DenomResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenPairByL2DenomResponse) ProtoMessage() {} +func (*QueryTokenPairByL2DenomResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{7} +} +func (m *QueryTokenPairByL2DenomResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenPairByL2DenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenPairByL2DenomResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenPairByL2DenomResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenPairByL2DenomResponse.Merge(m, src) +} +func (m *QueryTokenPairByL2DenomResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenPairByL2DenomResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenPairByL2DenomResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenPairByL2DenomResponse proto.InternalMessageInfo + +func (m *QueryTokenPairByL2DenomResponse) GetTokenPair() TokenPair { + if m != nil { + return m.TokenPair + } + return TokenPair{} +} + +// QueryTokenPairsRequest is response type for the Query/TokenPairs RPC method +type QueryTokenPairsRequest struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + // pagination defines the pagination in the request. + Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryTokenPairsRequest) Reset() { *m = QueryTokenPairsRequest{} } +func (m *QueryTokenPairsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryTokenPairsRequest) ProtoMessage() {} +func (*QueryTokenPairsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{8} +} +func (m *QueryTokenPairsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenPairsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenPairsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenPairsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenPairsRequest.Merge(m, src) +} +func (m *QueryTokenPairsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenPairsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenPairsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenPairsRequest proto.InternalMessageInfo + +func (m *QueryTokenPairsRequest) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *QueryTokenPairsRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryTokenPairsResponse is response type for the Query/TokenPairs RPC method +type QueryTokenPairsResponse struct { + TokenPairs []TokenPair `protobuf:"bytes,1,rep,name=token_pairs,json=tokenPairs,proto3" json:"token_pairs"` + // pagination defines the pagination in the response. + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryTokenPairsResponse) Reset() { *m = QueryTokenPairsResponse{} } +func (m *QueryTokenPairsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryTokenPairsResponse) ProtoMessage() {} +func (*QueryTokenPairsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{9} +} +func (m *QueryTokenPairsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryTokenPairsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryTokenPairsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryTokenPairsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryTokenPairsResponse.Merge(m, src) +} +func (m *QueryTokenPairsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryTokenPairsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryTokenPairsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryTokenPairsResponse proto.InternalMessageInfo + +func (m *QueryTokenPairsResponse) GetTokenPairs() []TokenPair { + if m != nil { + return m.TokenPairs + } + return nil +} + +func (m *QueryTokenPairsResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryOutputProposalRequest is response type for the Query/OutputProposal RPC method +type QueryOutputProposalRequest struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + OutputIndex uint64 `protobuf:"varint,2,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` +} + +func (m *QueryOutputProposalRequest) Reset() { *m = QueryOutputProposalRequest{} } +func (m *QueryOutputProposalRequest) String() string { return proto.CompactTextString(m) } +func (*QueryOutputProposalRequest) ProtoMessage() {} +func (*QueryOutputProposalRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{10} +} +func (m *QueryOutputProposalRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryOutputProposalRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryOutputProposalRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryOutputProposalRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryOutputProposalRequest.Merge(m, src) +} +func (m *QueryOutputProposalRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryOutputProposalRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryOutputProposalRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryOutputProposalRequest proto.InternalMessageInfo + +func (m *QueryOutputProposalRequest) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *QueryOutputProposalRequest) GetOutputIndex() uint64 { + if m != nil { + return m.OutputIndex + } + return 0 +} + +// QueryOutputProposalResponse is response type for the Query/OutputProposal RPC method +type QueryOutputProposalResponse struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + OutputIndex uint64 `protobuf:"varint,2,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` + OutputProposal OutputProposal `protobuf:"bytes,3,opt,name=output_proposal,json=outputProposal,proto3" json:"output_proposal"` +} + +func (m *QueryOutputProposalResponse) Reset() { *m = QueryOutputProposalResponse{} } +func (m *QueryOutputProposalResponse) String() string { return proto.CompactTextString(m) } +func (*QueryOutputProposalResponse) ProtoMessage() {} +func (*QueryOutputProposalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{11} +} +func (m *QueryOutputProposalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryOutputProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryOutputProposalResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryOutputProposalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryOutputProposalResponse.Merge(m, src) +} +func (m *QueryOutputProposalResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryOutputProposalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryOutputProposalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryOutputProposalResponse proto.InternalMessageInfo + +func (m *QueryOutputProposalResponse) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *QueryOutputProposalResponse) GetOutputIndex() uint64 { + if m != nil { + return m.OutputIndex + } + return 0 +} + +func (m *QueryOutputProposalResponse) GetOutputProposal() OutputProposal { + if m != nil { + return m.OutputProposal + } + return OutputProposal{} +} + +// QueryOutputProposalsRequest is response type for the Query/OutputProposals RPC method +type QueryOutputProposalsRequest struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + OutputIndex uint64 `protobuf:"varint,2,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` +} + +func (m *QueryOutputProposalsRequest) Reset() { *m = QueryOutputProposalsRequest{} } +func (m *QueryOutputProposalsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryOutputProposalsRequest) ProtoMessage() {} +func (*QueryOutputProposalsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{12} +} +func (m *QueryOutputProposalsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryOutputProposalsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryOutputProposalsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryOutputProposalsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryOutputProposalsRequest.Merge(m, src) +} +func (m *QueryOutputProposalsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryOutputProposalsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryOutputProposalsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryOutputProposalsRequest proto.InternalMessageInfo + +func (m *QueryOutputProposalsRequest) GetBridgeId() uint64 { + if m != nil { + return m.BridgeId + } + return 0 +} + +func (m *QueryOutputProposalsRequest) GetOutputIndex() uint64 { + if m != nil { + return m.OutputIndex + } + return 0 +} + +// QueryOutputProposalsResponse is response type for the Query/OutputProposals RPC method +type QueryOutputProposalsResponse struct { + OutputProposals []QueryOutputProposalResponse `protobuf:"bytes,1,rep,name=output_proposals,json=outputProposals,proto3" json:"output_proposals"` +} + +func (m *QueryOutputProposalsResponse) Reset() { *m = QueryOutputProposalsResponse{} } +func (m *QueryOutputProposalsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryOutputProposalsResponse) ProtoMessage() {} +func (*QueryOutputProposalsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{13} +} +func (m *QueryOutputProposalsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryOutputProposalsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryOutputProposalsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryOutputProposalsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryOutputProposalsResponse.Merge(m, src) +} +func (m *QueryOutputProposalsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryOutputProposalsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryOutputProposalsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryOutputProposalsResponse proto.InternalMessageInfo + +func (m *QueryOutputProposalsResponse) GetOutputProposals() []QueryOutputProposalResponse { + if m != nil { + return m.OutputProposals + } + return nil +} + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { +} + +func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } +func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{14} +} +func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsRequest.Merge(m, src) +} +func (m *QueryParamsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + // params holds all the parameters of this module. + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } +func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_18f1b9ab33329204, []int{15} +} +func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsResponse.Merge(m, src) +} +func (m *QueryParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo + +func (m *QueryParamsResponse) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*QueryBridgeRequest)(nil), "op_init.op_host.v1.QueryBridgeRequest") + proto.RegisterType((*QueryBridgeResponse)(nil), "op_init.op_host.v1.QueryBridgeResponse") + proto.RegisterType((*QueryBridgesRequest)(nil), "op_init.op_host.v1.QueryBridgesRequest") + proto.RegisterType((*QueryBridgesResponse)(nil), "op_init.op_host.v1.QueryBridgesResponse") + proto.RegisterType((*QueryTokenPairByL1DenomRequest)(nil), "op_init.op_host.v1.QueryTokenPairByL1DenomRequest") + proto.RegisterType((*QueryTokenPairByL1DenomResponse)(nil), "op_init.op_host.v1.QueryTokenPairByL1DenomResponse") + proto.RegisterType((*QueryTokenPairByL2DenomRequest)(nil), "op_init.op_host.v1.QueryTokenPairByL2DenomRequest") + proto.RegisterType((*QueryTokenPairByL2DenomResponse)(nil), "op_init.op_host.v1.QueryTokenPairByL2DenomResponse") + proto.RegisterType((*QueryTokenPairsRequest)(nil), "op_init.op_host.v1.QueryTokenPairsRequest") + proto.RegisterType((*QueryTokenPairsResponse)(nil), "op_init.op_host.v1.QueryTokenPairsResponse") + proto.RegisterType((*QueryOutputProposalRequest)(nil), "op_init.op_host.v1.QueryOutputProposalRequest") + proto.RegisterType((*QueryOutputProposalResponse)(nil), "op_init.op_host.v1.QueryOutputProposalResponse") + proto.RegisterType((*QueryOutputProposalsRequest)(nil), "op_init.op_host.v1.QueryOutputProposalsRequest") + proto.RegisterType((*QueryOutputProposalsResponse)(nil), "op_init.op_host.v1.QueryOutputProposalsResponse") + proto.RegisterType((*QueryParamsRequest)(nil), "op_init.op_host.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "op_init.op_host.v1.QueryParamsResponse") +} + +func init() { proto.RegisterFile("op_init/op_host/v1/query.proto", fileDescriptor_18f1b9ab33329204) } + +var fileDescriptor_18f1b9ab33329204 = []byte{ + // 950 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0x4f, 0x8f, 0xdb, 0x44, + 0x1c, 0xcd, 0xb4, 0x25, 0xbb, 0xf9, 0xa5, 0x74, 0x61, 0x58, 0x41, 0xea, 0x6c, 0x9d, 0xe0, 0x43, + 0x13, 0x16, 0xd5, 0x43, 0xbc, 0x70, 0xe1, 0x6f, 0x09, 0xa8, 0xab, 0x15, 0x2b, 0x35, 0x44, 0x15, + 0x42, 0x08, 0x64, 0xd9, 0x1b, 0xe3, 0x1a, 0x12, 0x8f, 0x1b, 0x3b, 0xab, 0x46, 0xd5, 0x5e, 0x2a, + 0x40, 0xbd, 0x81, 0xc4, 0x17, 0xe8, 0x0d, 0x2e, 0x48, 0x08, 0x89, 0x2b, 0xe7, 0x4a, 0x5c, 0x2a, + 0x71, 0xe1, 0x84, 0xd0, 0x06, 0x09, 0x3e, 0x06, 0xf2, 0xcc, 0x38, 0xb6, 0x37, 0x4e, 0xe2, 0xac, + 0xba, 0x97, 0xd5, 0xe6, 0xf7, 0xf7, 0xbd, 0x37, 0x93, 0x37, 0x0a, 0xc8, 0xd4, 0xd3, 0x1d, 0xd7, + 0x09, 0x08, 0xf5, 0xf4, 0xdb, 0xd4, 0x0f, 0xc8, 0x61, 0x8b, 0xdc, 0x19, 0x59, 0xc3, 0xb1, 0xea, + 0x0d, 0x69, 0x40, 0x31, 0x16, 0x79, 0x55, 0xe4, 0xd5, 0xc3, 0x96, 0xf4, 0xac, 0x31, 0x70, 0x5c, + 0x4a, 0xd8, 0x5f, 0x5e, 0x26, 0x6d, 0x1f, 0x50, 0x7f, 0x40, 0x7d, 0x62, 0x1a, 0xbe, 0xc5, 0xfb, + 0xc9, 0x61, 0xcb, 0xb4, 0x02, 0xa3, 0x45, 0x3c, 0xc3, 0x76, 0x5c, 0x23, 0x70, 0xa8, 0x2b, 0x6a, + 0xab, 0xa2, 0x36, 0x2a, 0x4b, 0xee, 0x93, 0x2e, 0xf3, 0xa4, 0xce, 0x3e, 0x11, 0xfe, 0x41, 0xa4, + 0x36, 0x6d, 0x6a, 0x53, 0x1e, 0x0f, 0xff, 0x13, 0xd1, 0x2d, 0x9b, 0x52, 0xbb, 0x6f, 0x11, 0xc3, + 0x73, 0x88, 0xe1, 0xba, 0x34, 0x60, 0xab, 0xa2, 0x9e, 0x2c, 0x7a, 0xc1, 0xd8, 0xb3, 0x44, 0x5e, + 0x79, 0x03, 0xf0, 0x87, 0xe1, 0xf6, 0xf6, 0xd0, 0xe9, 0xd9, 0x56, 0xd7, 0xba, 0x33, 0xb2, 0xfc, + 0x00, 0x57, 0xa1, 0x64, 0xb2, 0x80, 0xee, 0xf4, 0x2a, 0xa8, 0x8e, 0x9a, 0x17, 0xba, 0xeb, 0x3c, + 0xb0, 0xd7, 0x7b, 0x7d, 0xfd, 0xc1, 0xc3, 0x5a, 0xe1, 0xbf, 0x87, 0xb5, 0x82, 0xf2, 0x15, 0x82, + 0xe7, 0x52, 0xdd, 0xbe, 0x47, 0x5d, 0xdf, 0x5a, 0xd8, 0x8e, 0x3b, 0xf0, 0xb4, 0x48, 0x1e, 0x50, + 0xf7, 0x73, 0xc7, 0xae, 0x9c, 0xab, 0xa3, 0x66, 0x59, 0xab, 0xab, 0xb3, 0x42, 0xab, 0x7c, 0xee, + 0x7b, 0xac, 0xae, 0x5d, 0x7a, 0xf4, 0x57, 0xad, 0xf0, 0xe3, 0xbf, 0x3f, 0x6f, 0xa3, 0xee, 0x45, + 0x33, 0x91, 0x50, 0xec, 0x14, 0x0a, 0x3f, 0x22, 0x71, 0x03, 0x20, 0x96, 0x9e, 0xc1, 0x28, 0x6b, + 0x57, 0x55, 0xa1, 0x68, 0x78, 0x4e, 0x2a, 0xd7, 0x5d, 0x9c, 0x93, 0xda, 0x31, 0xa6, 0x02, 0x74, + 0x13, 0x9d, 0x09, 0xbe, 0x3f, 0x21, 0xd8, 0x4c, 0x6f, 0x12, 0x84, 0xf7, 0x61, 0x8d, 0x23, 0xf2, + 0x2b, 0xa8, 0x7e, 0xbe, 0x59, 0xd6, 0x1a, 0x59, 0x6c, 0x32, 0xa4, 0x4a, 0x92, 0x8a, 0x46, 0xe0, + 0xdd, 0x14, 0x70, 0x2e, 0x4f, 0x63, 0x29, 0x70, 0x3e, 0x30, 0x89, 0x5c, 0xf9, 0x18, 0x64, 0xb6, + 0xf3, 0x16, 0xfd, 0xd2, 0x72, 0x3b, 0x86, 0x33, 0x6c, 0x8f, 0xf7, 0x5b, 0xef, 0x5b, 0x2e, 0x1d, + 0xe4, 0x39, 0x68, 0x7c, 0x19, 0xd6, 0xfb, 0x2d, 0xbd, 0x17, 0xd6, 0x33, 0x14, 0xa5, 0xee, 0x5a, + 0x9f, 0xb7, 0x2b, 0x5f, 0x40, 0x6d, 0xee, 0x64, 0xa1, 0xc9, 0x2e, 0x40, 0x10, 0x66, 0x75, 0xcf, + 0x70, 0x86, 0x42, 0xfe, 0x2b, 0x59, 0xb2, 0xc4, 0x33, 0x12, 0x62, 0x94, 0x82, 0x28, 0x9a, 0xc9, + 0x42, 0x5b, 0x8d, 0x85, 0x76, 0x82, 0x85, 0x36, 0x9f, 0x85, 0x76, 0x46, 0x2c, 0x8e, 0xe0, 0xf9, + 0xf4, 0x2e, 0x3f, 0x17, 0xfa, 0x1b, 0x19, 0x77, 0xe1, 0x14, 0x97, 0x38, 0xbc, 0xba, 0x2f, 0xcc, + 0xec, 0x17, 0x1c, 0xf7, 0xa0, 0x1c, 0x73, 0x8c, 0x6e, 0x70, 0x7e, 0x92, 0x30, 0x25, 0xf9, 0x04, + 0xaf, 0xee, 0xa7, 0x20, 0x31, 0xb8, 0x37, 0x47, 0x81, 0x37, 0x0a, 0x3a, 0x43, 0xea, 0x51, 0xdf, + 0xe8, 0xe7, 0x92, 0xec, 0x45, 0xb8, 0x48, 0x59, 0x97, 0xee, 0xb8, 0x3d, 0xeb, 0x2e, 0x43, 0x71, + 0xa1, 0x5b, 0xe6, 0xb1, 0xbd, 0x30, 0xa4, 0xfc, 0x8a, 0xa0, 0x9a, 0x39, 0x3e, 0x8f, 0x81, 0x2d, + 0x9f, 0x8f, 0x3f, 0x82, 0x0d, 0x51, 0xe2, 0x89, 0xd1, 0x95, 0xf3, 0x4c, 0x0b, 0x25, 0x4b, 0xd5, + 0x34, 0x88, 0xa4, 0xb4, 0x97, 0x68, 0x2a, 0xa5, 0x7c, 0x96, 0x09, 0xdb, 0x7f, 0x52, 0xb2, 0x7c, + 0x8d, 0x60, 0x2b, 0x7b, 0xbe, 0xd0, 0xc5, 0x82, 0x67, 0x4e, 0xf0, 0x8a, 0xae, 0x0b, 0x99, 0x6b, + 0x78, 0xd9, 0x12, 0x27, 0x59, 0x6e, 0xa4, 0x59, 0xfa, 0xca, 0xa6, 0x78, 0x94, 0x3a, 0xc6, 0xd0, + 0x18, 0x44, 0xec, 0x94, 0x5b, 0xc2, 0xe6, 0xa3, 0xa8, 0xc0, 0xf4, 0x16, 0x14, 0x3d, 0x16, 0x11, + 0xdf, 0x4e, 0x29, 0x0b, 0x09, 0xef, 0x49, 0x2e, 0x15, 0x4d, 0xda, 0x04, 0xe0, 0x29, 0x36, 0x16, + 0x7f, 0x8b, 0xa0, 0xc8, 0xdd, 0x19, 0x5f, 0x5d, 0x6a, 0xdf, 0x0c, 0x92, 0x94, 0xd7, 0xe6, 0x95, + 0x57, 0x1f, 0x84, 0x4b, 0xef, 0xff, 0xf1, 0xcf, 0xf7, 0xe7, 0x5e, 0xc2, 0x0d, 0x92, 0xf1, 0x28, + 0x0b, 0xf3, 0x27, 0xf7, 0xa6, 0x27, 0x78, 0x84, 0xbf, 0x41, 0xb0, 0x26, 0x9e, 0x1a, 0xbc, 0x6c, + 0x55, 0x24, 0x93, 0xd4, 0x5c, 0x5e, 0x28, 0x40, 0x35, 0x63, 0x50, 0x57, 0x70, 0x75, 0x01, 0x28, + 0xfc, 0x3b, 0x02, 0x3c, 0x6b, 0xf5, 0x58, 0x9b, 0xbb, 0x6a, 0xee, 0x8b, 0x23, 0xed, 0xac, 0xd4, + 0x23, 0x90, 0xee, 0xc7, 0x48, 0xdf, 0xc5, 0xef, 0xe4, 0x94, 0x8f, 0x24, 0x4c, 0x8d, 0x98, 0x63, + 0x3d, 0x7a, 0xcb, 0x66, 0xd8, 0x68, 0xab, 0xb0, 0xd1, 0x4e, 0xc1, 0x46, 0x3b, 0x0b, 0x36, 0xe2, + 0x4d, 0xc3, 0x3f, 0x20, 0x80, 0xd8, 0xd4, 0xf1, 0xf6, 0x72, 0x44, 0xd3, 0xab, 0xf2, 0x72, 0xae, + 0x5a, 0x81, 0xfa, 0x7a, 0x8c, 0xfa, 0x35, 0xbc, 0x73, 0x0a, 0xd4, 0xf8, 0x37, 0x04, 0x97, 0xd2, + 0x6e, 0x80, 0xd5, 0xdc, 0xb6, 0xc1, 0x11, 0xaf, 0x6a, 0x33, 0xca, 0x07, 0x31, 0xea, 0xeb, 0xf8, + 0xed, 0xbc, 0xa8, 0xb9, 0x21, 0xf9, 0xe4, 0x5e, 0xd2, 0x31, 0x8f, 0xf0, 0x2f, 0x08, 0x36, 0x4e, + 0x58, 0x23, 0xce, 0x8b, 0x68, 0x2a, 0xfa, 0x2b, 0xf9, 0x1b, 0x04, 0x87, 0x37, 0x63, 0x0e, 0x2d, + 0x4c, 0x56, 0xe4, 0x80, 0xef, 0x23, 0x28, 0x72, 0xfb, 0x5b, 0x60, 0x6b, 0x29, 0xa7, 0x5d, 0x60, + 0x6b, 0x69, 0xef, 0x55, 0x1a, 0x31, 0xb2, 0x2d, 0x2c, 0x65, 0x21, 0xe3, 0x2e, 0xdb, 0xde, 0x7d, + 0x74, 0x2c, 0xa3, 0xc7, 0xc7, 0x32, 0xfa, 0xfb, 0x58, 0x46, 0xdf, 0x4d, 0xe4, 0xc2, 0xe3, 0x89, + 0x5c, 0xf8, 0x73, 0x22, 0x17, 0x3e, 0xb9, 0x66, 0x3b, 0xc1, 0xed, 0x91, 0xa9, 0x1e, 0xd0, 0x01, + 0x09, 0x9b, 0x1d, 0xe3, 0x5a, 0xdf, 0x30, 0x7d, 0x72, 0xb3, 0xc3, 0x46, 0xdd, 0x9d, 0x0e, 0x63, + 0xbf, 0x5a, 0xcc, 0x22, 0xfb, 0xd9, 0xb2, 0xf3, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4d, 0x75, + 0x0f, 0x7c, 0xb7, 0x0d, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Bridge queries bridge info. + Bridge(ctx context.Context, in *QueryBridgeRequest, opts ...grpc.CallOption) (*QueryBridgeResponse, error) + // Bridges queries bridge infos. + Bridges(ctx context.Context, in *QueryBridgesRequest, opts ...grpc.CallOption) (*QueryBridgesResponse, error) + // TokenPairByL1Denom queries token pair by l1 denom. + TokenPairByL1Denom(ctx context.Context, in *QueryTokenPairByL1DenomRequest, opts ...grpc.CallOption) (*QueryTokenPairByL1DenomResponse, error) + // TokenPairByL2Denom queries token pair by l2 denom. + TokenPairByL2Denom(ctx context.Context, in *QueryTokenPairByL2DenomRequest, opts ...grpc.CallOption) (*QueryTokenPairByL2DenomResponse, error) + // TokenPairs queries all (l1 denom, l2 denom) pair. + TokenPairs(ctx context.Context, in *QueryTokenPairsRequest, opts ...grpc.CallOption) (*QueryTokenPairsResponse, error) + // OutputProposal queries output proposal by output index. + OutputProposal(ctx context.Context, in *QueryOutputProposalRequest, opts ...grpc.CallOption) (*QueryOutputProposalResponse, error) + // OutputProposals queries all output proposals. + OutputProposals(ctx context.Context, in *QueryOutputProposalsRequest, opts ...grpc.CallOption) (*QueryOutputProposalsResponse, error) + // Parameters queries the rollup parameters. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Bridge(ctx context.Context, in *QueryBridgeRequest, opts ...grpc.CallOption) (*QueryBridgeResponse, error) { + out := new(QueryBridgeResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/Bridge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Bridges(ctx context.Context, in *QueryBridgesRequest, opts ...grpc.CallOption) (*QueryBridgesResponse, error) { + out := new(QueryBridgesResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/Bridges", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenPairByL1Denom(ctx context.Context, in *QueryTokenPairByL1DenomRequest, opts ...grpc.CallOption) (*QueryTokenPairByL1DenomResponse, error) { + out := new(QueryTokenPairByL1DenomResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/TokenPairByL1Denom", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenPairByL2Denom(ctx context.Context, in *QueryTokenPairByL2DenomRequest, opts ...grpc.CallOption) (*QueryTokenPairByL2DenomResponse, error) { + out := new(QueryTokenPairByL2DenomResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/TokenPairByL2Denom", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenPairs(ctx context.Context, in *QueryTokenPairsRequest, opts ...grpc.CallOption) (*QueryTokenPairsResponse, error) { + out := new(QueryTokenPairsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/TokenPairs", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) OutputProposal(ctx context.Context, in *QueryOutputProposalRequest, opts ...grpc.CallOption) (*QueryOutputProposalResponse, error) { + out := new(QueryOutputProposalResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/OutputProposal", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) OutputProposals(ctx context.Context, in *QueryOutputProposalsRequest, opts ...grpc.CallOption) (*QueryOutputProposalsResponse, error) { + out := new(QueryOutputProposalsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/OutputProposals", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Bridge queries bridge info. + Bridge(context.Context, *QueryBridgeRequest) (*QueryBridgeResponse, error) + // Bridges queries bridge infos. + Bridges(context.Context, *QueryBridgesRequest) (*QueryBridgesResponse, error) + // TokenPairByL1Denom queries token pair by l1 denom. + TokenPairByL1Denom(context.Context, *QueryTokenPairByL1DenomRequest) (*QueryTokenPairByL1DenomResponse, error) + // TokenPairByL2Denom queries token pair by l2 denom. + TokenPairByL2Denom(context.Context, *QueryTokenPairByL2DenomRequest) (*QueryTokenPairByL2DenomResponse, error) + // TokenPairs queries all (l1 denom, l2 denom) pair. + TokenPairs(context.Context, *QueryTokenPairsRequest) (*QueryTokenPairsResponse, error) + // OutputProposal queries output proposal by output index. + OutputProposal(context.Context, *QueryOutputProposalRequest) (*QueryOutputProposalResponse, error) + // OutputProposals queries all output proposals. + OutputProposals(context.Context, *QueryOutputProposalsRequest) (*QueryOutputProposalsResponse, error) + // Parameters queries the rollup parameters. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Bridge(ctx context.Context, req *QueryBridgeRequest) (*QueryBridgeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Bridge not implemented") +} +func (*UnimplementedQueryServer) Bridges(ctx context.Context, req *QueryBridgesRequest) (*QueryBridgesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Bridges not implemented") +} +func (*UnimplementedQueryServer) TokenPairByL1Denom(ctx context.Context, req *QueryTokenPairByL1DenomRequest) (*QueryTokenPairByL1DenomResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenPairByL1Denom not implemented") +} +func (*UnimplementedQueryServer) TokenPairByL2Denom(ctx context.Context, req *QueryTokenPairByL2DenomRequest) (*QueryTokenPairByL2DenomResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenPairByL2Denom not implemented") +} +func (*UnimplementedQueryServer) TokenPairs(ctx context.Context, req *QueryTokenPairsRequest) (*QueryTokenPairsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenPairs not implemented") +} +func (*UnimplementedQueryServer) OutputProposal(ctx context.Context, req *QueryOutputProposalRequest) (*QueryOutputProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method OutputProposal not implemented") +} +func (*UnimplementedQueryServer) OutputProposals(ctx context.Context, req *QueryOutputProposalsRequest) (*QueryOutputProposalsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method OutputProposals not implemented") +} +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Bridge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryBridgeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Bridge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/Bridge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Bridge(ctx, req.(*QueryBridgeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Bridges_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryBridgesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Bridges(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/Bridges", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Bridges(ctx, req.(*QueryBridgesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenPairByL1Denom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenPairByL1DenomRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenPairByL1Denom(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/TokenPairByL1Denom", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenPairByL1Denom(ctx, req.(*QueryTokenPairByL1DenomRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenPairByL2Denom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenPairByL2DenomRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenPairByL2Denom(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/TokenPairByL2Denom", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenPairByL2Denom(ctx, req.(*QueryTokenPairByL2DenomRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenPairs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenPairsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenPairs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/TokenPairs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenPairs(ctx, req.(*QueryTokenPairsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_OutputProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryOutputProposalRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).OutputProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/OutputProposal", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).OutputProposal(ctx, req.(*QueryOutputProposalRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_OutputProposals_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryOutputProposalsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).OutputProposals(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/OutputProposals", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).OutputProposals(ctx, req.(*QueryOutputProposalsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "op_init.op_host.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Bridge", + Handler: _Query_Bridge_Handler, + }, + { + MethodName: "Bridges", + Handler: _Query_Bridges_Handler, + }, + { + MethodName: "TokenPairByL1Denom", + Handler: _Query_TokenPairByL1Denom_Handler, + }, + { + MethodName: "TokenPairByL2Denom", + Handler: _Query_TokenPairByL2Denom_Handler, + }, + { + MethodName: "TokenPairs", + Handler: _Query_TokenPairs_Handler, + }, + { + MethodName: "OutputProposal", + Handler: _Query_OutputProposal_Handler, + }, + { + MethodName: "OutputProposals", + Handler: _Query_OutputProposals_Handler, + }, + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "op_init/op_host/v1/query.proto", +} + +func (m *QueryBridgeRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryBridgeRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryBridgeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryBridgeResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryBridgeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryBridgeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.BridgeConfig.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryBridgesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryBridgesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryBridgesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryBridgesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryBridgesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryBridgesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Bridges) > 0 { + for iNdEx := len(m.Bridges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Bridges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenPairByL1DenomRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenPairByL1DenomRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenPairByL1DenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.L1Denom) > 0 { + i -= len(m.L1Denom) + copy(dAtA[i:], m.L1Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.L1Denom))) + i-- + dAtA[i] = 0x12 + } + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenPairByL1DenomResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenPairByL1DenomResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenPairByL1DenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.TokenPair.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryTokenPairByL2DenomRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenPairByL2DenomRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenPairByL2DenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.L2Denom) > 0 { + i -= len(m.L2Denom) + copy(dAtA[i:], m.L2Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.L2Denom))) + i-- + dAtA[i] = 0x12 + } + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenPairByL2DenomResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenPairByL2DenomResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenPairByL2DenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.TokenPair.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryTokenPairsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenPairsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenPairsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryTokenPairsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryTokenPairsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryTokenPairsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.TokenPairs) > 0 { + for iNdEx := len(m.TokenPairs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenPairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryOutputProposalRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryOutputProposalRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryOutputProposalRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OutputIndex != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.OutputIndex)) + i-- + dAtA[i] = 0x10 + } + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryOutputProposalResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryOutputProposalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryOutputProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.OutputProposal.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if m.OutputIndex != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.OutputIndex)) + i-- + dAtA[i] = 0x10 + } + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryOutputProposalsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryOutputProposalsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryOutputProposalsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OutputIndex != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.OutputIndex)) + i-- + dAtA[i] = 0x10 + } + if m.BridgeId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryOutputProposalsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryOutputProposalsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryOutputProposalsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OutputProposals) > 0 { + for iNdEx := len(m.OutputProposals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OutputProposals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryBridgeRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + return n +} + +func (m *QueryBridgeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + l = m.BridgeConfig.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryBridgesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryBridgesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Bridges) > 0 { + for _, e := range m.Bridges { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenPairByL1DenomRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + l = len(m.L1Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenPairByL1DenomResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.TokenPair.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryTokenPairByL2DenomRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + l = len(m.L2Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenPairByL2DenomResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.TokenPair.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryTokenPairsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryTokenPairsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.TokenPairs) > 0 { + for _, e := range m.TokenPairs { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryOutputProposalRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + if m.OutputIndex != 0 { + n += 1 + sovQuery(uint64(m.OutputIndex)) + } + return n +} + +func (m *QueryOutputProposalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + if m.OutputIndex != 0 { + n += 1 + sovQuery(uint64(m.OutputIndex)) + } + l = m.OutputProposal.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryOutputProposalsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovQuery(uint64(m.BridgeId)) + } + if m.OutputIndex != 0 { + n += 1 + sovQuery(uint64(m.OutputIndex)) + } + return n +} + +func (m *QueryOutputProposalsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.OutputProposals) > 0 { + for _, e := range m.OutputProposals { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryBridgeRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryBridgeRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryBridgeRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryBridgeResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryBridgeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryBridgeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BridgeConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryBridgesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryBridgesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryBridgesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryBridgesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryBridgesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryBridgesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bridges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bridges = append(m.Bridges, QueryBridgeResponse{}) + if err := m.Bridges[len(m.Bridges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenPairByL1DenomRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenPairByL1DenomRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenPairByL1DenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field L1Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.L1Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenPairByL1DenomResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenPairByL1DenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenPairByL1DenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenPair", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TokenPair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenPairByL2DenomRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenPairByL2DenomRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenPairByL2DenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field L2Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.L2Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenPairByL2DenomResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenPairByL2DenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenPairByL2DenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenPair", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TokenPair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenPairsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenPairsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenPairsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryTokenPairsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryTokenPairsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryTokenPairsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenPairs = append(m.TokenPairs, TokenPair{}) + if err := m.TokenPairs[len(m.TokenPairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryOutputProposalRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryOutputProposalRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryOutputProposalRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputIndex", wireType) + } + m.OutputIndex = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OutputIndex |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryOutputProposalResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryOutputProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryOutputProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputIndex", wireType) + } + m.OutputIndex = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OutputIndex |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputProposal", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.OutputProposal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryOutputProposalsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryOutputProposalsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryOutputProposalsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputIndex", wireType) + } + m.OutputIndex = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OutputIndex |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryOutputProposalsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryOutputProposalsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryOutputProposalsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputProposals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OutputProposals = append(m.OutputProposals, QueryOutputProposalResponse{}) + if err := m.OutputProposals[len(m.OutputProposals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/op_host/types/query.pb.gw.go b/x/op_host/types/query.pb.gw.go new file mode 100644 index 00000000..c1d489a0 --- /dev/null +++ b/x/op_host/types/query.pb.gw.go @@ -0,0 +1,936 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: op_init/op_host/v1/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Query_Bridge_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryBridgeRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + msg, err := client.Bridge(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Bridge_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryBridgeRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + msg, err := server.Bridge(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_Bridges_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_Bridges_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryBridgesRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Bridges_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Bridges(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Bridges_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryBridgesRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Bridges_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.Bridges(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_TokenPairByL1Denom_0 = &utilities.DoubleArray{Encoding: map[string]int{"bridge_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Query_TokenPairByL1Denom_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenPairByL1DenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TokenPairByL1Denom_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.TokenPairByL1Denom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenPairByL1Denom_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenPairByL1DenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TokenPairByL1Denom_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.TokenPairByL1Denom(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_TokenPairByL2Denom_0 = &utilities.DoubleArray{Encoding: map[string]int{"bridge_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Query_TokenPairByL2Denom_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenPairByL2DenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TokenPairByL2Denom_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.TokenPairByL2Denom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenPairByL2Denom_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenPairByL2DenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TokenPairByL2Denom_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.TokenPairByL2Denom(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_TokenPairs_0 = &utilities.DoubleArray{Encoding: map[string]int{"bridge_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Query_TokenPairs_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenPairsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TokenPairs_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.TokenPairs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_TokenPairs_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryTokenPairsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TokenPairs_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.TokenPairs(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_OutputProposal_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryOutputProposalRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + val, ok = pathParams["output_index"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "output_index") + } + + protoReq.OutputIndex, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "output_index", err) + } + + msg, err := client.OutputProposal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_OutputProposal_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryOutputProposalRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + val, ok = pathParams["output_index"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "output_index") + } + + protoReq.OutputIndex, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "output_index", err) + } + + msg, err := server.OutputProposal(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_OutputProposals_0 = &utilities.DoubleArray{Encoding: map[string]int{"bridge_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_Query_OutputProposals_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryOutputProposalsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_OutputProposals_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.OutputProposals(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_OutputProposals_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryOutputProposalsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["bridge_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bridge_id") + } + + protoReq.BridgeId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bridge_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_OutputProposals_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.OutputProposals(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Bridge_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Bridge_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Bridge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Bridges_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Bridges_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Bridges_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenPairByL1Denom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_TokenPairByL1Denom_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenPairByL1Denom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenPairByL2Denom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_TokenPairByL2Denom_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenPairByL2Denom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenPairs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_TokenPairs_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenPairs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_OutputProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_OutputProposal_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_OutputProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_OutputProposals_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_OutputProposals_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_OutputProposals_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Bridge_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Bridge_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Bridge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Bridges_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Bridges_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Bridges_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenPairByL1Denom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenPairByL1Denom_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenPairByL1Denom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenPairByL2Denom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenPairByL2Denom_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenPairByL2Denom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_TokenPairs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_TokenPairs_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_TokenPairs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_OutputProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_OutputProposal_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_OutputProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_OutputProposals_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_OutputProposals_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_OutputProposals_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Bridge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"op_init", "op_host", "v1", "bridges", "bridge_id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_Bridges_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"op_init", "op_host", "v1", "bridges"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TokenPairByL1Denom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"op_init", "op_host", "v1", "bridges", "bridge_id", "token_pairs", "by_l1_denom"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TokenPairByL2Denom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"op_init", "op_host", "v1", "bridges", "bridge_id", "token_pairs", "by_l2_denom"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_TokenPairs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"op_init", "op_host", "v1", "bridges", "bridge_id", "token_pairs"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_OutputProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"op_init", "op_host", "v1", "bridges", "bridge_id", "outputs", "output_index"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_OutputProposals_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"op_init", "op_host", "v1", "bridges", "bridge_id", "outputs"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"op_init", "op_host", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Bridge_0 = runtime.ForwardResponseMessage + + forward_Query_Bridges_0 = runtime.ForwardResponseMessage + + forward_Query_TokenPairByL1Denom_0 = runtime.ForwardResponseMessage + + forward_Query_TokenPairByL2Denom_0 = runtime.ForwardResponseMessage + + forward_Query_TokenPairs_0 = runtime.ForwardResponseMessage + + forward_Query_OutputProposal_0 = runtime.ForwardResponseMessage + + forward_Query_OutputProposals_0 = runtime.ForwardResponseMessage + + forward_Query_Params_0 = runtime.ForwardResponseMessage +) diff --git a/x/op_host/types/tx.pb.go b/x/op_host/types/tx.pb.go new file mode 100644 index 00000000..7c1ef6f2 --- /dev/null +++ b/x/op_host/types/tx.pb.go @@ -0,0 +1,3925 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_host/v1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/codec/types" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + _ "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + math_bits "math/bits" + time "time" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgRecordBatch is no_op message, which is only for tx indexing. +type MsgRecordBatch struct { + Submitter string `protobuf:"bytes,1,opt,name=submitter,proto3" json:"submitter,omitempty"` + BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + BatchBytes []byte `protobuf:"bytes,3,opt,name=batch_bytes,json=batchBytes,proto3" json:"batch_bytes,omitempty"` +} + +func (m *MsgRecordBatch) Reset() { *m = MsgRecordBatch{} } +func (m *MsgRecordBatch) String() string { return proto.CompactTextString(m) } +func (*MsgRecordBatch) ProtoMessage() {} +func (*MsgRecordBatch) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{0} +} +func (m *MsgRecordBatch) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRecordBatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRecordBatch.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRecordBatch) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRecordBatch.Merge(m, src) +} +func (m *MsgRecordBatch) XXX_Size() int { + return m.Size() +} +func (m *MsgRecordBatch) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRecordBatch.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRecordBatch proto.InternalMessageInfo + +// MsgRecordBatchResponse returns MsgRecordBatch message result data +type MsgRecordBatchResponse struct { +} + +func (m *MsgRecordBatchResponse) Reset() { *m = MsgRecordBatchResponse{} } +func (m *MsgRecordBatchResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRecordBatchResponse) ProtoMessage() {} +func (*MsgRecordBatchResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{1} +} +func (m *MsgRecordBatchResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRecordBatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRecordBatchResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRecordBatchResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRecordBatchResponse.Merge(m, src) +} +func (m *MsgRecordBatchResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRecordBatchResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRecordBatchResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRecordBatchResponse proto.InternalMessageInfo + +// MsgCreateBridge is a message to register a new bridge with +// new bridge id. +type MsgCreateBridge struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + Config BridgeConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config"` +} + +func (m *MsgCreateBridge) Reset() { *m = MsgCreateBridge{} } +func (m *MsgCreateBridge) String() string { return proto.CompactTextString(m) } +func (*MsgCreateBridge) ProtoMessage() {} +func (*MsgCreateBridge) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{2} +} +func (m *MsgCreateBridge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateBridge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateBridge.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateBridge) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateBridge.Merge(m, src) +} +func (m *MsgCreateBridge) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateBridge) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateBridge.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateBridge proto.InternalMessageInfo + +// MsgCreateBridgeResponse returns MsgCreateBridge message +// result data +type MsgCreateBridgeResponse struct { + BridgeId uint64 `protobuf:"varint,1,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` +} + +func (m *MsgCreateBridgeResponse) Reset() { *m = MsgCreateBridgeResponse{} } +func (m *MsgCreateBridgeResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateBridgeResponse) ProtoMessage() {} +func (*MsgCreateBridgeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{3} +} +func (m *MsgCreateBridgeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateBridgeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateBridgeResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateBridgeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateBridgeResponse.Merge(m, src) +} +func (m *MsgCreateBridgeResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateBridgeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateBridgeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateBridgeResponse proto.InternalMessageInfo + +// MsgProposeOutput is a message to submit l2 block proposal. +type MsgProposeOutput struct { + Proposer string `protobuf:"bytes,1,opt,name=proposer,proto3" json:"proposer,omitempty" yaml:"proposer"` + BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + OutputRoot []byte `protobuf:"bytes,3,opt,name=output_root,json=outputRoot,proto3" json:"output_root,omitempty"` + L2BlockTime time.Time `protobuf:"bytes,4,opt,name=l2_block_time,json=l2BlockTime,proto3,stdtime" json:"l2_block_time"` +} + +func (m *MsgProposeOutput) Reset() { *m = MsgProposeOutput{} } +func (m *MsgProposeOutput) String() string { return proto.CompactTextString(m) } +func (*MsgProposeOutput) ProtoMessage() {} +func (*MsgProposeOutput) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{4} +} +func (m *MsgProposeOutput) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgProposeOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgProposeOutput.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgProposeOutput) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgProposeOutput.Merge(m, src) +} +func (m *MsgProposeOutput) XXX_Size() int { + return m.Size() +} +func (m *MsgProposeOutput) XXX_DiscardUnknown() { + xxx_messageInfo_MsgProposeOutput.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgProposeOutput proto.InternalMessageInfo + +// MsgProposeOutputResponse returns deposit result data +type MsgProposeOutputResponse struct { +} + +func (m *MsgProposeOutputResponse) Reset() { *m = MsgProposeOutputResponse{} } +func (m *MsgProposeOutputResponse) String() string { return proto.CompactTextString(m) } +func (*MsgProposeOutputResponse) ProtoMessage() {} +func (*MsgProposeOutputResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{5} +} +func (m *MsgProposeOutputResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgProposeOutputResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgProposeOutputResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgProposeOutputResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgProposeOutputResponse.Merge(m, src) +} +func (m *MsgProposeOutputResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgProposeOutputResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgProposeOutputResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgProposeOutputResponse proto.InternalMessageInfo + +// MsgDeleteOutput is a message to delete unfinalized l2 output proposal. +type MsgDeleteOutput struct { + Challenger string `protobuf:"bytes,1,opt,name=challenger,proto3" json:"challenger,omitempty" yaml:"challenger"` + BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + OutputIndex uint64 `protobuf:"varint,3,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` +} + +func (m *MsgDeleteOutput) Reset() { *m = MsgDeleteOutput{} } +func (m *MsgDeleteOutput) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteOutput) ProtoMessage() {} +func (*MsgDeleteOutput) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{6} +} +func (m *MsgDeleteOutput) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteOutput.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDeleteOutput) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteOutput.Merge(m, src) +} +func (m *MsgDeleteOutput) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteOutput) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteOutput.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteOutput proto.InternalMessageInfo + +// MsgDeleteOutputResponse returns a message handle result. +type MsgDeleteOutputResponse struct { +} + +func (m *MsgDeleteOutputResponse) Reset() { *m = MsgDeleteOutputResponse{} } +func (m *MsgDeleteOutputResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteOutputResponse) ProtoMessage() {} +func (*MsgDeleteOutputResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{7} +} +func (m *MsgDeleteOutputResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteOutputResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteOutputResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDeleteOutputResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteOutputResponse.Merge(m, src) +} +func (m *MsgDeleteOutputResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteOutputResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteOutputResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteOutputResponse proto.InternalMessageInfo + +// MsgDeposit defines a SDK message for adding a new validator. +type MsgDeposit struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,4,rep,name=amount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amount" yaml:"amount"` + Data []byte `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *MsgDeposit) Reset() { *m = MsgDeposit{} } +func (m *MsgDeposit) String() string { return proto.CompactTextString(m) } +func (*MsgDeposit) ProtoMessage() {} +func (*MsgDeposit) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{8} +} +func (m *MsgDeposit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeposit.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDeposit) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeposit.Merge(m, src) +} +func (m *MsgDeposit) XXX_Size() int { + return m.Size() +} +func (m *MsgDeposit) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeposit.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeposit proto.InternalMessageInfo + +// MsgDepositResponse returns a message handle result. +type MsgDepositResponse struct { + Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"` +} + +func (m *MsgDepositResponse) Reset() { *m = MsgDepositResponse{} } +func (m *MsgDepositResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDepositResponse) ProtoMessage() {} +func (*MsgDepositResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{9} +} +func (m *MsgDepositResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDepositResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDepositResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDepositResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDepositResponse.Merge(m, src) +} +func (m *MsgDepositResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDepositResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDepositResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDepositResponse proto.InternalMessageInfo + +// MsgClaim is a message to remove a validator from designated list +type MsgClaim struct { + BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + OutputIndex uint64 `protobuf:"varint,3,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` + WithdrawalProofs [][]byte `protobuf:"bytes,4,rep,name=withdrawal_proofs,json=withdrawalProofs,proto3" json:"withdrawal_proofs,omitempty"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Sequence uint64 `protobuf:"varint,5,opt,name=sequence,proto3" json:"sequence,omitempty"` + Receiver string `protobuf:"bytes,6,opt,name=receiver,proto3" json:"receiver,omitempty" yaml:"receiver"` + Amount []types.Coin `protobuf:"bytes,7,rep,name=amount,proto3" json:"amount" yaml:"amount"` + Version []byte `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` + StateRoot []byte `protobuf:"bytes,9,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` + StorageRoot []byte `protobuf:"bytes,10,opt,name=storage_root,json=storageRoot,proto3" json:"storage_root,omitempty"` + LatestBlockHash []byte `protobuf:"bytes,11,opt,name=latest_block_hash,json=latestBlockHash,proto3" json:"latest_block_hash,omitempty"` +} + +func (m *MsgClaim) Reset() { *m = MsgClaim{} } +func (m *MsgClaim) String() string { return proto.CompactTextString(m) } +func (*MsgClaim) ProtoMessage() {} +func (*MsgClaim) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{10} +} +func (m *MsgClaim) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgClaim.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgClaim) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgClaim.Merge(m, src) +} +func (m *MsgClaim) XXX_Size() int { + return m.Size() +} +func (m *MsgClaim) XXX_DiscardUnknown() { + xxx_messageInfo_MsgClaim.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgClaim proto.InternalMessageInfo + +// MsgClaimResponse returns a message handle result. +type MsgClaimResponse struct { +} + +func (m *MsgClaimResponse) Reset() { *m = MsgClaimResponse{} } +func (m *MsgClaimResponse) String() string { return proto.CompactTextString(m) } +func (*MsgClaimResponse) ProtoMessage() {} +func (*MsgClaimResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{11} +} +func (m *MsgClaimResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgClaimResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgClaimResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgClaimResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgClaimResponse.Merge(m, src) +} +func (m *MsgClaimResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgClaimResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgClaimResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgClaimResponse proto.InternalMessageInfo + +// MsgChallenge is a message to challenage +type MsgChallenge struct { + // authority is the address that controls the module + // (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` + BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty"` + // the hash of balance tree for escaping. + BalanceTreeRoot []byte `protobuf:"bytes,3,opt,name=balance_tree_root,json=balanceTreeRoot,proto3" json:"balance_tree_root,omitempty"` +} + +func (m *MsgChallenge) Reset() { *m = MsgChallenge{} } +func (m *MsgChallenge) String() string { return proto.CompactTextString(m) } +func (*MsgChallenge) ProtoMessage() {} +func (*MsgChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{12} +} +func (m *MsgChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgChallenge.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgChallenge.Merge(m, src) +} +func (m *MsgChallenge) XXX_Size() int { + return m.Size() +} +func (m *MsgChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_MsgChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgChallenge proto.InternalMessageInfo + +// MsgChallengeResponse returns a message handle result. +type MsgChallengeResponse struct { +} + +func (m *MsgChallengeResponse) Reset() { *m = MsgChallengeResponse{} } +func (m *MsgChallengeResponse) String() string { return proto.CompactTextString(m) } +func (*MsgChallengeResponse) ProtoMessage() {} +func (*MsgChallengeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{13} +} +func (m *MsgChallengeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgChallengeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgChallengeResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgChallengeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgChallengeResponse.Merge(m, src) +} +func (m *MsgChallengeResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgChallengeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgChallengeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgChallengeResponse proto.InternalMessageInfo + +// MsgUpdateParams is a message to update parameters +type MsgUpdateParams struct { + // authority is the address that controls the module + // (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` + // params are the arbitrary parameters to be updated. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{14} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +// MsgUpdateParamsResponse returns a message handle result. +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_a2d2ca120cd051cb, []int{15} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgRecordBatch)(nil), "op_init.op_host.v1.MsgRecordBatch") + proto.RegisterType((*MsgRecordBatchResponse)(nil), "op_init.op_host.v1.MsgRecordBatchResponse") + proto.RegisterType((*MsgCreateBridge)(nil), "op_init.op_host.v1.MsgCreateBridge") + proto.RegisterType((*MsgCreateBridgeResponse)(nil), "op_init.op_host.v1.MsgCreateBridgeResponse") + proto.RegisterType((*MsgProposeOutput)(nil), "op_init.op_host.v1.MsgProposeOutput") + proto.RegisterType((*MsgProposeOutputResponse)(nil), "op_init.op_host.v1.MsgProposeOutputResponse") + proto.RegisterType((*MsgDeleteOutput)(nil), "op_init.op_host.v1.MsgDeleteOutput") + proto.RegisterType((*MsgDeleteOutputResponse)(nil), "op_init.op_host.v1.MsgDeleteOutputResponse") + proto.RegisterType((*MsgDeposit)(nil), "op_init.op_host.v1.MsgDeposit") + proto.RegisterType((*MsgDepositResponse)(nil), "op_init.op_host.v1.MsgDepositResponse") + proto.RegisterType((*MsgClaim)(nil), "op_init.op_host.v1.MsgClaim") + proto.RegisterType((*MsgClaimResponse)(nil), "op_init.op_host.v1.MsgClaimResponse") + proto.RegisterType((*MsgChallenge)(nil), "op_init.op_host.v1.MsgChallenge") + proto.RegisterType((*MsgChallengeResponse)(nil), "op_init.op_host.v1.MsgChallengeResponse") + proto.RegisterType((*MsgUpdateParams)(nil), "op_init.op_host.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "op_init.op_host.v1.MsgUpdateParamsResponse") +} + +func init() { proto.RegisterFile("op_init/op_host/v1/tx.proto", fileDescriptor_a2d2ca120cd051cb) } + +var fileDescriptor_a2d2ca120cd051cb = []byte{ + // 1274 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xc1, 0x6f, 0xdb, 0x54, + 0x18, 0x8f, 0xbb, 0x34, 0x6d, 0x5e, 0x5a, 0xda, 0x5a, 0xd5, 0xe6, 0x79, 0x2c, 0xc9, 0xcc, 0x04, + 0x59, 0xb6, 0x3a, 0x34, 0x48, 0x3b, 0xe4, 0xb6, 0x14, 0x01, 0x63, 0x8a, 0x56, 0xc2, 0x10, 0x12, + 0x12, 0x0a, 0xcf, 0xf6, 0x9b, 0x63, 0xcd, 0xf6, 0x33, 0x7e, 0x2f, 0x5d, 0x73, 0x43, 0x9c, 0x10, + 0xa7, 0x1d, 0xf8, 0x03, 0x26, 0x71, 0x41, 0x9c, 0x8a, 0xb4, 0x2b, 0xf7, 0x1e, 0x40, 0x9a, 0x38, + 0x71, 0x40, 0x1d, 0xb4, 0x87, 0x72, 0x43, 0xea, 0x5f, 0x80, 0xde, 0xf3, 0xb3, 0x63, 0x87, 0x38, + 0x9d, 0xc4, 0x2e, 0x5b, 0xdf, 0xf7, 0xfd, 0xbe, 0xcf, 0xdf, 0xef, 0xe7, 0xef, 0x7d, 0x9f, 0x03, + 0xae, 0xe0, 0x60, 0xe0, 0xf8, 0x0e, 0x6d, 0xe1, 0x60, 0x30, 0xc4, 0x84, 0xb6, 0xf6, 0xb6, 0x5b, + 0x74, 0x5f, 0x0f, 0x42, 0x4c, 0xb1, 0x2c, 0x0b, 0xa7, 0x2e, 0x9c, 0xfa, 0xde, 0xb6, 0xba, 0x01, + 0x3d, 0xc7, 0xc7, 0x2d, 0xfe, 0x6f, 0x04, 0x53, 0xab, 0x26, 0x26, 0x1e, 0x26, 0x2d, 0x03, 0x12, + 0xd4, 0xda, 0xdb, 0x36, 0x10, 0x85, 0xdb, 0x2d, 0x13, 0x3b, 0xbe, 0xf0, 0x5f, 0x12, 0x7e, 0x8f, + 0xd8, 0x2c, 0xbd, 0x47, 0x6c, 0xe1, 0xb8, 0x1c, 0x39, 0x06, 0xfc, 0xd4, 0x8a, 0x0e, 0xc2, 0xb5, + 0x69, 0x63, 0x1b, 0x47, 0x76, 0xf6, 0x57, 0x1c, 0x60, 0x63, 0x6c, 0xbb, 0xa8, 0xc5, 0x4f, 0xc6, + 0xe8, 0x61, 0x0b, 0xfa, 0x63, 0xe1, 0xaa, 0x4d, 0xbb, 0xa8, 0xe3, 0x21, 0x42, 0xa1, 0x17, 0xc4, + 0x55, 0xce, 0x62, 0x3a, 0x0e, 0x90, 0x78, 0xa2, 0xf6, 0x93, 0x04, 0x5e, 0xeb, 0x11, 0xbb, 0x8f, + 0x4c, 0x1c, 0x5a, 0x5d, 0x48, 0xcd, 0xa1, 0x7c, 0x1b, 0x94, 0xc9, 0xc8, 0xf0, 0x1c, 0x4a, 0x51, + 0xa8, 0x48, 0x75, 0xa9, 0x51, 0xee, 0x2a, 0xbf, 0x3d, 0xdb, 0xda, 0x14, 0x95, 0xde, 0xb1, 0xac, + 0x10, 0x11, 0xf2, 0x31, 0x0d, 0x1d, 0xdf, 0xee, 0x4f, 0xa0, 0xf2, 0x15, 0x50, 0x36, 0x42, 0xc7, + 0xb2, 0xd1, 0xc0, 0xb1, 0x94, 0x85, 0xba, 0xd4, 0x28, 0xf6, 0x97, 0x23, 0xc3, 0x5d, 0x4b, 0xae, + 0x81, 0x8a, 0xc1, 0xb2, 0x0f, 0x8c, 0x31, 0x45, 0x44, 0xb9, 0x50, 0x97, 0x1a, 0x2b, 0x7d, 0xc0, + 0x4d, 0x5d, 0x66, 0xe9, 0xdc, 0xf8, 0xfa, 0xf4, 0xa0, 0x39, 0xc9, 0xf6, 0xed, 0xe9, 0x41, 0xf3, + 0x62, 0x5c, 0x73, 0xb6, 0x40, 0x4d, 0x01, 0x17, 0xb3, 0x96, 0x3e, 0x22, 0x01, 0xf6, 0x09, 0xd2, + 0x9e, 0x49, 0x60, 0xad, 0x47, 0xec, 0x9d, 0x10, 0x41, 0x8a, 0xba, 0xfc, 0xd9, 0x72, 0x1b, 0x2c, + 0x99, 0xec, 0x8c, 0xcf, 0x27, 0x13, 0x03, 0xe5, 0x1d, 0x50, 0x32, 0xb1, 0xff, 0xd0, 0xb1, 0x39, + 0x8f, 0x4a, 0xbb, 0xae, 0xff, 0xb7, 0x27, 0xf4, 0x28, 0xff, 0x0e, 0xc7, 0x75, 0xcb, 0x87, 0x47, + 0xb5, 0xc2, 0x0f, 0xa7, 0x07, 0x4d, 0xa9, 0x2f, 0x42, 0x3b, 0x0d, 0xc6, 0x28, 0x4e, 0xc9, 0xf8, + 0x5c, 0x4a, 0xf1, 0x49, 0x97, 0xa8, 0xdd, 0x06, 0x97, 0xa6, 0x4c, 0x31, 0xa3, 0xac, 0xa8, 0x52, + 0x56, 0x54, 0xed, 0xbb, 0x05, 0xb0, 0xde, 0x23, 0xf6, 0x6e, 0x88, 0x03, 0x4c, 0xd0, 0xfd, 0x11, + 0x0d, 0x46, 0x54, 0x7e, 0x1f, 0x2c, 0x07, 0x91, 0x21, 0x26, 0x7c, 0xf3, 0xec, 0xa8, 0xb6, 0x36, + 0x86, 0x9e, 0xdb, 0xd1, 0x62, 0x8f, 0x96, 0xab, 0x41, 0x12, 0x7c, 0xee, 0xfb, 0xc4, 0xfc, 0x79, + 0x83, 0x10, 0x63, 0x1a, 0xbf, 0xcf, 0xc8, 0xd4, 0xc7, 0x98, 0xca, 0x3d, 0xb0, 0xea, 0xb6, 0x07, + 0x86, 0x8b, 0xcd, 0x47, 0x03, 0xd6, 0x94, 0x4a, 0x91, 0x2b, 0xa9, 0xea, 0x51, 0xc7, 0xea, 0x71, + 0xc7, 0xea, 0x0f, 0xe2, 0x8e, 0xed, 0xae, 0x32, 0x0d, 0x9f, 0xbc, 0xa8, 0x49, 0x91, 0x8e, 0x15, + 0xb7, 0xdd, 0x65, 0xe1, 0x0c, 0xd0, 0x69, 0x32, 0x31, 0x93, 0xda, 0x98, 0x9a, 0x4a, 0x4a, 0xcd, + 0x8c, 0x02, 0x9a, 0x0a, 0x94, 0x69, 0x5b, 0xd2, 0x21, 0xbf, 0x46, 0x1d, 0xf2, 0x2e, 0x72, 0x11, + 0x8d, 0x15, 0xeb, 0x01, 0x60, 0x0e, 0xa1, 0xeb, 0x22, 0xdf, 0x4e, 0x34, 0xdb, 0x3a, 0x3b, 0xaa, + 0x6d, 0x44, 0x9a, 0x4d, 0x7c, 0xf9, 0xaa, 0xa5, 0x12, 0xcc, 0xd7, 0xed, 0x1a, 0x58, 0x11, 0xba, + 0x39, 0xbe, 0x85, 0xf6, 0xb9, 0x70, 0xc5, 0xbe, 0xd0, 0xf2, 0x2e, 0x33, 0x75, 0x6e, 0x32, 0xaa, + 0xa9, 0x84, 0xd3, 0xad, 0x93, 0xae, 0x5d, 0xbb, 0xcc, 0x5b, 0x27, 0x6d, 0x4a, 0xa8, 0xfe, 0xb1, + 0x00, 0x00, 0xf7, 0x05, 0x98, 0x38, 0x54, 0xbe, 0x03, 0x4a, 0x04, 0xf9, 0x56, 0xc2, 0xf0, 0xc6, + 0xd9, 0x51, 0x6d, 0x35, 0x62, 0x18, 0xd9, 0xf3, 0xd9, 0x89, 0xc0, 0xf9, 0xcc, 0x1a, 0x60, 0x81, + 0x62, 0xce, 0x67, 0xde, 0x15, 0x5b, 0xa0, 0x58, 0x1e, 0x83, 0x12, 0xf4, 0xf0, 0xc8, 0xa7, 0x4a, + 0xb1, 0x7e, 0xa1, 0x51, 0x69, 0x5f, 0xd6, 0x05, 0x94, 0x8d, 0x52, 0x5d, 0x8c, 0x52, 0x7d, 0x07, + 0x3b, 0x7e, 0xf7, 0x3d, 0xd6, 0x12, 0x93, 0x42, 0xa3, 0x30, 0xed, 0xc7, 0x17, 0xb5, 0x86, 0xed, + 0xd0, 0xe1, 0xc8, 0xd0, 0x4d, 0xec, 0x89, 0x11, 0x2a, 0xfe, 0xdb, 0x22, 0xd6, 0x23, 0x31, 0xe1, + 0x58, 0x06, 0x22, 0xee, 0x64, 0x14, 0x29, 0x5f, 0x05, 0x45, 0x0b, 0x52, 0xa8, 0x2c, 0xb2, 0x7e, + 0xe5, 0x97, 0x96, 0x37, 0x5b, 0xa1, 0xcf, 0xcd, 0x9d, 0xe6, 0x37, 0x4f, 0x6b, 0x85, 0xbf, 0x9f, + 0xd6, 0x0a, 0xec, 0x15, 0x08, 0xd6, 0x4c, 0x7e, 0x39, 0x23, 0x3f, 0xd7, 0x53, 0x7b, 0x1b, 0xc8, + 0x93, 0x53, 0x72, 0x5f, 0x55, 0xb0, 0x4c, 0xd0, 0x97, 0x23, 0xe4, 0x9b, 0x28, 0xbe, 0xae, 0xf1, + 0x59, 0xfb, 0xbe, 0x08, 0x96, 0xd9, 0x3d, 0x77, 0xa1, 0xe3, 0xfd, 0xdf, 0x2e, 0x91, 0x6f, 0x83, + 0x8d, 0xc7, 0x0e, 0x1d, 0x5a, 0x21, 0x7c, 0x0c, 0x5d, 0xb6, 0x4b, 0xf0, 0x43, 0xc2, 0xf5, 0xcc, + 0xd0, 0x5a, 0x9f, 0x60, 0x76, 0x39, 0xe4, 0x55, 0xb4, 0x41, 0x9a, 0xe3, 0x62, 0x96, 0x23, 0x9b, + 0x3e, 0x21, 0x32, 0x91, 0xb3, 0x87, 0x42, 0xa5, 0x34, 0x3d, 0x7d, 0x62, 0xcf, 0x9c, 0xe9, 0x13, + 0x43, 0xe4, 0x5e, 0xd2, 0x24, 0x4b, 0xe7, 0x35, 0x89, 0x3a, 0xb3, 0x49, 0xb2, 0x2f, 0x5e, 0x01, + 0x4b, 0x7b, 0x28, 0x24, 0x0e, 0xf6, 0x95, 0x65, 0x3e, 0xab, 0xe2, 0xa3, 0x7c, 0x15, 0x00, 0x42, + 0x21, 0x45, 0xd1, 0x20, 0x2b, 0x73, 0x67, 0x99, 0x5b, 0xf8, 0x1c, 0xbb, 0x06, 0x56, 0x08, 0xc5, + 0x21, 0xb4, 0x05, 0x00, 0x70, 0x40, 0x45, 0xd8, 0x38, 0xa4, 0x09, 0x36, 0x5c, 0x48, 0x11, 0xa1, + 0x62, 0xdc, 0x0d, 0x21, 0x19, 0x2a, 0x15, 0x8e, 0x5b, 0x8b, 0x1c, 0x7c, 0x8e, 0x7d, 0x00, 0xc9, + 0xb0, 0x53, 0x9f, 0xea, 0xac, 0xf5, 0xf4, 0x4e, 0x60, 0x8d, 0xa1, 0xc9, 0x7c, 0xa6, 0xf3, 0xbf, + 0x93, 0xab, 0xfc, 0x8b, 0x04, 0x56, 0x98, 0x31, 0x9e, 0x09, 0xf2, 0x87, 0xa0, 0x0c, 0x47, 0x74, + 0x88, 0x43, 0x87, 0x8e, 0xc5, 0x8b, 0xbc, 0x75, 0x76, 0x54, 0x5b, 0x17, 0x0a, 0xc4, 0xae, 0x7c, + 0xa1, 0x27, 0xe1, 0xf3, 0x3b, 0xb1, 0x09, 0x36, 0x0c, 0xe8, 0x42, 0xdf, 0x44, 0x03, 0x1a, 0x22, + 0x94, 0x9e, 0xf6, 0x6b, 0xc2, 0xf1, 0x20, 0x44, 0x5c, 0x87, 0xce, 0x5b, 0x7c, 0x85, 0x27, 0x89, + 0x19, 0xbd, 0xcd, 0x34, 0xbd, 0xb8, 0x7a, 0xed, 0x22, 0xd8, 0x4c, 0x9f, 0x13, 0x9a, 0x3f, 0x47, + 0xc3, 0xf9, 0x93, 0xc0, 0x82, 0x14, 0xed, 0xc2, 0x10, 0x7a, 0xe4, 0x95, 0x32, 0x6d, 0x83, 0x52, + 0xc0, 0xb3, 0x8a, 0xb5, 0xae, 0xce, 0x5a, 0xeb, 0xd1, 0x73, 0xfb, 0x02, 0x19, 0x2d, 0x9e, 0x2c, + 0xa9, 0xf4, 0x30, 0x4e, 0xd7, 0x2a, 0x86, 0x71, 0xda, 0x14, 0x53, 0x6b, 0xff, 0xb3, 0x08, 0x2e, + 0xf4, 0x88, 0x2d, 0x7f, 0x0e, 0x2a, 0xe9, 0x6f, 0x2d, 0x6d, 0x56, 0x05, 0xd9, 0x8f, 0x1b, 0xb5, + 0x79, 0x3e, 0x26, 0x19, 0x3f, 0x5f, 0x80, 0x95, 0xcc, 0xc7, 0xcf, 0x1b, 0x39, 0xb1, 0x69, 0x90, + 0x7a, 0xf3, 0x25, 0x40, 0xc9, 0x13, 0x4c, 0xb0, 0x9a, 0xfd, 0xde, 0xb8, 0x9e, 0x13, 0x9d, 0x41, + 0xa9, 0xb7, 0x5e, 0x06, 0x95, 0xa6, 0x91, 0xd9, 0xd0, 0x79, 0x34, 0xd2, 0xa0, 0x5c, 0x1a, 0xb3, + 0x96, 0xa3, 0xfc, 0x11, 0x58, 0x8a, 0x17, 0x63, 0x35, 0x37, 0x8e, 0xfb, 0xd5, 0x37, 0xe7, 0xfb, + 0x93, 0x94, 0xf7, 0xc0, 0x62, 0x34, 0xda, 0x5f, 0xcf, 0xd3, 0x93, 0x79, 0xd5, 0xeb, 0xf3, 0xbc, + 0x49, 0xb2, 0x4f, 0x41, 0x79, 0x72, 0xdb, 0xeb, 0x79, 0x21, 0x31, 0x42, 0x6d, 0x9c, 0x87, 0x48, + 0x4b, 0x9b, 0xb9, 0x5f, 0x79, 0xd2, 0xa6, 0x41, 0xb9, 0xd2, 0xce, 0x6a, 0x75, 0x75, 0xf1, 0x2b, + 0x36, 0x79, 0xbb, 0xf7, 0x0e, 0xff, 0xaa, 0x16, 0x0e, 0x8f, 0xab, 0xd2, 0xf3, 0xe3, 0xaa, 0xf4, + 0xe7, 0x71, 0x55, 0x7a, 0x72, 0x52, 0x2d, 0x3c, 0x3f, 0xa9, 0x16, 0x7e, 0x3f, 0xa9, 0x16, 0x3e, + 0xdb, 0x4a, 0xed, 0x6f, 0x96, 0xd8, 0x81, 0x5b, 0x2e, 0x34, 0x48, 0xeb, 0xfe, 0x2e, 0xff, 0xb5, + 0xb2, 0x9f, 0xfc, 0x5e, 0xe1, 0xab, 0xdc, 0x28, 0xf1, 0xcf, 0xc5, 0x77, 0xfe, 0x0d, 0x00, 0x00, + 0xff, 0xff, 0x7e, 0xc0, 0x1e, 0x9e, 0xb9, 0x0d, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // RecordBatch defines a rpc handler method for MsgRecordBatch. + RecordBatch(ctx context.Context, in *MsgRecordBatch, opts ...grpc.CallOption) (*MsgRecordBatchResponse, error) + // CreateBridge defines a rpc handler method for MsgCreateBridge. + CreateBridge(ctx context.Context, in *MsgCreateBridge, opts ...grpc.CallOption) (*MsgCreateBridgeResponse, error) + // ProposeOutput defines a rpc handler method for MsgProposeOutput. + ProposeOutput(ctx context.Context, in *MsgProposeOutput, opts ...grpc.CallOption) (*MsgProposeOutputResponse, error) + // DeleteOutput defines a rpc handler method for MsgDeleteOutput. + DeleteOutput(ctx context.Context, in *MsgDeleteOutput, opts ...grpc.CallOption) (*MsgDeleteOutputResponse, error) + // Deposit defines a user facing l1 => l2 token transfer interface. + Deposit(ctx context.Context, in *MsgDeposit, opts ...grpc.CallOption) (*MsgDepositResponse, error) + // Claim defines a user facing l2 => l1 token transfer interface. + Claim(ctx context.Context, in *MsgClaim, opts ...grpc.CallOption) (*MsgClaimResponse, error) + // Challenge defines a rpc handler method for MsgChallenge. + Challenge(ctx context.Context, in *MsgChallenge, opts ...grpc.CallOption) (*MsgChallengeResponse, error) + // UpdateParams defines an operation for updating the + // x/rollup module parameters. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) RecordBatch(ctx context.Context, in *MsgRecordBatch, opts ...grpc.CallOption) (*MsgRecordBatchResponse, error) { + out := new(MsgRecordBatchResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/RecordBatch", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateBridge(ctx context.Context, in *MsgCreateBridge, opts ...grpc.CallOption) (*MsgCreateBridgeResponse, error) { + out := new(MsgCreateBridgeResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/CreateBridge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ProposeOutput(ctx context.Context, in *MsgProposeOutput, opts ...grpc.CallOption) (*MsgProposeOutputResponse, error) { + out := new(MsgProposeOutputResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/ProposeOutput", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DeleteOutput(ctx context.Context, in *MsgDeleteOutput, opts ...grpc.CallOption) (*MsgDeleteOutputResponse, error) { + out := new(MsgDeleteOutputResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/DeleteOutput", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) Deposit(ctx context.Context, in *MsgDeposit, opts ...grpc.CallOption) (*MsgDepositResponse, error) { + out := new(MsgDepositResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/Deposit", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) Claim(ctx context.Context, in *MsgClaim, opts ...grpc.CallOption) (*MsgClaimResponse, error) { + out := new(MsgClaimResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/Claim", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) Challenge(ctx context.Context, in *MsgChallenge, opts ...grpc.CallOption) (*MsgChallengeResponse, error) { + out := new(MsgChallengeResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/Challenge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/op_init.op_host.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // RecordBatch defines a rpc handler method for MsgRecordBatch. + RecordBatch(context.Context, *MsgRecordBatch) (*MsgRecordBatchResponse, error) + // CreateBridge defines a rpc handler method for MsgCreateBridge. + CreateBridge(context.Context, *MsgCreateBridge) (*MsgCreateBridgeResponse, error) + // ProposeOutput defines a rpc handler method for MsgProposeOutput. + ProposeOutput(context.Context, *MsgProposeOutput) (*MsgProposeOutputResponse, error) + // DeleteOutput defines a rpc handler method for MsgDeleteOutput. + DeleteOutput(context.Context, *MsgDeleteOutput) (*MsgDeleteOutputResponse, error) + // Deposit defines a user facing l1 => l2 token transfer interface. + Deposit(context.Context, *MsgDeposit) (*MsgDepositResponse, error) + // Claim defines a user facing l2 => l1 token transfer interface. + Claim(context.Context, *MsgClaim) (*MsgClaimResponse, error) + // Challenge defines a rpc handler method for MsgChallenge. + Challenge(context.Context, *MsgChallenge) (*MsgChallengeResponse, error) + // UpdateParams defines an operation for updating the + // x/rollup module parameters. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) RecordBatch(ctx context.Context, req *MsgRecordBatch) (*MsgRecordBatchResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecordBatch not implemented") +} +func (*UnimplementedMsgServer) CreateBridge(ctx context.Context, req *MsgCreateBridge) (*MsgCreateBridgeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateBridge not implemented") +} +func (*UnimplementedMsgServer) ProposeOutput(ctx context.Context, req *MsgProposeOutput) (*MsgProposeOutputResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProposeOutput not implemented") +} +func (*UnimplementedMsgServer) DeleteOutput(ctx context.Context, req *MsgDeleteOutput) (*MsgDeleteOutputResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteOutput not implemented") +} +func (*UnimplementedMsgServer) Deposit(ctx context.Context, req *MsgDeposit) (*MsgDepositResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Deposit not implemented") +} +func (*UnimplementedMsgServer) Claim(ctx context.Context, req *MsgClaim) (*MsgClaimResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Claim not implemented") +} +func (*UnimplementedMsgServer) Challenge(ctx context.Context, req *MsgChallenge) (*MsgChallengeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Challenge not implemented") +} +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_RecordBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRecordBatch) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RecordBatch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/RecordBatch", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RecordBatch(ctx, req.(*MsgRecordBatch)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateBridge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateBridge) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateBridge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/CreateBridge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateBridge(ctx, req.(*MsgCreateBridge)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ProposeOutput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgProposeOutput) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ProposeOutput(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/ProposeOutput", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ProposeOutput(ctx, req.(*MsgProposeOutput)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DeleteOutput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeleteOutput) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DeleteOutput(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/DeleteOutput", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DeleteOutput(ctx, req.(*MsgDeleteOutput)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_Deposit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeposit) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).Deposit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/Deposit", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Deposit(ctx, req.(*MsgDeposit)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_Claim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgClaim) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).Claim(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/Claim", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Claim(ctx, req.(*MsgClaim)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_Challenge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgChallenge) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).Challenge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/Challenge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).Challenge(ctx, req.(*MsgChallenge)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/op_init.op_host.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "op_init.op_host.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "RecordBatch", + Handler: _Msg_RecordBatch_Handler, + }, + { + MethodName: "CreateBridge", + Handler: _Msg_CreateBridge_Handler, + }, + { + MethodName: "ProposeOutput", + Handler: _Msg_ProposeOutput_Handler, + }, + { + MethodName: "DeleteOutput", + Handler: _Msg_DeleteOutput_Handler, + }, + { + MethodName: "Deposit", + Handler: _Msg_Deposit_Handler, + }, + { + MethodName: "Claim", + Handler: _Msg_Claim_Handler, + }, + { + MethodName: "Challenge", + Handler: _Msg_Challenge_Handler, + }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "op_init/op_host/v1/tx.proto", +} + +func (m *MsgRecordBatch) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRecordBatch) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRecordBatch) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.BatchBytes) > 0 { + i -= len(m.BatchBytes) + copy(dAtA[i:], m.BatchBytes) + i = encodeVarintTx(dAtA, i, uint64(len(m.BatchBytes))) + i-- + dAtA[i] = 0x1a + } + if m.BridgeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Submitter) > 0 { + i -= len(m.Submitter) + copy(dAtA[i:], m.Submitter) + i = encodeVarintTx(dAtA, i, uint64(len(m.Submitter))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRecordBatchResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRecordBatchResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRecordBatchResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgCreateBridge) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCreateBridge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateBridge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Config.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateBridgeResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCreateBridgeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateBridgeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.BridgeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgProposeOutput) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgProposeOutput) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgProposeOutput) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.L2BlockTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.L2BlockTime):]) + if err2 != nil { + return 0, err2 + } + i -= n2 + i = encodeVarintTx(dAtA, i, uint64(n2)) + i-- + dAtA[i] = 0x22 + if len(m.OutputRoot) > 0 { + i -= len(m.OutputRoot) + copy(dAtA[i:], m.OutputRoot) + i = encodeVarintTx(dAtA, i, uint64(len(m.OutputRoot))) + i-- + dAtA[i] = 0x1a + } + if m.BridgeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Proposer) > 0 { + i -= len(m.Proposer) + copy(dAtA[i:], m.Proposer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Proposer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgProposeOutputResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgProposeOutputResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgProposeOutputResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDeleteOutput) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDeleteOutput) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteOutput) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OutputIndex != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.OutputIndex)) + i-- + dAtA[i] = 0x18 + } + if m.BridgeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Challenger) > 0 { + i -= len(m.Challenger) + copy(dAtA[i:], m.Challenger) + i = encodeVarintTx(dAtA, i, uint64(len(m.Challenger))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteOutputResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDeleteOutputResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteOutputResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDeposit) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDeposit) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeposit) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintTx(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0x2a + } + if len(m.Amount) > 0 { + for iNdEx := len(m.Amount) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Amount[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.To) > 0 { + i -= len(m.To) + copy(dAtA[i:], m.To) + i = encodeVarintTx(dAtA, i, uint64(len(m.To))) + i-- + dAtA[i] = 0x1a + } + if m.BridgeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDepositResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDepositResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDepositResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Sequence != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Sequence)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgClaim) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgClaim) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.LatestBlockHash) > 0 { + i -= len(m.LatestBlockHash) + copy(dAtA[i:], m.LatestBlockHash) + i = encodeVarintTx(dAtA, i, uint64(len(m.LatestBlockHash))) + i-- + dAtA[i] = 0x5a + } + if len(m.StorageRoot) > 0 { + i -= len(m.StorageRoot) + copy(dAtA[i:], m.StorageRoot) + i = encodeVarintTx(dAtA, i, uint64(len(m.StorageRoot))) + i-- + dAtA[i] = 0x52 + } + if len(m.StateRoot) > 0 { + i -= len(m.StateRoot) + copy(dAtA[i:], m.StateRoot) + i = encodeVarintTx(dAtA, i, uint64(len(m.StateRoot))) + i-- + dAtA[i] = 0x4a + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x42 + } + if len(m.Amount) > 0 { + for iNdEx := len(m.Amount) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Amount[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintTx(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x32 + } + if m.Sequence != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Sequence)) + i-- + dAtA[i] = 0x28 + } + if len(m.WithdrawalProofs) > 0 { + for iNdEx := len(m.WithdrawalProofs) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.WithdrawalProofs[iNdEx]) + copy(dAtA[i:], m.WithdrawalProofs[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.WithdrawalProofs[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if m.OutputIndex != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.OutputIndex)) + i-- + dAtA[i] = 0x18 + } + if m.BridgeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgClaimResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgClaimResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgClaimResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgChallenge) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.BalanceTreeRoot) > 0 { + i -= len(m.BalanceTreeRoot) + copy(dAtA[i:], m.BalanceTreeRoot) + i = encodeVarintTx(dAtA, i, uint64(len(m.BalanceTreeRoot))) + i-- + dAtA[i] = 0x1a + } + if m.BridgeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BridgeId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgChallengeResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgChallengeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgChallengeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Params != nil { + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgRecordBatch) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Submitter) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BridgeId != 0 { + n += 1 + sovTx(uint64(m.BridgeId)) + } + l = len(m.BatchBytes) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRecordBatchResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgCreateBridge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Config.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgCreateBridgeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BridgeId != 0 { + n += 1 + sovTx(uint64(m.BridgeId)) + } + return n +} + +func (m *MsgProposeOutput) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Proposer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BridgeId != 0 { + n += 1 + sovTx(uint64(m.BridgeId)) + } + l = len(m.OutputRoot) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.L2BlockTime) + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgProposeOutputResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgDeleteOutput) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Challenger) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BridgeId != 0 { + n += 1 + sovTx(uint64(m.BridgeId)) + } + if m.OutputIndex != 0 { + n += 1 + sovTx(uint64(m.OutputIndex)) + } + return n +} + +func (m *MsgDeleteOutputResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgDeposit) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BridgeId != 0 { + n += 1 + sovTx(uint64(m.BridgeId)) + } + l = len(m.To) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Amount) > 0 { + for _, e := range m.Amount { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgDepositResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Sequence != 0 { + n += 1 + sovTx(uint64(m.Sequence)) + } + return n +} + +func (m *MsgClaim) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BridgeId != 0 { + n += 1 + sovTx(uint64(m.BridgeId)) + } + if m.OutputIndex != 0 { + n += 1 + sovTx(uint64(m.OutputIndex)) + } + if len(m.WithdrawalProofs) > 0 { + for _, b := range m.WithdrawalProofs { + l = len(b) + n += 1 + l + sovTx(uint64(l)) + } + } + if m.Sequence != 0 { + n += 1 + sovTx(uint64(m.Sequence)) + } + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Amount) > 0 { + for _, e := range m.Amount { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.StateRoot) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.StorageRoot) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.LatestBlockHash) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgClaimResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.BridgeId != 0 { + n += 1 + sovTx(uint64(m.BridgeId)) + } + l = len(m.BalanceTreeRoot) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgChallengeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Params != nil { + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgRecordBatch) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRecordBatch: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRecordBatch: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Submitter", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Submitter = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BatchBytes", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BatchBytes = append(m.BatchBytes[:0], dAtA[iNdEx:postIndex]...) + if m.BatchBytes == nil { + m.BatchBytes = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRecordBatchResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRecordBatchResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRecordBatchResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateBridge) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateBridge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateBridge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateBridgeResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateBridgeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateBridgeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgProposeOutput) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgProposeOutput: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgProposeOutput: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Proposer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Proposer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputRoot", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OutputRoot = append(m.OutputRoot[:0], dAtA[iNdEx:postIndex]...) + if m.OutputRoot == nil { + m.OutputRoot = []byte{} + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field L2BlockTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.L2BlockTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgProposeOutputResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgProposeOutputResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgProposeOutputResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDeleteOutput) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDeleteOutput: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteOutput: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Challenger", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Challenger = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputIndex", wireType) + } + m.OutputIndex = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OutputIndex |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDeleteOutputResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDeleteOutputResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteOutputResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDeposit) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDeposit: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeposit: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field To", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.To = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Amount = append(m.Amount, types.Coin{}) + if err := m.Amount[len(m.Amount)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDepositResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDepositResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDepositResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + m.Sequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Sequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgClaim) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgClaim: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgClaim: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputIndex", wireType) + } + m.OutputIndex = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OutputIndex |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WithdrawalProofs", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WithdrawalProofs = append(m.WithdrawalProofs, make([]byte, postIndex-iNdEx)) + copy(m.WithdrawalProofs[len(m.WithdrawalProofs)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + m.Sequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Sequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Amount = append(m.Amount, types.Coin{}) + if err := m.Amount[len(m.Amount)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = append(m.Version[:0], dAtA[iNdEx:postIndex]...) + if m.Version == nil { + m.Version = []byte{} + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StateRoot", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StateRoot = append(m.StateRoot[:0], dAtA[iNdEx:postIndex]...) + if m.StateRoot == nil { + m.StateRoot = []byte{} + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageRoot", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StorageRoot = append(m.StorageRoot[:0], dAtA[iNdEx:postIndex]...) + if m.StorageRoot == nil { + m.StorageRoot = []byte{} + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LatestBlockHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LatestBlockHash = append(m.LatestBlockHash[:0], dAtA[iNdEx:postIndex]...) + if m.LatestBlockHash == nil { + m.LatestBlockHash = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgClaimResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgClaimResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgClaimResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgChallenge) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BridgeId", wireType) + } + m.BridgeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BridgeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BalanceTreeRoot", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BalanceTreeRoot = append(m.BalanceTreeRoot[:0], dAtA[iNdEx:postIndex]...) + if m.BalanceTreeRoot == nil { + m.BalanceTreeRoot = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgChallengeResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgChallengeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgChallengeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Params == nil { + m.Params = &Params{} + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/op_host/types/types.pb.go b/x/op_host/types/types.pb.go new file mode 100644 index 00000000..2a0a6484 --- /dev/null +++ b/x/op_host/types/types.pb.go @@ -0,0 +1,1257 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: op_init/op_host/v1/types.proto + +package types + +import ( + bytes "bytes" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + _ "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + math_bits "math/bits" + time "time" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Params defines the set of op_host parameters. +type Params struct { + // The amount to be paid by l2 creator. + RegistrationFee github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=registration_fee,json=registrationFee,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"registration_fee"` +} + +func (m *Params) Reset() { *m = Params{} } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_34a0deb18b992d12, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +// BridgeConfig defines the set of bridge config. +type BridgeConfig struct { + // The address of the challenger. + Challenger string `protobuf:"bytes,1,opt,name=challenger,proto3" json:"challenger,omitempty"` + // The address of the proposer. + Proposer string `protobuf:"bytes,2,opt,name=proposer,proto3" json:"proposer,omitempty"` + // The interval in seconds at which checkpoints must be submitted. + SubmissionInterval uint64 `protobuf:"varint,3,opt,name=submission_interval,json=submissionInterval,proto3" json:"submission_interval,omitempty"` + // The minium time (in seconds) that must elapse before a withdrawal can be finalized. + FinalizationPeriod uint64 `protobuf:"varint,4,opt,name=finalization_period,json=finalizationPeriod,proto3" json:"finalization_period,omitempty"` + // The time of the first l2 block recorded. + StartTime time.Time `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3,stdtime" json:"start_time"` +} + +func (m *BridgeConfig) Reset() { *m = BridgeConfig{} } +func (m *BridgeConfig) String() string { return proto.CompactTextString(m) } +func (*BridgeConfig) ProtoMessage() {} +func (*BridgeConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_34a0deb18b992d12, []int{1} +} +func (m *BridgeConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BridgeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BridgeConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BridgeConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_BridgeConfig.Merge(m, src) +} +func (m *BridgeConfig) XXX_Size() int { + return m.Size() +} +func (m *BridgeConfig) XXX_DiscardUnknown() { + xxx_messageInfo_BridgeConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_BridgeConfig proto.InternalMessageInfo + +// TokenPair defines l1 and l2 token pair +type TokenPair struct { + L1Denom string `protobuf:"bytes,1,opt,name=l1_denom,json=l1Denom,proto3" json:"l1_denom,omitempty"` + L2Denom string `protobuf:"bytes,2,opt,name=l2_denom,json=l2Denom,proto3" json:"l2_denom,omitempty"` +} + +func (m *TokenPair) Reset() { *m = TokenPair{} } +func (m *TokenPair) String() string { return proto.CompactTextString(m) } +func (*TokenPair) ProtoMessage() {} +func (*TokenPair) Descriptor() ([]byte, []int) { + return fileDescriptor_34a0deb18b992d12, []int{2} +} +func (m *TokenPair) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenPair.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TokenPair) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenPair.Merge(m, src) +} +func (m *TokenPair) XXX_Size() int { + return m.Size() +} +func (m *TokenPair) XXX_DiscardUnknown() { + xxx_messageInfo_TokenPair.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenPair proto.InternalMessageInfo + +// OutputProposal is a l2 block submitted by proposer. +type OutputProposal struct { + // Hash of the l2 output. + OutputRoot []byte `protobuf:"bytes,1,opt,name=output_root,json=outputRoot,proto3" json:"output_root,omitempty"` + // Timestamp of the l1 block that the output root was submitted in. + L1BlockTime time.Time `protobuf:"bytes,2,opt,name=l1_block_time,json=l1BlockTime,proto3,stdtime" json:"l1_block_time"` + // Timestamp of the l2 block that the output root was submitted in. + L2BlockTime time.Time `protobuf:"bytes,3,opt,name=l2_block_time,json=l2BlockTime,proto3,stdtime" json:"l2_block_time"` +} + +func (m *OutputProposal) Reset() { *m = OutputProposal{} } +func (m *OutputProposal) String() string { return proto.CompactTextString(m) } +func (*OutputProposal) ProtoMessage() {} +func (*OutputProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_34a0deb18b992d12, []int{3} +} +func (m *OutputProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *OutputProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_OutputProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *OutputProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_OutputProposal.Merge(m, src) +} +func (m *OutputProposal) XXX_Size() int { + return m.Size() +} +func (m *OutputProposal) XXX_DiscardUnknown() { + xxx_messageInfo_OutputProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_OutputProposal proto.InternalMessageInfo + +func init() { + proto.RegisterType((*Params)(nil), "op_init.op_host.v1.Params") + proto.RegisterType((*BridgeConfig)(nil), "op_init.op_host.v1.BridgeConfig") + proto.RegisterType((*TokenPair)(nil), "op_init.op_host.v1.TokenPair") + proto.RegisterType((*OutputProposal)(nil), "op_init.op_host.v1.OutputProposal") +} + +func init() { proto.RegisterFile("op_init/op_host/v1/types.proto", fileDescriptor_34a0deb18b992d12) } + +var fileDescriptor_34a0deb18b992d12 = []byte{ + // 601 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3d, 0x6f, 0x13, 0x4d, + 0x10, 0xc7, 0xbd, 0x4e, 0x9e, 0x3c, 0xc9, 0x3a, 0x09, 0x70, 0xa4, 0xb8, 0x04, 0xe9, 0xce, 0x72, + 0x65, 0x45, 0xf2, 0x9d, 0xce, 0x80, 0x84, 0xe8, 0xe2, 0x20, 0x04, 0x05, 0x8a, 0x65, 0x52, 0xd1, + 0x9c, 0xf6, 0x7c, 0xeb, 0xcb, 0x2a, 0x77, 0x37, 0xa7, 0xdd, 0xb5, 0xc5, 0xcb, 0x37, 0xa0, 0x4a, + 0x49, 0x19, 0x51, 0x45, 0xa9, 0x52, 0xf0, 0x21, 0xd2, 0x11, 0x51, 0x51, 0x11, 0x70, 0x8a, 0xf0, + 0x31, 0xd0, 0xbe, 0xc4, 0xb8, 0x43, 0x69, 0xec, 0x9b, 0xf9, 0xcd, 0xcc, 0xce, 0xfe, 0x67, 0x07, + 0x7b, 0x50, 0xc5, 0xac, 0x64, 0x32, 0x84, 0x2a, 0x3e, 0x00, 0x21, 0xc3, 0x49, 0x14, 0xca, 0x77, + 0x15, 0x15, 0x41, 0xc5, 0x41, 0x82, 0xe3, 0x58, 0x1e, 0x58, 0x1e, 0x4c, 0xa2, 0xad, 0x7b, 0xa4, + 0x60, 0x25, 0x84, 0xfa, 0xd7, 0x84, 0x6d, 0x79, 0x43, 0x10, 0x05, 0x88, 0x30, 0x21, 0x82, 0x86, + 0x93, 0x28, 0xa1, 0x92, 0x44, 0xe1, 0x10, 0x58, 0x69, 0xf9, 0xa6, 0xe1, 0xb1, 0xb6, 0x42, 0x63, + 0x58, 0xb4, 0x91, 0x41, 0x06, 0xc6, 0xaf, 0xbe, 0xac, 0xd7, 0xcf, 0x00, 0xb2, 0x9c, 0x86, 0xda, + 0x4a, 0xc6, 0xa3, 0x50, 0xb2, 0x82, 0x0a, 0x49, 0x8a, 0xca, 0x04, 0xb4, 0x3e, 0x23, 0xbc, 0xd4, + 0x27, 0x9c, 0x14, 0xc2, 0xf9, 0x80, 0xef, 0x72, 0x9a, 0x31, 0x21, 0x39, 0x91, 0x0c, 0xca, 0x78, + 0x44, 0xa9, 0x8b, 0x9a, 0x0b, 0xed, 0x46, 0x77, 0x33, 0xb0, 0x47, 0xa9, 0xbe, 0x02, 0xdb, 0x57, + 0xb0, 0x0b, 0xac, 0xec, 0x3d, 0x3e, 0xff, 0xe1, 0xd7, 0x4e, 0x2f, 0xfd, 0x76, 0xc6, 0xe4, 0xc1, + 0x38, 0x09, 0x86, 0x50, 0xd8, 0xbe, 0xec, 0x5f, 0x47, 0xa4, 0x87, 0x56, 0x0a, 0x95, 0x20, 0x4e, + 0xae, 0xcf, 0xb6, 0xd1, 0xe0, 0xce, 0xfc, 0x49, 0xcf, 0x29, 0x7d, 0xfa, 0xe0, 0xd3, 0xb1, 0x5f, + 0xfb, 0x7d, 0xec, 0xa3, 0x8f, 0xd7, 0x67, 0xdb, 0xeb, 0x37, 0x2a, 0x9a, 0xce, 0x5a, 0xa7, 0x75, + 0xbc, 0xda, 0xe3, 0x2c, 0xcd, 0xe8, 0x2e, 0x94, 0x23, 0x96, 0x39, 0x4f, 0x30, 0x1e, 0x1e, 0x90, + 0x3c, 0xa7, 0x65, 0x46, 0xb9, 0x8b, 0x9a, 0xa8, 0xbd, 0xd2, 0x73, 0xbf, 0x7d, 0xe9, 0x6c, 0xd8, + 0x3e, 0x77, 0xd2, 0x94, 0x53, 0x21, 0x5e, 0x4b, 0xce, 0xca, 0x6c, 0x30, 0x17, 0xeb, 0x3c, 0xc2, + 0xcb, 0x15, 0x87, 0x0a, 0x04, 0xe5, 0x6e, 0xfd, 0x1f, 0x79, 0xb3, 0x48, 0x27, 0xc4, 0xf7, 0xc5, + 0x38, 0x29, 0x98, 0x10, 0x4a, 0x18, 0x56, 0x4a, 0xca, 0x27, 0x24, 0x77, 0x17, 0x9a, 0xa8, 0xbd, + 0x38, 0x70, 0xfe, 0xa2, 0x97, 0x96, 0xa8, 0x84, 0x11, 0x2b, 0x49, 0xce, 0xde, 0x1b, 0x2d, 0x2b, + 0xca, 0x19, 0xa4, 0xee, 0xa2, 0x49, 0x98, 0x47, 0x7d, 0x4d, 0x9c, 0x17, 0x18, 0x0b, 0x49, 0xb8, + 0x8c, 0xd5, 0x80, 0xdc, 0xff, 0x9a, 0xa8, 0xdd, 0xe8, 0x6e, 0x05, 0x66, 0x7a, 0xc1, 0xcd, 0xf4, + 0x82, 0xfd, 0x9b, 0xe9, 0xf5, 0xd6, 0x94, 0xee, 0x47, 0x97, 0x3e, 0x32, 0x7a, 0xae, 0xe8, 0x64, + 0x85, 0x5b, 0x3b, 0x78, 0x65, 0x1f, 0x0e, 0x69, 0xd9, 0x27, 0x8c, 0x3b, 0x9b, 0x78, 0x39, 0x8f, + 0xe2, 0x94, 0x96, 0x50, 0x18, 0x99, 0x06, 0xff, 0xe7, 0xd1, 0x33, 0x65, 0x6a, 0xd4, 0xb5, 0xa8, + 0x6e, 0x51, 0x57, 0xa3, 0xd6, 0x57, 0x84, 0xd7, 0xf7, 0xc6, 0xb2, 0x1a, 0xcb, 0xbe, 0x56, 0x80, + 0xe4, 0x8e, 0x8f, 0x1b, 0xa0, 0x3d, 0x31, 0x07, 0x90, 0xba, 0xd6, 0xea, 0x00, 0x1b, 0xd7, 0x00, + 0x40, 0x3a, 0xaf, 0xf0, 0x5a, 0x1e, 0xc5, 0x49, 0x0e, 0xc3, 0x43, 0x73, 0x87, 0xfa, 0x6d, 0xef, + 0xd0, 0xc8, 0xa3, 0x9e, 0x4a, 0x57, 0x01, 0xba, 0x5c, 0x77, 0xbe, 0xdc, 0xc2, 0xed, 0xcb, 0x75, + 0x67, 0xe5, 0x7a, 0x7b, 0xe7, 0xbf, 0xbc, 0xda, 0xc9, 0xd4, 0x43, 0xe7, 0x53, 0x0f, 0x5d, 0x4c, + 0x3d, 0xf4, 0x73, 0xea, 0xa1, 0xa3, 0x2b, 0xaf, 0x76, 0x71, 0xe5, 0xd5, 0xbe, 0x5f, 0x79, 0xb5, + 0x37, 0x9d, 0xb9, 0x07, 0xac, 0x36, 0x95, 0x91, 0x4e, 0x4e, 0x12, 0x11, 0xee, 0xf5, 0xf5, 0x5e, + 0xbf, 0x9d, 0x6d, 0xb6, 0x7e, 0xcb, 0xc9, 0x92, 0x6e, 0xe0, 0xe1, 0x9f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x76, 0xd0, 0x19, 0x7e, 0xf9, 0x03, 0x00, 0x00, +} + +func (this *Params) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Params) + if !ok { + that2, ok := that.(Params) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if len(this.RegistrationFee) != len(that1.RegistrationFee) { + return false + } + for i := range this.RegistrationFee { + if !this.RegistrationFee[i].Equal(&that1.RegistrationFee[i]) { + return false + } + } + return true +} +func (this *BridgeConfig) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*BridgeConfig) + if !ok { + that2, ok := that.(BridgeConfig) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Challenger != that1.Challenger { + return false + } + if this.Proposer != that1.Proposer { + return false + } + if this.SubmissionInterval != that1.SubmissionInterval { + return false + } + if this.FinalizationPeriod != that1.FinalizationPeriod { + return false + } + if !this.StartTime.Equal(that1.StartTime) { + return false + } + return true +} +func (this *TokenPair) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*TokenPair) + if !ok { + that2, ok := that.(TokenPair) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.L1Denom != that1.L1Denom { + return false + } + if this.L2Denom != that1.L2Denom { + return false + } + return true +} +func (this *OutputProposal) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*OutputProposal) + if !ok { + that2, ok := that.(OutputProposal) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !bytes.Equal(this.OutputRoot, that1.OutputRoot) { + return false + } + if !this.L1BlockTime.Equal(that1.L1BlockTime) { + return false + } + if !this.L2BlockTime.Equal(that1.L2BlockTime) { + return false + } + return true +} +func (m *Params) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RegistrationFee) > 0 { + for iNdEx := len(m.RegistrationFee) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RegistrationFee[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *BridgeConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BridgeConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BridgeConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime):]) + if err1 != nil { + return 0, err1 + } + i -= n1 + i = encodeVarintTypes(dAtA, i, uint64(n1)) + i-- + dAtA[i] = 0x2a + if m.FinalizationPeriod != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.FinalizationPeriod)) + i-- + dAtA[i] = 0x20 + } + if m.SubmissionInterval != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.SubmissionInterval)) + i-- + dAtA[i] = 0x18 + } + if len(m.Proposer) > 0 { + i -= len(m.Proposer) + copy(dAtA[i:], m.Proposer) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Proposer))) + i-- + dAtA[i] = 0x12 + } + if len(m.Challenger) > 0 { + i -= len(m.Challenger) + copy(dAtA[i:], m.Challenger) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Challenger))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *TokenPair) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenPair) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.L2Denom) > 0 { + i -= len(m.L2Denom) + copy(dAtA[i:], m.L2Denom) + i = encodeVarintTypes(dAtA, i, uint64(len(m.L2Denom))) + i-- + dAtA[i] = 0x12 + } + if len(m.L1Denom) > 0 { + i -= len(m.L1Denom) + copy(dAtA[i:], m.L1Denom) + i = encodeVarintTypes(dAtA, i, uint64(len(m.L1Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *OutputProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *OutputProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *OutputProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + n2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.L2BlockTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.L2BlockTime):]) + if err2 != nil { + return 0, err2 + } + i -= n2 + i = encodeVarintTypes(dAtA, i, uint64(n2)) + i-- + dAtA[i] = 0x1a + n3, err3 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.L1BlockTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.L1BlockTime):]) + if err3 != nil { + return 0, err3 + } + i -= n3 + i = encodeVarintTypes(dAtA, i, uint64(n3)) + i-- + dAtA[i] = 0x12 + if len(m.OutputRoot) > 0 { + i -= len(m.OutputRoot) + copy(dAtA[i:], m.OutputRoot) + i = encodeVarintTypes(dAtA, i, uint64(len(m.OutputRoot))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintTypes(dAtA []byte, offset int, v uint64) int { + offset -= sovTypes(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.RegistrationFee) > 0 { + for _, e := range m.RegistrationFee { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + return n +} + +func (m *BridgeConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Challenger) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.Proposer) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.SubmissionInterval != 0 { + n += 1 + sovTypes(uint64(m.SubmissionInterval)) + } + if m.FinalizationPeriod != 0 { + n += 1 + sovTypes(uint64(m.FinalizationPeriod)) + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime) + n += 1 + l + sovTypes(uint64(l)) + return n +} + +func (m *TokenPair) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.L1Denom) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.L2Denom) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + +func (m *OutputProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.OutputRoot) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.L1BlockTime) + n += 1 + l + sovTypes(uint64(l)) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.L2BlockTime) + n += 1 + l + sovTypes(uint64(l)) + return n +} + +func sovTypes(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTypes(x uint64) (n int) { + return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RegistrationFee", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RegistrationFee = append(m.RegistrationFee, types.Coin{}) + if err := m.RegistrationFee[len(m.RegistrationFee)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BridgeConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BridgeConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BridgeConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Challenger", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Challenger = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Proposer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Proposer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SubmissionInterval", wireType) + } + m.SubmissionInterval = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SubmissionInterval |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FinalizationPeriod", wireType) + } + m.FinalizationPeriod = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.FinalizationPeriod |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenPair) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenPair: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenPair: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field L1Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.L1Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field L2Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.L2Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OutputProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: OutputProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OutputProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutputRoot", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OutputRoot = append(m.OutputRoot[:0], dAtA[iNdEx:postIndex]...) + if m.OutputRoot == nil { + m.OutputRoot = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field L1BlockTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.L1BlockTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field L2BlockTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.L2BlockTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTypes(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTypes + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTypes + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTypes + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTypes = fmt.Errorf("proto: unexpected end of group") +)